←2011-10 2011-11 2011-12→ ↑2011 ↑all
2011-11-01
00:01:20 <elliott> hi oerjan ooejiowerjina
00:01:48 <elliott> AHA
00:01:48 <oerjan> hi elliott
00:01:50 <elliott> what i fi
00:01:50 <elliott> hmm
00:02:20 <augur> elliott: so do you understand the analysis in the paper?
00:02:35 <elliott> there was analysis? :D
00:04:30 <CakeProphet> Django is neat and all, but not when you have a day to make a whole website. :P "Django: The Web framework for perfectionists with deadlines" indeed.
00:04:44 <augur> elliott: well, the stuff about how the determiner sharing comes about
00:04:54 <augur> not the facts but the gapping-as-ellipsis account
00:05:21 <elliott> augur: i am bad at reading :(
00:05:30 <augur> elliott: lol
00:05:49 <augur> subsection 2.1
00:06:17 <CakeProphet> elliott has no MonadReader instance.
00:06:20 <CakeProphet> (ooooh, sick burn)
00:07:45 <elliott> hmm, actually that solution i thought i had just lead to an infinite regress :(
00:07:54 <augur> elliott: which solution
00:08:07 <elliott> augur: not related to your thing
00:08:27 <augur> o
00:08:31 <CakeProphet> model-view-controller is actually not as terrible as I thought it would be..
00:08:34 <augur> infinite regress shows up in natural language you know :D
00:09:57 <evincar> CakeProphet: Why would separating the parts of your program sanely be terrible?
00:10:05 <evincar> (Even if you are using a degenerate language.)
00:10:25 <evincar> (Not that I'm saying you are, just that there are those that do.)
00:10:31 <elliott> mvc is awful because controllers are necessarily degenerate
00:10:40 <elliott> either that, or things go into the controller which should be in the view (vastly most common case)
00:10:50 <CakeProphet> evincar: I thought the specific model might be constraining.
00:10:54 <elliott> also because decoupling controllers from views never really works out at all
00:10:57 <elliott> so basically mvc is stupid
00:11:22 <CakeProphet> elliott: as far as I can tell Django doesn't separate controller from view at all. Maybe I'm just a noob though and haven't got to that part though. :P
00:11:24 <evincar> elliott: Or just applicable to fewer problems than it's applied to. Like a hellton of things in the programming world.
00:11:29 <elliott> CakeProphet: yes it does
00:11:31 <elliott> view = template
00:11:34 <elliott> controller = view
00:11:38 <CakeProphet> ah okay.
00:11:40 <elliott> django calls things different because it's stupid
00:11:44 <CakeProphet> makes perfect sense. :P
00:12:17 <evincar> CakeProphet: It is constraining, that's what gives it any shred of decency.
00:12:19 <elliott> evincar: damn! your unjustified assertion has totally beaten my attempted explanation to the ground
00:12:43 <CakeProphet> at least the model part is spot-on.
00:13:06 <CakeProphet> can't go wrong there. (cue elliott.. :P )
00:13:11 <evincar> elliott: If you have an application that's naturally divisible into data, presentation, and control components, then MVC is a good idea. Otherwise, probably not.
00:13:26 <elliott> CakeProphet: it's probably the best you can do within the constraintrs of model
00:13:34 <elliott> evincar: wait -- wait -- back up here
00:13:39 <CakeProphet> elliott: right, it has to be all databasey
00:13:44 <elliott> if you have a problem to which MVC is suited
00:13:48 <elliott> MVC is suited to it???
00:14:10 <evincar> elliott: If you feel like missing the point entirely, yes.
00:14:12 <elliott> HOLY SHIT! I remember when I contradicted this, instead of saying something more reasonable like "MVC is awful" because nothing actually maps to it in practice.
00:14:13 * CakeProphet uses MVC for brainfuck interpreters.
00:14:33 <elliott> "If you have an application that's naturally divisible into data [model], presentation [view], and control [controller] components, then MVC is a good idea."
00:14:40 <elliott> "If you have an application that's naturally divisible into model, view, and controller components, then MVC is a good idea."
00:14:44 <elliott> "If you have an application that's naturally divisible into model, view, and controller components, then model-view-controller is a good idea."
00:14:55 <elliott> "If your application = model + view + controller, then model-view-controller is a good idea."
00:15:48 <CakeProphet> hey what I'm working on fits that pretty well!
00:15:49 <evincar> I'll assume you're just repeating yourself to make sure you can parse the obvious thing I said without understanding or caring what I meant.
00:16:06 <CakeProphet> I think he's just covering his bases.
00:16:28 <elliott> are you saying my reduction of that sentence was incorrect, because you definitely made a few typos if so
00:17:06 <augur> CakeProphet: you speak which language natively?
00:17:21 <evincar> I was just saying that, as far as I can tell, there are plenty of developers who aren't so good at following the advice of "if X is applicable, use X; otherwise don't".
00:17:39 <CakeProphet> I prefer MVC where MVC = Master Vizier Count
00:17:52 <elliott> augur: CakeProphet is from Svalbard.
00:17:53 <CakeProphet> it employs a rigid code of operation based on feudal tradition
00:18:07 <augur> so swedish or whatever
00:18:23 <evincar> CakeProphet: How many Master Vizier should use in program? \(O_o)/
00:18:39 <CakeProphet> no they're three different things
00:18:44 <CakeProphet> master is different from vizier.
00:18:49 <CakeProphet> it makes total sense.
00:19:11 <evincar> I prefer to think you meant the number of viziers who are masterful.
00:19:20 <elliott> i like how augur believes me
00:19:27 <CakeProphet> viziers totally have nothing to do with mastery of things.
00:19:38 <CakeProphet> viziers are sycophantic scum.
00:20:18 <evincar> Doesn't a clever vizier hold the helm of the kingdom by advising the king? Assuming a clever person can get himself appointed vizier.
00:20:23 <augur> elliott: why not!
00:20:38 <evincar> Assuming vizierhood is by appointment.
00:20:46 <evincar> I'm making a lot of assumptions today.
00:20:48 <CakeProphet> evincar: that's a valid trope, yes.
00:21:04 <CakeProphet> but only works sometimes.
00:21:13 <evincar> Hooray, now I know how to write a book that will work sometimes.
00:21:14 <CakeProphet> to use the parlance of our times, viziers are pussy bitches.
00:22:23 <CakeProphet> oh god deadlines, someone shoot me.
00:23:14 <elliott> oerjan: hi write my parser thanks
00:23:24 <CakeProphet> oerjan: hi write my website thanks
00:24:28 <oerjan> always happy to help with procrastination
00:24:32 <evincar> elliott: Parsers are easy to write. Especially in Haskell (as I recently learned) of which you are so fond.
00:25:01 <augur> evincar: try writing a parser for transformational grammars!
00:25:15 <elliott> evincar: Sure, if your grammar is trivial!
00:25:16 <augur> also, elliott, i still prefer agda to coq
00:25:33 <CakeProphet> evincar: challenge: write a Perl parser in Parsec
00:25:42 <elliott> They're two different things, it's just that Coq is the better orange.
00:25:50 <oerjan> CakeProphet: but using Counts only works if your hierarchy has no cycles!
00:25:55 <evincar> CakeProphet: Challenge: write a Perl parser.
00:26:13 <CakeProphet> don't forget you may need to interpret perl code in order to parse perl code.
00:26:19 <elliott> a perl parser is trivial in parsec
00:26:20 <elliott> also yacc
00:26:21 <evincar> (Hint: it's not strictly possible.)
00:26:22 <elliott> also everything
00:26:25 <elliott> yes it is
00:26:43 <evincar> I don't feel like reimplementing perl, thank you very much.
00:26:50 <evincar> If I want to parse Perl, I'll use perl.
00:26:55 <elliott> "i don't feel like it -> it's not possible"
00:27:00 <elliott> perl has a c api, anyway
00:27:02 <evincar> Yes.
00:27:02 <elliott> which has, you know, eval
00:27:24 <CakeProphet> elliott: I was under the impression that the perl parser had to be handwritten.
00:27:28 <evincar> If I don't feel like it, and I'll never feel like it, and nothing else makes me do it, it's not possible for me to do it.
00:27:43 <oklopol> rrright
00:27:44 <CakeProphet> elliott: or at least, couldn't be written with yacc, I mean.
00:27:46 <elliott> CakeProphet: doesn't it use yacc with a bunch of hacks or something
00:27:52 <CakeProphet> oh...
00:27:56 <CakeProphet> yes, I think so.
00:28:00 <CakeProphet> certainly the last part.
00:28:01 <elliott> evincar: which is why you told CakeProphet it wasn't possibl
00:28:01 <elliott> e
00:28:15 <CakeProphet> but not strictly yacc
00:28:17 <evincar> elliott: Damn skippy.
00:28:26 <oklopol> also in a deterministic universe, exactly one thing is possible. and it sucks ass.
00:28:35 <CakeProphet> as the way it parses depends silly hacks, yes.
00:28:46 <CakeProphet> +on
00:29:52 <evincar> elliott: So what's this oh-so-complex parser of yours for? Must I logread?
00:30:20 <elliott> who doesn't logread
00:30:23 <CakeProphet> me.
00:30:52 <CakeProphet> I have IMPORTANT THINGS to do.
00:30:57 <CakeProphet> that do not involve the reading of logs.
00:31:04 <CakeProphet> for example: acting cool
00:31:24 <CakeProphet> smoking hookah. getting rowdy with friends. sleeping. chatting on IRC.
00:31:48 <oklopol> wow
00:31:55 <oklopol> i wish i could be you for like one day
00:32:06 <CakeProphet> yeah it's awesome. probably because I'm so cool.
00:32:11 * CakeProphet does a cool pose.
00:32:22 <Vorpal> wait, when did CakeProphet turn into oklopol?
00:33:11 <CakeProphet> so I think my car actually bears some semblance of functionality now.
00:33:11 <CakeProphet> so
00:33:22 <CakeProphet> I can get on with procrastinating as usual.
00:33:34 -!- centrinia has joined.
00:33:42 <Vorpal> CakeProphet, what about your cdr?
00:33:51 <CakeProphet> HA. HA. HAHAHA. HA. HA. HA.
00:34:18 <CakeProphet> Vorpal: cdr is still using the old stateful object-oriented system.
00:34:27 <Vorpal> heh
00:34:46 <evincar> elliott: All I find is you complaining that you may have to write a parser. :/
00:34:48 <Vorpal> CakeProphet, well I guess we are even on the puns
00:34:48 <oklopol> i suck ass and have stupid opinions and i cry at night because my ability to see the future by looking at delicious things has long gone, and the only thing left is my tiny penis
00:35:07 <elliott> evincar: Looks like you didn't read enough logs then!
00:35:13 <elliott> oklopol: Hi.
00:35:28 <CakeProphet> I believe it's a strange variant of model-view-controller. But not feudal I think it's e-democratic. The Master Vizier Count model isn't very well-known.
00:35:29 <elliott> Wait hasn't centrinia been here before.
00:35:30 <oklopol> hi elliott, what's up?
00:35:32 <elliott> Let's assume no.
00:35:33 <elliott> `? welcome
00:35:33 <evincar> elliott: Alright, alright, I'll go deeper, yeesh. But if I don't emerge soon, you'd better not cut my rope.
00:35:35 <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
00:35:35 <CakeProphet> elliott: believe so.
00:35:44 <centrinia> I have been here once.
00:36:01 <oklopol> centrinia: why did you leave? why did you come back? who are you?
00:36:02 <elliott> centrinia: What kind of idiot would repeat the experience? Weren't we bad enough?!
00:36:13 <CakeProphet> oklopol: :( you put pain in my heart.
00:36:17 <oklopol> oh elliott you so sillies.
00:36:19 <centrinia> I was not paying attention the first time.
00:36:35 <oklopol> CakeProphet: i know exactly where your buttons are.
00:37:13 <elliott> centrinia: I'm going to have to demand my money back; you've been here twice.
00:37:32 * centrinia gives elliott $0.02
00:37:37 <elliott> Thank you.
00:37:41 * CakeProphet stares longingly at a pastry, waiting for that old spark.
00:37:47 <elliott> (2009-08-01 and 2011-10-07.)
00:37:58 <oklopol> oh god he's making me cry as well
00:38:12 <oklopol> this is just horrible
00:38:27 <Vorpal> CakeProphet, it uses lemon slices and metal rods?
00:38:56 <CakeProphet> well since I adopted Master Vizier Count I've been using the soothsaying plugin
00:39:06 <CakeProphet> which I believe examines the entrails of various domesticated mammals.
00:39:27 <Vorpal> CakeProphet, that one went over my head.
00:39:36 <CakeProphet> it's... a strange thing
00:39:38 <CakeProphet> people used to do.
00:39:40 <CakeProphet> back in the day.
00:39:50 <CakeProphet> and I tied it in with Django weirdly. I wouldn't worry too much about it.
00:39:57 <Vorpal> heh
00:40:01 * evincar returns from logreading with no news to report.
00:41:04 <elliott> evincar: You didn't read enough logs.
00:41:34 <oklopol> did you see the part where me and elliott spammed for hours and hours
00:41:46 <evincar> I have seen
00:41:48 <evincar> all the parts.
00:42:12 <CakeProphet> AWWWWW YEAH FRUITS LOOPS THE TURING COMPLETE CEREAL FUCKING DELICIOUS YES.
00:42:13 <evincar> By which I mean no.
00:42:32 <oklopol> i think our last session was like a year ago
00:43:09 <oerjan> sheesh, is my turing completeness detection hampered by me not smoking hookah...
00:43:45 <CakeProphet> oerjan: yep
00:43:49 <CakeProphet> also not acting cool enough.
00:43:52 <CakeProphet> this is important.
00:44:01 <CakeProphet> to see the turing completeness in everyday, cool life.
00:44:06 <elliott> oerjan: were you proud when that guy wrote a program in :()^ :')
00:44:08 <oerjan> ah. no hope for me, then.
00:45:06 <oerjan> elliott: i felt strangely empty
00:45:11 <elliott> oerjan: :(
00:45:45 <CakeProphet> oerjan: this is merely the sign of the blossoming forest within.
00:45:52 * CakeProphet sagenods.
00:46:31 <CakeProphet> wow you guys I lost an entire bowl of Fruit Loops
00:46:32 <CakeProphet> I have no clue
00:46:33 <CakeProphet> where it is.
00:46:48 <oerjan> you accidentally smoked it
00:48:53 <CakeProphet> perhaps my brain is subconsciously trying to further delay work on this Django stuff.
00:54:09 <elliott> Vorpal: "Voxatron is based on a virtual 128x128x64 display. It's a buffer of 3d video memory that is rendered out to the screen at the end of each frame, much as an old-school 2d display is. You can POKE bytes into the virtual memory, and they come out as voxels. I don't compromise on this -- even the menus are drawn into the voxel display. Hopefully one day I can get hold of a real physical 128x128x64 display and play Voxatron on it with almost n
00:54:09 <elliott> o modification."
00:54:21 <elliott> heh, it's even software-rendered
01:00:33 -!- Patashu has joined.
01:03:25 <evincar> It looks like fun.
01:07:25 <elliott> https://aur.archlinux.org/packages.php?ID=53606 yay
01:07:56 <elliott> better extract the 64-bit version from the .deb, sigh
01:10:13 <elliott> oh wait, that one's 32-bit too :)
01:10:55 <elliott> Vorpal: how did you get voxatron working on 64-bit
01:14:14 <Vorpal> elliott, ./vox-run iirc
01:14:18 <Vorpal> elliott, from the tar.gz
01:14:25 <elliott> Vorpal: oh, so you already have the 32-bit libs
01:14:26 <Vorpal> elliott, I had the required 32-bit libs I guess?
01:14:33 <Vorpal> elliott, yes, multilib repo
01:14:39 <elliott> the aur package works but doesn't depend on the 32-bit versions of the libs
01:14:46 <elliott> which sucks
01:14:46 <Vorpal> elliott, use the multilib repo
01:14:48 <Vorpal> not aur
01:14:49 <Vorpal> for this
01:15:05 <elliott> Vorpal: I very much doubt there is a voxatron package in the multilib repo.
01:15:15 <Vorpal> elliott, no I meant for the libs
01:15:33 <Vorpal> I just rebooted desktop to windows, so not going to check which ones were required, try ldd?
01:15:35 <elliott> Right, I'm saying that the voxatron package is fucked because it just depends on libgl and sdl but declares arch=('i686' 'x86_64').
01:15:47 <Vorpal> elliott, ah I did it manually
01:15:52 <Vorpal> elliott, and leave a comment about it
01:15:55 <elliott> I did.
01:16:03 <elliott> Hopefully it'll be fixed, since it was just added an hour ago and there have already been fixes.
01:16:05 <Vorpal> right, just wait and play it by hand until then
01:16:22 <Vorpal> or just wait
01:16:56 * elliott reiterates what he said about not doing anything outside the package manager any more.
01:17:24 <Vorpal> what about your own code?
01:17:41 <elliott> I don't run that :-)
01:17:48 <Vorpal> :P
01:17:58 -!- tiffany has quit (Quit: Leaving).
01:19:30 <elliott> I wonder how one convinces people to set up mirrors. Also, build bots.
01:19:36 <elliott> I will try... murder.
01:20:03 <CakeProphet> money. promises of fame. a brilliant idea.
01:20:16 <elliott> Murder's cheaper.
01:20:45 <CakeProphet> blackmail. sexual favors. threats of violence (possibly including murder). drugs. free advertising.
01:20:59 <Vorpal> wtf windows, it doesn't detect my PS/2 keyboard properly unless it is after a warm reboot from any OS.
01:21:00 <elliott> Why threaten when you can do?
01:21:12 <CakeProphet> good luck getting dead people to mirror for you.
01:21:24 <elliott> I could murder their family.
01:21:32 <CakeProphet> that's acceptable.
01:21:44 <CakeProphet> still not much motivation to mirror your stuff.
01:21:49 <CakeProphet> you still need a threat
01:21:51 <CakeProphet> to coerce them.
01:22:01 <CakeProphet> you can't just kill their family and expect them to start doing things.
01:22:03 <CakeProphet> for no reason.
01:22:15 <CakeProphet> they'll probably just grieve or do something equally human-like.
01:22:21 <elliott> I could kill half their family and threaten to kill the rest?
01:22:28 <CakeProphet> that's good
01:22:37 <CakeProphet> it demonstrates that you're not to be trifled with.
01:22:42 <CakeProphet> while also providing coercion.
01:23:37 <Vorpal> don't forget the horse heads
01:23:44 <CakeProphet> elliott: anyway if you have an awesome project I think you could probably find a university that will provide a mirror.
01:23:55 <CakeProphet> but I have no clue how that works.
01:24:00 <elliott> I doubt it's quite that easy.
01:24:17 <elliott> Build bots are probably more useful, anyway.
01:24:20 <Vorpal> kernel.org mirrors several distros, including arch, debian and so on
01:24:30 <elliott> Vorpal: I doubt they accept new distros :P
01:24:56 <Vorpal> elliott, well they accepted ubuntu some time ago. I guess they only accept sufficiently large ones though
01:25:14 <elliott> Ubuntu is from 2004.
01:25:17 <elliott> Arch 2003, I think.
01:25:18 <elliott> etc.
01:25:21 <Vorpal> elliott, in 2004 it was new
01:25:34 <elliott> Vorpal: And in 2005 it was the biggest.
01:25:43 <Vorpal> hm did it go that fast?
01:25:53 <elliott> Well, at least by 2006.
01:25:57 <Vorpal> well yes
01:26:53 <CakeProphet> owning a limited liability probably helps with stuff like that.
01:27:07 <Vorpal> hm?
01:27:15 <CakeProphet> Canonical Ltd.
01:27:16 <Vorpal> arch linux is community driven iirc
01:27:32 <Vorpal> so how would that help with kernel.org mirroring
01:27:33 <elliott> CakeProphet: Yes, money does indeed begat services.
01:27:34 <CakeProphet> oh I thought we were talking about Ubuntu.
01:27:37 <elliott> Oh.
01:27:39 <Vorpal> CakeProphet, as well
01:28:15 <elliott> CakeProphet: No, Ubuntu benefitted from having a literally infinitely rich, tech-savvy, people-person for a manager :P
01:28:52 <Vorpal> it will fall the day he dies. Maybe not right away. But it will go quickly downhill then.
01:29:02 <elliott> Vorpal: I doubt it
01:29:10 <elliott> AFAICT he doesn't do that much any more
01:29:16 <Vorpal> elliott, iirc Canonical makes a loss?
01:29:30 <elliott> Hmm
01:29:47 <elliott> "In a Guardian interview in May 2008, Mark Shuttleworth said that the Canonical business model was service provision and explained that Canonical was not yet close to profitability. Canonical also claimed it will wait for the business to turn into a profitable one within another 3 to 5 years. He regarded Canonical as positioning itself as demand for services related to Free Software rose.[19] This strategy has been compared to Red Hat's business s
01:29:47 <elliott> trategies in the 1990s.[20] However, in an early 2009 New York Times article, Shuttleworth said that Canonical's revenue was "creeping" towards $30 million, the company's break-even point.[21]"
01:31:09 <Vorpal> hm
01:31:12 <Vorpal> right
01:31:33 * elliott tries to figure out Nix's dependency story
01:31:40 <Vorpal> elliott, oh?
01:31:48 <Vorpal> elliott, I thought you said nix was bad ;P
01:31:50 <elliott> Yes, I don't know what it is from what I know :)
01:31:54 <elliott> And yes, but I can steal ideas from it.
01:32:26 <elliott> Why does Unix only offer like three atomic operations
01:32:48 <elliott> rename, unlink, creat... is there anything else?
01:32:49 <Vorpal> so... this game crashes unless at least 5 minutes passed since starting windows and another XNA based game ran before it in the current session. This behaviour is reproducible
01:32:51 <Vorpal> elliott, ^
01:32:56 <Vorpal> how very strange
01:32:59 <elliott> heh
01:33:17 <elliott> http://rcrowley.org/2010/01/06/things-unix-can-do-atomically.html
01:33:19 <elliott> aha
01:34:01 <elliott> link(2), symlink(2), rename(2), open(2), open(2), mkdir(2), fcntl(2), mmap(2), msync(2), and some virtual memory crap
01:34:15 <elliott> how bullshit is that
01:35:05 <elliott> Vorpal: lament
01:35:10 <elliott> actually I really really want a transactional filesystem
01:35:28 <elliott> where a process can make a "begin" call on a directory, have that directory's contents freeze in a consistent state
01:35:29 <elliott> make modifications
01:35:34 <elliott> and commit or rollback it
01:35:39 <elliott> it would be super-cool
01:37:49 <CakeProphet> elliott: perhaps this could be included in an orthogonally persistent filesystem?
01:38:20 <elliott> Wow, it's like somebody said something that makes no sense but my IRC client refused to show me it and instead punched me.
01:38:47 <CakeProphet> ow
01:39:25 <CakeProphet> I'm not sure what doesn't make sense..
01:39:36 <oerjan> elliott: he was probably just quoting mezzacotta
01:39:46 <oerjan> the business speak guy
01:43:15 <CakeProphet> how does "make this stuff atomic" syscalls not make sense in orthogonal persistence?
01:43:43 <elliott> "orthogonally persistent filesystem"
01:43:55 <CakeProphet> okay so it's not really a filesystem
01:45:28 <CakeProphet> still, if you're doing any kind of reference-passing across threads you'll have to deal with thread safety.
01:45:29 <elliott> CakeProphet: Anyway, in the presence of orthogonal persistence, one can simply overlay mechanisms like STM to achieve the desired concurrency properties.
01:45:57 <elliott> Orthogonal persistence is in a sense much lower-level than a filesystem; it's /better/ and far more flexible, but it fundamentally does far less.
01:46:09 <elliott> So it's as atomic as memory itself is.
01:46:20 <elliott> (Well, OK, I suppose there's no CAS instruction for hard disks.)
01:46:27 <CakeProphet> which is: not very atomic :P
01:46:46 <elliott> CakeProphet: Are you saying nobody achieves atomicity on top of memory?
01:46:53 <CakeProphet> not at all
01:47:01 <CakeProphet> I was referring to "memory itself" as in the lowest level.
01:47:08 <elliott> Whatever system works for software also works for the disk in orthogonal persistence, that's all I'm sayin'.
01:47:29 <CakeProphet> I guess the only thing the syscalls would do is create a system-wide standard.
01:47:35 <CakeProphet> which I guess isn't necessary.
01:48:15 <elliott> The "syscalls" would have nothing to do with orthogonal persistence, they'd just be implementing STM. STM, of course, requires knowledge of the language's object model to work well.
01:48:29 <elliott> Anyway syscalls are unnecessary in an orthogonally-persisted system, but that's irrelevant.
01:48:54 <elliott> Well, I suppose if you keep a "traditional" security model they're necessary. But that requires additional work if you're ~doing things orthogonally~.
01:50:02 <CakeProphet> are you saying this kind of system secures itself via explicit reference passing?
01:51:06 <elliott> If that's an awkward way of saying object-capability, then yes.
01:51:09 <CakeProphet> or do you need some kind of intermediary?
01:51:41 <CakeProphet> ah, okay.
01:51:52 <CakeProphet> so you have to explicitly specify which operations can be performed.
01:51:57 <elliott> Uhhh...
01:52:06 <elliott> I'll let you figure this one out yourself.
01:52:11 <CakeProphet> for the thing youre passing the reference to.
01:52:48 <elliott> Vorpal: Oh gross, the parts of Nix that aren't in C++ are in Perl.
01:53:00 <CakeProphet> ewwww
01:53:03 <CakeProphet> it should be all perl.
01:53:09 <CakeProphet> C++? really?
01:53:22 <elliott> die "who ARE you? go away" unless defined $userName;
01:53:26 <elliott> Rude.
01:53:57 <CakeProphet> guests who come unaccounced are rude.
01:54:00 <CakeProphet> they must die.
01:54:12 -!- centrinia has quit (Quit: Leaving).
01:54:26 <elliott> More MVC?
01:54:46 <CakeProphet> no;;;
01:54:49 <elliott> Actually it's better than Perl: They're written in... autoconf perl?
01:54:52 <elliott> https://nixos.org/repos/nix/nix/trunk/scripts/nix-channel.in
01:55:19 <elliott> "The latter command will upgrade each installed package for which there is a “newer” version (as determined by comparing the version numbers)."
01:55:28 <elliott> Heyyy, this manual told me Nix doesn't care about the actual versions.
01:55:31 <elliott> I was LIED to.
02:04:56 <evincar> Hmm what are some neat things I can do with the free SMS gateway my carrier provides?
02:05:53 <evincar> Make it really easy to compromise my system if my phone ever gets stolen? :P
02:27:32 <CakeProphet> jesus, I have... 30 tabs of Django documentation open.
02:28:14 <CakeProphet> 28 actually.
02:28:31 <oerjan> a perfect number.
02:28:46 <CakeProphet> good to know.
02:30:05 <CakeProphet> this is good practice though.
02:30:12 <CakeProphet> there's a lot of Django jobs out there.
02:30:27 <CakeProphet> and I don't really mind Python all that much so I won't hate them. :P
02:35:28 -!- Vorpal has quit (Ping timeout: 248 seconds).
02:41:40 <evincar> I want elastic tabstops implemented in more editors so I can quit using fixed-width typefaces. :(
02:41:57 <evincar> Also better Unicode syntax support in programming languages.
02:42:33 <evincar> UnicodeSyntax is nice in Haskell, but it doesn't cover everything, and input methods aren't what they ought to be.
02:43:32 -!- pikhq has quit (Ping timeout: 255 seconds).
02:43:35 -!- pikhq_ has joined.
02:43:56 <elliott> Targets (16): lib32-glibc-2.14.1-1 lib32-libpciaccess-0.12.1-2
02:43:56 <elliott> lib32-libdrm-2.4.26-1 lib32-libxdmcp-1.1.0-1
02:43:56 <elliott> lib32-libxau-1.0.6-2 lib32-libxcb-1.7-2 lib32-libx11-1.4.4-1
02:43:56 <elliott> lib32-libxext-1.2.0-1 lib32-libxxf86vm-1.1.1-1
02:43:56 <elliott> lib32-libxfixes-4.0.5-3 lib32-libxdamage-1.1.3-3
02:43:57 <elliott> lib32-expat-2.0.1-7 lib32-libglapi-7.11-4 lib32-libgl-7.11-4
02:43:59 <elliott> lib32-libxrender-0.9.6-4 lib32-sdl-1.2.14-8
02:44:01 <elliott> ugh
02:44:39 <CakeProphet> I want a programming language I can program with my brain.
02:44:51 <CakeProphet> direct brain-to-program interface.
02:45:46 <CakeProphet> none of this foolish character-based crap.
02:46:53 <oerjan> libliblib
02:47:58 <CakeProphet> is that lib32-libliblib or lib64-libliblib?
02:48:02 <oerjan> you could program it directly from your brain with sex thoughts. hm, what would be a good name ...
02:48:05 <evincar> Come on, is no one else bothered by the use of -> and => instead of proper arrow characters, or <= instead of a "less than or equal to" sign, or straight quotes instead of curved quotes?
02:48:31 <CakeProphet> evincar: given the limitations of my keyboard, no.
02:48:37 <CakeProphet> but I am bothered by the limitations of my keyboard.
02:48:57 <evincar> On Linux I use a compose key, and extend my compose map liberally, but it's not really enough.
02:49:26 <evincar> We should be able to beautifully typeset our source code like mathematics and prose.
02:49:51 <evincar> And quit designing languages that are so backward-compatible they can be typed on a typewriter from 1960.
02:50:11 <CakeProphet> just wait until time-travel
02:50:25 <CakeProphet> then we have to worry about forward-compatability
02:50:39 <oerjan> they'll never be able to solve that
02:50:49 <evincar> If we have time travel, I think we'll cope (have be will copen?) somehow.
02:51:21 <olsner> APL probably would've been a huge success if only it hadn't limited itself to being backwards-compatible with '60s typewriters
02:51:35 <evincar> Har.
02:52:00 <CakeProphet> what will has did "have be will copen" mean?
02:52:21 <evincar> Seriously, these ASCII approximations don't bother anyone else?
02:52:33 <CakeProphet> <-- nah
02:52:44 <pikhq_> evincar: What bothers me is that I have a mere 104 keys.
02:52:59 <pikhq_> I *demand* a Japanese typewriter.
02:52:59 <pikhq_> :P
02:53:27 <pikhq_> (aka "movable type")
02:53:47 <evincar> Perhaps the main thing holding us back is our input methods...and yet no one will use a language that requires editor support, because no one will write an editor for it because no one will use it!
02:54:17 <pikhq_> Well, several people use spoken languages that need editor support.
02:54:29 <evincar> And I doubt anyone's going to be writing programs with formatting markup anytime soon.
02:54:34 <pikhq_> I do not type "例えば", I type "tatoeba".
02:55:19 <CakeProphet> oh my god I'm terrible at web programming.
02:55:22 <evincar> True. I type in Chinese (and less frequently Japanese) quite often, and I always thought it worked quite well.
02:55:29 <evincar> Especially if you're using a hiragana keyboard.
02:55:46 <pikhq_> I dislike hiragana keyboard layouts rather strongly.
02:55:58 <evincar> But these things have demand. People actually speak Japanese, etc.
02:56:19 <pikhq_> Not that QWERTY is best or anything, but: seriously, kana would be *really* well-suited to a chording keyboard.
02:56:41 <evincar> Introducing a language that requires editor support, it won't gain traction; adding features to an existing language, people will just use the old features.
02:57:05 <evincar> I think the only way you could get people to change is to alter all source files passed to the implementation.
02:57:30 <evincar> Quietly but seamlessly replacing ASCII characters with their Unicode equivalents.
02:57:55 <evincar> That is, ASCII di- and trigraph approximations with the genuine article.
02:59:30 <evincar> I'm imagining typing Japanese with just 16-odd keys. *drool*
03:00:08 <pikhq_> With most of the things being 2-key chords, too. :)
03:01:16 <evincar> And Chinese with...initials+finals+tones. I don't recall offhand how many initials and finals there are.
03:01:27 <evincar> But it'd be a lot more convenient than Pinyin input.
03:02:03 <evincar> Although there are abbreviations for common phrases in existing input methods, such as dbq for duibuqi.
03:04:02 <evincar> Speaking of Unicode and CJK ideographs, fuck Unicode.
03:04:10 <pikhq_> It's a shame that Pinyin is prefered over Pinyin.
03:04:29 <pikhq_> Erm.
03:05:06 <evincar> There should be combining radicals, not a code point for every damn ideograph.
03:05:43 -!- pikhq has joined.
03:05:58 <evincar> You'd need a few precomposed radicals to make any sense of it with TTF (OpenType can do anything) and so that the size of encoded text doesn't explode.
03:06:14 <pikhq> s/Pinyin./bopomofo./
03:06:38 <evincar> Bopomofo isn't exactly intuitive for non-native Chinese speakers.
03:06:41 <pikhq> Bopomofo is just a significantly better orthography for Mandarin.
03:06:53 <evincar> Hell, I don't know that it's intuitive for native Chinese speakers either. :P
03:06:56 <pikhq> Neither is Pinyin.
03:07:30 <evincar> Pinyin puts native speakers at a slight disadvantage, I guess?
03:07:42 <evincar> Because they have to know the Latin alphabet (kinda).
03:07:50 <pikhq> Um, it's really not intuitive for non-native speakers.
03:08:18 <evincar> What, Pinyin? No, but it uses the Latin alphabet.
03:08:25 <pikhq> It uses Latin glyphs, but uses rather unique phoneme values for them.
03:08:51 <evincar> Right, it's...mnemonic, I guess?
03:09:13 -!- pikhq_ has quit (Ping timeout: 256 seconds).
03:09:41 <evincar> Apart from q, c, and x.
03:09:58 <pikhq> Not to mention that pitch is not going to be accessible to people who don't bother studying in-depth, so why bother appeasing them?
03:10:45 <evincar> What do you mean?
03:11:27 <pikhq> Someone who actively learns the language is not going to have much trouble with a phonetic writing system, so bopomofo is not a significant barrier.
03:12:06 <pikhq> Someone who does *not* bother with that is going to struggle with, well, everything else, so why care about using a writing system they're familiar with?
03:13:02 <evincar> This is a bit of a circular argument, but bopomofo is really only used in Taiwan anymore.
03:13:27 <pikhq> Well aware.
03:17:11 <evincar> I guess it doesn't really matter? They've standardised on something and that's the end of it until someone decides to make another new system.
03:17:35 <evincar> I wonder if we'll ever see the end of hanzi.
03:18:01 <evincar> Or more likely their mutation into something similar and simpler.
03:18:57 <evincar> Korea successfully got rid of hanja in all but official documents, but China seems awfully attached.
03:19:13 <evincar> Japanese has no hope, with a syllable structure like that.
03:22:50 <evincar> Anyway, back to programming, I'd like to see a language with modern typographical sensibilities.
03:23:13 <evincar> Or, hell, a language with typographical sensibilities from hundreds of years ago.
03:23:25 <evincar> We've regressed.
03:25:05 <CakeProphet> elliott: Django kind of has a good idea going with these generic views.
03:25:10 <CakeProphet> only problem: they don't compose in any way
03:27:57 <pikhq> evincar: Personally, I'm kinda amazed Korea managed to actually get rid of hanja.
03:28:20 <pikhq> What with the absurd number of potentially-ambiguous loans from China that are probably utter hell when reading.
03:28:35 <evincar> Ditto. But I guess it doesn't matter as much in practice.
03:28:54 <pikhq> And Japanese, well. They're slowly *increasing* the number of kanji in use, thanks to IMEs. :)
03:28:55 <evincar> Or people structure their sentences in such a way that they're not ambiguous.
03:29:12 <evincar> Buh.
03:29:20 <pikhq> I wonder how long it'll be before 之 is back in common use.
03:29:54 <evincar> It's used in Chinese in a few situations, mostly formal.
03:30:02 <evincar> But some not.
03:30:22 <evincar> So I dunno. Perhaps.
03:30:26 <pikhq> It's heavily archaic in Japanese. I think it's only in "common" use in names any more.
03:30:41 <pikhq> Though, of course, the word itself is about as common as "the" in English.
03:33:48 <evincar> Oh, wait, in Japanese it's kore? In Chinese it's zhi = de = Japanese particle no.
03:34:02 <pikhq> In Japanese it's Japanese particle no.
03:34:18 <pikhq> Oh, sure enough, it can also be read 'kore'.
03:34:23 -!- Nisstyre has quit (Ping timeout: 252 seconds).
03:34:29 <evincar> Oh. Just looked it up on Google Translate to check. :P
03:34:31 <pikhq> 此れ is the more "typical" kanji for that, though.
03:34:51 <pikhq> Though anyone actually *using* that is probably more of a pedant than I.
03:34:59 <evincar> Yep.
03:35:06 <evincar> Never seen that...
03:36:54 <evincar> Well, I've seen it in Chinese, actually.
03:37:06 <evincar> But I'm sure I see a lot of hanzi that aren't kanji. :P
03:37:12 <evincar> Or aren't common as kanji.
03:37:43 <pikhq> Well, yeah, at a minimum you see simplified glyphs.
03:38:37 <pikhq> Screw simplification, I wanna write 龍! :P
03:42:02 <evincar> I've only studied simplified, but I can read most traditional characters without too much trouble because they're in my textbooks and there's a logical relationship between most pairs.
03:42:29 <evincar> Still, if I go to Taiwan I'm probably fucked/
03:42:31 <evincar> *?
03:42:40 -!- Jafet has joined.
03:42:53 <pikhq> I find simplified trivial to read. Well, as trivial as someone who has never studied Mandarin at all can expect. :P
03:44:03 <pikhq> Bit harder to remember how to write, though. Mangles all the components too much.
03:50:50 <evincar> ...
03:51:03 <evincar> *Would* a language with semantic markup be a bad idea?
03:51:27 <evincar> Nothing remotely resembling SGML...
03:51:40 <evincar> But...something.
03:52:28 <evincar> To make typesetting, formatting, and highlighting simple and consistent, without getting in the way.
03:52:38 <Jafet> Mumble mumble ALGOL 68
03:53:43 <evincar> I guess a well-designed language has that anyway.
03:54:03 <evincar> One-to-one correspondence between syntax and semantics, with enough redundancy to be helpful but not so much cruft as to be unusable.
03:55:32 <evincar> So nevermind.
03:56:28 <oerjan> if it's redundant then it's not one-to-one >:)
03:56:45 <Jafet> It could be non-bijective.
03:57:02 <Jafet> There is only one level of syntax but there are multiple levels of semantics
03:57:09 <oerjan> then it's _still_ not one-to-one.
03:57:31 <oerjan> or, it is not surjective, which is even less useful
03:58:15 <Jafet> Is mergesort semantically identical to heapsort?
03:58:18 <oerjan> (one-to-one = injective, where i learned terminology)
03:58:47 <oerjan> well if we're going to _that_ level, then we'll hit rice's theorem pretty fast :P
04:00:00 <Jafet> The faster evincar crashes into Rice's, the better
04:00:14 <oerjan> ...maybe.
04:01:10 <monqy> is evincar crashing into Rice's?
04:01:25 <monqy> can't say I didn't expect it
04:01:28 <monqy> can say I expected it
04:01:48 <evincar> Sigh.
04:02:52 <oerjan> one-to-one from syntacs to semantics tends to do that, i should think
04:02:57 <evincar> Say "[a]" means "the type of lists with elements of type a". Semantically one-to-one, syntactically redundant.
04:02:58 <oerjan> *syntax
04:03:31 <oerjan> wat
04:03:53 <evincar> The one term "[a]" corresponds to one concept.
04:04:06 <oerjan> that's not what one-to-one means.
04:04:08 <evincar> It also includes unnecessary information.
04:04:45 -!- sebbu has quit (Ping timeout: 240 seconds).
04:04:48 <oerjan> oh hm
04:05:01 <oerjan> "one-to-one correspondence" can mean bijective
04:05:12 <Jafet> Blame the french.
04:05:17 <oerjan> "one-to-one function" means injective.
04:05:26 <elliott> <Jafet> The faster evincar crashes into Rice's, the better
04:05:28 <elliott> ricervincar
04:05:32 <elliott> oops
04:05:34 <elliott> r creeped in
04:05:35 <elliott> ricevincar
04:05:50 <evincar> noo i will be smooshed noo
04:06:33 <evincar> I cannot compete with the power of a theorem that is not strictly relevant to the discussion we're having, though apparently it's relevant to the discussion everyone else thinks we're having. :/
04:06:49 <monqy> what discussion are we having
04:06:50 <evincar> And for the record I was talking about bijection.
04:06:52 <oerjan> anyway, "<evincar> The one term "[a]" corresponds to one concept." says that your correspondence is a _function_. one-to-one is something else.
04:07:06 <evincar> Okay.
04:07:12 <evincar> I'll leave it at that.
04:07:21 <Jafet> How is "[a]" redundant
04:07:41 <oerjan> there are other ways of writing it
04:07:45 <oerjan> :k [] a
04:07:46 <lambdabot> Not in scope: type variable `a'
04:07:47 <evincar> Could be "List a", for instance.
04:07:52 <oerjan> er
04:08:04 <oerjan> :k [] Int
04:08:04 <lambdabot> *
04:08:06 <evincar> Fewer tokens, same meaning.
04:08:13 <evincar> Hypothetically.
04:08:19 <Jafet> [] is one token
04:08:30 <Jafet> Settle down, highway star
04:08:47 <oerjan> :k [ ] Int
04:08:47 <lambdabot> *
04:08:50 -!- myndzi\ has joined.
04:08:56 <oerjan> i don't think haskell's parser agrees :P
04:09:04 <Jafet> It's a magical token
04:09:13 <monqy> hi elliott
04:09:19 <elliott> hi monqy
04:09:20 <oerjan> ok it may be a nonterminal one
04:09:39 <Jafet> :k ( {-: :-} ,)
04:09:40 <lambdabot> * -> * -> *
04:11:31 <CakeProphet> monqy: help django hell
04:11:41 <monqy> too late
04:11:45 -!- myndzi has quit (Ping timeout: 245 seconds).
04:36:10 <CakeProphet> so is plof kind of like io but way better?
04:38:24 <pikhq> Plof is like * but more Gregor.
04:40:28 <CakeProphet> is * the name of something or a bash wildcard in a session where the wd is /the_universe/programming_languages ?
04:47:10 <pikhq> Wildcard.
04:51:33 -!- Jafet has quit (Quit: Leaving.).
04:51:46 <CakeProphet> elliott: will you be mad if I make a programming language called @ and (c) it.
04:52:19 <CakeProphet> on the bright side: there are plenty of alternative names. For example, you can name it ttoillex
04:52:35 <pikhq> He can also feast on your succulent brain-meats.
04:52:46 <CakeProphet> after yourself. or your reverse self in a reverse universe.
04:52:52 <CakeProphet> reversiverse.
04:55:16 <monqy> pretty sure @ is just a placeholder for @'s eventual name
04:55:43 <elliott> yep
04:55:45 <monqy> but ttoillex is a good name
04:56:23 <monqy> CakeProphet you should name your language ttoillex in honour of elliott
04:56:32 <CakeProphet> this is a god idea.
04:56:41 <elliott> yes
04:56:57 <elliott> god itier
04:57:04 <CakeProphet> @ is a good name though.
04:57:08 <CakeProphet> for things.
04:57:29 <CakeProphet> and you can market it as being all trendy and abstrackt
04:57:35 <oerjan> things that you don't want to google
04:57:58 <CakeProphet> google will fall soon after @ is born.
04:58:08 <oerjan> ok
04:58:09 <CakeProphet> either that or it will fix its stupid query language to be less stupid.
04:58:18 <CakeProphet> one can hope.
05:01:45 <CakeProphet> are there any programming languages that work like polyglots.
05:01:47 <CakeProphet> in other words.
05:02:01 <CakeProphet> the language has, say, two or three different interpreters executing the same source.
05:02:09 <CakeProphet> with different syntax/semantics for each.
05:02:25 * CakeProphet thinks this is a fine idea for an esolang.
05:02:28 <elliott> wierd? whirl? i forget
05:03:51 <evincar> If I want the internal type of an object to change opaquely at runtime, do I need to use double-indirection so the user doesn't get broken references?
05:04:03 <evincar> That's my intuition, but I don't like the performance hit.
05:04:05 <oerjan> literate haskell
05:04:25 <oerjan> or any literate programming
05:04:41 <elliott> evincar: itt: smalltalk #become:
05:05:11 <oerjan> what was itt again
05:05:25 <elliott> you can do it with mark and sweep
05:05:40 <elliott> sincr thst traverses hthe object graph
05:05:50 -!- CakeProphet has changed nick to ElliottDrone1.
05:05:54 <ElliottDrone1> oerjan: read the logs.
05:05:54 <elliott> just force a gc and use it to rewrite referencred
05:05:58 <elliott> references
05:06:41 -!- ElliottDrone1 has changed nick to CakeProphet.
05:06:44 <evincar> Hmm. Rewriting references occasionally versus double-indirection always. Bluh.
05:06:59 <oerjan> um oh it's _not_ an obscure irc acronym?
05:07:00 <evincar> I guess in the latter case it can be optimised away quite often.
05:07:17 <elliott> gc doesnt take long
05:07:18 <CakeProphet> oerjan: no, it's associated with 4chan but may originate from prior to it.
05:07:30 <elliott> and you're doing it anyway
05:07:35 <oerjan> i mean, "i think that" simply doesn't fit
05:07:47 <elliott> doing it a bit earlier doesn't matter
05:08:08 <oerjan> `log itt
05:08:29 <elliott> evincar: why not just replace the representation in-place
05:08:31 <HackEgo> 2011-10-19.txt:05:41:41: <CakeProphet> I'm a sucker for fancy things (that don't have shitty interfaces. see: most fancy looking desktop environments)
05:08:44 <oerjan> `log \<[i]tt\>
05:08:54 <CakeProphet> help wat
05:08:54 <HackEgo> 2010-10-15.txt:20:22:24: <elliott> ITT: people don't allocate full bandwidth to torrents
05:09:05 <evincar> elliott: That requires there to be enough storage for the new representation, which I can't necessarily guarantee.
05:09:10 <CakeProphet> oerjan: it means "in this thread"
05:09:16 <oerjan> bah
05:09:28 <elliott> evincar: use a copying gc
05:09:29 <evincar> I'm thinking about automatic promotion from machine integers to bigints when necessary, as one example.
05:09:43 <elliott> allocate enough space when you copy
05:09:44 <evincar> You want the underlying type of the object to change, but the apparent type to remain the same.
05:09:50 <elliott> uh
05:10:00 <elliott> maxhine ints should be tagged pointers
05:10:04 <evincar> Like, the user has an opaque type "integer".
05:10:07 <elliott> not allocated objects.
05:10:22 <CakeProphet> evincar: just use perl
05:10:25 <CakeProphet> all problems will be solved.
05:10:29 <CakeProphet> except for performance problems.
05:10:40 <evincar> Those are the problems I'd like to solve. :(
05:11:14 <CakeProphet> then wait for Perl 6. maybe it fixes that stuff!
05:12:06 <monqy> evincar: what problems?
05:12:52 <evincar> monqy: I was using a bad example, but basically just using fast types when possible and non-fast types when necessary.
05:13:21 <elliott> just allocate the full size up-front
05:13:34 <elliott> ram is much cheaper than cpu
05:13:36 <evincar> Memory is cheap, I guess.
05:13:38 <evincar> Yeah.
05:14:10 <elliott> or allocate one ptr extra on the fast repr
05:14:30 <elliott> when it's non-null, it's a ptr to the new bigger repr
05:14:50 <CakeProphet> evincar: yes use big ints always.
05:14:58 <elliott> overhead: one branch when fast, one branch + deref when slow
05:15:05 <elliott> CakeProphet: not what i said
05:15:06 <evincar> That's prolly what I'll end up doing.
05:15:16 <evincar> What elliott did say.
05:16:05 <evincar> Because otherwise you have to deal with the situation when there are multiple "shakeins" (same apparent type but different implementation) for a type.
05:16:18 <evincar> And choosing the largest one might not always be the best idea.
05:17:03 <evincar> (Term "shakeins" borrowed from http://tal.forum2.org/static/cv/Shakeins.pdf linked from an article about become: in smalltalk.)
05:17:36 <evincar> Convenient that it showed up, really.
05:19:24 <CakeProphet> not a problem. shakeins just add flavor.
05:21:30 <CakeProphet> elliott: also neither wierd nor whirl seem to match that description.
05:22:44 <evincar> I'm thinking of things that might be a bit more interesting than what that article goes into. Also AOP is kinda bullshit.
05:23:47 <evincar> Like, changing the representation of a point from rectangular to polar based on how often it's about to be accessed as which, for a simple example.
05:24:17 <evincar> *between rectangular and polar
05:24:19 <elliott> does not change its size
05:25:14 <evincar> Not in that case, no. I'm a bit tired to come up with anything but the int/bigint example at the moment.
05:29:24 <evincar> Another good example is being able to specify in-language that a string is stored contiguously, even though its apparent type is the vastly less efficient "cons-list of char".
05:30:01 <elliott> not vastly less efficient
05:30:05 <elliott> e.g. cons
05:30:17 <elliott> two totally different structures
05:30:52 <elliott> differing strictness, too.
05:31:54 <evincar> Right, but I daresay most strings are finite, and why rely on the implementation to make the optimisation when you can have it in the language?
05:32:28 <CakeProphet> evincar has never used Haskell.
05:32:43 <elliott> if you think unbounded length is the only thing that strictness changes then
05:32:44 <elliott> L
05:32:45 <elliott> O
05:32:45 <elliott> L
05:33:36 <CakeProphet> consider a 4 TB string. now consider strict vs. non-strict
05:34:06 <elliott> have i mentioned cons yet
05:34:14 <evincar> You'd use a still different representation for that. Buffered in chunks, perhaps.
05:34:18 <CakeProphet> also infinite strings are used all the time in Haskell. If you don't want the linked list implementation there are plenty of other sequence types.
05:34:19 <evincar> Like a rope.
05:34:41 <elliott> you cannot substitute two structures that are completely different
05:34:48 <elliott> it is stupid and misguided.
05:34:58 <evincar> Ugh, that's not what I'm suggesting.
05:35:13 <elliott> programs must be written for their structures or they will be inefficient
05:35:18 <elliott> full stop
05:35:34 <evincar> I'm just saying it may be possible to substitute structures as an optimisation.
05:35:58 <evincar> And isn't generic programming sort of a point against you, full stop?
05:36:21 <elliott> lemme know when you get an example that doesn't change semantics
05:36:32 <elliott> and no it's not.
05:36:34 <evincar> Considering the whole point is to abstract algorithms away from structures using iterators (or ranges, which have since turned out to be better in most cases).
05:37:02 <elliott> what a parenthical
05:37:05 <evincar> The point is that you make the changes locally in such a way that they *don't* change semantics except potentially to improve performance.
05:37:06 <elliott> i'm done.
05:38:39 <evincar> Apparently.
05:40:22 <CakeProphet> HEY GUYSCZECH I TOUT I M ON TH WEB: http://127.0.0.1:8000/
05:41:49 <CakeProphet> i WILL soon b f4moose
05:42:04 <elliott> .ljh<
05:42:42 <CakeProphet> your parlance has grown quite obscure, sir ttoille.
05:42:54 <elliott> .,lo987654esxcvbnm,
05:43:26 <CakeProphet> nice path.
05:43:50 <CakeProphet> I daresay
05:43:52 <CakeProphet> a circuit
05:45:24 <CakeProphet> uuuugh
05:45:38 <CakeProphet> I wonder how long I can procrastinate writing a Django template.
05:45:50 * CakeProphet writes more Python instead.
05:59:50 <CakeProphet> wow Django's web docs are really shitty.
06:03:37 <CakeProphet> thorough but also not very well organized.
06:09:09 -!- evincar has quit (Quit: I give you the gift of lack of me.).
06:16:41 <elliott> "A NAR archive is like a TAR or Zip archive, but it contains only the information that Nix considers important. For instance, timestamps are elided because all files in the Nix store have their timestamp set to 0 anyway. Likewise, all permissions are left out except for the execute bit, because all files in the Nix store have 644 or 755 permission."
06:16:41 <elliott> huh
06:17:26 <elliott> wonder how that interacts with setuid and friends...
06:23:55 <oerjan> i suppose it nixes them
06:24:10 <elliott> oerjan: har har
06:26:27 <elliott> This just in: Gamers hit a new low by /not understanding multiplication/.
06:34:33 -!- copumpkin has quit (Ping timeout: 240 seconds).
06:34:58 -!- copumpkin has joined.
06:40:21 -!- oklofok has joined.
06:42:43 <CakeProphet> elliott: hmmm?
06:42:45 <CakeProphet> where?
06:42:47 <CakeProphet> citation needed.
06:43:21 -!- oklopol has quit (Ping timeout: 258 seconds).
06:43:38 <CakeProphet> $_ = s/^/[/r =~ s/$/]/r
06:43:49 <CakeProphet> (the meaning of this correction should be obvious to anyone)
06:52:08 -!- oklofok has quit (Ping timeout: 260 seconds).
06:58:05 -!- Ngevd has joined.
07:03:07 <elliott> "Setuid and setgid programs are not currently supported by Nix. This is because the Nix archives used in deployment have no concept of ownership information, and because it makes the build result dependent on the user performing the build."
07:03:08 <elliott> Right.
07:03:12 <Ngevd> Morning
07:03:43 <elliott> Note to self: Ask the Nix people how they handle gcc not being deterministic.
07:04:04 <Ngevd> aaaah!
07:04:11 <Ngevd> They changed Google Reader!
07:04:32 <elliott> Also, ask them why they rebuild packages depending on dynamic libraries even when it's unnecessary.
07:04:32 <CakeProphet> elliott: help I'm trying to do something incredibly simple and I'm getting bogged down in object-oriented cruft.
07:04:48 <elliott> CakeProphet: Python mind virus. And with that...
07:04:50 -!- elliott has quit (Quit: Leaving).
07:05:13 <CakeProphet> but I don't have that mind virus!
07:09:35 <Ngevd> I think he meant to get it
07:09:48 <Ngevd> That is, for you to get it
07:09:49 <CakeProphet> yes I know.
07:09:58 <CakeProphet> I'm saying I can't get it! I'm already immune
07:10:08 <Ngevd> Oh dear
07:10:08 <CakeProphet> I had it and then got cured, years ago.
07:10:16 <Ngevd> Try a different strain
07:10:23 <Ngevd> IronPython
07:11:04 <CakeProphet> perhaps if I think of the Python paradigm as "memorize a bunch of classes, methods, and huge keyword argument lists"
07:11:59 <CakeProphet> @method_decorator(login_required)
07:11:59 <CakeProphet> def dispatch(self, *args, **kwargs):
07:12:01 <CakeProphet> return super(ProtectedView, self).dispatch(*args, **kwargs)
07:12:02 <CakeProphet> wow....
07:12:27 <CakeProphet> that is so much boilerplate, to apply that login_required decorator bit to every instance of a class
07:12:30 <CakeProphet> THREE WHOLE LINES
07:12:35 <CakeProphet> with *args **kwargs and super nonsense.
07:13:00 <CakeProphet> also TWO IMPORTS
07:43:23 -!- Ngevd has quit (Quit: Goodbye).
07:45:40 <monqy> good python
07:45:47 <monqy> friend python
07:46:38 <fizzie> Deadly python.
07:49:21 <CakeProphet> ugh
07:49:22 <CakeProphet> bad python.
07:49:33 <CakeProphet> actually
07:49:39 <CakeProphet> bad incomplete Django documentation
07:49:57 <CakeProphet> a huge crufty web app framework should have utterly complete docs.
07:50:52 <monqy> naturally
07:58:59 <fizzie> IIRC the Book isn't so bad as far as it goes, but the reference docs have been organized with some sort of alien-hive-mind logic.
08:06:09 -!- atehwa has quit (Ping timeout: 258 seconds).
08:07:03 -!- atehwa has joined.
08:18:25 -!- Patashu has quit (Ping timeout: 258 seconds).
08:23:06 -!- monqy has quit (Quit: hello).
08:35:53 <CakeProphet> fizzie: the book doesn't document this new class-based generic view stuff I'm attempting to use.
08:36:14 <CakeProphet> perhaps.... I should use the old stuff?
08:36:39 <CakeProphet> like, I'm literally browsing source code to figure this shit out.
09:07:27 <fizzie> Yes, I see that the (v2) book is sort of stuck in the 2009s. Oh well; it was new when I looked at it, some years ago.
09:07:50 <CakeProphet> ugh
09:07:54 <CakeProphet> #django was no help at all.
09:08:08 <CakeProphet> the opposite of help in fact.
09:08:13 <CakeProphet> led me in the wrong direction
09:08:14 <CakeProphet> HOURS later
09:08:17 <CakeProphet> I finally figured out
09:08:21 <CakeProphet> how to do this incredibly simple thing.
09:13:10 <CakeProphet> nevermind... I didn't.
09:13:29 <CakeProphet> seriously this is stupid.
09:17:11 -!- oklopol has joined.
09:24:37 -!- DH____ has joined.
09:33:24 <oklopol> o
09:33:24 <oklopol> o
09:33:24 <oklopol> o
09:33:24 <oklopol> o
09:33:24 <oklopol> o
09:33:24 <oklopol> o
09:33:25 <oklopol> o
09:33:25 <oklopol> o
09:33:26 <oklopol> o
09:33:26 <oklopol> o
09:47:12 <CakeProphet> o
10:28:11 -!- Patashu has joined.
10:32:54 -!- oerjan has quit (Quit: leaving).
10:36:02 -!- Vorpal has joined.
10:36:09 -!- Vorpal has quit (Changing host).
10:36:09 -!- Vorpal has joined.
10:36:13 <Vorpal> <elliott> Actually it's better than Perl: They're written in... autoconf perl? <-- wow
10:37:57 <Vorpal> <elliott> Heyyy, this manual told me Nix doesn't care about the actual versions. <-- I guess it has to care for a command like "update to last userland in my $PATH". No way around it if you want a well defined behaviour for what executing a command does
10:38:59 <Vorpal> <evincar> Hmm what are some neat things I can do with the free SMS gateway my carrier provides? <-- well, what about controlling car engine heater from your bed using your phone?
10:39:19 <Vorpal> if you live in a cold climate that is
10:47:03 -!- Jafet has joined.
11:19:41 -!- atehwa has quit (Ping timeout: 245 seconds).
11:26:44 -!- atehwa has joined.
11:29:19 -!- ais523 has joined.
11:37:16 -!- Jafet has quit (Quit: Leaving.).
11:38:38 -!- copumpkin has quit (Ping timeout: 260 seconds).
11:39:03 -!- copumpkin has joined.
11:40:38 -!- Jafet has joined.
11:49:21 -!- DH____ has quit (Ping timeout: 240 seconds).
12:14:58 -!- GreaseMonkey has quit (Quit: The Other Game).
12:16:46 -!- ais523 has quit (Ping timeout: 240 seconds).
12:17:13 -!- ais523 has joined.
12:27:20 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:16:10 -!- aloril has quit (Ping timeout: 252 seconds).
13:27:58 -!- sllide has joined.
13:28:09 -!- aloril has joined.
14:00:29 -!- ais523_ has joined.
14:10:14 <Vorpal> ais523, so, someone ascended already. Quite impressive.
14:24:38 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:32:27 <ais523_> Vorpal: not that surprising
14:32:33 <ais523_> especially as there's a prize for first ascension
14:32:48 <Vorpal> true
14:32:57 <Vorpal> ais523_, still it is pretty quick.
14:33:12 <Vorpal> ais523_, and it was with tourist
14:33:45 <ais523_> tourist is a pretty powerful role, actually
14:33:46 <Vorpal> ais523_, I find tourist hard to play personally
14:33:49 <Vorpal> hm
14:33:55 <ais523_> it has a bad start, but not as bad as some other roles
14:33:59 <ais523_> and gets very good very quickly
14:34:10 <Vorpal> hm, perhaps
14:34:19 <Vorpal> never lasted very long as tourist
14:35:11 -!- Phantom_Hoover has joined.
14:39:40 -!- ais523_ has quit (Quit: Page closed).
14:45:15 <CakeProphet> fungot: hi
14:45:15 <fungot> CakeProphet: i have no fnord is that the sentence that came out as normal words
14:45:22 <CakeProphet> fungot: hi
14:45:22 <fungot> CakeProphet: i dunno. it was sent in 2002. a very clean apartment.
14:45:27 <CakeProphet> fungot: hi
14:45:27 <fungot> CakeProphet: i did one of it's kernels. ( especially with working menus thanks to carbon emacs)
14:45:28 <Vorpal> ^style
14:45:28 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
14:47:23 <CakeProphet> fungot: hi
14:47:25 <CakeProphet> :(
14:47:33 -!- CakeProphet has changed nick to ElliottDrone1.
14:47:34 <ElliottDrone1> fungot: hi
14:47:35 <fungot> ElliottDrone1: i'd been looking clisp going, really nice. really readable unless you print it out as int64_t* with fwrite i get other issues
14:47:38 -!- ElliottDrone1 has changed nick to CakeProphet.
14:47:39 <Vorpal> why the spam
14:47:39 <CakeProphet> fungot: hi
14:47:40 <fungot> CakeProphet: their children are normal. :p these are actually video lectures.
14:47:45 <CakeProphet> spam? no.
14:47:45 <Phantom_Hoover> ^ignore
14:47:46 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
14:48:15 <CakeProphet> spam is good for the heartsoul
14:48:56 -!- Jafet has quit (Quit: Leaving.).
14:49:05 <Phantom_Hoover> ^help
14:49:06 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
14:49:11 <Phantom_Hoover> ^cmds
14:49:14 -!- copumpkin has joined.
14:49:20 <Phantom_Hoover> Oh for...
14:49:49 <Vorpal> Phantom_Hoover, ?
14:50:04 <Phantom_Hoover> What's the command to bring up fungot's ignore list?
14:50:04 <fungot> Phantom_Hoover: there isn't a problem, you should return ( leaf-node 4)
14:50:15 <Vorpal> Phantom_Hoover, I think only fizzie can edit that
14:50:15 <Phantom_Hoover> fungot, return it to whom?
14:50:15 <fungot> Phantom_Hoover: it didn't seem to be
14:50:27 <Vorpal> Phantom_Hoover, to the sender
14:52:09 -!- derdon has joined.
14:52:43 <CakeProphet> fungot: there is no cow level.
14:52:44 <fungot> CakeProphet: ihope is being a dj the primary source of their income?)
14:54:34 <fizzie> ^ignore
14:54:34 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)!
14:54:37 <fizzie> But it only works for me.
15:02:02 <CakeProphet> fungot: produce for me a measure of great wit.
15:02:03 <fungot> CakeProphet: you... yeah. t3h suckage. you *must* be right.) in uppercase, but names code snippets in comments, mail, articles, irc, and it works as expected
15:07:18 -!- augur has quit (Remote host closed the connection).
15:08:23 -!- sebbu has joined.
15:20:21 -!- ais523 has quit (Remote host closed the connection).
15:23:58 -!- Zwaarddijk has quit (Ping timeout: 240 seconds).
15:33:03 -!- augur has joined.
16:00:47 -!- augur has quit (Remote host closed the connection).
16:00:56 -!- Zwaarddijk has joined.
16:02:54 -!- monqy has joined.
16:07:25 -!- augur has joined.
16:09:28 -!- augur has quit (Remote host closed the connection).
16:13:46 -!- augur_ has joined.
16:16:26 -!- augur_ has quit (Remote host closed the connection).
16:36:23 -!- esowiki has joined.
16:37:17 -!- esowiki has joined.
16:37:17 -!- glogbot has joined.
16:37:59 -!- Zetro has joined.
17:03:11 -!- Ngevd has joined.
17:06:38 -!- derrik has joined.
17:07:46 <Ngevd> Hello!
17:22:10 -!- ais523 has joined.
17:23:32 <Ngevd> I've been thinking of a new esolang
17:24:00 <Ngevd> But I don't know what to do
17:24:07 <oklopol> which instruction did you change to a different symbol?
17:24:33 -!- Nisstyre has quit (Ping timeout: 240 seconds).
17:25:46 <monqy> hehehh
17:26:06 <Ngevd> `.
17:26:06 <Ngevd> Just to confuse everyone.
17:26:12 <oklopol> wwwow
17:26:12 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: .: not found
17:26:18 <Ngevd> It's called apostraphuck
17:28:06 <monqy> ph
17:28:28 <Ngevd> Dammit, oklopol
17:28:29 <Ngevd> You woke up HackEgo
17:38:15 <Ngevd> I could think of a data structure that hasn't been used in many esolangs
17:38:33 <Ngevd> Decimal trees?
17:40:12 <Ngevd> Tertiary trees?
17:40:21 <Ngevd> Trees that actually start at the bottom and go up
17:40:27 <Ngevd> You know, like trees that are outside
17:42:24 <monqy> have any languages done photosynthesis/related yet
17:42:34 <Ngevd> That's an idea...
17:42:39 <Vorpal> Ngevd, erm, such a tree is the same as the normal type, but just drawn the other way around?
17:42:50 <Ngevd> Vorpal, exactly.
17:42:55 <Ngevd> BUT DIFFERENT
17:42:59 <Vorpal> in which case it doesn't actually matter when you implement it, it is just a matter of terminology
17:43:21 <Vorpal> instead of recursing down you might recurse up. Same thing
17:43:33 <Ngevd> But it will also have roots!
17:43:36 <Ngevd> Which will be hidden
17:43:51 <Vorpal> okay that is somewhat different then
17:44:01 <Vorpal> Ngevd, what use is the roots
17:44:24 <Ngevd> Keeps the tree in place, and allows it to gather nutrients from the surrounding soil
17:44:34 <Vorpal> Ngevd, in the programming language I meant
17:44:44 <Ngevd> It's an esoteric programming language
17:44:49 <Vorpal> well yes
17:45:04 <Ngevd> So, they are for a very similar purpose to actual trees
17:45:07 <Vorpal> Ngevd, but what actual effect on programming in it would the hidden roots have?
17:45:29 <Ngevd> They're... used for system calls?
17:45:35 <Ngevd> To make programming harder?
17:45:56 <Ngevd> Those were two separate ideas, not meant to be taken together, by the way
17:46:03 <Vorpal> well sure for the latter, but how does it make it harder. Can you give me an example where it matters in a major way?
17:46:33 <Ngevd> If you don't make the roots heavy or big enough, the tree falls over and the program crashes
17:46:49 <Ngevd> If they are too heavy and not big enough, arithmetic becomes harder to do
17:47:03 <Vorpal> is the tree for the program itself or as a data structure for the program?
17:47:10 <Ngevd> Both, in a way
17:47:22 <Vorpal> okay
17:47:23 <Ngevd> But mainly the data structure
17:47:35 <Ngevd> Actually, I think I was meant to say the data structure
17:47:57 <Vorpal> "was meant", by whom?
17:48:00 <Ngevd> The program describes how nutrients should be moved around
17:48:10 <Ngevd> Your question
17:48:20 <Vorpal> hm.
17:48:21 <Ngevd> The program will be plain-text
17:48:29 <Ngevd> Intercal-like
17:48:48 <Vorpal> well one could argue that Intercal is not exactly plain text. ;P
17:48:53 <Ngevd> I'm thinking of calling the language Bonsai
17:48:59 <Ngevd> It's more plaintext than Piet
17:49:11 <Ngevd> Oh, wait, there was an emoticon
17:49:15 <Ngevd> In which case, ha
17:49:58 <Vorpal> Ngevd, well yes, also Intercal has stuff like using a literal backspace to write two letters in the same place
17:50:10 <Ngevd> True, true
17:50:20 <Ngevd> Okay, maybe more like... ORK
17:50:27 -!- elliott has joined.
17:50:32 <Vorpal> Ngevd, wait, isn't that a bf clone?
17:50:44 <Ngevd> That would be Ook!
17:50:58 <Ngevd> ORK is the Object-Oriented one
17:50:59 <Vorpal> elliott, btw I finally got around to looking at that constant wrapping code. I have one question though.
17:51:06 <elliott> Yes?
17:51:09 <Vorpal> frac n d
17:51:09 <Vorpal> | n `rem` d == 0 = n `div` d
17:51:09 <Vorpal> | otherwise = (n+d) `div` d
17:51:10 <Vorpal> that bit
17:51:17 <Vorpal> how does that behave wrt negative numbers
17:51:22 <Vorpal> which direction does it round
17:51:37 <elliott> rem is like C %
17:51:40 <Vorpal> elliott, and div?
17:51:42 <elliott> mod is like mathematics
17:51:50 <elliott> Vorpal: divMod/quotRem
17:51:50 <Vorpal> does it round to 0 or to -inf
17:51:54 <elliott> latter is C
17:51:54 <Vorpal> hm
17:51:58 <elliott> actually
17:52:00 <elliott> this is worrying
17:52:04 <Vorpal> elliott, so the division rounds in a non-C way then
17:52:04 <elliott> maybe it should be `quot`
17:52:07 <elliott> ...but it works :)
17:52:14 <elliott> mycology tests negative fungespace, right?
17:52:40 <Vorpal> elliott, yes but it might only hit an even divisible case
17:52:41 <Vorpal> who knows
17:52:42 <elliott> Vorpal: eh, just check fungot works :p (I can't run fungot)
17:52:43 <fungot> elliott: now it froze again before the program was tiled across 2d space, and i got 3 for that
17:52:48 <elliott> that should test well if underload is tested
17:53:20 <Ngevd> Once again, fungot replied appropriately
17:53:21 <fungot> Ngevd: a command would switch your " current" one and you could find.
17:53:32 <elliott> Vorpal: can you sprunge the code for me? I don't have it here :P
17:53:38 <Vorpal> elliott, oh also, I gather it is not meant to be used unless you detected already you crossed outside the borders?
17:53:41 <Ngevd> Okay, fizzie, I'm scared
17:53:46 <Vorpal> elliott, sec
17:53:58 <elliott> Vorpal: It replaces the loop you have. So yes.
17:54:22 <Vorpal> elliott, http://sprunge.us/DLNE
17:54:52 <elliott> Vorpal: hmm, that's actually not the latest code, Vector became its own type :-)
17:54:54 <elliott> but right
17:55:09 <Vorpal> elliott, okay, it is the one I had though
17:55:31 <elliott> I'll check the rem/div thing using logs of the source
17:55:36 <Vorpal> elliott, also "f"?
17:55:43 <elliott> Yes, f
17:55:56 <elliott> You are free to figure out what an appropriate name for it is
17:56:02 <Vorpal> elliott, I was just about to ask you
17:56:05 <elliott> But I'd just call it f
17:56:17 -!- myndzi has joined.
17:56:20 <Vorpal> elliott, hell I'll go with static int f(int, int, int, int)
17:56:28 <Vorpal> not very idiomatic, but whatever
17:56:34 <elliott> Vorpal: static INLINE!
17:56:40 <elliott> _FUNGE_FAST or whatever it is
17:57:04 <Vorpal> elliott, actually the static was there because "f" is a way too generic name to let it escape into the global namespace :P
17:57:14 <Vorpal> elliott, hm, frac_dir might work
17:57:27 <Vorpal> it is a frac wrapper that deals with the direction
17:59:34 -!- myndzi\ has quit (Ping timeout: 240 seconds).
17:59:47 -!- augur has joined.
17:59:57 <Vorpal> elliott, btw sometimes it seems to return coords outside the boundaries.
18:00:11 <elliott> I blame your division
18:00:13 <Vorpal> so it needs a step to get into the boundaries
18:00:22 <Vorpal> elliott, no, your haskell version
18:00:33 <elliott> Oh. Right, I think I advance after doing that, or something.
18:00:35 <elliott> Dunno.
18:00:53 <Vorpal> *Main> wrap (0,0) (10,10) (Ray (5,5) (2,0))
18:00:53 <Vorpal> Ray (-1,5) (2,0)
18:01:06 <Vorpal> yeah I guess so
18:01:22 <Phantom_Hoover> FFS, why does reddit make it so hard to go to a given page of a comment overview?
18:01:34 <Vorpal> (same with 11,5 for the coord btw)
18:02:16 <elliott> Yay, my pull request got merged.
18:02:27 <olsner> elliott: happy happy joy
18:02:31 <Vorpal> elliott, pull request for what?
18:02:38 <elliott> https://github.com/pbrisbin/aurget/pull/4
18:03:11 <Vorpal> oh, aurget
18:03:14 <Vorpal> is that like yaourt?
18:04:02 <elliott> Vorpal: Yes, except it just does AUR
18:04:09 <elliott> And has far less annoying prompts/output
18:04:36 <Vorpal> elliott, so if you need a dep from the main repo you have to do that by hand?
18:04:42 <elliott> No, it calls out to pacman
18:04:51 <Vorpal> well, then it doesn't just do AUR ;P
18:09:49 -!- augur has quit (Remote host closed the connection).
18:11:45 <ais523> elliott: I need some meme advice: when using "accidentally" as a verb, is the third-person form "accidentally" or "accidentalies"?
18:11:53 <ais523> I suppose the former would be more consistent with the etymology
18:12:01 <ais523> but it looks really wrong
18:12:05 <Ngevd> Singular or plural?
18:12:07 <elliott> ais523: don't... don't do that
18:12:16 <elliott> whatever you're doing :P
18:12:16 <ais523> elliott: I'm not
18:12:18 <ais523> but someone else did
18:12:31 <ais523> and it threw me for a loop, and I'm trying to recover
18:12:40 <ais523> Ngevd: singular, obviously; there's no problem with plural
18:12:46 <elliott> anyway, I think "accidentally"
18:12:49 <elliott> accidentally isn't really the verb
18:12:55 <elliott> it's just the word before the invisible verb
18:13:19 <Ngevd> I think accidentallies...
18:13:38 <ais523> so do I
18:13:47 <ais523> but someone used just "accidentally" in the context, and it /looks wrong/
18:13:51 <ais523> perhaps that's the point
18:15:03 <Ngevd> Hmm
18:15:15 <Ngevd> I like the Koan of Drescher and the Toaster
18:21:43 <elliott> https://lists.fedoraproject.org/pipermail/devel/2011-October/158845.html
18:21:50 <elliott> What; Lennart is doing something reasonable for once?
18:25:46 <Vorpal> elliott, btw why did you error out on zero delta?
18:25:51 <Vorpal> as far as I know it is perfectly valid
18:26:12 <elliott> Vorpal: CCBI does, too; you can replace it with for(;;) sleep(9999999999) if you wish.
18:26:19 <Vorpal> heheh
18:26:23 <elliott> It's nice to have an option to report that, though.
18:26:43 <Vorpal> elliott, I prefer a busy-loop, it is what cfunge currently does if you are stupid enough to set your delta to zero
18:26:44 <elliott> Vorpal: But I hereby license my code under the "You're not allowed to put an explicit busyloop" license. :p
18:26:48 <elliott> At least sleep it out!
18:26:51 <elliott> Baaaaaah.
18:26:52 <elliott> You are bad.
18:26:56 <elliott> That is, like, so un-green.
18:27:06 <elliott> It's... RED.
18:27:10 <Vorpal> elliott, that would break compatibility with previous behaviour.
18:27:44 <Vorpal> Anyway, I might make cfunge error on it.
18:28:29 <Vorpal> elliott, anyway do you error if delta is zero and you are not wrapping?
18:28:33 <Vorpal> if not, that is quite weirfd
18:28:35 <Vorpal> weird*
18:28:45 <elliott> Not yet :)
18:29:05 -!- hagb4rd has quit (Ping timeout: 248 seconds).
18:29:06 <Vorpal> elliott, also iirc there is a fingerprint to poke the delta of other IPs
18:29:10 <Vorpal> elliott, you would not support that
18:29:32 <Vorpal> I'm just going to make it return to allow for easy implementation of such a fingerprint in the future
18:30:07 <Vorpal> elliott, anyway how could you get outside of the borders with a zero delta
18:30:11 <Vorpal> is that even possible?
18:30:20 <elliott> Probably
18:30:21 <Vorpal> sure, if there was a fingerprint to poke another thread
18:31:05 <Ngevd> I think the Jargonwiki is what we are stopping ourselves from becoming
18:31:16 <Ngevd> It has been overran with spam
18:31:44 <Ngevd> No, wait, I just caught it at a bad time
18:31:49 <Ngevd> No, wait
18:31:57 <Ngevd> Oh dear god it's bad
18:32:53 <Vorpal> elliott, btw why did you name that "m", what does it stand for
18:32:58 <elliott> Ngevd: Oh no, it's based on the wrong jargon file.
18:33:25 <elliott> Vorpal: Nothing. I don't think I named it m, actually.
18:33:37 <Vorpal> elliott, well... "where m"
18:33:38 <elliott> I wouldn't worry too much about the names.
18:33:40 <Vorpal> it says that there
18:33:57 <Vorpal> if it isn't named m then the code is lying :P
18:34:27 <elliott> I didn't say it wasn't named m.
18:34:38 <Ngevd> There are only a finite number of BF Joust programs
18:35:57 <ais523> Ngevd: *fundamentally different BF Joust programs
18:36:10 <Ngevd> True, I'll grant you
18:36:28 <Ngevd> However, an interpreter can cut all programs off after 100000 with NO change to execution
18:36:41 <ais523> Vorpal: what do you do if the delta for one IP is 0 but the program is multithreaded?
18:36:52 -!- augur has joined.
18:37:07 <elliott> Ngevd: untrue
18:37:09 <elliott> (...)*0
18:37:31 <Ngevd> 100000 characters
18:37:37 <elliott> Yes.
18:37:38 <elliott> Untrue.
18:37:40 <elliott> (...)*0
18:37:44 <Vorpal> ais523, well, currently wrap locks up, which is allowed as I implement the reference algorithm provided by the spec exactly as written there.
18:37:46 <Ngevd> I see not what that is doin
18:37:48 <Ngevd> g
18:37:53 <Ngevd> Hmm
18:37:54 <elliott> (blah blah blah)*0 is a comment.
18:37:56 <elliott> In fact, so is "qhdfdjkfhsdkjf".
18:37:58 <Vorpal> ais523, unless said spec is bugged.
18:37:59 <Ngevd> Ooooh
18:38:01 <Ngevd> So it is
18:38:03 <Ngevd> Hmm
18:38:06 <elliott> All those things take no cycles but many characters.
18:38:27 <Vorpal> ais523, from now on however I will just skip handling that IP.
18:39:08 <Ngevd> Okay, after removal of comments and expansion of brackets, an interpreter can cut all programs off after 100000 characters with NO change to execution
18:39:09 <Ngevd> Better?
18:39:11 <elliott> Vorpal: I believe that's wrong
18:39:15 <elliott> Zero-delta is meant to lock up
18:39:23 <Vorpal> elliott, why do you error out then?
18:39:31 <Ngevd> Will it execute the command it's over repeatedly?
18:39:35 <Ngevd> That would make sense
18:39:38 <elliott> Vorpal: Because locking up sucks
18:39:42 <elliott> But context-switching to other IPs is wrong
18:39:44 <elliott> Ngevd: Expansion of brackets is untenable, nobody has enough RAM to do that for the programs we write nowadays
18:39:51 <Vorpal> elliott, hm.
18:39:56 <elliott> Ngevd: But what you've said approximately reduces to "after 100000 cycles"... :P
18:40:06 <Ngevd> elliott, unless there are loops
18:40:07 <Vorpal> elliott, where does it say that? Isn't this perhaps undefined behaviour?
18:40:15 <elliott> Vorpal: Ask Deewiant
18:40:15 <Vorpal> we need Deewiant and cpressy here
18:40:20 <Vorpal> Deewiant, prod.
18:40:28 <Ngevd> Is cpressy alive?
18:40:36 <elliott> As opposed to dead?
18:40:39 <elliott> And it's cpressey.
18:40:44 <Ngevd> So it is
18:40:49 <Ngevd> cpressy is non-existant
18:40:59 <Ngevd> But as opposed to dead to us
18:41:02 <elliott> Anyway, he's quite thoroughly alive: http://catseye.tc/news.html
18:41:09 <elliott> He just doesn't come on IRC much any more.
18:41:13 <Vorpal> Deewiant, Wrt multiple threads, what is the correct behaviour of wrapping with a delta of 0. Should the program just lock up? Or should it switch to another thread?
18:41:54 <Ngevd> Ooh, dinner
18:41:58 <Vorpal> he could have died since he wrote that
18:42:01 -!- Ngevd has quit (Quit: noms).
18:43:26 <elliott> Vorpal: By the way, the Voxatron Arch package now works perfectly on 64-bit.
18:43:31 <elliott> s/Arch/AUR/
18:43:41 <Vorpal> nice
18:43:42 <elliott> Be sure to install the optional dependency it mentions if you want sound support :)
18:44:18 <elliott> I'm still impressed it looks as good as it does seeing as it's software-rendered.
18:44:33 <Vorpal> elliott, it is software rendered!?
18:44:35 <Vorpal> wow
18:44:41 <elliott> Yep, with SDL.
18:44:45 <Vorpal> elliott, well that explains why I only got about 110 FPS
18:44:51 <elliott> "Only|
18:44:52 <Vorpal> with the antialias on
18:44:54 <elliott> s/|/"/
18:45:07 <Vorpal> and also why it ignored the vsync setting
18:45:07 <elliott> Vorpal: There's a reason the sysreqs are "1 GHz CPU and any graphics card" :P
18:45:17 <Vorpal> elliott, sysreqs? Who reads them
18:45:27 <elliott> Vorpal: Also: The whole thing is done completely through the voxel array.
18:45:29 <elliott> Even the menus.
18:45:33 <Vorpal> elliott, I did notice that
18:45:42 <elliott> Yeah, but it's not just an illusion, it's even like that in the code apparently.
18:45:52 <elliott> So you could run it on a "voxel display" without changes :P
18:45:52 <Vorpal> elliott, sadly I seemed unable to shoot the help text that the sign displayed
18:45:54 <Vorpal> I did try
18:46:04 <Phantom_Hoover> What are you doing this time?
18:46:06 <Vorpal> elliott, I'm not even sure what a voxel display is
18:46:09 <elliott> Phantom_Hoover: Voxatron, buy it already.
18:46:14 <elliott> Vorpal: Nor am I :P
18:46:18 <Vorpal> Phantom_Hoover, reading this: http://catseye.tc/projects/flobnar/doc/Flobnar.falderal
18:46:20 <Phantom_Hoover> I don't remember where my moneys are.
18:46:38 <Vorpal> Phantom_Hoover, on your VISA-card?
18:46:45 <Vorpal> or paypal
18:47:04 <Phantom_Hoover> Vorpal, I don't remember where that is either.
18:47:19 <elliott> Phantom_Hoover: If you have it saved in PayPal you don't need to.
18:47:20 <Vorpal> Phantom_Hoover, in your wallet ?
18:47:24 <elliott> If you can remember your username and password.
18:47:30 <elliott> This is of course SO SAFE.
18:47:45 <Vorpal> elliott, that does worry me quite a bit about PayPal I have to say.
18:47:53 <Phantom_Hoover> elliott, too much like hard work.
18:48:08 <elliott> Phantom_Hoover: Seriously, you want to buy this one.
18:48:30 <Phantom_Hoover> I was referring to PayPal.
18:48:38 <Vorpal> elliott, a lot less security than the typical bank transaction have. With my bank I use the card in a hardware device to generate a response code and so on. Feels quite a bit safer.
18:49:04 <Gregor> lol, Subwayspam offers me a FREE 6-inch sub when I buy another one ... before 9AM.
18:49:21 <Vorpal> elliott, I think it isn't worth it really unless they add some other game. Sure, the game is good, but it isn't amazing.
18:49:28 <elliott> Vorpal: It's also alpha :P
18:49:40 <elliott> Think Minecraft alpha 1.0 or whatever the fuck.
18:49:48 <elliott> Vorpal: The idea is to make it completely scriptable.
18:49:53 <fizzie> Oh, right, it was that VoxelNatural game now.
18:49:55 <elliott> (From the dev's post about it)
18:49:57 <Vorpal> elliott, this is what you get if the resolution in the y-direction is an odd number: https://imgur.com/cYF77
18:50:06 <elliott> Nice
18:50:11 <elliott> It's emulating a CRT for you
18:50:25 <Vorpal> elliott, the lines are tied to the models, not to the position on the monitor
18:50:31 <Vorpal> it seems
18:50:32 <Phantom_Hoover> fizzie, wait, you were there for the VoxelNats?
18:50:42 <fizzie> Phantom_Hoover: Where?
18:51:01 <Vorpal> elliott, you might ask why I tested, well the second resolution listed is derived from dividing the native resolution in half. Which in my case gives me an uneven number.
18:51:09 <elliott> Yes, I read the thread.
18:51:11 <Vorpal> elliott, ah
18:51:41 <Vorpal> elliott, then you saw the image too? Since I posted such a thread iirc
18:52:45 <Vorpal> elliott, anyway I do find the font a bit hard to read in that game sometimes
18:53:13 <elliott> I don't recall an image.
18:53:22 <Vorpal> ah okay
18:54:21 <Phantom_Hoover> <fizzie> Phantom_Hoover: Where?
18:54:24 <Phantom_Hoover> -minecraft.
18:54:53 <fizzie> Phantom_Hoover: Yes, I think I was lurking at that time.
18:54:54 <Phantom_Hoover> Anyway the gateway to my moneys is sealed to me.
18:55:54 <Vorpal> elliott, what do you do on the second level
18:55:57 <Vorpal> elliott, I don't get it
18:56:13 <elliott> Vorpal: Haven't gotten that far yet, was busy dealing with audio troubles.
18:57:40 <fizzie> Did all of you buy that thing already, or is there some sort of a thing?
18:58:07 <Vorpal> fizzie, I bought it for a cheap sum, will increase that if they add more games
18:59:11 <fizzie> Also Steam's Halloween sale had a "Trains vs Zombies" DLC pack to that one train simulator. That was a bit "what".
19:00:01 <Vorpal> fizzie, heard about it. Didn't work very well from what I remember
19:00:12 <Vorpal> fizzie, from seeing an attempt at a video of it
19:00:32 <Vorpal> fizzie, I did buy Cthulhu saves the world from the halloween sale though
19:00:49 <Vorpal> quite a nice game done as a NES-style RPG with a lot of parody thrown in
19:00:56 <fizzie> I noticed it was very cheap.
19:01:00 <elliott> fizzie: I bought it but Phantom_Hoover can't because he is a robot.
19:01:01 <fizzie> Skipped, though.
19:01:11 <Vorpal> fizzie, I think it was worth the money
19:01:17 <Vorpal> fizzie, totally hilarious
19:03:43 <fizzie> But two whole euros. It's, like, one more than one.
19:04:04 <fizzie> Okay, the second is not quite whole.
19:04:07 <Phantom_Hoover> elliott, how dare you, Roombas are soulless automata.
19:05:52 <Vorpal> fizzie, I got it for 1.33 € for both it and another game together iirc (for the steam game mentioned above)
19:06:07 <Vorpal> used steam because it cost slightly more on gamers gate, and just one game there
19:06:33 <Phantom_Hoover> I plan to pay 1p.
19:09:04 <fizzie> 1p press start.
19:10:11 <elliott> ais523: oh /no/
19:10:19 <Vorpal> elliott, what?
19:10:23 <ais523> and why me?
19:10:40 <elliott> ais523: I... have a use for the Secret Project
19:10:53 <Vorpal> elliott, really? What is it?
19:10:55 <ais523> err, are you sure?
19:11:00 <ais523> you don't know what the Secret Project is for yet
19:11:01 <elliott> ais523: I think so???
19:11:22 <ais523> let me know the use, anyway
19:11:28 <elliott> ais523: The Secret Project gives perfectly deterministic (and thus repeatable) execution of Linux programs without being ridiculously slow, right?
19:12:05 <Vorpal> can't you read the TSC from the user space? Or is that instruction kernel only?
19:12:16 <ais523> elliott: yes, or will do when it's finished
19:12:25 <elliott> ais523: That's exactly what I need. :(
19:12:33 <ais523> note that this is a statement that's true about the Secret Project, rather than being its purpose
19:12:33 <Vorpal> elliott, for what?
19:12:52 <elliott> Vorpal: Package building.
19:12:57 <Vorpal> ah right
19:13:00 <elliott> Nix has problems with e.g. people depending on the system clock or uname.
19:13:07 <elliott> Which obviously violates the purity it tries hard to create.
19:13:19 <elliott> So the solution is... the Secret Project.
19:13:37 <Vorpal> hm
19:13:37 <fizzie> Also does something use "dbpq" as a twirlie in place of a "-/|\"?
19:13:39 <elliott> What I'm saying is, ais523: how long do I gotta wait for a public release :P
19:13:43 <ais523> note that the Secret Project may well set them to arbitrary values
19:13:48 <elliott> And yes, that's fine.
19:13:53 <ais523> and, err, quite a while, as I have higher priorities and am at work
19:14:03 <Vorpal> ais523, how is linux setup, can you execute RDTSC from user space? according to CPU docs that depends on if CR4.TSD is set to 0 or 1
19:14:17 <Vorpal> if it is set to 0 you can always introduce non-determinism
19:14:27 <elliott> ais523: Butbutbut...
19:14:54 <elliott> The RDTSC instruction can be enabled or disabled by operating systems. For example, on some versions of the Linux kernel, seccomp sandboxing mode disables RDTSC.[8] It can also be disabled using the PR_SET_TSC argument to the prctl() syscall.[9]
19:15:06 <elliott> ais523: hmm, can Secret Project-ran programs write to a filesystem?
19:15:08 <Vorpal> elliott, well then, it is usually enabled I guess
19:15:11 <ais523> aha, I need to call that prctl
19:15:21 <Vorpal> ais523, that might stop the program from working
19:15:24 <ais523> elliott: yes, to a hidden filesystem
19:15:30 <fizzie> Vorpal: It is usually enabled, but I doubt many people use it.
19:15:33 <Vorpal> ais523, how far has the secret project progressed btw?
19:15:36 <ais523> the filesystem in question has a lifetime tied to that of a process
19:15:37 <elliott> ais523: which can then be read after it's finished?
19:15:41 <elliott> oh
19:15:48 <fizzie> Vorpal: Performance counters were discussed back then.
19:15:48 <ais523> elliott: it could theoretically be tied to a file
19:15:50 <ais523> it isn't, but it could be
19:15:50 <elliott> ais523: what if I need to get the resulting FS?
19:15:59 <ais523> so it wouldn't be too hard to modify to do that
19:16:01 <Vorpal> fizzie, hm
19:16:23 -!- Ngevd has joined.
19:16:28 <elliott> ais523: hmm, the worst part of needing the Secret Project is that you need the Secret Project
19:16:30 <Ngevd> Hello!
19:16:31 <Vorpal> ais523, can't you make public the parts of the secret project that would benefit elliott here, those would not really compromise it if it is cleanly separated.
19:16:37 <elliott> ais523: just to check, you're not writing it for package building, right?
19:16:44 <ais523> no
19:16:46 <elliott> Vorpal: It obviously isn't even working for my purposes yet
19:16:56 <Vorpal> elliott, well, it is a good start
19:16:56 <ais523> Vorpal: I probably could, but it wouldn't work
19:16:59 <Ngevd> Which secret project are we talking about?
19:17:00 <ais523> in its current state
19:17:04 <Vorpal> as opposed to starting from scratch
19:17:05 <ais523> Ngevd: /the/ Secret Project
19:17:07 <elliott> Vorpal: So I'll just do what Nix does (set the obvious stuff to dummy values and trust the package.)
19:17:09 <ais523> the one that gets capital letters on its name
19:17:10 <elliott> s/.)/)./
19:17:28 <Ngevd> Oh, that one
19:17:28 <elliott> Vorpal: I mean, the worst that can happen is that you have a broken package that behaves differently when you GC it and reinstall it.
19:17:28 <fizzie> Vorpal: After all, it only needs to work right, not to be right.
19:17:36 <Vorpal> elliott, and do it in a chroot with just what it needs according to the package description visible?
19:17:37 <elliott> Vorpal: It's like foo = unsafePerformIO randomNumber.
19:17:46 <elliott> Vorpal: It's bad, but it probably isn't going to cause actual problems.
19:17:53 <elliott> It's just another broken package.
19:18:01 <Vorpal> elliott, btw, valgrind must be installed in the --prefix given to it's ./configure
19:18:09 <Vorpal> elliott, it won't run from anywhere else.
19:18:19 <elliott> Vorpal: Tons of packages do that, that's why DESTDIR was invented; what's your point?
19:18:22 <Vorpal> reason, hard coded paths. Why? Because it doesn't use libc
19:18:32 <Vorpal> elliott, indeed. Just saying you can't relocate it.
19:18:40 <elliott> Vorpal: Why would you want to?
19:18:53 <Vorpal> elliott, well, the valgrind people thought it worth documenting this
19:19:11 <elliott> ...Why are you telling me...?
19:19:22 <fizzie> Oh, two more games in that thing? How coincidental.
19:19:31 <Vorpal> fizzie, oh? nice, will check them out
19:20:07 <elliott> fizzie: It was inevitable.
19:20:18 <Vorpal> elliott, well I assumed it was reasonably common (and you might do that with some unusual fs layout) since they wrote this: http://valgrind.org/docs/manual/dist.readme-packagers.html
19:20:38 <elliott> Vorpal: Even dpkg and friends have to deal with that, if they don't use fakeroot.
19:20:44 <Vorpal> ooh I heard nice things about "Blocks That matter"
19:20:45 <elliott> Since they have to put the files in a subdirectory to package up.
19:20:50 <Vorpal> supposed to be really screwy
19:21:11 <elliott> Vorpal: But anyway, in a Nix-style system no relocation is done, ever.
19:21:15 <Vorpal> and wtf, "the binding of isaac" I heard it was quite nasty. Like super-nasty
19:21:30 <elliott> "nasty"
19:21:34 <elliott> Looks like it's from one of the Super Meat Boy guys
19:21:44 <Vorpal> never played that
19:21:46 <Vorpal> what is it?
19:22:01 <elliott> A ridiculously popular indie platformer thing.
19:22:08 <elliott> It's good, if painful.
19:22:12 <Vorpal> I see
19:22:15 <elliott> Vorpal: (following on from previous statement) Even if you install a package for a different architecture it still goes in the same place everywhere.
19:22:40 <Vorpal> hm
19:22:53 <elliott> "When Isaac’s mother starts hearing the voice of God demanding a sacrifice be made to prove her faith, Isaac escapes into the basement facing droves of deranged enemies, lost brothers and sisters, his fears, and eventually his mother. The Binding of Isaac is a randomly generated action RPG shooter with heavy Rogue-like elements."
19:22:54 <elliott> Heh.
19:22:57 <elliott> That's some plot.
19:23:08 <elliott> Yay @ randomly-generated.
19:23:49 <elliott> pikhq: You probably know this stuff: How does using -m32 with an x86-64 compiler differ from using a host=x86-64, target=x86 cross-compiler?
19:23:51 <elliott> pikhq: (gcc)
19:24:02 <Vorpal> elliott, I saw a bit of a play through recently of that (live stream, so I can't link it). Style of the dungeon reminded me a LOT of Zelda a link to the past
19:24:07 <Ngevd> I might define an XML-based game development language
19:24:14 <elliott> Don't.
19:24:15 <Vorpal> like the door shape and everything
19:25:03 <elliott> Hmm, I wonder how much I could parallelise expression evaluation.
19:25:21 <elliott> I gather Nix is quite a bit slower than apt and the like because packages are much more powerful.
19:25:32 <elliott> Maybe I could compile them :-)
19:25:47 <Ngevd> Or possibly just XML-incorporating
19:25:58 <elliott> Why
19:25:59 <elliott> XML is awful
19:26:17 -!- derrik has left.
19:26:29 <Ngevd> Because I feel like it
19:26:36 <Vorpal> elliott, for building and downloading and so on? Or during actual runtime?
19:26:44 <elliott> Vorpal: ? At which part?
19:27:06 <Vorpal> elliott, I mean potentially the lookup time for finding a given dependency could be different on NixOS
19:27:24 <Vorpal> elliott, btw does it use RPATH magic or how is it done on NixOS?
19:27:24 <elliott> Building is irrelevant, the context is binary packages
19:27:37 <Vorpal> elliott, no lookup time during runtime
19:27:41 <Vorpal> to find libssl.so
19:27:41 <elliott> The point is that you have to load and run a fuckton of programs to calculate dependencies and the like
19:27:43 <Vorpal> or whatever
19:27:47 <Ngevd> Maybe I'll subsequently create a JSON version
19:27:49 <elliott> Vorpal: What do you mean, how is what done?
19:28:16 <Vorpal> elliott, say I have foo which depends on libm.so, obviously we need to find the right version of libm.so to match this excecutable
19:28:18 <Vorpal> how is that bit done
19:28:26 <Vorpal> by hard coding the RPATH into foo?
19:28:28 <elliott> When do you need to do that
19:28:35 <Vorpal> elliott, when executing foo
19:28:39 <Vorpal> unless you do static linking
19:28:40 <elliott> Why
19:28:46 <Vorpal> and I don't think nixos does
19:28:50 <elliott> Foo links to /nix/store/89sdfusd89fu89sdfu9-libssl-3.9/lib/libssl.so
19:28:59 <Vorpal> elliott, right, but how is that done on the ELF level
19:29:16 <elliott> Empty RPATH, linking to /nix/store/89sdfusd89fu89sdfu9-libssl-3.9/lib/libssl.so? RPATH=/nix/store/89sdfusd89fu89sdfu9-libssl-3.9/lib, linking to libssl.so?
19:29:24 <Vorpal> yes, which one
19:29:27 <elliott> Perhaps the latter, since they have that patchelf thing.
19:29:30 <pikhq> elliott: The *main* distiction is that -m32 will have the compiler looking in /usr/include for headers, and /usr/lib32 for libraries.
19:29:33 <Vorpal> hm
19:29:33 <elliott> I don't know. It seems immaterial.
19:29:38 <elliott> But the latter is easier to do w/ commercial binaries.
19:29:41 <elliott> You just need to patch the RPATH.
19:29:42 <pikhq> Rather than having it look in a cross-compilation prefix.
19:29:48 <elliott> Which is what their patchelf does.
19:30:07 <elliott> pikhq: Right. That's actually irrelevant to me I think since I'd override that anyway.
19:30:09 <Ngevd> Most of the technology seems to be there in SVG+SMIL+XSLT
19:30:12 <elliott> pikhq: What're the non-main distinctions? :p
19:30:16 <Vorpal> elliott, anyway what about building your own stuff in ~, how do you find the include files, lets say you do #include <stdio.h>
19:30:25 <Vorpal> I haven't tried that on nixos
19:30:44 <elliott> Vorpal: ls ~/.nix-profile/usr/include, one presumes.
19:30:51 <elliott> Probably /usr/include would work too.
19:31:05 <Vorpal> hm
19:31:24 <pikhq> elliott: Shit sometimes breaks because gcc -m32 looks like you're building a native binary with some weird optimisation flag.
19:31:42 <Vorpal> elliott, I guess pkg-config would solve it for pretty much everything outside libc, ncurses and a few other such core/classical libraries
19:31:45 <pikhq> Especially with autoconf.
19:32:00 <elliott> pikhq: Oh good. So my decision to avoid -m32 entirely was the correct one.
19:32:22 <elliott> pikhq: I figure if you're not using the 32-bit binary packages, you can't complain too much about it building a cross-compiler to install a 32-bit package on x86-64.
19:32:23 <pikhq> (where it won't automagically do the x86 stuff for, say, ld.)
19:33:19 <Ngevd> If we consider XSLT+SVG+SMIL, we really just need some method of input
19:33:30 -!- tiffany has joined.
19:33:33 <elliott> ais523: What's the Secret Project's startup time like?
19:33:43 <elliott> i.e. how long does `secret echo hi` take
19:33:50 <ais523> let me try it
19:34:05 <elliott> pikhq: So yay.
19:34:28 <elliott> pikhq: Have I mentioned I'm pretty sure my Kitten design solves multiarch issues completely, without having to build special "32-bit for x86-64" packages?
19:34:59 <pikhq> It's actually pretty easy to do if you're not tied into the concept of "libraries go in /usr/lib/".
19:35:31 <ais523> 0.02user 0.01system 0:01.04elapsed 3PU (0avgtext+0avgdata 6960maxresident)k
19:35:31 <Ngevd> Hey tiffany
19:35:32 <ais523> 0inputs+0outputs (0major+884minor)pagefaults 0swaps
19:35:36 <ais523> elliott: seems to be around a second
19:35:53 <elliott> ais523: that's not bad
19:35:53 <ais523> also, /usr/bin/time has really different output from bash's time, it seems…
19:36:17 <elliott> pikhq: Libraries do go in /usr/lib in my system (sort of).
19:36:31 <ais523> oh good, it's stopped leaking filesystems
19:36:33 <elliott> pikhq: There's definitely nothing like /usr/blah-linux-gnu/lib/.
19:36:42 <ais523> I think a filesystem leak is possibly one of the silliest leaks possible
19:36:56 <Ngevd> What the world really needs is a HTML version that uses a markup system other than SGML or XML
19:37:30 <pikhq> HTML5; done.
19:37:56 <Ngevd> Based on SGML, that is, I think
19:38:05 -!- GreaseMonkey has joined.
19:38:06 <Ngevd> Get better grammer, to do, I need
19:38:17 <pikhq> No. It uses a unique syntax.
19:38:31 <pikhq> HTML 4 was SGML-based, though nobody (and I mean nobody) actually implemented it that way.
19:39:15 <pikhq> In fact, I don't think there was a single reasonably complete HTML 4 implementation.
19:39:43 <Ngevd> Hey GreaseMonkey
19:40:14 <GreaseMonkey> 'lo
19:40:36 <fizzie> My favourite part of HTML5 is the part where it says "if someone asserted that cats were vegetables".
19:41:08 <Ngevd> Really?
19:41:32 <fizzie> Well, I haven't read most of it, so it might not be a permanent favourite part; plus it's a work-in-progress, anyway.
19:41:42 <fizzie> But quoted out-of-context like that it sounds delightfully nonsensical.
19:41:54 <fizzie> It's in the list of examples at http://dev.w3.org/html5/spec/Overview.html#the-em-element
19:42:18 <Ngevd> Okay, what I meant was, "What the world really needs is a HTML version that uses a markup system substantially different to SGML and XML"
19:42:20 <elliott> fizzie: It's not really a "work-in-progress".
19:42:31 -!- augur has quit (Remote host closed the connection).
19:42:40 <elliott> fizzie: WhatWG maintains the HTML "living standard", which means it doesn't get any releases and just gets updated constantly (http://www.whatwg.org/specs/web-apps/current-work/multipage/).
19:42:56 <elliott> fizzie: From that, the W3C are working on the HTML5 spec to be published.
19:43:10 <elliott> fizzie: But the publication is roughly irrelevant as far as everyone else is concerned.
19:44:06 <fizzie> elliott: It is relevant in the context of whether the W3C spec will or will not contain "cats were vegetables", though.
19:44:10 <Ngevd> Compare the JSON-like {"head":{"title": "Hello!"},"body":[{"p": "Hello World!"}]} to the XML-like <html><head><title>Hello!</title></head><body><p>Hello World!</p></body></html>
19:44:18 <elliott> fizzie: True.
19:44:33 <elliott> Ngevd: A data language is not suited for markup purposes.
19:44:45 <elliott> Something like sexprs do decently because they're lightweight enough.
19:44:47 <Ngevd> It is PERFECTLY suited.
19:44:53 <elliott> But JSON would get incredibly noisy very quickly.
19:44:58 <elliott> Especially with string quoting.
19:45:13 <elliott> Nobody wants to write ten pages of heavily-nested JSON.
19:45:21 <elliott> It's a data interchange format, not anything for humans.
19:45:25 <Ngevd> But JSON is the only data language other than XML I'm familiar with
19:45:58 <Ngevd> ...What is sexprs?
19:46:40 <elliott> S-expressions.
19:46:48 <Ngevd> Okay
19:46:54 <elliott> But they still have the same string-escaping problem.
19:50:06 <Ngevd> I'm not all to familiar with S-expressions, I'll check them out...
19:53:10 <Deewiant> Vorpal: Lock up because it can't find an instruction to execute within finite time (it's the execution that takes a tick, not one step of finding the instruction)
19:59:51 <Ngevd> S-expressions look interesting
20:00:38 <elliott> Wow, rename(2) wasn't atomic on OS X until a few months ago
20:01:57 <Ngevd> Wow, S-expressions are handy
20:02:23 <Ngevd> ((5:title6:Hello!)(1:p12:Hello World!))
20:02:48 <elliott> That...
20:02:48 <elliott> What?
20:02:54 <elliott> That's not an s-expression.
20:03:01 <Ngevd> Going by the RDF submission
20:03:05 <elliott> What?
20:03:13 <elliott> http://en.wikipedia.org/wiki/S-expression
20:03:22 <Ngevd> http://people.csail.mit.edu/rivest/Sexp.txt
20:03:22 <Ngevd> Got submitted to and rejected by the RDF people
20:03:27 <elliott> Oh, that thing.
20:03:31 <Ngevd> Wikipedia links to i
20:03:31 <Ngevd> t
20:03:32 <elliott> No, those aren't what anyone means by "s-expressions".
20:03:34 <Ngevd> Oooh
20:03:36 <Ngevd> Okay
20:03:50 <elliott> (html (head (title "Hello!")) (body (p "Hello world!"))) is more what I'd expect.
20:04:38 <Ngevd> Okay
20:04:55 <Ngevd> Still very short
20:06:40 <Ngevd> Hmm
20:06:56 <pikhq> Of course, sane people (most aren't) would write that as: <title>Hello!</title><p>Hello World!
20:07:33 <Ngevd> Yet another thing I need a psychiatrist for
20:09:03 <pikhq> Or (valid HTML 4): <title/Hello!/<p>Hello World!
20:10:03 <elliott> I wonder if there's any actually transactional filesystems for linux.
20:10:31 <elliott> I bet btrfs can do it. :(
20:10:40 <pikhq> Reiser4.
20:11:23 <elliott> pikhq: That's even worse than btrfs!
20:11:52 <elliott> Oh well, I think all I need is atomic rename(2).
20:12:18 -!- augur has joined.
20:12:19 <pikhq> btrfs has "transactions".
20:12:37 <pikhq> They are not transactions in any sane sense.
20:12:45 <Ngevd> pikhq, validator.w3c.org gives that 2 errors and 5 warning
20:12:46 <Ngevd> s
20:13:00 <pikhq> Ngevd: *2*?
20:13:10 <pikhq> Oh, I can guess. Missing doctype, missing encoding.
20:13:36 <elliott> Ngevd: Encoding error is irrelevant
20:13:40 <elliott> if sent by correctly-configured server it won't appear
20:13:44 <elliott> it's just because you used the web form
20:13:55 <elliott> also, validator.nu is better for html5 validation than w3's
20:14:07 <pikhq> elliott: I was discussing HTML4 as well.
20:14:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:14:18 <elliott> but yeah, you need a doctype
20:14:34 <pikhq> Easy in HTML5. <!doctype html>
20:14:34 <pikhq> Done.
20:14:42 <Ngevd> 'document type does not allow element "P" here'
20:14:53 <elliott> Ngevd: you're validating it with the wrong standard
20:14:55 <elliott> <!doctype html><title>Hello!</title><p>Hello World!
20:14:57 <elliott> should validate fine
20:15:04 <pikhq> Yeah, that's perfect HTML5.
20:15:12 <elliott> might give an error about encodings that won't occur with correctly-configured server
20:15:24 <elliott> yep
20:15:25 <elliott> validates fine
20:15:27 <elliott> no errors
20:15:41 <elliott> 3 warnings; first one is one that always occurs with w3's html5 validator saying it's experimental
20:15:51 -!- ais523 has changed nick to ais523\unfoog.
20:15:52 <elliott> third one is complaining because i used direct input rather than giving a url
20:16:04 <elliott> second one is an actual warning that wouldn't appear with a properly-configured server
20:17:44 <olsner> btrfs is just a ploy to distract the linux geeks with a not completely boring file system so they will stop trying to port zfs (and so that oracle can sell the zfs upgrade to anyone trying to get real work done on btrfs)
20:17:58 <elliott> heh
20:18:27 <elliott> yeah btrfs has transactions
20:18:47 <elliott> nilfs2 is pretty exciting, at least it does most of what's cool about btrfs
20:20:26 <pikhq> elliott: Not really transactions.
20:20:40 <elliott> wikipedia said user-defined transactions but ok, that is a slightly weird wording
20:21:00 <pikhq> A btrfs "transaction" is saying "don't commit anything to disk until I let go".
20:21:06 <pikhq> Only one can occur at a time.
20:21:41 <elliott> Gross.
20:22:11 <elliott> Hmm, I'll have to be slightly careful about multiarch support in Kitten.
20:22:43 <elliott> Specifically I'll have to use a cross-compile prefix to generate all the symlinks, can't just put them directly into [profile]/usr...
20:22:50 <elliott> Shouldn't affect packages themselves, though.
20:22:56 -!- ais523\unfoog has quit.
20:23:34 <Gregor> HALLO
20:23:43 -!- ais523\unfoog has joined.
20:24:12 <pikhq> elliott: So, what filesystem layout are you intending to use, anyways?
20:24:12 <Ngevd> Linux is Monolithic, HURD is Microlithic.
20:24:18 <Ngevd> I have no idea what the difference is.
20:24:30 <elliott> Gregor: You finally awake!
20:24:39 -!- sebbu has quit (Excess Flood).
20:25:01 -!- sebbu has joined.
20:25:02 -!- sebbu has quit (Changing host).
20:25:02 -!- sebbu has joined.
20:25:06 <Gregor> elliott: I'm finally home :P
20:25:15 <Ngevd> He's been sleepwalking
20:25:20 <elliott> pikhq: Depends what you mean! In terms of what the user cares about, I'm actually dropping /bin and /lib in favour of subdirectories of /usr (good reason for that, actually).
20:25:26 <elliott> As opposed to vice versa.
20:26:00 <elliott> pikhq: Packages are installed Nix-style to /something/923874c23894uc98jf9sd8ff-pkgname/ and links + executable references point there too.
20:26:03 <pikhq> elliott: For instance: how the heck are you going to differentiate between an x86 libc.so.6 and an x86_64 libc.so.6?
20:26:15 <elliott> The actual user-exposed hierarchy being a sham, symlinks or unionfs (depends on Gregor :-P)
20:26:33 <elliott> pikhq: x86: /something/sdfu34nfs8498hf89hf893y4h-glibc-99.4/lib/libc.so.6
20:26:45 <elliott> pikhq: x86_64: /something/asdia0de3j898w7e-glibc-99.4/lib/libc.so.6
20:26:49 <Gregor> Making it a union makes it potentially per-process, which is sexitude.
20:27:00 <pikhq> So, nix-style linking.
20:27:01 <elliott> Gregor: Yes, that's why I wanted to talk to you :)
20:27:17 <elliott> pikhq: Yep, but I don't think Nix actually has a multiarch story in practice. Not sure.
20:27:21 -!- sebbu2 has joined.
20:27:21 -!- sebbu2 has quit (Changing host).
20:27:21 -!- sebbu2 has joined.
20:27:21 <Gregor> I would potentially be willing to rewrite my cunionfs as a kernel module.
20:27:27 <pikhq> Well, then /usr/lib/ will either be pointless or strange.
20:27:43 <elliott> pikhq: It'll be used for when you use "gcc" from the command-line.
20:28:07 -!- ais523 has joined.
20:28:27 <elliott> Gregor: I /think/ I need a way to rewrite the list of union branches while a process runs (i.e. not env-var-based).
20:28:46 <elliott> Gregor: Because when a package is installed, the user's session should see it as part of the hierarchy without a reboot :P
20:29:29 <elliott> Since I have per-user package installations, I think the simplest way is just to let me say, I dunno, CUNION_BRANCHES_FROM_FILE=/some/path, and that's read whenever the list of branches is required. But it would be nice if it only re-read the list of branches when I told it they changed, because reading them every FS operation sounds slooow.
20:29:31 -!- derdon has quit (Remote host closed the connection).
20:29:32 -!- lambdabot has quit (Ping timeout: 240 seconds).
20:29:45 -!- sebbu has quit (Ping timeout: 240 seconds).
20:29:50 -!- Phantom_Hoover has joined.
20:30:25 -!- ais523\unfoog has quit (Ping timeout: 240 seconds).
20:30:30 -!- ais523 has changed nick to ais523\unfoog.
20:31:00 -!- kmc has quit (Ping timeout: 240 seconds).
20:31:00 <elliott> Another possible problem is stuff that actually breaks if you install it out of its prefix; with symlinks, it might resolve its own argv[0] and work fine, but maybe something will break if it looks normal? /However/, the files will still be in the prefix it was installed to, so programs would have to try very, very hard to break.
20:31:14 <elliott> i.e. they'd have to specifically check for people "installing them outside the configured prefix", and I doubt anyone does that at runtime.
20:31:48 <ais523\unfoog> elliott: C-INTERCAL checks a bunch of places, including the configured prefix, relative to the current directory, and relative to argv[0]
20:31:56 -!- kmc has joined.
20:32:00 <pikhq> Hypothetically speaking some things might look in their configured prefix for *other* programs.
20:32:03 <elliott> ais523\unfoog: Yep, that's fine; it checks the configured prefix first, right?
20:32:08 <ais523\unfoog> I can't remember
20:32:11 <ais523\unfoog> but probably
20:32:17 <pikhq> Though, this is going to break in common usage anyways.
20:32:21 <elliott> Basically, everything will work fine as long as everybody checks their configured prefix /before/ snooping around where argv[0] is.
20:32:27 <elliott> Keyword before.
20:32:39 <elliott> Anything that doesn't, welp, gotta patch it :P
20:32:46 <elliott> But I have relative confidence that it'll work fine.
20:32:53 <elliott> Programs that stupid probably can't handle a symlink argv[0] anyway.
20:34:12 -!- evincar has joined.
20:37:50 <ais523\unfoog> This function looks for the skeleton and syslib, searching first the path they should be in, then the current directory, then argv[0]'s directory (if one was given). This function avoids possible buffer overflows, instead truncating filenames (and if that manages to find them, I'll be incredibly surprised). It also tries argv[0]/../lib and argv[0]/../include (where they are when running without installing).
20:37:53 <ais523\unfoog> elliott: there you go
20:38:02 <ais523\unfoog> that's C-INTERCAL's algo for finding files it needs
20:38:08 <ais523\unfoog> "path they should be in" = configured prefix
20:38:14 <elliott> ais523\unfoog: thanks
20:39:18 <elliott> ais523\unfoog: I think C-INTERCAL should handle Kitten just fine, then
20:39:33 <evincar> elliott: Your Haskell-fu is greater than mine. How should I structure a parser (using Parsec or whatever) that depends on past input to parse future input?
20:40:20 <elliott> (>>=)
20:40:34 <Ngevd> Somehow I managed to read Haskell as Befunge
20:40:37 <ais523\unfoog> elliott: that answer, while correct, is useless
20:40:45 <elliott> ais523\unfoog: no, it's not
20:40:49 <ais523\unfoog> `addquote <Ngevd> Somehow I managed to read Haskell as Befunge`addquote
20:40:52 <HackEgo> 705) <Ngevd> Somehow I managed to read Haskell as Befunge`addquote
20:40:53 <elliott> (>>=) :: Parser a -> (a -> Parser b) -> Parser b
20:41:01 <elliott> run a parser computation, get its result
20:41:05 <elliott> construct parser for rest appropriately
20:41:07 <elliott> that's what monads /do/
20:41:13 <elliott> `delquote 705
20:41:15 <HackEgo> ​*poof*
20:41:16 <Ngevd> I was going to say to use p to subtly change the program
20:41:17 <elliott> `addquote <Ngevd> Somehow I managed to read Haskell as Befunge
20:41:19 <HackEgo> 705) <Ngevd> Somehow I managed to read Haskell as Befunge
20:41:31 <ais523\unfoog> elliott: not an intentional lie, of course
20:41:33 <ais523\unfoog> `quote
20:41:34 <ais523\unfoog> `quote
20:41:35 <HackEgo> 213) <elliott> Vorpal loves the sodomy. <Vorpal> elliott, sure why not
20:41:36 <ais523\unfoog> `quote
20:41:37 <ais523\unfoog> `quote
20:41:37 <HackEgo> 8) <SimonRC> TODO: sex life
20:41:39 <HackEgo> 44) <Deewiant> I spent the last minute or so killing myself repeatedly
20:41:39 <ais523\unfoog> `quote
20:41:40 <HackEgo> 510) <Sgeo> My memory passed <monqy> rest in peace sgeos memory
20:41:42 <HackEgo> 295) <ais523> anyway, no CSS editing for me right now, I fear I'd get sucked into a holy war [...] <ais523> I also fear it might end up breaking one of the Graue Regulations <ais523> which are rules that you get into serious trouble for breaking, that nobody knows what they are until someone breaks them
20:41:47 <elliott> hmm
20:41:52 <elliott> 295 isn't very funny, too verbose
20:41:55 <ais523\unfoog> none of those are very funny
20:41:58 <elliott> 8 as well
20:42:07 <elliott> I like 44 a lot
20:42:11 <ais523\unfoog> well, OK
20:42:14 <ais523\unfoog> it's probably the best there
20:42:21 <elliott> 8 or 295, what do you think?
20:42:40 <Ngevd> 295 could be split into two quotes
20:42:43 <ais523\unfoog> I'm biased, as 295 is all mine
20:42:53 <ais523\unfoog> but I'm not sure which way I'm biased
20:42:53 <elliott> hmm
20:42:56 <elliott> `delquote 295
20:42:57 <elliott> it's just too long
20:42:58 <HackEgo> ​*poof*
20:42:58 <ais523\unfoog> which makes it worse, because I can't counter for it
20:43:02 <elliott> if it were two quotes, they'd probably be alright
20:43:27 <elliott> That sound of silence is the sound of Gregor furiously working on the best unionfs the world has EVER SEEN.
20:43:31 <elliott> `quote
20:43:31 <elliott> `quote
20:43:32 <elliott> `quote
20:43:32 <elliott> `quote
20:43:33 <elliott> `quote
20:43:35 <HackEgo> 129) <fungot> alise: nobody is allowed to fnord me in soviet russia
20:43:38 <HackEgo> 486) <Sgeo> Fuck clay its only purpose is ecoration
20:43:40 <HackEgo> 330) <Gregor> That's for $literals in the parser. It should maybe be atol too, but probably you shouldn't have nonterminals with more than two billion children.
20:43:41 <elliott> (Last one. Promise I won't make it a habit.)
20:43:48 <HackEgo> 415) <Gregor> You have no idea how desperately I want to avoid being a GC guy :P <Gregor> Every year I go to ISMM and Doug Lea gives me a bizarrely-cheery "Hello!" and I'm like "awww shit I'm in memory management"
20:43:48 <HackEgo> 73) <oklofok> i use dynamic indentation, i indent lines k times, if they are used O(n^k) times during a run of the program
20:43:59 <elliott> Those are all pretty funny. :(
20:44:02 <ais523\unfoog> 129 is good for a fungot quote
20:44:03 <fungot> ais523\unfoog: mail me your link/ data.scm.
20:44:16 <elliott> oklopol one is a classic, two Grgor ones are great
20:44:20 <ais523\unfoog> 415 is better than 330, but they're both good
20:44:20 <elliott> I guess Sgeo's isn't that funny
20:44:30 <ais523\unfoog> what is 486's purpose?
20:44:39 <ais523\unfoog> note that you don't have to delete one if they're all good
20:44:42 <ais523\unfoog> but I don't get 486
20:44:42 <elliott> ais523\unfoog: I think it's mostly amusing because of the <Sgeo> in front of it
20:44:57 <elliott> I think the context was Minecraft, but imagining Sgeo ranting about clay being useless is vaguely amusing
20:45:00 <elliott> But eh
20:45:02 <elliott> `delquote 486
20:45:02 <ais523\unfoog> elliott: couldn't you apply that to everything Sgeo says?
20:45:04 <HackEgo> ​*poof*
20:45:08 <elliott> ais523\unfoog: Point
20:45:38 <elliott> Gregor: Did I mention that updating the branches must be atomic? :P
20:45:47 <Ngevd> How tricky would it be to rig HackEgo to pretend to add everything that Sgeo says?
20:46:00 <elliott> HackEgo can only be made to trigger on `...
20:46:10 <Ngevd> So, very tricky.
20:49:39 <elliott> Ngevd: OTOH HackEgo has access to the logs.
20:49:41 <elliott> `log Sgeo
20:49:52 <HackEgo> 2011-10-14.txt:06:38:16: <Sgeo|web> ...Overlapping?
20:50:48 <Phantom_Hoover> `addquote <Sgeo|web> ...Overlapping?
20:50:50 <HackEgo> 704) <Sgeo|web> ...Overlapping?
20:51:00 <Ngevd> That is oddly funny to me
20:51:43 <olsner> Ngevd: odd
20:51:55 -!- lambdabot has joined.
20:52:57 <elliott> lambdabot awwww you're back friendship lambdabot.
20:53:36 <Ngevd> lambdabot's a mouse now!?
20:54:07 <elliott> Yes.
20:54:09 <elliott> A rouse.
20:54:30 <Ngevd> Whatever happened to friendship mouse?
20:54:57 <elliott> Phantom_Hoover: Tell.
20:55:28 <Phantom_Hoover> Ngevd, it was foraging in a wastebasket and I stuffed a blanket into the top.
20:55:42 <Ngevd> So it would be comfortable
20:55:44 <elliott> awwwwwwwwwwwwwwwwwwwww
20:55:45 <Phantom_Hoover> I then released it outside and spent ten minutes keeping the cat away from it.
20:55:46 <Ngevd> How thoughtful
20:56:02 <Phantom_Hoover> And... not really, the blanket was just the first thing to hand.
20:56:04 <elliott> Why can't I be a friendship mouse.
20:56:12 <Vorpal> Ngevd, friendship mouse? wtf is that
20:56:19 <elliott> Vorpal: Die.
20:56:20 <Ngevd> elliott, because then you'd have to be in Scotland
20:56:30 <Phantom_Hoover> elliott, because you are not a mouse that is why.
20:56:38 <Vorpal> elliott, what?
20:56:44 <Phantom_Hoover> !glogbot_help
20:56:54 <Phantom_Hoover> `log friendship mouse
20:56:59 <HackEgo> 2011-11-01.txt:20:56:12: <Vorpal> Ngevd, friendship mouse? wtf is that
20:57:32 <Vorpal> Phantom_Hoover, how relevant
20:57:53 <Ngevd> It was a mouse that made friends with Phantom_Hoover
20:57:57 <elliott> Phantom_Hoover: Well maybe I am a mouse?
20:57:59 <elliott> Just SAYING.
20:58:11 <Vorpal> Ngevd, as in, a computer mouse?
20:58:14 <Phantom_Hoover> Oh for christ's sake why does that rsync hate me.
20:58:23 <Ngevd> No, as in a squeaky run around get eaten by cats mouse
20:58:30 <Vorpal> Ngevd, ah
20:58:42 <Vorpal> Ngevd, not live I presume?
20:58:48 <Phantom_Hoover> Yes, obviously.
20:58:49 <Ngevd> No, very live
20:58:57 <Phantom_Hoover> You can't be friends with a dead mouse.
20:59:02 <Phantom_Hoover> `log friendship grave
20:59:08 <HackEgo> 2011-08-10.txt:22:44:37: <monqy> friendship grave
20:59:15 <Vorpal> aren't they unhygienic?
20:59:21 <Ngevd> Only in Glasgow
20:59:52 <Phantom_Hoover> http://codu.org/logs/log/_esoteric/2011-08-10
20:59:55 <evincar> Hmm. I said that functional languages are better than object-oriented languages in the general case, and got downvoted to oblivion. What a surprise.
21:00:05 <Phantom_Hoover> Specifically, http://codu.org/logs/log/_esoteric/2011-08-10#141057PhantomHoover
21:00:33 <Ngevd> Hey, I was the first person to respond
21:00:36 <Ngevd> Look at that
21:00:40 <Ngevd> Or maybe it was evil me.
21:00:46 <Ngevd> Nah, he uses the nick "elliott"
21:00:57 <Ngevd> Evil me is much more confident than good me
21:01:04 <elliott> 14:22:42: <Phantom_Hoover> SHOW SOME MAMMALIAN SOLIDARITY
21:01:12 <elliott> Enjoy being locked in your mammal of solidarity.
21:01:39 <Phantom_Hoover> ...eeew.
21:02:11 <elliott> Phantom_Hoover: Hey, is that log the last appearance of lament here?
21:02:22 <elliott> 15:14:28: <lament> haskell is awful
21:02:22 <elliott> 15:15:08: <lament> hoogle is even worse than haskell
21:02:26 <elliott> His final words.
21:02:47 <Phantom_Hoover> The mouse got him.
21:03:03 <Ngevd> And the olympic games were in OCaml
21:10:30 <Phantom_Hoover> 17:07:40: <Phantom_Hoover> aAHAHAHAHVFAFVAOEKRHF
21:10:31 <Phantom_Hoover> 17:07:41: <Phantom_Hoover> I HAVE IT
21:10:31 <Phantom_Hoover> 17:07:44: <Phantom_Hoover> AHAHHAHAHAHAHAHAHAHAHAHA
21:10:39 <Phantom_Hoover> The happiest five seconds of my life.
21:13:41 <Ngevd> I may create a cellular automaton
21:16:29 <elliott> pikhq: Actually I might be able to omit /usr entirely...
21:17:14 <elliott> If everything is done per-user.
21:17:26 <elliott> Although I suppose mounting the union to /usr is nicer than ~/.blah.
21:17:34 <Ngevd> Hang on, I already HAVE created a cellular automaton
21:17:48 <evincar> Ngevd: Cool, your work is done. Have a beer.
21:18:07 <Ngevd> I just need to right it down
21:18:23 * elliott wrongs it up.
21:18:53 <Vorpal> pikhq, there?
21:18:55 <Ngevd> Oh no!
21:19:08 <Ngevd> Now I need to right it down even further
21:19:28 <Ngevd> I think it may become my first esolang not to be Turing-Complete!
21:19:34 <Ngevd> Unless Numberwang isn't Turing-Complete
21:19:48 <Ngevd> I suspect Numberwang may be harder to program in than Malbolge
21:20:16 <olsner> numberwang the game show? or is there an esolang with the name numberwang too?
21:20:33 <Ngevd> Two esolangs, actually
21:20:40 <Ngevd> One of which sucks
21:21:40 <Ngevd> The other of which is a brainfuck derivaitve
21:23:59 * pikhq is here
21:24:41 <pikhq> elliott: I kinda dislike /usr/, though. Admittedly, how you're using it is *much* better than most uses.
21:24:47 <pikhq> Namely, it makes *any sense at all*.
21:25:32 <elliott> pikhq: The alternative is making / a unionfs.
21:25:36 <elliott> Which, just... no.
21:25:41 <pikhq> True.
21:25:47 <Phantom_Hoover> <Ngevd> I may create a cellular automaton
21:25:48 <Phantom_Hoover> Oh god.
21:26:16 <Phantom_Hoover> I remember when elliott tried to create a CA that had relativity despite knowing nothing about either.
21:26:33 <elliott> IT WAS GREAT
21:26:38 <pikhq> Relativity in a CA?
21:26:43 <pikhq> That would be really strange.
21:26:46 <pikhq> Awesome, but strange.
21:26:57 <Phantom_Hoover> Not least because the Lorentz transformation is continuous.
21:27:06 <elliott> Didn't that Mark guy already do it.
21:27:07 <Phantom_Hoover> So... hmm.
21:27:15 <elliott> The Wolfram guy?
21:27:18 <elliott> Phantom_Hoover linked me to a thesis.
21:27:27 <pikhq> And I'm pretty sure that not having global time references would fuck up CAs.
21:27:41 <Phantom_Hoover> elliott, yeah, by setting v=c at all times so that it doesn't require non-integral transforms.
21:27:41 <Vorpal> pikhq, ah hi! tup question
21:27:52 <elliott> Phantom_Hoover: Heh.
21:27:56 <pikhq> Si?
21:27:58 <elliott> Phantom_Hoover: What did that end up with?
21:28:04 <elliott> pikhq: I wonder if I can make /etc be /usr/etc instead :-)
21:28:17 <Phantom_Hoover> elliott, photons moving around at c in 1D.
21:28:30 <elliott> Phantom_Hoover: Exciting./
21:28:31 <pikhq> elliott: Only thing barring you ought to be moronically hard-coded paths.
21:28:35 <elliott> s/\///
21:28:36 <Phantom_Hoover> It simulated diffusion, and was terrible.
21:28:41 <Vorpal> pikhq, lets say I have multiple build configurations. Like different compilers, different options or whatever. Any way to handle that with one source tree in tup? Preferably a single tup upd to update all of them
21:28:44 <elliott> pikhq: It's probbly not a good idea, anyway.
21:28:55 <Phantom_Hoover> The magnetisation and entropy ones were good, though.
21:28:57 <elliott> pikhq: BTW, Fedora are working on unifying /bin, /sbin, /usr/bin and /usr/sbin into /usr/bin.
21:29:00 <pikhq> Vorpal: Nothing easy *at present*.
21:29:09 <Vorpal> pikhq, ah okay. So there are plans?
21:29:14 <elliott> Vorpal: Variants.
21:29:19 <Vorpal> elliott, hm?
21:29:20 <elliott> It's the next planned big feature.
21:29:23 <Vorpal> ah
21:29:23 <pikhq> elliott: So close, and yet so far.
21:29:24 <Vorpal> nice
21:29:25 <elliott> Also allows debug builds.
21:29:31 <Vorpal> well yes
21:29:38 <Vorpal> debug vs optimised would be nice indeed
21:29:42 <elliott> pikhq: Shrug, I think it's decent enough, because /usr contains stuff that can be shared.
21:29:46 <elliott> pikhq: Stuff like /etc and /var can't be.
21:29:52 <elliott> So if you unify those, /usr gains actual semantics.
21:30:22 <pikhq> I still feel like it'd be better to lose /usr. But whatever.
21:30:39 <Vorpal> elliott, they still need /bin/sh. Because so many things would break without it. Anyway I thing that binfmt_misc might never even get stuff that starts with #!
21:30:43 <Vorpal> not certain about that
21:31:01 <pikhq> Vorpal: /bin/ will probably be a symlink to /usr/bin
21:31:04 <Vorpal> ah
21:31:05 <Vorpal> that works
21:31:19 <elliott> Vorpal: (a) They're doing symlinks, but I don't think there'd be as much breakage as you expect.
21:31:30 <elliott> Vorpal: (b) ISTR testing it and it worked.
21:31:49 <elliott> pikhq: It's also nice in that with that unification, /usr can be mounted read-only.
21:31:50 <pikhq> Vorpal: binfmt_misc goes before #!, IIRC.
21:31:58 <elliott> pikhq: Whereas things like /var can't.
21:31:58 <Vorpal> pikhq, ah good
21:32:10 <elliott> So, it does have some semantics as a whole. *shrug*
21:32:16 <elliott> Having both /bin and /usr/bin is criminally stupid, though.
21:32:16 <pikhq> elliott: Oh, so they're giving /usr actual semantics?
21:32:27 <Ngevd> For a 6-state automaton using the Von Neumann neighbourhood, this is surprisingly tedious
21:32:28 <pikhq> "Things that can be shared and needn't be written to in normal operation"?
21:32:36 <elliott> pikhq: Basically, "subset of distribution".
21:32:41 <elliott> "Unix system resources" and all that.
21:32:50 <pikhq> Well, that's at least not devoid of a point.
21:32:51 <Vorpal> elliott, it makes sense for boot stuff, when /usr is separate. I know that is not so popular these days
21:32:58 <elliott> Vorpal: Nope
21:33:05 <elliott> Vorpal: That doesn't work nowadays
21:33:08 <Vorpal> elliott, well there is initramfs to mount /usr I guess
21:33:13 <elliott> Because of udev, primarily
21:33:17 <Vorpal> elliott, it still works on arch. barely.
21:33:29 <pikhq> Arch probably takes extra effort to make it work.
21:33:30 <elliott> Vorpal: Except that the failures it causes are mostly silent
21:33:33 <elliott> So you can't really know at all :-)
21:33:41 <elliott> But yeah, we have initramfs so it's basically pointless nowadays.
21:33:49 <Vorpal> elliott, it causes about 4 udev rules to fail, and no visible side effects from them
21:34:00 <elliott> How reassuring!
21:34:03 <Vorpal> elliott, anyway it is trivial to solve this from initramfs. Instead of mounting just /, mount / and /usr
21:34:10 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:34:12 <Vorpal> that provides backward compat
21:34:12 <elliott> Yes, obviously.
21:35:12 <Vorpal> elliott, I'm going to write my own initramfs to do this. Should be trivial, throw in busybox, a few helper tools for raid, lvm and mounting as required, then write /init to mount / and /usr
21:35:24 <Vorpal> I mean, it mostly works without initramfs for me currently
21:35:43 <Vorpal> so unless having an initramfs disable some sort of fallback code in the kernel, it should be trivial
21:35:45 <pikhq> elliott: Hmm. Is Fedora also knocking out /lib?
21:35:59 <Vorpal> I would assume so
21:36:01 <pikhq> (modulo ld.so?)
21:36:03 <elliott> pikhq: That isn't in the specific plan I read, but they might be.
21:36:12 <Vorpal> that is going to break a lot
21:36:17 <pikhq> Vorpal: Not really.
21:36:21 <elliott> Vorpal: With a symlink?
21:36:27 <Vorpal> elliott, well okay, that solves it
21:36:28 <elliott> Even without, it wouldn't break much if you kept ld.so.
21:36:33 <pikhq> Vorpal: The only hard-coded library path, in general, is ld.so.
21:36:34 <elliott> Note that Nix doesn't even have /lib/ld.so.
21:36:38 <elliott> That's why they have elfpatch :P
21:36:51 <Vorpal> elliott, so a binary from a different system won't even run on nixos?
21:36:57 <elliott> That's why they have elfpatch :P
21:36:59 <Vorpal> hm
21:37:05 <Vorpal> will have to check that out
21:37:13 <elliott> It safely rewrites the dynamic linker and RPATH.
21:37:16 <elliott> Of an ELF.
21:37:46 <Vorpal> elliott iirc it is quite hard to add RPATH unless there already is one there
21:37:56 <Vorpal> I'm NOT going to switch unless nwn and so on work flawlessly
21:38:09 <elliott> Vorpal: It handles growing the ELF; and nobody cares what you switch to.
21:38:15 <elliott> Also, chroots exist.
21:38:59 <Vorpal> I feel cfunge is ready to go autoconf (this will require replacing a lot of custom cmake code, like checking for warning flags and what not)+tup once variants are supported
21:39:23 <elliott> cfunge hasn't even seen a release for three years, to my knowledge.
21:39:41 <Vorpal> elliott, nor has tup. It is fetch from vcs now
21:40:30 <elliott> Meanwhile, I'm thinking about using a zipper for shiro's fungespace.
21:41:12 <Vorpal> elliott, hm interesting
21:41:25 <Vorpal> elliott, which package on nixos is elfpatch in
21:41:38 <elliott> http://nixos.org/patchelf.html
21:41:46 <elliott> But I would presume "patchelf".
21:41:54 <Vorpal> ah you said elfpatch above
21:41:55 <Vorpal> not patchelf
21:42:07 <Ngevd> Is there a tool where you can give it some examples of what a cellular automaton does and it tries to figure it out?
21:43:31 -!- wareya has joined.
21:43:54 <elliott> Ngevd: a brain
21:44:11 -!- wareya has left.
21:44:33 <Ngevd> elliott, where can I get one?
21:44:54 <elliott> Try having kids.
21:45:22 <Ngevd> Asexual, remember
21:45:39 <Ngevd> I'll have to adopt
21:46:16 <elliott> Yes that was the: joke.
21:46:25 <elliott> Where did PH go.
21:46:32 <Ngevd> I presume bed
21:46:43 <Ngevd> I've found a bit where I don't know what would happen...
21:47:19 -!- Phantom_Hoover has joined.
21:49:30 <Ngevd> Okay, my solution makes the initial state "X" in a field of " " stable.
21:49:37 <Ngevd> Ends up in a four-tick cycle
21:50:43 <Ngevd> Okay, this cellular automaton is pretty lame
21:50:49 <Ngevd> No spaceships, no guns
21:51:05 <Ngevd> No steamboats
21:51:58 <elliott> You can't know that.
21:53:06 <Ngevd> No character makes more life than is needed to create it
21:53:39 <Ngevd> There are cases where life can be destroyed
21:53:54 <elliott> fair enough
21:54:06 <Ngevd> So, I think I /can/ know that
21:54:19 <Ngevd> The spaceship one is just a conjecture
21:54:21 <elliott> I thought you just tried a few configurations and decided that :P
21:55:44 <Ngevd> Is Conway's game of life Turing Complete when on a hyperbolic plane?
21:59:19 <Ngevd> I'm going for "Probably"
22:08:58 -!- wareya has joined.
22:09:02 -!- wareya has left.
22:11:57 <elliott> pikhq: Wait have I even told you about the best part of my Kitten design YOU ARE SO MISSING OUT
22:14:41 <Ngevd> I think I may have a finite Morphy number
22:19:47 -!- wareya has joined.
22:19:58 -!- wareya has left.
22:20:00 <Ngevd> I just did a game of Q20, trying for "Befunge"
22:20:03 <Ngevd> It got "Email"
22:22:44 <Ngevd> Got Chess set in 18 questions
22:23:36 <Vorpal> Ngevd, Q20?
22:23:42 <Ngevd> 20q.net
22:24:54 <Vorpal> ah
22:25:07 <pikhq> elliott: I don't think so.
22:25:26 <elliott> pikhq: The package manager is the service manager.
22:25:31 <pikhq> Ah, right.
22:25:42 <elliott> Wait did I tell you that.
22:25:46 <elliott> I so don't remember telling you that.
22:25:48 <elliott> Because it is the best idea.
22:25:53 <pikhq> You talked about it rather a lot.
22:25:57 <elliott> DAMN
22:26:00 <elliott> I gotta get something new
22:26:10 <elliott> Did I mention I was considering making the package manager teh build system too???
22:26:21 <Ngevd> What's Kitten?
22:26:24 <pikhq> No, but it seems only natural if you're going to do things right.
22:26:39 <elliott> Ngevd: http://www.google.co.uk/search?gcx=w&q=kitten&um=1&ie=UTF-8&hl=en&tbm=isch&source=og&sa=N&tab=wi&biw=1366&bih=675&sei=%208XGwTujlBMfHsgbSzOh_
22:27:54 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]).
22:29:37 <Ngevd> Kitten would get on with friendship mouse, methinks
22:35:09 -!- Madoka-Kaname has changed nick to Lymia.
22:35:09 <Ngevd> I think I may have a lower than average Morphy number
22:36:39 <Ngevd> Lymia... sounds oddly familiar
22:37:30 <Phantom_Hoover> Morphy number
22:37:48 <Phantom_Hoover> Ngevd, Lymia was what she was called originally.
22:37:52 <Ngevd> Oooh
22:38:03 <Ngevd> A Morphy number is a bit like a Bacon number, but with Chess
22:38:07 <Phantom_Hoover> Ah.
22:38:29 <Ngevd> But it's to someone who lived in the 1800's
22:38:39 <Ngevd> So people generally have bigger Morphy numbers
22:39:09 <elliott> What they should do with these is, whenever 0 dies, everyone's number decreases by one.
22:39:19 <elliott> That'd be more sustainable :p
22:39:48 <ais523\unfoog> I played an IM at chess once
22:39:52 <ais523\unfoog> I lost really badly, ofc
22:40:21 <ais523\unfoog> but it probably means I have a reasonable Morphy number
22:40:29 <Ngevd> But my uncle taught someone how to play chess, who ended up being really good
22:40:31 <ais523\unfoog> as IMs and GMs have a tendency to all play each other
22:41:00 <Ngevd> I think he ended up being Australia's second Grand Master or something
22:41:31 <Ngevd> So, maybe in terms of chess, I have a low ais523 number
22:44:29 <Ngevd> I wonder how high my cpressey number is
22:44:48 <Ngevd> In terms of esolangs collaborated on
22:45:10 <Phantom_Hoover> Infinity.
22:45:19 <Phantom_Hoover> (Have you collaborated with anyone?)
22:45:32 <Ngevd> Sort of not really zzo38
22:45:51 <Phantom_Hoover> I don't think one can be said to collaborate with zzo.
22:46:30 <Ngevd> There needs to be more esoteric collaborations
22:48:23 <Ngevd> oerjan helped a lot with Numberwang
22:51:32 -!- centrinia has joined.
22:51:52 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:52:12 * Phantom_Hoover → sleep
22:52:13 -!- Phantom_Hoover has quit (Quit: Leaving).
22:53:57 <Ngevd> Hello centrinia
22:54:07 <centrinia> Hello Ngevd.
22:54:26 <ais523\unfoog> hi
22:54:28 <ais523\unfoog> `welcome
22:54:30 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found
22:54:36 <ais523\unfoog> there, that's a great welcome
22:54:38 <ais523\unfoog> `?welcome
22:54:40 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found
22:54:57 <ais523\unfoog> `? welcome
22:55:00 <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
22:55:09 <centrinia> Thanks. :)
22:55:21 <elliott> let's just do that to centrinia every time they come in
22:55:28 <ais523\unfoog> typos included?
22:55:30 <elliott> yes!
22:55:34 <elliott> it's becoming tradition
22:55:47 <ais523\unfoog> how many times has it happened?
22:55:49 <ais523\unfoog> more than 1?
22:56:01 <elliott> well, i think i messed it up yesterday too
22:56:08 <elliott> might be wrong
22:56:40 <Ngevd> With a very loose definition of "collaborated", I have a Pressey number of 3, I think
22:57:35 <Ngevd> I collaborated with rjan Johansen on Numberwang
22:57:54 <Ngevd> rjan Johansen collaborated with Ben Olmstead on Malbolge Unshackled
22:58:03 <elliott> FSVO collaboration
22:58:14 <coppro> Ngevd: you poor man
22:58:35 <Ngevd> Ben Olmstead collaborated with Chris Pressey on Wierd
22:58:44 <Ngevd> Okay, only the last of those really counts
23:00:43 <ais523\unfoog> hmm, I don't really have many esolang collaborations, I'm more of a solo esolanger
23:00:49 <Ngevd> Also, "FSVO"?
23:00:53 <Ngevd> Oh yes
23:01:30 <Ngevd> <Ngevd> With a very loose definition of "collaborated"
23:02:40 <oklopol> oh i forgot to mention, my erds number is now 4
23:03:03 <ais523\unfoog> oklopol: wow! do you know the chain?
23:03:26 <oklopol> me, jarkko kari, christopher morre, leonard j schulman, erds
23:03:32 <oklopol> *moore
23:03:46 -!- pikhq_ has joined.
23:04:06 -!- pikhq has quit (Ping timeout: 258 seconds).
23:04:09 <oklopol> i actually solved some of moore's open problems at some point so maybe he'd be interested in collaborating
23:04:25 <oklopol> just because i'd have 3-
23:04:27 <oklopol> *.
23:05:20 <elliott> oklopol: hope you get to 0 someday
23:05:49 <elliott> (you have to exhume erdős' grave, then use alchemical voodoo to merge his spirit and corpse with yours)
23:06:08 <oklopol> oh hmm i guess technically i'll have an erds number on 21., it's http://www.springer.com/computer/theoretical+computer+science/book/978-3-642-24896-2
23:06:09 <Ngevd> "alchemical voodoo"?
23:06:11 <elliott> (this has only been done three times in history, each time being swiftly followed by the murder of the mathematician involved)
23:06:52 <elliott> Gregor: Ping :-P
23:06:56 <oklopol> they don't even mention my name anywhere in there, fuckers
23:07:26 <Ngevd> (BY THE MATHS POLICE!!!!)
23:07:49 <Ngevd> :(
23:08:50 <Ngevd> I still think there should be more esolang collaborations
23:08:54 <Ngevd> Who wants a Pressey number below 5?
23:09:12 <oklopol> i'm fine with an oklopol number of 0
23:10:49 <ais523\unfoog> I have an oklopol number of 1
23:11:05 <oklopol> which one are you counting
23:11:10 <ais523\unfoog> Clue (oklopol version)
23:11:16 <oklopol> ah yes
23:11:22 <oklopol> certainly
23:11:58 <oklopol> but even better, that means i have wolfram number 2
23:12:38 <elliott> oklopol: no no no, you mean gamma
23:12:53 <elliott> wolfram alpha is actually just wolfram himself chained to a computer
23:13:07 <elliott> ais523\unfoog: wait, how was that a collaboration?
23:13:09 <elliott> moving the page? :P
23:13:12 <ais523\unfoog> hmm, the only collaboration with Wolfram /himself/ that I've done is pointing out a bug in his proof for the 2,5, and fixing it
23:13:18 <oklopol> elliott: pm stuff
23:13:19 <ais523\unfoog> elliott: we discussed it in PM a lot
23:13:24 -!- Ngevd has quit (Ping timeout: 255 seconds).
23:13:24 <elliott> ah
23:13:37 <elliott> that must be why it sucked so much before i got to it OH BURRRRRRN
23:13:43 <elliott> thank you all yr. welcome
23:13:45 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
23:13:49 <elliott> i'm here all week
23:14:48 <ais523\unfoog> Underload is going to be my best esolang ever, isn't it :(
23:15:07 <elliott> ais523\unfoog: most likely.
23:15:12 <elliott> ais523\unfoog: you will spend the rest of your life trying to surpass it.
23:15:29 <elliott> on your deathbed people will offer comfort. no, no, feather "failed prototype version" was very good.
23:15:31 <elliott> but they lie.
23:15:31 * oklopol resists making a feather joke
23:15:32 <elliott> it's all lies.
23:15:34 <elliott> :'(
23:15:40 <Gregor> elliott: ...?
23:16:00 <ais523\unfoog> oklopol: I think all the good feather jokes have been done
23:16:00 <oklopol> Gregor: hi Gregor
23:16:21 <ais523\unfoog> feather <<= /dev/null
23:16:23 * oklopol wonders if that's a feather joke
23:16:26 <ais523\unfoog> there, that got rid of it
23:16:32 <elliott> Gregor: Re cunionfs:
23:16:32 <ais523\unfoog> or would, if I had feather working
23:16:32 <elliott> 20:28:27: <elliott> Gregor: I /think/ I need a way to rewrite the list of union branches while a process runs (i.e. not env-var-based).
23:16:32 <elliott> 20:28:46: <elliott> Gregor: Because when a package is installed, the user's session should see it as part of the hierarchy without a reboot :P
23:16:32 <elliott> 20:29:29: <elliott> Since I have per-user package installations, I think the simplest way is just to let me say, I dunno, CUNION_BRANCHES_FROM_FILE=/some/path, and that's read whenever the list of branches is required. But it would be nice if it only re-read the list of branches when I told it they changed, because reading them every FS operation sounds slooow.
23:17:15 <Gregor> Yeah, I had considered ways of communicating changes at runtime. I was thinking about a sysfs-esque pseudofile.
23:17:49 <elliott> Gregor: Right. The problem with having one file per process is that I'd have to write to hundreds of fakefiles /atomically/.
23:18:08 <elliott> Which is impossible :P
23:18:43 <elliott> Gregor: I guess a simple way to do it is to start most processes set to inherit the branches from their parent?
23:18:59 <elliott> Then I'd just have to rewrite the branch list of their login shell or whatever, which could be done atomically.
23:19:09 <elliott> Just wondering about ways to do it.
23:19:43 <Gregor> My thought was basically just replacing the way the env var works with the pseudofile. If you don't touch it, you inherit it from your parent, otherwise you can change it at any time.
23:19:48 <Gregor> That's the UNIX way, after all.
23:20:51 <elliott> Gregor: I thought the inheritance was done by just inheriting the env var at startup time in the current thing.
23:20:51 <elliott> I was thinking the file would contain either "inherit" or a list of branches, and start at "inherit" unless started in some special way. But yeah, whatever works.
23:21:05 <elliott> As long as I can replace the branches of a process tree atomically :P
23:21:17 <Gregor> Well, remember the pseudofile is a PSEUDO-file. It doesn't have file semantics.
23:21:25 <elliott> Right.
23:21:52 <elliott> Gregor: I know aufs does stuff in /sys/fs/aufs/<some identifier for the union>, I think.
23:23:18 <elliott> Gregor: Anyway, yeah, it would be super-great and I'm willing to help out however but I'm probably limited by having no experience with kernel modules at all :P
23:24:45 <elliott> Gregor: Out of curiosity, how would you start a process with a different branch set with that model? Would it be sourced from an env var if present (defaulting to inherit) to start with?
23:27:33 <Gregor> I would say you'd have to fork, then change the file, then exec.
23:27:43 -!- copumpkin has joined.
23:27:48 <Gregor> I'd like to keep it as simple as possible without making security impossible :P
23:28:14 <elliott> Right, that'd be reasonable.
23:29:37 * elliott doesn't actually know how much flexibility you have with files in Linux.
23:29:44 <elliott> Would it just be a case of "changes only take effect on close()"?
23:30:31 -!- sllide has quit (Ping timeout: 276 seconds).
23:30:51 <Gregor> Yeah, otherwise it would be really difficult to know when you care or not. Or it could be exposed as a character device instead of a block device and be per-line or something.
23:31:51 <ais523\unfoog> oh, wow, it's a binary day
23:32:46 <Gregor> ais523\unfoog: 2 is not a binary digit and it won't be a binary for 7,989 years.
23:32:51 <Gregor> *a binary day
23:33:11 <pikhq_> Gregor: Lazy people use 2-digit years.
23:33:12 <ais523\unfoog> Gregor: isn't the century/millennium normally omitted?
23:33:18 <elliott> Gregor: Per-line breaks paths with \n :)
23:33:25 * elliott would just NUL-separate it.
23:33:25 <pikhq_> 01-11-11 :)
23:33:31 <ais523\unfoog> otherwise, binary days aren't likely to happen ever because binary wasn't invented in 1111 and probably won't be in use by 10000
23:33:46 <elliott> NUL-terminate, rather.
23:34:08 <elliott> ais523\unfoog: weird definition of probably, also of happen
23:34:10 <pikhq_> ais523\unfoog: "Probably"? I'd say that the year 10,000 is too far off for us to even say that much.
23:34:19 <Gregor> elliott: Either way, I think enact-on-close makes sense, though I wonder how it interacts with fopen/fclose (probably just fine)
23:34:25 <oklopol> we will be using unary
23:34:29 <pikhq_> I'd go with "and we can't even make guesses about 10,000"
23:34:32 <elliott> Gregor: Yeah, it seems reasonable.
23:34:49 <elliott> Gregor: I'm just super-paranoid about atomicity wrt inheriting from the parent process, but I guess it'll all work out fine.
23:35:04 <elliott> (As opposed to my only moderate paranoia about performance :P)
23:35:23 <Gregor> elliott: It just has to be atomic w.r.t. exec ...
23:35:44 <elliott> Gregor: No. Consider mutating a parent process.
23:35:48 <elliott> The child process has to inherit those changes.
23:39:31 <elliott> Gregor: Or were you intending inheritance to only inherit from the values present at fork-time?
23:41:21 <Gregor> Uhhhhhhh, only at fork time.
23:41:34 <Gregor> Good lawd, I'm not trying to communicate some whole hideous tree here ...
23:41:46 <Gregor> I was going to have one global master, the per-process.
23:41:50 <Gregor> Erm
23:41:53 <Gregor> I was going to have one global master, then per-process.
23:42:48 <elliott> Gregor: The problem is, like I said, that I need atomic updates...
23:43:30 <elliott> Gregor: The user's login shell has 10 child processes in a tree; one of them has its own branch list, but the rest are inherited. I need to update the login shell's branch list /and all its inheriting childrens' branch lists/ atomically.
23:44:06 <Gregor> I think your process-tree model is making things needlessly complicated.
23:44:14 <Gregor> Two ideas:
23:45:14 <Gregor> 1) You have a global configuration, per-user configuration, and per-process configuration. Per-process configuration is inherited as described, global and per-user are both inherited atomically when the relevant configurations are changed (it doesn't have to be particularly atomic to guarantee these semantics, it just has to invalidate a bunch of caches).
23:45:49 <elliott> Hmm, what if I had the login shell's union list be /some/other/union
23:45:54 <elliott> Had the rest inherit from that
23:45:56 <Gregor> 2) Per-process configuration, where entries can be paths /or/ some way to specify inheritance.
23:45:56 -!- ais523\unfoog has quit (Remote host closed the connection).
23:45:58 <elliott> And just modified /some/other/union's branch list
23:46:07 <Gregor> Oh, that's interesting.
23:46:12 <Gregor> 3) What you just said :P
23:46:20 <elliott> Gregor: (2) seems nicer to me than (1), though; it's inherently more flexible :P
23:46:30 <elliott> Hmm
23:46:35 <Gregor> (3) seems nicer to me than (2), as it fits the model better.
23:46:51 <elliott> Gregor: Actually, (4): Instead of a branch list, /every/ process just has a pointer to a branch list.
23:46:57 <elliott> The branch list is an atomically-modifiable pseudofile.
23:47:06 <elliott> That gives (3) without duplicating mounts all over the place.
23:47:21 <Gregor> But it doesn't give you inheritance if you also have changes.
23:47:23 <elliott> And the pointer is inherited, etc.
23:47:30 <elliott> Gregor: Yes it does: you just modify the branch list.
23:47:34 <elliott> Everything pointing to it gets the updates.
23:47:54 <Gregor> I mean this:
23:48:27 <Gregor> B is a child of A. B adds /foo to its branch list, but it doesn't want to change A's, so it just makes a new one and sets it to the content of the original plus /foo. Now A changes its branch list, but B can't see the change.
23:48:47 -!- Vorpal has quit (Ping timeout: 240 seconds).
23:49:18 <elliott> Do you have a usecase for that? :P ...oh, I just thought of one: you say:
23:49:27 <elliott> $ with 'gcc == 3.*' sh
23:49:30 <elliott> [subsh]$ do-thing
23:49:33 <elliott> done
23:49:39 <elliott> [at this point, some other library is updated in the host system]
23:49:45 <elliott> [subsh]$ do-another-thing
23:49:51 <elliott> [...but do-another-thing is still using the old version! this sucks]
23:49:58 <elliott> Gregor: So yeah, I agree that's desirable.
23:50:02 <Gregor> Yeah, I don't think it's such an unimaginable situation, and (2) and (3) both give you that.
23:50:10 <elliott> Gregor: BUT, B also has to be able to /remove/.
23:50:19 <elliott> Because the shell from which "with" is run has its own gcc in scope.
23:50:24 <Gregor> Yes, and I'm not sure how to handle that in any of these semantics.
23:50:34 <elliott> So the subsh has to have "remove <old-gcc>, add <new-gcc>", but what if you upgrade the outside gcc while it's still running?
23:50:53 <Gregor> Bleh ... remove by pattern match? *brain axplote*
23:51:38 <elliott> Gregor: Hideous :P
23:51:50 <elliott> Gregor: What I /really/ need is to have my package manager calculate the branch lists :P
23:52:09 <elliott> Gregor: But, ehh... OK, how about this: Every process has an explicit, mutable, no-inheritance list of branches.
23:52:24 -!- tiffany has quit (Quit: Leaving).
23:52:27 <elliott> Gregor: /But/, instead of updating on close(), you "queue up" PIDs to update the branch lists of in another file, then close that.
23:52:30 <elliott> The updates happen atomically.
23:52:44 <elliott> That way, I can just recalculate the branches for all the constraints and the like, and update 'em atomically.
23:57:07 <elliott> Gregor: (I'm aware this is kind of ugly :P)
23:57:22 <elliott> Gregor: Oh, wait, it can be ten times simpler than that... just have a file where you open, write a pid, write a list of branches, repeat, and it commits on close().
23:59:03 <Gregor> That makes inheritance with changes possible, but massively difficult ...
23:59:22 <elliott> Gregor: No? The whole point is that an external package manager is going to be calculating which directories to add.
23:59:32 <elliott> Gregor: So if you do "with 'gcc == 3.*' ...", it'll store that that process wants gcc == 3.*.
23:59:46 <elliott> Whenever the global package DB is updated, it just calculates packages + constraint --> branches again and writes 'em all out.
23:59:53 <elliott> It already has to do that logic in the first place.
2011-11-02
00:03:06 <elliott> Gregor: I mean, it's more work on whatever's driving cunionfs, but I think achieving the same without something this generic is basically impossible.
00:09:12 -!- pikhq has joined.
00:09:21 -!- pikhq_ has quit (Ping timeout: 248 seconds).
00:22:26 <pikhq> elliott: About how easy do you think creating a package is going to be with kitten? (please say trivial)
00:22:51 <elliott> pikhq: Like, three, four lines for a GNU package?
00:23:12 <elliott> Add another one to that if it's "GNU-ish" (autotools and the like) but not a GNU package (so you have to specify a tarball location).
00:23:20 <elliott> So yeah, trivial.
00:23:31 <pikhq> So, nothing obscene like ebuilds, or Debian. Good.
00:24:26 <elliott> I mean, it'll get longer if you specify your own configuration options and the like (packages have configs in Kitten).
00:24:39 <elliott> And a little longer if there's a service.
00:24:55 <elliott> And /ideally/ if there's configuration you should expose that so it can all be done in a unified manner, but...
00:25:00 <elliott> Yeah, four lines for simple stuff.
00:35:16 <elliott> # For UML and non-PC, just ignore all options that don't apply (We are lazy).
00:35:16 <elliott> ignoreConfigErrors = (userModeLinux || stdenv.platform.name != "pc");
00:35:16 <elliott> Pro
00:46:59 -!- oerjan has joined.
00:55:38 <elliott> hi oerjan
00:55:44 <oerjan> hi elliott
00:58:03 <elliott> hi oerjan
00:59:03 <oerjan> hi elliott
00:59:19 -!- pikhq_ has joined.
00:59:24 <elliott> hi oerjan
00:59:29 -!- pikhq has quit (Ping timeout: 258 seconds).
00:59:39 <shachaf> hi oerjan
00:59:50 <elliott> no uyuo ruined it
01:00:00 <oerjan> hi shachaf
01:00:07 <shachaf> Bah, that uyuo.
01:00:22 <oerjan> such a spoilsport
01:03:17 <oerjan> the mezzacotta comic is ominous today.
01:07:16 <oklopol> hi shachaf
01:07:24 <shachaf> oklopol hi
01:07:36 <oklopol> elliott: hi
01:07:45 <elliott> hi
01:17:39 <shachaf> elliott wins
01:18:22 -!- Sgeo|web has joined.
01:26:00 <pikhq_> Man. There's organizations advocating the use of romaji or kana for Japanese writing exclusively.
01:26:13 <pikhq_> They themselves publish their material in standard Japanese script.
01:26:18 <pikhq_> FAIL
01:28:39 <oerjan> well if they published it in more than one form it would be ok...
01:29:12 <oerjan> it's hard to do marketing if the audience doesn't understand you :P
01:29:42 <pikhq_> Essentially every Japanese speaker can read romaji or kana.
01:30:18 <oerjan> as easily as standard format?
01:30:36 <pikhq_> Romaji is just the Latin alphabet, as used for romanization of Japanese, and kana is the phonetic script used in Japanese, in conjunction with Chinese characters.
01:31:09 <oerjan> or wouldn't be sort of like funetikal inglish, wer yu kan rid it but it is slow an awkward?
01:31:16 <oerjan> *it be
01:31:37 <pikhq_> It'd be slow and awkward like funetikal inglish, yes.
01:31:52 <pikhq_> For much the same reasons, in fact.
01:32:29 <oerjan> mhm
01:32:54 <oklopol> oh good point
01:32:58 <pikhq_> Except, of course, that romaji and kana are actually *taught* in public education, as knowledge of both are necessary for literacy. :)
01:33:27 <oklopol> i press half-
01:33:29 <oklopol> baked
01:33:36 <oklopol> then realize this is the best comic ever
01:33:37 <oklopol> http://www.mezzacotta.net/archive.php?date=1281-04-18&vote=3
01:34:16 <monqy> oh no you made me vote 3
01:34:42 <oklopol> i did?
01:34:58 <pikhq_> It also doesn't help that the current linguistic trends are in the *opposite* direction from what they advocate. Japanese is slowly but surely increasing the amount of kanji used. :)
01:35:07 <monqy> either that or it just said "thanks for helping us bake this comic"
01:35:10 <monqy> maybe it's just weird
01:35:21 <oklopol> oh lolol
01:35:37 <oklopol> yeah don't press that link ppl :D
01:35:38 <oerjan> better clip off the part from & on
01:35:54 <oklopol> http://www.mezzacotta.net/archive.php?date=1281-04-18 BETTER LINK
01:35:56 <oklopol> http://www.mezzacotta.net/archive.php?date=1281-04-18 BETTER LINK
01:35:56 <oklopol> http://www.mezzacotta.net/archive.php?date=1281-04-18 BETTER LINK
01:35:56 <oklopol> http://www.mezzacotta.net/archive.php?date=1281-04-18 BETTER LINK
01:36:02 <oklopol> JUST IN CASE
01:36:09 <oklopol> SOMEONE READS THE LOGS IN ORDER
01:36:42 <oerjan> i'll balance it out with a 2 >:)
01:36:58 <oklopol> nnnnnooooooooooooooooooooooooo
01:41:31 <oklopol> http://www.mezzacotta.net/archive.php?date=1748-04-04
01:43:57 <monqy> yes good
01:46:45 <oerjan> isn't that from the hall of fame, istr it or a similar one
01:47:56 <oerjan> indeed it is
01:57:56 * oerjan smells a monthly windows update check
02:08:27 -!- Lymia has quit (Remote host closed the connection).
02:17:47 <oerjan> hm or not
02:29:52 -!- Madoka-Kaname has joined.
02:29:52 -!- Madoka-Kaname has quit (Changing host).
02:29:52 -!- Madoka-Kaname has joined.
02:36:14 <Gregor> elliott: Please note that I also have no experience with kernel modules :P
02:42:20 <elliott> Gregor: Oh dear :P
02:42:54 <elliott> Gregor: That's especially worrying considering that unionfs and aufs are both large codebases :P
02:43:38 <elliott> Well.
02:43:41 <elliott> Not that large, but still.
02:46:15 <Gregor> Frankly I don't think it would be wise to start from an existing codebase. Dynamic per-process union is in some ways fundamentally different from static (or changeable only for all processes) per-system union ...
02:48:09 <elliott> Gregor: Oh yeah I totally agree
02:48:15 <elliott> Gregor: I'm just saying, hard task :P
02:48:26 <elliott> Gregor: OTOH it's likely that the existing solutions are filled with cruft and overcomplication.
02:48:34 <elliott> So it's probably not worth worrying too much about it :P
02:51:09 <elliott> But yeah, if you have any ideas for atomic branch-changing of multiple processes that'd be nice, since the only interfaces I can think of are kinda ugly...
02:56:26 * Gregor googles for "how to write a kernel module", because that's how he rolls.
02:58:19 -!- Darth_Cliche has joined.
02:59:49 <oerjan> it's the dark side of bad writing!
03:00:28 <elliott> Gregor: Doesn't the kernel come with docs on that :P
03:01:35 <Gregor> elliott: Yeah, and that was the first Google result!
03:01:50 <elliott> Gregor: You forgot to append "for dummies".
03:02:03 <elliott> I would buy "Linux Kernel Module Writing For Dummies".
03:02:50 <Gregor> X-D
03:03:10 <Gregor> I seem to recall once having a book titled The Idiot's Guide for Dummies.
03:03:28 <elliott> Brain Surgery for Dummies
03:03:52 <elliott> It's easier than when you're working on a smart person's brain.
03:06:13 <elliott> I was thinking that maybe outside package updates /shouldn't/ propagate into a "with <some other constraint>" context after all because the libblah version changing mid-build is not what you want. But I think that's wrong because, well, it's your own fault for upgrading while running a build outside of the system.
03:06:26 <elliott> So yeah, still needs more logic than a simple "this but with more directories" system.
03:16:17 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
03:20:54 -!- MDude has changed nick to MSleep.
03:37:31 -!- centrinia has quit (Quit: Leaving).
03:43:38 <elliott> pikhq_: There's no way to change gcc's default flags easily, right?
03:43:45 <elliott> At least I gather that modifying spec files is a huge pain
03:46:25 <pikhq_> Just spec files.
03:46:52 <pikhq_> Though it's actually not that hard to modify a spec file after the GCC build is done.
03:46:57 <pikhq_> It's just a text file.
03:47:55 <elliott> pikhq_: Hmm... where's it stored?
03:48:06 <oerjan> Gregor: What about The Complete Idiot's Guide to Dummies?
03:49:33 <oerjan> oh hm
03:50:01 <pikhq_> elliott: $prefix/lib/gcc/$tuple/$version/specs
03:50:17 <oerjan> http://www.amazon.co.uk/Complete-Idiots-Guide-Dummies-Stupidity/dp/1580081746
03:50:24 <elliott> pikhq_: ls: cannot access /usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/specs: No such file or directory
03:50:33 <pikhq_> By default, a spec file is not actually installed there, and gcc uses one that's compiled in; use -dumpspecs to get that.
03:50:42 <elliott> Ah.
03:50:43 <pikhq_> However, if the spec file *is* there gcc uses it instead.
03:50:48 <elliott> %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %{!fno-use-linker-plugin:%{flto|flto=*|fuse-linker-plugin: -plugin %(linker_plugin_file) -plugin-opt=%(lto_wrapper) -plugin-opt=-fresolution=%u.res %{!nostdlib:%{!nodefaultlibs:%:pass-through-libs(%(link_gcc_c_sequence))}} }} %{flto|flto=*:%<fcompare-debug*} %{flto} %{flto=*} %l %{pie:-pie} %X %{o*} %{e*} %{N} %{n} %{r} %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:
03:50:48 <elliott> %{!nostartfiles:%S}} %{static:} %{L*} %(mfwrap) %(link_libgcc) %o %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib) %{fsplit-stack: --wrap=pthread_create} %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}} %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}
03:50:53 <elliott> I...
03:51:08 <pikhq_> Okay, so it's a bit obtuse because they stick a lot of logic in it.
03:51:20 <oerjan> a paragon of readability
03:51:29 <pikhq_> Like, this is how they actually implement many of the flags.
03:51:44 <elliott> http://sprunge.us/IDUC
03:51:47 <elliott> It's... not too bad.
03:52:08 <elliott> pikhq_: How portable are the built-in files?
03:52:10 <elliott> One per architecture?
03:52:25 <elliott> Just wondering how I could /generically/ modify one in a portable package...
03:52:55 <pikhq_> elliott: The built-in spec file is basically a generic file with a few arch-specific bits filled in.
03:53:02 <elliott> Right.
03:53:15 <pikhq_> For instance, the path to the dynamic linker, and the m64/m32 logic.
03:53:38 <elliott> Is there a way to override the path to the dynamic linker at some stage /before/ mucking with spec files? :P
03:53:56 <pikhq_> Yes, but that's mucking with GCC source instead.
03:53:56 <elliott> I suppose that's a binutils thing too... (for ld(1))
03:54:08 <elliott> pikhq_: Suxx
03:54:19 <elliott> How do I do it for ld(1) :P
03:54:42 <pikhq_> ld(1) is ignorant of it.
03:55:39 <pikhq_> Its only knowledge of the dynamic linker comes from an argument to it.
03:56:04 <elliott> pikhq_: Huh, I thought it could link without specifying that...
03:56:27 <pikhq_> You *really* are not meant to call ld directly.
03:57:51 <elliott> OK, I guess I can make this work then.
03:58:07 <coppro> 23:55:52 < pikhq_> You *really* are not meant to call ld directly.
03:58:09 <coppro> what
03:58:28 <pikhq_> coppro: For general-purpose "building a normal program" use, I mean.
03:58:50 <pikhq_> Obviously, if you're doing, well, anything more complicated then you should.
03:59:31 <elliott> i like how coppro quoted something literally two lines up
03:59:54 <pikhq_> Probably the best example of a good time to use ld is building a kernel.
04:00:25 <pikhq_> Though I suppose you *could* go through the compiler frontend there, it's really acting as a giant no-op.
04:02:17 <elliott> coppro: Tell me clang has a better way to modify this shit than spec files
04:08:53 <Gregor> pikhq_: -ffreestanding, dawg
04:09:35 <pikhq_> Gregor: BAH
04:09:59 <elliott> Hmmm, I wonder if I am sold on Nix's runtime dependency model
04:10:44 <elliott> It doesn't have any false positives, but I'm not entirely convinced it has no false negatives either
04:12:13 <elliott> I solved the atomic branch change problem Gregor, you just need to write it as an @ module and you'll get atomicity FOR FREE :|
04:12:18 * elliott helpful
04:27:46 <coppro> elliott: I don't know what spec files are
04:27:49 <coppro> so I dunno
04:28:11 <elliott> coppro: How'd I build clang to use a different path to the dynamic linker
04:28:20 <elliott> Specs files are http://sprunge.us/IDUC :P
04:33:39 <coppro> elliott: oh, ok, not quite that bad I don't think
04:33:42 <coppro> but kinda bad
04:34:00 <coppro> I think Driver/Driver.cpp or DriverOpts or something is where that is processed
04:34:03 <coppro> it's all hardcoded
04:34:29 <elliott> coppro: well it's easy with gcc too if i patch the source :P
04:44:06 <elliott> pikhq_: Bah, I might need to make / a unionfs after all
04:45:20 -!- DCliche has joined.
04:47:28 -!- Sgeo|web has joined.
04:48:48 -!- Darth_Cliche has quit (Ping timeout: 260 seconds).
05:00:45 <elliott> "the C library function system() has a hard-coded reference to /bin/sh."
05:00:47 <elliott> glibc, friends. glibc.
05:02:13 <oerjan> so very glib, c
05:02:32 <Sgeo|web> Hey, who has libc.so ?
05:02:41 <oerjan> ssssssssssssh
05:02:48 <oerjan> we don't talk about that here
05:02:55 <elliott> hey Gregor ;D
05:03:50 <pikhq_> elliott: Hmm. I'm not sure what it could do other than be compiled with a reference to the shell.
05:04:02 <pikhq_> Admittedly, it should be a configuration option.
05:04:33 -!- Patashu has joined.
05:05:04 <Sgeo|web> What happened with libm.so, that's Gregor's right?
05:19:18 <Gregor> Nope, I have libdl.so.
05:20:18 -!- bd_ has quit (Ping timeout: 260 seconds).
05:20:23 -!- bd_ has joined.
05:46:17 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:02:28 <elliott> Yay, I think the Secret Project actually does help me immensely.
06:02:38 <elliott> This is worrying; I now depend on both ais523 and Gregor.
06:11:38 <elliott> oerjan: you should really look forward to the near future, wherein you get to deal with me implementing a lazy functional language from scratch
06:11:39 <elliott> >:D
06:12:02 <oerjan> i can help a lot with laziness, yes
06:12:49 <elliott> oh snap.e
06:14:03 <elliott> wow oerjan is snape my typoes lead to discoverieres
06:15:44 <elliott> man tcb passwords will fit so well with this system. so well.
06:17:12 <elliott> hmm! since nix is like a functional make, i wonder what a functional tup would look like... oh ... wait ... oh god
06:17:18 <elliott> pikhq_: tup is the upstart of build systems
06:18:40 <elliott> pikhq_ quick be mortified with me
06:18:59 <pikhq_> Oh. Dear.
06:19:22 <elliott> It is literally based on the events-over-dependencies model oh god tup cannot handle only building some targets.
06:19:40 <elliott> oerjan I need to get very, very drunk help me out here do you have alcohol in Trondheim I have booked a plane ticket.
06:20:33 <pikhq_> elliott: Actually, tup can handle only building some targets.
06:20:48 <elliott> pikhq_: How?
06:21:12 <pikhq_> I have no idea on the implementation details, but "tup upd foo" will only build foo and its dependencies.
06:21:37 <elliott> pikhq_: I suspect it marks what targets every target "contributes" to in the DB.
06:21:51 <elliott> Which is... just an emulation of the dependency model, fast only because it's cached.
06:23:13 <oerjan> elliott: sure, it's just ten times as expensive as in england, is all
06:23:32 <elliott> oerjan: oh don't worry. i won't be needing my money any more.
06:24:13 <oerjan> o kay
06:24:18 <elliott> @ask ais523 How does the Secret Project handle scheduling being non-deterministic?
06:24:18 <lambdabot> Consider it noted.
06:24:45 <elliott> @ask ais523 Also, what kind of incredibly rough time estimate would you give for an open-source release of working code?
06:24:46 <lambdabot> Consider it noted.
06:28:45 <elliott> oerjan: btw i am dead serious about looking forward to the near future. you are going to have so much fun.
06:29:12 <elliott> >:D >:D >:D> :D>:D> :D> :SD: S:A"|D: AS"|d;
06:30:21 <oerjan> zombie smilies
06:31:28 <elliott> noooo nixos-jfp-final.pdf is so short i have already read it all
06:31:34 <elliott> you betrayed me paper
06:31:58 <CakeProphet> elliott: http://thepiratebay.org/torrent/6554331/Papers_from_Philosophical_Transactions_of_the_Royal_Society__fro
06:32:01 <CakeProphet> have fun.
06:32:16 <elliott> too big........
06:32:48 <CakeProphet> CAN'T HAVE YOUR CAKE AND EAT IT WAIT WHAT THAT MAKES NO SENSE.
06:33:26 <elliott> http://content.yieldmanager.edgesuite.net/atoms/5a/10/ce/6b/5a10ce6be873ac8fc50583ea7bddb9.jpg ;; this ad..................
06:33:36 <elliott> GET YET GENETICALLY MODIFIED WOMEN WITHOUT THE ABILITY TO SAY "NO"
06:33:40 <elliott> s/YET/YER/
06:33:58 <CakeProphet> elliott: I'm sorry but my internet is adfree
06:34:07 <elliott> you're missing out on so much
06:34:11 <elliott> ads have become truly surreal lately
06:34:19 <CakeProphet> in fact, when I try to pull up that image in a tab by itself
06:34:24 <CakeProphet> adblock removes it.
06:34:27 <CakeProphet> so I clicked that
06:34:33 <elliott> it's trying to make your life worse.
06:34:35 <CakeProphet> and it turned into a blank tab. so I had to refresh rapidly to see it.
06:35:29 <CakeProphet> elliott: I don't know it's pretty nice. I go to websites and only see typical internet shit
06:35:45 <CakeProphet> instead of all this other, lower-quality internet shit around the top, bottom, and sides.
06:36:12 <CakeProphet> I kind of forgot that thepiratebay had ads, actually.
06:36:32 <CakeProphet> does facebook have ads?
06:36:54 <CakeProphet> a few.
06:37:41 <elliott> man, they're still trying to prosecute aaron swartz?
06:37:55 <CakeProphet> prose. cute.
06:38:02 <elliott> CakeProphet: ?
06:38:13 <CakeProphet> that's how I read prosecute after looking at it again.
06:38:35 <elliott> heh
06:39:11 <CakeProphet> Aaron Swartz is a heroic swashbuckler of the internet.
06:39:35 <elliott> you're thinking of guybrush threepwood
06:42:28 <CakeProphet> ...who?
06:42:40 <CakeProphet> Cake "too lazy to google" propoojweijwei2kker
06:43:17 <elliott> uh
06:43:33 <elliott> anyone who doesn't know who guybrush threepwood is lives a very sad life
06:43:39 <elliott> and needs to play the first two monkey island games
06:43:52 <CakeProphet> nah
06:43:56 <elliott> (third is decent, laters are crap)
06:44:01 * CakeProphet plays CALL OF DOOTY BLACK OP ZOMBIES FUCK YEAAAAAH
06:44:05 <elliott> CakeProphet: no. you _really_ need to.
06:44:07 <CakeProphet> also dwarf fortress.
06:44:24 <elliott> ron gilbert is judging you. tim schafer is judging you.
06:44:27 <elliott> feel their judgment.
06:44:38 <CakeProphet> ouch.
06:44:54 <elliott> i even heard a mutter from schafer. he thinks you probably haven't even played grim fandango. i don't think he likes you any more, CakeProphet/.
06:45:05 <CakeProphet> incidentally snake is the best game ever made.
06:45:09 <CakeProphet> but only with no walls.
06:45:15 <CakeProphet> and wraparound screen.
06:45:33 <CakeProphet> it's a fascinating and telling metaphor for hubris.
06:47:12 <CakeProphet> the walls ruin the game completely.
06:47:37 <CakeProphet> as it confines you. it's no longer just about your vainglorious lust for little square pixel foods.
06:48:01 <elliott> Seriously though anyone who hasn't played the first two Monkey Island games has lead an incomplete life.
06:50:52 <elliott> CakeProphet thinks I'm joking; I'm not joking.
06:52:50 <CakeProphet> elliott: did you play amazon trail?
06:52:57 <CakeProphet> that game was better.
06:53:13 <elliott> CakeProphet: I'm going to rip your limbs apart.
06:53:27 <elliott> RIP YWROUIER;SDF WEHT LIMBS FKGOP
06:54:06 <CakeProphet> The score largely consists of reggae, Caribbean and dub-inspired music.
06:54:23 * CakeProphet lights a blunt and plays some Monkey Island.
06:55:02 <elliott> oh, new homestuck. time to sleep.
06:55:16 <CakeProphet> wat
06:55:17 <elliott> CakeProphet: play the secret of monkey island for fuck's sake. download scummvm. you can find the thing on any site. get the cd version so you get the mt-32 score.
06:55:22 <elliott> do it.
06:55:35 <CakeProphet> I'll totally do that, howeve
06:55:35 <CakeProphet> r
06:55:42 <CakeProphet> I will not tell you anything about my gameplay experience.
06:58:49 -!- monqy has quit (Quit: hello).
07:00:19 -!- elliott has quit (Ping timeout: 276 seconds).
07:01:03 <CakeProphet> sometimes I feel like dedicating my whole life to the creation of perfect video games.
07:05:28 <CakeProphet> for example
07:05:35 <CakeProphet> Blind Psychic Kung Fu Master
07:05:43 <CakeProphet> in which you play a... blind psychic Kung Fu master.
07:06:07 <CakeProphet> you play the game entirely with audio cues.
07:06:52 <CakeProphet> you also have sound-based psychic senses that you can use, like sonar.
07:08:58 <CakeProphet> also a slow-motion power in which you fine-tune your highly trained kung fu master reflexes for a brief while.
07:09:58 <CakeProphet> also but there will be spectacular epic fight cutscenes.
07:10:07 <CakeProphet> with no graphics.
07:12:24 <CakeProphet> I guess there could be some kind of helpful visual interface.
07:12:31 <CakeProphet> but the idea would be that the entire game is playable by a blind person.
07:14:24 <Sgeo|web> CakeProphet: Epdeet
07:14:27 <Sgeo|web> Updoot
07:14:37 <Sgeo|web> NOW NOW NOW
07:15:26 <CakeProphet> wat
07:15:49 -!- GreaseMonkey has quit (Quit: The Other Game).
07:15:50 <CakeProphet> I'm just going to wait 5 years from now after he finishes the whole thing
07:15:57 <CakeProphet> and then just read/watch/play all of homestuck.
07:16:07 <Sgeo|web> Just. Watch. Now.
07:16:12 <Sgeo|web> Noooooooow
07:16:25 <CakeProphet> fine.
07:22:17 <CakeProphet> longest load screen ever.
07:29:01 <Sgeo|web> I assume you've seen it by now?
07:29:22 <Sgeo|web> Or do you mean as the loader of the intermission?
07:29:36 <Sgeo|web> (i.e. you're joking)
07:32:33 <CakeProphet> cascade
07:32:34 <Sgeo|web> CakeProphet: there's a weird bug when you click replay
07:32:38 <CakeProphet> no I haven't seen it.
07:32:55 <Sgeo|web> ...you haven't seen Cascade yet?
07:33:08 <Sgeo|web> Go watch that, then the first [S] of the intermission
07:33:35 <CakeProphet> ....I'm watching it right now, obviously.
07:33:38 <CakeProphet> as I just talked about it loading...
07:34:41 <CakeProphet> dude this Cascade thing must have taken forever to mak =.
07:36:05 -!- oerjan has quit (Quit: This thing needs a reboot).
07:43:14 -!- oerjan has joined.
07:48:54 <Sgeo|web> @tell elliott Homestuck update.
07:48:55 <lambdabot> Consider it noted.
07:49:43 <Sgeo|web> @tell Phantom_Hoover Homestuck update.
07:49:44 <lambdabot> Consider it noted.
07:50:19 <CakeProphet> Sgeo|web: I think elliott knows..
07:52:29 <Sgeo|web> Oh, I see it now
07:52:39 <Sgeo|web> Well, night all
08:12:36 -!- Ngevd has joined.
08:33:22 -!- copumpkin has quit (Ping timeout: 248 seconds).
08:33:53 -!- Ngevd has quit (Ping timeout: 248 seconds).
08:33:55 -!- copumpkin has joined.
08:58:16 -!- asw has joined.
09:22:22 -!- oerjan has quit (Quit: leaving).
09:40:10 -!- asw has quit (Quit: Leaving).
10:29:08 -!- Sgeo|web has quit (*.net *.split).
10:29:12 -!- Madoka-Kaname has quit (*.net *.split).
10:29:13 -!- FireFly has quit (*.net *.split).
10:29:15 -!- oklopol has quit (*.net *.split).
10:29:15 -!- Slereah_ has quit (*.net *.split).
10:29:15 -!- quintopia has quit (*.net *.split).
10:29:16 -!- variable has quit (*.net *.split).
10:29:16 -!- lifthrasiir has quit (*.net *.split).
10:29:18 -!- pikhq_ has quit (*.net *.split).
10:29:19 -!- Nisstyre has quit (*.net *.split).
10:29:19 -!- Zwaarddijk has quit (*.net *.split).
10:29:22 -!- yorick has quit (*.net *.split).
10:29:23 -!- twice11 has quit (*.net *.split).
10:29:24 -!- lambdabot has quit (*.net *.split).
10:29:25 -!- CakeProphet has quit (*.net *.split).
10:29:27 -!- Patashu has quit (*.net *.split).
10:29:29 -!- HackEgo has quit (*.net *.split).
10:29:31 -!- atehwa has quit (*.net *.split).
10:29:34 -!- EgoBot has quit (*.net *.split).
10:29:34 -!- shachaf has quit (*.net *.split).
10:29:35 -!- Deewiant has quit (*.net *.split).
10:29:35 -!- fungot has quit (*.net *.split).
10:29:35 -!- fizzie has quit (*.net *.split).
10:29:41 -!- coppro has quit (*.net *.split).
10:29:43 -!- chickenzilla has quit (*.net *.split).
10:29:44 -!- aloril has quit (*.net *.split).
10:29:47 -!- bd_ has quit (*.net *.split).
10:29:49 -!- MSleep has quit (*.net *.split).
10:29:49 -!- SimonRC has quit (*.net *.split).
10:29:50 -!- yiyus has quit (*.net *.split).
10:29:50 -!- ineiros has quit (*.net *.split).
10:29:50 -!- mycroftiv has quit (*.net *.split).
10:29:50 -!- rodgort has quit (*.net *.split).
10:29:52 -!- myndzi has quit (*.net *.split).
10:29:54 -!- mtve has quit (*.net *.split).
10:33:31 -!- glogbackup has joined.
10:33:32 -!- bd___ has joined.
10:33:32 -!- derrik has joined.
10:33:32 -!- Patashu has joined.
10:33:32 -!- Madoka-Kaname has joined.
10:33:32 -!- pikhq_ has joined.
10:33:32 -!- lambdabot has joined.
10:33:32 -!- Zwaarddijk has joined.
10:33:32 -!- atehwa has joined.
10:33:32 -!- oklopol has joined.
10:33:32 -!- CakeProphet has joined.
10:33:32 -!- Slereah_ has joined.
10:33:32 -!- coppro has joined.
10:33:32 -!- FireFly has joined.
10:33:32 -!- quintopia has joined.
10:33:32 -!- yorick has joined.
10:33:32 -!- variable has joined.
10:33:32 -!- EgoBot has joined.
10:33:32 -!- shachaf has joined.
10:33:32 -!- lifthrasiir has joined.
10:33:32 -!- chickenzilla has joined.
10:33:32 -!- fizzie has joined.
10:33:32 -!- fungot has joined.
10:33:32 -!- Deewiant has joined.
10:33:32 -!- HackEgo has joined.
10:33:32 -!- twice11 has joined.
10:33:35 -!- glogbackup has left.
10:33:40 -!- MSleep has joined.
10:33:40 -!- ineiros_ has joined.
10:33:40 -!- aloril has joined.
10:33:59 <CakeProphet> RIP freedom of the press
10:34:32 -!- mycroftiv has joined.
10:42:56 -!- rodgort has joined.
10:52:17 -!- SimonRC has joined.
10:52:17 -!- myndzi has joined.
10:52:17 -!- yiyus has joined.
11:16:12 -!- sebbu2 has changed nick to sebbu.
11:16:51 <FireFly> Are we? :\
11:19:03 <CakeProphet> are we what?
11:19:05 <CakeProphet> who is we?
11:19:21 <CakeProphet> oh.
11:19:50 <CakeProphet> well, no. the extradition appeal failed, so he's going to Sweden for questioning and formal charging.
11:20:51 <CakeProphet> but the US may try to extradite him so that they can prosecute him. Though, I believe it would be a difficult case for them.
11:22:20 <CakeProphet> I find it strange that he's been under arrest this entire time without any formal charges.
11:23:53 <CakeProphet> but that's just how the Swedish legal system works I guess. they don't issue formal charges until after questioning, or something.
11:23:54 -!- myndzi\ has joined.
11:26:49 -!- myndzi has quit (Ping timeout: 252 seconds).
11:33:27 <CakeProphet> > var "Hello, World!\n"
11:33:28 <lambdabot> Hello, World!
11:34:10 <CakeProphet> > fix (fun "I told you about the stairs, bro") :: Expr
11:34:11 <lambdabot> I told you about the stairs, bro (I told you about the stairs, bro (I told ...
11:49:09 -!- sebbu has quit (Read error: Connection reset by peer).
11:49:30 -!- sebbu has joined.
11:50:47 -!- sebbu has quit (Changing host).
11:50:47 -!- sebbu has joined.
12:01:30 -!- Ernestas14 has joined.
12:01:40 -!- Ernestas14 has left.
12:22:25 -!- Vorpal has joined.
12:29:34 -!- derrik has quit (Quit: back to 3d).
12:39:16 -!- mtve has joined.
12:43:33 -!- copumpkin has quit (Ping timeout: 260 seconds).
12:43:58 -!- copumpkin has joined.
13:02:07 -!- Patashu has quit (Ping timeout: 260 seconds).
13:41:13 -!- augur has quit (Remote host closed the connection).
14:10:37 -!- augur has joined.
14:12:19 -!- augur has quit (Remote host closed the connection).
14:12:44 <Gregor> `quote
14:12:51 <HackEgo> 500) <Taos> _ <Taos> | |__ _ _ ___ <Taos> | '_ \| | | |/ _ \ <Taos> | |_) | |_| | __/ <Taos> |_.__/ \__, |\___|
14:13:01 <Gregor> ... what a great quote
14:13:20 -!- augur has joined.
14:13:44 <Gregor> `delquote 500
14:13:46 <HackEgo> ​*poof*
14:13:50 <Gregor> `quote
14:13:53 <HackEgo> 596) <elliott> well, oerjan has a lot of opinions on this, so I'll hand it over to him
14:13:55 <Deewiant> A part was missing
14:13:58 <Deewiant> Unless it was a typo
14:14:04 <Gregor> Such as ... the funny part?
14:14:26 -!- Phantom_Hoover has joined.
14:14:28 <Deewiant> Well, I find something like 1% of the existing quotes funny
14:14:39 <Phantom_Hoover> This is because you are: terrible.
14:14:40 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
14:14:41 <Deewiant> So I've given up caring about that
14:14:48 <Gregor> `quote
14:14:51 <HackEgo> 404) <EgoBot> hey fhet's zeees OouooH SNEP IT'S A FOooCKING TIGER
14:21:51 <Phantom_Hoover> Dammit HackEgo, stop letting down the side.
14:33:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:07:25 -!- copumpkin has joined.
15:10:12 -!- tiffany has joined.
15:15:31 -!- MSleep has changed nick to MDude.
15:19:21 -!- bd___ has changed nick to bd_.
15:58:53 -!- monqy has joined.
16:00:09 -!- derdon has joined.
16:36:03 -!- sllide has joined.
16:40:46 <Vorpal> <Deewiant> Well, I find something like 1% of the existing quotes funny <-- I mostly agree
16:45:22 <CakeProphet> god bless military industrial complex america
16:48:19 <Phantom_Hoover> CakeProphet, planning to follow that remark up with anything?
16:50:28 -!- BeholdMyGlory has quit (Excess Flood).
16:50:49 -!- BeholdMyGlory has joined.
16:53:20 <Gregor> <CakeProphet> No, it's just a sincere idle thought.
17:05:49 <Gregor> "Mangas slid down the wall, leaving a trail of something black behind them. When they hit the ground they opened and closed and in doing so improvised a sort of locomotion that brought them ever closer, inch by inch, flap by flap, to the bed where I lay paralyzed. I lost sight of them as they drew closer, but then felt, with an odd calmness, the cold wet touch of mangas sliding up my leg." ­— Dinosaur Comics
17:10:19 -!- CakeProphet has quit (Ping timeout: 258 seconds).
17:25:14 <Vorpal> Gregor, ... lol
17:25:30 <Vorpal> Gregor, is that mangas as in Japanese comics?
17:25:44 <Gregor> Yup
17:26:14 <Vorpal> I guess I have to check it out for the context, though that probably won't help
17:40:02 -!- copumpkin has quit (Ping timeout: 248 seconds).
17:40:42 -!- copumpkin has joined.
17:55:05 -!- pumpkin has joined.
17:56:55 -!- copumpkin has quit (Ping timeout: 260 seconds).
17:59:47 -!- elliott has joined.
18:00:07 -!- copumpkin has joined.
18:00:57 -!- copumpki_ has joined.
18:01:35 -!- pumpkin has quit (Ping timeout: 240 seconds).
18:01:45 <elliott> 07:48:54: <Sgeo|web> @tell elliott Homestuck update.
18:01:45 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
18:01:53 <elliott> do you really think that will in any way help
18:02:48 <elliott> 07:32:55: <Sgeo|web> ...you haven't seen Cascade yet?
18:02:48 <elliott> 07:33:35: <CakeProphet> ....I'm watching it right now, obviously.
18:02:48 <elliott> 07:33:38: <CakeProphet> as I just talked about it loading...
18:02:54 <elliott> oh wait cakeprophet isn't here
18:03:26 <elliott> 14:12:44: <Gregor> `quote
18:03:26 <elliott> 14:12:51: <HackEgo> 500) <Taos> _ <Taos> | |__ _ _ ___ <Taos> | '_ \| | | |/ _ \ <Taos> | |_) | |_| | __/ <Taos> |_.__/ \__, |\___|
18:03:26 <elliott> 14:13:01: <Gregor> ... what a great quote
18:03:26 <elliott> 14:13:20: -!- augur has joined #esoteric.
18:03:26 <elliott> 14:13:44: <Gregor> `delquote 500
18:03:32 <elliott> Gregor: You just deleted a part of history.
18:04:16 -!- copumpkin has quit (Ping timeout: 240 seconds).
18:04:53 -!- copumpki_ has changed nick to copumpkin.
18:04:54 -!- copumpkin has quit (Changing host).
18:04:54 -!- copumpkin has joined.
18:33:03 -!- elliott has quit (Quit: Leaving).
18:39:35 -!- elliott has joined.
18:39:39 <elliott> Well that was unexpected.
18:43:05 -!- sebbu has quit (Read error: Connection reset by peer).
18:43:27 -!- sebbu has joined.
18:43:27 -!- sebbu has quit (Changing host).
18:43:27 -!- sebbu has joined.
18:50:55 <elliott> ais hurry up and answer my inconsequential questions.
19:04:15 -!- ais523 has joined.
19:04:40 <elliott> yes good hi ais523
19:04:44 <elliott> i summoned you
19:05:09 <ais523> it was just coincidence
19:05:10 <lambdabot> ais523: You have 2 new messages. '/msg lambdabot @messages' to read them.
19:05:12 <ais523> but perhaps a useful one
19:05:15 <ais523> @messages
19:05:15 <lambdabot> elliott asked 12h 40m 57s ago: How does the Secret Project handle scheduling being non-deterministic?
19:05:15 <lambdabot> elliott asked 12h 40m 29s ago: Also, what kind of incredibly rough time estimate would you give for an open-source release of working code?
19:05:31 <elliott> Yesssssss finally my amazing questions will be answered
19:05:40 <ais523> elliott: it does handle scheduling being non-deterministic, but the explanation as to how is not a simple one
19:05:41 <elliott> Oh wow, @ask actually makes it say "elliott asked".
19:05:42 <elliott> Exciting.
19:05:49 <elliott> ais523: Is that another way of saying it's secret?
19:06:12 <ais523> no, it's a way of saying that I will explain it eventually, probably, but am not feeling up to it right now
19:06:23 <ais523> as I've only just got online
19:06:26 <ais523> maybe later today
19:07:12 <elliott> heh
19:08:10 <elliott> ais523: What about this one: Would there be a way of giving the running program access to a filesystem from the host? (/not/ a block device or anything)
19:08:17 <elliott> (Read-only access)
19:08:40 <ais523> elliott: yes, I've been doing that for testing, by mounting the host directory read-only inside the test filesystem with a loopback mount
19:08:57 <elliott> ais523: great
19:09:10 <elliott> ais523: I'm trying really hard to think of a non-packaging use case for this and I'm stumped :P
19:09:10 -!- ive has joined.
19:09:31 <ais523> god
19:09:33 <ais523> *good
19:09:49 <ais523> note that the part of the Secret Project you know about is only a moderately small part of the Project as a whole; it's just the bit that has to be done first
19:09:51 <elliott> ais523: no! bad :(
19:09:56 <ais523> and if it's useful in its own right, all the better
19:10:14 <elliott> yeah, I figure waiting and then mangling it to fit my needs is probably easier than rolling my own
19:10:44 <elliott> ais523: I take it the second question is being deliberately not answered :-P
19:10:58 <ais523> oh, I don't know the answer
19:11:03 <ais523> it really depends on how busy I am with other things
19:16:33 -!- yuyu has joined.
19:16:38 -!- yuyu has quit (Read error: Connection reset by peer).
19:18:57 <elliott> ais523: Last question! Tell me it isn't written in the same style DNA Maze is.
19:19:10 <ais523> it isn't, AFAIR
19:19:13 <ais523> but I haven't looked at it for a while
19:19:24 <ais523> surely DNA Maze's style can just be fixed with indent(1) if you don't like it, though?
19:19:28 <elliott> That's... worrying :P
19:19:44 <elliott> ais523: Well, sure, but that makes merging more difficult...
19:21:51 <elliott> I love how Nix essentially has safePerformIO :: (Hashable a) => IO a -> Hash -> a
19:22:16 <elliott> safePerformIO m hx = unsafePerformIO $ do { x <- m; when (hash x /= hx) $ fail "oh no"; return x }
19:37:22 -!- Darth_Cliche has joined.
19:46:06 -!- sebbu has quit (Read error: Connection reset by peer).
19:46:31 -!- sebbu has joined.
19:46:31 -!- sebbu has quit (Changing host).
19:46:31 -!- sebbu has joined.
19:54:45 <elliott> ais523: oh, would the secret project support exposing a network interface to the program being run? I could just give it the eth0 device through the FS, right?
19:55:09 <ais523> elliott: no, I don't think it would
19:55:19 <elliott> hmm, why not? :/
19:55:28 <ais523> certainly the project as a whole couldn't; the part you know about theoretically could, I guess, but it'd need to implement the networking syscalls
19:55:32 <elliott> I don't /think/ I need it, but it would reduce a lot of duplication
19:55:42 <ais523> the problem is, how can you run something completely repeatably when it's connecting to something you don't control?
19:55:57 <elliott> ais523: oh, I'm fine with it violating repeatability; this is a special case
19:56:07 <elliott> as long as the network is the only way to violate it
19:56:12 <elliott> as opposed to all the other ways you can
19:57:03 <ais523> that, umm, rather defeats the point of the secret project, but I doubt it'd be that hard; you'd just let socketcall(2) fall through to the default blocking or non-blocking syscall impl
19:57:45 <elliott> ais523: it's for a good reason :P
19:58:44 <elliott> ais523: in Nix-style systems, retrieving the source tarball for a package is done by having that be its own package whose "build" script just uses wget or the like and then places the result in the store; this is forced to be pure because you have to specify an SHA hash of the resulting file
19:58:50 <elliott> and the whole thing fails if it doesn't match
19:59:16 -!- pumpkin has joined.
19:59:21 <elliott> ais523: I could just run those without sandboxing, but I'd still have to e.g. run them as an unprivileged user, chroot them in, to avoid malicious behaviour exploiting the fact that it's run outside of the Secret Project
19:59:31 <ais523> why do you need perfect reproducibility for something like that? it doesn't fall under the secret project's definition of reproducibility because it doesn't control the timing
19:59:33 <elliott> ais523: it would be easier if I could just use "the Secret Project, but with networking"
19:59:44 <elliott> ais523: for sandboxing
20:00:13 <elliott> ais523: I'm just saying that reproducibility offers sandboxing as a side-effect
20:00:15 <ais523> oh, I said the secret project wasn't designed for security, although I guess it may end up sandboxing things anyway
20:00:19 <ais523> yep
20:00:28 <elliott> ais523: and I happen to need reproducibility most of the time, but just sandboxing for this case
20:00:38 <elliott> it'd be nice if I could rely on one thing to do that, rather than having two very similar mechanisms
20:00:43 <elliott> differing only in that one allows network access
20:01:23 <elliott> I mean, an unprivileged account and a chroot isn't /that/ much of a pain, but I'd be happier if I could use the same mechanism :)
20:02:00 -!- copumpkin has quit (Ping timeout: 252 seconds).
20:02:06 <ais523> well, it may be possible, but would be really hackish
20:02:38 <elliott> <ais523> that, umm, rather defeats the point of the secret project, but I doubt it'd be that hard; you'd just let socketcall(2) fall through to the default blocking or non-blocking syscall impl
20:02:41 <elliott> that doesn't sound very hackish
20:02:58 <ais523> well, it violates the invariants that the secret project is based on
20:03:18 <ais523> btw, I'm looking at the source, it seems to be One True Brace
20:03:21 <ais523> which you're happy enough with, I guess?
20:03:26 <elliott> sure :P
20:03:43 <ais523> complete with literal formfeed characters to separate unrelated functions
20:03:49 * elliott uses Linux style with varying indentation width
20:04:00 <elliott> Linux style is basically a specification of K&R/1TBS, though
20:04:08 <elliott> ais523: that's not 1TBS...
20:04:15 <elliott> ais523: that's some awful hybrid 1TBS/GNU style, then :P
20:04:29 <ais523> elliott: 1TBS is an indentation style, right?
20:04:33 <ais523> formfeeds are not indentation
20:04:45 <elliott> ais523: no, it's a formatting style
20:04:51 <elliott> it also tells you where to put braces, for one
20:07:29 <elliott> wow, it's bizarre seeing someone use SCM to mean something other than VCS
20:08:52 <elliott> hmm, wow, I think `pureWriteIORef :: IORef a -> a -> b -> b` is actually pure
20:09:06 <elliott> pureWriteIORef ref v x = unsafePerformIO (writeIORef ref v >> return x)
20:09:24 <ais523> elliott: http://pastie.org/pastes/2800788/text?key=c9nqhgeel5yd8hcu4jzq
20:09:32 <ais523> you were asking about the Secret Project's scheduling rules
20:09:40 <ais523> and there's the relevant parts, with a bit of censorship applied
20:09:58 <elliott> ais523: wtf is that censorship for? :P
20:10:08 <ais523> it's a Secret Project, right?
20:10:17 <ais523> so bits of it have to stay secret
20:10:21 <elliott> so wait, how do you convince linux not to use its normal scheduler?
20:11:54 <ais523> generally speaking, all but one process is either in a blocking syscall, or stopped
20:11:59 <ais523> so only one process can actually run
20:12:39 <elliott> ais523: umm, what if i fork two processes doing for(;;);?
20:12:43 <ais523> should multiple processes get knocked out of a blocking syscall simultaneously for whatever reason, they're each stopped at the syscall return in arbitrary order, and banned from communicating in any way with other processes until the Secret Project has a good handle on which ones are and aren't working
20:12:50 <ais523> the Secret Project doesn't handle infinite busyloops
20:13:27 <elliott> ais523: what about if I start two subprocesses, alarm(15), then put them both in a busyloop of incrementing a global i variable
20:13:31 <elliott> then exit(i) in the signal handler?
20:14:06 <ais523> it doesn't handle that either
20:14:28 <ais523> nor does it have to be able to, for its intended purpose; and besides, the way it works, it can't
20:14:41 <elliott> ais523: it's not exactly perfect repeatability then, is it?
20:14:50 <elliott> I could imagine someone doing something like that to produce a random seed
20:14:53 <ais523> I didn't say it was; you said that
20:15:06 <elliott> well, you've strongly implied that's what it's for, otherwise why go to all the effort? :p
20:15:19 <ais523> that is what it's for, but it's not designed to work on arbitrary programs; just a very large subset of them
20:15:26 <ais523> for instance, you couldn't run it on itself
20:15:52 <ais523> and I've already established that it actively resists being debugged (running gdb inside or outside it causes mad things to happen, as does running valgrind inside or outside it)
20:16:06 <elliott> well, OK
20:16:13 <elliott> actually, I wonder if that valgrind thing should worry me
20:16:21 <elliott> packages might try and run a test suite at build-time
20:16:52 <elliott> ais523: anyway, I suppose it'll be good enough :) especially since the Nix guys have problems with such simple things as the system clock or hostname leaking into builds
20:17:26 <ais523> valgrind internal-errors on the Secret Project with a request to report a bug
20:17:37 <ais523> but if I did report what was causing it, I'm reasonably sure the reply would be "then don't do that"
20:17:46 <elliott> ais523: you've said
20:20:03 <elliott> ais523: here's a quote you might like: "In the presence of patch sets between arbitrary releases, it is not directly
20:20:03 <elliott> obvious which sequence of patches or full downloads is optimal. To be fully gen-
20:20:03 <elliott> eral, the Nix substitute downloader runs a shortest path algorithm on a directed
20:20:03 <elliott> acyclic graph that, intuitively, represents components already installed, avail-
20:20:03 <elliott> able patches between components, and available full downloads of components."
20:20:56 <ais523> elliott: why acyclic?
20:20:58 -!- Ngevd has joined.
20:21:08 <elliott> ais523: I don't think that would work
20:21:16 <Ngevd> Hello!
20:21:35 <ais523> if you want an alpha release, then you can get it either by getting a beta and reversing the patches between it and the alpha, or applying patches forwards from the previous release
20:22:55 -!- GreaseMonkey has joined.
20:22:56 -!- GreaseMonkey has quit (Changing host).
20:22:56 -!- GreaseMonkey has joined.
20:23:48 <elliott> ais523: in this case, "getting a beta" is the thing to be avoided
20:23:49 -!- pumpkin has changed nick to copumpkin.
20:23:59 <elliott> ais523: the user isn't a time traveller, so they have files from the past only
20:24:06 <ais523> elliott: what if you don't want the latest version?
20:24:11 <elliott> ais523: you don't understand
20:24:13 <ais523> the files may be from the past, but in the future of the version you want
20:24:17 <elliott> ais523: you have a pre-alpha, and need to update to a beta
20:24:21 <elliott> but there's not patches between every single release
20:24:24 <elliott> in-between
20:24:25 <elliott> only some of them
20:24:54 <ais523> elliott: say you have version 16, and want to update to version 17alpha5; 17beta1 is already out
20:25:16 <ais523> then going forwards to 17beta1 and then back to 17alpha5 may be the smallest set of patches to use
20:25:38 <elliott> well, OK
20:26:03 <elliott> ais523: OTOH, wanting to update to 17alpha5 is an incredibly unlikely scenario in context
20:26:28 <elliott> ais523: and if you do want to, downloading the binary from scratch is an acceptable cost to save calculation time for people who don't do insane things
20:26:34 <ais523> it has a feature you need and 17beta1 has a critical bug that 17alpha5 doesn't?
20:26:43 <elliott> yes, but full downloads are always available
20:26:49 <elliott> this is about optimisation, not making things possible in the first place
20:26:54 <ais523> elliott: the point is that finding the shortest route in a DAG is the same algo as finding the shortest route in a directed graph
20:27:09 <ais523> so it doesn't cost you anything to ban cycles
20:27:19 <elliott> sure, but the graph itself is bigger
20:30:11 <elliott> ais523: anyway, avoiding implementing a reverse patch algorithm is one reason :P
20:30:44 <Ngevd> It's my birthday tomorrow
20:30:48 <ais523> elliott: wow, I just got a wallop claiming that vim was the best editor ever
20:30:49 <Ngevd> Then I'm on TV Friday
20:30:57 <Ngevd> Then fireworks display Saturday
20:30:58 -!- pikhq has joined.
20:31:01 <elliott> ais523: on your /local machine/?
20:31:04 -!- pikhq_ has quit (Ping timeout: 240 seconds).
20:31:05 <ais523> elliott: no, on Freenode
20:31:08 <elliott> oh
20:31:09 <elliott> wtf?
20:31:11 <elliott> paste it
20:31:29 <ais523> [wallops] Holy editor war, batman! Vim's first public release was two decades ago, today! It sure is birthday-y around here as of late. Anyway, congrats to the best editor, ever! Join #vim to congratulate or have good-natured editor bantering ;)
20:31:43 <elliott> hmm
20:31:51 <ais523> that looks designed to incite a flamewar
20:31:52 <elliott> I really want to troll-and-run #vim now
20:31:59 <elliott> they're /encouraging/ it, aftera ll
20:32:14 <elliott> <elliott> VIM SUX EMACS SUX NOTEPAD IS THE ONE TRUE EDITOR
20:32:15 <elliott> there we go
20:32:46 <ais523> incidentally, I commented on an editor war on Reddit a while back: http://www.reddit.com/r/programming/comments/lotys/lines_of_lisp_and_c_code_in_emacss_source_code/c2uknyy?context=3
20:32:51 <Ngevd> I'm not a big editor person-y type thing
20:33:10 <Ngevd> Begins with c
20:33:16 <Ngevd> Sounds vaguely French
20:33:20 <Ngevd> Associated with wine
20:33:22 <Ngevd> Hard to spel
20:33:23 <Ngevd> l
20:33:30 <ais523> critic?
20:33:32 <Ngevd> Connossoure
20:33:34 <ais523> aha
20:33:38 <Ngevd> Something like that
20:33:45 <elliott> condiment
20:33:46 <ais523> connoisseur
20:33:53 <Ngevd> connoisseur.
20:33:53 <ais523> my IRC client has a spellchecker ;)
20:34:02 <Ngevd> Mine does, but I wasn't close enough
20:34:05 <elliott> ais523: mine doesn't, what package is that again? it's been bugging me
20:34:05 <elliott> :p
20:34:14 <elliott> (I have aspell, it just doesn't work in gtk...)
20:34:15 <Ngevd> It gave me Connecticut
20:34:28 <elliott> :D
20:34:44 <ais523> elliott: I'm using Konversation 4, obtained via kubuntu-desktop
20:34:53 <ais523> which has a really crazy insane number of dependencies
20:34:58 <ais523> and I couldn't tell you which one it is specifically
20:34:59 <Ngevd> XChat, Ubuntu 11.04
20:35:00 <elliott> I really hope Arch has a kubuntu-desktop package
20:35:06 <Ngevd> Which is probably the worst Ubuntu
20:35:11 <elliott> all distros should have a kubuntu-desktop package :)
20:35:16 <ais523> (kubuntu-desktop exists for the purpose of depending on pretty much the whole of KDE)
20:35:38 <elliott> ais523: /plus/ whatever kubuntu adds
20:36:06 <ais523> yep
20:38:07 <elliott> "Clearly, we could produce patches between all Xs and Y s. This policy is
20:38:07 <elliott> “optimal” in the sense that the client would always be able to select the abso-
20:38:07 <elliott> lutely shortest sequence of patches. However, it is infeasible in terms of time and
20:38:07 <elliott> space since producing a patch takes a non-negligible amount of time, and most
20:38:07 <elliott> such patches will be large since they will be between unrelated components (for
20:38:07 <elliott> instance, patching Acrobat Reader into Firefox is obviously inefficient)."
20:38:15 <elliott> how does one patch Acrobat Reader into Firefox under NixOS?
20:38:25 <elliott> dammit, I got the meme wrong
20:38:31 <elliott> serves me to go by WP article titles rather than their contents
20:41:18 <elliott> hmm... does anybody know HTTP better than I do here?
20:42:30 <elliott> aha, I was right
20:42:39 <elliott> (w3.org knows HTTP better than I do)
20:44:13 <elliott> [elliott@dinky ~]$ time ( { for i in {1..9}; do echo "GET /$i HTTP/1.1"; echo; done; echo "GET /10 HTTP/1.1"; echo "Connection: close"; echo; } | nc google.com 80 >/dev/null )
20:44:18 <elliott> good command lines
20:44:49 <Ngevd> Does it work?
20:44:54 <elliott> yep
20:45:05 <Ngevd> Then they are very good.
20:45:41 <elliott> ais523: here's another quote you might like: "A good value for k would be around 2, e.g., k = 1.9."
20:45:53 <elliott> Also e.g. k = 2 :-P
20:47:38 -!- centrinia has joined.
20:51:45 <elliott> pikhq: Has anyone compared patching times / memory use of bps vs. e.g. bsdiff?
20:51:57 <elliott> Hmm, I wonder if I could parallelise the process somewhat...
20:52:24 <Ngevd> Hello centrinia
20:52:32 <elliott> hi centrinia
20:52:34 <elliott> `welcemkrmo
20:52:35 <centrinia> Hello Ngevd, elliott.
20:52:36 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcemkrmo: not found
20:52:37 <elliott> `welkom
20:52:38 <elliott> `? skdlf
20:52:39 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welkom: not found
20:52:40 <elliott> `? welcome
20:52:40 <HackEgo> skdlf? ¯\(°_o)/¯
20:52:41 <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
20:52:52 <Phantom_Hoover> `ls bin
20:52:53 <centrinia> Does everyone get a welcome?
20:52:54 <HackEgo> ​? \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ runperl \ toutf8
20:53:00 <elliott> centrinia: No! Just you. Also new people.
20:53:05 <Phantom_Hoover> `paste bin/?
20:53:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26175
20:53:17 <elliott> Phantom_Hoover: use `url for things like that
20:53:18 <elliott> avoids pasting
20:53:52 <Ngevd> What's a stationary point again?
20:54:23 <Ngevd> Are they when the gradient is 0?
20:55:42 <centrinia> It can also be a point where the gradient is not defined.
20:55:54 <Ngevd> Oh good
20:55:59 <Phantom_Hoover> centrinia, they can?
20:56:13 <Phantom_Hoover> Oh, right, discontinuities in the gradient.
20:56:16 <centrinia> I am just looking at the wiki.
20:56:35 <elliott> ais523: do things like segfault-catching work under the Secret Project?
20:56:35 <Phantom_Hoover> Ngevd isn't meant to know about that :P
20:56:40 -!- pikhq_ has joined.
20:56:54 -!- pikhq has quit (Ping timeout: 255 seconds).
20:56:57 <centrinia> Wait, that is a critical point.
20:57:20 <ais523> elliott: it can catch segfaults itself
20:57:22 <centrinia> I was wrong earlier.
20:57:24 <Phantom_Hoover> centrinia, erm, yeah.
20:57:25 <ais523> although it doesn't do anything with them yet
20:57:33 <elliott> ais523: that... isn't the point
20:57:35 <ais523> it could pass them to the program's segfault interrupt handler if you wanted it ot
20:57:36 <ais523> *to
20:57:41 <ais523> I think that's actually what it does
20:57:47 <elliott> ais523: I mean things like libsigsegv
20:57:54 <elliott> which let you use segfaults to e.g. expand a BF tape
20:58:01 <ais523> yep, I think it could handle that
20:58:02 <elliott> if you do the mmapping just right so it's on a page boundary
20:58:04 <elliott> great
20:58:24 <ais523> it may handle that already, in fact
20:58:42 <elliott> ais523: I'm just checking that build processes that use software which pull tricks like this will work :)
20:58:53 <elliott> e.g. SBCL does the "mmap a gigantic private heap" t hing
21:00:42 <elliott> ais523: you said that the Secret Project can't be run under gdb, but does gdb work inside it?
21:00:58 <ais523> elliott: no
21:01:04 <elliott> right
21:02:10 <ais523> ah, hmm, not only does gdb go wrong, but so does the Secret Project
21:02:12 <ais523> must be a bug in it somewhere
21:03:48 <elliott> heh, I just had a silly conservative GC idea, that I just realised never frees anything
21:03:51 <elliott> perfect!
21:05:44 <Ngevd> http://a6.sphotos.ak.fbcdn.net/hphotos-ak-snc7/s720x720/316901_284913304864672_100000380143871_936853_1298194009_n.jpg
21:06:13 <elliott> I...
21:06:23 <Ngevd> Apparently it's a board game
21:07:40 <elliott> # Set the maximum number of FUSE mounts allowed to non-root users.
21:07:41 <elliott> # The default is 1000.
21:07:41 <elliott> #
21:07:41 <elliott> #mount_max = 1000
21:07:56 <Phantom_Hoover> Is... is that the church in Hexham which elliott tells me is the only interesting thing in it?
21:08:07 <elliott> I said it was interesting?
21:08:39 <Ngevd> The gaol's better
21:08:46 <Ngevd> But yes
21:32:49 <Vorpal> which was the last windows version that was sold on floppy?
21:32:53 <Vorpal> I guess windows 3.x
21:32:55 <pikhq_> 95.
21:33:00 <Vorpal> pikhq_, really? Heh
21:33:05 <Vorpal> pikhq_, how many floppies?
21:33:48 <pikhq_> 13.
21:34:10 <pikhq_> 95 OSR 2.1 came on 26.
21:34:12 <elliott> Vorpal: Windows Server 2008
21:34:15 <elliott> enterprise edition
21:34:20 -!- augur has quit (Remote host closed the connection).
21:36:40 <pikhq_> Waaaait. Holy crap 98 could be had on floppies.
21:36:49 <pikhq_> 39 floppies.
21:36:50 <Ngevd> I have it on CD
21:37:01 <Vorpal> pikhq_, but was it ever distributed as that?
21:37:14 <pikhq_> Yes. *Barely*.
21:37:18 <Vorpal> wow
21:38:00 <pikhq_> They were also 1.7M floppies.
21:38:02 <Vorpal> wtf, google earth doesn't display territorial boarders in the sea.
21:38:20 <Vorpal> I want to know if there is international water between Canda and Greenland, but I can't find info on that ANYWHERE
21:38:51 <Vorpal> pikhq_, ... that is rare. I never seen any of those. Can a normal computer read them?
21:39:17 <Vorpal> and how was that identified, yet another hole in the cover?
21:40:23 <elliott> <Vorpal> I want to know if there is international water between Canda and Greenland, but I can't find info on that ANYWHERE
21:40:32 <elliott> Vorpal: Sorry, but you can still be prosecuted for crimes committed in international waters.
21:40:37 <Vorpal> elliott, har, har
21:40:43 <elliott> You'll have to go into space for your private time.
21:43:37 -!- Ngevd has quit (Quit: early morning tomorrow).
21:44:44 <Phantom_Hoover> "Subversion gets Suspended" — Introversion website
21:44:50 <Phantom_Hoover> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
21:45:08 <Deewiant> Old news
21:45:08 <monqy> imagines n as m
21:45:13 <elliott> Phantom_Hoover: Now we're going to have to use CVS!!!
21:45:16 <monqy> phantom hoover moos loudly
21:45:30 <monqy> deewiant confuses it for mews
21:45:55 <pikhq_> Vorpal: Yes, actually.
21:45:55 <elliott> monqy: comfuses
21:45:58 <elliott> momqy
21:46:08 <Vorpal> pikhq_, to witch question?
21:46:13 <Vorpal> pikhq_, the borders or the floppy?
21:46:14 <elliott> Phantom_Hoover: ahahaha "In the end, after all that development and years of work, you still completed the bank heist by walking up to the first door, cracking it with a pin cracker tool, then walking into the vault and stealing the money."
21:46:18 <pikhq_> Vorpal: "Can a normal computer read them?"
21:46:19 <Phantom_Hoover> I remember googlestalking monqy and it turned out he was some mother?
21:46:20 <Vorpal> ah
21:46:29 <elliott> monqy is the best mother
21:46:32 <elliott> `quote uncle
21:46:34 <HackEgo> 221) <tswett> elliott: just to bring you up to speed, you are now my baby nephew. <olsner> wtf, elliott is a nephew and his uncle is here? <nooga> what <tswett> Heck yes I'm elliott's uncle.
21:46:48 <Vorpal> elliott, where is that quote from ("in the end..."
21:46:49 <Vorpal> )
21:46:55 <elliott> Vorpal: http://forums.introversion.co.uk/introversion/viewtopic.php?t=2967
21:47:01 <monqy> I'm a mother???
21:47:08 <elliott> monqy: yes happy birthday
21:47:09 <pikhq_> Microsoft actually used it for quite a while.
21:47:26 <monqy> i don't remember getting pregnant...........
21:47:27 <Phantom_Hoover> monqy's child?
21:47:32 <Phantom_Hoover> Bastards.
21:48:12 <tswett> monqy's child is multiple bastards? That kid's got talent.
21:48:29 <elliott> congratulations monqy !
21:48:37 <Phantom_Hoover> So wait, even Introversion didn't know what the hell Subversion was about?
21:48:41 <Phantom_Hoover> This... explains a lot.
21:49:07 <tswett> elliott: have I mentioned that you're on the verge of saying your first word?
21:49:13 <Phantom_Hoover> "I was imagining Uplink developed into a bigger game with more replay value (as in: there are still challenges even after you've learned how to hack a bank)."
21:49:15 <Phantom_Hoover> Amen.
21:49:30 <Phantom_Hoover> Those banks are insanely broken.
21:51:02 -!- derdon has quit (Remote host closed the connection).
21:51:22 <Phantom_Hoover> elliott, BtW, have located debit card.
21:51:29 <elliott> Phantom_Hoover: Buy a kitten.
21:51:32 <Phantom_Hoover> Will buy Humble Bundle post-haste.
21:51:40 <elliott> Pay more than the average of
21:51:40 <elliott> $4.71 to get The Binding of
21:51:40 <elliott> Isaac and Blocks That Matter!
21:51:42 <Phantom_Hoover> Also a kitten, although what if my cat doesn't like it?
21:51:45 <elliott> Phantom_Hoover: See, it's going to force you to be a good person.
21:51:49 <Phantom_Hoover> elliott, BASTARDS
21:52:13 -!- Patashu has joined.
21:52:13 <Phantom_Hoover> elliott, pirate them for me to see if they work?
21:52:23 <Phantom_Hoover> (By which I mean send me your download link._
21:52:44 <elliott> That feels wrong!!!!!!!! Also that would let you do awful things to my order.
21:53:06 <elliott> Phantom_Hoover: IIRC the Binding of Isaac is 2D, so you'll be fine. Voxatron is software-rendered, so your GPU is irrelevant.
21:53:08 <Phantom_Hoover> You mean giving all your moneys to them.
21:53:16 <elliott> Blocks That Matter looks 2D too.
21:53:19 <elliott> So you'll be fine.
21:53:56 <Vorpal> elliott, "The Binding of Isaac" isn't worth it, "Blocks That Matter" is
21:54:15 <elliott> Vorpal: The Binding of Isaac has gotten rave reviews from literally everything and Super Meat Boy was great, so... you're probably wrong.
21:54:25 <monqy> I've heard mixed things about it
21:54:52 <Vorpal> elliott, well try it yourself. It looks insane. Sure the gameplay may be good, but I referred to the setting and the plot
21:55:13 <elliott> Also anything with Roguelike-style world generation is the best.
21:55:15 <Vorpal> it is just disturbing from what I seen
21:55:41 <elliott> Vorpal: this is because you are (a) Swedish; (b) therefore, a wuss.
21:55:47 -!- SgeoN1 has joined.
21:55:54 <elliott> The only non-wussy Swede is olsner and that is why he is also the only non-terrible Swede.
21:56:01 <Vorpal> elliott, no you are just as insane and disturbing yourself
21:56:08 <Vorpal> elliott, anyway what about FireFly and BeholdMyGlory?
21:56:12 <elliott> They're not people.
21:56:18 <Vorpal> elliott, oh?
21:56:28 <SgeoN1> Wtf reisub didn't work
21:56:49 <elliott> SgeoN1: Do you have magic sysrq on>?
21:56:52 <elliott> s/>//
21:57:16 <SgeoN1> Not sure?
21:59:16 <elliott> SgeoN1: Check?
22:00:43 <SgeoN1> /proc/sys/kernel/sysrq contains 1
22:01:06 <Vorpal> SgeoN1, are you on a laptop?
22:01:17 <SgeoN1> Yes
22:01:47 <Vorpal> SgeoN1, Does fn on the sysrq button do anything according to the legend on the keyboard
22:02:15 <SgeoN1> No
22:02:16 <Vorpal> sysrq doesn't work reliably on my laptop, Fn-PrtSc supposedly gives SysRq, but well, not really
22:02:59 <elliott> SgeoN1: a safe way to test is fn+printscreen+b!
22:03:02 <elliott> The SAFEST way.
22:04:37 <SgeoN1> !?
22:05:46 <SgeoN1> I think I'll try with w
22:06:04 <SgeoN1> Or m
22:06:44 <Phantom_Hoover> I think I once did REIBUS backwards because I forgot that you need to reverse 'busier'.
22:06:47 <SgeoN1> Works without Fn not with
22:07:49 <elliott> Phantom_Hoover: REIBUS isn't BUSIER backwards.
22:08:23 <Phantom_Hoover> elliott, it's a miracle my computer still works at all, frankly.
22:08:42 <elliott> Phantom_Hoover: It's REISUB; let me guess, you didn't pause for a few seconds between letters either?
22:08:59 <Phantom_Hoover> I don't remember?
22:15:46 <Vorpal> elliott, SgeoN1: fn-prtsc-h should be a good way to test
22:15:54 <Vorpal> and it does nada for me
22:15:59 <elliott> He already tested.
22:16:08 <Vorpal> hm
22:16:30 <elliott> "Figure 5 shows the build algorithm for derivations in pseudo-code. The operator ← denotes assignment, and x [← symbol with a ∪ above it] y is shorthand for x ← x ∪ y."
22:16:37 <elliott> They're reinventing C notation X-D
22:17:00 <Vorpal> heh
22:29:12 <elliott> hmm, I don't think I like the path this paper is taking
22:29:24 <monqy> what path did it take
22:29:51 <elliott> not sure yet :)
22:31:39 <elliott> "We fix this problem by computing hashes modulo self-references.
22:31:40 <elliott> Essentially, this means that we ignore self-references when com-
22:31:40 <elliott> puting the hash. First, when computing the hash of contents(p),
22:31:40 <elliott> we zero out all occurrences of the string hashPart(p)."
22:31:40 <elliott> cute
22:31:57 <elliott> ais523: how to solve a fixed-point for a hash function: zero out the self-reference hole :D
22:32:15 <ais523> heh
22:32:32 <elliott> hmm... wonder what happens if you deliberately insert something that would be a self-reference but zeroed
22:32:37 <elliott> maybe it changes it to the hash :D
22:33:01 <elliott> ah!
22:33:04 <elliott> "It is necessary to encode the offsets
22:33:04 <elliott> of the occurrences of h into the hash to prevent hash collisions for
22:33:04 <elliott> strings that are equal except for having either h or 0-strings at the
22:33:04 <elliott> same location."
22:33:36 -!- augur has joined.
22:36:07 -!- ive has quit (Ping timeout: 258 seconds).
22:45:57 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:49:19 <Vorpal> <elliott> ais523: how to solve a fixed-point for a hash function: zero out the self-reference hole :D <-- isn't that how a lot of embedded hash style checksums are done?
22:49:30 <elliott> dunno
22:49:41 <elliott> this is more clever though
22:49:44 <elliott> because it notes the offsets
22:49:57 <elliott> so you can't cause a collision by deliberately taking something with a self-reference and turning it into 0s instead
22:50:11 <Vorpal> hm
22:50:12 <ais523> hmm, what's the chance that a cryptosecure hash has a fixed point? almost 1, isn't it?
22:50:42 <elliott> ais523: I think 1
22:50:45 <elliott> ais523: except, no
22:50:49 <elliott> ais523: it's 1 if every hash value is possible
22:50:58 <elliott> whether every hash value is possible or not sounds /very/ hard to estimate
22:51:06 <elliott> let alone prove
22:51:26 <Vorpal> elliott, iirc stuff like checksum in some of gzip, zip, rar and so on or similar work by computing the hash with a dummy value (such as all zeros) in place of where the hash goes, sounds quite the same?
22:51:29 <ais523> elliott: actually, if any hash value is impossible, it's 1
22:51:37 <elliott> ais523: huh?
22:51:44 <ais523> because then two well-formed hash values have to map onto the same hash by the pigeonhole principle
22:51:48 <elliott> Vorpal: it's similar
22:51:53 <elliott> ais523: oh, right
22:51:57 <elliott> I had it backwards :)
22:51:59 <ais523> if all are possible, then it's possible but unlikely that they all go round in cycles of 2 or more
22:52:45 <elliott> ais523: I remember a while back some idiot web designer guy started a "distributed search" for an SHA-1 fixed-point, waving away people who gave statistics as to the incredible unlikelihood of one being found by brute force with "if enough of us try it might just work!!!"
22:52:58 <elliott> i cried :'(
22:52:59 <Vorpal> ais523, non-crypto secure hash that doesn't have that property (unless I misunderstood you): f(a) = b, f(*) = a
22:53:10 <Vorpal> where a and b are strings
22:53:26 <ais523> Vorpal: in that case, the only well-formed outputs are a and b; both are possible, so it's possible that there's no fixedpoint
22:53:28 <ais523> and in fact there isn't
22:53:43 <Vorpal> ais523, well yes
22:53:54 <elliott> here it is!!!
22:53:54 <elliott> http://elliottkember.com/kember_identity.html
22:53:58 <elliott> moron even named it after himself
22:54:00 <ais523> wait, /another/ elliott?
22:54:04 <elliott> also dear god those colour highlights are unbearable
22:54:07 <elliott> ais523: oh god you're right
22:54:19 <Vorpal> at least not hird
22:54:21 <elliott> i'm changing my fucking name, this means there are at least two abject morons with my first name
22:54:23 <elliott> as their first name
22:54:27 <elliott> in fact, three if you count me!
22:54:32 <Vorpal> heh
22:54:42 <ais523> I assume there are at least 2 people called Alex who are morons, just because it's a really common name
22:54:48 <Vorpal> elliott, is "Elloitt" spelled like that very rare?
22:54:55 <Vorpal> err
22:54:57 <Vorpal> s/oi/io/
22:54:58 <elliott> Vorpal: I... suspect not a single person is called that
22:55:00 <elliott> Oh
22:55:03 <Vorpal> elliott, yeah typo :P
22:55:05 <elliott> Well Elliot is the most common spelling by far
22:55:10 <elliott> Eliot is also common
22:55:12 <Vorpal> ah
22:55:14 <elliott> As is, I think, Eliott
22:55:16 <Vorpal> elliott, and your spelling?
22:55:20 <elliott> Elliott is not all that common :P
22:55:23 <Vorpal> right
22:55:33 <pikhq_> Elloitt is probably the name of a kid with illiterate parents.
22:55:43 <elliott> Fun fact, my name means "Ruler of the Elves". I am what I hate.
22:56:03 <Vorpal> elliott, I believe there are like less than 5 people in Sweden with both my first and my last name. And one other if you include my middle names.
22:56:12 <elliott> ais523: looks like there's a 37% chance there's no such input for MD5
22:56:15 <Vorpal> the latter is just weird. Chances are pretty low
22:56:22 <pikhq_> Fun fact, my name means "supported of Yahweh".
22:56:29 <elliott> Vorpal: I doubt there's another Elliott Hird on the globe
22:56:33 <ais523> elliott: 1/e?
22:56:38 <ais523> that would be my guess as to the probability
22:56:39 <elliott> ais523: yep: http://ograll.blogspot.com/2009/06/mathematics-of-perfect-hash.html
22:56:42 <Phantom_Hoover> <elliott> Fun fact, my name means "Ruler of the Elves". I am what I hate.
22:56:45 <Phantom_Hoover> No dude what about Cacame.
22:56:52 <elliott> Phantom_Hoover: I'm not Cacame! I'm Elliott!
22:56:55 <pikhq_> I'm pretty sure my first+last name is unique among living people.
22:57:05 <ais523> pikhq_: Unknown?
22:57:08 <Vorpal> elliott, well I doubt my name occurs at all outside Sweden. It might just show up in Norway or Denmark I guess
22:57:11 <Vorpal> probably not
22:57:16 <pikhq_> It most certainly isn't if you count people still alive.
22:57:31 <pikhq_> Erm.
22:57:35 <pikhq_> People who have ever lived.
22:57:44 <elliott> "I've found one!
22:57:45 <elliott> Not exactly a complete match but I'm done wasting cycles..
22:57:45 <elliott> md5('deadbeefdc84955dfb53442f741f4ec9') == 1ebb63c68f0e40e6902e0deadfeefbfa"
22:57:53 <Vorpal> pikhq_, oh? what is it?
22:57:54 * elliott facepalms
22:58:06 <ais523> it doesn't even have "deadbeef" in both
22:58:07 <pikhq_> Vorpal: Josiah Worcester
22:58:11 <olsner> I see dead feef
22:58:11 <elliott> "I doubt it exsists, considering, which guy making such a algorithm would not make sure that would never happen?
22:58:11 <elliott> I would at least try to prevent it, since it kind of breaks the purpose of the algorithm(a one-way algorithm)"
22:58:13 <elliott> OK, I give up on these comments
22:58:25 <ais523> pikhq_: both the forename and surname are not unheard of
22:58:34 <pikhq_> ais523: Though not exactly common.
22:58:37 <ais523> indeed
22:58:40 <Phantom_Hoover> <elliott> Phantom_Hoover: I'm not Cacame! I'm Elliott!
22:58:46 <Phantom_Hoover> Yeah but get a beard on strings?
22:58:50 <elliott> OK fine.
22:58:51 <ais523> both my forename and surname are really common
22:59:01 <pikhq_> I strongly suspect Worcester is more common as a place name. :P
22:59:04 <Phantom_Hoover> Also make Hexham get conquered by dwarves, i.e. Scots.
22:59:16 <elliott> I would be up for warring with the Scots.
22:59:19 <elliott> This place is boring.
22:59:39 <Phantom_Hoover> Nonono, we'd conquer you, and then the English would kill and eat most of your family and your wife.
22:59:55 <elliott> Ah.
23:00:51 <Vorpal> ais523, I know
23:00:58 -!- calamari has joined.
23:01:03 <Vorpal> <pikhq_> Vorpal: Josiah Worcester <-- yeah... those are both quite rare
23:01:05 -!- zzo38 has joined.
23:01:18 <Vorpal> pikhq_, btw, isn't "Worcester" the name of some food stuff
23:01:21 <Vorpal> as in "Worcester-foo"
23:01:31 <Vorpal> or am I confusing it with something else?
23:01:33 <Phantom_Hoover> Worcester sauce.
23:01:37 <Vorpal> Phantom_Hoover, ah, thanks
23:01:48 <Phantom_Hoover> It's a bit like spicy vinegar I think.
23:01:55 <Vorpal> ah, okay
23:02:00 <Phantom_Hoover> (I have only actually tasted Worcester sauce crisps.)
23:02:06 <Phantom_Hoover> (They are good.)
23:02:14 <elliott> Wow, this guy uses those awful italic background-highlights everywhere.
23:02:17 <elliott> (I foolishly clicked on to his site.)
23:02:27 <Vorpal> Phantom_Hoover, from the name it sounds like it comes from UK, is that the case?
23:02:31 <elliott> It's like he just discovered highlighter pens.
23:02:37 <elliott> Phantom_Hoover: It's... not like spicy vinegar.
23:02:43 <Phantom_Hoover> It's fermented fish apparently?
23:02:49 <elliott> No don't call it that.
23:02:52 <elliott> Nobody thinks of it like that.
23:02:54 <elliott> That is the road to hell.
23:02:58 <elliott> It's just made out of magic.
23:03:16 <Gregor> wtf?
23:03:16 <Phantom_Hoover> Maybe you English people don't, but here in Scotland we like our food in some state of decay.
23:03:21 <Vorpal> Phantom_Hoover, you mean Worcester sauce ~ surströmming? :D
23:03:28 <Gregor> Worcester sauce is fermented fish? But fish sauce is fermented fish.
23:03:29 <Vorpal> except more fluid
23:03:39 <elliott> Gregor: It's made from like a billion things plus anchovies :P
23:03:42 <Gregor> I thought Worcester sauce was related to soy sauce.
23:03:43 <Gregor> Ah.
23:03:45 <olsner> I approve of the idea that worcester sauce is made of magic
23:03:48 <elliott> Gregor: "The ingredients of a traditional bottle of Worcestershire sauce sold in the UK as "The Original & Genuine Lea & Perrins Worcestershire sauce" are malt vinegar (from barley), spirit vinegar, molasses, sugar, salt, anchovies, tamarind extract, onions, garlic, spice, and flavouring."
23:03:56 <elliott> But yeah, it's like soy sauce but with more... flavour.
23:03:58 <elliott> And a bit less salty.
23:04:04 <Vorpal> ah
23:04:10 <elliott> "The "spice, and flavouring" is believed to include cloves, soy sauce, lemons, pickles and peppers."
23:04:14 <pikhq_> Gregor: Worcester sauce is very much a form of fish sauce.
23:04:14 <Vorpal> elliott, approximately surströmming :P
23:04:22 <elliott> Basically they just threw everything into a blender.
23:04:31 <Vorpal> approximately liquid surströmming :P
23:04:32 <Gregor> Yet another sauce that's secretly not vegetarian :P
23:04:36 <elliott> Phantom_Hoover: Seriously though try some Lea & Perrins it's good.
23:04:43 <pikhq_> Vorpal: Also, "Worcester sauce" is slightly shortened for "Worcestershire sauce".
23:04:45 <Phantom_Hoover> OK so incidentally, people who think Tesla was the most intelligent person ever and we've irrecoverably lost so much stuff because we just didn't listen fools: the worst/
23:04:48 <Vorpal> Phantom_Hoover, ah
23:04:49 <Vorpal> err
23:04:51 <Vorpal> pikhq_, ^
23:04:57 <Vorpal> damn tab-last-spoke-first
23:04:58 <elliott> Anyone who calls it Worcester sauce is a bad person.
23:05:01 <pikhq_> The shortening goes even further for Japanese; it's just "sôsu".
23:05:07 <elliott> http://upload.wikimedia.org/wikipedia/commons/6/65/Dimitri_Torterat_-_Bottle_of_Worcestershire_sauce.jpg ;; look, it _says_ Worcestershire on the bottle.
23:05:11 <zzo38> Would it even be possible to make Haskell have a bijective function type <-> that you could, in addition to possibly conversion of some reversible esolangs, also be able to prove things such as: forall a b c n. Not (Either (Maybe (Maybe (Maybe n)) -> Maybe a) (Maybe (Maybe (Maybe n)) -> Maybe b) <-> (Maybe (Maybe (Maybe n)) -> Maybe c))
23:05:11 <olsner> Vorpal: I guarantee your local food store has worcestershire sauce
23:05:16 <Vorpal> pikhq_, like "sauce"? Lol
23:05:19 <pikhq_> Vorpal: Yup.
23:05:19 <Gregor> elliott: Everyone just calls it wfhdioasfhoisder sauce.
23:05:33 <elliott> http://upload.wikimedia.org/wikipedia/commons/5/5f/Leaperrins.png
23:05:38 <elliott> DOUBLY APPETISING
23:05:48 <elliott> DOUBLY DIGESTIBLE
23:05:51 <Phantom_Hoover> Vorpal, think of the most racist way to say <western thing> in Japanese; that is how the Japanese say it,
23:05:57 <Vorpal> olsner, sure? That would be OKQ8's small food section that is closest I think. ;P
23:06:04 <Phantom_Hoover> elliott, so digestible.
23:06:07 <Phantom_Hoover> Like
23:06:20 <pikhq_> Phantom_Hoover: Actually, most people really suck at mock-Engrish.
23:06:26 <Phantom_Hoover> you put it in your mouth and it turns into crap in like 10 seconds it's so digestible
23:06:34 <elliott> Phantom_Hoover: X-D
23:06:39 <Vorpal> olsner, I suspect the closest Coop Forum has it. Maybe even the local ICA Maxi.
23:06:45 <Phantom_Hoover> pikhq_, yes, there's nothing I hate more than poorly-executed racism.
23:07:07 <elliott> Vorpal: Those are the worst store names.
23:07:14 <Vorpal> elliott, yes
23:07:20 <olsner> Vorpal: okq8? that's not a food store, that's a gas station
23:07:24 <Phantom_Hoover> Over here we just call it the co
23:07:25 <Phantom_Hoover> op
23:07:36 <Phantom_Hoover> (That line break is part of the name, it seems.)
23:07:39 <elliott> Phantom_Hoover: No no now it's "the co-operative" all-lowercase.
23:07:49 <Vorpal> olsner, indeed. But they sell milk and some other basic food stuff iirc
23:07:50 <elliott> Phantom_Hoover: The MOST STUNNING REBRAND.
23:07:54 <Vorpal> olsner, like, one wall
23:07:54 <Phantom_Hoover> the coöperative.
23:07:56 <elliott> Phantom_Hoover: (I kind of miss the old
23:07:57 <elliott> co
23:07:57 <elliott> op
23:07:58 <elliott> logo.)
23:08:06 <Phantom_Hoover> They changed it????????????
23:08:11 <elliott> Phantom_Hoover: Dude.
23:08:21 <elliott> Phantom_Hoover: http://upload.wikimedia.org/wikipedia/en/e/e2/Cooperativebrand.svg
23:08:28 <Phantom_Hoover> i am
23:08:30 <Phantom_Hoover> so sad
23:08:33 <elliott> http://upload.wikimedia.org/wikipedia/commons/2/21/Drighlington_co-op.jpg
23:08:40 <Vorpal> elliott, this logo is horrible: https://en.wikipedia.org/wiki/File:Coop_Forum.png
23:08:46 <Phantom_Hoover> my childhood
23:08:48 <Phantom_Hoover> is dead
23:08:52 <elliott> Phantom_Hoover: Have you heard their adverts I can never stop laughing whenever I hear "GUD WITH FUD".
23:08:55 -!- copumpkin has joined.
23:09:01 <elliott> Vorpal: Ow.
23:09:04 <olsner> coop is never said as two words in swedish (although it does mean co-operative something), it's just ko:p
23:09:29 <olsner> if my pseudophonetic writing makes sense
23:09:33 <Phantom_Hoover> OMG .coop is a TLD.
23:09:37 <elliott> Phantom_Hoover: No shit???
23:09:40 <Phantom_Hoover> chicken.coop
23:09:47 <Vorpal> Phantom_Hoover, hey, they called "coop forum" "Obs!" when I grew up.
23:09:50 <elliott> Phantom_Hoover: Taken.
23:09:57 <Phantom_Hoover> best name
23:10:07 <elliott> Phantom_Hoover: By the Montana Poultry Growers Cooperative.
23:10:21 <Vorpal> ouch
23:10:27 <Vorpal> the joke is lost there....
23:10:27 * Phantom_Hoover → sleep
23:10:29 -!- Phantom_Hoover has quit (Quit: Leaving).
23:10:46 <Vorpal> elliott, anyway how is "ICA" such a terrible food store name?
23:10:54 <elliott> Vorpal: ais523, for one!
23:11:02 <Vorpal> what?
23:11:10 <Vorpal> elliott, at least they don't change name every 5 years or so like coop does
23:11:24 <olsner> co-operative food ... they specialize in food that doesn't fight you when you try to eat it?
23:11:53 <elliott> Yes.
23:11:57 <Vorpal> elliott, I don't ever remember these guys changing their logo: https://en.wikipedia.org/wiki/File:Ica_logo.svg
23:11:58 <elliott> It's like Milliways.
23:12:17 <Vorpal> I believe it is a franchise organisation with a common brand actually.
23:12:27 <elliott> ais523: Heyyyy, everyone calls it Concurrent Idealised Algol. Do they just acronym it differently to avoid "CIA"? :p
23:13:30 <ais523> it's Idealised Concurrent Algol in the papers I've seen
23:13:48 <Vorpal> elliott, anyway: https://en.wikipedia.org/wiki/ICA_AB
23:14:01 <elliott> ais523: http://www.google.co.uk/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=idealised+concurrent+algol
23:14:12 <elliott> all top results say "Concurrent Idealised ALGOL" or "CIA"
23:14:21 <elliott> ais523: first result that doesn't is that dan ghica guy :P
23:14:28 <ais523> elliott: they're all the same paper :)
23:14:33 <elliott> oh, haha
23:14:59 <elliott> ais523: hmm... there's a different paper referencing CIA on the second page and the ones that don't are Ghica too :P
23:15:02 <ais523> gah, you just made me lose my /dev/null game through distraction
23:15:03 -!- MDude has quit (Ping timeout: 255 seconds).
23:15:04 <elliott> I THINK HE'S HIDING THE TRUTH FROM YOU
23:15:06 <elliott> whoops
23:15:21 <Vorpal> ais523, how, nethack is turn based!
23:15:28 <elliott> ais523: I... will give you my first-born?
23:15:37 <Vorpal> <oracle\devnull> DIED : ais523 (Val-Dwa-Fem-Law) 232346 points, killed by a disenchanter on jaafar.devnull.net
23:15:40 <Vorpal> ouch
23:15:41 <ais523> Vorpal: I was paying too much attention to elliott and not enough to my HP
23:15:47 <elliott> `addquote <ais523> Vorpal: I was paying too much attention to elliott and not enough to my HP
23:15:48 <ais523> elliott: it's OK
23:15:49 <HackEgo> 704) <ais523> Vorpal: I was paying too much attention to elliott and not enough to my HP
23:15:57 <ais523> also, that's not a massively good quote
23:15:57 <elliott> ais523: No, I just really don't like children.
23:16:02 <ais523> haha
23:16:16 <Vorpal> ais523, it is kind of funny out of contecxt
23:16:18 * elliott gets a great idea
23:16:21 <Vorpal> context*
23:18:12 <elliott> ais523: quick, what should I call the command to delete the last quote that was brought up?
23:18:28 <ais523> elliott: `dellastquote?
23:18:46 <elliott> ais523: how inelegant!
23:18:52 <elliott> I was thinking `begone
23:18:59 <ais523> that'd do too
23:19:03 <ais523> watch out for race conditions
23:19:16 <ais523> e.g. if there's been a `quote in the last 5 seconds, do nothing
23:19:31 <elliott> ais523: meh, `revert
23:19:35 <olsner> unquote?
23:19:40 <elliott> olsner++++
23:19:45 <ais523> beautiful
23:19:48 <Vorpal> perfect
23:20:26 <elliott> `quote
23:20:29 <HackEgo> No output.
23:20:32 <elliott> oops :/
23:20:35 <Vorpal> how...
23:20:39 <elliott> `url bin/quote
23:20:41 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/quote
23:20:49 <elliott> hmm...
23:20:54 <elliott> what's wrong with that?
23:20:55 <elliott> oh, duh
23:21:23 <elliott> `run echo hi | tee >(cat >test); cat test
23:21:24 <HackEgo> sh: Syntax error: "(" unexpected
23:21:29 <elliott> :/
23:21:34 <elliott> `run echo hi | tee >>(cat >test); cat test
23:21:36 <HackEgo> sh: Syntax error: "(" unexpected
23:21:37 <elliott> `run echo hi | tee ><(cat >test); cat test
23:21:38 <HackEgo> sh: Syntax error: redirection unexpected
23:21:42 <elliott> Vorpal: hepl
23:21:47 <Vorpal> what are you doing
23:21:55 <elliott> Vorpal: you how know <(...) passes an fd from a subshell?
23:21:58 <elliott> I want that, but for output
23:22:05 <Vorpal> elliott, I don't think that works
23:22:07 <elliott> so that tee writes to a subshell instead
23:22:09 <Vorpal> elliott, you could use a | pipe
23:22:15 <elliott> Vorpal: no i can't
23:22:17 <elliott> i need to tee it
23:22:17 <Vorpal> like tee | (cat >test)
23:22:18 <Vorpal> I guess
23:22:22 <elliott> that...
23:22:24 <elliott> do you know how tee works?
23:22:33 <Vorpal> elliott, well obviously it won't work here
23:22:43 <Vorpal> but basically I don't think you can do what you ask for
23:22:51 -!- ais523 has quit (Remote host closed the connection).
23:22:59 <olsner> maybe something like ... 7<(foo) >&7 would work? except that I think it doesn't work
23:23:16 <Vorpal> olsner, looks to me like it would get two inputs?
23:23:19 <elliott> `quote
23:23:21 <HackEgo> 300) <zzo38> Why do you want to have sex in everything? I don't want.
23:23:25 <elliott> `quote
23:23:27 <HackEgo> 340) <oklopol> haha, god made one helluva blunder there :DS <oklopol> "WHOOPS HE AIN'T DEAD YET!" <oklopol> "luckily no one will believe him because christians are such annoying retards"
23:23:29 <elliott> `quote
23:23:31 <HackEgo> 146) <fungot> ais523: killer bunnies can be harmed by domesticated canines only.
23:23:34 <elliott> `quote
23:23:35 <olsner> Vorpal: yes, but at a file descriptor you don't care about
23:23:36 -!- pikhq has joined.
23:23:37 <HackEgo> 239) <Sgeo> Is there a name for something where I'm more attracted to someone if I know they've had a rough past? <variable> Sgeo, "Little Shop of Horrors"
23:23:44 <elliott> `unquote
23:23:46 <HackEgo> ​*poof*
23:23:49 <elliott> `quote 239
23:23:51 <Vorpal> olsner, well sure, but foo will see it as output, not input
23:23:51 <HackEgo> 239) <fizzie> And to think: if only we wouldn't celebrate birthdays, there would be no birthday paradox, and we could get by with half as long hash functions. (What do you mean it doesn't work that way?)
23:23:52 <pikhq> `run bash -c "echo hi | tee >(cat >test); cat test"
23:23:55 <HackEgo> hi
23:24:03 <elliott> pikhq: oh, heh
23:24:07 <elliott> `rm test
23:24:08 <HackEgo> No output.
23:24:11 <elliott> `help
23:24:12 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:24:17 <pikhq> >(...) is a bash/zsh/probably ksh-ism.
23:24:24 <elliott> oh, wait
23:24:26 <elliott> this is probably a bad idea
23:24:29 <elliott> every `quote causes a commit
23:24:32 <elliott> ...eh, who cares :)
23:24:32 <pikhq> And HackEgo's /bin/sh is, of course, dash.
23:24:40 <elliott> `revert 787
23:24:42 <HackEgo> Done.
23:24:43 <elliott> (just to undo my test delete)
23:24:50 <Vorpal> ah, so bash supports
23:24:56 <Vorpal> supports it, but it isn't posix
23:24:58 <Vorpal> well right
23:25:02 <elliott> `quote
23:25:04 <HackEgo> 590) <Phantom_Hoover> The fact that the elves will be happy with this will hopefully be counteracted by the fact that I plan to drop them into the magma cistern.
23:25:05 <elliott> `unquote
23:25:08 <HackEgo> ​*poof*
23:25:09 <elliott> `unquote
23:25:11 <HackEgo> cut: lastquote: No such file or directory \ rm: cannot remove `lastquote': No such file or directory
23:25:15 <elliott> yay :P
23:25:23 <elliott> `revert 787
23:25:25 <HackEgo> Done.
23:25:25 <elliott> er
23:25:31 <Vorpal> elliott, every quote causing a commit? ouch
23:25:35 <elliott> `revert 793
23:25:36 <HackEgo> Done.
23:25:37 <Vorpal> elliott, lets see what Gregor says to that
23:25:43 <elliott> Vorpal: shrug :) it already runs "hg commit"
23:25:46 <elliott> just ends up as an empty commit
23:25:55 <elliott> he squashes the repo anyway
23:26:27 <elliott> (see http://codu.org/projects/hackbot/fshg/index.cgi/shortlog/cdae49db4615)
23:26:45 -!- pikhq_ has quit (Ping timeout: 255 seconds).
23:27:57 <olsner> if you addquote after the last quote, does unquote remove quote's quote rather than addquote's quote?
23:28:20 <zzo38> No you should require a parameter
23:28:30 <elliott> [elliott@dinky nondet]$ ./a.out
23:28:31 <elliott> [elliott@dinky nondet]$ echo $?
23:28:31 <elliott> 14
23:28:31 <elliott> [elliott@dinky nondet]$ ./a.out
23:28:31 <elliott> [elliott@dinky nondet]$ echo $?
23:28:31 <elliott> 14
23:28:33 <elliott> [elliott@dinky nondet]$ ./a.out
23:28:35 <elliott> [elliott@dinky nondet]$ echo $?
23:28:37 <elliott> 14
23:28:37 <Vorpal> zzo38, ... the whole point was to NOT require that
23:28:39 <elliott> wow
23:28:41 <elliott> olsner: hmm, yes
23:28:45 <elliott> olsner: I can fix that if you want :P
23:29:05 <zzo38> Vorpal: Then there is no way that it could work properly, I think.
23:29:06 <elliott> oh!
23:29:07 <elliott> i'm an idiot
23:29:11 <olsner> elliott: I could be convinced that it's a surprise feature though
23:29:21 <Vorpal> zzo38, ... it is supposed to refer to last quote all the time
23:30:19 <zzo38> Vorpal: You could make it do that, but what if someone add one in between?
23:30:37 <zzo38> Even possibly by private message?
23:31:08 <Vorpal> zzo38, ask elliott
23:33:20 <olsner> if delquote and unquote prints which quote actually got deleted, you can fix it when there was a race condition and you didn't win
23:33:51 <elliott> hmm, you're not allowed to printf from a signal handler, right?
23:34:00 <Vorpal> elliott, definitely not
23:34:10 <elliott> right :)
23:34:15 <elliott> that explains why redirecting to a file made my program silent
23:34:25 * elliott wonders how to do this
23:34:36 <Vorpal> elliott, see man 7 signal, it has a list of safe functions about halfway down
23:34:47 <elliott> yeah, but unless one of those is write i don't care much :P
23:34:59 <Vorpal> elliott, what are you trying to do?
23:35:07 <elliott> write my Secret Project-breaking program
23:35:10 <Vorpal> elliott, one of them is write
23:35:17 <elliott> oh, it is?
23:35:20 <elliott> then why doesn't printf work :(
23:35:24 <Vorpal> elliott, probably not on stdio
23:35:26 <Vorpal> elliott, stdio buffers
23:35:31 <olsner> printf might malloc, and iirc glibc's printf does indeed malloc
23:35:33 <elliott> you can't use write "on stdio"
23:35:38 <Vorpal> elliott, indeed
23:35:44 <Vorpal> elliott, that is kind of the point
23:35:50 <elliott> but fine, I'll use a static buffer
23:35:51 <elliott> le sigh
23:35:58 <elliott> does sprintf malloc
23:36:03 <Vorpal> elliott, it might
23:36:21 <elliott> but does it :)
23:36:23 <Vorpal> elliott, none of the stdio functions seem to be safe
23:36:27 <Vorpal> according to that docs
23:36:32 <elliott> hmph
23:36:36 <Vorpal> actually fstat
23:36:42 <Vorpal> but that is useless to yo
23:36:43 <Vorpal> you*
23:36:45 <elliott> i could use write if i just used an unsigned char
23:36:48 <elliott> but i'd have to reduce my wait time
23:37:23 <Vorpal> elliott, anyway what are you doing?
23:37:29 <elliott> <elliott> write my Secret Project-breaking program
23:37:37 <Vorpal> elliott, I meant how are you doing that
23:37:51 <Vorpal> elliott, as in, what is the thing you are making use of to break it
23:37:53 <elliott> Vorpal: by relying on the timing of busyloops:
23:37:56 <elliott> volatile unsigned char i = 0;
23:37:56 <elliott> void handle(int sig)
23:37:56 <elliott> {
23:37:56 <elliott> write(0, &i, 1);
23:37:56 <elliott> }
23:37:56 <elliott> int main()
23:37:58 <elliott> {
23:38:00 <elliott> signal(SIGALRM, handle);
23:38:02 <elliott> ualarm(1, 10000);
23:38:03 <olsner> elliott: as I remember it, all the *printf functions do indeed call malloc (in glibc), even the ones you expect to be safe and even if you don't use any fancy features
23:38:04 <elliott> for (;;) i++;
23:38:06 <elliott> }
23:38:12 <Vorpal> elliott, heh
23:38:20 <elliott> erm
23:38:21 <elliott> is 0 stdout
23:38:25 <elliott> because redirecting it isn't doing shit
23:38:26 <olsner> (at least I think that's why I had to write my own simple printf in my malloc)
23:38:31 <elliott> olsner: gross
23:38:32 <Vorpal> elliott, lets see what ais has to say about that
23:38:38 <elliott> Vorpal: i already asked him
23:38:41 <elliott> he said it doesn't handle that
23:38:42 <olsner> 0=stdin, 1=stdout, right?
23:38:48 <Vorpal> elliott, ah
23:38:49 <elliott> olsner: oh... writing to stdin just happened to work :)
23:39:05 <Vorpal> elliott, impressive
23:39:08 <elliott> [elliott@dinky nondet]$ ./a.out | head -c 100 >a
23:39:08 <elliott> [elliott@dinky nondet]$ ./a.out | head -c 100 >b
23:39:08 <elliott> [elliott@dinky nondet]$ diff a b
23:39:08 <elliott> Binary files a and b differ
23:39:08 <elliott> there we go
23:39:12 <elliott> Vorpal: not really, it'll point to /dev/tty
23:39:26 <Vorpal> ah
23:39:53 <elliott> conclusion: you can technically get a PRNG going properly in the Secret Project :)
23:39:58 <elliott> it won't be very good, though
23:40:06 <elliott> anyway, I don't think there's any way to exploit this without trying really hard to
23:40:16 <elliott> so the risk of it happening accidentally is nil
23:40:20 <Vorpal> yeah
23:40:26 <Vorpal> elliott, you could apply whitening to the PRNG
23:40:26 <olsner> what does the secret project do, and how is it interesting that you can make a PRNG in it?
23:40:52 <Vorpal> olsner, it tries hard to make executing a linux binary deterministic
23:40:53 <elliott> olsner: makes linux deterministic
23:41:05 <elliott> unless you do a tricky busyloop :P
23:41:06 <Vorpal> olsner, it is ais523's secret project
23:41:19 <Vorpal> elliott, there might be other ways to exploit it
23:41:21 <Vorpal> hard to tell
23:41:34 <elliott> Vorpal: nah, anything that does a syscall will be forced to be deterministic, I think
23:41:35 <Vorpal> elliott, anyway you could use the above way to seed a proper PRNG.
23:41:40 <elliott> or maybe just any blocking syscall
23:41:42 <olsner> so it's ... not so secret after all? or was the secret recently revealed?
23:41:56 <elliott> Vorpal: anyway, that's what i meant
23:41:58 <Vorpal> olsner, the secret is in wtf ais plan to use it fore
23:41:59 <Vorpal> for*
23:42:05 <Vorpal> elliott, ah
23:42:05 <elliott> Vorpal: btw, if ais is clever this won't work
23:42:11 <elliott> Vorpal: he could fake alarm/ualarm
23:42:16 <Vorpal> elliott, to do what?
23:42:17 <elliott> Vorpal: he isn't providing a clock, after all
23:42:23 <elliott> so it could just allow N context switches
23:42:24 <elliott> or whatever
23:42:25 <elliott> and then trigger
23:42:27 <Vorpal> heh
23:42:36 <elliott> Vorpal: I think you could exploit it with two threads, though
23:42:38 <elliott> one busylooping increment
23:42:42 <elliott> and one repeatedly doing:
23:42:43 <elliott> finite busyloop
23:42:45 <elliott> read value
23:42:53 <elliott> the values you get would differ on each run
23:42:57 <Vorpal> yeah
23:42:58 <elliott> basically replacing alarm() with a loop :)
23:43:02 <elliott> hmm
23:43:05 <elliott> I should implement that in this
23:43:18 <elliott> I wonder if I could use clone() to avoid dealing with pthreads :)
23:43:36 <Vorpal> elliott, how does SP work wrt multi-core? If it effectively causes -j1 then it is pretty useless for your purpose
23:43:58 <elliott> Vorpal: well, it's a deterministic scheduler, so it obviously can't do SMP
23:44:01 <elliott> Vorpal: but -j1 isn't that bad
23:44:10 <Vorpal> elliott, lets build openoffice
23:44:10 <elliott> Vorpal: this is going to be done on build machines, they don't have anything better to do all day
23:44:16 <elliott> Vorpal: dude, I can just build three packages at the same tmie
23:44:17 <elliott> time
23:44:17 <Vorpal> at -j1
23:44:21 <elliott> that's like -j3
23:44:21 <Vorpal> well sure
23:44:29 <elliott> they're build bots, they have nothing better to do :P
23:45:03 <Vorpal> elliott, still if a user ever wants to build a package locally for whatever reason (patching it or changing options or whatever) that will be painful
23:45:15 <elliott> not that painful, it's never going to do much more than a small division of the time it'll take
23:45:31 <elliott> if you can wait an hour you can wait ten :)
23:45:39 <elliott> Vorpal: but it's true, I could deal without the scheduler parts
23:45:51 <elliott> Vorpal: but I could always just rip out the rest
23:45:59 <Vorpal> elliott, assume an 8 core system. Assume a build time of 8 hours (probably not that unrealistic for openoffice -j1...)
23:46:12 <Vorpal> now you could potentially cut it to close to 1 hour
23:46:21 <Vorpal> probably a bit more due to deps
23:46:34 <elliott> Vorpal: that's hardly any better, since your computer will be much closer to functionally useless for the latter :)
23:46:45 <elliott> who the fuck builds their own openoffice, anyway?
23:46:55 <Vorpal> good question
23:46:58 <elliott> Vorpal: btw, you can still benefit from -j just like single-core machines do
23:46:59 <elliott> for io-bound stuff
23:47:12 <elliott> like compiling :p
23:47:17 <Vorpal> elliott, anyway what about 7 hours and using -j7 on an 8 core machine. You can still run fine on one core
23:47:39 <elliott> you bought an 8 core machine just to compile openoffice?
23:47:53 <Vorpal> elliott, btw iirc suexec of apache needs a PRNG during compile time iirc. I have a vague memory of reading a convoluted explanation for that.
23:47:57 <Vorpal> elliott, XD
23:48:05 <elliott> Vorpal: it can have a prng
23:48:08 <elliott> it'll just have a constant seed
23:48:23 <olsner> so Vorpal is secretly an openoffice developer?
23:48:33 <elliott> it's his shame
23:48:36 <zzo38> I think the name "q" is too short I can call a program "AstroQ" instead, and based on Swiss Ephemeris. Another idea would be the feature that you can input dates in Discordian calendar (both literal and standard interpretations)
23:48:44 <elliott> shouldn't we be talking about libreoffice nowadays
23:48:45 <Vorpal> olsner, no
23:48:50 <elliott> zzo38: I like AstroQ
23:48:52 <Vorpal> elliott, oh, good point
23:49:11 <elliott> Vorpal: if you have a source for that suexec thing that'd be fun
23:49:40 <zzo38> elliott: OK.
23:50:07 <elliott> hmm, I think this paper would be more interesting if it had sold me on its original premise
23:50:36 <Vorpal> elliott, this was back during like apache 1.3 or something I read it.
23:51:14 <Vorpal> elliott, I can't find any mention of it in the modern apache docs
23:51:18 <elliott> :(
23:51:22 <Vorpal> so who knows, I might even misremember
23:51:33 <elliott> i could buy it needing a prng at runtime
23:51:37 <elliott> but at build time? binary packages would destroy that
23:51:44 <Vorpal> hm
23:52:23 <elliott> god, if there's one thing i hate more than slavery, it's two-column pdfs
23:52:30 <Vorpal> elliott, why?
23:52:38 <elliott> i have to scroll up whenever i reach the bottom of a page
23:52:39 <elliott> it's stupid
23:53:06 <Vorpal> elliott, that wasn't what I asked. Anyway those PDFs are obviously intended for printing or viewing on an upright display
23:53:15 <Vorpal> note: my current desktop monitor can't be rotated :(
23:53:44 <Vorpal> elliott, the question was obviously "why is slavery that almost as bad as two-column pdfs"
23:54:16 <elliott> heh
23:54:55 <Vorpal> anyway rotating monitors tend to be annoying to rotate. The cables get stuck in the wrong place and so on.
23:56:05 <Vorpal> elliott, so, what paper are you reading=
23:56:07 <Vorpal> s/=/?/
23:56:18 <elliott> thing about nix
23:56:43 <olsner> oh, "Building the product can take 8/number_cores hours on a reasonably recent processor ..."
23:56:46 <olsner> looks like Vorpal knew the build time for libreoffice, further proof that he is indeed one of them
23:57:18 <Vorpal> olsner, that was a pure speculation. I seem to remember something like 6 hours though
23:57:42 <Vorpal> olsner, anyway I selected that because the numbers became easy: 8/8=1
23:59:06 <elliott> `fetch http://sprunge.us/gPij
23:59:07 <HackEgo> 2011-11-02 23:59:07 URL:http://sprunge.us/gPij [243] -> "gPij" [1]
23:59:15 <elliott> `run mv gPij bin/delquote; chmod +x bin/delquote
23:59:17 <HackEgo> No output.
23:59:20 <elliott> `addquote poop butt
23:59:22 <HackEgo> 705) poop butt
23:59:25 <olsner> Vorpal: right, the only problem is that that's exactly what we'd expect one of them to say
23:59:26 <elliott> `unquote
23:59:28 <HackEgo> cut: the delimiter must be a single character \ Try `cut --help' for more information. \ *poof*
23:59:31 <elliott> yay
23:59:36 <elliott> `quote 705
23:59:38 <HackEgo> No output.
23:59:49 <elliott> well, it kind of works
2011-11-03
00:00:15 <Vorpal> olsner, you could check contributor list?
00:00:30 <monqy> `quote
00:00:32 <HackEgo> 89) <Ami> Discrimination fields ACTIVATE.
00:00:39 <monqy> `quote 704
00:00:41 <HackEgo> 704) <ais523> Vorpal: I was paying too much attention to elliott and not enough to my HP
00:00:59 <elliott> `run echo "99) x" | cut -d') ' -f2-
00:01:00 <HackEgo> cut: the delimiter must be a single character \ Try `cut --help' for more information.
00:01:05 <elliott> `run echo "99) x" | cut -d')' -f2-
00:01:05 <olsner> In constructor 'connectivity::OConnectionPool::OConnectionPool(const com::sun::star::uno::Reference<com::sun::star::sdbc::XDriver>&, const com::sun::star::uno::Reference<com::sun::star::uno::XInterface>&, const com::sun::star::uno::Reference<com::sun::star::reflection::XProxyFactory>&)':
00:01:06 <HackEgo> x
00:01:18 <Vorpal> olsner, ouch, wtf is that crap?
00:01:19 <elliott> `run echo -n A; echo "99) x" | cut -d')' -f2- | tail -c +1; echo -n B
00:01:20 <HackEgo> A x \ B
00:01:30 <elliott> `run echo -n A; echo "99) x" | cut -d')' -f2- | tail -c +2; echo -n B
00:01:32 <HackEgo> Ax \ B
00:01:48 <olsner> Vorpal: as you already know, libreoffice
00:01:53 <elliott> `fetch http://sprunge.us/QDQC
00:01:55 <HackEgo> 2011-11-03 00:01:54 URL:http://sprunge.us/QDQC [241] -> "QDQC" [1]
00:01:56 <Vorpal> olsner, is someone applying java style com.sun.whatever to C++ code?
00:01:57 <Vorpal> eww
00:02:00 <elliott> `run mv QDQC bin/delquote; chmod +x bin/delquote
00:02:02 <HackEgo> No output.
00:02:04 <Vorpal> that is just gross
00:02:08 <elliott> `addquote haha moron mountain
00:02:10 <HackEgo> 705) haha moron mountain
00:02:13 <elliott> `unquote
00:02:15 <HackEgo> ​*poof* haha moron mountain
00:02:18 <elliott> `quote
00:02:20 <HackEgo> 401) <fizzie> [...] So it'll be a while before the boob will touch you back.
00:02:21 <Vorpal> `quote
00:02:23 <HackEgo> 140) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. <cpressey> To comply with the GFDL, there's a copy of Wikipedia in there.
00:02:26 <elliott> `quote
00:02:27 <Vorpal> `quote
00:02:28 <HackEgo> 31) <zzo38> I am not on the moon.
00:02:29 <HackEgo> 320) <olsner> it is from 2002 though, I was younger then
00:02:36 <elliott> `unquote
00:02:38 <Vorpal> `quote
00:02:41 <elliott> Vorpal: idiot
00:02:42 <HackEgo> 550) <itidus20> like i could ask how many "petals" are there on each of the "flowers" on this coffee mug i just made a drink with <itidus20> but that would be NP hard I think
00:02:42 <HackEgo> ​*poof* <zzo38> I am not on the moon.
00:02:45 <Vorpal> elliott, what?
00:03:02 <elliott> Vorpal: `quote as i `unquote
00:03:06 <elliott> `undo...that
00:03:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: undo...that: not found
00:03:10 <elliott> `help
00:03:11 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
00:03:13 <Vorpal> elliott, mine came after
00:03:18 <Vorpal> <elliott> `quote
00:03:18 <Vorpal> <Vorpal> `quote
00:03:18 <Vorpal> <HackEgo> 31) <zzo38> I am not on the moon.
00:03:18 <Vorpal> <HackEgo> 320) <olsner> it is from 2002 though, I was younger then
00:03:18 <Vorpal> <elliott> `unquote
00:03:19 <Vorpal> <Vorpal> `quote
00:03:21 <Vorpal> that is what I saw
00:03:22 <elliott> Gregor: pls make `revert go to last revision, thanks
00:03:51 <elliott> `revert 812
00:03:52 <HackEgo> Done.
00:04:05 <monqy> `quote 31
00:04:07 <HackEgo> 31) <zzo38> I am not on the moon.
00:04:24 -!- MSleep has joined.
00:05:11 <olsner> `quote
00:05:13 <HackEgo> 268) <ais523> gah, why does lose keep winning?
00:05:28 <Vorpal> `quote
00:05:30 <HackEgo> 254) <nddrylliog> are you always careful to have a small enough margin so that it can't contain the proof? <oklofok> nddrylliog: i usually use latex, and make sure my hd is almost full
00:05:42 <Vorpal> `quote
00:05:44 <HackEgo> 83) <Sgeo> I'd imagine that it already has, and no one noticed
00:05:52 <Vorpal> that what already has?
00:05:59 <elliott> `unquote
00:06:02 <monqy> bad quote
00:06:02 <HackEgo> ​*poof* <Sgeo> I'd imagine that it already has, and no one noticed
00:06:03 <Vorpal> yeah
00:06:05 <olsner> `quote 82
00:06:06 <Vorpal> `quote
00:06:06 <elliott> `log <Sgeo> I'd imagine that it already has, and no one noticed
00:06:07 <HackEgo> 82) <coppro> hmm... does anyone know a nonsense game designed for the mentally handicapped involving yelling
00:06:17 <Vorpal> `quote
00:06:22 <HackEgo> 697) <zzo38> Can you file for univorce if you are unmarried and don't like yourself anymore?
00:06:27 <elliott> `log <Sgeo> I'd imagine that it already has, and no one noticed
00:06:30 <Vorpal> `quote
00:06:35 <HackEgo> 358) <crystal-cola> what telnets are there [...] <crystal-cola> where are a list of telnets?
00:06:35 <elliott> Vorpal: stop clogging it
00:06:38 <HackEgo> 63) <oklopol> if a girl is that cute, i don't care how many penises she has
00:06:38 <HackEgo> No output.
00:06:42 <elliott> `log <Sgeo> I'd imagine that it already has, and no one noticed
00:06:59 <HackEgo> No output.
00:07:05 <Vorpal> `quote
00:07:08 <HackEgo> 2011-08-13.txt:01:49:52: <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 8) <SimonRC> TODO: sex life \ 66) <Sgeo> What else is there to vim besides editing commands? \ 90) <Sgeo> I'd imagine that it already has, and no one noticed \ 92) <Sgeo|web> Where's the link to the log? <lament>
00:07:08 <HackEgo> 99) <fax> oklopol geez what are you doing here <oklokok> ...i don't know :< <oklokok> i actually ate until now, although i guess i also did other things...
00:07:32 <Vorpal> it said no output then gave you the lock entry?
00:07:34 <Vorpal> strange
00:07:41 <elliott> "The most risky part of the intensional model is the use of hash
00:07:41 <elliott> rewriting. It comes as a shock to some that this even works, i.e.,
00:07:41 <elliott> doesn’t produce broken binaries. In [2], we even wrote that “patch-
00:07:41 <elliott> ing files [by rewriting hashes] is unlikely to work in general, e.g.,
00:07:41 <elliott> due to internal checksums on files being invalidated in the process.”
00:07:42 <elliott> It turns out that this assessment was too pessimistic."
00:08:33 <Vorpal> only installers and unpackers and such really check internal checksums
00:08:39 <Vorpal> at least in my experience
00:08:58 <elliott> I think .jars will break
00:09:00 <elliott> see: META-INF
00:09:06 <elliott> but you can just trash META-INF
00:09:21 <Vorpal> elliott, well, the .jars don't need ELF patching
00:09:28 <Vorpal> that wouldn't even make sense
00:09:47 <elliott> Vorpal: this isn't talking about ELF patching, what makes you think it is
00:10:00 <Vorpal> elliott, oh
00:10:01 <Vorpal> okay
00:10:05 <elliott> this is about rewriting references to a fake prefix after the fact
00:10:08 <elliott> because the prefix depends on the output
00:10:15 -!- ive has joined.
00:10:29 <Vorpal> elliott, what if it the length ends up wrong or such for the embedded string
00:10:38 <elliott> Vorpal: the part being replaced is a hash
00:10:42 <Vorpal> ah
00:11:03 <Vorpal> elliott, what is the use of it?
00:11:30 <elliott> Vorpal: content-based addressing for safe sharing of binary builds between multiple users from possibly-untrusted sources in Nix
00:11:40 <Vorpal> ah
00:12:49 <elliott> Vorpal: (without mutual trust between users)
00:13:39 <Vorpal> obviously
00:14:51 -!- sllide has quit (Read error: Connection reset by peer).
00:15:52 -!- CakeProphet has joined.
00:16:09 <CakeProphet> higuys
00:16:17 <CakeProphet> `log sincere idle thought
00:16:23 <HackEgo> 2011-11-03.txt:00:16:17: <CakeProphet> `log sincere idle thought
00:16:31 <CakeProphet> `log idle thought
00:16:37 <HackEgo> 2006-08-20.txt:01:09:41: <pikhq> Just idle thought.
00:18:25 <elliott> CakeProphet: ?
00:18:41 <elliott> CakeProphet: Anyway, re:
00:18:42 <elliott> 07:32:55: <Sgeo|web> ...you haven't seen Cascade yet?
00:18:43 <elliott> 07:33:08: <Sgeo|web> Go watch that, then the first [S] of the intermission
00:18:43 <elliott> 07:33:35: <CakeProphet> ....I'm watching it right now, obviously.
00:18:43 <elliott> 07:33:38: <CakeProphet> as I just talked about it loading...
00:18:53 <CakeProphet> elliott: ugh read the logs sheesh you'll totally understand why I just did that.
00:18:57 <elliott> CakeProphet: Sgeo was surprised because Cascade has been out since the 25th and everyone has seen it by now.
00:19:23 * CakeProphet is untrendy.
00:19:50 <CakeProphet> I got tired of waiting for updates so I took a break from homestuck.
00:20:02 <CakeProphet> but then finally decided since cool new stuff is happening I should check it out.
00:20:24 <CakeProphet> fortunately none of this makes any difference in the outcome of, well, anything.
00:20:26 <elliott> CakeProphet: You realise the hiatus was announced ahead of time?
00:20:31 <CakeProphet> yep.
00:20:49 <CakeProphet> I was referring more to waiting in general.
00:21:01 <CakeProphet> I was just going to forget about Homestuck and then revisit once a new mass of updates had surfaced.
00:21:48 <CakeProphet> as a way to short circuit my impatience. :D
00:22:35 <elliott> http://www.flickr.com/photos/eelcovisser/367433201/
00:22:37 <elliott> I need me one of these.
00:22:40 -!- tiffany has quit (Quit: Leaving).
00:23:08 <CakeProphet> elliott: I think instead you need
00:23:08 <CakeProphet> http://3.bp.blogspot.com/_0-b7ADnCqWs/S8JVH96_M1I/AAAAAAAAAG0/Eb1T9FutITM/s1600/rims.jpg
00:23:12 <CakeProphet> these dope rims.
00:24:09 <zzo38> Could the feature of Swiss Ephemeris to make fictitious planets be used to calculate the Ecclesiastical moon or the positions of where artificial satellites are supposed to be?
00:24:20 <CakeProphet> I imagine you need a step ladder to get in that thing.
00:24:37 <CakeProphet> though maybe somewhere in that blurry pixelation is a step-up bar.
00:24:49 <Vorpal> <elliott> http://www.flickr.com/photos/eelcovisser/367433201/ <-- is that a 4-power cord PSU?
00:25:05 <Vorpal> I wasn't aware more than 2 power cords for a PSU existed
00:25:18 <CakeProphet> I wasn't aware rims could be quite this dope.
00:25:21 <elliott> I think it's just four PSUs.
00:25:33 <Vorpal> oh
00:26:02 <Vorpal> CakeProphet, is that a weird no-air tyre?
00:26:22 <CakeProphet> I'm not sure. They may just be really thin.
00:26:42 <CakeProphet> but they certainly don't look inflated.
00:26:54 <CakeProphet> again, too many pixels and not enough tire to discern.
00:26:58 <Vorpal> hot-swappable PSUs are infinitely cool btw
00:27:21 <Vorpal> CakeProphet, don't you agree?
00:27:29 <elliott> Vorpal: Do you have a spare computer.
00:27:34 <Vorpal> elliott, why?
00:27:39 <elliott> Vorpal: I need a build farm.
00:27:52 <CakeProphet> Vorpal: as a mindless tool I must agree.
00:27:57 <Vorpal> elliott, not anything that would be useful to you. A pentium 3 with a dead hdd.
00:28:04 <elliott> Great! It's build1.
00:28:06 <Vorpal> and I don't have any other IDE disk
00:28:19 <elliott> It can just netboot and run from RAM.
00:28:19 <Vorpal> and VGA is dead on it
00:28:27 <elliott> It's a server, don't need a display!
00:28:28 <Vorpal> elliott, 256 MB RAM iirc
00:28:35 <elliott> It can compile very small packages.
00:28:36 <elliott> Slowly.
00:28:55 <Vorpal> elliott, XD
00:29:01 <Vorpal> elliott, you have that imac iirc
00:29:03 <Vorpal> use that
00:29:10 <elliott> No :P
00:29:26 <Vorpal> elliott, anyway this is a non-issue until you actually have a working distro
00:29:29 <CakeProphet> this is what a typical American drives. http://aofg.blogs.com/photos/uncategorized/2008/08/08/rims.jpg
00:29:30 <Vorpal> elliott, oh and it can't boot from usb iirc.
00:29:52 <CakeProphet> 50 miles to and from work every day.
00:30:12 <elliott> CakeProphet: I doubt they drive something with tyres like that.
00:30:12 <Vorpal> elliott, I have a first model ibook with 64 MB RAM too
00:30:28 <CakeProphet> elliott: hahahahaha tyres
00:30:31 <CakeProphet> also,
00:30:36 <CakeProphet> <--- PRIMARY SOURCE
00:30:41 <CakeProphet> totally reliable.
00:31:10 <CakeProphet> I am an eyewitness to native American (read: not the amerind kind) practices.
00:32:34 <pikhq> CakeProphet: That is more accurate than I want to admit.
00:32:44 <pikhq> elliott: Some morons actually drive with tires like that.
00:32:56 <pikhq> I don't think I've seen it on an SUV, but hey.
00:36:29 * CakeProphet considers retyring to bed soon.
00:37:22 <elliott> CakeProphet: You realise there are about two countries on the globe that say "tire", right?
00:37:23 -!- calamari has quit (Quit: Leaving).
00:38:14 <CakeProphet> elliott: well we both say "tire" I'm pretty sure.
00:38:22 <CakeProphet> :>
00:39:00 <elliott> I really need ops so I can kick CakeProphet.
00:39:31 <pikhq> CakeProphet: Which country are you from, anyways?
00:39:55 <CakeProphet> the United States of America.
00:40:40 <CakeProphet> elliott: I think it's probably bettre that you don't have ops.
00:40:43 <pikhq> elliott: "Tire" is the more etymologically correct spelling. It derives from Middle English "tire". :)
00:40:58 <elliott> pikhq: You're the more etymologically correct poop.
00:41:29 <elliott> Hey guys should I move on to the loooong thesis I'm so lazy.
00:41:44 <CakeProphet> long thesis is looooong.
00:44:31 <elliott> CakeProphet: You've convinced me, phd-thesis.pdf is oooopened.
00:44:36 <elliott> monqy: Read this thesis for me?
00:44:38 <elliott> I'm lazy.
00:44:57 <CakeProphet> I'm wondering how you could handle regular expressions like:
00:45:24 <elliott> What, is Eelco a common name in some country? This guy is called Eelco and so is his supervisor.
00:45:26 <CakeProphet> (long|.*) .* is (lo+ng|\1)
00:45:50 <elliott> CakeProphet: You don't.
00:45:52 <CakeProphet> where if the first choice in the first group is picked the first choice in the second group is forced.
00:46:05 <elliott> You can't even do ".* .* is lo+ng".
00:46:09 <elliott> Well.
00:46:13 <CakeProphet> without resorting to the usual Perl hacks.
00:46:15 <elliott> You can but it probably doesn't mean what you want.
00:46:24 <elliott> Depends, I guess.
00:46:28 <CakeProphet> okay well s/[.]/\S/g
00:46:45 <elliott> "The results of the present thesis
00:46:45 <elliott> are probably not what any of us had expected at the start; but then again, the nice thing
00:46:46 <elliott> about a term like “variability” is that it can take you in so many directions."
00:47:30 <CakeProphet> variably many directions, perhaps.
00:48:25 <elliott> "The #klaplopers provided a nice work environment in virtual space—though whether IRC
00:48:25 <elliott> is a medium that increases productivity remains an unanswered empirical question."
00:50:01 <CakeProphet> I suppose one way to do it would be to have a way to tag lists of alternate choices. lists with like tags must match on the choice with the same index in their respective lists (requesting better wording)
00:50:06 <elliott> Oh my God, this is the longest thing.
00:50:19 <elliott> CakeProphet: Are you sure that regexp doesn't actually work in Perl already?
00:50:30 <CakeProphet> this is probably better than using conditional patterns or state stuff.
00:50:31 <elliott> i.e. /(long|\S+) .* is (lo+ng|\1)/
00:50:58 <CakeProphet> I suppose it does, yes...
00:51:09 <CakeProphet> except
00:51:10 <CakeProphet> for
00:51:15 <CakeProphet> blah cat is looooooong
00:51:19 <CakeProphet> is not intended
00:51:31 <CakeProphet> only blah cat is blah
00:52:35 <elliott> CakeProphet: /(\S+) \S+ is \1|long \S+ is lo+ng/
00:53:02 <CakeProphet> that quickly becomes unreasonable if the pattern becomes more complex but requires the same logic.
00:54:00 <CakeProphet> I am pretty sure Perl has some special variable for specifically such construct.
00:54:03 <CakeProphet> s
00:54:07 <elliott> "This thesis is about getting computer programs from one machine to another—and having
00:54:08 <elliott> them still work when they get there."
00:54:24 <CakeProphet> "this thesis is about portability"
00:54:29 <CakeProphet> they should have me as their editor.
00:55:29 <elliott> pikhq: Did you see my bps question btw?
00:55:35 <elliott> CakeProphet: No, it's nothing to do with portability at all.
00:57:59 <CakeProphet> ah yes they already have a tagging thing sort of. you can use (*MARK:NAME) and the (*SKIP:NAME) or something
01:00:07 -!- MSleep has changed nick to MDude.
01:01:19 -!- yorick has quit (Ping timeout: 260 seconds).
01:11:30 <pikhq> elliott: mrf
01:11:38 <elliott> pikhq: hi
01:15:32 -!- yorick has joined.
01:33:04 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
01:39:13 <pikhq> http://j-lyric.net/artist/a0006c3/l00d951.html Engrish song lyrics are so very strange.
01:42:29 <elliott> ah.
01:48:58 -!- copumpkin has changed nick to gourd.
01:50:15 -!- gourd has changed nick to copumpkin.
01:54:22 <pikhq> It's even better/worse if you hear it.
01:56:20 <pikhq> https://www.youtube.com/watch?v=h2-d2zHMJho Yeaaah.
02:02:42 <pikhq> And this is a band that tours in the US.
02:04:24 -!- Vorpal has quit (Ping timeout: 240 seconds).
02:28:29 -!- elliott_ has joined.
02:28:30 -!- elliott has quit (Read error: Connection reset by peer).
02:49:50 <elliott_> bye elliott
02:55:33 <oklopol> good riddance
02:55:40 <oklopol> i'm so tired
03:10:36 -!- centrinia has quit (Quit: Leaving).
03:21:01 <zzo38> Is there any such thing as ComonadPlus?
03:34:04 <zzo38> I do not have Control.Monad.Zip
03:43:31 <elliott_> it's in base, I guess you have too old a ghc
03:43:41 <elliott_> oh, it's for monad comrephensions
03:43:44 <elliott_> ghc 7.2 or up then i guess
03:51:30 -!- pikhq has quit (Ping timeout: 256 seconds).
03:51:33 -!- pikhq_ has joined.
04:09:46 -!- sxfil has joined.
04:26:54 -!- zzo38 has quit (Ping timeout: 252 seconds).
04:29:09 -!- sxfil has quit (Quit: begone).
04:33:40 <monqy> elliott_: what thesis
04:33:57 <elliott_> nix
04:33:59 <elliott_> thesis
04:34:02 <monqy> nix thesis
04:34:33 <monqy> phd-thesis.pdf good name
04:38:48 -!- Sgeo|web has joined.
04:58:18 -!- zzo38 has joined.
04:59:10 <zzo38> When are more evening school assignments will be posted?
04:59:38 <coppro> zzo38: you aren't running a Markov bot, are you?
04:59:56 <zzo38> I am not running a Markov bot.
05:02:22 -!- Patashu has joined.
05:03:26 <monqy> zzo38: you aren't the Markov bot, are you?
05:04:04 <coppro> zzo38: I ask because your previous question was not grammatically correct, and this is often caused by running a Markov bot.
05:06:05 <elliott_> coppro: like half the things said in here are grammatically incorrect
05:06:20 <coppro> elliott_: yeah but most of them make sense all the same
05:06:27 <elliott_> uh
05:06:28 <coppro> like that last one
05:06:29 <monqy> did zzo38 not make sense
05:06:36 <elliott_> you clearly don't read the channel enough when me and monqy are around
05:06:37 <elliott_> also
05:06:41 <elliott_> what zzo said made perfect sense
05:07:00 <coppro> no, it really doesn't
05:07:05 <elliott_> yes it does
05:07:06 <elliott_> see topic
05:07:07 <coppro> especially since he's asking this channel
05:07:12 <elliott_> those are the current evening school assignments
05:07:13 <coppro> oh
05:07:18 <elliott_> he is asking when more will be posted
05:07:26 <coppro> dammit do I have to do them?
05:07:26 <zzo38> Maybe it make sense to elliott_ but it doesn't make sense to coppro.
05:07:28 <elliott_> if you paid attention more, you would understand things said in the channel more!
05:09:58 <coppro> elliott_: you didn't answer my question
05:10:01 <coppro> also attention is for losers
05:10:04 <elliott_> which question
05:10:18 <coppro> < coopro> dammit do I have to do them?
05:10:23 <elliott_> coopro
05:10:24 <coppro> s/oo/op/
05:10:30 <monqy> cooooooopro
05:10:34 <elliott_> that was addressed at me? anyway, yes
05:10:34 <monqy> coproo
05:10:35 <elliott_> poocro
05:10:41 <elliott_> it's funny because coppro means poop4
05:11:02 <coppro> dammit
05:11:22 <elliott_> they're easy; the underload ones at least
05:14:45 <coppro> looking at 1 first
05:14:52 <coppro> xor is trivial since you have nand
05:15:50 <coppro> trying to think on the wire-crossing problem
05:15:53 <coppro> (don't spoil it)
05:16:31 <elliott_> coppro: haven't done the circuite ones :)
05:16:40 <elliott_> underload is my one true love :')
05:20:27 <coppro> elliott_: also the NOT gate there is overcomplicated
05:20:39 <coppro> just link a cell up to a constant 1
05:22:08 <elliott_> tell atehwa, not me :)
05:23:03 <coppro> oh, did atehwa write these?
05:23:39 <coppro> ah, I see that he did
05:23:40 <coppro> neat
05:23:46 <elliott_> coppro: he's the one doing the school
05:24:04 <elliott_> you might find it helpful to swim to helsinki
05:24:41 <coppro> haha
05:24:45 <coppro> I should give a talk on esolangs
05:25:07 <coppro> elliott_: also you went idle in BN
05:25:14 <elliott_> it's been 7 days?
05:25:15 <coppro> well you haven't yet
05:25:19 <coppro> but you haven't done anything in 5
05:25:34 <elliott_> probably for the best for now, I'm a bit busy
05:25:39 <elliott_> hopefully I'll return before the end of the dynasty
05:30:17 <coppro> pretty sure you can't cross wires in circuite
05:30:23 <coppro> but I'm off to read more about combinatorial designs
05:48:14 <elliott_> coppro: "Circute is a cellular automaton (and quite arguably an esoteric programming language) developed by Chris Pressey in 2005 as a test of the wire-crossing problem."
05:48:14 <elliott_> so duh
05:48:20 <elliott_> oh is that a spoiler
05:48:21 <elliott_> sry :)
05:48:39 <elliott_> coppro: ^^^ HEY DON'T READ THE ABOVE ^^^
05:51:02 <Madoka-Kaname> Isn't that.
05:51:06 <Madoka-Kaname> 3D redstone pretty much.
05:51:17 <Madoka-Kaname> 2D*
05:51:26 * Madoka-Kaname wonders
05:51:31 <Madoka-Kaname> Can you make a 2D wire crossing in Redstone/
05:51:55 <elliott_> I doubt it.
05:55:52 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
05:56:36 <monqy> "You are now graced with my absence." isn't that an evincar thing?
06:04:41 * Sgeo|web is currently reading about: Agda
06:05:52 <elliott_> monqy: oh maybe it client default
06:06:17 <elliott_> < 1320127749 343527 :evincar!~evincar@daffa.student.rit.edu QUIT :Quit: I give you the gift of lack of me.
06:06:20 <elliott_> nope different!!!
06:16:01 -!- quintopia has quit (Ping timeout: 276 seconds).
06:22:20 -!- oerjan has joined.
06:23:48 -!- quintopia has joined.
06:23:49 -!- quintopia has quit (Changing host).
06:23:49 -!- quintopia has joined.
06:43:51 -!- hagb4rd has joined.
06:48:20 -!- MDude has changed nick to MSleep.
06:54:33 -!- monqy has quit (Quit: hello).
06:59:31 -!- Ngevd has joined.
07:01:49 <Ngevd> It is my birthday today
07:02:33 <oerjan> Happy prime age!
07:02:43 <Ngevd> I'm in the prime of my life
07:02:58 <elliott_> Ngevd: die :(
07:03:00 <Ngevd> And have been for quarter of an hour
07:03:15 <Ngevd> elliott_, stop being so young.
07:03:22 <Ngevd> You think you know everything!
07:03:23 <elliott_> Hey, monqy's younger.
07:03:25 <elliott_> Also cooler. :'(
07:03:26 <oerjan> elliott_: 16 is a very powerful age too
07:03:28 * elliott_ mediocre.
07:03:31 <Ngevd> But when you get to my age...
07:03:32 <oerjan> fourth power, even
07:03:46 <elliott_> oerjan: I need ops so I can kick you
07:04:04 <copumpkin> how old are y'all?
07:04:08 <Ngevd> 17
07:04:24 <oerjan> unfulfilled needs, the bane of 16-year olds everywhere
07:04:26 * elliott_ is actually a ghost.
07:04:28 <oerjan> 4|
07:04:31 <oerjan> er
07:04:35 <oerjan> *41
07:04:42 <elliott_> oerjan: Wow you're 41 already?
07:04:44 <elliott_> So old. So dead.
07:04:52 <oerjan> *Brains...*
07:04:54 * copumpkin murders elliott_
07:05:04 <elliott_> copumpkin: I'm a ghost you can't murder me that makes no sense.
07:05:12 <copumpkin> yeah it does
07:05:21 <copumpkin> I bought me a special ghost-murdering knife
07:05:24 <copumpkin> it said so on the package
07:05:32 <copumpkin> "works on ghosts or your money back"
07:05:43 <copumpkin> "as seen on TV"
07:06:19 <elliott_> copumpkin: You might want to get your money back. Also ghosts can't appear on TV, they're ghosts.
07:06:24 <elliott_> Contractual stuff, you wouldn't understand.
07:06:27 * elliott_ dead lawyer
07:06:38 <oerjan> copumpkin: they're depending on you not being able to prove no ghosts were killed, since they're invisible
07:07:09 * copumpkin commits suicide to murder elliott_ in the afterlife
07:07:17 <oerjan> best plan.
07:07:22 <elliott_> god dammit
07:07:23 <copumpkin> now we are on the same plane
07:07:31 <copumpkin> I HAVE POWER OVER YOU ONCE MORE
07:07:35 <elliott_> copumpkin: You'd make a good nomic player. Well, if you didn't commit suicide.
07:07:46 <elliott_> (Has anyone ever committed suicide for a nomic scam? oerjan?)
07:07:59 <oerjan> no, not me.
07:09:12 <elliott_> OH REALLY :|
07:09:45 <oerjan> i should get some of that ethereal vision philter i just read about in yafgc
07:10:21 <oerjan> (btw it became swiftly clear during my current binge that it is not what you call nsfw)
07:10:27 <oerjan> fortunately i'm not working
07:10:35 <elliott_> not what you call nsfw
07:10:37 <elliott_> ok, so sfw then
07:10:43 <oerjan> oops
07:10:46 <oerjan> *-not
07:10:47 * elliott_ goes to read it at work!
07:10:57 <elliott_> NOOOOOooooooooo oerjan got me fired from dead lawyering.
07:11:03 <elliott_> oerjan: are you reading the IWC rerun :P
07:11:21 <oerjan> yes, especially when i realized he's adding new annotations
07:11:22 -!- Taneb has joined.
07:11:30 <elliott_> I'm terribly afraid I'm going to end up following the whole thing to its completion
07:11:50 <oerjan> elliott_: that will take > 10 years i think
07:11:59 <elliott_> oerjan: um IWC didn't run for ten years...
07:12:07 <oerjan> no, but...
07:12:07 <Taneb> It did
07:12:14 <elliott_> 8
07:12:14 <Taneb> Well, just short of
07:12:17 <elliott_> that's not just short of :P
07:12:19 <Taneb> 2001-2011
07:12:24 <elliott_> no?
07:12:24 <oerjan> > (7/6) * 3198 / 365.25
07:12:25 <lambdabot> 10.21492128678987
07:12:25 <elliott_> http://irregularwebcomic.net/archive.html
07:12:27 <elliott_> one comic in 2002
07:12:32 <elliott_> then regularly 2003 onwards
07:12:36 <elliott_> so 8 years
07:12:38 <Taneb> Memory is playing tricks on me
07:12:45 <oerjan> elliott_: it becomes just > 10 when you adjust for the 7 to 6 days per week shift
07:12:54 <elliott_> oerjan: oh, right.
07:12:58 <elliott_> oerjan: well, I gotta lot of time.
07:13:00 -!- Ngevd has quit (Ping timeout: 244 seconds).
07:13:11 <elliott_> oerjan: (does this mean he's going to be writing blog posts for /ten years/?0
07:13:13 <elliott_> s/0/)/
07:13:20 <oerjan> heh
07:13:39 <oerjan> there will probably be readjustments.
07:14:13 <oerjan> but then, in 3-4 years d&d may end
07:15:47 <elliott_> oerjan: and then Mezzacotta :P
07:16:52 <elliott_> oerjan: omg today's mezzacotta :D
07:17:07 <oerjan> what was that again ->
07:17:40 <oerjan> mad sci guy always gets my vote
07:20:33 -!- ive has quit (Ping timeout: 245 seconds).
07:21:24 <elliott_> oerjan: hmm, I think Mezzacotta's random date thing is strongly biased against ridiculously old dates...
07:21:29 -!- SgeoN1 has quit (Quit: Bye).
07:21:47 <oerjan> elliott_: i think that's called "uniform distribution"
07:22:05 <elliott_> har har
07:22:13 <elliott_> oerjan: but seriously, the vast majority of results are before 10000 BC
07:22:16 -!- Taneb has quit (Ping timeout: 240 seconds).
07:22:20 * elliott_ suspects weighting
07:22:41 <oerjan> er, that's what you'd expect if there were _no_ weighting
07:23:24 <elliott_> oerjan: um... no?
07:23:28 <elliott_> there's more of the past than the present
07:23:32 <elliott_> oh
07:23:34 <elliott_> s/before/after/
07:23:43 * elliott_ is not an idiot, but cannot type :P
07:23:53 <oerjan> ah yes.
07:24:06 <oerjan> yes, definitely
07:24:19 <oerjan> i read your "against" as "towards"
07:24:26 <elliott_> :)
07:24:27 <oerjan> (same word in norwegian)
07:24:44 <elliott_> http://www.mezzacotta.net/archive.php?date=random
07:24:45 <elliott_> um
07:24:46 <elliott_> augh
07:24:48 <elliott_> http://www.mezzacotta.net/archive.php?date=1614-12-27
07:24:50 <elliott_> ^^^ the best
07:25:21 <elliott_> http://www.mezzacotta.net/archive.php?date=1693-05-03 :D
07:25:54 <elliott_> http://www.mezzacotta.net/archive.php?date=1506-01-04
07:26:00 <Sgeo|web> Clicking random makes me feel weird
07:26:05 <Sgeo|web> http://www.mezzacotta.net/archive.php?date=193-08-23 is a random one I clicked on
07:26:58 <elliott_> <Sgeo|web> Clicking random makes me feel weird
07:27:00 <elliott_> ?????????????
07:27:38 <Sgeo|web> elliott_: if I don't bookmark it or something, in all likelihood, it will never be seen again
07:28:00 * Sgeo|web remembers when he was young, he wanted to record all die rolls etc. for Monopoly games
07:28:01 <elliott_> Sgeo|web: Other comics that will never be seen again: ones you don't see at all.
07:28:12 <elliott_> Thus, you must archive binge Mezzacotta to avoid the same weirdness.
07:28:57 * Sgeo|web will archive binge Mezzacotta, and won't eat or sleep until he's done
07:29:10 <elliott_> Well, that solves that problem.
07:29:18 <Sgeo|web> Does being dead count as being done?
07:29:30 <Sgeo|web> Wait, even then, I still won't eat or sleep, so it's all good
07:30:32 <elliott_> "Obayashi recalled that his producer told him that Toho was tired of losing money on comprehensible films and were ready to let Obayashi direct the House script, which they felt was incomprehensible."
07:31:15 <Sgeo|web> Night all
07:35:18 -!- elliott_ has quit (Read error: Operation timed out).
08:15:06 -!- ive has joined.
09:05:30 <zzo38> I think I could make instance Alternative IO now, allowing you to use many, some, optional. empty = fail []; x <|> y = catch x $ \e -> modifyIOError (\z -> if z == userError [] then e else z) y;
09:22:30 -!- ive has quit (Quit: leaving).
09:38:45 <zzo38> I don't like the way of pure code exceptions in GHC. But I do have another idea: mkPure :: Q Exp -> Q Exp; instance Applicative Pure; runPure :: Pure t -> Either SomeException t;
09:40:27 <zzo38> runPureIO :: Pure t -> IO t;
09:43:48 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
09:43:59 -!- zzo38 has quit (Remote host closed the connection).
09:55:38 <atehwa> coppro: true, but I thought it would give more hints as to how to make a XOR gate.
10:02:22 <CakeProphet> @tell elliott That's some gouda cheese!
10:02:22 <lambdabot> Consider it noted.
10:02:39 -!- oerjan has quit (Quit: leaving).
10:27:34 -!- GreaseMonkey has quit (Quit: The Other Game).
11:18:50 -!- ais523 has joined.
11:22:29 -!- Jafet has joined.
11:31:21 <CakeProphet> so today I learned that when you have a red parent and a black uncle, you rotate right around your grandparent.
11:31:49 <CakeProphet> well left or right, depending on where you are.
11:34:26 <CakeProphet> makes perfect sense.
11:35:43 <CakeProphet> also your grandparent magically becomes red and your parent becomes black
11:48:29 <fizzie> And that's how communism propagates.
11:50:53 <CakeProphet> interestingly, in my data structures class we often devolved to race-related humor.
11:51:00 <CakeProphet> because, you know, we're Americans.
11:51:09 <CakeProphet> who knew colors could be so humorous!
11:52:11 <CakeProphet> for example, the professor said that the parent node "goes black" to which a student commented, "once you go black, you never go back."
11:52:16 <CakeProphet> priceless American humour
11:52:45 <fizzie> Did they play you the red-black tree song in class?
11:55:29 <CakeProphet> uh, no.
11:55:35 <CakeProphet> what is that.
11:55:36 <fizzie> They should have.
11:55:49 <fizzie> "I see a brand new node / I want to paint it black."
11:56:12 <CakeProphet> ......
11:56:14 <fizzie> http://www.cs.washington.edu/orgs/student-affairs/cseband/ "Red Black Tree Song"
11:56:26 <CakeProphet> what the hell
11:56:28 <fizzie> (I am assuming it's the one I know of, didn't listen.)
11:57:08 <fizzie> (I mean, how many people have done songs about red-black trees?)
11:57:22 <CakeProphet> .....lol
11:57:37 <CakeProphet> wow.
11:57:45 <CakeProphet> rotating subtrees has never sounded so beautiful.
12:05:16 <CakeProphet> I find it sad that I know AT LEAST 4 CS majors in real life
12:05:24 <CakeProphet> and none of them would appreciate this song.
12:05:33 <CakeProphet> I am alone. ;_;
12:07:55 <CakeProphet> so, if you don't ignore constant factors, red-black is O(2log(n)) and AVL is O(log(n))
12:08:11 <CakeProphet> so, technicall speaking, AVL trees /are/ more efficient, it's just that no one cares about constant factors.
12:09:14 <CakeProphet> AVL trees are often compared with red-black trees because they support the same set of operations and because red-black trees also take O(log n) time for the basic operations. Because AVL trees are more rigidly balanced, they are faster than red-black trees for lookup intensive applications.[3] However, red-black trees are faster for insertion and removal.[citation needed].
12:09:32 <CakeProphet> good reliable information from wikipedia
12:21:16 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:46:43 -!- ais523 has quit (Ping timeout: 248 seconds).
12:56:48 -!- ais523 has joined.
13:01:29 -!- ais523_ has joined.
13:01:33 -!- ais523 has quit (Disconnected by services).
13:01:34 -!- ais523_ has changed nick to ais523.
13:30:57 -!- Ngevd has joined.
13:36:52 -!- Ngevd has quit (Ping timeout: 256 seconds).
13:37:04 -!- MSleep has quit (Read error: Connection reset by peer).
13:37:18 -!- MSleep has joined.
13:37:39 -!- Ngevd has joined.
13:37:55 <CakeProphet> "You can meet people over the Internet (oh God, can you), but something in our monkey brains makes in-the-flesh meeting a bigger thing."
13:38:05 <CakeProphet> http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/
13:38:15 <Ngevd> I'll agree with that
13:38:35 <CakeProphet> alternative title: how to hate programming for a living but make a lot of money.
13:38:44 <CakeProphet> looks like useful advice so far.
13:39:59 <CakeProphet> granted the goal of this article seems to be not getting stuck in a dead-end job, but moving forward until you get to the interesting things.
13:41:41 <CakeProphet> the "focus on how you can make revenue or reduce costs" bit seems to make a lot of sense. But what if you the employer is more interested in the challenging technical problems you've solved?
13:44:26 <Ngevd> Whoa, it's my birthday, isn't it?
13:44:36 <CakeProphet> must be.
13:44:44 <CakeProphet> so are there any like...
13:44:49 <CakeProphet> HTML "IDEs"?
13:44:55 <CakeProphet> that make HTML not a pain in the ass?
13:45:11 <Ngevd> Yes, but they make bad HTML
13:45:23 <CakeProphet> no I want to write the HTML
13:45:26 <CakeProphet> but have things that make that easier.
13:45:28 <Ngevd> Ooh
13:45:32 <CakeProphet> actually I want to write Django templates.
13:45:34 <Ngevd> Bluefish?
13:45:35 <CakeProphet> but whatever.
13:46:07 <CakeProphet> looks like a normal text editor. Could I just use emacs with some bitchin' HTML mode instead.
13:47:27 <Ngevd> I'm not all too familiar with emacs
13:47:27 <CakeProphet> http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html
13:47:29 <CakeProphet> this looks good.
13:48:07 <CakeProphet> actually emacs html-mode itself has some convenience things.
13:48:12 <Ngevd> I tried one of them fancy text editors once, couldn't stay focused enough to get the hang of it
13:48:21 <CakeProphet> C-c C-a
13:48:22 <CakeProphet> Interactively insert attribute values for the current tag (sgml-attributes).
13:48:44 -!- DH____ has joined.
13:48:59 <CakeProphet> C-c C-f
13:49:00 <CakeProphet> Skip across a balanced tag group (which extends from an opening tag through its corresponding closing tag) (sgml-skip-tag-forward). A numeric argument acts as a repeat count.
13:49:07 <CakeProphet> looks good.
13:49:36 <CakeProphet> C-c C-d
13:49:36 <CakeProphet> Delete the tag at or after point, and delete the matching tag too (sgml-delete-tag). If the tag at or after point is an opening tag, delete the closing tag too; if it is a closing tag, delete the opening tag too.
13:49:41 <CakeProphet> also excellent.
13:50:22 <CakeProphet> I wonder what I did before I started using emacs..
13:50:32 <CakeProphet> horrible terrible things.
13:51:15 <CakeProphet> oh dude it even has like docs. C-c ? tagname
13:51:22 <CakeProphet> like, radical.
13:51:33 <Ngevd> Should I try to use Emacs?
13:51:38 <CakeProphet> Ngevd: I recommend it.
13:51:54 <Ngevd> Aaah!
13:51:55 <CakeProphet> it's not terribly complicated. Though I'm sure I don't use every single feature available.
13:51:59 <Ngevd> Which emacs package do I want!
13:52:05 <Ngevd> * emacs23
13:52:05 <Ngevd> * emacs23-nox
13:52:05 <Ngevd> * e3
13:52:05 <Ngevd> * emacs-snapshot
13:52:05 <Ngevd> * emacs-snapshot-nox
13:52:06 <Ngevd> * emacs23-lucid
13:52:08 <Ngevd> * jove
13:52:11 <CakeProphet> emacs23 probably.
13:53:04 <CakeProphet> C-v for example is page down, M-v is page up. C-a is beginning of line, C-e is end of line. C-k deletes (actually cuts) everything on the after the cursor
13:53:17 <Ngevd> A couple of months ago I realised that I could touchtype pretty accurately without looking at the keyboard
13:53:21 <Ngevd> Pretty quickly too
13:53:35 <CakeProphet> C-y is paste, M-y after C-y starts going through old pastes.
13:53:52 <CakeProphet> so if you've got an out of place line.
13:54:13 <CakeProphet> you just go to it. then C-a, C-k, move to where you want it to go, C-y
13:54:39 <Ngevd> Installing now
13:55:00 <CakeProphet> meanwhile your counterpart in another universe is reaching for the mouse or doing weird awkward key combinations.
13:55:11 <Ngevd> Or using vi
13:55:19 <CakeProphet> oh right. yeah I don't know anything about vi.
13:55:27 <CakeProphet> I found it more confusing than emacs.
13:55:31 <Ngevd> I think that was the one I tried...?
13:55:33 <Ngevd> Maybe?
13:56:07 <CakeProphet> one thing that's been kind of awkward is that Django repeats a lot of file names in different directories
13:56:10 <Ngevd> No wait, this emacs tutorial looks familiar
13:56:18 <CakeProphet> so switching around to other files has been somewhat more annoying than usual.
13:57:02 <CakeProphet> sometimes I even use C-x C-b which I normally don't use.
13:57:28 <CakeProphet> Ngevd: also you can play tetris.
13:57:39 <CakeProphet> while your "code compiles" (see: xkcd)
13:57:45 <Ngevd> I think I have a friend who uses emacs
13:57:51 <Ngevd> Primarily for that purpouse
13:58:03 <CakeProphet> to play tetris instead of doing actual work?
13:58:09 <CakeProphet> it has its advantages, certainly
13:58:10 <Ngevd> Yes
13:58:42 <CakeProphet> also having multiple windows (what would normally be called panes or whatever) is awesome.
13:59:35 <CakeProphet> as usually you end wanting to browse two or three source files at a time, or two source files and some docs, etc, etc
13:59:44 <CakeProphet> s/end/\1 up/
14:00:07 <CakeProphet> three source files, two docs, a shell, and tetris
14:02:49 <CakeProphet> C-c /
14:02:50 <CakeProphet> Insert a close tag for the innermost unterminated tag (sgml-close-tag). If called from within a tag or a comment, close this element instead of inserting a close tag.
14:02:53 <CakeProphet> holy crap that's awesome.
14:03:39 <CakeProphet> it's like
14:03:49 <CakeProphet> the guys who made html-mode hate the same things that I hate about HTML.
14:04:01 -!- copumpkin has quit (Ping timeout: 240 seconds).
14:04:11 <Ngevd> Maybe you wrote it?
14:04:25 -!- copumpkin has joined.
14:04:28 <Ngevd> FROM THE FUTURE
14:05:16 <CakeProphet> C-c C-n
14:05:17 <CakeProphet> Interactively specify a special character and insert the SGML ‘&’-command for that character (sgml-name-char).
14:05:19 <CakeProphet> yessssss
14:06:01 <CakeProphet> though &lt is fewer keys than C-c C-n < :P
14:06:19 -!- ais523 has quit (Read error: Connection reset by peer).
14:06:29 <Ngevd> Harder to memorise, though
14:07:51 <CakeProphet> not if you know a modicum of HTML syntax.
14:08:33 <Ngevd> I mean, it's easier to memorise C-c C-n [char] than a list of thingies
14:08:38 <CakeProphet> oh, right.
14:09:13 <CakeProphet> C-c C-n " is equivalent to &quot though honestly I tend to think of key combinations as the same amount of work as typing a single key.
14:09:34 <CakeProphet> as my left hand is pretty much always hovering over shift, ctrl, and alt.
14:10:11 <CakeProphet> I type weird. :P
14:10:22 <CakeProphet> though typing weird is beneficial when programming.
14:11:27 <CakeProphet> though I can't really touch type very well. It's very easy for me to start jioyy the weron ley
14:12:07 <CakeProphet> though I do say though a lot.
14:14:26 <CakeProphet> http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
14:14:27 <CakeProphet> wow.
14:14:40 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:17:38 <Ngevd> I fear for the state of the world's sanity
14:17:56 <Ngevd> I could write a FizzBuzz thing in what... 30 seconds?
14:19:32 <CakeProphet> > map (\x -> if x `mod` 15 == 0 then "FizzBuzz" else (if x `mod` 3 == 0 then "Fizz" else (if x `mod` 5 == 0 then "Buzz" else show x))) [1..100]
14:19:34 <lambdabot> ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","1...
14:19:40 <Ngevd> Exactly
14:19:44 <CakeProphet> it is /slightly/ trickier than it sounds.
14:20:20 <CakeProphet> no wait, it's not.
14:20:24 <Ngevd> I would have used guards personally, but that's because Haskell's if statement confuses me for some strange reason
14:20:48 <Ngevd> And I wasn't writing it for IRC
14:21:31 <CakeProphet> it... confuses you?
14:21:38 <Ngevd> I don't know how
14:21:40 <Ngevd> It just does
14:21:53 -!- DH____ has quit (Ping timeout: 240 seconds).
14:21:54 <Ngevd> Which is weird, because I get that Banach-Tarski thing
14:22:04 <Ngevd> And that should be much more confusing
14:22:11 <CakeProphet> also I believe those parens are unecessary.
14:22:22 <CakeProphet> > map (\x -> if x `mod` 15 == 0 then "FizzBuzz" else if x `mod` 3 == 0 then "Fizz" else if x `mod` 5 == 0 then "Buzz" else show x) [1..100]
14:22:23 <lambdabot> ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","1...
14:22:25 <CakeProphet> yep.
14:23:21 -!- tiffany has joined.
14:24:14 <CakeProphet> import System.IO; import Data.List; main = putStrLn . intercalate "\n" . map (\x -> if x `mod` 15 == 0 then "FizzBuzz" else if x `mod` 3 == 0 then "Fizz" else if x `mod` 5 == 0 then "Buzz" else show x) $ [1..100]
14:24:18 <CakeProphet> woooo
14:24:50 <CakeProphet> @pl map (\x -> if x `mod` 15 == 0 then "FizzBuzz" else if x `mod` 3 == 0 then "Fizz" else if x `mod` 5 == 0 then "Buzz" else show x) [1..100]
14:24:51 <lambdabot> map (ap (flip if' "FizzBuzz" . (0 ==) . (`mod` 15)) (ap (flip if' "Fizz" . (0 ==) . (`mod` 3)) (ap (flip if' "Buzz" . (0 ==) . (`mod` 5)) show))) [1..100]
14:24:56 <CakeProphet> beautiful.
14:25:01 <Ngevd> Who the hell calls themselves a programmer and struggles with this
14:25:26 <CakeProphet> Ngevd: note that the majority of enterprisey things require no knowledge of multiples or well anything...
14:25:39 <Ngevd> BUT STILL
14:25:56 <CakeProphet> also in a job application situation no google, etc. People rely on google heavily when programming.
14:25:58 <Ngevd> The article said Computer Science graduates!?
14:26:31 -!- tiffany has quit (Remote host closed the connection).
14:26:48 <CakeProphet> a CS graduate who's been out of school for several years may have forgotten that "multiple of x and y" means "multiple of x*y"
14:26:56 <CakeProphet> but that's not a big deal as you can just use && instead.
14:27:01 -!- tiffany has joined.
14:27:36 <CakeProphet> also I imagine people get thrown off by off-by-one errors or implementing the conditional in the wrong order so that the multiple of 15 case never occurs. This is just a simple mistake under time pressure.
14:29:17 <Ngevd> I've got a new phone
14:29:46 <CakeProphet> cool.
14:31:11 <tiffany> > people get thrown off by off-by-one errors
14:31:13 <lambdabot> Not in scope: `people'Not in scope: `thrown'Not in scope: `off'Not in scope...
14:31:17 <tiffany> *reminded of that scp*
14:31:59 <tiffany> http://www.scp-wiki.net/scp-866
14:35:11 <Ngevd> Okay, my phone just guessed my postcode
14:35:57 <CakeProphet> !perl for (1..100) { $x=0; $x++,print "Fizz" unless ($_ % 3); $x++,print "Buzz" unless $_ % 5; print unless $x; print " " }
14:36:04 <CakeProphet> .... :(
14:36:17 <CakeProphet> I was trying out a horrible hack.
14:36:24 <CakeProphet> when it would be easier just to not do horrible hacks.
14:36:40 <CakeProphet> `runperl for (1..100) { $x=0; $x++,print "Fizz" unless ($_ % 3); $x++,print "Buzz" unless $_ % 5; print unless $x; print " " }
14:36:47 <HackEgo> 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz
14:36:55 <CakeProphet> bahahahahaha
14:37:09 <CakeProphet> look at that horrible hack.
14:37:47 <Ngevd> Hehe
14:37:54 <Ngevd> My phone is loading the wiki
14:38:07 <CakeProphet> `runperl for(1..100){my$x;$x++,print"Fizz"unless$_%3;$x++,print"Buzz"unless$_%5;print unless$x;print" "}
14:38:09 <HackEgo> 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz
14:38:13 <CakeProphet> now written with readability in mind.
14:42:52 -!- copumpkin has joined.
14:44:37 -!- Taneb has joined.
14:44:54 <Ngevd> That's my phone
14:45:09 <Taneb> Hello
14:46:37 <Taneb> Now I don't need to lug around a Kindle to talk on the move
14:46:57 <CakeProphet> I don't think blackberries have much in the way of IRC clients.
14:47:37 <Taneb> This is an Android
14:48:12 -!- Taneb has quit (Client Quit).
14:48:38 <Ngevd> Yeah, it's hard to type on that Galaxy Mini keyboard
14:49:08 <Ngevd> And tomorrow I have to be out the house by 4:30
14:50:18 <Ngevd> So, early night for me
14:54:57 <CakeProphet> ”What is your previous salary?” is employer-speak for “Please give me reasons to pay you less money.” Answer appropriately.
14:55:00 <CakeProphet> looool
15:16:20 -!- augur has quit (Remote host closed the connection).
15:20:24 <CakeProphet> html-mode is great.
15:20:29 <CakeProphet> never again will I write end tags...
15:40:37 -!- Vorpal has joined.
15:42:50 -!- augur has joined.
15:43:02 <Ngevd> Hey, it's almost celebrate-that-time-when-somebody-messed-up-killing-the-king day!
15:44:14 <Vorpal> Ngevd, tomorrow isn't it?
15:44:21 <Ngevd> Day after
15:44:24 <Vorpal> ah
15:44:48 <Vorpal> Ngevd, why exactly is that celebrated?
15:45:05 <Ngevd> Because we don't have anything cool to celebrate
15:45:34 <Vorpal> brb, ipv6 tunnel is fucked up, I suspect I will lose connection
15:48:22 -!- Vorpal_ has joined.
15:49:07 <Ngevd> Hey, I can listen to the radio on my phone
15:49:42 -!- Vorpal has quit (Disconnected by services).
15:49:44 -!- Vorpal_ has changed nick to Vorpal.
15:49:49 <Vorpal> Ngevd, how is that surprising?
15:50:02 <Ngevd> I've never been able to do that before
15:50:15 <Vorpal> Ngevd, new phone?
15:50:20 <Ngevd> Yup
15:55:37 -!- ais523 has joined.
15:59:22 -!- zzo38 has joined.
16:01:24 -!- copumpkin has quit (Ping timeout: 245 seconds).
16:03:31 -!- copumpkin has joined.
16:05:19 <zzo38> Americans don't understand humour, they only understand humor.
16:05:40 -!- MSleep has changed nick to MDude.
16:05:43 <ais523> zzo38: what about Canadians?
16:06:12 <zzo38> Well, I am Canadian.
16:06:14 <Ngevd> Humour, I believe
16:06:28 <Ngevd> And Australians may use "humor"?
16:06:38 <zzo38> Yes that is the Canadian spelling "humour" but I don't know Australians
16:06:51 <Ngevd> I know they use "labor"
16:09:02 <CakeProphet> I abhour strange spellings of things that should end with -our
16:09:17 <Ngevd> Four
16:10:04 <Ngevd> As my user page on the wiki probably doesn't say, I flick between -ize and -ise
16:10:21 <Ngevd> Depending on the word, I think
16:10:24 <Ngevd> Colourize
16:10:25 <zzo38> I think since both spellings are in use you can use whatever you want but when you type a command into a computer you have to use the spelling that the computer accepts (some programs might accept both ways)
16:10:26 <CakeProphet> American usage of -or and -our is totally consist-- oh wait
16:11:17 <CakeProphet> though maybe it's a bit more consistent...? no...
16:11:51 <CakeProphet> we have pour and not por.
16:12:36 <CakeProphet> I guess -our is etymologically correct for words with French origin, I think?
16:12:41 * CakeProphet doesn't actually know anything about French.
16:14:47 <CakeProphet> anyway AMERICA IS THE BEST etc
16:15:09 <CakeProphet> because all of our conventions are different from everyone elses.
16:15:18 <CakeProphet> but EVERYONE LIKES OUR MOVIES HAHAHAHAHA SUCKERS.
16:16:45 <Ngevd> Bah, most of the actors in Star Wars were British
16:17:17 <CakeProphet> wow
16:17:29 <Ngevd> The body of Darth Vader, for example
16:17:31 <CakeProphet> you've defeated me with your one specific example.
16:17:54 <Ngevd> And the British version of the Italian Job was so much better than the remake
16:17:58 <CakeProphet> about actors and not movies.
16:18:08 <CakeProphet> Ngevd: well, that's true.
16:18:17 <CakeProphet> but that's true for many remakes regardless of nation.
16:18:28 <Ngevd> And Shaun of the Dead was very good
16:18:42 <Ngevd> As was Hot Fuzz
16:18:51 <CakeProphet> Ngevd: "hey, we make good movies too!"
16:19:10 <Ngevd> Technically it should be Nge "hey, we make good movies too!" vd
16:19:25 <CakeProphet> no I was quoting you.
16:19:30 <CakeProphet> it wasn't an IRC ping thing
16:19:31 <zzo38> Which Discordian calendar do you prefer, the literal or standard?
16:19:34 <Ngevd> Oh
16:20:05 <CakeProphet> zzo38: I was only familiar with one calendar. I presume the standard one
16:22:41 <CakeProphet> of course I always use THE OFFICIAL DISCORDIAN DOCUMENT NUMBERING SYSTEM.
16:26:31 -!- ais523_ has joined.
16:26:45 -!- ais523 has quit (Disconnected by services).
16:26:46 -!- ais523_ has changed nick to ais523.
16:27:08 <zzo38> With the standard calendar, 1 Chaos is always Jan 1 of the Gregorian calendar, while the literal calendar has 1 Chaos 3136 on Jan 1, 1970 and has St. Tib's day exactly once every four years (as the Julian calendar does), which is what the document says. This contradicts the heading but follows the instructions precisely.
16:31:06 -!- monqy has joined.
16:40:29 -!- Jafet has quit (Quit: Leaving.).
16:43:54 <ais523> hmm, hilarious thing happening on the Internet: Nintendo are releasing a new Dream World Pokémon and asking people to vote on what it should be; the competitive community have found a loophole in the voting system allowing it to be manipulated, but their attempts to manipulate it are breaking down into arguments as to what exactly they should manipulate /for/
16:44:15 <Ngevd> :D
16:45:30 <ais523> the argument is mostly between Pokémon-that-is-already-good-and-this-would-make-it-even-better, and Pokémon-that-currently-sucks-and-this-would-make-excellent
16:46:04 <Ngevd> I would go for the latter
16:46:12 <Ngevd> Luvdisc
16:46:22 <ais523> it wouldn't make Luvdisc good
16:46:27 <ais523> the latter Pokémon is Ditto
16:46:46 <Ngevd> I don't really know what Dream World Pokemon are
16:47:16 <Ngevd> I haven't really kept track of it since Platinum was released
16:47:34 <ais523> the only competitive difference is that they have a different ability to usual, and that if they're male, you can't breed egg moves onto them
16:47:44 <zzo38> I really don't care. I don't like the Dream World mode anyways
16:48:11 <ais523> but there are only finitely many possibilities for each ability (small finite, it caps out at 4), and Ditto is a choice of 1 of 2
16:48:26 <zzo38> Nintendo adds everything they keep mixing it up. No! They should only change it when releasing a new game.
16:48:28 <ais523> people are assuming it'd get the ability currently unavailable on it, as otherwise it'd just be a normal Ditto
16:48:53 <ais523> and Imposter Ditto is already known to be top-tier (if you aren't playing with banned Pokémon), and possibly even strong enough to ban
16:51:32 <Vorpal> why ban? Wouldn't it make more sense to rebalance?
16:51:56 <ais523> Vorpal: you can't, umm, modify the game's idea of what a Pokémon's stats are without hacking?
16:52:13 <Vorpal> ais523, I meant for Nintendo to release a balance patch
16:52:21 <ais523> Vorpal: on a DS cartridge game?
16:52:24 <Vorpal> oh okay
16:52:25 -!- sllide has joined.
16:52:27 <zzo38> They should make the random game? Everyone start random during each match
16:52:35 <ais523> zzo38: it's been made
16:52:46 <ais523> it's not as fun as the intended way of playing, though
16:53:03 <ais523> as it's mostly a case of hoping that you have an attacking move that actually does decent damage
16:53:51 -!- Guest63524 has joined.
16:54:20 <Vorpal> interesting, Windows 7 fails to detect the PS/2 keyboard except after a warm reboot.
16:54:27 -!- oerjan has joined.
16:54:28 <Vorpal> wtf could cause that
16:54:53 <Vorpal> I mean, it works fine in linux. And it works fine after warm reboot from either windows login screen or from linux
16:54:59 -!- Slereah_ has quit (Ping timeout: 276 seconds).
16:55:27 <ais523> how are you warm rebooting it without a working keyboard?
17:00:06 <CakeProphet> Vorpal: this is because Windows code relies on the magical properties of its reboot to function properly
17:00:21 <CakeProphet> the code itself is shit, but after a reboot everything works fine. always.
17:00:36 * CakeProphet sagenods
17:02:08 <Gregor> ITYM "* CakeProphet nods sagely." you lazy 'sagenodding' non-sage.
17:02:10 <oerjan> <CakeProphet> > map (\x -> if x `mod` 15 == 0 then "FizzBuzz" else (if x `mod` 3 == 0 then "Fizz" else (if x `mod` 5 == 0 then "Buzz" else show x))) [1..100]
17:03:28 <oerjan> > [case gcd x 15 of 1 -> show x; 3 -> "Fizz"; 5 -> "Buzz"; 15 -> "FizzBuzz" | x <- [1..100]]
17:03:29 <lambdabot> ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","1...
17:05:54 -!- Siddiq has joined.
17:06:02 <Siddiq> hi ais
17:06:11 <Siddiq> hi bd
17:06:25 <CakeProphet> oerjan: ah much better.
17:06:29 <CakeProphet> though not as efficient I think?
17:06:33 <CakeProphet> doesn't matter really.
17:06:35 <oerjan> perhaps not.
17:06:58 <CakeProphet> I should try those list comprehension things, one of these days.
17:07:03 <oerjan> for efficiency, you could also do a case match on x `mod` 15
17:07:07 -!- Siddiq has left.
17:07:09 <oerjan> but that would be longer
17:07:25 -!- elliott has joined.
17:08:13 <Vorpal> <ais523> how are you warm rebooting it without a working keyboard? <-- by clicking "shutdown" with the mouse on the login screen and then selecting reboot from the menu that pops up
17:08:45 <oerjan> was siddiq someone you actually knew?
17:08:46 <CakeProphet> Vorpal: mouse? I am enthralled. Show me your ways.
17:08:51 <ais523> Vorpal: how do you get past the press control-alt-delete thing?
17:08:58 <Vorpal> ais523, windows 7 doesn't do that?
17:09:16 <ais523> hmm, weird
17:09:28 <ais523> as its purpose is to prevent people spoofing the login screen (the userland can't react to control-alt-delete)
17:09:33 <Vorpal> ais523, the ctrl-alt-del thing is for domain logins only these days I think. Ever seen the XP welcome screen?
17:09:40 <Vorpal> it didn't use that ctrl-alt-del either
17:09:42 <ais523> ah, right
17:09:44 <zzo38> I know XP doesn't ask for CTRL+ALT+DEL by default but it can be configured to do so.
17:09:56 <Vorpal> and xp didn't ask by default indeed
17:10:07 <Vorpal> ais523, anyway what I see is the windows 7 take on the xp welcome screen.
17:10:08 <elliott> <ais523> Vorpal: how do you get past the press control-alt-delete thing?
17:10:08 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
17:10:13 <elliott> only networked machines do that
17:10:19 <elliott> it's a non-default setting
17:10:34 <Vorpal> elliott, or ones configured to it anyway. It was fairly easy to make an xp machine do it iirc.
17:10:35 <zzo38> I configured my computer to ask CTRL+ALT+DEL
17:10:51 <Vorpal> select non-welcome screen mode, then a group policy or something
17:10:59 <ais523> hmm, computers don't even /boot/ without a working keyboard, so presumably the BIOS recognised it
17:11:02 <CakeProphet> my computer devises tricky riddles
17:11:03 <Vorpal> anyway the warm reboot issue is mysterious
17:11:09 <zzo38> And to forget the last username, requiring its entry every time.
17:11:11 <Vorpal> ais523, certainly, it works fine in grub too
17:11:19 <Vorpal> ais523, and under linux
17:12:07 <Vorpal> ais523, and as I said, with warm reboot from either OS it works fine.
17:12:19 <Vorpal> I can't think of a way to cause that sort of behaviour
17:12:37 <elliott> 13:37:55: <CakeProphet> "You can meet people over the Internet (oh God, can you), but something in our monkey brains makes in-the-flesh meeting a bigger thing."
17:12:37 <elliott> meh @ this
17:12:47 <Vorpal> ais523, btw did I mention the game on windows that only worked if 5 minutes or more passed since login and another XNA based game had already run?
17:12:55 <elliott> ais523: I think they do boot nowadays
17:12:58 <Vorpal> (very strange that one)
17:12:59 <elliott> everyone emulates the controller
17:13:22 <oerjan> <CakeProphet> import System.IO; import Data.List; main = putStrLn . intercalate "\n" [...] <-- that's putStr . unlines
17:13:32 <Vorpal> well, I have a single shared PS/2 port that can either take a keyboard or a mouse
17:13:40 <Vorpal> so I use an usb mouse and a PS/2 keyboard
17:13:41 <elliott> 13:51:33: <Ngevd> Should I try to use Emacs?
17:13:41 <elliott> 13:51:38: <CakeProphet> Ngevd: I recommend it.
17:13:42 <elliott> Ngevd: no
17:13:50 <monqy> i'm imagining an onscreen game controller, like an onscreen keyboard
17:13:51 <oerjan> there's also unwords
17:13:53 <monqy> and now an onscreen mouse
17:14:12 <CakeProphet> oerjan: ah yes I always forget about those things.
17:14:28 <monqy> drag the onscreen mouse around and click with it, and then it will move another cursor that clicks on things for you
17:14:42 <oerjan> (they're slightly different, unlines appends a final \n)
17:15:07 <oerjan> (well apart from one being \n's and the other being spaces)
17:15:20 <CakeProphet> elliott: for some reason I thought you used emacs as well.
17:15:29 <elliott> Yep.
17:15:33 <CakeProphet> oh.
17:15:44 <elliott> I also use vim for editing config files.
17:15:47 <CakeProphet> why would you use it and not recommend it then?
17:15:53 <Vorpal> I use emacs, kate and nano
17:16:06 <elliott> Because learning emacs is a waste of time for almost everyone.
17:16:22 <oerjan> CakeProphet: another option is mapM_ putStrLn
17:16:27 <elliott> I'm just used to it, and it has a few things that the lack of bug me in other editors, so I use it.
17:17:02 <CakeProphet> elliott: it was not a waste of time for me to learn it.
17:17:12 <oerjan> i sometimes like to do mapM_ print in ghci, to not get as many nested brackets
17:17:17 * elliott does not expect continuing this conversation to be productive.
17:17:32 <oerjan> (as with plain print)
17:17:35 <elliott> oerjan: I do that a lot too. Mostly I wish that GHCi reformatted prints by default.
17:17:58 -!- CakeProphet has set topic: productivity | EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy) | TO SHREDS!) | http://codu.org/logs/_esoteric/.
17:19:02 <Vorpal> I think the _ in mapM_ is quite ugly, surely there is a better way to tell it apart from mapM
17:19:28 <elliott> Vorpal: it's standard
17:19:32 <elliott> mapM' would be worse
17:19:36 <Vorpal> well true
17:19:38 <elliott> :t sequence_
17:19:40 <Vorpal> still
17:19:42 <lambdabot> forall (m :: * -> *) a. (Monad m) => [m a] -> m ()
17:19:49 <Vorpal> elliott, you can't tell me it isn't ugly
17:19:49 <CakeProphet> Vorpal: and, therefore, not ugly. ;)
17:19:55 <elliott> I don't find it ugly at all.
17:19:58 <Vorpal> hm
17:21:27 <Vorpal> that is strange, why does :t in ghci give a much more compact form than :t in lambdabot for sequence_? Or rather, why would lambdabot print that forall stuff that is implicit in ghci's :t
17:21:55 <oerjan> Vorpal: there's an option whether to include foralls
17:22:10 <Vorpal> okay, why would lambdabot have that turned on then?
17:22:34 <oerjan> for pedagogical reasons?
17:22:38 <Vorpal> hm, okay
17:23:34 <elliott> oerjan: lolno
17:23:37 <elliott> it's for caleskell
17:23:54 <elliott> at least nobody ever does anything but tell newbies to ignore them
17:24:15 <oerjan> o kay
17:24:16 <Vorpal> wtf is caleskell?
17:24:31 <oerjan> :t (.) -- this. is. caleskell.
17:24:32 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
17:24:47 <elliott> :t flip
17:24:48 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
17:24:50 <Vorpal> hm
17:25:07 <Vorpal> yeah that is not the usual flip signature
17:25:16 <elliott> but it is the usual (.) signature of course.
17:25:22 <oerjan> > (0$0$) -- hm i wonder...
17:25:23 <lambdabot> The operator `GHC.Base.$' [infixr 0] of a section
17:25:23 <lambdabot> must have lower prec...
17:25:29 <Vorpal> elliott, not that either
17:25:39 <oerjan> for some reason he hasn't changed $ to infixl though :P
17:25:49 <Vorpal> well to me that doesn't really explain what caleskell is
17:25:58 <monqy> caleskell is caleskell
17:26:03 <Vorpal> ah google was more helpful than DDG there
17:26:29 <CakeProphet> > func "caleskell is " (var "your mom") :: Expr
17:26:29 <Vorpal> still no explanations as to what it is
17:26:30 <lambdabot> Not in scope: `func'
17:26:32 <CakeProphet> :(
17:26:34 <CakeProphet> > fun "caleskell is " (var "your mom") :: Expr
17:26:36 <lambdabot> caleskell is your mom
17:26:49 <monqy> good job
17:26:50 <elliott> oerjan: i like how siddiq stealthily avoided actually pinging anyone
17:26:54 <CakeProphet> monqy: thanks.
17:27:32 <oerjan> mhm
17:27:33 <CakeProphet> > var "siddiq more like siddick huh huh huh huh"
17:27:34 <lambdabot> siddiq more like siddick huh huh huh huh
17:28:00 <CakeProphet> look guys, I can make lambdabot obnoxious.
17:28:13 <monqy> ok
17:28:58 -!- naggg has joined.
17:29:16 <CakeProphet> also, in other news
17:29:18 <CakeProphet> https://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=do+a+barrel+roll
17:30:12 <oerjan> Vorpal: cale is a #haskell regular who added some of his haskell ideas to lambdabot. i think.
17:30:35 <Vorpal> oerjan, ah
17:30:52 <elliott> oerjan: he is the maintainer of lambdabot.
17:30:54 <elliott> well
17:30:55 <elliott> owner
17:30:58 <elliott> it's unmaintained :)
17:31:01 <elliott> hi naggg
17:31:03 <elliott> `? welcome
17:31:05 <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
17:31:17 <Vorpal> `run type '?'
17:31:18 <HackEgo> ​? is /hackenv/bin/?
17:31:21 <oerjan> i wasn't quite sure about that, thus "i think"
17:31:23 <Vorpal> `run file '?'
17:31:25 <HackEgo> ​?: ERROR: cannot open `?' (No such file or directory)
17:31:29 <Vorpal> `run file 'bin/?'
17:31:30 <HackEgo> bin/?: POSIX shell script text executable
17:31:36 <naggg> hi elliott
17:31:38 <Vorpal> `run pasteurl 'bin/?'
17:31:40 <HackEgo> sh: pasteurl: not found
17:31:42 <Vorpal> err
17:31:49 <CakeProphet> `pasteurl 'bin/?'
17:31:51 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pasteurl: not found
17:31:52 <elliott> Vorpal: try not to fail horribly at the bots in front of the newbies
17:31:59 <CakeProphet> `paste 'bin/?'
17:31:59 <elliott> :p
17:32:01 <Vorpal> elliott, I forgot what the command was
17:32:01 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3471 \ cat: 'bin/?': No such file or directory
17:32:04 <elliott> It's `url.
17:32:06 <elliott> `url bin/?
17:32:07 <Vorpal> ah
17:32:08 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/?
17:32:16 <Vorpal> wait, that is going to break
17:32:18 <elliott> Oh, that actually doesn't work because Gregor is lazy.
17:32:21 <elliott> `paste bin/?
17:32:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11685
17:32:49 <Vorpal> `ls wisdom
17:32:52 <HackEgo> ais523 \ augur \ c \ elliott \ everyone \ finland \ fizzie \ flower \ friendship \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ monad \ monads \ monqy \ oerjan \ oklopol \ qdb \ qdbformat \ sgeo \ shachaf \ u \ vorpal \ welcome \ wiki
17:32:57 <Vorpal> that is a lot
17:33:00 <elliott> <oerjan> i wasn't quite sure about that, thus "i think"
17:33:08 <elliott> oerjan: and i was giving you the gift of correction :P
17:33:12 <elliott> Vorpal: that's barely any
17:34:00 <oerjan> `? monads
17:34:02 <HackEgo> Monads are just monoids in the category of endofunctors.
17:34:03 <elliott> Vorpal: crawl's learndb has a single entry with 3494 definitions
17:34:48 <oerjan> `? monad
17:34:50 <HackEgo> Monads are just monoids in the category of endofunctors.
17:35:04 <monqy> elliott: good thing that entry sucks
17:35:18 <elliott> monqy: it's crawl, what did you expect
17:35:52 <monqy> some crawl learndb entries are good in a bad way but most of them are awful
17:35:55 <oerjan> `? intercal
17:35:57 <HackEgo> INTERCAL has excellent features for modular program for the enterprise market.
17:36:06 <Vorpal> elliott, crawl being?
17:36:15 <elliott> Vorpal: I refuse to believe you don't know what Crawl is.
17:36:25 <Vorpal> elliott, oh, stone soup?
17:36:36 <elliott> Yes.
17:36:38 <Vorpal> right
17:36:59 <Vorpal> elliott, would you believe me if I said I never actually played it?
17:37:05 -!- Ngevd has quit (Ping timeout: 252 seconds).
17:37:10 <CakeProphet> `? finland
17:37:12 <HackEgo> Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus.
17:37:18 <oerjan> `cat wisdom/monad
17:37:20 <elliott> Vorpal: No, I would die from shock.
17:37:20 <HackEgo> Monads are just monoids in the category of endofunctors.
17:37:22 <fizzie> Rodney's learndb has 6653 definitions, but the entry with most definitions (stealing_from_shops) only has 17 of them. (Assuming I grepped right.)
17:37:41 <CakeProphet> `? elliott
17:37:43 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?
17:37:57 <monqy> ?
17:38:12 -!- zzo38 has quit (Remote host closed the connection).
17:38:14 <CakeProphet> `? oerjan
17:38:16 <HackEgo> Your future evil overlord oerjan is an expert in lazy computation.
17:38:23 <CakeProphet> `? monqy
17:38:25 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
17:38:38 <oerjan> `run echo '"Banach-Tarski" is an anagram of "Banach-Tarski Banach-Tarski".' >wisdom/banach-tarski
17:38:39 <HackEgo> No output.
17:38:49 <elliott> oerjan: i am not sure i approve of the hyphen
17:39:02 <oerjan> which one?
17:39:08 <Vorpal> elliott, rougelikes I played: nethack, slashem, a bit of angband. Yeah I think that is it.
17:39:15 <CakeProphet> `? fizzie
17:39:16 <elliott> oerjan: filename one :P
17:39:17 <HackEgo> fizzie is rumoured to be written in Funge-98.
17:39:18 <Vorpal> maybe I should play stone soup now
17:39:24 <CakeProphet> `? gregpr
17:39:26 <HackEgo> gregpr? ¯\(°_o)/¯
17:39:35 <CakeProphet> `? gregor
17:39:38 <HackEgo> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
17:39:38 <elliott> Vorpal: don't, it sucks
17:39:43 <Vorpal> elliott, how so?
17:39:48 <elliott> monqy: ais523: back me up here
17:39:51 <monqy> it sucks
17:39:53 <CakeProphet> `? friendship
17:39:55 <Vorpal> elliott, does it suck because you are bad at it? Or some other reason?
17:39:55 <HackEgo> friendship wisdom
17:40:03 <elliott> it sucks because it's bad
17:40:08 <monqy> it sucks because it's bad
17:40:11 <Vorpal> elliott, in what way is it bad
17:40:12 <elliott> you can trust monqy, he has like _three_ entries in that learndb.
17:40:18 <monqy> i have way more than three
17:40:18 <Gregor> Maybe you should MAKE stone soup.
17:40:18 <Vorpal> and stop echoing monqy
17:40:26 <elliott> monqy echoed me you blithering moron.
17:40:32 <monqy> and i've won a lot of games!!
17:40:37 <monqy> so I have experience, am probably good
17:40:42 <Vorpal> elliott, no that was "and stop echoing, monqy!"
17:40:42 <oerjan> elliott: it occurs to me that `? welcome is atypical: it's information is actually true.
17:40:44 <elliott> monqy: how many games... is it 2
17:40:46 <CakeProphet> elliott: s/echoing/\1,/
17:40:47 <CakeProphet> yes, that.
17:40:48 <oerjan> *its
17:40:52 <elliott> oerjan: fix the ' so i can addquote that
17:41:03 <oerjan> elliott: it occurs to me that `? welcome is atypical: its information is actually true.
17:41:09 <monqy> elliott: i think it's like 17 :( i used to play it a lot before i got really frustrated with how bad it was
17:41:11 <elliott> `addquote <oerjan> elliott: it occurs to me that `? welcome is atypical: its information is actually true.
17:41:13 <HackEgo> 704) <oerjan> elliott: it occurs to me that `? welcome is atypical: its information is actually true.
17:41:29 <CakeProphet> `? haskell
17:41:31 <HackEgo> Haskell is preferred by 9 out of 10 esoteric programmers. Ask your GP today! http://learnyouahaskell.com/
17:41:34 <elliott> Vorpal: anyway, the reasons are (a) it sucks (b) the balance is awful (c) the fact that you're always in the centre tile gives you a headache
17:41:37 <elliott> Vorpal: ask ais523 if you want more detail :P
17:41:41 <Vorpal> elliott, the only person I would trust about rougelikes would be ais523. You need him to back you up.
17:41:49 <CakeProphet> `? itidus20
17:41:51 <HackEgo> itidus20 is horny 60 year olds having cybersex in minecraft
17:41:52 <Vorpal> well, only person in this channel
17:42:00 <CakeProphet> `? ais523
17:42:02 <HackEgo> ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented.
17:42:02 <monqy> I don't care about (c) but I'd add (d) it's boring
17:42:14 <Vorpal> elliott, err, I seen plenty of games like (c), they don't annoy me
17:42:29 <CakeProphet> `? sgeo
17:42:32 <HackEgo> Sgeo invented Metaplace sex.
17:42:32 <monqy> and (e) it's tedious
17:42:45 <monqy> maybe other games are boring and tedious too; I prefer not to play them either
17:42:54 <CakeProphet> `? CakeProphet
17:42:57 <HackEgo> CakeProphet? ¯\(°_o)/¯
17:43:04 <Gregor> ? who owns lines starting with a ? again?
17:43:05 <Vorpal> `? feather
17:43:07 <HackEgo> feather? ¯\(°_o)/¯
17:43:11 <Vorpal> oh well
17:43:14 <Gregor> ?somebody owns lines starting with a ?
17:43:14 <lambdabot> Unknown command, try @list
17:43:21 <Gregor> Yeah, lambdabot, that jerk.
17:43:24 <oerjan> `run echo 'Vorpal is a swede so normal that this information is actually true.' >wisdom/vorpal
17:43:26 <HackEgo> No output.
17:43:38 <Vorpal> oerjan, heh
17:43:42 <elliott> `run echo 'Vorpal sucks.' >wisdom/vorpal
17:43:44 <HackEgo> No output.
17:43:44 * elliott master of accuracy.
17:43:49 <Vorpal> `rollback
17:43:50 <Gregor> `cat bin/learn
17:43:51 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: rollback: not found
17:43:51 <elliott> Gregor: BTW `quote modifies the FS on every invocation now is that ok.
17:43:52 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | sed 's/ .*//' | tr A-Z a-z) \ info=$(echo "$1" | sed 's/[^ ]* //') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." \
17:43:53 <Vorpal> `help
17:43:54 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
17:43:57 <Vorpal> `revert
17:43:58 <HackEgo> Done.
17:44:02 <Gregor> elliott: wtf why
17:44:03 <monqy> `quote
17:44:04 <oerjan> elliott: see what you did
17:44:05 <HackEgo> 620) <monqy> in the past few minutes I tried remembering what my dream last night was, but instead remembered I didn't sleep
17:44:06 <elliott> Gregor: `unquote
17:44:15 -!- naggg has quit (Quit: begone).
17:44:16 <Gregor> `url bin/unquote
17:44:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/unquote
17:44:27 <Vorpal> `revert 6e3092881cc4
17:44:40 <Vorpal> wtf?
17:44:41 <monqy> `? vorpal
17:44:44 <HackEgo> Vorpal sucks.
17:44:48 * elliott waits for Vorpal to break the bot with idiocy.
17:44:49 <CakeProphet> there was already a wisdom entry on vorpal...
17:44:50 -!- boily has joined.
17:44:53 <Gregor> elliott: OK, but why does `quote need to modify ...
17:45:00 <elliott> Gregor: So that `unquote knows what to delete.
17:45:03 <elliott> <person> `quote
17:45:06 <elliott> <HackEgo> SHITTY QUOTE
17:45:06 <Gregor> OHHH
17:45:08 <Gregor> I gets it.
17:45:08 <elliott> <person> `unquote
17:45:12 <elliott> <HackEgo> K it's gone.
17:45:14 <Gregor> Sure, works for me.
17:45:27 <monqy> <other person> i loved that quote
17:45:31 <Gregor> You should have it report which one it removed just in case of SYNCHRONIZATION.
17:45:33 <Vorpal> Gregor, what does `revert take as parameter exactly?
17:45:36 <elliott> Gregor: It does.
17:45:39 <elliott> Gregor: `delquote does now.
17:45:42 <Gregor> Vorpal: The revision to revert to.
17:45:58 <Vorpal> Gregor, for some reason I can't find the revision number on http://codu.org/projects/hackbot/fshg/
17:46:30 <Vorpal> I seem to remember seeing said revision number there before.... Strange
17:46:44 <elliott> You must be at least this smart to ride the bot -->
17:46:51 <CakeProphet> `run echo ':>' > wisdom/cakeprophet
17:46:53 <HackEgo> No output.
17:46:58 <CakeProphet> `? cakeprophet
17:46:58 <elliott> `revert 828
17:47:00 <HackEgo> Done.
17:47:02 <elliott> Vorpal: There.
17:47:02 <CakeProphet> ...
17:47:04 <Gregor> Is everyone `learn-incompetent or what?
17:47:06 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/6fd8b41fdb37
17:47:12 <elliott> Gregor: Yes.
17:47:14 <HackEgo> ​:>
17:47:16 <CakeProphet> Gregor: how do I learn learn?
17:47:24 <CakeProphet> `run echo ':>' > wisdom/cakeprophet
17:47:26 <HackEgo> No output.
17:47:28 <CakeProphet> `? cakeprophet
17:47:30 <elliott> `rm wisdom/cakeprophet
17:47:30 <HackEgo> ​:>
17:47:32 <HackEgo> No output.
17:47:41 <CakeProphet> elliott: what the hell.
17:47:43 <Vorpal> elliott, ah there, I tried the hash, but that didn't work
17:47:51 <CakeProphet> elliott "hackego despot" hird
17:47:58 <Vorpal> elliott, it would make sense if the hash worked
17:47:59 <elliott> CakeProphet: You must learn how to use `learn before I'll not be a dick about working around it :P
17:48:10 <elliott> Vorpal: I'm the maintainer of HackEgo. That's why you should complain to me and not Gregor.
17:48:12 <CakeProphet> `learn learn
17:48:14 <HackEgo> I knew that.
17:48:22 <monqy> `? learn
17:48:24 <HackEgo> learn
17:48:26 <monqy> learn
17:48:27 <CakeProphet> ah.
17:48:32 <Vorpal> elliott, you are? I thought it ran on codu
17:48:34 <Gregor> HackEgo has no maintainer, it is anarchy.
17:48:39 <CakeProphet> monqy: nice cascading effect.
17:48:43 <elliott> `rm bin/learn
17:48:45 <HackEgo> No output.
17:48:46 <elliott> er
17:48:48 <CakeProphet> lol
17:48:54 <monqy> rip
17:49:05 <elliott> `revert 828
17:49:07 <HackEgo> Done.
17:49:20 <CakeProphet> `run cat `which learn`
17:49:21 <elliott> Gregor: P.S. You should make `revert rollback to the last revision :P
17:49:22 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | sed 's/ .*//' | tr A-Z a-z) \ info=$(echo "$1" | sed 's/[^ ]* //') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." \
17:49:26 <elliott> Gregor: I'm 99% sure hg lets you specify that.
17:49:42 <CakeProphet> this sed scares me.
17:49:53 <Gregor> elliott: I'm 99% sure that I'm too lazy to implement that and also that I don't want it to be QUITE that easy to revert.
17:49:57 <CakeProphet> I'm afraid of learn.
17:50:12 <elliott> Gregor: (a) But it's like one line since hg lets you specify it :'( (b) Point.
17:50:21 <elliott> It's annoying for me though, how about you make it just work for me :P
17:50:31 <CakeProphet> also [^ ] is a bad way to say \S
17:50:35 <Gregor> I accept reasonable patches to HackBot.
17:50:41 <CakeProphet> `learn cakeprophet :>
17:50:43 <HackEgo> I knew that.
17:50:44 <Gregor> CakeProphet: But it's a good way to say "not a space"
17:50:46 <elliott> Gregor: Got a link again? :P
17:51:03 <Vorpal> elliott, there are race conditions that way
17:51:04 <Gregor> elliott: hg for filesystem, minus "fs"
17:51:06 <CakeProphet> Gregor: therefore, "is" is not transitive.
17:51:11 <elliott> Vorpal: HackEgo is one gigantic race condition.
17:51:22 <Vorpal> well okay
17:51:23 <CakeProphet> `? cakeprophet
17:51:25 <HackEgo> cakeprophet :>
17:51:28 <CakeProphet> :(
17:51:40 <CakeProphet> `run echo ':>' > wisdom/cakeprophet
17:51:42 <HackEgo> No output.
17:51:59 <CakeProphet> much better.
17:52:21 <CakeProphet> `? cakeprophet
17:52:23 <HackEgo> ​:>
17:52:24 <CakeProphet> :>
17:52:39 <elliott> Gregor: Writing a patch now :P
17:52:49 <Gregor> elliott: Submit in bundle format kthx
17:53:04 <Gregor> (And/or export format)
17:53:33 <elliott> Gregor: Y'know, I'm pretty sure you don't want "hg revert".
17:53:40 <elliott> You want the revert to become a revision itself, after all.
17:54:04 <CakeProphet> `run echo ~
17:54:06 <HackEgo> ​/tmp
17:54:07 <Gregor> elliott: I commit post-hg-revert. hg backout would be similar but I didn't use it because this way the hg revert is just like any other command.
17:54:18 <CakeProphet> `run echo .
17:54:20 <HackEgo> ​.
17:54:21 <elliott> Gregor: Oh, okay.
17:54:24 <Gregor> CakeProphet: Impressive.
17:54:28 <elliott> Gregor: Why /don;t/ hashes work, btw?
17:54:30 <elliott> s/;/'/
17:54:34 <Gregor> elliott: Don't ask me :)
17:54:37 <CakeProphet> `run pwd
17:54:39 <HackEgo> ​/hackenv
17:54:44 <Gregor> elliott: I probably just only accept numerics.
17:55:04 <CakeProphet> revert should just be an alias for find . -delete
17:55:07 <shachaf> `cat wisdom/shachaf
17:55:08 <HackEgo> shachaf mad
17:55:16 <shachaf> I shouldn't be in there.
17:55:19 * shachaf mad
17:55:26 <CakeProphet> shachaf: learn to ?
17:55:27 <Gregor> X-D
17:55:35 <CakeProphet> `learn ? is wisdom
17:55:38 <HackEgo> I knew that.
17:55:42 <CakeProphet> `? ?
17:55:42 <Gregor> `? ? ? ? ? ? ?
17:55:44 <HackEgo> ​? is wisdom
17:55:48 <shachaf> CakeProphet: lern2unix
17:55:53 <Vorpal> Gregor, btw:
17:55:56 <Vorpal> `url bin/?
17:55:56 <HackEgo> ​? ? ? ? ? ?? ¯\(°_o)/¯
17:55:58 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/?
17:56:00 <Vorpal> Gregor, that url is broken
17:56:09 <Gregor> Vorpal: btw:
17:56:09 <Vorpal> Gregor, I think you need to properly url encode stuff
17:56:13 <Gregor> `cat bin/url
17:56:15 <HackEgo> ​#!/bin/bash \ if [ "$1" ] \ then \ echo 'http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/'"$1" \ else \ echo 'http://codu.org/projects/hackbot/fshg/' \ fi
17:56:19 <Gregor> Vorpal: That script is part of the FS, anybody can fix it.
17:56:25 <Vorpal> ah okay
17:56:44 <Gregor> Only `fetch, `revert, and (maybe?) `help are privileged.
17:56:45 <Vorpal> fuck url encoding in bash
17:56:45 <CakeProphet> `cat `which revert`
17:56:47 <HackEgo> cat: `which revert`: No such file or directory
17:56:48 <Gregor> Oh, and `run
17:56:51 <CakeProphet> `run cat `which revert`
17:56:57 <Vorpal> Gregor, ah
17:57:09 <elliott> Gregor: It doesn't work because you explicitly require the revision to be a number... :P
17:57:11 * elliott just removes that constraint
17:57:14 <Vorpal> Gregor, which protocols does `fetch support?
17:57:16 <elliott> It'll fail harmlessly if you try and do something stupid.
17:57:23 <HackEgo> No output.
17:57:28 <Gregor> Vorpal: Whatever wget supports *shrugs*
17:57:38 <shachaf> `run perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' 'blah/?'
17:57:41 <HackEgo> Can't locate URI/Escape.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .). \ BEGIN failed--compilation aborted.
17:57:48 * shachaf hmphs.
17:57:49 <CakeProphet> `? wisdom
17:57:51 <HackEgo> wisdom? ¯\(°_o)/¯
17:57:57 <Vorpal> elliott, Surely you want to check for it being [0-9a-f]+
17:58:00 <elliott> Why
17:58:07 <elliott> You can say things like -3
17:58:10 <elliott> To go two revisions back
17:58:12 <Vorpal> ah
17:58:30 <elliott> >& is like redirecting both 1 and 2, right?
17:58:36 <Vorpal> elliott, just as long as you handle escaping and quoting properly (might be a non-issue, depending on which language it is written in)
17:58:56 <Gregor> `fetch file:///etc/passwd
17:58:57 <HackEgo> file:///etc/passwd: Unsupported scheme `file'.
17:59:00 <Gregor> Dern :P
17:59:15 <CakeProphet> `which revert
17:59:16 <Vorpal> Gregor, so no gopher
17:59:17 <HackEgo> No output.
17:59:22 <Gregor> Vorpal: Tragic I know.
17:59:27 <Vorpal> heh
17:59:38 <CakeProphet> Gregor: I don't understand. why is revert not part of the filesystem? :>
17:59:43 -!- Phantom_Hoover has joined.
17:59:53 <CakeProphet> it should be in ./bin
17:59:56 <Gregor> `ls .hg
17:59:58 <HackEgo> ls: cannot access .hg: No such file or directory
18:00:46 <CakeProphet> `ls -a
18:00:48 <HackEgo> ​. \ .. \ bin \ canary \ karma \ lastquote \ lib \ paste \ quotes \ share \ wisdom
18:01:11 <CakeProphet> `ls wisdom
18:01:13 <HackEgo> ​? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ elliott \ everyone \ finland \ fizzie \ flower \ friendship \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ monad \ monads \ monqy \ oerjan \ oklopol \ qdb \ qdbformat \ sgeo \ shachaf \ u \ vorpal \ welcome \ wiki
18:01:20 <shachaf> `rm wisdom/shachaf
18:01:21 <HackEgo> No output.
18:01:26 * shachaf unmad
18:01:28 <CakeProphet> `? everyone
18:01:30 <HackEgo> Everyone in here is mad.
18:01:42 <shachaf> `echo No outut.
18:01:43 <HackEgo> No outut.
18:01:52 <shachaf> `echo ?where ?where
18:01:54 <HackEgo> ​?where ?where
18:01:59 <CakeProphet> `? flower
18:02:01 <HackEgo> flower. what IS a flower?
18:02:08 <CakeProphet> `? ievan
18:02:11 <HackEgo> ievan is basically http://www.youtube.com/watch?v=4om1rQKPijI
18:02:13 <shachaf> One might say the same thing about birds.
18:02:14 <CakeProphet> `? intercal
18:02:16 <HackEgo> INTERCAL has excellent features for modular program for the enterprise market.
18:02:50 <CakeProphet> that video is awesome.
18:03:23 <CakeProphet> `? monads
18:03:25 <HackEgo> Monads are just monoids in the category of endofunctors.
18:03:26 <CakeProphet> `? monad
18:03:28 <HackEgo> Monads are just monoids in the category of endofunctors.
18:03:37 <CakeProphet> `? u
18:03:39 <HackEgo> u monad?
18:04:03 <elliott> Gregor: curl http://sprunge.us/jSEE | uudecode
18:05:27 <CakeProphet> `? c
18:05:29 <HackEgo> C is the language of��V�>WIד�.��Segmentation fault
18:05:43 <elliott> shachaf: It's "ask".
18:05:48 <elliott> CakeProphet: Also, stop spamming.
18:06:00 <CakeProphet> what is spam?
18:07:48 <CakeProphet> ^celebrate
18:07:48 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
18:07:49 <myndzi\> | | | `\o/´ | | | `\o/´ | | |
18:07:49 <myndzi\> |\ |\ |\ | /´\ /< |\ | /< /´\ |\
18:07:49 <myndzi\> /`¯|_) /`\
18:07:49 <myndzi\> (_| (_| |_)
18:07:54 <CakeProphet> oh right.
18:08:35 <CakeProphet> but how can that be spam if it brings so much joy?
18:08:55 <monqy> learning joy
18:09:42 <CakeProphet> > var "!help"
18:09:44 <lambdabot> !help
18:09:48 <CakeProphet> aw.
18:10:52 <CakeProphet> I think we should all make bots.
18:10:58 -!- Ngevd has joined.
18:11:00 <monqy> only if they're good bots
18:11:44 <CakeProphet> and have as many bots as regular spamm^H^H^H^H^Hhumans
18:14:24 <monqy> I wouldn't like a channel full of bad bots...but good bots are good
18:16:21 <CakeProphet> I'm considering writing one in some esolang, but I don't know what purpose it would serve.
18:16:30 <monqy> being good
18:17:08 <CakeProphet> it could hold arbitrary state and not ignore bot commands.
18:17:57 <Gregor> elliott: abort: no diffs found
18:18:00 <elliott> fungot holds arbitrary state too
18:18:00 <fungot> elliott: its been said that atlanta is better than bfbot!) :p. i think i get it completely now that i'm already there.
18:18:04 <CakeProphet> and also have a dice roller, or some kind of esolang interpreter.
18:18:05 <shachaf> elliott: What is?
18:18:06 <shachaf> Oh.
18:18:11 <elliott> Gregor: Uhh, I did "hg bundle" and it said 1 changeset found.
18:18:17 <elliott> Gregor: What'd I do wrong?
18:18:18 <Gregor> Hm
18:18:24 <Gregor> Nothing by the sounds of it :P
18:18:26 <elliott> [elliott@dinky PRIVMSG]$ hg bundle bundle.hg
18:18:26 <elliott> searching for changes
18:18:26 <elliott> 1 changesets found
18:18:30 <elliott> I'll re-uuencode it.
18:18:48 <elliott> Gregor: http://sprunge.us/jGde ;; well this doesn't look any longer.
18:18:53 <elliott> Hmm
18:18:59 <Gregor> Uhh, hg export then? :P
18:19:10 <Gregor> Never seen bundle just lie >_>
18:19:31 <elliott> Gregor: http://sprunge.us/fcjP
18:20:02 <CakeProphet> monqy: the problem is that every utility I can think of is pretty much made capable by hackego. :P
18:20:26 <Gregor> `echo this crap is useless lol > bullshitfile
18:20:28 <HackEgo> this crap is useless lol > bullshitfile
18:20:33 <Gregor> ... I am el stupid
18:20:35 <Gregor> `run echo this crap is useless lol > bullshitfile
18:20:37 <HackEgo> No output.
18:20:46 <Gregor> `revert -1
18:21:05 <Gregor> OK, none o' that :P
18:21:08 <monqy> `cat bullshitfile
18:21:10 <HackEgo> this crap is useless lol
18:21:13 <Gregor> `revert
18:22:26 <Gregor> `revert
18:22:28 <HackEgo> abort: repository /tmp/hackenv.hg.19659 not found!
18:22:31 <Gregor> lolwut
18:24:13 <Vorpal> Gregor, tell me what caused that when you find out
18:25:28 <Gregor> `revert
18:25:29 <HackEgo> abort: repository /tmp/hackenv.hg.19878 not found!
18:25:42 <Gregor> `revert
18:25:43 <HackEgo> Done.
18:25:47 <Gregor> Okidokie :P
18:25:51 <monqy> `cat bullshitfile
18:25:53 <HackEgo> cat: bullshitfile: No such file or directory
18:26:34 <Gregor> There's no semilogical reason why elliott should have failed, but it did >_>
18:26:44 <elliott> ??
18:26:51 <elliott> Gregor: Yo, ping me when you apply my changes so I can test them :P
18:27:03 <Gregor> elliott: Err, done.
18:27:05 <elliott> <HackEgo> abort: repository /tmp/hackenv.hg.19878 not found!
18:27:06 <elliott> Hmm
18:27:07 <Gregor> elliott: That's what I was just testing.
18:27:08 <Gregor> Then fixing.
18:27:13 <elliott> Gregor: Why does mv blah .hg work
18:27:15 <elliott> But not hg -R blah
18:27:20 <Gregor> elliott: Excellent question.
18:27:26 <Gregor> elliott: One I didn't bother to answer, I just mv'd :P
18:27:37 <elliott> Gregor: Oh, did you have the same problem previously?
18:27:49 <Gregor> elliott: Yeah.
18:28:01 <elliott> Gregor: Right, well, make the same modification to mine :P
18:28:04 <olsner> elliott: what does hg blah do?
18:28:05 <elliott> Or I can if you really want
18:28:07 <elliott> olsner: Blahs
18:28:09 <Gregor> elliott: Already have.
18:28:13 <elliott> Gregor: Oh :P
18:28:15 <Gregor> `hg blah
18:28:15 <Vorpal> isn't -R supposed to point to foo as in foo/.hg
18:28:18 <HackEgo> hg: unknown command 'blah' \ Mercurial Distributed SCM \ \ basic commands: \ \ add add the specified files on the next commit \ annotate show changeset information by line for each file \ clone make a copy of an existing repository \ commit commit the specified files or all outstanding changes \ diff
18:28:22 <Vorpal> rather than to foo/.hg directly
18:28:30 <elliott> Vorpal: I dunno, you can give it a bundle file
18:28:33 <elliott> -R bundle.hg
18:28:35 <elliott> `run echo shitfuck >fuckshit
18:28:35 <Vorpal> hm okay
18:28:37 <HackEgo> No output.
18:28:40 <elliott> `revert
18:28:41 <HackEgo> Done.
18:28:44 <elliott> `cat fuckshit
18:28:46 <HackEgo> cat: fuckshit: No such file or directory
18:28:48 <elliott> `help
18:28:49 <elliott> Yay
18:28:49 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
18:29:11 <Gregor> lololol there's clock sync issues, fshg reported that those happened "28 seconds from now"
18:29:21 <Vorpal> heh
18:29:22 <elliott> Nice
18:29:26 <CakeProphet> `revert !#$
18:29:27 <HackEgo> abort: unknown revision '!#$'!
18:29:30 <elliott> 8 seconds ago now!
18:29:33 <elliott> `revert --
18:29:39 <elliott> ...hope that fails :P
18:29:47 <elliott> Uhh.... HackEgo? :P
18:29:51 <Vorpal> `type
18:29:52 <HackEgo> hg revert: option -r requires argument hg revert [OPTION]... [-r REV] [NAME]... restore individual files or directories to an earlier state NOTE: This command is most likely not what you are looking for. revert will partially overwrite content in the working directory without changing the working directory parents. Use "hg update -r rev" to check out earlier revisions, or "hg update --clean ." to undo a merge which has added another parent. With no revision spec
18:29:56 <elliott> Nice
18:29:58 <Vorpal> elliott, ouch
18:30:08 <Gregor> elliott: lul
18:30:15 <Vorpal> `revert --; cat /etc/passwd
18:30:16 <HackEgo> abort: unknown revision '--; cat /etc/passwd'!
18:30:19 <Vorpal> aww
18:30:27 <Gregor> `cat /etc/passwd
18:30:29 <HackEgo> cat: /etc/passwd: No such file or directory
18:30:32 <Gregor> *snaps*
18:30:32 <CakeProphet> Vorpal doesn't know bash.
18:30:50 <Vorpal> CakeProphet, ...?
18:30:57 <elliott> Gregor: Except that the hg command is run on the host :P
18:31:01 <Vorpal> inded
18:31:03 <Vorpal> indeed*
18:31:05 <elliott> Gregor: So `revert is TECHNICALLY the most viable exploit vector at this point :P
18:31:13 <Gregor> elliott: True, but /etc/passwd is still useless *shrugs*
18:31:19 <elliott> Gregor: (Can't you run the hg stuff from inside the repo?)
18:31:29 <elliott> I guess that's vulnerable to breakage unless you have some `restorerepo command.
18:31:32 <CakeProphet> `run find . -delete
18:31:34 <HackEgo> No output.
18:31:37 <CakeProphet> `ls
18:31:38 <HackEgo> bin \ canary \ karma \ lastquote \ lib \ paste \ quotes \ share \ wisdom
18:31:42 <Vorpal> Gregor, yes I know, but it was more a proof of concept. If I had been evil I would have used rm -rf ~ instead
18:31:54 <Gregor> <elliott> Gregor: (Can't you run the hg stuff from inside the repo?) // in principle, but I wanted to maintain the invariant that one command = one commit
18:31:59 <elliott> Gregor: Right
18:32:06 <elliott> Gregor: You don't have that invariant
18:32:09 <CakeProphet> `run find . -name '*' -delete
18:32:09 <elliott> It's one command = zero or one commits :P
18:32:11 <HackEgo> No output.
18:32:12 <CakeProphet> `ls
18:32:14 <HackEgo> bin \ canary \ karma \ lastquote \ lib \ paste \ quotes \ share \ wisdom
18:32:18 <CakeProphet> `ls bin
18:32:19 <elliott> CakeProphet: You're never gonna figure out how that works.
18:32:20 <HackEgo> ​? \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ runperl \ toutf8
18:32:22 <elliott> I suggest giving up.
18:32:36 <CakeProphet> elliott: how does it work (or not work, actually)
18:33:16 <elliott> Gregor: Yo, there's a hole in http://sprunge.us/fcjP
18:33:20 <Phantom_Hoover> Wait, I thought the gmail UI changed?
18:33:33 <Gregor> elliott: There's a hole in my bucket, my bucket, my bucket.
18:33:39 <elliott> Gregor: s{'PRIVMSG '$CHANNEL' :'$MSG}{"PRIVMSG $CHANNEL :$MSG"} pls
18:34:40 <Gregor> elliott: Done
18:34:46 <elliott> Gregor: Thx
18:36:57 -!- Siddiq has joined.
18:37:15 <elliott> hello Siddiq
18:37:17 <elliott> `? welcome
18:37:19 <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
18:37:53 -!- Zwaarddijk has quit (Ping timeout: 240 seconds).
18:38:22 <Siddiq> hi elliot
18:38:39 <Siddiq> hi augur
18:38:40 <shachaf> elliott: I never got a welcome like that!
18:38:57 <augur> hello Siddiq
18:39:29 <Siddiq> how are you
18:39:47 <Gregor> shachaf: Blah blah blah welcome blah blah blah hub blah blah blah exoteric voodoo programming blah blah blah
18:40:05 <Gregor> shachaf: Blah blah blah matrix of solidity blah blah blah
18:40:14 <Siddiq> what is this
18:40:15 <shachaf> exoteric!
18:40:42 <quintopia> i would like to reiterate and expound upon what gregor just said
18:40:52 <quintopia> but i am too locked into my matrix of solidity
18:40:57 <shachaf> "blah blah blah spoons blah blah blah swordfish blah blah blah"
18:41:01 <quintopia> and so i will go away instead
18:41:10 <olsner> shachaf: nope nope nope, there is no spoon
18:41:21 <quintopia> chuck testa!
18:41:28 -!- Siddiq has left.
18:41:35 <Gregor> Well that was expected :P
18:41:46 <shachaf> olsner: I see that it goes unappreciated. :-(
18:45:32 -!- ais523 has changed nick to ais523\unfoog.
18:45:39 <Vorpal> there should be an esolang based on the other sort of esotericness
18:46:07 <Vorpal> wait, lets make a bf clone with renamed command, like [ = matrix of solidity
18:46:18 <elliott> ais523\unfoog: unfoog? I heard one of those guys lost their game because they were too busy chatting on IRC!
18:46:20 <olsner> how about an ... esoteric programming esolang?
18:46:33 <Vorpal> olsner, that is what I suggested
18:46:46 <quintopia> was the matrix of solidity thing once said by a parting visitor to this channel?
18:46:51 <Vorpal> ais523\unfoog, hi there, is crawl: stone soup any good?
18:46:51 <elliott> `quote matrix of
18:46:53 <HackEgo> 303) <treederwright> enjoy being locked in your matrix of solidity
18:47:00 <ais523\unfoog> Vorpal: I have a personal intense dislike for it
18:47:06 <elliott> ais523\unfoog: Oh yeah, me and monqy are trying to tell Vorpal not to play Crawl because it sucks; he won't listen
18:47:07 <Vorpal> ais523\unfoog, ah okay, why?
18:47:12 <ais523\unfoog> to the extent that I've been kicked from ##crawl-dev for trolling at least twice
18:47:15 <Vorpal> elliott, monqy was just echoing you
18:47:21 <quintopia> elliott: was it followed by a ragepart?
18:47:22 <ais523\unfoog> Vorpal: because on paper it sounds like the sort of roguelike I'd like, but in practice it's awful
18:47:23 <elliott> Vorpal: No, he said a bunch of things of his own accord
18:47:27 <ais523\unfoog> and also, it's getting worse as tme goes on
18:47:28 <elliott> And is actually an experienced Crawl player
18:47:33 <ais523\unfoog> I'm not a very good Crawl player
18:47:37 <Vorpal> ais523\unfoog, ah
18:47:38 <ais523\unfoog> I keep getting killed by the interface
18:47:45 <ais523\unfoog> which the Crawl devs keep insisting is better than NetHack's
18:47:46 <Vorpal> aha, that sort of issues
18:47:49 <ais523\unfoog> either that, or killed by boredom
18:47:53 <ais523\unfoog> (indirectly, but still)
18:48:20 <ais523\unfoog> the best strategy is, to, whenever you come across something you're not certain you can handle, run away and go somewhere else
18:49:00 <Vorpal> ais523\unfoog, well I have to say that nethack's interface is not exactly perfect though.
18:49:11 <ais523\unfoog> Vorpal: so do I
18:49:32 <ais523\unfoog> did you not notice that I was making a NetHack variant specifically for the purpose of having a better interface?
18:49:33 <elliott> ais523 "AceHack" \unfoog must surely think NetHack's interface is the best.
18:49:44 <olsner> what if fungot could invent esolangs based on trawling the wiki or something
18:49:45 <fungot> olsner: eek. ppt :( emacs as my windowing system... fresco/ berlin has some *really* nice ideas, but also quite a few haskell papers already
18:49:54 <elliott> olsner: Oooh, that'd be a good grammar.
18:50:01 <Vorpal> ais523\unfoog, I thought it fixed a number of other issues, as well as some interface issues
18:50:10 <ais523\unfoog> Vorpal: what, AceHack?
18:50:15 <Vorpal> ais523\unfoog, yes
18:50:19 <ais523\unfoog> indeed, it has bugfixes
18:50:30 <Vorpal> ais523\unfoog, quite a few bug fixes iir
18:50:31 <Vorpal> iirc*
18:50:31 <ais523\unfoog> a few marginal balance changes, but only when the original is mad enough to count as a bug
18:50:39 <elliott> ais523\unfoog: BTW, is there a way to make AceHack /not/ put everything in a single acehackdir?
18:50:39 <ais523\unfoog> yep, but I still haven't fixed all the bugs yet
18:50:54 <Vorpal> ais523\unfoog, where was the acehack changelog now agai
18:50:56 <Vorpal> again*
18:50:57 <ais523\unfoog> elliott: not a supported way yet; however, I acknowledge that what it does at the moment is obviously mad
18:51:12 <elliott> ais523\unfoog: What's the unsupported way?
18:51:14 <ais523\unfoog> there is a define somewhere called VAR_PLAYGROUND or something like that
18:51:22 <ais523\unfoog> I don't know what it does, but believe it's relevant
18:51:29 <ais523\unfoog> I also suspect it doesn't work
18:51:37 <ais523\unfoog> with the build system
18:51:42 <ais523\unfoog> but if you can get it working, good for you
18:51:43 <elliott> ais523\unfoog: If I write a patch to make it do something vaguely FHSy or Kitten, will you accept it? :p
18:51:55 <elliott> s/or/for/
18:52:15 <olsner> "<fungot> eek. ppt :(", looks like fungot didn't appreciate my idea though
18:52:15 <fungot> olsner: my home network is down for me
18:52:16 <ais523\unfoog> elliott: I won't reject patches that are obvious improvements; you might have to clear it with the server admins and whatever insane method they're using to get it working on servers, though
18:52:26 <ais523\unfoog> olsner: why did you send it a powerpoint?
18:52:30 <ais523\unfoog> use odp instead
18:52:32 <elliott> ais523\unfoog: I could provde a --disable-sanity option for them :)
18:52:37 <Vorpal> ais523\unfoog, well, from the nethack wiki... "The vibrating square is visible from a distance.", I'm not sure that counts as a bug in the original.
18:52:55 <Vorpal> ais523\unfoog, after all, unless it has quite a large amplitude you can't really spot it from far away
18:53:00 <elliott> ais523\unfoog: (I realise --disable-bugfix is never a good option to add)
18:53:06 <ais523\unfoog> elliott: the AceHack server admins are kerio and rawrmage; kerio reminds me of you, except more annoying and with worse taste in languages
18:53:17 <ais523\unfoog> Vorpal: it's an interface improvement
18:53:19 <elliott> ais523\unfoog: oh dear; I don't think I'll like kerio
18:53:26 <ais523\unfoog> probably not, I don't think you would
18:53:46 * elliott manages to /just/ narrowly avoid being too annoying to not hate himself
18:53:49 <ais523\unfoog> Vorpal: it's flavoured as the air above the vibrating square glowing
18:54:01 <Vorpal> ah
18:54:02 <elliott> ais523\unfoog: wait, what kind of language taste are we talking about here?
18:54:16 <elliott> C++? PHP? VB? SpectateSwamp Desktop Search?
18:54:23 <elliott> (I'm sure you could program /something/ with the last one)
18:54:27 <ais523\unfoog> fanboy-level Python support
18:54:31 <olsner> ais523\unfoog: I sent it an IRC message, not a powerpoint... I think ppt is just fungot's way of saying pfft
18:54:32 <fungot> olsner: can you handle it? generally :) unless it's boring enough to now allow writing to code area...
18:54:37 <elliott> ais523\unfoog: It's worse than I ever could have imagined :'(
18:55:08 <Vorpal> ais523\unfoog, "Swapping your wielded and readied weapons no longer costs a turn. (Readying a weapon directly, something not possible in vanilla NetHack but possible in AceHack, does.) " hm, why would switching weapon not take time?
18:55:10 <elliott> ais523\unfoog: If I had vagrant's source I'd tell you to show em vagrant :P
18:55:16 <olsner> hmm, the fun got is amazingly intelligible today, have you changed the mode or something?
18:55:22 <ais523\unfoog> elliott: to get an idea of kerio, you could check the QDB; it submits by POST so I can't link to it, but http://qdb.rawrnix.com/?search and search for "kerio"
18:55:23 <elliott> ^style
18:55:23 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
18:55:25 <elliott> ^style fungot
18:55:26 <fungot> Selected style: fungot (What I've said myself)
18:55:41 <elliott> ais523\unfoog: I think I already read all the quotes in that qdb :) I only vaguely remember anything to do with kerio, but maybe I'm forgetful
18:55:44 <ais523\unfoog> Vorpal: because you're just switching items from one hand to the other
18:56:01 <elliott> ais523\unfoog: wow, it jumps you to the bottom of the page after you submit, too
18:56:02 <elliott> pro design
18:56:08 <Vorpal> ais523\unfoog, that still takes some time in real life
18:56:14 <ais523\unfoog> I am partial to "angband is checkers on a 6400x6400 board", though
18:56:40 <elliott> ha
18:56:43 -!- quintopia has quit (Ping timeout: 244 seconds).
18:57:34 <elliott> ais523\unfoog: do you have any experience with the wikidumps?
18:57:35 -!- Zuu_ has joined.
18:57:59 <ais523\unfoog> elliott: you mean, dumps of MediaWiki wikis?
18:57:59 * elliott is wondering if they might work with sqlite
18:58:05 <elliott> yes, esolang's to be exact
18:58:08 <elliott> the sql dumps
18:58:09 <ais523\unfoog> not really; I know that they're pretty much just a sequence of SQL commands
18:58:12 <ais523\unfoog> but not more than that
18:58:18 <elliott> (1,'Gravity/w/','','Hi, you\'re scum',89,'Oerjan','20090727114914',1,'',14965,14942)
18:58:18 <elliott> wat
18:58:25 <elliott> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
18:58:30 <elliott> ais523\unfoog: a worryingly non-portable-looking sequence
18:58:48 <ais523\unfoog> yes
18:58:49 <olsner> mysql dumps don't work out of the box with sqlite at least :)
18:59:06 <elliott> yep, syntax errors
18:59:10 <elliott> Error: near line 711: near "DELAYED": syntax error
18:59:10 <elliott> Error: near line 719: near "unsigned": syntax error
18:59:10 <elliott> Error: near line 743: near "DELAYED": syntax error
18:59:39 <elliott> Shell script that converts a mysqldump file into Sqlite3 compatible SQL file. It uses awk for speed and portability. Runs on Windows with the Cygwin tool for Windows.
18:59:40 <elliott> woot
18:59:45 <elliott> https://gist.github.com/943776
18:59:46 <olsner> I think I wrote a sed script to partially convert sql files one time, but noticed that other parts of that system used mysql features and couldn't use sqlite anyway
18:59:54 <elliott> olsner: see above :P
19:00:07 <elliott> mysqldump --compatible=ansi --skip-extended-insert --compact "$@" | \
19:00:12 <elliott> oh c'mon, let me specify my own file :)
19:00:36 <Vorpal> ais523\unfoog, "A new "solo mode" prevents bones files from being loaded, and makes startscumming visible (normally, AceHack allows players to view and reroll their stats and inventory before starting the game). " <-- sure I can see the reason for all of these points, but why is the "don't load bone files" under the same option as "make startscumming visible"?
19:01:08 <elliott> sigh, still a fuckton of syntax errors
19:01:21 <Vorpal> elliott, why are you using mysql!?
19:01:31 <elliott> Vorpal: read context or shut up
19:01:42 <ais523\unfoog> Vorpal: because they're both pretty much a case of showing that streaks are real
19:01:43 <elliott> i'm trying /not/ to use mysql
19:02:06 <ais523\unfoog> Vorpal: he's got a mysql-specific DB dump, and is trying to convert it to something non-mysql, I guess by importing it into mysql and exporting it again
19:02:10 <Vorpal> ah
19:02:16 <elliott> ais523\unfoog: nope, by running an awk script over it
19:02:21 <elliott> i'm trying to avoid installing mysql :)
19:03:07 <Vorpal> ais523\unfoog, well, bone files are pretty much hit and miss, I wouldn't call it unreal just because you got a lucky bone. Same as I wouldn't call it unreal if the PRNG happened to favour you when fighting Rodney
19:03:08 -!- Zwaarddijk has joined.
19:03:30 <ais523\unfoog> Vorpal: bones files can be manipulated
19:03:40 <ais523\unfoog> and in fact, often /are/ in record-aiming play
19:04:00 * elliott runs a vi command over 100 megs of data
19:04:13 <Vorpal> ais523\unfoog, how, unless you have write access to the files in question?
19:04:27 <ais523\unfoog> Vorpal: by playing a game on another account?
19:04:35 <ais523\unfoog> pudding farm for 20 hours, genocide P, suicide
19:04:38 <Vorpal> well sure, but anyone could get that bone
19:04:41 <Vorpal> you might not
19:04:48 <ais523\unfoog> do it with your other character waiting on the level above
19:05:05 <ais523\unfoog> if you don't get it, do it all again on the level below
19:05:10 <ais523\unfoog> then the level below that if it still doesn't work
19:05:12 <ais523\unfoog> etc
19:05:21 <Vorpal> quite a lot of work, but sure
19:05:27 <ais523\unfoog> Vorpal: it's been done
19:05:31 <Vorpal> what are the chances for bones?
19:05:31 <ais523\unfoog> more than once, in fact
19:05:49 <ais523\unfoog> leaving it's depth-dependent; loading is a fixed probability IIRC, although I don't remember whether it's 1/3 or 1/2
19:06:10 <Vorpal> that much, hm
19:06:11 -!- quintopia has joined.
19:06:11 -!- quintopia has quit (Changing host).
19:06:11 -!- quintopia has joined.
19:06:25 <ais523\unfoog> Vorpal: well, normally a bones file doesn't exist for any given level
19:06:39 <Vorpal> hm?
19:06:46 <ais523\unfoog> ais523\unfoog: wiki spam
19:06:54 <elliott> ais523\unfoog: quick, what table are all the /newest/ revisions of articles stored in, in MW?
19:06:58 <ais523\unfoog> Vorpal: because levels are visited much more often than they are died in
19:07:06 <ais523\unfoog> elliott: gah, I can't remember
19:07:11 <ais523\unfoog> it may be "page" or "pages" or something like that
19:07:11 <Vorpal> <ais523\unfoog> ais523\unfoog: wiki spam <-- what
19:07:23 <elliott> ais523\unfoog: i'll grep :P
19:07:25 <Vorpal> ais523\unfoog, ah right
19:07:28 <ais523\unfoog> I ask other people to report it
19:07:34 <ais523\unfoog> so it'd be hypocritical not to do it myself?
19:07:54 <elliott> ais523\unfoog: why the hell does MW prefix fields with a shortened version of the table name?,..
19:07:56 <Vorpal> ais523\unfoog, you could just fix it without reporting
19:07:58 <elliott> s/fields/columns/
19:08:05 -!- Zuu_ has quit (Ping timeout: 244 seconds).
19:08:17 <ais523\unfoog> elliott: presumably so it doesn't need to alias them in joins?
19:08:22 <Vorpal> elliott, I guess it might make joins easier, avoiding some ...
19:08:23 <Vorpal> snap
19:08:23 <elliott> ais523\unfoog: :(
19:08:31 <elliott> nasty
19:08:36 <ais523\unfoog> it does that everywhere, btw, even in the API
19:08:39 <elliott> :(
19:08:40 <elliott> nasty
19:11:23 <elliott> ais523\unfoog: hmm, mw_page seems to contain everything /but/ the text
19:11:37 <ais523\unfoog> what about "revisions"?
19:11:39 <elliott> `page_latest` int(8) unsigned NOT NULL default '0',
19:11:39 <elliott> worryingly, no foreign key here...
19:11:52 <elliott> ais523\unfoog: there's an mw_archive
19:11:58 <elliott> but the name of that seems to suggest it's all /old/ revisions
19:12:00 <ais523\unfoog> that's deleted pages IIRC
19:12:08 <elliott> oh
19:12:11 <elliott> those are included in the dump??
19:12:14 <elliott> cooool
19:12:15 <ais523\unfoog> perhaps not, why would they be in the dump?
19:12:27 <elliott> ais523\unfoog: well, they are
19:12:29 <ais523\unfoog> I'm really not an expert on MediaWiki's internals
19:12:31 <elliott> INSERT DELAYED INTO `mw_archive` (`ar_namespace`, `ar_title`, `ar_text`, `ar_comment`, `ar_user`, `ar_user_text`, `ar_timestamp`, `ar_minor_edit`, `ar_flags`, `ar_rev_id`, `ar_text_id`) VALUES (1,'Turing_tarpit','','wDMfMOGCFBaes',0,'202.99.29.27','20090721214654',0,'',14920,14897),(1,'Fractran_plus_plus/','','Bad Credit Debt Consolidation Personal Loan',0,'218.23.143.125','20090724082501',0,'',14937,14914),(1,'W/','','Hi, I`m new',0,'212.235.107
19:12:31 <elliott> .87','20090724154130',0,'',14940,14917),(2,'508_buy_zyvox','','New page: [http://www.mcgillcorp.industrialguard.com/invboard/index.php?showuser=910 Metformin] He send somebody instead of going hisself? Bad for business all that noise. Well sport have you figure...',422,'508 buy zyvox','20090725145129',0,'',14948,14925),(2,'508_buy_zyvox','','rm spam',139,'Smjg','20090725150733',0,'',14949,14926),(1,'Gravity/w/','','Hi, I`m new',0,'212.235.107.87',
19:12:31 <elliott> '20090727090915',0,'',14964,14941),(1,'Gravity/w/','','Hi, you\'re scum',89,'Oerjan','20090727114914',1,'',14965,14942),(1,'W/','','Hi! New member here :)',0,'91.121.12.73','20090727235547',0,'',14977,14954),(1,'Gravity/w/','','Hi! New member here :)',0,'91.121.12.73','20090801083818',0,'',15004,14981),(1,'W/','','Hi! New member here :)',0,'91.121.12.73','20090815065357',0,'',15154,15131),(1,'Gravity/w/','','Hi! New member here :)',0,'91.121.12.73
19:12:36 <elliott> ','20090816162120',0,'',15178,15155),(1,'Befunge/index.php','','NYC Photo Studio 917 484 6430',0,'212.235.107.27','20090820031732',0,'',15318,15293),(2,'5k63ded6ttcyf67','','New page: easf57ase7fske99898ffhhfh So. \'D\' -- that should be a guide. \" \"The man was a Spaniard. I suggest that \'D\' stands for Dolores a common female name in Spain. \" \"Good Watson very good -- b...',436,'5k63ded6ttcyf67','20090824085757',0,'',15364,15339),(1,'Befu
19:12:39 <Vorpal> spam
19:12:41 <elliott> nge/index.php','','Registration and Hosting Godaddy Promo Codes',0,'212.235.107.215','20090828053353',0,'',15451,15425),(1,'Main_Page/index.php','','Анекдоты',0,'82.193.114.92','20090627120826',0,'',14747,14723),(1,'Main_Page/index.php','','</b
19:12:42 <ais523\unfoog> yep, that looks like deleted pages to me
19:12:44 <Vorpal> elliott, try a pastebin
19:13:09 <elliott> Vorpal: it was a mistake
19:13:12 <Vorpal> okay
19:13:16 <elliott> and it was only five lines :)
19:13:22 <Vorpal> elliott, five huge lines
19:13:27 <elliott> (0,'AAAAAAAAAAAAAA','','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',0,'66.210.7.66','20091008222055',0,'',16169,16139)
19:13:31 <elliott> a page too beautiful for this world
19:13:37 <Vorpal> elliott, I have this thing we call line wrapping.
19:13:40 <elliott> ais523\unfoog: aha, there's mw_revision
19:13:52 <ais523\unfoog> sounds like the right one
19:13:57 <elliott> oh, also mw_text
19:14:07 <elliott> mw_text is... confusing
19:14:10 <ais523\unfoog> ah, that one might be for current revisions only
19:14:12 <elliott> all the columns but one start with "old_"
19:14:19 <elliott> the one that doesn't is "inverse_timestamp"
19:14:34 <elliott> it /does/ contain text though
19:14:40 <ais523\unfoog> elliott: "oldid" is actually the name for a revision's ID number, for historical reasons
19:14:43 <ais523\unfoog> elliott: what, inverse_timestamp?
19:14:55 <elliott> ais523\unfoog: no, mw_text :P
19:15:05 <elliott> ais523\unfoog: and ok, but there's even like
19:15:09 <elliott> `old_comment` tinyblob NOT NULL,
19:15:09 <elliott> `old_user` int(5) unsigned NOT NULL default '0',
19:15:16 <Vorpal> what is an inverse time stamp?
19:15:26 <Vorpal> does the concept of the inverse of the timestamp even make sense
19:16:40 <elliott> INSERT DELAYED INTO `mw_text` (`old_id`, `old_namespace`, `old_title`, `old_text`, `old_comment`, `old_user`, `old_user_text`, `old_timestamp`, `old_minor_edit`, `old_flags`, `inverse_timestamp`) VALUES (1,0,'Main_Page','Wiki software successfully installed.\n\nPlease see [http://meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface]\nand the [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User\'s Guide] for u
19:16:41 <elliott> sage and configuration help.','',0,'MediaWiki default','20050406083246',0,'utf-8','79949593916753'),(15,0,'PATH','\'\'\'PATH\'\'\', invented by Francis Rogers in August 2003, is a two-dimensional language inspired by [[Brainfuck]] and [[Befunge]]. PATH\'s environment, like Brainfuck\'s, consists of an array of memory cells all initialized to zero and character-based standard input and output. PATH understands the following commands:\n\n $ - Start
19:16:41 <elliott> the program here, heading right.\n # - End the program.\n + - Increment the current memory cell.\n - - Decrement the current memory cell.\n } - Move to the next memory cell.\n
19:16:49 <elliott> ais523\unfoog: ah, mw_text looks like the text of /all/ revisions
19:16:53 <elliott> going by that main page thing
19:17:10 <elliott> [[PATH]] is our earliest non-deleted page, looks like
19:17:17 <Vorpal> elliott, but what is an inverse time stamp
19:17:23 <elliott> Vorpal: I DON'T KNOW
19:18:19 <elliott> http://www.mediawiki.org/wiki/Help:Tables
19:18:21 <elliott> that's not what I want, MW
19:18:30 <elliott> I want help on the /other/ kind of table
19:18:40 <elliott> http://www.mediawiki.org/wiki/Manual:Database_layout yay
19:19:11 <Vorpal> http://esolangs.org/wiki/Special:Version <-- seriously?
19:19:11 <elliott> http://www.mediawiki.org/wiki/Manual:Text_table ;; gah, it must have changed since Esolang's version
19:19:19 <Vorpal> 1.9.3?
19:19:30 <elliott> Vorpal: hey, we're on PHP 5, that's impressively modern for Esolang
19:19:43 <Vorpal> what is the current php version?
19:19:46 <Vorpal> I have no idea
19:19:54 <elliott> 5.3.8, looks like
19:20:12 <Vorpal> mysql 4?
19:20:14 <Vorpal> oh come on
19:20:31 <elliott> I've used MySQL 3
19:20:35 <Vorpal> so have I
19:21:24 <elliott> "Version 5.1 contained 20 known crashing and wrong result bugs in addition to the 35 present in version 5.0 (almost all fixed as of release 5.1.51)."
19:21:33 <elliott> "Version 5.0: beta from March 2005, production release October 2005 (cursors, stored procedures, triggers, views, XA transactions)
19:21:33 <elliott> The developer of the Federated Storage Engine states that "The Federated Storage Engine is a proof-of-concept storage engine",[31] but the main distributions of MySQL version 5.0 included it and turned it on by default. Documentation of some of the short-comings appears in "MySQL Federated Tables: The Missing Manual".[32]"
19:21:38 <elliott> Vorpal: can't say i'm unhappy we're on mysql 4!
19:22:11 <Vorpal> heh
19:22:49 <elliott> [elliott@dinky tmp]$ grep 'INSERT DELAYED INTO `mw_text`' latest.sql | wc -l
19:22:49 <elliott> 150
19:22:56 <elliott> oh great, I have to parse multiple records per line
19:22:59 <Vorpal> what is an delayed insert ?
19:23:11 <elliott> [elliott@dinky tmp]$ grep 'INSERT DELAYED INTO `mw_text`' latest.sql | head -n 1 | wc -c
19:23:11 <elliott> 1041590
19:23:15 <Vorpal> oh wait, related to foreign keys I guess?
19:23:16 <elliott> LINES SHOULD NOT BE THAT LONG
19:23:21 <Vorpal> why just not do it in a transaction
19:23:29 <elliott> does mysql even have transactions :)
19:23:37 <Vorpal> elliott, only with innodb iirc?
19:23:45 <elliott> there you go then
19:23:49 <Vorpal> hm
19:24:00 <Vorpal> mysql is a joke
19:24:04 <elliott> sql is a joke
19:24:18 <Vorpal> elliott, not for all tasks
19:24:22 <elliott> for all tasks :)
19:24:27 <Vorpal> not really
19:24:32 <elliott> yup!
19:24:41 <elliott> ok, at least this format looks relatively simple
19:24:43 <Vorpal> the relational model isn't always wrong
19:24:49 <elliott> time to bust out the ghci guns
19:24:54 <elliott> Vorpal: sql violates the relational model's fundamental principles
19:25:00 <elliott> i repeat: for all tasks
19:25:08 <Vorpal> elliott, oh? which principles ?
19:25:42 <elliott> Vorpal: http://en.wikipedia.org/wiki/Codd's_12_rules
19:25:53 <elliott> there's a list of the ones that SQL breaks somewhere
19:25:56 <elliott> tl;dr "almost all of them"
19:26:28 <elliott> ISTR SQL has problems with ACID too, like by default the I part is relaxed or something
19:26:54 <Vorpal> hm
19:27:22 <Vorpal> well rule 3 is implemented at least
19:27:59 <elliott> http://en.wikipedia.org/wiki/Relational_model#SQL_and_the_relational_model
19:28:06 <Vorpal> rule 4 too, at least for postgre
19:28:17 <elliott> "SQL's NULL construct was intended to be part of a three-valued logic system, but fell short of that due to logical errors in the standard and in its implementations."
19:28:22 <elliott> so it doesn't do rule 3
19:28:48 <Vorpal> hm
19:31:50 <Vorpal> hm
19:31:53 <elliott> hm
19:31:54 <Vorpal> oh well
19:33:12 <Phantom_Hoover> Huh, reddit went down.
19:33:34 <ais523\unfoog> it does that a lot
19:33:53 <ais523\unfoog> oh, recently discovered; part of Amazon's load balancing stuff relies on ISPs respecting the DNS standard
19:34:02 <ais523\unfoog> they don't, and as a result it often sends loads of data to the wrong person
19:36:05 <elliott> [elliott@dinky mw-text]$ ./extract latest.sql
19:36:05 <elliott> Killed
19:36:05 <elliott> wow, what?
19:36:29 <ais523\unfoog> check the syslog in case it's the OOM killer
19:36:40 <ais523\unfoog> it's got to be that or a self-kill, surely
19:38:00 <elliott> syslog is just syslog-ng bragging about it starting up and shutting down
19:38:08 <elliott> [ 8960.559879] Out of memory: Kill process 3630 (extract) score 692 or sacrifice child
19:38:08 <elliott> [ 8960.559885] Killed process 3630 (extract) total-vm:2712256kB, anon-rss:2691632kB, file-rss:0kB
19:38:09 <elliott> -- dmesg
19:38:10 -!- Zuu_ has joined.
19:38:16 <Vorpal> elliott, impressive
19:38:27 <elliott> not really, it just used too much memory :P
19:38:30 <elliott> I have no swap
19:38:34 <Vorpal> ah
19:38:39 <Vorpal> elliott, you need more ram then
19:38:48 <Vorpal> elliott, or not read the whole file at once
19:38:49 <elliott> no, I need a program that isn't broken
19:38:56 <elliott> the file is 100 megs
19:38:58 <elliott> the file is not the problem
19:38:59 <Vorpal> heh
19:39:14 <ais523\unfoog> elliott: "(extract)"?
19:39:20 <elliott> ais523\unfoog: that's the name of the process
19:39:22 <ais523\unfoog> also, I bet the "sacrifice child" is deliberate
19:39:24 <ais523\unfoog> ah, I see
19:39:50 <ais523\unfoog> I got an actual out of memory error a while back, I think because I turned the OOM killer off
19:39:59 <Ngevd> Hello!
19:40:03 <Ngevd> Am I here?
19:40:05 <monqy> no
19:40:06 <Vorpal> ais523\unfoog, what happened then? oops?
19:40:09 <ais523\unfoog> but it hit the right process (I was trying to do a brute-force A* search on a variant of the travelling salesman problem)
19:40:18 <ais523\unfoog> Vorpal: no, malloc failed
19:40:21 <Vorpal> ah
19:40:28 <ais523\unfoog> and the process in question reacted by exiting
19:40:31 <ais523\unfoog> so all was well
19:40:41 <Ngevd> monqy, oh, cool
19:40:50 <ais523\unfoog> come to think of it, though, the malloc failure's going to hit a process at random based on how often they request memory
19:41:01 <ais523\unfoog> really, we need a non-overcommit OOM mallocfailer
19:41:12 <Vorpal> good idea
19:41:18 <ais523\unfoog> which is like an OOM killer, except it decides just before memory gets actually maxed which process/processes are going to get malloc failures first
19:41:37 <Vorpal> very good idea that
19:41:50 <ais523\unfoog> presumably each process has a memory full percentage
19:42:06 <ais523\unfoog> which might be 95% for a really greedy killable process, 98% for something more normal, and 100% for init
19:42:29 <elliott> maybe I'm just confused as to what breakSubstring does...
19:42:52 <ais523\unfoog> Vorpal: it's actually doable in glibc, I think
19:42:53 <Vorpal> ais523\unfoog, oh btw, oom killer is going to introduce some non-determinism in secret project. Example: fork() a few times, and start mallocing in all child processes, then from the parent process report which child is killed first
19:43:00 <ais523\unfoog> /proc can say what the OOM score of a process is
19:43:04 <Vorpal> it might even be that the parent is killed first
19:43:11 <elliott> ais523\unfoog: we just need a system that has ~a hundred times the heap, and performs gracefully under conditions usually referred to as "swapping"
19:43:21 <ais523\unfoog> Vorpal: right, indeed; one of the assumptions I make on processes is that they don't cap the memory, just like another is no infinite busyloops
19:43:22 <elliott> ais523\unfoog: you could call it... orthogonal persistence!
19:43:29 <Vorpal> ais523\unfoog, ah
19:43:34 -!- GreaseMonkey has joined.
19:43:38 <Phantom_Hoover> elliott, the answer to all things.
19:43:40 <ais523\unfoog> (the Secret Project rewrites processes to use cooperative multitasking, effectively, to make them deterministic)
19:43:42 <elliott> ais523\unfoog: btw, I wrote a proof-of-concept of my busyloop exploiter
19:43:48 <elliott> ais523\unfoog: and thought of a way to partially fix the problem in doing so
19:44:11 <ais523\unfoog> elliott: nanosleep(1) in the loop?
19:44:19 <ais523\unfoog> so you're seeding on the scheduler?
19:44:19 <elliott> no, I mean fix the problem in the Secret Project
19:44:23 <ais523\unfoog> ah, what?
19:44:28 <elliott> ais523\unfoog: Implement alarm/ualarm in term of context switches
19:44:31 <elliott> rather than real time or whatever
19:44:40 <ais523\unfoog> but that would change the timings
19:44:45 <elliott> ais523\unfoog: huh?
19:44:56 <elliott> the program can't observe how much time passes
19:44:58 <ais523\unfoog> if you set alarm(1) to 100 context switches not 1 second, say
19:45:08 <elliott> like i said, the program can't observe how much time passes
19:45:09 <ais523\unfoog> elliott: sure it can, it can use gettimeofday or whatever
19:45:11 <elliott> so what does it matter?
19:45:17 <elliott> ais523\unfoog: that gives nondeterminism...
19:45:22 <elliott> surely you're overriding the clock
19:45:23 <ais523\unfoog> elliott: it doesn't return the actual time
19:45:34 <ais523\unfoog> but secret project's calculation of what the time should be
19:45:35 <elliott> ais523\unfoog: why not just set the time at 0 always?
19:45:45 <ais523\unfoog> elliott: loads of programs break if you do that
19:45:50 <elliott> ais523\unfoog: like what?
19:45:52 <Vorpal> elliott, that would break something like cfunge running mycology
19:46:03 <ais523\unfoog> here, have a clue: setting the time at 0 always is fundamentally incompatible with the Secret Project's purpose
19:46:12 <Vorpal> elliott, since it checks what granularity HRTI provides
19:46:17 <ais523\unfoog> that's a clue as to what it's for that hasn't been given before, I think
19:46:25 <elliott> hmm, okay
19:46:33 <ais523\unfoog> as a bonus clue, the [CENSORED]s in the scheduling description were all related to simulated real time
19:46:34 <elliott> ais523\unfoog: btw, will there be a way to override the scheduler stuff?
19:46:44 <ais523\unfoog> and do what instead?
19:46:46 <elliott> I'd like to avoid it, as I don't need that level of nondeterminism, and I'd like to be able to use -j3
19:46:49 <elliott> ais523\unfoog: just use the normal scheduler
19:47:20 <ais523\unfoog> that again is defeating the point of reproducibility; actually, you'd have to comment out large swathes of the Secret Project to do that
19:47:29 <ais523\unfoog> because most of the complicated stuff is the scheduler
19:47:40 <elliott> ais523\unfoog: oh, stop it, you /don't/ get perfect reproducibility
19:47:51 <elliott> so you can't act like wanting "as much reproducibility as possible without sacrificing X" is an insane desire
19:48:05 <ais523\unfoog> elliott: I want perfect reproducibility on a subset of programs
19:48:20 <ais523\unfoog> as large as is reasonable, but it's more important for a single program to be reproducible, than it is for all programs to be mostly reproducible
19:48:21 <elliott> int main(){exec(argv)} # secret project
19:48:21 <Vorpal> ais523\unfoog, oh I know of the use now.
19:48:25 <ais523\unfoog> Vorpal: really?
19:48:38 <Vorpal> ais523\unfoog, well, a possible one that would fit rather well at least
19:48:41 <ais523\unfoog> go for it
19:48:42 <elliott> Vorpal: go on
19:48:48 <Vorpal> ais523\unfoog, it involves TAS.
19:48:56 <elliott> I already proposed that, methinks
19:48:59 <Vorpal> oh okay
19:48:59 <elliott> also, this is meant to be for work, isn't it?
19:49:03 <Vorpal> hm okay
19:49:04 <ais523\unfoog> elliott: no, haha
19:49:05 <elliott> I doubt ais523\unfoog is paid to do TASes
19:49:08 <ais523\unfoog> I have something for work which is vaguely similar
19:49:13 <ais523\unfoog> but that's entirely a coincidence
19:49:17 <elliott> ais523\unfoog: oh, okay. /is/ it TASes, then?
19:49:20 <Vorpal> ais523\unfoog, well, is it related to doing TAS?
19:49:24 <ais523\unfoog> elliott: it is related to those, yes
19:49:26 <ais523\unfoog> but keep it secret
19:49:31 <Vorpal> haha
19:49:33 <elliott> ais523\unfoog: Is it related to the NetHack TAS?
19:49:38 <Vorpal> aha
19:49:42 * elliott will keep a sekrit.
19:49:46 <ais523\unfoog> I have been trying to test it on NetHack, indeed
19:49:49 <elliott> yay!
19:49:50 <Vorpal> like the whole channel knows it now
19:49:58 <elliott> secret enough :)
19:50:01 <Vorpal> whatever
19:50:12 <elliott> it took like a year for everyone to get the knowledge of my age
19:50:18 <ais523\unfoog> and then we all forgot again
19:50:19 <elliott> even after it was repeatedly publicly stated
19:50:20 <Vorpal> ais523\unfoog, well, no need to hide anything now. Unless there is more to it
19:50:23 <elliott> ais523\unfoog: you did?
19:50:34 <ais523\unfoog> elliott: I'm really bad at remembering ages, they change too much
19:50:43 <ais523\unfoog> approximately half the time, I'm not even sure what my own is
19:50:48 <Vorpal> elliott, I believe you would be 14 or 15 now?
19:50:50 <ais523\unfoog> although I know my birthdate and the formula
19:50:50 <elliott> ais523\unfoog: don't worry, mine won't change for approx. another year
19:50:52 <elliott> Vorpal: 16
19:51:09 * elliott legal :/
19:51:09 <Vorpal> elliott, oh really, well, retroactive happy bday then
19:51:13 <elliott> soon, they'll be letting me drive cars :(
19:51:22 <elliott> or, well, letting me attempt to prove I can drive a car
19:51:22 <Vorpal> elliott, isn't that at 18?
19:51:28 <elliott> 17 I think
19:51:28 <Vorpal> it is here
19:51:31 <Vorpal> hm okay
19:51:32 <ais523\unfoog> you become legal to do different things at different ages
19:51:35 <ais523\unfoog> it's 17 for driving in the UK
19:51:50 <Vorpal> surprising EU hasn't standardised that
19:52:07 <Vorpal> it is definitely 18 in Sweden
19:52:10 <elliott> Vorpal: the EU has standardised tons of things, doesn't mean the UK listens :)
19:52:15 <elliott> FOR EXAMPLE
19:52:16 <elliott> KRONOR
19:52:16 <Vorpal> fair enough
19:52:17 <elliott> COUGH COUGH
19:52:29 <Vorpal> elliott, yeah £ too
19:52:39 <Vorpal> anyway, our way of opting out is more amusing
19:53:01 <elliott> Vorpal: Don't you guys just claim your economy is smaller on the inside?
19:53:05 <elliott> Like a reverse TARDIS.
19:53:18 <Vorpal> elliott, I think something like that yes. I don't have any reliable source on it though
19:53:21 <elliott> Is the inside of Globen the size of a cupboard?
19:53:26 <elliott> Is that your Fort Knox.
19:53:30 <Vorpal> heh
19:54:06 <elliott> ais523\unfoog: anyway, re: having to comment out huge parts of the secret project, I'll probably just turn everything into an option when I get my grubby paws on it
19:54:32 <ais523\unfoog> I'm just annoyed at having to implement BSD sockets
19:54:44 <elliott> ais523\unfoog: anyway, if you're already doing alarm/ualarm with simulated time, my program /might/ not work
19:54:46 <ais523\unfoog> and I don't even know how socketcall(2) works, as it's not properly documented
19:54:53 <elliott> ais523\unfoog: I can send a copy if you want to try it out, it's trivial to tset
19:54:54 <elliott> test
19:54:57 <ais523\unfoog> may as well
19:55:22 <elliott> ais523\unfoog: wget http://sprunge.us/FfMA -O nondet.c; gcc nondet.c
19:55:38 <ais523\unfoog> err, I'm going to read the file first ;)
19:55:53 <elliott> ais523\unfoog: I doubt I could crash your system with a gcc call
19:55:58 <elliott> you could run gcc in the secret project to be sure :)
19:56:06 <elliott> ais523\unfoog: anyway, testing:
19:56:12 <elliott> $ ./a.out | head -c 100 >a
19:56:13 <ais523\unfoog> elliott: the secret project is not designed for security, and in particular, doesn't sandbox several syscalls yet
19:56:13 <Vorpal> ais523\unfoog, anyway, no need for secretness around the secret project any more now that we know what it is for. So what is the actual name of it (if it has any?)
19:56:14 <elliott> $ ./a.out | head -c 100 >b
19:56:16 <elliott> $ diff a b
19:56:18 <ais523\unfoog> Vorpal: Web of Lies
19:56:37 <elliott> I think I'm going to keep calling it the Secret Project
19:56:45 <ais523\unfoog> but Web of Lies is a great name
19:56:50 <Vorpal> ais523\unfoog, okay, that would definitely not have told us anything really beyond what we know, I assume it is a reference to that it lies to the program?
19:56:59 <ais523\unfoog> yes
19:57:05 <ais523\unfoog> and then invents more lies to cover its old ones
19:57:15 <Vorpal> ais523\unfoog, what would the executable name be? wol?
19:57:20 <elliott> ais523\unfoog: yeah, but I can sound credible if I call it the TSP Isolation System
19:57:22 <ais523\unfoog> elliott: I'm not even convinced I've implemented ualarm yet
19:57:23 <ais523\unfoog> Vorpal: weboflies
19:57:31 <ais523\unfoog> I'm not in the 8.3 era any more
19:57:34 <Vorpal> heh
19:57:34 <elliott> ais523\unfoog: you can use alarm(1) instead, and put alarm(1) at the end of handle
19:57:39 <ais523\unfoog> and it's not like it's the sort of thing you run constantly
19:57:43 <elliott> ais523\unfoog: use head -c 10 if you do, it'll be much slower
19:58:04 <elliott> Vorpal: congrats on getting it, btw
19:58:12 <Vorpal> elliott, it was obvious
19:58:24 <elliott> Vorpal: that's not what you said all the previous times
19:58:31 <elliott> <elliott> ais523\unfoog: you can use alarm(1) instead, and put alarm(1) at the end of handle
19:58:34 <Vorpal> elliott, because it wasn't obvious in those cases
19:58:34 <elliott> I wonder if this is actually allowed :)
19:58:36 <elliott> it'll probably work though
19:58:50 <Vorpal> elliott, man 7 signal says it is allowed
19:58:53 <elliott> yay
19:58:54 <ais523\unfoog> ah, seems ualarm gets translated to setitimer(2)
19:59:05 -!- Ngevd has quit (Ping timeout: 240 seconds).
19:59:12 <ais523\unfoog> which I haven't implemented
19:59:25 * ais523\unfoog replaces with alarm
19:59:39 <ais523\unfoog> oh, there's clearly no point
19:59:49 <ais523\unfoog> "for (;;) i++;" always wedges the Secret Project, the way it works
19:59:50 <Vorpal> implemented the same way?
20:00:05 <ais523\unfoog> Vorpal: I'd probably implement it the same way I implemented alarm, indeed
20:00:15 <Vorpal> ais523\unfoog, oh you implement alarm
20:00:16 <Vorpal> okay
20:00:29 <ais523\unfoog> Vorpal: well, what else can I do? I can't pass through the syscall
20:00:54 <ais523\unfoog> for obvious reasons
20:01:01 <ais523\unfoog> and returning ENOSYS would break too many programs
20:01:08 <elliott> <ais523\unfoog> "for (;;) i++;" always wedges the Secret Project, the way it works
20:01:11 <Vorpal> ais523\unfoog, so what do you implement alarm() as?
20:01:12 <elliott> ais523\unfoog: do you support pthreads?
20:01:15 <ais523\unfoog> (getting random ENOSYSes is an occupational hazard of running under the Secret Project)
20:01:25 <ais523\unfoog> elliott: sort-of; it seems to work but I don't know why
20:01:29 <elliott> heh
20:01:37 <Vorpal> ais523\unfoog, and I thought alarm would be implemented with setitimer as well
20:01:48 <elliott> ais523\unfoog: but yeah, afaict certain parts of the secret project are useful to me and the rest aren't
20:01:49 <ais523\unfoog> I /have/ special-cased futex(2), which is involved
20:01:55 <elliott> so I'll probably just hack up my own thing based on it :P
20:02:59 <elliott> wow, it's hard to get this ualarm-free version working
20:03:04 <elliott> the increment loops keep syncing up
20:03:10 * elliott tries a division loop
20:03:10 <Vorpal> ais523\unfoog, any plans for TAS other than of nethack?
20:03:15 <ais523\unfoog> Vorpal: perhaps
20:03:15 <Vorpal> or acehack of course
20:03:25 <ais523\unfoog> in fact, I can TAS NetHack even without this, so it would be fun to use it on other games
20:03:51 <elliott> ais523\unfoog: Will SDL work in it? :P
20:03:58 <ais523\unfoog> elliott: SDL already does work in it
20:04:01 <elliott> ais523\unfoog: wow
20:04:05 <Vorpal> ais523\unfoog, against what? X?
20:04:06 <elliott> ais523\unfoog: how fast do SDL games go?
20:04:08 <ais523\unfoog> however, without sound
20:04:17 <elliott> ais523\unfoog: what about opengl?
20:04:26 <Vorpal> now that would be hard
20:04:30 <ais523\unfoog> and many programs (e.g. Battle for Wesnoth) don't handle SDL framebuffer properly
20:04:39 <Vorpal> ais523\unfoog, report bugs?
20:04:47 <ais523\unfoog> elliott: remember when I was in here asking questions about Mesa's software emulation?
20:04:48 <elliott> Vorpal: you are so naive
20:04:53 <elliott> ais523\unfoog: ah
20:04:58 <Vorpal> ais523\unfoog, so... it works?
20:04:58 <elliott> ais523\unfoog: I'm, umm, not sure Minecraft will run at acceptable speeds
20:05:07 <ais523\unfoog> it's not meant for interactive use
20:05:19 <ais523\unfoog> as in, playing games full-speed
20:05:23 <elliott> I'm trying to think of what a Minecraft TAS would look like now
20:05:24 <ais523\unfoog> there is noticeable slowdown, mostly
20:05:30 <ais523\unfoog> also, sometimes noticeable speedup
20:05:34 <elliott> speedup? :D
20:05:39 <ais523\unfoog> when a program's just waiting
20:05:44 <ais523\unfoog> it can fast-forward
20:05:45 <Vorpal> ais523\unfoog, how much of a FPS drop do you get from weboflies typically with opengl stuff?
20:05:56 -!- nooga has joined.
20:06:02 <ais523\unfoog> Vorpal: I don't have OpenGL working yet
20:06:06 <ais523\unfoog> but I imagine it'd be quite a large one
20:06:06 <Vorpal> oh okay
20:06:16 <ais523\unfoog> the joyous thing is, that weboflies only has a performance penalty on syscalls
20:06:30 <ais523\unfoog> so heavy computation – like, say, emulating a GPU in software – isn't slowed down at all
20:06:35 <Vorpal> heh
20:07:01 <ais523\unfoog> and is counted as zero emulated time
20:07:02 <nooga> anyone experienced in Cocoa?
20:07:09 <elliott> I wish SQLite used something other than SQL
20:07:12 <ais523\unfoog> nooga: I assume at least one person is, but possibly nobody here
20:07:27 <nooga> too bad
20:07:37 <nooga> I have a design problem
20:08:13 <Vorpal> ais523\unfoog, so, when are we going to be able to get our hands on it? When it is complete? Or before that?
20:08:57 <ais523\unfoog> I suppose there's no real reason not to PM you/elliott the source now; although note that a) it needs to run as root, and b) it /will/ do insane things, so run it at your own risk
20:09:03 <elliott> yay
20:09:07 <ais523\unfoog> I'm pretty sure it's triggered multiple kernel bugs so far
20:09:13 <elliott> ais523\unfoog: what license is it going to be under when it's "done", btw?
20:09:24 <ais523\unfoog> let me see if there's a license on there atm
20:09:28 <Vorpal> ais523\unfoog, btw thanks for using that nick. Otherwise I wouldn't have thought of nethack at the point crucial to making the discovery
20:09:46 <ais523\unfoog> currently unlicensed, it seems
20:09:49 <ais523\unfoog> most likely GPLv3
20:09:50 -!- augur has quit (Remote host closed the connection).
20:10:01 <elliott> :( okay
20:10:14 <Vorpal> fair enough, I don't have any actual use of it right away, unlike elliott
20:10:15 <ais523\unfoog> do you have a good argument for using something else?
20:10:30 <Vorpal> nah, GPLv3 is fine with me.
20:10:35 <elliott> i doubt he was asking you :P
20:10:40 <ais523\unfoog> I was asking elliott, I knew /you/ wouldn't mind GPLv3
20:10:42 <elliott> ais523\unfoog: no, I just don't like modifying GPLv3 software :)
20:10:44 <Vorpal> right
20:10:51 <elliott> ais523\unfoog: (or GPLv2 software)
20:10:54 <elliott> or GPLv1 software, for that matter
20:10:56 <elliott> but I'll cope :p
20:11:00 <ais523\unfoog> elliott: some odious legal requirement that makes it hard to do correctly?
20:11:01 <Vorpal> I only do BSD or MIT when a significant part of the program I'm writing already consists of such code
20:11:11 <elliott> ais523\unfoog: yes, it's called not liking the GPL
20:11:16 <ais523\unfoog> modifying GPLv0 is a real pain, as it requires you to keep last-modified dates in the files itself
20:11:21 <ais523\unfoog> which really messes up the repos
20:11:22 <elliott> haha
20:11:28 <ais523\unfoog> that bug has been fixed since, I believe
20:11:29 <Vorpal> ais523\unfoog, heh
20:11:44 <ais523\unfoog> I don't think anyone actually /enforces/ that requirement, but you know me…
20:12:49 <elliott> ais523\unfoog: if you don't have anywhere to put the tarball I can get you an nc port
20:12:57 <Vorpal> heh
20:13:11 <ais523\unfoog> elliott: PMed
20:13:16 <ais523\unfoog> I pastebinned it, as it's a single C file
20:13:18 <elliott> ais523\unfoog: oh no, it's all in one file?
20:13:21 <ais523\unfoog> yes
20:13:30 <elliott> ais523\unfoog: are you sure that maintained the ^Ls?
20:13:42 <ais523\unfoog> it probably didn't, but they're not all that important
20:13:59 <Vorpal> ^L?
20:14:03 <ais523\unfoog> what's so bad about having it as a single C file?
20:14:08 <elliott> ais523\unfoog: tell that to the person wading through an almost whitespaceless block of source :)
20:14:12 <elliott> (the person is me)
20:14:21 <Vorpal> elliott, please explain modules to ais523\unfoog
20:14:29 <Vorpal> I don't think I can face it
20:14:35 <elliott> I doubt something like this can be made truly modular
20:14:36 <ais523\unfoog> ewarn(mkdir("/tmp/home/ais523", 0755));
20:14:58 <elliott> ais523\unfoog: Could I convince you to sprunge a uuencoded version? :p
20:15:20 <ais523\unfoog> Vorpal: around half the program is just one long switch statement
20:15:26 <ais523\unfoog> you can't split a switch statement across files
20:15:35 * elliott . o O ( yes you can )
20:15:37 <Vorpal> ais523\unfoog, #include is done at a text level
20:15:40 <Vorpal> ais523\unfoog, so yes
20:15:45 <ais523\unfoog> that's not being modular
20:15:47 <ais523\unfoog> that's just #include
20:15:57 <elliott> each syscall in its own implementation file is certainly modular
20:16:00 <Vorpal> ais523\unfoog, well okay you can do like switch 5123: foo(); break;
20:16:01 <Vorpal> or such
20:16:05 <elliott> modules are allowed to have outside dependencies
20:16:23 <ais523\unfoog> elliott: I'm feeling evil, so I just PMed you a cat -v version
20:16:31 <Vorpal> lol
20:16:41 <elliott> ais523\unfoog: cat -v isn't even reversible, dude
20:16:48 <ais523\unfoog> I know
20:16:59 <elliott> [look of disapproval]
20:17:05 <elliott> ais523\unfoog: oh, yikes, I forgot this thing is x86-specific :(
20:17:06 <ais523\unfoog> however, the two versions should be enough /between/ them to recover the original
20:17:21 <ais523\unfoog> and yes; luckily, adding x86_64 support wouldn't be all that insanely hard
20:17:23 <Vorpal> elliott, 32-bit?
20:17:26 <Vorpal> ah
20:17:31 <ais523\unfoog> Vorpal: it contains hardcoded register names
20:17:33 <elliott> ais523\unfoog: I care about other architectures than just that :) but x86-64 is a must for me
20:17:41 <elliott> (well, fsvo care)
20:17:51 <elliott> ais523\unfoog: would incrementing the kernel version break anything?
20:17:57 <elliott> (in all likelihood)
20:18:08 <ais523\unfoog> elliott: you mean, what real kernel is being used? or what kernel it claims to be?
20:18:11 <ais523\unfoog> I don't think either would break anything
20:18:13 <elliott> latter
20:18:29 <elliott> I'd like to pin it to the real kernel version, for compiling things like modules that might care
20:18:40 <ais523\unfoog> [look of disapproval]
20:18:48 <Vorpal> yes I can see parts of this would be extremely useful to elliott, but merging improvements from either side is going to be a pain due to the one-file system
20:18:51 <ais523\unfoog> note that it will /run/ on x86_64, just it runs 32-bit apps
20:19:02 <elliott> ais523\unfoog: why disapproval at that?
20:19:07 <elliott> i was talking about kernel modules
20:19:16 <elliott> sounds like you're insecure about your bad code organisation :)
20:19:23 <ais523\unfoog> elliott: of changing the version
20:19:23 <elliott> ais523\unfoog: bug report:
20:19:23 <elliott> if (ar0.esi)
20:19:23 <elliott> {
20:19:30 <ais523\unfoog> indentation bug?
20:19:35 <ais523\unfoog> I don't really care
20:19:42 <Vorpal> elliott, modules shouldn't care, they should take their kernel module version from the kernel source tree they are building against
20:19:49 <elliott> Vorpal: fair enough
20:19:58 <elliott> maybe I'll just split this into multiple files myself
20:20:05 <Vorpal> elliott, have fun merging updates then
20:20:32 <Vorpal> elliott, you obviously just need to throw in a few #ifdef
20:20:43 <elliott> if (!read_write_state &&
20:20:44 <elliott> (S_ISREG(fdstats.st_mode) ||
20:20:44 <elliott> S_ISDIR(fdstats.st_mode) ||
20:20:44 <elliott> S_ISBLK(fdstats.st_mode) ||
20:20:44 <elliott> (((fdstats.st_rdev ==
20:20:44 <elliott> makedev(136, shared_memory->pty_number)) ||
20:20:46 <elliott> (fdstats.st_rdev == makedev(5, 0))) &&
20:20:48 <elliott> ((ar0.orig_eax == SYS_write ||
20:20:50 <elliott> ar0.orig_eax == SYS_writev ||
20:20:51 <Vorpal> spam
20:20:52 <elliott> ar0.orig_eax == SYS_pwritev))))) {
20:20:54 <elliott> ais523\unfoog: [look of disapproval]
20:21:00 <elliott> Vorpal: everyone needs to see what ais has done :)
20:21:11 <Vorpal> elliott, well, be happy it wasn't all on one line
20:21:16 <Vorpal> it could have been worse
20:21:27 <Vorpal> elliott, anyway you should have done it in PM
20:21:31 <ais523\unfoog> elliott: what would you /want/ me to do? split the condition?
20:21:47 <ais523\unfoog> hmm, I think a comment is needed to explain the 136, at least
20:21:48 <elliott> ais523\unfoog: that thing has /multiple side-effects/!
20:21:58 <ais523\unfoog> no it doesn't
20:22:04 <elliott> makedev is pure?
20:22:06 <ais523\unfoog> yes
20:22:10 <ais523\unfoog> it's a bitfield packer
20:22:16 <Vorpal> wow
20:22:17 <elliott> huh
20:22:23 <Vorpal> ais523\unfoog, what does the 136 mean?
20:22:23 <elliott> fuck life :P
20:22:56 <elliott> ais523\unfoog: whatever RSTATBW is, you should have a version specialised to an empty fisrt argument
20:23:00 <elliott> first
20:23:06 <ais523\unfoog> /* 5,0 = /dev/tty; 136,n = /dev/pts/n. */
20:23:09 <elliott> #define RSTATBW(x,y) (is32bit ? (x rstat y) : (x rstat64 y))
20:23:09 <elliott> ouch
20:23:10 <Vorpal> ah
20:23:11 <ais523\unfoog> at least there's a comment explaining it /somewhere/
20:23:28 <Vorpal> elliott, is that about large file support?
20:23:29 <elliott> bug report: /* We need to turn off ASLR even if a proces explicitly
20:23:30 <ais523\unfoog> elliott: OK, that's quite an abuse of the preproc, I admit
20:23:31 <elliott> :p
20:23:31 <ais523\unfoog> Vorpal: yes
20:23:33 <elliott> ("proces")
20:23:48 <Vorpal> ais523\unfoog, you can turn off ASLR?
20:23:55 <Vorpal> without changing kernel config I mean
20:24:01 <elliott> yes
20:24:02 <ais523\unfoog> Vorpal: yes
20:24:04 <Vorpal> how?
20:24:09 <ais523\unfoog> personality(2)
20:24:13 <Vorpal> aha
20:24:21 <Vorpal> is that the thing used for linux32 and so on?
20:24:23 <Vorpal> hm seems sop
20:24:24 <Vorpal> so*
20:24:26 <ais523\unfoog> it only works for the one exec, unless you debug-hook the process you create with the exec and inject calls to personality in it
20:24:29 <ais523\unfoog> which I, umm, may have done
20:24:33 <Vorpal> :D
20:24:40 <elliott> ais523\unfoog: Do you accept file-splitting patches? :p
20:24:54 <Vorpal> ais523\unfoog, so how does that linux32 command work then, it seems to work recursively
20:25:03 <ais523\unfoog> Vorpal: I don't know of linux32
20:25:09 <elliott> ais523\unfoog: also, what compile command?
20:25:13 <Vorpal> it is a symlink to setarch
20:25:19 <Vorpal> which is: setarch - change reported architecture in new program environment and set personality flags
20:25:20 <Vorpal> hm
20:25:25 <ais523\unfoog> gcc -o weboflies -O2 -g --std=gnu99 -Wall -Wextra -Wno-missing-field-initializers -Wno-missing-braces weboflies.c ktt.c -lrt -lpng
20:25:28 <ais523\unfoog> oh, seems I'm missing ktt.c
20:25:28 <Vorpal> looks like reported arch is NOT a personality thingy
20:25:45 <ais523\unfoog> it's just a hardcoded table of keyboard scancodes
20:25:50 <ais523\unfoog> which was determined by experiment
20:25:54 <ais523\unfoog> because SDL asks for them
20:25:59 <ais523\unfoog> so I need to know
20:26:01 <Vorpal> ais523\unfoog, wait, you mean this won't work on anything but the US keyboard layout?
20:26:07 <Vorpal> or UK rather
20:26:28 <ais523\unfoog> Vorpal: I don't know, I don't understand the numbers
20:26:35 <ais523\unfoog> but the keyboard isn't connected to the program under test anyway
20:26:40 <ais523\unfoog> weboflies has a command line
20:26:40 <Vorpal> ais523\unfoog, well, link ktt.c please :)
20:27:04 <ais523\unfoog> http://sprunge.us/XJKU
20:27:28 <Vorpal> ais523\unfoog, you know, this would be really useful for automated test benches for that nethack bot too
20:28:03 <ais523\unfoog> nethack-tas-tools would be good enough for that, I think
20:28:22 <ais523\unfoog> this isn't /really/ about NetHack, as I can TAS that anyway
20:28:33 <elliott> ais523\unfoog: doesn't build on x86-64
20:28:38 <ais523\unfoog> elliott: missing headers?
20:28:39 <Vorpal> right
20:28:44 <Vorpal> elliott, -m32
20:28:46 <Vorpal> it works
20:28:53 <elliott> ais523\unfoog: no:
20:28:55 <Vorpal> elliott, at least on ubuntu
20:28:56 <elliott> weboflies.c:1910:70: error: ‘struct user_regs_struct’ has no member named ‘ebx’
20:28:56 <elliott> weboflies.c:1913:70: error: ‘struct user_regs_struct’ has no member named ‘ebx’
20:28:56 <elliott> weboflies.c:1928:21: error: ‘struct user_regs_struct’ has no member named ‘ecx’
20:28:56 <elliott> weboflies.c:1931:22: error: ‘struct user_regs_struct’ has no member named ‘esi’
20:28:56 <elliott> weboflies.c:1932:44: error: ‘struct user_regs_struct’ has no member named ‘esi’
20:28:56 <elliott> weboflies.c:1934:22: error: ‘struct user_regs_struct’ has no member named ‘orig_eax’
20:28:58 <elliott> weboflies.c:1940:22: error: ‘struct user_regs_struct’ has no member named ‘esi’
20:29:00 <elliott> weboflies.c:1944:70: error: ‘struct user_regs_struct’ has no member named ‘esi’
20:29:02 <elliott> weboflies.c:1950:20: error: ‘struct user_regs_struct’ has no member named ‘esi’
20:29:04 <elliott> weboflies.c:1978:16: error: ‘struct user_regs_struct’ has no member named ‘orig_eax’
20:29:06 <ais523\unfoog> elliott: yep, missing headers, or rather the wrong header
20:29:06 <elliott> weboflies.c:2002:20: error: ‘struct user_regs_struct’ has no member named ‘orig_eax’
20:29:07 <Vorpal> elliott, works with -m32 on my ubuntu laptop
20:29:08 <elliott> [...]
20:29:10 <elliott> oops
20:29:12 <elliott> more than i intended
20:29:14 <elliott> but anyway, no missing header errors
20:29:15 <ais523\unfoog> it's clearly looking at the 64-bit version of user.h
20:29:16 <elliott> right
20:29:18 <elliott> you said it would work on 64-bit though :)
20:29:29 <ais523\unfoog> it would if it had the correct headers
20:29:37 <elliott> ais523\unfoog: is this png stuff really necessary?
20:29:52 <Vorpal> what is the png stuff for?
20:30:06 <ais523\unfoog> that's the graphics card emulation
20:30:14 <ais523\unfoog> or rather, it emulates a framebuffer
20:30:19 <ais523\unfoog> and produces screenshots of it on request
20:30:38 <Vorpal> if (mount("tmpfs", "/tmp", "tmpfs", 0, 0)) {
20:30:39 <Vorpal> what
20:30:44 <Vorpal> is that before or after chroot?
20:30:54 <ais523\unfoog> before, obviously
20:30:57 <ais523\unfoog> you missed the clone call
20:31:02 <Vorpal> hm
20:31:03 <elliott> ais523\unfoog: do you accept patches that turn it into something useful for more than just TASing a game on ais523's computer? :p
20:31:11 <ais523\unfoog> CLONE_NEWNS|CLONE_NEWPID|CLONE_NEWUTS
20:31:13 <Vorpal> ais523\unfoog, so you replace the system /tmp, possibly breaking lots of stuff?
20:31:19 <ais523\unfoog> Vorpal: no
20:31:24 <Vorpal> ais523\unfoog, then how?
20:31:24 <ais523\unfoog> see that CLONE_NEWNS?
20:31:26 <ais523\unfoog> look up what it does
20:31:45 <ais523\unfoog> (hint: it affects the meaning of the mount syscall)
20:31:48 <Vorpal> wow, this reminds me of plan9
20:31:56 <elliott> it's like plan 9 but stupid
20:32:19 <Vorpal> heh
20:32:25 <ais523\unfoog> but basically, it changes /tmp for one process
20:32:40 <ais523\unfoog> this is how weboflies has genuinely caused filesystem leaks in the past
20:33:00 <ais523\unfoog> unfortunately, it turns out that the emulated filesystem is slightly visible from the outside; you can access it via /proc
20:33:05 <ais523\unfoog> as root
20:33:21 <Vorpal> ais523\unfoog, uh... wait, wouldn't they be unmounted if no longer mounted by any process?
20:33:38 <ais523\unfoog> Vorpal: yes, indeed
20:33:48 <ais523\unfoog> but weboflies' processes are often quite hard to get rid of
20:33:53 <ais523\unfoog> I've seen instances where kill -9 failed
20:34:10 <ais523\unfoog> because init (the real init, AFAICT) was catching the SIGKILL
20:34:12 -!- boily has quit (Ping timeout: 260 seconds).
20:34:13 <Vorpal> ais523\unfoog, D state?
20:34:21 <Vorpal> huh
20:34:22 <ais523\unfoog> no, T (ptrace) state
20:34:33 <Vorpal> ais523\unfoog, how did you manage init to catch the SIGKILL for you?
20:34:40 <ais523\unfoog> I have no idea, I guess a kernel bug
20:34:43 <Vorpal> heh
20:34:46 <ais523\unfoog> investigation showed that init was currently ptracing the process in question, though
20:34:59 <Vorpal> init doesn't do that....
20:35:02 <ais523\unfoog> indeed
20:35:09 <ais523\unfoog> that's why the process had stuck
20:35:12 <Vorpal> heh
20:35:15 <ais523\unfoog> because init didn't tell it to just continue with the sigkill
20:35:23 <Vorpal> ais523\unfoog, did you manage to reproduce it?
20:35:26 <ais523\unfoog> no
20:35:29 <Vorpal> oh well
20:35:41 <ais523\unfoog> I /did/ manage to reproduce the bug where a process had two stack segments simultaneously
20:35:50 <ais523\unfoog> but haven't submitted a bug as the situation is reasonably insane
20:36:01 -!- pumpkin has joined.
20:36:09 -!- pumpkin has quit (Changing host).
20:36:09 -!- pumpkin has joined.
20:36:11 <Vorpal> well, how does that happen. Isn't there a single segment selector?
20:36:41 <ais523\unfoog> it's a bug?
20:36:50 <ais523\unfoog> you did cat /proc/pid/maps
20:36:54 <ais523\unfoog> and you got two stack segments reported
20:36:56 <Vorpal> ah
20:36:58 <ais523\unfoog> which overlapped, but were different sizes
20:37:01 <Vorpal> heh
20:37:42 <ais523\unfoog> conclusion: Linux doesn't like it when you mmap the stack guard page with MAP_FIXED
20:38:07 <Vorpal> right
20:38:08 <ais523\unfoog> the bug occurred after doing it exactly twice, IIRC
20:38:09 -!- copumpkin has quit (Ping timeout: 260 seconds).
20:38:14 * Phantom_Hoover humble bundles.
20:38:14 <Vorpal> heh
20:38:17 <ais523\unfoog> (it shrinks the stack to make room for a new guard page in response)
20:39:34 -!- pumpkin has changed nick to copumpkin.
20:39:35 <Vorpal> ais523\unfoog, btw why did you want to keep it secret, before you said that the reason for being secret was also a secret
20:39:43 <Vorpal> (or something to that effect)
20:40:33 <Vorpal> ais523\unfoog, oh and there are some debian specific things in there.
20:40:47 <Vorpal> ais523\unfoog, the whole /lib/i686/cmov thing and so on
20:41:08 <Vorpal> (never mind that it is lib32 for me on ubuntu, and just /lib32 on arch)
20:41:29 <ais523\unfoog> Vorpal: that's temporary to get it running
20:41:30 <elliott> ais523\unfoog doesn';t use debian
20:41:36 <elliott> so i doubt it
20:41:38 <Vorpal> elliott, ubuntu iirc?
20:41:41 <ais523\unfoog> it'll use its own ideas of the libraries eventually
20:41:42 <Vorpal> which is debian based
20:41:44 <ais523\unfoog> yes, I use Ubuntu
20:41:53 <Vorpal> elliott, so same thing when it comes to this
20:41:58 <elliott> you said it was different on ubuntu
20:42:03 <elliott> very next line
20:42:11 <Vorpal> elliott, because I'm on 64-bit yet
20:42:12 <Vorpal> yes*
20:43:04 <Vorpal> elliott, you might need to change around line 488-499 if you want to get it running on a x86-64 distro, so it searches /lib32 and /usr/lib32 instead
20:43:17 <Vorpal> I haven't tried, I'm kind of scared of running it
20:43:48 <Vorpal> ais523\unfoog, how do you deal with CPUID?
20:44:03 <Vorpal> can't find anything on that
20:44:07 <ais523\unfoog> I don't, yet
20:44:12 <Vorpal> right
20:44:23 <Vorpal> do you have any plans for how to deal with it?
20:44:31 <ais523\unfoog> not yet
20:44:40 <Vorpal> ais523\unfoog, anyway: why was it secret before?
20:45:12 <elliott> i suspect he's doing a secret tas of a game
20:45:25 <Vorpal> hm
20:45:46 <Vorpal> elliott, could be, not sure what game apart from nethack ais523 would play though...
20:45:55 <elliott> seriously?
20:46:03 <Vorpal> eh, probably just tired
20:46:07 <Vorpal> which one did I miss
20:46:08 <elliott> he's talked about many games in here
20:46:24 <Vorpal> none that stood out really
20:46:30 <elliott> including e.g. the humble bundle 3 ones
20:46:31 <Vorpal> and that was for linux
20:46:33 <Vorpal> oh okay
20:46:49 <Vorpal> ais523\unfoog, did you get the current humble bundle btw?
20:46:53 <ais523\unfoog> no
20:47:07 <Vorpal> ais523\unfoog, and you are avoiding answering the question about why it was secret :P
20:47:09 <elliott> Vorpal: enigma, for one
20:47:11 <ais523\unfoog> I paid £5 for bundle 3, and that's about what it was worth
20:47:14 <Vorpal> elliott, oh yes, true
20:47:25 <ais523\unfoog> Vorpal: oh, because I have plans to submit a run on a secret emulator
20:47:32 <Vorpal> ais523\unfoog, ah okay
20:47:38 <ais523\unfoog> and if the emulator isn't secret, I'll have to write another one which is
20:47:44 <Vorpal> heh?
20:47:46 <Vorpal> weird
20:47:51 <ais523\unfoog> to be able to submit a run on a secret emulator
20:48:27 <Vorpal> oh no... is this the kind of "highlight yourself about wiki spam" madness?
20:48:52 <Vorpal> ais523\unfoog, anyway I presume you didn't develop the emulator in question?
20:49:09 <ais523\unfoog> elliott: can you trap Vorpal in a recursive facepalm for me please?
20:49:11 <Vorpal> because then you could just have added the code to support doing a TAS right into it
20:49:21 <Vorpal> hey
20:49:49 <Vorpal> ais523\unfoog, oh you mean SP is the secret emulator. Right. We will keep quiet about it.
20:50:16 <ais523\unfoog> how was that not obvious?
20:50:22 <Vorpal> I didn't think of it as a emulator really. Really not an emulator in the same sense that wine isn't to my mind.
20:50:26 <elliott> ais523\unfoog: because vorpal is dumb
20:50:26 <ais523\unfoog> actually, before I make a TAS I want to see what games are supported
20:50:44 <Phantom_Hoover> So the Secret Project is an emulator?
20:50:48 <ais523\unfoog> Vorpal: it isn't an emulator, but it has all the required requirements to be a TAS emulator apart from being an emulator
20:51:03 <Vorpal> Phantom_Hoover, read the log, I figured out what it was and confronted ais523\unfoog with it
20:51:09 <elliott> Phantom_Hoover: we've known what it was for ages
20:51:17 <elliott> just not what ais523\unfoog wanted it for
20:51:27 <Vorpal> yeah
20:51:40 <Vorpal> I found that out. So yeah
20:51:48 <Vorpal> should have done it in /msg to annoy elliott a bit though
20:51:51 <Vorpal> oh well
20:52:39 <elliott> childish as always :)
20:53:02 <Vorpal> elliott, I would have told you after a few minutes anyway :P
20:53:41 <Vorpal> ais523\unfoog, well yeah
20:53:43 <ais523\unfoog> hmm, have either of you dared to run it yet?
20:53:50 <ais523\unfoog> I know /I/'m a bit queasy about running it
20:53:55 <ais523\unfoog> so I wouldn't be surprised if you hadn't
20:54:06 <elliott> not yet, busy
20:54:08 <Vorpal> ais523\unfoog, not me. I looked at the code and.... well I would need to find a suitable system that I didn't mind if it exploded
20:54:10 <elliott> will soon
20:54:12 <Vorpal> none come to mind
20:54:17 <elliott> after ripping out libpng
20:54:20 <elliott> Vorpal: vm
20:54:26 <Vorpal> elliott, why rip out libpng
20:54:27 <ais523\unfoog> elliott: without libpng you can't see what's happening at all
20:54:35 <Vorpal> elliott, oh come on, this is like inception then
20:54:37 <Vorpal> or something
20:54:38 <ais523\unfoog> as it's the only way to get at the contents of the graphics buffer, currently
20:54:56 <ais523\unfoog> I think making the framebuffer a regular file was inspired
20:55:04 <Vorpal> ais523\unfoog, what about terminal only programs?
20:55:10 <ais523\unfoog> (hmm, I wonder if I could put a PNG header/footer around it, and not even have to transmit the bytes in it)
20:55:26 <ais523\unfoog> Vorpal: those work without the PNG stuff, if you're happy with processing the VT100 codes yourself
20:55:33 <ais523\unfoog> although atm simulated vblank happens anyway
20:55:41 <Vorpal> heh
20:55:42 <ais523\unfoog> regardless of whether it does anything useful or not
20:56:05 <Vorpal> ais523\unfoog, so you render nethack to a png?
20:56:20 <Vorpal> which terminal font do you use then
20:56:24 <ais523\unfoog> not NetHack, unless I use tiles version
20:56:30 <ais523\unfoog> that just outputs VT100
20:56:52 <Vorpal> right
20:56:55 <ais523\unfoog> the weboflies core, which I'm writing at the moment, would need to be connected to some sort of interface to actually read it
20:58:03 <Vorpal> hm
20:58:15 <Vorpal> ais523\unfoog, the core being what part of it?
20:58:22 <Vorpal> the whole emulator?
20:58:26 <Vorpal> or whatever you call it
20:58:33 <ais523\unfoog> what the part that's been written will be when it's finished
20:58:42 <ais523\unfoog> I'm planning on a sort of gdb/ddd-like setup
20:58:58 <ais523\unfoog> where you have a command-line core, and a GUI that communicates with it
20:59:04 <Vorpal> ah
20:59:08 <Vorpal> makes sense
21:00:28 <Vorpal> ais523\unfoog, so what is the point of doing a TAS with a secret emulator. I don't quite get it. Some sort of bragging rights? But I don't quite see how that would work
21:01:06 <ais523\unfoog> Vorpal: because it's always hilarious when people submit runs on emulators that people don't realise the submission system supports
21:01:18 <ais523\unfoog> submitting a run on an emulator that people don't even know exists is the obvious next step up
21:01:23 <Vorpal> heh
21:02:04 <Vorpal> ais523\unfoog, well, wouldn't the submission system support pretty much any emulator that could output some sort of format that could be handled by the submission system?
21:02:22 <Vorpal> $ pacman -Qo /lib/libmemusage.so
21:02:22 <Vorpal> /lib/libmemusage.so is owned by glibc 2.14.1-1
21:02:26 <Vorpal> huh, what?
21:02:30 <Vorpal> what is that for I wonder
21:02:40 <ais523\unfoog> Vorpal: it links to glibc malloc hooks, I think
21:02:45 <ais523\unfoog> so it's not surprising that they're in the same package
21:02:57 <Vorpal> oh is it some debugging tool?
21:03:02 <Vorpal> for LD_PRELOAD
21:03:04 <Vorpal> or such
21:03:05 <ais523\unfoog> probably
21:03:24 -!- oerjan has quit (Quit: Good night).
21:03:30 <Vorpal> but yeah it exports mmap, calloc and so on
21:03:40 <Vorpal> so probably something that is meant to be LD_PRELOADed
21:08:11 <Phantom_Hoover> Voxatron is a bit too easy.
21:08:16 <Phantom_Hoover> Erm, *hard.
21:12:51 <Phantom_Hoover> It wouldn't be so bad if the controls weren't clumsy.
21:13:33 <Vorpal> Phantom_Hoover, I agree
21:14:00 <Vorpal> Phantom_Hoover, blocks that matter is fun and reasonably hard though. Though the plot feels a bit... meh
21:14:14 <Vorpal> not that the plot really matters much in a game like that
21:17:10 -!- nask has joined.
21:17:14 <elliott> hi nask
21:17:16 <elliott> `? welcom
21:17:17 <elliott> `? welcome
21:17:17 <HackEgo> welcom? ¯\(°_o)/¯
21:17:18 <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
21:17:37 <nask> hi elliott
21:17:51 <Vorpal> ais523\unfoog, hm, you bind mount /lib and such, but not /usr/share?
21:17:55 <elliott> ais523\unfoog: grr, i need 32-bit libgcc too
21:18:07 <ais523\unfoog> Vorpal: that's temporary; eventually, none of that will be bind-mounted
21:18:16 <elliott> /* Timestamps. This stores the initial timestamp, in Web of Lies'
21:18:16 <elliott> internal format: a 64-bit number giving nanoseconds since the
21:18:16 <elliott> epoch (i.e. date +%s%N format). The value given here is
21:18:16 <elliott> 1 September 1993, the start of the Eternal September. */
21:18:17 <elliott> heh.
21:18:20 <Vorpal> elliott, that is the one major downside of arch... multilib failure
21:18:36 <elliott> Vorpal: have I mentioned Kitten gets multilib for free???
21:18:43 <Vorpal> elliott, yes
21:18:47 <Vorpal> elliott, and so does nixos
21:19:07 <elliott> i'm not sure it actually works with nixos
21:19:17 <Vorpal> oh?
21:19:41 <elliott> you can't have bin/foo and bin/foo
21:19:45 <elliott> there's no segregation in the profile
21:19:52 <elliott> i guess libraries are more common than executables, but still
21:20:04 <elliott> and i don't know if they do automatic cross-compilation stuff at all
21:20:45 <Vorpal> not much point of having multilib executables. Compilers that can't be built as cross-compilers maybe?
21:21:22 <elliott> there's no such thing as "multilib executables"
21:21:26 <elliott> just executables of a different arch
21:21:33 <elliott> think qemu-system
21:21:59 <elliott> it's just that the magic prefix for executing a x86 executable on x86-64 happens to be the null string
21:22:05 <Vorpal> elliott, yeah what I meant was "there is not much point in having more than one version of a given program installed at the same time"
21:22:23 <Vorpal> elliott, you don't need both 32-bit and 64-bit ls
21:22:29 <Vorpal> that is what I'm trying to say
21:22:54 <elliott> well, I could think of uses. but yes, I believe nixos cheats by not having <profile>/lib
21:23:09 <Vorpal> hm
21:23:25 <elliott> ais523\unfoog: btw, I'm unconvinced qemu wouldn't work for your tas needs...
21:23:33 <elliott> ais523\unfoog: you just need a slightly faster system :P
21:23:46 <ais523\unfoog> it works for NetHack
21:23:51 <Vorpal> elliott, okay I can think of one case, valgrind, but that is covered already for valgrind (except arch breaks that)
21:23:57 <ais523\unfoog> but it doesn't do stable enough input determinising
21:24:27 <elliott> ais523\unfoog: you could layer that on top
21:24:34 <elliott> by feeding input events through a wrapper
21:26:25 <elliott> ais523\unfoog: anyway, I think for Kitten I'll just steal the calls to turn things off
21:26:33 <elliott> like the clock thing Vorpal mentioned
21:26:51 <ais523\unfoog> I suppose it's mostly complete enough for Kitten
21:26:53 <elliott> and then do with a chroot + clock fixed at @0 + fixed hostname
21:26:55 <ais523\unfoog> even if it isn't for its intended purpose
21:27:06 <elliott> ais523\unfoog: well, like I said I'll probably just take parts of it
21:27:10 <Vorpal> elliott, clock fixed at @0 will break stuff, trust me
21:27:12 <ais523\unfoog> note that /all/ SDL programs get stuck in an infinite loop with a stuck clock
21:27:22 <elliott> ais523\unfoog: since I want something portable, and I don't care about the scheduler
21:27:23 <ais523\unfoog> as their main loop is basically gettimeofday and nanosleep
21:27:28 <elliott> (and want -j to work)
21:27:30 <elliott> and heh
21:27:36 <elliott> Vorpal: it won't break a C compiler
21:27:40 <Vorpal> elliott, you know that uname -a will end up fucked btw
21:27:44 <elliott> a C compiler shouldn't even require a clock
21:27:50 <elliott> and why?
21:28:01 <ais523\unfoog> disabling any syscall requires hooking the registers directly (orig_eax in the case of x86)
21:28:04 <Vorpal> elliott, your kernel, it was compiled in 1970
21:28:09 <Vorpal> elliott, oh and make, timestamps
21:28:16 <ais523\unfoog> right, a nonworking clock /would/ break make
21:28:20 <Vorpal> elliott, if you don't backdate the timestamps on files make will go crazy
21:28:20 <elliott> Vorpal: I don't have to say the kernel was compiled in 1970...
21:28:27 <elliott> and yes, I will backdate the timestamps
21:28:30 <ais523\unfoog> although, the secret project breaks make atm anyway
21:28:36 <ais523\unfoog> unless there are explicit sleeps in the build process
21:28:43 <ais523\unfoog> maybe I should make all syscalls cost 1ns
21:28:43 <elliott> doesn't matter if make won't handle updates
21:28:48 <elliott> since it'll be run from scratch
21:29:57 <Vorpal> elliott, I doubt much user space code uses RDTSC. It isn't useful given multi-core and changing clock frequency (except some modern CPUs compensate for that one, like core 2 or newer iirc)...
21:30:07 <Vorpal> I used it once, on an embedded x86 system
21:30:09 <elliott> I suspect uname -a to look something like: Linux kitten 3.0 #1 x86_64 unknown unknown GNU/Linux
21:30:12 <elliott> s/to/will/
21:30:26 <elliott> the version is just a string, so making it #1 should be fine
21:30:29 <elliott> nothing should try and /parse/ that
21:30:44 <Vorpal> elliott, don't be so sure of that heh
21:30:53 <elliott> Vorpal: I'd rather patch anything that tries to parse it
21:31:02 <Vorpal> elliott, binary packages ?
21:31:11 <elliott> Vorpal: those won't run inside the build jail...
21:31:18 <Vorpal> hm true
21:31:22 <Vorpal> elliott, their installers might?
21:31:23 <elliott> Vorpal: unless you mean a binary package with, like, a closed-source install script
21:31:31 <elliott> but, like... fuck that
21:31:35 <Vorpal> right
21:31:38 <elliott> I'd either LD_PRELOAD in a fake uname just for it
21:31:43 <elliott> or just tell everybody not to use it :)
21:32:01 <elliott> oh, wow
21:32:06 <Vorpal> ?
21:32:11 <elliott> I think GNU coreutils adds the "GNU/Linux" bit to uname
21:32:16 <elliott> the uname syscall doesn't have a field for that
21:32:23 <Vorpal> ... lol
21:32:27 <elliott> so the gnu people must have added the --operating-system field just so they could get GNU in there
21:33:09 <elliott> does anyone know /how/ to override uname without doing ais523\unfoog's crazy stuff?
21:33:24 <elliott> I mean, the kernel can't just return a string constant, can it :p
21:33:25 <ais523\unfoog> elliott: actually, my uname override is mostly sane
21:33:29 <Vorpal> elliott, setarch does it
21:33:32 <Vorpal> to some degree
21:33:40 <elliott> Vorpal: it does exactly one field of it
21:33:45 <ais523\unfoog> wait, no it isn't
21:33:47 <Vorpal> elliott, I think personality stuff is related
21:33:49 <Vorpal> not sure
21:33:50 <elliott> oh, hmm
21:33:51 <elliott> --uname-2.6
21:33:51 <elliott> Causes the program to see a kernel version number beginning with
21:33:51 <elliott> 2.6.
21:33:55 <elliott> nice :)
21:34:08 <Vorpal> elliott, I think parts of these things are special cased, not general solutions
21:34:11 <ais523\unfoog> I suspect setarch does it the same way as me, anyway
21:34:11 <elliott> ais523\unfoog: how's it done?
21:34:29 <elliott> wow, man 2 personality is totally unhelpful
21:34:29 <Vorpal> elliott, the one you pasted does 2.6.40 + the .x component in 3.x iirc
21:34:33 <ais523\unfoog> elliott: debugger hooks, like everything else; if the process calls uname, it lets the call happen, then overwrites its return value in the process's memory
21:34:41 <elliott> ais523\unfoog: :(
21:34:51 <Vorpal> ais523\unfoog, I don't think setarch does all that
21:35:12 <elliott> I doubt anything in util-linux-ng does that
21:35:16 <ais523\unfoog> elliott: that's how it handles pretty much every syscall that can't be translated directly, except that sometimes it translates the arguments not returns, and sometimes it doesn't make a syscall at all (it does, but with an invalid syscall number then it changes the ENOSYS)
21:35:17 <elliott> they have common decency, I would expect
21:35:22 <elliott> well, they use a lot of glibc-only apis
21:35:22 <Vorpal> ais523\unfoog, it doesn't even use ptrace says nm -D
21:35:23 <elliott> but apart from that
21:35:28 <elliott> ais523\unfoog: heh
21:35:47 <Vorpal> http://sprunge.us/dMVA
21:36:07 <Vorpal> there is NO way that can invoke ptrace, I refuse to believe it would avoid going through libc for it
21:36:19 <elliott> https://raw.github.com/gist/701791/4c6ebe0ee052575d49464b6f5d56730d5f48a471/setarch.c
21:36:20 <ais523\unfoog> Vorpal: sure there is, see "syscall" in that list?
21:36:27 <elliott> found by googling
21:36:28 <Vorpal> hm true
21:36:30 <Vorpal> ouch
21:36:36 <ais523\unfoog> ah, it's being used for personality, though
21:36:36 <elliott> #define set_pers(pers) syscall(SYS_personality, pers)
21:36:36 <Vorpal> ais523\unfoog, but for ptrace? nah
21:36:39 <elliott> Vorpal: ^
21:36:44 <Vorpal> right
21:36:50 <elliott> so wait, where are the personalities /defined/?
21:36:52 <Vorpal> -_-
21:36:52 <elliott> linux/personality.h?
21:36:54 <elliott> where do i get a list ofthem
21:36:57 <elliott> s/ofthem/of them/
21:37:02 <Vorpal> kernel sources?
21:37:09 <elliott> Vorpal: actually, this setarch isn't the one I have
21:37:11 <elliott> it has fewer options
21:37:19 <Vorpal> elliott, maybe a different version?
21:37:22 <Vorpal> try aur
21:37:24 <Vorpal> err
21:37:24 <Vorpal> abs
21:37:31 <elliott> https://github.com/karelzak/util-linux/blob/master/sys-utils/setarch.c
21:37:34 <elliott> there
21:37:39 <elliott> that's the official util-linux-ng source
21:37:40 <ais523\unfoog> elliott: quite a lot of the Secret Project is based on header files, or failing that kernel source
21:37:49 <ais523\unfoog> and failing even /that/, a bunch of experimentation with strace
21:38:08 <elliott> ais523\unfoog: you know, I don't like people who say this, but you have way too much time on your hands
21:38:11 <Vorpal> ais523\unfoog, which kernel versions have you tested it on?
21:38:21 <elliott> I mean that quite literally; ask someone to give you more work so you don't have time for this crap
21:38:31 <ais523\unfoog> elliott: I /don't/ have time for that atm
21:38:34 -!- derdon has joined.
21:38:35 <ais523\unfoog> that's why I haven't been working on it
21:38:44 <elliott> heh
21:38:48 <elliott> keep it up!!
21:38:55 <Vorpal> I think it is awesome
21:39:49 <elliott> oh god
21:39:53 <Vorpal> ?
21:39:55 <elliott> Vorpal: don't look at /usr/include/linux/personality.h
21:39:59 <Vorpal> why not
21:40:03 <elliott> don't
21:40:25 <Vorpal> elliott, mine looks quite okay, just a lot of bitmasks as is usually done in these sort of headers
21:40:26 <Phantom_Hoover> http://esolangs.org/wiki/JumpFuck
21:40:30 <ais523\unfoog> heh, I love the way that one of the flags I use is marked as "bug emulatino"
21:40:33 <ais523\unfoog> "bug emulation"
21:40:34 <elliott> Vorpal: :'(
21:40:45 <Phantom_Hoover> elliott, GIVE ME ONE GOOD REASON NOT TO THROW AN ICBB AT HEXHAM THIS MINUTE
21:40:47 <Vorpal> elliott, what did you expect
21:40:54 <elliott> ais523\unfoog: Sounds like Drepperish newspeak.
21:40:57 <elliott> Phantom_Hoover: Hey, that was for a /purpose/.
21:41:05 <Phantom_Hoover> Namely?
21:41:18 <elliott> Phantom_Hoover: I forget.
21:41:26 <Vorpal> ais523\unfoog, I think that support for turning of ASLR might be an option in the kernel. At least I saw something related.
21:41:27 <ais523\unfoog> elliott: it isn't a glibc header, though, is it?
21:41:33 <Phantom_Hoover> elliott, NOT GOOD ENOUGH
21:41:36 <Vorpal> ais523\unfoog, btw did you use cgroups? I don't remember
21:41:42 <ais523\unfoog> what's cgroups?
21:41:42 <elliott> ais523\unfoog: How should I know? :)
21:41:48 <Vorpal> never mind then
21:41:53 <ais523\unfoog> elliott: it's in .../linux
21:42:06 <elliott> ais523\unfoog: you never mentioned any header
21:42:40 <Phantom_Hoover> ais523\unfoog, it's an implementation of group theory in C, duh.
21:43:23 <ais523\unfoog> ais523\unfoog: I'm talking about personality.h, which you mentioned
21:43:42 <elliott> oh, I see the bug emulation comment now; and stop talking to yourself
21:43:59 <ais523\unfoog> err, elliott:
21:46:44 <elliott> ais523\unfoog: anyway, yeah, the Secret Project is cool but I only need about 5% of it, so I'll just take that 5% :P
21:47:14 <elliott> I might want to ask you to license me the calls I use under something more lenient if I can convince you making me GPL3 the entirety of my package manager for ten lines is unreasonable :P
21:48:15 <Vorpal> case SYS_sigreturn:
21:48:15 <Vorpal> case -1: /* return half of a sigreturn */
21:48:18 <Vorpal> ais523\unfoog, what?
21:48:39 <Vorpal> When the Linux kernel creates the stack frame for a signal handler, a call to sigreturn() is inserted into
21:48:39 <Vorpal> the stack frame so that upon return from the signal handler, sigreturn() will be called.
21:48:42 <Vorpal> oh my god
21:48:46 <Vorpal> that is one ugly solution
21:48:47 <elliott> beautiful
21:48:56 <elliott> `addquote <Vorpal> oh my god <Vorpal> that is one ugly solution <elliott> beautiful
21:48:58 <HackEgo> 705) <Vorpal> oh my god <Vorpal> that is one ugly solution <elliott> beautiful
21:49:09 <ais523\unfoog> and the syscall number ends up as -1 on the return half, for whatever reason
21:49:26 <elliott> anyway, I doubt make breaks with the clock set to 0
21:49:37 <Vorpal> elliott, do you even know how make works
21:49:46 <elliott> Vorpal: yes, but you're using a stupid definition of "break"
21:49:47 <Vorpal> elliott, object files must be newer than source files
21:49:59 <elliott> I unpack all the source with *time=0 on every file
21:50:03 <elliott> the clock is fixed at 0
21:50:04 <elliott> I run make
21:50:05 <Vorpal> elliott, it is impossible to have a date before t=0
21:50:13 <ais523\unfoog> Vorpal: t=-1?
21:50:14 <Vorpal> thus you get the "equals" case
21:50:17 <ais523\unfoog> (time_t is signed?)
21:50:20 <Vorpal> ais523\unfoog, oh right, it is signed
21:50:21 <Vorpal> true
21:50:24 -!- nask has quit (Quit: begone).
21:50:27 <elliott> Vorpal: let me get this straight: you think make will create the files, check their mtime, and then retroactively fail to build them?
21:50:28 <Vorpal> does it work properly for negative values
21:50:47 <Vorpal> elliott, no but I think there are many cases where the build system will end up checking the same file twice
21:51:04 <Vorpal> because of automess and so on
21:51:11 <ais523\unfoog> elliott: a case like "check if the file is newer than its source, if not rebuild it" could easily lead to a loop
21:51:20 <elliott> Vorpal: I could get make to print all the commands it /would/ execute, then execute them all myself :)
21:51:23 <ais523\unfoog> actually, IIRC configure errors on timestamps making no sense
21:51:43 <Vorpal> sensible of it
21:51:46 <elliott> sigh; if I can't fix the clock at 0, I'll have to use the Secret Project
21:52:00 <elliott> why the fuck do timestamps end up in object files, anyway?
21:52:09 <Vorpal> elliott, only really for the kernel
21:52:22 <Vorpal> don't remember that happening elsewhere
21:52:31 <elliott> the nix guys say it's their #1 cause of impurity
21:52:52 <Vorpal> well, the other ones must be even more uncommon
21:52:53 <ais523\unfoog> elliott: quite a lot of files have a "last build" date sohwn
21:52:55 <ais523\unfoog> *shown
21:53:03 <elliott> Vorpal: no, it's very common
21:53:06 <ais523\unfoog> e.g. you can press some key in NetHack (probably v) to see the date at which it was compiled
21:53:47 <Vorpal> elliott, hm
21:54:58 <ais523\unfoog> elliott: wouldn't it be more plausible to set the timestamps to values increasing in the order that the files are actually created (complete with scheduler determinism), starting on the date that that version of the software was released?
21:55:13 <elliott> ais523\unfoog: I'm trying to /avoid/ having to rip out the entire scheduler
21:55:15 <elliott> -j3 would be nice...
21:55:28 <Vorpal> elliott, not -j8?
21:55:29 <elliott> (portability is also nice)
21:56:34 <ais523\unfoog> elliott: actually, the scheduling stuff in Secret Project would be portable, if only it knew which syscalls were blocking and which were nonblocking
21:56:43 <ais523\unfoog> inspecting orig_eax is the only nonportable bit
21:56:55 <elliott> ais523\unfoog: so, it's portable except not being portable
21:57:00 <elliott> s/except/except for/
21:57:01 <ais523\unfoog> oh, and injecting calls to fcntl in cases like read which might be blocking and might be nonblocking depending on what it's reading from
21:57:28 <Vorpal> ais523\unfoog, and various other 32-bit x86 assumptions in the init code and so on
21:57:36 <Vorpal> sure, not in the scheduler
21:57:53 -!- Patashu has joined.
21:58:40 <Vorpal> elliott, anyway it is pure with real timestmaps, the current time is part of the input you see
21:58:48 <Vorpal> just change the system clock to reproduce it
21:58:49 <Vorpal> ;)
21:59:09 <elliott> Vorpal: that's bullshit even if you're stupid enough to believe that
21:59:13 <elliott> repeat after me: scheduler nondeterminism
21:59:18 <Vorpal> elliott, ... I was joking
21:59:41 <elliott> it wasn't (a) interesting (b) funny or (c) accurate in any sense
21:59:59 <Vorpal> elliott, what about using a counter and incrementing for each file touched, in the current process?
22:00:11 <Vorpal> hm nah
22:00:15 <Vorpal> that runs into other issuesx
22:00:18 <Vorpal> issues*
22:01:10 <Vorpal> elliott, oh btw I can imagine nondeterminism might be introduced by order of iterating through files. What order does readdir return entries in?
22:01:22 <Vorpal> is that even well defined?
22:01:54 <elliott> i doubt it'll depend on an rng or the clock or anything.
22:02:34 <Vorpal> elliott, no but probably on the inode, which file system is used, where in the btree the inodes ended up and so on
22:03:11 <elliott> does anyone actually copy out readdir results without sorting
22:03:21 <elliott> if it's just a mapM_ doSomething dirContents then it doesn't matter
22:03:26 <elliott> since doSomething is probably not order-dependent.
22:03:32 <Vorpal> elliott, why would find for example need to do it
22:03:35 <Vorpal> it doesn't need to sort
22:03:41 <Vorpal> it just needs to check if it matches or not
22:03:46 <Vorpal> and/or recurse
22:03:49 <elliott> [elliott@dinky weboflies]$ find .
22:03:49 <elliott> .
22:03:49 <elliott> ./build.sh
22:03:49 <elliott> ./ktt.c
22:03:49 <elliott> ./weboflies.c
22:03:53 <elliott> coincidence? you decide
22:03:58 <elliott> find ~ is also sorted
22:04:04 <Vorpal> eh
22:04:09 <Vorpal> $ find .
22:04:09 <Vorpal> .
22:04:09 <Vorpal> ./weboflies.c
22:04:09 <Vorpal> ./ktt.c
22:04:09 <Vorpal> ./build.sh
22:04:10 <Vorpal> ./weboflies
22:04:11 <Vorpal> mpt sprted
22:04:13 <Vorpal> not*
22:04:20 <elliott> sprted
22:04:23 <Vorpal> sorted*
22:04:28 <Vorpal> elliott, maybe it depends on fs then
22:04:31 <Vorpal> which one are you using
22:04:34 <Vorpal> elliott, ext4 here
22:04:37 <elliott> jfs
22:04:40 <Vorpal> well then
22:04:51 <Vorpal> elliott, you see, it isn't deterministic across file systems
22:04:52 <elliott> anyway, what kind of build process does find . >foo
22:05:03 <elliott> Vorpal: pedantic complaints about determinism should be directed at ais523\unfoog
22:05:08 <elliott> he's the one trying to do that
22:05:41 <ais523\unfoog> elliott: did you see sort_dents?
22:05:46 <Vorpal> elliott, well a build system might enumerate files in a directory if you do a wild card on sources, as might be done in cmake.
22:05:48 <Vorpal> ais523\unfoog, haha
22:05:58 <elliott> Vorpal: so?
22:06:03 <elliott> build rules should be independent of one another
22:06:08 <ais523\unfoog> directories get sorted into alphabetical order before returning them
22:06:10 <elliott> any build that depends on ordering is broken
22:06:12 <Vorpal> elliott, should.
22:06:14 <elliott> and won't work with -j
22:06:25 <Vorpal> elliott, I meant for an incrementing timestamp
22:06:27 <elliott> Vorpal: what you're saying is, "I bet people use build rules that only work if you use the right filesystem"
22:06:29 <Vorpal> elliott, there it would matter
22:06:47 <elliott> ais523\unfoog: Nix does something similar, incidentally
22:06:49 <elliott> ais523\unfoog: at package-creation time
22:06:55 <elliott> it has its own archiving format
22:06:58 <Vorpal> elliott, anyway something that *might* work: unpack files and date them 0. Then use a later date for actually running at
22:07:03 <ais523\unfoog> I'm not entirely sure what happens if a process asks for half a directory
22:07:20 <elliott> Vorpal: I could run it at @1, I suppose, even if that's ugly
22:07:27 <ais523\unfoog> I think it might fail if the buffer given isn't large enough to hold the whole directory
22:07:27 <elliott> can you unpack files as @-1? :)
22:07:31 <ais523\unfoog> as it'll get an arbitrary part of it
22:07:37 <Vorpal> elliott, I don't think that is going to be reliable
22:07:55 <elliott> quick, how do I set an mtime?
22:07:58 <ais523\unfoog> elliott: @1?
22:08:07 <ais523\unfoog> elliott: touch -m
22:08:20 <elliott> ais523\unfoog: http://www.gnu.org/s/automake/manual/tar/Date-input-formats.html
22:08:30 <ais523\unfoog> it also changes the ctime, though, because you can't change a file's timestamps without changing the ctime
22:08:37 <ais523\unfoog> elliott: ah, right; epoch + 1
22:08:37 <Vorpal> elliott, anyway, you have a lot of syscall stuff to do for 64-bit. some syscalls differ substantially in number and order of arguments, and even if they exist or not
22:08:48 <ais523\unfoog> + 1 second, that is
22:08:51 <elliott> [elliott@dinky ~]$ touch -m @-1 foo
22:08:51 <elliott> [elliott@dinky ~]$ ls -lh foo
22:08:51 <elliott> -rw-r--r-- 1 elliott users 0 Nov 3 22:08 foo
22:08:52 <elliott> :(
22:08:59 <elliott> [elliott@dinky ~]$ touch -m @0 foo
22:08:59 <elliott> [elliott@dinky ~]$ ls -lh foo
22:08:59 <elliott> -rw-r--r-- 1 elliott users 0 Nov 3 22:08 foo
22:08:59 <elliott> err...
22:09:07 <elliott> <Vorpal> elliott, anyway, you have a lot of syscall stuff to do for 64-bit. some syscalls differ substantially in number and order of arguments, and even if they exist or not
22:09:13 <ais523\unfoog> elliott: same minute, as they differ by a second?
22:09:16 <elliott> Vorpal: you're deliberately trying to annoy me by pretending I'm ais523\unfoog, right?
22:09:26 <elliott> ais523\unfoog: I'm trying to set the absolute timestamp
22:09:33 <ais523\unfoog> Vorpal: this is why I'm focusing on x86 first
22:09:34 <Vorpal> elliott, no, you are the one interested in this on 64-bit?
22:09:45 <Vorpal> ais523\unfoog, hm
22:09:51 <ais523\unfoog> Vorpal: elliott isn't interested in doing the syscall manipulation, even though that's the whole /point/
22:10:07 <Vorpal> he needs to if he wants the time to work as advertised
22:10:11 <elliott> ais523\unfoog: stop acting offended like I'm misunderstanding some magic point of the secret project :)
22:10:20 <elliott> some parts of it are helpful, some aren't
22:10:25 <ais523\unfoog> well, OK
22:10:34 <ais523\unfoog> I'm just trying to figure out which part you think is helpful
22:10:42 <ais523\unfoog> given that you don't want the scheduler, or the syscall rewrite
22:10:47 <Vorpal> ais523\unfoog, btw I think you might possibly run into issues with gettimeofday on 64-bit linux. IIRC that doesn't actually go to kernel there, but just reads a page with a timer mapped into the process by the kernel
22:10:53 <Vorpal> I'm surprised this isn't done on 32-bit
22:11:08 <Vorpal> ais523\unfoog, it is in the vdso iirc
22:11:11 <elliott> ais523\unfoog: disabling some nasty easy sources of nondeterminism, and overriding the clock/uname/some other things
22:11:15 <ais523\unfoog> Vorpal: ouch
22:11:30 <ais523\unfoog> the clock/uname overrides are processor-specific
22:11:43 <Vorpal> I think clock_whatever is done the same way btw
22:11:53 * ais523\unfoog wonders why touch has a -f flag that's documented to do nothing
22:12:08 <elliott> compat
22:12:09 <Vorpal> hm it isn't even in 1p
22:12:14 <Vorpal> so not POSIX compat
22:12:29 <elliott> ais523\unfoog: sigh, what made you think touch -m let me specify a timestamp?
22:12:37 <elliott> I have two files called @0 and @-1 now
22:12:49 <ais523\unfoog> elliott: oh, -d specifies the timestamp; -m tells it to change just the modificatoin time
22:12:56 <elliott> thx :p
22:13:07 <Vorpal> ais523\unfoog, http://sprunge.us/SBHU
22:13:13 <ais523\unfoog> you didn't quite ask the right question
22:13:22 <Vorpal> ais523\unfoog, that is how it is done. glibc call those
22:13:32 <Vorpal> or they are weak symbols in there, not sure which
22:13:35 <ais523\unfoog> Vorpal: hmm, and I can't unmap just part of the vdso
22:13:36 <elliott> [elliott@dinky ~]$ touch -d @-1 foo
22:13:36 <elliott> [elliott@dinky ~]$ ls -lh foo
22:13:37 <elliott> -rw-r--r-- 1 elliott users 0 Jan 1 1970 foo
22:13:41 <elliott> I bet it's special-casing that
22:13:46 <elliott> as in
22:13:48 <elliott> ignoring negative values
22:13:56 <elliott> [elliott@dinky ~]$ touch -d @-9999 foo
22:13:56 <elliott> [elliott@dinky ~]$ ls -lh foo
22:13:56 <elliott> -rw-r--r-- 1 elliott users 0 Dec 31 1969 foo
22:13:58 <elliott> ais523\unfoog: wow
22:14:06 <Vorpal> heh
22:14:18 <Vorpal> that is just absurd
22:14:26 <ais523\unfoog> elliott: something to do with timezones, perhaps?
22:14:31 <elliott> yes, obviously
22:14:33 <elliott> [elliott@dinky ~]$ touch -d @-9223372036854775808 foo
22:14:33 <elliott> [elliott@dinky ~]$ ls -lh foo
22:14:33 <elliott> -rw-r--r-- 1 elliott users 0 -9223372036854775808 foo
22:14:36 <elliott> YESSSSS
22:14:38 <Vorpal> what
22:14:40 <elliott> UNPACKED AT THE BEGINNING OF TIME
22:14:43 <Vorpal> heh
22:14:50 <Vorpal> elliott, what date is that technically?
22:14:55 <ais523\unfoog> why is ls outputing the timestamp like that?
22:14:55 <elliott> [elliott@dinky ~]$ touch -d @-9223372036854775 foo
22:14:55 <elliott> [elliott@dinky ~]$ ls -lh foo
22:14:55 <elliott> -rw-r--r-- 1 elliott users 0 May 16 -292275055 foo
22:15:06 <elliott> ais523\unfoog: I must have confused it :)
22:15:08 <ais523\unfoog> elliott: quick, get a date in year 0
22:15:15 <elliott> I, errr, help?
22:15:30 <elliott> [elliott@dinky ~]$ date -d"Jan 1 0" +%s
22:15:30 <elliott> 1293840000
22:15:35 <elliott> that, er, seems wrong
22:15:36 <ais523\unfoog> ais523@desert:~/taeb/TAEB$ sdate ls -l
22:15:37 <ais523\unfoog> total 123212
22:15:38 <ais523\unfoog> drwxr-xr-x 2 ais523 ais523 4096 1993-09-6547 18:24 bin
22:15:40 <elliott> ah, 0000 does it
22:15:51 <CakeProphet> wait was there a year zero IN REAL LIFE?
22:15:53 <elliott> [elliott@dinky ~]$ touch -d @-62167219125 foo
22:15:53 <elliott> [elliott@dinky ~]$ ls -lh foo
22:15:53 <elliott> -rw-r--r-- 1 elliott users 0 Jan 1 0000 foo
22:15:54 <CakeProphet> I don't think there was
22:15:55 <elliott> ais523\unfoog: tada
22:15:55 <ais523\unfoog> CakeProphet: no
22:15:59 <ais523\unfoog> elliott: yay
22:16:01 <CakeProphet> I think it went 1 BCE -> 1 CE
22:16:08 <Vorpal> ais523\unfoog, x86-64 has another even stranger thing than the vdso, called vsyscall
22:16:08 <CakeProphet> none of that zero shit.
22:16:12 <ais523\unfoog> in other news, why did I never think of doing sdate ls before now?
22:16:13 <elliott> ais523\unfoog: year 0 is 1 BC, I think
22:16:18 <elliott> ais523\unfoog: since it's just using negative numebrs
22:16:24 <Vorpal> ais523\unfoog, that is not even a full dynamic object, just a weird page
22:16:30 <Vorpal> 7fff8b1ff000-7fff8b200000 r-xp 00000000 00:00 0 [vdso]
22:16:30 <Vorpal> ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
22:16:36 <Vorpal> that is used for some stuff
22:16:45 <ais523\unfoog> that's a lot of fs
22:17:02 <Vorpal> ais523\unfoog, it is in the kernel half of the address space (the negative half)
22:17:09 <ais523\unfoog> *the top half
22:17:17 <ais523\unfoog> you can't insist to me that addresses are signed, I won't believe you
22:17:29 <Vorpal> ais523\unfoog, well, the ISA manuals claims they are signed
22:18:18 <ais523\unfoog> but they're addresses, not numbers
22:19:04 <CakeProphet> yeah I live at -4224 Hood Rd. Anywhere, USA
22:19:18 <Vorpal> ais523\unfoog, anyway vsyscall contains gettimeofday, time, getcpu and possibly set_cpu, I'm not quite sure, it is confusing
22:19:24 <Vorpal> and iirc the mechanism predates vdso
22:19:26 <elliott> Vorpal: so, wait, how do I fix the clock on x86-64?
22:19:30 <Vorpal> and is deprecated, but can't be removed
22:19:31 <elliott> remap that area of ram?
22:19:38 <ais523\unfoog> Vorpal: I guess vdso and vsyscall will have to be made unreadable
22:19:40 <Vorpal> elliott, I'm not sure the kernel will allow that
22:19:43 <ais523\unfoog> and the sigsegvs caught
22:19:51 <elliott> Vorpal: what am I meant to do, then?
22:19:56 * elliott considers asking #linux
22:20:00 <Vorpal> elliott, Why do you think I will know
22:20:04 <Vorpal> and good luck with THAT
22:20:07 <elliott> :)
22:20:33 * elliott considers trolling them with it
22:20:37 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:20:40 <Vorpal> ais523\unfoog, doesn't 32-bit linux have vdso?
22:20:46 <ais523\unfoog> there's a reason I ask secret project questions here
22:20:51 <ais523\unfoog> Vorpal: yes, but so far I haven't caught anything using it
22:21:02 <Vorpal> nm -D vdso32-syscall.so
22:21:02 <Vorpal> 00000000 A LINUX_2.5
22:21:02 <Vorpal> 00000410 T __kernel_rt_sigreturn
22:21:02 <Vorpal> 00000400 T __kernel_sigreturn
22:21:02 <Vorpal> 00000420 T __kernel_vsyscall
22:21:06 <Vorpal> it seems safe
22:21:06 <elliott> ais523\unfoog: I'm doing something perfectly respectable!
22:21:24 <Vorpal> ais523\unfoog, there is an int80 and a sysenter version too
22:21:25 <ais523\unfoog> yep, rt_sigreturn, sigreturn and vsyscall are all handlable
22:21:32 <elliott> ais523\unfoog: tbh, what I need is basically chroot + unprivileged user + forced clock + empty environment + forced hostname
22:21:40 <elliott> ais523\unfoog: the rest is just feelgood :)
22:21:43 <ais523\unfoog> empty environment is trivial
22:21:49 <Vorpal> yes
22:21:52 <elliott> ais523\unfoog: no shit
22:21:52 <ais523\unfoog> the host/name/ can easily be set, too; it's namespaced
22:21:52 <CakeProphet> ais523\unfoog: you're bad at secret projects because I FIGURED OUT YOUR SECRET PROJECT HAHAHAHA
22:22:01 <ais523\unfoog> CakeProphet: by reading other people discussing it?
22:22:05 <CakeProphet> no
22:22:09 <Vorpal> CakeProphet, yes
22:22:11 <CakeProphet> by using my magical powers.
22:22:16 <elliott> ais523\unfoog: hmm, do I really need namespace support to do that?
22:22:30 <Vorpal> elliott, pretty sure yes
22:22:36 <elliott> Gross! But okay.
22:22:56 <ais523\unfoog> elliott: no, but you don't want to set the hostname for every other process on the system too, do you?
22:23:07 <elliott> What Nix does is: Unprivileged user (nixbld[1-9] usually), empty environment
22:23:13 <elliott> and only one build runs as one of the users at a time
22:23:16 <elliott> that's for a multi-user thing
22:23:17 <Vorpal> ais523\unfoog, anyway it might happen that ptrace catches those system calls, but I would suspect it won't
22:23:18 <elliott> it's a stupid hole they have
22:23:22 <elliott> and that fixes it
22:23:26 <elliott> ais523\unfoog: no :)
22:23:37 <elliott> but yes, any ideas wrt me overriding the clock would be helpful
22:23:38 <elliott> hmm
22:23:39 <CakeProphet> ais523\unfoog: your secret is to bother people with questions about a secret project. The reason secrecy is integral to the project is that if people knew why you were asking questions they'd just stop caring.
22:23:43 <CakeProphet> muahahahahaha
22:23:45 <elliott> couldn't I just increment it by one second every time it's called?
22:23:49 <elliott> CakeProphet: we already know, you moron
22:23:49 <ais523\unfoog> CakeProphet: nope, they still care
22:24:08 <Vorpal> elliott, sure, but what about scheduling then
22:24:24 <elliott> Vorpal: fair enough, I guess make might race-condition it
22:24:33 <Vorpal> elliott, lets say you are building the kernel at -j3, when is the actual "embed for uname" done
22:24:35 <Vorpal> it will vary
22:24:37 <elliott> I still don't think unpacking files at -1 and running the build at 0 will break anything unfixably.
22:24:42 <CakeProphet> elliott: is that some kind of subatomic particle?
22:24:53 <Vorpal> elliott, I think if you add 2 to those then you will be safe
22:25:00 <Vorpal> unless configure errors out
22:25:11 <elliott> Vorpal: no thanks, I'd prefer the file-embedded timestamps to be the epoch
22:25:13 <elliott> it's an aesthetic thing
22:25:17 <Vorpal> elliott, anyway the date ais523\unfoog selected is a good one
22:25:26 <elliott> it is, but it's not as elegant as all-zeroes
22:25:34 <Vorpal> elliott, all 1?
22:25:41 <elliott> that sounds... unwise
22:25:45 <elliott> wait, that's just -1
22:25:46 <CakeProphet> Vorpal: not ereghant
22:25:51 <elliott> which i'm already using
22:25:51 <elliott> so ha
22:25:57 <Vorpal> elliott, well all 1 except signbit
22:26:17 <Vorpal> CakeProphet, did you mean: not elephant
22:26:20 <elliott> Vorpal: that'll break in a couple of decades. maybe. :p
22:26:30 <CakeProphet> Vorpal: I'll let you puzzle on that one.
22:26:33 <Vorpal> elliott, 64-bit linux uses 64-bit time_t
22:26:41 <Vorpal> CakeProphet, elephant definitely
22:27:05 <elliott> Vorpal: what about dwarf fortress???
22:27:31 <Vorpal> elliott, will it still be 32-bit in a couple of decades?
22:27:40 <Vorpal> elliott, I bet it will need more than 4 GB RAM by then
22:28:35 <Vorpal> $ ldd ./vdso.so
22:28:36 <Vorpal> ldd: exited with unknown exit code (139)
22:28:36 <Vorpal> lol
22:28:40 <Vorpal> that is quite impressive
22:28:44 <elliott> ldd is a massive security hole
22:28:48 <Vorpal> I know
22:28:51 <elliott> it just runs the binary with an environment var :P
22:28:53 <elliott> right
22:28:57 <Vorpal> elliott, that is why I was wondering what it would do
22:29:04 <Vorpal> on something not using glibc even
22:29:19 <elliott> Vorpal: something that doesn't support it would just run normally
22:29:32 <elliott> consider the sysadmin who runs as root and a malicious statically-linked program that a user is complaining about... :)
22:29:34 <ais523\unfoog> elliott: is ldd restricted to running executables?
22:29:51 <ais523\unfoog> as in, does it refuse to run -x things?
22:29:53 <ais523\unfoog> perhaps it should
22:30:05 <Vorpal> elliott, indeed
22:30:06 -!- augur has joined.
22:30:14 <elliott> [elliott@dinky ~]$ ldd ./2011-10-30.txt
22:30:14 <elliott> ldd: ./2011-10-30.txt: No such file or directory
22:30:15 <elliott> [elliott@dinky ~]$ ldd ~/Code/weboflies/build.sh
22:30:15 <elliott> not a dynamic executable
22:30:17 <elliott> yes, including the tab
22:30:19 <elliott> that's what it printed
22:30:36 <elliott> -xing it does:
22:30:39 <elliott> [elliott@dinky ~]$ ldd ~/Code/weboflies/build.sh
22:30:39 <elliott> ldd: warning: you do not have execution permission for `/home/elliott/Code/weboflies/build.sh'
22:30:39 <elliott> not a dynamic executable
22:30:52 <Vorpal> heh, it doesn't mention any ld.so
22:30:53 <Vorpal> at all
22:30:55 <ais523\unfoog> "warning:"
22:31:10 <elliott> "error:"
22:31:30 <Vorpal> I think it will continue if you have mulitple files on the line
22:31:44 <elliott> does anyone use calibre on linux? if so, uninstall it
22:31:50 <Vorpal> what is calibre?
22:31:57 <elliott> a popular ebook manager thing
22:32:03 <Vorpal> and why is it bad?
22:32:07 <elliott> https://bugs.launchpad.net/calibre/+bug/885027
22:32:11 <elliott> severely buggy suid helper
22:32:22 <Vorpal> binary package?
22:32:31 <elliott> it's open-source
22:32:35 <Vorpal> ah well
22:32:41 <elliott> "Ability to execute any program as root."
22:32:44 <elliott> it's that bad
22:32:45 <Vorpal> ouch
22:32:59 <Vorpal> why does it have a suid bit at all
22:33:00 <elliott> "I dont see how 1-3 are security vulnerabilities. 4 is a vulnerability only if
22:33:00 <elliott> mount itself is vulnerable to command line injection. 5 is indeed a
22:33:00 <elliott> vulnerability, but is neccesitated by the non uniformity of linux filesystems
22:33:00 <elliott> (mount, eject can be located anywhere). 5 can be mitigated by first checking
22:33:00 <elliott> for mount and eject in "standard" locations and only then trying all of PATH,
22:33:01 <elliott> changes for that will be in the next release."
22:33:07 <elliott> ^^ criminally irresponsible maintainer
22:33:12 <elliott> (ok, not criminally)
22:33:18 <elliott> Vorpal: mounting ebook devices, presumably
22:33:22 <elliott> without root
22:33:24 <Vorpal> ... hal?
22:33:30 <Vorpal> or dbus or whatever
22:33:34 <elliott> i think that's what policykit is for nowadays...
22:33:35 <ais523\unfoog> 3 is a bug if you put a symlink there, isn't it?
22:33:44 <elliott> ais523\unfoog: all of them are serious bugs
22:33:52 <ais523\unfoog> right
22:33:58 <ais523\unfoog> I'm trying to work out what the exploit would be
22:34:06 <elliott> "6. An unprivileged user an mount/unmount/eject whatever he wants, with
22:34:06 <elliott> root permissions. Danger."
22:34:08 <ais523\unfoog> creating empty dirs as root isn't obviously exploitable, for instance
22:34:10 <elliott> ok, this is the worst setuid executable in history
22:34:23 <elliott> ais523\unfoog: e.g. if something looks for a lock there
22:34:23 <ais523\unfoog> except for annoying people
22:34:29 <ais523\unfoog> elliott: right
22:34:52 <elliott> "You mean that a program designed to let an unprivileged user
22:34:52 <elliott> mount/unmount/eject anything he wants has a security flaw because it allows
22:34:52 <elliott> him to mount/unmount/eject anything he wants? I'm shocked.
22:34:52 <elliott> Implement a system that allows an appilcation to mount/unmount/eject USB
22:34:52 <elliott> devices connected to the system securely, then make sure that system is
22:34:53 <elliott> universally adopted on every linux install in the universe. Once you've done that, feel free to
22:34:55 <elliott> re-open this ticket."
22:35:00 <elliott> wow, remind me to avoid this person's code, forever
22:35:39 <ais523\unfoog> the reply is funny; "Unfortunately, sarcasm does not make you right."
22:35:41 <Vorpal> ouch yeah
22:36:03 <elliott> ais523\unfoog: more people need to listen to that advice, I think...
22:36:23 <ais523\unfoog> he replied "Sarcasm doesn't make me right, being right makes me right."
22:36:34 <Vorpal> heh, they generate a linker script for the vdso. As in, you aren't supposed to edit the .lds, but rather edit the generator
22:36:37 <elliott> "Shocking as that
22:36:37 <elliott> may seem, I am actually aware of the dangers"
22:36:40 <ais523\unfoog> then he submitted a fix, and someone broke that one too
22:36:41 <elliott> just not competent enough to avoid them
22:37:11 <Vorpal> /*
22:37:11 <Vorpal> * Align the actual code well away from the non-instruction data.
22:37:11 <Vorpal> * This is the best thing for the I-cache.
22:37:11 <Vorpal> */
22:37:22 <ais523\unfoog> heh, by creating a filesystem file with some suid executables on it and loopback-mounting it with calibre
22:37:23 <Vorpal> ais523\unfoog, from the vdso *linker script*
22:37:33 <Vorpal> the alignment is 0x100
22:37:53 <Vorpal> I guess it is because it will end up updating the data page a lot from the kernel
22:38:31 <Vorpal> ais523\unfoog, wait, what is the point of that?
22:38:38 <ais523\unfoog> then he fixed it again, to only mount files in /dev
22:38:43 <Vorpal> what
22:38:47 <ais523\unfoog> which is of course vulnerable to race conditions
22:38:48 <Vorpal> ais523\unfoog, this can't be real?
22:38:53 <elliott> Vorpal: this is an exploit
22:38:55 <elliott> not the fix
22:38:58 <Vorpal> oh okay
22:39:03 <elliott> the suid part, that is
22:39:05 <elliott> not the dev part
22:39:15 <Vorpal> I meant the dev part
22:39:30 <ais523\unfoog> exploits exploit incorrect assumptions, so typically involve doing something crazy
22:39:39 <Vorpal> right
22:39:43 <elliott> you should have to pass some kind of exam to ship setuid executables to users
22:39:51 <elliott> probably that exam should be "you can convince a package maintainer to package it"...
22:40:25 <ais523\unfoog> heh, it's just been pointed out that unprivileged users /can/ create symlinks in /dev
22:40:31 <ais523\unfoog> I'd missed that myself
22:40:41 <ais523\unfoog> anyone here know how? or shall I just give the solution?
22:40:43 <Vorpal> you can?
22:40:46 * elliott doesn't know how
22:40:49 <hagb4rd> wow gregor. i'm pretty impressed. opus 13 is a nice piece of art.
22:40:53 <Vorpal> ais523\unfoog, /dev/shm
22:40:56 <Vorpal> that would do it
22:40:57 <elliott> ais523\unfoog: good god, this guy just keeps patching his piece of shit
22:41:02 <ais523\unfoog> Vorpal: right
22:41:11 <elliott> Vorpal: heh
22:41:12 <ais523\unfoog> elliott: and Dan Rosenberg comes up with a new exploit every time
22:41:17 <ais523\unfoog> this is a great thread
22:41:23 <ais523\unfoog> is it on relevant-part-of-reddit yet?
22:41:25 <elliott> ais523\unfoog: isn't it Jason A. Donenfield doing the exploits?
22:41:27 <ais523\unfoog> it probably fits on proggit
22:41:28 <elliott> and yep
22:41:30 <elliott> that's where I found it
22:41:35 <elliott> How not to respond to vulnerabilities in your code (bugs.launchpad.net)
22:41:40 <elliott> (http://www.reddit.com/r/programming/comments/lzb5h/how_not_to_respond_to_vulnerabilities_in_your_code/)
22:41:43 <ais523\unfoog> oh, multiple people
22:42:05 <elliott> "2) It may not even be installed on some distros, for example, it isn't installed by default on gentoo."
22:42:12 <elliott> he can't depend on pmount, gentoo doesn't install it by default :DDD
22:42:22 <Vorpal> ais523\unfoog, this code is quite pretty btw: http://sprunge.us/cHgf (from the vdso)
22:42:27 <Gregor> THE MEME THAT TIME FORGOT: "BRB I can be doll"
22:42:51 <ais523\unfoog> that's a pointless meme
22:42:51 <Vorpal> ais523\unfoog, it uses a sequence counter to ensure a consistent reading of the time
22:42:55 <elliott> "@Rosenberg: Yes, I have. And you were warned, this is the last response you
22:42:56 <elliott> will get from me."
22:43:06 <elliott> WHAT WILL YOU DO ABOUT MY SECURITY HOLES NOW THAT I CANNOT HEAR YOU??? MWAHAHAHAHA
22:43:31 <Gregor> ais523\unfoog: It's actually what the receipt from Mattel says if you order a Barbie I Can Be™ Doll
22:43:39 <Vorpal> elliott, did they open a CVE?
22:43:44 <elliott> hmm, he's a Gentoo user... I'm going to try really hard to be shocked
22:44:16 <ais523\unfoog> haha, someone pointed out a security hole in the exploit
22:44:21 <ais523\unfoog> I'm trying to figure out if that's clever or missing the point
22:44:27 <Vorpal> ais523\unfoog, heh?
22:44:34 <Vorpal> ais523\unfoog, which comment
22:44:44 <ais523\unfoog> Vorpal: running the exploit code lets arbitrary people run executables with your perms
22:44:50 <ais523\unfoog> #37
22:45:05 <Vorpal> heh
22:45:30 <elliott> "I'm not sure this is actually exploitable...the posted exploit fails on my GNU/kFreeBSD box:
22:45:30 <elliott> $ gcc 70calibrerassaultmount.sh -o full-nelson"
22:45:34 <Vorpal> ais523\unfoog, I do think it is clever, rather than missing the point
22:45:34 <elliott> ais523\unfoog: facepalm with me
22:45:46 <elliott> "Is there different compiler (icc?) or architecture (maybe needs a RISC arch?) requirement?"
22:45:49 <ais523\unfoog> elliott: oh dear
22:45:56 <Vorpal> ouch
22:46:05 <elliott> "Until this comment, I was on the side of fixing with the exploits. Now, as far as I am concerned you should go play frisbee on a freeway." ;; that was a different person you moron
22:46:13 * elliott replies to people where they can hear it, in #esoteric
22:46:21 <ais523\unfoog> #41 is a reasonably sane comment
22:46:35 <Vorpal> yes
22:46:46 <elliott> "I would like ubuntu for not including this obviously exploitable test case in the face of an arrogant security researcher."
22:46:53 <elliott> ais523\unfoog: I think missing the point, for sure
22:47:14 <Vorpal> elliott, I'm pretty sure someone is trying to be cleaver there.
22:47:25 <elliott> it's from the same comment that points out the "exploit"
22:47:33 <Vorpal> elliott, indeed
22:47:35 <elliott> (in the exploit)
22:47:38 <elliott> anyway, *clever
22:47:46 <Vorpal> whatever
22:47:56 <Vorpal> spelling is for amateurs
22:48:03 <elliott> http://www.reddit.com/r/programming/comments/lzb5h/how_not_to_respond_to_vulnerabilities_in_your_code/c2wuix0
22:48:26 <elliott> programmers are way too touchy :P
22:49:11 <pikhq_> Vorpal, speling iz foar amacherz
22:51:05 <elliott> "The thing is, there's not much out there that supports so many formats. It's incredibly extensive. The devs have just put tons of time into adding feature after feature after feature. They even do their own IPC and lots of other little things that remind me of my first gigantic project where I crammed everything I could think of into one program to learn about everything."
22:51:06 <hagb4rd> spelling is for linguists
22:51:06 <elliott> yikes
22:51:14 <elliott> hagb4rd: that's not what a linguist is
22:51:36 <hagb4rd> what exactly do you mean elliott?
22:51:37 <augur> elliott is correct
22:51:47 <pikhq_> augur is correct.
22:51:48 <pikhq_> :P
22:51:51 <elliott> hagb4rd: a linguist is not someone who likes languages/knows a lot of languages/enjoys using language
22:52:04 <elliott> (well, they might do any or all of those, but that's not what a linguist /is/)
22:52:11 <elliott> ais523\unfoog: reddit wisdom: http://www.reddit.com/r/programming/comments/lzb5h/how_not_to_respond_to_vulnerabilities_in_your_code/c2wu5qx
22:52:19 <hagb4rd> i never said that
22:52:43 <elliott> I don't see the relevance of being a linguist to spelling properly :P
22:53:10 <pikhq_> Linguistics is the formal study of language. That's all.
22:53:24 <hagb4rd> okay
22:53:45 <hagb4rd> however didnt mean to insult our linguists here :P
22:54:28 <oklopol> you're lucky so few of us like languages.-
22:54:33 <oklopol> *--
22:54:37 <elliott> i think augur is the only linguist here :P
22:54:55 <pikhq_> I think augur's the only linguist here. Though if you include dilettantes you can make that plural.
22:58:01 <oklopol> i'm pretty sure most of the regulars have some sort of language fetish here
22:58:12 <oklopol> perhaps not a very regular one
22:59:42 <Phantom_Hoover> But what man cannot say he has not fallen to the subtle allure of Swedish?
22:59:50 <Phantom_Hoover> (The answer is all of them. Even the Swedes.)
22:59:52 <pikhq_> Phantom_Hoover: Bork bork bork.
23:00:13 <elliott> Does anyone actually use /sys nowadays? ais523\unfoog? Vorpal?
23:00:14 <Phantom_Hoover> pikhq_, please don't, this is polite company.
23:00:21 <ais523\unfoog> elliott: I can't remember what it's for
23:00:35 <oklopol> even the swedes have learned swedish
23:00:38 <Phantom_Hoover> It's like /proc but with syssy stuff.
23:00:49 <elliott> ais523\unfoog: /proc/sys, except for when you're in the past
23:01:16 <Phantom_Hoover> /proc/sys/dev is my new favourite path.
23:01:27 <ais523\unfoog> elliott: it exists in this system, and is not identical to /proc/sys
23:01:30 <Phantom_Hoover> I wonder if I can set it to ~.
23:01:37 <elliott> ais523\unfoog: I know that.
23:01:45 <ais523\unfoog> I don't know if anything's using it
23:01:47 <elliott> Phantom_Hoover: Huh?
23:01:54 <ais523\unfoog> ".'s home directory"?
23:02:01 <pikhq_> I seem to recall it being essential for udev.
23:02:02 <ais523\unfoog> ah, that was a full stop
23:02:13 <Phantom_Hoover> Punctuation is an evil from which we may never be free.
23:02:14 <ais523\unfoog> none on /sys/fs/fuse/connections type fusectl (rw)
23:05:58 -!- copumpkin has joined.
23:07:51 -!- GreaseMonkey has quit (Quit: The Other Game).
23:17:48 <Vorpal> <elliott> Does anyone actually use /sys nowadays? ais523\unfoog? Vorpal? <-- uh yes?
23:17:50 <Vorpal> udev
23:17:51 <Vorpal> a lot more
23:17:56 <elliott> Why
23:18:06 <Vorpal> elliott, it provides info about devices and so on
23:18:17 <elliott> What is the semantic difference between /proc and /sys
23:18:31 * Phantom_Hoover → sleep
23:18:33 -!- Phantom_Hoover has quit (Quit: Leaving).
23:18:37 <Vorpal> elliott, /proc is for pids + some other stuff
23:18:52 <Vorpal> elliott, some stuff is being moved or has been moved from /proc to /sys I know
23:18:53 <elliott> [elliott@dinky ~]$ ls /proc/sys
23:18:53 <elliott> abi debug dev fs kernel net vm
23:18:53 <elliott> [elliott@dinky ~]$ ls /sys
23:18:53 <elliott> block bus class dev devices firmware fs hypervisor kernel module power
23:18:53 <elliott> What is the semantic distinction between these two
23:18:55 <Vorpal> during 2.6.x
23:19:07 <Vorpal> elliott, /proc/sys is basically sysctl
23:19:10 <Vorpal> nothing else
23:19:17 <elliott> I thought sysfs was basically sysctl too.
23:19:21 <Vorpal> elliott, /sys is for device discovery and so on
23:19:23 <Vorpal> elliott, far from it
23:19:34 <elliott> "It is similar to the sysctl mechanism found in BSD systems" --wp
23:19:50 <elliott> *shrug*
23:19:53 <Vorpal> well, it is used to discover things, like what devices exist
23:19:56 <elliott> It sucks to have two directories for "misc. kernel shit".
23:20:17 <Vorpal> /proc is really over-populated
23:20:32 <shachaf> elliott: On the contrary, we should have more.
23:20:43 <Vorpal> $ ls -l /sys/block/
23:20:43 <Vorpal> totalt 0
23:20:43 <Vorpal> lrwxrwxrwx 1 root root 0 2011-11-04 00:19 dm-0 -> ../devices/virtual/block/dm-0
23:20:43 <shachaf> Directories galore.
23:20:54 <elliott> totalt
23:20:57 <Vorpal> well a lot more
23:21:04 <Vorpal> elliott, sv_SE I think
23:21:48 <Vorpal> elliott, anyway a few files in /sys are for setting stuff, mostly stuff related to a particular instance of a driver for a specific hardware
23:21:54 <Vorpal> rather than system-global settings
23:22:33 <pikhq_> elliott: /proc started as a "information about processes" filesystem, became a "generic kernel shit" filesystem. Now they're trying to make /sys the generic kernel shit filesystem, and /proc the information about processes filesystem.
23:22:35 <Vorpal> elliott, say, if you want to add a foo-switch to every block device, chances is it goes into /sys, if you want a global foo-switch for the entire system, it becomes a sysctl and goes into /proc/sys
23:22:59 <pikhq_> If they could do things from scratch they'd probably make it /sys/proc
23:23:04 <Vorpal> yes
23:23:07 <Vorpal> that would make sense
23:24:30 <Vorpal> anyway I think udev mainly uses /sys/{block,bus,dev,devices}
23:24:34 <Vorpal> maybe some more
23:24:58 <elliott> Shouldn't proc be ... yeah, /sys/proc.
23:25:12 <elliott> Can you tell stuff proc is in a different place? :p
23:25:22 <Vorpal> pikhq_, where is /sys documented btw? Like /sys/firmware/memmap/0/{end,start,type}, I have no idea what that is for
23:25:31 <Vorpal> elliott, probably not
23:25:43 <pikhq_> Vorpal: Probably somewhere in linux-x.y.z/Documentation/
23:25:46 <Vorpal> elliott, anyway I doubt mkdir /sys/proc would work
23:26:09 <Vorpal> $ ldd ./vdso.so
23:26:09 <Vorpal> ldd: exited with unknown exit code (139)
23:26:10 <Vorpal> gah
23:26:16 <elliott> Vorpal: I guess so :P
23:26:16 <Vorpal> fuck you synergy
23:26:17 <elliott> Didn't work for me
23:26:30 <Vorpal> $ ls /sys/firmware/memmap/
23:26:30 <Vorpal> 0 1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 3 4 5 6 7 8 9
23:26:39 <Vorpal> someone needs to fix the copy-paste bug for synergy btw
23:26:55 <elliott> have you tried the maintained fork
23:27:05 <Vorpal> elliott, that is what I'm using
23:27:26 <Vorpal> elliott, anyway only some programs exhibit it, and it starts randomly a while after connecting
23:32:10 -!- sllide has quit (Read error: Connection reset by peer).
23:34:38 <pikhq_> 私のホバークラフトはうなぎでいっぱいです! <- The only phrase in Japanese anyone ever needs to know.
23:35:04 <Vorpal> pikhq_, what does it mean?
23:35:42 <pikhq_> (watashi no hobākurafuto wa unagi de ippai desu!) [watasi no hohầkurahuto ha unagì tè i'håi tèsu]
23:35:49 <pikhq_> Vorpal: "My hovercraft is full of eels."
23:35:51 <Vorpal> ah
23:36:45 <pikhq_> s/gì/kì/
23:42:55 -!- kwertii has joined.
23:45:03 <Madoka-Kaname> `ls /sys/firmware/memmap
23:45:05 <HackEgo> ls: cannot access /sys/firmware/memmap: No such file or directory
23:45:36 <Deewiant> `ls /sys
23:45:38 <HackEgo> block \ bus \ class \ dev \ devices \ firmware \ fs \ kernel \ module
23:55:33 -!- Vorpal has quit (Ping timeout: 276 seconds).
2011-11-04
00:16:44 -!- ais523\unfoog has quit (Read error: Connection reset by peer).
00:18:46 -!- oklopol has quit (Read error: Connection reset by peer).
00:19:05 -!- oklopol has joined.
00:20:09 -!- Zuu_ has quit (Ping timeout: 244 seconds).
00:22:29 <elliott> gah, the two people I was gonna talk to both quit at the same time
00:41:55 -!- augur has quit (Remote host closed the connection).
01:04:16 -!- derdon has quit (Remote host closed the connection).
01:13:18 -!- augur has joined.
01:28:43 -!- GreaseMonkey has joined.
01:28:44 -!- GreaseMonkey has quit (Changing host).
01:28:44 -!- GreaseMonkey has joined.
02:06:24 -!- nooga has quit (Ping timeout: 252 seconds).
02:27:02 -!- tiffany has quit (Quit: Leaving).
02:39:56 -!- slayerten has joined.
02:40:35 <elliott> hi slayerten
02:40:37 <elliott> `? welcome
02:40:39 <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
02:42:45 <slayerten> hi
02:42:48 <slayerten> 3q
02:52:17 -!- slayerten has quit (Ping timeout: 240 seconds).
02:53:32 -!- slayerten has joined.
02:58:59 -!- slayerten has quit (Quit: Leaving.).
03:15:50 <Gregor> "Chili and basil give rise to its distinctive spiciness."
03:15:56 <Gregor> Yeah, when I think "spicy", I think "basil"
03:16:04 <Gregor> That spicy, spicy basil.
03:17:34 <elliott> "Archive maintainers are encouraged to copy this
03:17:34 <elliott> distribution to their archives outside the USA. Please get it from
03:17:34 <elliott> ftp.gwdg.de; transferring this distribution from ftp.gnu.org (or any other
03:17:34 <elliott> site in the USA) to a site outside the USA is in violation of US export
03:17:34 <elliott> laws."
03:17:39 <elliott> Wow, GNU offer a way to violate US export laws on demand.
03:17:45 <elliott> Nobody outside the US download this file: http://ftp.gnu.org/gnu/glibc/glibc-crypt-2.1.tar.gz
03:18:24 <elliott> It's them that violate the laws, right?
03:18:32 <coppro> think so
03:18:36 <coppro> i dunno
03:18:46 <coppro> I might have just illegally exported it
03:18:57 <elliott> heh
03:19:07 <elliott> I think the burden is meant to be on the distributors, which is why everyone's paranoid about it
03:21:42 <Gregor> The USA has actually relaxed its export regulations since 200something.
03:21:46 <Gregor> 2008? 2009?
03:22:06 <Gregor> Lesse what Wikipedia says ...
03:24:52 <Gregor> You have to notify the Bureau of Industry and Security. But that's all, there's no licensing or other restrictions, they just have to KNOWWWWWWWW.
03:25:05 <Gregor> Also it seems that for any given source release you only have to notify once.
03:25:13 <Gregor> (i.e. mirroring isn't an issue)
03:30:16 <elliott> Heh
03:32:20 <Gregor> Also, you have the option of emailing them, or faxing AND mailing them! (Note: that is not an "or", it is an "and")
03:34:29 <elliott> X-D
03:34:42 <elliott> Now would be a great time to force a horrific question on you.
03:34:50 <elliott> Gregor: How'd I override the Linux clock syscalls to always return the epoch
03:39:32 <Gregor> ... magick?
03:40:54 <elliott> Gregor: So. Unhelpful.
03:41:14 <elliott> At this rate it looks like I'm gonna have to steal Web of Lies' architecture-specific syscall-overriding code...
03:51:55 -!- TeruFSX has joined.
03:55:25 <elliott> [elliott@dinky weboflies]$ sudo ./weboflies ls
03:55:25 <elliott> = WARNING: mount("/home/ais523", "/tmp/home/ais523", 0, MS_BIND|MS_RDONLY, 0): No such file or directory
03:55:25 <elliott> = WARNING: mount("/home/ais523/weboflies/nethack/nethack", "/tmp/var/games/nethack", 0, MS_BIND, 0): No such file or directory
03:55:25 <elliott> = WARNING: mount("/etc/nethack", "/tmp/etc/nethack", 0, MS_BIND|MS_RDONLY, 0): No such file or directory
03:55:26 <elliott> = WARNING: unexpected signal 11 sent to pid 13002
03:55:28 <elliott> + executed program terminated
03:55:30 <elliott> >
03:55:35 <elliott> Gregor: Can you shoot ais for me?
03:55:45 <Gregor> 😤😤lolwut
03:56:05 <elliott> Gregor: I'm trying to get the Project Formerly Known as the Secret Project running :P
03:56:12 <Gregor> Is web-o-flies related to --- so yes.
03:56:23 <elliott> Web o' Flies X-D
03:56:35 <Gregor> So much better than the alternate reading.
03:57:38 <elliott> Gregor: But yeah, right now it has a bunch of lolunportable bind mounts :P
03:57:49 <elliott> #if 1
03:57:49 <elliott> /* make my home dir visible inside the chroot, for testing */
03:57:49 <elliott> ewarn(mkdir("/tmp/home/ais523", 0755));
03:57:49 <elliott> ewarn(mount("/home/ais523", "/tmp/home/ais523", 0, MS_BIND|MS_RDONLY, 0));
03:57:49 <elliott> /* more for-testing things */
03:57:49 <Gregor> Seems that way, dunnit.
03:57:50 <elliott> ewarn(mkdir("/tmp/var/games", 0755));
03:57:52 <elliott> ewarn(mkdir("/tmp/var/games/nethack", 0755));
03:57:54 <elliott> ewarn(mount("/home/ais523/weboflies/nethack/nethack", "/tmp/var/games/nethack", 0, MS_BIND, 0));
03:57:56 <elliott> ewarn(mkdir("/tmp/etc/nethack", 0755));
03:57:58 <elliott> ewarn(mount("/etc/nethack", "/tmp/etc/nethack", 0, MS_BIND|MS_RDONLY, 0));
03:58:00 <elliott> #endif
03:58:24 <elliott> #if 1
03:58:24 <elliott> /* make my home dir visible inside the chroot, for testing */
03:58:24 <elliott> ewarn(mkdir("/tmp/home/elliott", 0755));
03:58:24 <elliott> ewarn(mount("/home/elliott", "/tmp/home/elliott", 0, MS_BIND|MS_RDONLY, 0));
03:58:25 <elliott> #endif
03:58:27 <elliott> Thar we go
03:58:29 <Gregor> s/if 1/if 0/ PROBLEM SOLVED
03:58:41 <elliott> Gregor: Damn, I was gonna ask if you've seen the source code but then I realise ais gave it to me in private :P
03:58:44 <elliott> It's... it's something else.
03:58:54 <elliott> For instance it's over 4000 lines in a single C file :P
03:59:10 <elliott> [elliott@dinky weboflies]$ sudo ./weboflies ls
03:59:10 <elliott> = ERROR: stat proc/pid/fd: Permission denied
03:59:10 <elliott> I... don't... even...
03:59:12 <Gregor> Remember when you complained about Plof's interpreter function?
03:59:29 <elliott> Gregor: You want me to hold everyone by ais' coding standards?
03:59:34 <elliott> Y'all off scot free.
04:00:10 <Gregor> Also, I think I have a new winner of my Unicode Nonsense Prize.
04:00:18 <Gregor> GOAT ain't got nothin' on CAT FACE WITH WRY SMILE
04:01:05 <elliott> Wow :P
04:01:34 <elliott> Gregor: http://www.fileformat.info/info/unicode/char/1f639/index.htm
04:02:06 <Gregor> Yeah, I found it on fileformat.info's list.
04:02:13 <Gregor> I feel that WRY SMILE is better though.
04:04:18 <pikhq_> God damn Japan.
04:05:09 <elliott> Gregor: Seriously though... you gotta see this thing's code before you die.
04:05:19 <elliott> Every comment is like a paragraph of pure horror.
04:06:15 <elliott> Gregor: Have I mentioned it does SDL support by using a PNG framebuffer?
04:06:27 <elliott> (OK, it uses a framebuffer which it can screenshot to PNG :P Still)
04:06:37 <elliott> (In-memory framebuffer, that is)
04:06:51 <elliott> Gregor: http://www.fileformat.info/info/unicode/char/1f648/index.htm
04:09:31 <elliott> U+01A2 LATIN CAPITAL LETTER OI
04:09:31 <elliott> U+01A3 LATIN SMALL LETTER OI
04:09:31 <elliott> These should have been called letter GHA. They are neither pronounced 'oi' nor based on the letters 'o' and 'i'.
04:09:31 <elliott> -- http://unicode.org/notes/tn27/
04:09:35 <lifthrasiir> uhm, is there an esolang that the source code is raw waveform (audible or not)?
04:09:57 <elliott> lifthrasiir: piet encoded as pcm :p
04:10:13 <lifthrasiir> elliott: no novelty. :p
04:10:43 <elliott> input-format languages are rarely novel :P something that based it on some kind of actually interesting waveformy analysis would be interesting
04:10:44 <Gregor> elliott: At least they kinda LOOK like OI.
04:10:49 <elliott> but probably involve reals and thus be a pain to run
04:10:58 <elliott> (whereby "a pain" means "impossible")
04:11:45 <elliott> Gregor: Did you logread to see what the Secret Project is actually for? Wait, you never logread, do you :P
04:11:57 <coppro> \/win 4
04:12:10 <elliott> coppro: no......
04:12:46 <lifthrasiir> elliott: i have thought that such language may build a network of filters (or DSPs, if you prefer) and run the input through it
04:13:00 <Gregor> elliott: No, but I have some vague familiarity from earlier mentions of it.
04:13:01 <elliott> lifthrasiir: that would be pretty. so the input would be audio too?
04:13:03 <Gregor> elliott: Software repeatability.
04:13:05 <lifthrasiir> yes
04:13:16 <elliott> Gregor: Right. It's for tool-assisted speedruns.
04:13:37 <Gregor> Whuhwhuh
04:13:42 <lifthrasiir> there may be some fixed sources (i.e. sources and sinks) that appears in the source code as a wave literal
04:13:42 <Gregor> I thought it was for SCIENCE.
04:13:53 <elliott> Gregor: Tool-assisted speedruns are pretty damn scientific :P
04:13:58 <Gregor> lul
04:14:01 <elliott> We already knew it wasn't testing or anything *shrugs*
04:14:17 <lifthrasiir> i don't know how to encode all these informations to some pretty waveforms though :S
04:15:07 <elliott> Gregor: http://www.fileformat.info/info/unicode/char/1F46F/index.htm I...
04:16:30 <elliott> http://www.fileformat.info/info/unicode/char/1f487/index.htm; very next codepoint: http://www.fileformat.info/info/unicode/char/1f488/index.htm
04:17:04 <elliott> Gregor: Have I mentioned Web of Lies does cooperative scheduling by overriding every single syscall to schedule
04:17:18 <elliott> So that syscalls block and yield appropriately.
04:17:30 <elliott> It's so beautiful :P
04:17:54 <lifthrasiir> RAT vs. MOUSE: http://www.fileformat.info/info/unicode/char/1f400/index.htm http://www.fileformat.info/info/unicode/char/1f401/index.htm
04:18:05 <elliott> Gregor: Oh, and it overrides syscalls by using ptrace, transforming the arguments, calling the real syscall, then transforming the result in the process's memory in-place.
04:19:01 <elliott> Gregor: MEANWHILE: http://www.fileformat.info/info/unicode/char/1f51b/index.htm
04:28:11 <quintopia> name a dangerous part of london
04:28:53 <lifthrasiir> everywhere
04:29:02 <quintopia> where are you most likely to get mugged
04:30:32 <elliott> glasgow
04:36:50 <pikhq_> quintopia: 70s, Protestant neighborhood in Ireland, while being the Pope.
04:37:31 <quintopia> that's not in london, but i appreciate the thought
04:38:24 <pikhq_> Oh, *in London*?
04:38:41 <pikhq_> Just be named Guy Fawkes. That should do it.
04:38:42 <pikhq_> :P
04:45:44 <Gregor> elliott: That's actually pretty damned nifty.
04:46:00 <elliott> Gregor: It's /horrifying/. It /manually messes with registers/.
04:46:06 <Gregor> elliott: And? :P
04:46:34 <pikhq_> elliott: This is Gregor you're talking to.
04:47:25 <elliott> pikhq_: Gregor: You guys can't even begin to talk, you haven't SEEN this shit :P
04:47:43 <Gregor> No, but I wrote something similar in/for JavaScript ...
04:47:57 <elliott> Gregor: Eh?
04:48:01 <elliott> What are you referring to?
04:49:46 <elliott> Gregor: Like, I can't think of ANYTHING to do with JS that would be even REMOTELY comparable to this :P
04:50:10 <elliott> It's possibly the least portable C program I've ever seen.
04:50:28 <pikhq_> elliott: Unless there's a bug in a Javascript implementation that allows him to prod registers manually.
04:50:31 <pikhq_> :D
04:50:35 <Gregor> elliott: http://sss.cs.purdue.edu/projects/dynjs/jsbench-oopsla-2011.pdf
04:50:43 <pikhq_> The least portable Javascript program!
04:51:01 <elliott> Gregor: Is the similarity just "it's for repeatability"
04:51:14 <elliott> Gregor: Because let me tell you, it is not the /idea/ that is horrifying here, it is very much the implementation :P
04:51:48 <Gregor> elliott: The implementation is PRETTY horrifying, but then JS is a highly-dynamic language with reflection, and ELF+x86 isn't.
04:52:14 <elliott> Gregor: The Secret Project doesn't give a shit about ELF. I don't quite think you understand :P
04:52:17 <Gregor> elliott: It's the same basic idea of standing in between all the syscalls and rewriting them.
04:52:32 <elliott> Gregor: It's based on constructing a chroot, starting a process, and then becoming a horrific parasite of it.
04:52:37 <Gregor> Yesyesyes
04:52:58 <elliott> Gregor: Note that you're not MEANT to be able to "intercept" syscalls :P
04:53:09 <elliott> You can just get notified when there's a syscall, pausing the process, and you happen to be able to fiddle with memory and registers.
04:53:10 <pikhq_> ptracesayswhat
04:53:20 <pikhq_> Ah, right.
04:53:28 <Gregor> Yup.
04:53:32 <elliott> It's basically "interception via automated gdb" :P
04:53:52 <elliott> Seriously though, using syscalls for scheduling is warped, whatever universe you're in :P
04:53:56 <Gregor> That being said, it seems to me like that should be implementable in a way that's only /mostly/ horrible, not /entirely/ horrible.
04:54:00 <elliott> Have I mentioned it fakes a system clock?
04:54:10 <pikhq_> elliott: Please tell me this is something absurd like orthogonal persistance via ptrace.
04:54:13 <elliott> It actually manages time itself :P
04:54:22 <elliott> pikhq_: No, it's the Project Formerly Known as the Secret Project.
04:54:36 <pikhq_> That would be amazing though, you must admit.
04:54:38 <elliott> pikhq_: It makes Linux (almost) deterministic.
04:54:54 <elliott> (Deterministic if you don't have a loop that calls no syscalls in it)
04:55:27 <pikhq_> To what end?
04:55:40 <elliott> pikhq_: That was the Secret (you've seen ais523 talk about it, right?)
04:55:43 <elliott> Turns out it's for TASes.
04:55:44 <Gregor> elliott: So, to what degree does it work?
04:55:47 <elliott> And now, a long quote:
04:55:50 <elliott> /* Linked list of future timed events, maintained in sorted order.
04:55:50 <elliott> Any syscall that schedules something to happen at a particular
04:55:50 <elliott> future time, such as nanosleep(2) (syscall return) or alarm(2)
04:55:50 <elliott> (signal) will add an element to this list. Time does not increase
04:55:50 <elliott> while any processes are executing; once all are simultaneously
04:55:51 <elliott> blocked, the first element from this list is taken and resolved.
04:55:52 <pikhq_> *Aaaah*.
04:55:53 <elliott> Simultaneous events cannot happen; if an event would be added to
04:55:55 <elliott> this list and another one already has the same time, the new event
04:55:57 <elliott> is postponed one nanosecond. We only have to worry about one sort
04:55:59 <elliott> of clock here; REALTIME and MONOTONIC are the same as system time
04:56:01 <elliott> cannot be changed without root privs and we don't change it,
04:56:03 <elliott> MONOTONIC_RAW is the same as MONOTONIC as we don't allow time slew,
04:56:05 <pikhq_> ... Oh my god.
04:56:05 <elliott> and we claim that all time spent executing is spent in syscalls
04:56:07 <elliott> (i.e. zero lag), so PROCESS_CPUTIME_ID and THREAD_CPUTIME_ID are
04:56:09 <elliott> always 0. (Likewise, of the three interval timers, ITIMER_REAL is
04:56:11 <elliott> based on realtime, and the other two never fire at all.) */
04:56:32 <elliott> :D
04:56:46 <elliott> Gregor: Well, right now I'm trying to get it to run on my system >_>
04:56:56 <Gregor> I guess for TAS being able to just fake up time is not sufficient, the goal is to have repeatable timing.
04:56:59 <elliott> Gregor: But I gather it runs NetHack, and evidently runs some SDL game well enough for that stuff to be tested.
04:57:17 <elliott> Gregor: He was even working on getting OpenGL working.
04:58:13 <elliott> pikhq_: Here's another one for ya:
04:58:13 <pikhq_> ais523 is a madman.
04:58:16 <elliott> /* We can use procfs to get the current mappings, in order to avoid
04:58:16 <elliott> overlapping an existing mapping. The mappings are given in
04:58:16 <elliott> numerical order. The way it works is that we don't place anything
04:58:16 <elliott> before the first or after the last mapping (to avoid writing on
04:58:16 <elliott> system address space); and we place the mmap at the end of the
04:58:17 <elliott> last gap in which it fits with addrnear == 0. If addrnear has a
04:58:18 <elliott> value, we place it at addnear & PAGE_MASK if we can, or move it
04:58:20 <elliott> backwards slightly so that it fits if we can, or otherwise at the
04:58:22 <elliott> end of last the gap before addrnear where it fits or at the start
04:58:24 <elliott> of the next gap afterwards where it fits, whichever is nearer.
04:58:26 <elliott> There is one other rule: Linux doesn't like an mmap getting too
04:58:28 <elliott> near to the end of the stack, and shrinks the stack if that is
04:58:30 <elliott> done (presumably to give a guard page for stack overflow
04:58:32 <elliott> protection). As such, we keep each map at least a page away
04:58:34 <elliott> from each other map. */
04:58:36 <elliott> In fairness, there was a blank line before "There is one other rule".
04:59:39 <elliott> Gregor: pikhq_: Here's the scheduling rules: http://sprunge.us/GGYX (He's already pasted that with the realtime-simulation bits censored, but that's public now, so *shrug*)
05:02:19 <elliott> Gregor: pikhq_: OK, ais will get mad of me if I paste too much of this, but I couldn't resist: http://sprunge.us/DTJa
05:02:38 <pikhq_> So. You can fucking TAS at syscall granularity.
05:03:59 <elliott> OK, /something/ is wrong with the simulated /proc here
05:06:46 -!- monqy has quit (Quit: hello).
05:07:02 -!- Sgeo|web has joined.
05:07:22 <Sgeo|web> kmc's reaction to the AW SDK: "ughhhh"
05:08:27 <elliott> You're subjecting kmc to your API design? Come on, that's not fair.
05:08:30 <elliott> kmc: We apologise.
05:09:37 <Sgeo|web> I'm not the one providing the AW SDK!
05:10:34 <elliott> Just think, all the person-hours going into this might produce a whole _three_ test bots before Sgeo|web gets bored and looks at another language.
05:11:21 <Sgeo|web> Actually-written code would be a surprise, tbh
05:11:37 <elliott> I said might.
05:12:02 <elliott> What's more likely is that you'll make a bunch of people go to the effort of trying to figure out how to bind it for absolutely nothing, but I thought you might find me saying that a little depressing.
05:14:03 <elliott> kmc: I would just use a global lock for this.
05:14:14 <elliott> Wait, you're trying to stop Sgeo from doing things like that, aren't you.
05:14:20 <elliott> I apologise.
05:14:59 <kmc> no I am currently explaining how to do it :)
05:15:51 * shachaf monad transformers :-(
05:15:54 <elliott> kmc: I meant a global global. It's not a global if you can have more than one of them.
05:16:09 <elliott> But seriously, this is a hideous C API, top-level mutable variable > ReaderT implementation detail.
05:20:43 <kmc> elliott, I was getting to the global global
05:20:53 <elliott> Global global global.
05:20:53 <kmc> why don't you follow along in #haskell instead of bugging me here
05:21:18 <elliott> I can't face watching it directly. But I'll leave you to deal with the horror. :p
05:58:46 -!- kwertii has quit (Quit: bye).
06:04:23 -!- MDude has changed nick to MSleep.
06:41:06 -!- hagb4rd has quit (Ping timeout: 240 seconds).
06:44:24 -!- naskg has joined.
06:46:01 <CakeProphet> has anyone here used an Array in a legitimate purposeful Haskell program?
06:46:09 <CakeProphet> I haven't. But that's kind of expected.
06:58:05 -!- oerjan has joined.
07:03:44 <CakeProphet> would there be any values that have type-level natural types?
07:05:22 -!- naskg has quit (Read error: Connection reset by peer).
07:05:34 -!- naskg has joined.
07:06:28 <oerjan> :t Just (Just (Just (Just ())))) -- this has type 4, essentially?
07:06:29 <lambdabot> parse error on input `)'
07:06:32 <oerjan> argh
07:06:38 <oerjan> :t Just (Just (Just (Just ()))) -- this has type 4, essentially?
07:06:39 <lambdabot> Maybe (Maybe (Maybe (Maybe ())))
07:06:58 <oerjan> hm wait
07:07:03 <oerjan> too much Nothing
07:07:12 -!- naskg has quit (Client Quit).
07:07:22 <oerjan> :t Identity (Identity (Identity (Identity ())))
07:07:23 <lambdabot> Identity (Identity (Identity (Identity ())))
07:07:27 <CakeProphet> oerjan: but not in the actual implementation of type-level naturals right?
07:07:42 <CakeProphet> or... yes?
07:07:57 <oerjan> what is "the" actual implementation?
07:08:02 <CakeProphet> I don't know.
07:08:09 <CakeProphet> there isn't one?
07:08:11 * CakeProphet has no clue.
07:08:39 <oerjan> it may be common for pure type-level programming in haskell to use empty data types, in which case you only have undefined, which haskell cannot avoid.
07:09:27 <CakeProphet> a type-level boolean would be nice. Basically it would serve the purpose of an anonymous set of two phantom types.
07:09:37 <oerjan> data Zero; data Succ a
07:09:57 <CakeProphet> is "type Zero" not valid?
07:10:06 <oerjan> not valid.
07:10:15 <oerjan> a type is a synonym.
07:10:54 <oerjan> even the above requires EmptyDataDecls extension (sp?)
07:14:22 <CakeProphet> right I understand what type is for, it just seems that in this context they'd be completely equivalent.
07:14:43 <oerjan> type must be entirely expandable at compile time
07:17:56 <CakeProphet> kind / = A | B x | C x y
07:18:06 <CakeProphet> where is your God now?
07:19:29 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
07:19:45 <CakeProphet> I don't really think that kind of definition would serve any kind of purpose.
07:19:53 <CakeProphet> basically to associate a group of types to a kind.
07:20:09 <CakeProphet> kind-level metaprogramming? :P
07:20:49 <CakeProphet> kind-level naturals? WHERE DOES IT END.
07:21:02 <oerjan> there are kinds all the way down
07:21:10 <oerjan> or sorts, whatever that is
07:22:29 <oerjan> i do have the feeling the above definition is a confusion of levels, though
07:22:55 <CakeProphet> all the way down?
07:23:12 <oerjan> something like kind / x y = (* -> x) -> * -> y i could sort of believe in
07:23:23 <CakeProphet> oh, well...
07:23:35 <CakeProphet> that's more like a kind-level type declaration
07:23:37 <oerjan> although the mix of operator and alphanums also grates
07:23:41 <CakeProphet> I was thinking more of a kind-level data declaration
07:23:51 <oerjan> ah.
07:23:55 <CakeProphet> where these types suddenly have this kind.
07:24:14 <CakeProphet> analogous to these constructor functions having this type.
07:24:24 <oerjan> hm ok that may make sense. although you'd want x and y to be parameters on the left side.
07:24:33 <CakeProphet> or foralled
07:24:52 <CakeProphet> well...
07:25:00 <CakeProphet> parameters in kinds are typically done via ->
07:25:17 <CakeProphet> I'm confused now. :P
07:25:28 <oerjan> um -> _is_ a kind constructor
07:25:35 <CakeProphet> ah okay.
07:25:50 <oerjan> i'd expect what you define to be other kind constructors
07:26:05 <CakeProphet> that serve the purpose of..........
07:26:08 <CakeProphet> ..........
07:26:12 <CakeProphet> (silence)
07:26:15 <CakeProphet>
07:28:08 <CakeProphet> it may have some relevance to type-level programming?
07:29:18 <CakeProphet> hmmm.....
07:29:23 <CakeProphet> really * acts as a kind of kind variable.
07:29:50 <CakeProphet> well, not really.
07:30:38 <CakeProphet> also your rules about operators and variables is messed up now
07:30:48 <CakeProphet> -> is a kind operator but * is a kind variable.
07:30:48 <oerjan> no, it acts as a kind constant.
07:31:02 <CakeProphet> oerjan: er, I mean, yes I understand.
07:31:27 <CakeProphet> but if you added more kind distinctions then * being "any kind of type" is really kind of like a type variable, except that multiple occurences of * don't refer to the same kind.
07:31:51 <oerjan> argh
07:31:54 <CakeProphet> no?
07:31:55 <CakeProphet> :P
07:32:16 <oerjan> ...enjoy your trip to the looney bin
07:32:39 <oerjan> i'm outta this conversation :P
07:32:56 <CakeProphet> any further and Oerjan would descend into madness.
07:34:38 <oerjan> well, further.
07:34:47 <oerjan> into.
07:35:03 <oerjan> something which would require insane unicode to describe.
07:35:52 <CakeProphet>
07:36:19 <CakeProphet> I got this when I looked up "insane unicode"
07:36:22 <CakeProphet> it means "insane"
07:37:35 <CakeProphet> (I thought maybe I could maybe help you describe it maybe\)
07:38:09 <CakeProphet> PERHAPS SPOKEN LANGUAGE IS LIKE TYPES
07:38:25 <CakeProphet> AND THE ACTIONS THAT UNDERLY THE SPOKEN WORD ARE THE PORGRAMS
07:38:44 <CakeProphet> Maybe I make extensive use of the maybe type
07:39:12 <CakeProphet> (perhaps being a synonym for maybe, mayhaps)
07:40:46 <elliott> oh no oerjan
07:40:48 <elliott> i didn't realise
07:40:52 <elliott> CakeProphet was trying to do haskell
07:40:53 <elliott> in here
07:40:55 <elliott> im so
07:40:56 <elliott> sorry :(
07:41:08 <elliott> <CakeProphet> has anyone here used an Array in a legitimate purposeful Haskell program?
07:41:11 <oerjan> elliott: HELP ME. HEEEEEEEEEEEEEEEEEEEEEEEEEEELP MEEEEEEEEEE!
07:41:13 <elliott> Array is practically deprecated
07:41:26 <elliott> <oerjan> what is "the" actual implementation?
07:41:26 <CakeProphet> elliott: kind-level metaprogramming is a state-of-art field in which I'm resorching.
07:41:32 <elliott> oerjan: the new ghc extension, perhaps?
07:41:37 <elliott> <oerjan> even the above requires EmptyDataDecls extension (sp?)
07:41:39 <elliott> not in haskell2010
07:41:51 <elliott> <CakeProphet> kind-level metaprogramming? :P
07:42:00 <elliott> we're getting constraint kinds, and kind polymorphism is being worked on. it is in fact very useful
07:44:22 <CakeProphet> cooooool.
07:44:42 <CakeProphet> :>>:>:>>>:>:>>:>>:>:>>:>
07:48:16 <CakeProphet> :>>:>:>>>:>:>>:>>:>:>>:>
07:48:41 <CakeProphet> > let (>>:>:>>>:>:>>:>>:>:>>:>) = id in (+2) >>:>:>>>:>:>>:>>:>:>>:> 2
07:48:42 <lambdabot> 4
08:00:29 <CakeProphet> CONNNNNNNNNNNNNNS!!!
08:02:37 <CakeProphet> `QUOTE
08:02:37 -!- elliott has quit (Read error: Connection reset by peer).
08:02:42 <CakeProphet> `quote
08:02:43 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: QUOTE: not found
08:02:44 <HackEgo> 74) <AnMaster> I'm 100% of what sort of magic was involved in it
08:02:52 <CakeProphet> `quote
08:02:54 <CakeProphet> `quote
08:02:54 <CakeProphet> `quote
08:02:55 <HackEgo> 46) <Deewiant> Reality isn't a part of physics
08:02:55 <CakeProphet> `quote
08:02:55 <CakeProphet> `quote
08:02:58 <HackEgo> 257) <Vorpal> ooh I want to see ehird pole dancing <ehird> I think that would be illegal. <Vorpal> oh you are right <Vorpal> damn :/
08:03:00 -!- elliott has joined.
08:03:00 <HackEgo> 462) <Madk> #%%:]__t�# <Madk> do you see that <Madk> that is great progress taking place
08:03:22 <HackEgo> 323) <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
08:03:22 <HackEgo> 79) <@Lawlabee> Why does Monday start at 10PM on Sunday?
08:06:53 <elliott> "@Donnenfeld: Your exploit does not work against current calibre-mount-helper, since I have fixed the mounting of symlinked dirs in both /dev and /media. Closing this bug. Re-open it only if you can point to/describe an actual exploit against current calibre-mount-helper."
08:06:56 <elliott> this guy never gives up
08:07:38 <CakeProphet> elliott: he is the Rick Astley of calibre-mount-helper
08:08:14 <CakeProphet> is that you trying to troll #linux or is this something else?
08:08:32 -!- GreaseMonkey has quit (Remote host closed the connection).
08:10:07 <elliott> CakeProphet: it's https://bugs.launchpad.net/calibre/+bug/885027, which you will not regret reading
08:12:04 <CakeProphet> I...
08:12:07 <CakeProphet> don't believe you.
08:12:32 -!- GreaseMonkey has joined.
08:13:10 <elliott> CakeProphet: it's at #1 on proggit and had the active members of the channel in a state of awe for like over half of it a few hours ago
08:13:15 <elliott> you decide :p
08:13:23 <CakeProphet> ...
08:36:38 <CakeProphet> :t fun
08:36:39 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
08:37:43 <CakeProphet> :t fun "hello" "world"
08:37:44 <lambdabot> forall t. (SimpleReflect.FromExpr ([Char] -> t)) => t
08:37:55 <CakeProphet> :t fun show(fun "hello" "world")
08:37:56 <lambdabot> Couldn't match expected type `String'
08:37:56 <lambdabot> against inferred type `a -> String'
08:37:56 <lambdabot> In the first argument of `fun', namely `show'
08:38:10 <CakeProphet> :t fun (show fun "hello" "world")
08:38:11 <lambdabot> Couldn't match expected type `[Char] -> [Char] -> String'
08:38:11 <lambdabot> against inferred type `String'
08:38:11 <lambdabot> In the first argument of `fun', namely `(show fun "hello" "world")'
08:38:11 <CakeProphet> lol
08:38:15 <CakeProphet> HELP WHAT IS PRECEDENCE.
08:38:31 <CakeProphet> :t fun . show . fun "hello" $ "world"
08:38:32 <lambdabot> Ambiguous type variable `a' in the constraints:
08:38:33 <lambdabot> `SimpleReflect.FromExpr a'
08:38:33 <lambdabot> arising from a use of `fun' at <interactive>:1:13-23
08:38:36 <CakeProphet> :t fun . show . fun "hello" $ "world" :: Expr
08:38:37 <lambdabot> Ambiguous type variable `a' in the constraints:
08:38:37 <lambdabot> `SimpleReflect.FromExpr a'
08:38:37 <lambdabot> arising from a use of `fun' at <interactive>:1:13-23
08:38:40 <oerjan> painful to watch, mostly
08:38:40 <CakeProphet> bah
08:38:58 <CakeProphet> :t fun . show $ fun "hello" "world" :: Expr
08:38:59 <lambdabot> Ambiguous type variable `a' in the constraints:
08:38:59 <lambdabot> `SimpleReflect.FromExpr a'
08:38:59 <lambdabot> arising from a use of `fun' at <interactive>:1:14-32
08:39:30 <elliott> CakeProphet thinks that $ are literal syntactic parentheses.
08:39:33 <elliott> He is wrong.
08:39:51 <CakeProphet> oerjan: I'm trying to use fun and fold[lr] to implement unwords
08:39:55 -!- GreaseMonkey has quit (Remote host closed the connection).
08:40:10 <oerjan> ah.
08:40:17 <CakeProphet> but kind of lost now...
08:40:23 <elliott> see above
08:40:36 <oerjan> :t foldr (fun . show)
08:40:37 <lambdabot> forall b a. (Show b, SimpleReflect.FromExpr b, Show a) => b -> [a] -> b
08:40:46 <CakeProphet> :t fun . show (fun "hello" "world")
08:40:48 <lambdabot> Couldn't match expected type `[Char]' against inferred type `Char'
08:40:48 <lambdabot> Expected type: [String]
08:40:48 <lambdabot> Inferred type: String
08:41:06 <elliott> CakeProphet thinks (f . g x) = (f (g x)).
08:41:07 <elliott> he is wrong
08:41:15 <CakeProphet> :t fun $ show (fun "hello" (var "world"))
08:41:16 <lambdabot> Ambiguous type variable `a' in the constraints:
08:41:16 <lambdabot> `SimpleReflect.FromExpr a'
08:41:16 <lambdabot> arising from a use of `fun' at <interactive>:1:12-36
08:41:19 <CakeProphet> :t fun $ show (fun "hello" (var "world")) :: Expr
08:41:20 <lambdabot> Ambiguous type variable `a' in the constraints:
08:41:20 <lambdabot> `SimpleReflect.FromExpr a'
08:41:20 <lambdabot> arising from a use of `fun' at <interactive>:1:12-36
08:41:38 <CakeProphet> ah
08:41:53 -!- GreaseMonkey has joined.
08:41:54 <CakeProphet> :t fun (show (fun "hello" (var "world"))) "hello"
08:41:56 <lambdabot> Ambiguous type variable `a' in the constraints:
08:41:56 <lambdabot> `SimpleReflect.FromExpr a'
08:41:56 <lambdabot> arising from a use of `fun' at <interactive>:1:11-35
08:41:58 <CakeProphet> sieijoiwejriojsdfoijweorijwer
08:43:01 <oerjan> :t foldr1 (show . fun)
08:43:02 <lambdabot> Couldn't match expected type `a -> a'
08:43:02 <lambdabot> against inferred type `String'
08:43:02 <lambdabot> In the first argument of `(.)', namely `show'
08:43:17 <oerjan> erm
08:43:25 <oerjan> :t foldr1 ((show .) . fun)
08:43:26 <lambdabot> Ambiguous type variable `a' in the constraints:
08:43:26 <lambdabot> `SimpleReflect.FromExpr a'
08:43:26 <lambdabot> arising from a use of `fun' at <interactive>:1:19-21
08:43:30 <CakeProphet> you need to apply fun then show it.
08:43:37 <CakeProphet> fun "name" (var "value")
08:43:39 <CakeProphet> then show that.
08:43:47 <CakeProphet> then use that as the var
08:43:55 <CakeProphet> er
08:43:56 <CakeProphet> fun
08:43:58 <CakeProphet> actually.
08:44:33 <oerjan> hm
08:44:44 <CakeProphet> not sure if it's actually a valid fold.
08:44:56 <elliott> > let foo [] = "end"; foo (x:xs) = show $ fun x (var (foo xs)) in foo ["a","b","c"]
08:44:57 <lambdabot> Ambiguous type variable `a' in the constraints:
08:44:57 <lambdabot> `GHC.Show.Show a'
08:44:58 <lambdabot> a...
08:45:05 <elliott> > let foo [] = "end"; foo (x:xs) = show (fun x (var (foo xs)) :: Expr) in foo ["a","b","c"]
08:45:06 <lambdabot> "a b c end"
08:45:24 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in foo ["a","b","c"] :: Expr
08:45:25 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
08:45:25 <lambdabot> against inferred ...
08:45:28 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in foo ["a","b","c"]
08:45:29 <lambdabot> No instance for (SimpleReflect.FromExpr
08:45:29 <lambdabot> (Data.Number.Sy...
08:45:34 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in undefined
08:45:35 <lambdabot> *Exception: Prelude.undefined
08:45:38 <elliott> hmm
08:45:43 <elliott> :t let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in foo
08:45:44 <lambdabot> forall a. (SimpleReflect.FromExpr (Sym a), Show a) => [String] -> Sym a
08:45:53 <CakeProphet> > fun "hello" "world"
08:45:54 <lambdabot> Ambiguous type variable `a' in the constraints:
08:45:54 <lambdabot> `GHC.Show.Show a'
08:45:54 <lambdabot> a...
08:45:56 <elliott> > let foo [] = var "end"; foo (x:xs) = fun x (foo xs) in show (foo ["a","b"])
08:45:57 <lambdabot> No instance for (SimpleReflect.FromExpr
08:45:57 <lambdabot> (Data.Number.Sy...
08:46:04 <elliott> :-?
08:46:05 <elliott> :t var
08:46:06 <lambdabot> forall a. String -> Sym a
08:46:07 <elliott> :t fun
08:46:08 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
08:46:13 <elliott> oh.
08:46:14 <elliott> :t x
08:46:15 <lambdabot> Expr
08:46:17 <CakeProphet> :t fun "hello"
08:46:18 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
08:46:19 <elliott> :t name
08:46:19 <lambdabot> Not in scope: `name'
08:46:23 <elliott> huh
08:46:25 <elliott> oerjan: ?
08:46:29 <oerjan> :t expr
08:46:29 <elliott> something else is "var"
08:46:30 <lambdabot> Expr -> Expr
08:46:36 <oerjan> yes
08:46:49 <elliott> > SimpleReflect.var
08:46:50 <lambdabot> Not in scope: `SimpleReflect.var'
08:47:01 <elliott> well this is difficult :)
08:47:12 <CakeProphet> oh...
08:47:13 <CakeProphet> @hoogle var
08:47:14 <oerjan> not really
08:47:15 <lambdabot> Language.Haskell.TH.Syntax VarE :: Name -> Exp
08:47:15 <elliott> hmm
08:47:15 <lambdabot> Language.Haskell.TH VarE :: Name -> Exp
08:47:15 <lambdabot> Language.Haskell.TH.Lib varE :: Name -> ExpQ
08:47:25 <CakeProphet> THANKS HOOGLE
08:47:29 <elliott> > let foo [] = fun "test" :: Expr; foo (x:xs) = fun x (foo xs) in show (foo ["a","b"])
08:47:30 <lambdabot> "a (b test)"
08:47:33 <elliott> aha.
08:48:15 <elliott> > let foo k [] = k $ fun "test"; foo k (x:xs) = foo (\k' -> k' x) xs in show (foo ["a","b"])
08:48:16 <lambdabot> Couldn't match expected type `(t -> b) -> b'
08:48:16 <lambdabot> against inferred type ...
08:48:32 <elliott> CakeProphet: this isn't going to work.
08:48:36 <elliott> not without essentially defining
08:48:48 <elliott> join a b = a ++ " " ++ b
08:48:51 <elliott> with simplereflect
08:48:58 <elliott> (yes yes I know "join" clashes there)
08:49:03 <CakeProphet> ah okay.
08:49:34 <oerjan> :t op
08:49:35 <lambdabot> forall o n. (Newtype n o) => (o -> n) -> n -> o
08:49:42 <oerjan> wtf is that
08:50:59 -!- oerjan has quit (Quit: Later).
08:51:34 <elliott> @tell oerjan you can't ask a question and then leave, jerk >:(
08:51:34 <lambdabot> Consider it noted.
08:51:57 <elliott> @tell oerjan it's from http://hackage.haskell.org/packages/archive/newtype/latest/doc/html/Control-Newtype.html
08:51:57 <lambdabot> Consider it noted.
09:34:19 -!- ais523 has joined.
09:37:57 <elliott> ais523: hi
09:38:08 <elliott> [elliott@dinky hello-2.7]$ time sleep 5
09:38:08 <elliott> [five second pause]
09:38:08 <elliott> real0m0.000s
09:38:08 <elliott> user0m0.000s
09:38:08 <elliott> sys0m0.003s
09:38:18 -!- nooga has joined.
09:38:18 <ais523> elliott: haha
09:38:39 <ais523> I get real 0m5.014s
09:38:42 <elliott> I haven't got Web of Lies to work, but this is my cheap LD_PRELOAD version of the clock hack
09:38:46 <elliott> bash runs in it, which is a good start
09:38:53 <elliott> I'm about to try compiling hello to prove all the naysayers wrong
09:39:00 <elliott> without even bothering to backdate the source files!
09:39:11 <elliott> [elliott@dinky hello-2.7]$ date
09:39:11 <elliott> Thu Jan 1 01:00:00 BST 1970
09:39:11 <elliott> wait, I thought BST was over.
09:39:21 <elliott> oh wait
09:39:29 <ais523> no, it wasn't BST on the epoch either
09:39:33 <CakeProphet> elliott: wow, such a thrill-seeker.
09:39:33 <elliott> hmm
09:39:35 <CakeProphet> living life on the edge.
09:39:41 <elliott> orig_gettimeofday(NULL, tz);
09:39:41 <elliott> if (tp) {
09:39:41 <elliott> tp->tv_sec = 0;
09:39:41 <elliott> tp->tv_usec = 0;
09:39:41 <elliott> }
09:39:46 <elliott> maybe I should just fake the timezone too
09:39:52 <elliott> I guess it might have weird effects otherwise
09:39:55 <ais523> elliott: this is why I prefer to control at the syscall level, not the library level
09:40:04 <elliott> ais523: yes, me too -- got a portable way? :P
09:40:13 <ais523> there isn't one
09:40:27 <CakeProphet> Portable Syscall Interface
09:40:30 <ais523> I suppose you could, umm, scrape the source of strace, which is reasonably portable by special-casing a bunch of OSes and archs
09:40:33 <CakeProphet> Connector Protocol
09:40:37 <ais523> but syscalls are inherently nonportable, aren't they?
09:40:43 <elliott> ais523: wow, gnu hello is best practices? its ./configure checks whether about a hundred libc functions are macros are not
09:40:45 <elliott> :-(
09:40:58 <elliott> checking whether build environment is sane... yes
09:40:59 <elliott> oh, you're _very_ mistaken,a utoconf
09:41:02 <elliott> s/a / a/
09:41:12 <elliott> make[2]: Warning: File `Makefile' has modification time 1320399594 s in the future
09:41:15 <ais523> elliott: it only runs a few specific sanity checks
09:41:20 <elliott> make[2]: warning: Clock skew detected. Your build may be incomplete.
09:41:36 <elliott> [elliott@dinky hello-2.7]$ src/hello
09:41:36 <elliott> Hello, world!
09:41:41 <elliott> tl;dr it works perfectly fine, it just warns a lot
09:42:04 <ais523> elliott: can you shout at this spambot for me? it's recommending the use of Lucinda Handwriting or Papyrus over Arial or Calibri for Christmas invitations
09:42:14 <ais523> it has no taste in fonts :(
09:42:18 <elliott> ais523: lucinda handwriting is a beautiful font, marred only by the fact that it doesn't exist
09:42:35 <ais523> elliott: I didn't check to see if the typo was in the original, but probably
09:42:37 <elliott> also, I would _probably_ use papyrus before arial. but really, everyone loves papyrus
09:42:37 <olsner> try the -m flag to tar when you unpack the sources - I think that will avoid weird timestamps
09:42:38 <CakeProphet> Lucida Console is the best font.
09:42:47 <elliott> olsner: no, the problem is that the timestamps are in 2011
09:42:49 <elliott> olsner: it's 1970
09:42:56 <elliott> this tarball comes from the future, is the problem
09:43:16 <olsner> elliott: by weird I mean timestamps from 2011
09:43:22 <elliott> lol
09:43:30 <elliott> -m, --touch
09:43:30 <elliott> don't extract file modified time
09:43:30 <olsner> -m should set them all to the current time
09:43:35 <elliott> right, I can do it from inside the jail
09:43:36 <elliott> good idea
09:43:45 <elliott> tar: hello-2.7/gnulib/m4/locale-ja.m4: time stamp 2011-03-22 17:56:57 is 1300816617 s in the future
09:43:46 <elliott> I GET IT
09:43:52 <elliott> WHY DOES ALL GNU SOFTWARE HAVE TO TELL ME I'M IN THE PAST JEEZ
09:43:54 <fizzie> I see you are partying like it's 1970.
09:43:57 <ais523> --HANG hang for SECS seconds (default 3600)
09:44:20 <elliott> ais523: what's that from?
09:44:22 <ais523> elliott: because systems are not designed to run with a clock jammed at the epoch
09:44:24 <ais523> elliott: man tar
09:44:36 <elliott> not mine
09:44:37 <ais523> I'm trying to work out what the option's for, also why it's in allcaps
09:44:45 <elliott> I suspect it's a typo for --hang SECS
09:44:50 <elliott> <ais523> elliott: because systems are not designed to run with a clock jammed at the epoch
09:44:54 <ais523> err, that would make more sense, yes
09:44:55 <elliott> I'm sure there's /some/ legacy system...
09:45:02 <ais523> elliott: it probably has the wrong epoch
09:45:14 <CakeProphet> elliott: http://vimeo.com/11414505
09:45:31 <elliott> why are you linking me this
09:45:52 <CakeProphet> elliott: it's always relevant.
09:46:04 <elliott> wow, thinks break more if the epoch is right
09:46:06 <elliott> erm
09:46:07 <elliott> the timestamp
09:46:21 * elliott configures it, then backdates them
09:46:38 <elliott> ais523: btw, = ERROR: stat proc/pid/fd: Permission denied
09:46:47 <elliott> ais523: I've no idea why, I've looked over the code repeatedly
09:46:56 <elliott> ais523: my only changes were to change your personal bind mounts into ones for my ~
09:47:28 <ais523> oh no, not that error again
09:47:33 <elliott> hahaha
09:47:41 <ais523> elliott: it's something to do with security on root-executed programs
09:47:47 <elliott> oh, selinux stuff?
09:48:01 <elliott> note: it was "sudo ./weboflies true"; true is 64-bit, but I tried it on Web of Lies itself and it still failed, so I suspect it's a generic problem
09:48:03 <ais523> sometimes just the standard protections on suid stuff
09:48:13 <elliott> weboflies isn't suid :)
09:48:19 <ais523> yep, but it drops permissions
09:48:19 <elliott> make[2]: gnulib/m4/wchar_h.m4: Timestamp out of range; substituting 1970-01-01 01:00:00
09:48:19 <elliott> make, you disappoint me
09:48:28 <elliott> ais523: so, how do you fix it?
09:48:32 <olsner> webo flies
09:48:58 <olsner> flies that spread deadly timestamp-related diseases
09:48:59 <elliott> olsner: gregor already topped it with "web o' flies"
09:49:02 -!- GreaseMonkey has quit (Quit: The Other Game).
09:49:12 <olsner> web o' flies is better yes
09:49:25 <ais523> elliott: hey, that was an obvious thing to do
09:49:32 <elliott> yes, but did you do it?
09:49:39 <ais523> yes
09:49:40 <ais523> mentally
09:49:46 <ais523> before the name was public
09:49:52 <elliott> gregor doesn't have that problem; he doesn't have a brain
09:50:15 <elliott> ais523: btw, you use clone(). wouldn't unshare() do?
09:50:20 <ais523> elliott: as for that bug, removing the call to drop permissions from the main process would fix it, but I don't feel comfortable running a bunch of stuff as root
09:50:29 <ais523> elliott: I suppose so; this was invented before unshare became commonly available
09:50:38 <elliott> ais523: wait, how old is this program?
09:50:38 <ais523> and I don't see why you wouldn't use clone rather than unshare
09:50:46 <ais523> not that old, but I have an old OS
09:51:06 <ais523> that only very slightly postdates unshare
09:51:16 <ais523> so it's still it bit experimental in the kernel source I was reading
09:51:34 <elliott> so, umm, how can I get the flies working without losing the permissions drop? modifying crap in /proc?
09:52:31 <ais523> possibly, one of the settings there must be different
09:52:44 <ais523> either that, or let me try to figure out what the offending line is and why it's failing
09:52:51 <elliott> ais523: I know what the line is
09:52:53 <elliott> I tracked it down myself
09:53:11 <elliott> struct stat fdstats;
09:53:11 <elliott> char procname[] = "/proc/65536/fd/4294967295";
09:53:11 <elliott> sprintf(procname, "/proc/%d/fd/%d", ptpid,
09:53:11 <elliott> (int32_t)ar0.ebx); /* cast for safety */
09:53:11 <elliott> if (stat(procname, &fdstats) < 0) {
09:53:24 <ais523> right
09:53:25 <elliott> ais523: and the error means that a directory prefix of the statted filename isn't accessible, permissions-wise
09:53:34 <elliott> ais523: aha, let me guess why
09:53:36 <ais523> yep, it must be /proc/pid/fd
09:53:40 <elliott> ais523: the process id involved is owned by root
09:53:42 <elliott> because web of lies runs as root
09:53:46 <elliott> (to start with)
09:53:51 <ais523> elliott: actually, I think it's because it was previously owned by root
09:53:54 <ais523> but yes, much the right idea
09:53:55 <elliott> so an unprivileged user can't look at it
09:53:56 <elliott> right
09:54:04 <elliott> I take it you can't drop privileges before cloning?
09:54:06 <ais523> but that happened to me too, and I thought I fixed it
09:54:15 <ais523> not before the first clone call, which creates fakeinit
09:54:25 <ais523> because root perms are needed to do things like unshare mount namespaces
09:55:00 <ais523> however, it drops perms before forking the actual program under test
09:55:19 <ais523> elliott: idea: does your system have a user numbered 65534?
09:55:27 <ais523> it could be that the user it drops permissions /to/ doesn't exist
09:55:40 <elliott> root:x:0:0:root:/root:/bin/bash
09:55:40 <elliott> bin:x:1:1:bin:/bin:/bin/false
09:55:40 <elliott> daemon:x:2:2:daemon:/sbin:/bin/false
09:55:40 <elliott> mail:x:8:12:mail:/var/spool/mail:/bin/false
09:55:40 <elliott> ftp:x:14:11:ftp:/srv/ftp:/bin/false
09:55:40 <elliott> http:x:33:33:http:/srv/http:/bin/false
09:55:42 <elliott> nobody:x:99:99:nobody:/:/bin/false
09:55:44 <elliott> dbus:x:81:81:System message bus:/:/bin/false
09:55:46 <elliott> elliott:x:1000:100:Elliott Hird,,,:/home/elliott:/bin/bash
09:55:48 <elliott> avahi:x:84:84:avahi:/:/bin/false
09:55:50 <elliott> usbmux:x:140:140:usbmux user:/:/sbin/nologin
09:55:52 <elliott> ais523: no, but your code comments implied to me that it shouldn't matter
09:55:54 <elliott> have I been lied to :-(
09:56:00 <ais523> I don't think it should
09:56:00 <elliott> (that's the entire contents of my /etc/apsswd, btw; surprisingly short)
09:56:04 <ais523> but I'm not entirely certain
09:56:19 <ais523> try setting WOLUSER_UID and WOLUSER_GID both to 99
09:56:19 <elliott> ais523: want me to create one?
09:56:21 <elliott> oh, ok
09:56:21 <ais523> and see if it works then
09:56:34 <ais523> if not, it's probably not that
09:56:59 <ais523> (/etc/passwd inside the chroot makes that user exist; but ofc the system as a whole wouldn't care about that version of /etc/passwd, I just don't get why it would care at all)
09:57:00 <elliott> doesn't fix the problem
09:57:12 <ais523> I'm not sure whether to say "good" or "bad"
09:57:18 <elliott> that was my reaction, too
09:57:21 <ais523> I want to find the problem, but I'm glad that doesn't fix it
09:57:30 <elliott> heh
09:57:39 <elliott> ais523: I could run weboflies under gd... what am I saying, of course I can't
09:57:49 <ais523> you can try, it's hilarious
09:57:55 <ais523> but no, probably a bad idea
09:58:18 <elliott> [elliott@dinky weboflies]$ sudo gdb ./weboflies
09:58:18 <elliott> sudo: gdb: command not found
09:58:28 <elliott> new machines always surprise me for at least two months after I set them up
09:58:32 <elliott> on a regular basis
09:58:37 <elliott> like, how have I not realised I don't have gdb before now?
09:58:45 <ais523> can you run it as a regular user?
09:58:57 <elliott> nope, I just haven't installed gdb yet!
09:59:17 <ais523> the second clone is definitely after dropping perms
09:59:47 <ais523> it might be worth looking at the perms in question yourself; stick a getchar() or something in just after the error message so that the processes stick around long enough to look at them
10:00:05 <elliott> = ERROR: ptrace trace self: Operation not permitted
10:00:05 <elliott> --gdb
10:00:11 <elliott> then it dumps me at the web of lies console
10:00:14 <elliott> first time i've seen it, actually :)
10:00:17 <ais523> that seems about right
10:00:33 <elliott> <ais523> it might be worth looking at the perms in question yourself; stick a getchar() or something in just after the error message so that the processes stick around long enough to look at them
10:00:34 <elliott> OK
10:00:40 <elliott> ais523: can I printf at that point in the code?
10:00:44 <elliott> it would be useful to see the pid
10:00:45 <ais523> should be fine
10:00:50 <elliott> I suppose I could just ps, but
10:00:54 <ais523> may be better to fprintf to stderr
10:00:56 <elliott> ais523: aaugh, I can't escape the gdb :)
10:01:06 <ais523> elliott: try double-tapping control-C
10:01:14 <ais523> and if that fails, try control-\
10:02:20 -!- elliott has quit (Read error: Connection reset by peer).
10:02:20 -!- elliott_ has joined.
10:02:23 <elliott_> umm
10:02:29 <elliott_> i killed the gdb'd weboflies
10:02:38 <elliott_> and got a kernel panic for trying to kill init...
10:02:39 <ais523> oh no, you didn't use sigkill, did you?
10:02:51 <elliott_> no, I literally just "sudo killall gdb"
10:02:59 <ais523> wow
10:03:00 <elliott_> how... how is that even possible? it's not even the /real/ pid 1!
10:03:25 <ais523> this is weboflies!
10:03:29 <elliott_> :D
10:03:47 <elliott_> ok, so...
10:03:49 <elliott_> where were we? :P
10:03:51 <ais523> (note that a kill -9 on weboflies itself is nearly always a bad idea)
10:04:07 <ais523> elliott_: adding a printf and getchar statement to the /proc/pid/fd check in icotl
10:04:10 <ais523> *ioctl
10:04:14 <elliott_> ah, yes
10:05:30 <elliott_> [elliott@dinky weboflies]$ sudo ./weboflies true
10:05:31 <elliott_> Password:
10:05:31 <elliott_> = ERROR: stat proc/pid/fd: Permission denied
10:05:31 <elliott_> /proc/783/fd/4
10:05:34 <elliott_> 780 pts/0 00:00:00 sudo
10:05:34 <elliott_> 781 pts/0 00:00:00 weboflies
10:05:34 <elliott_> 782 pts/1 00:00:00 weboflies
10:05:35 <elliott_> 783 pts/1 00:00:00 weboflies
10:05:46 <elliott_> [elliott@dinky weboflies]$ ls -l /proc | grep 783
10:05:46 <elliott_> dr-xr-xr-x 8 65534 65534 0 Nov 4 10:04 783
10:06:04 <elliott_> [elliott@dinky weboflies]$ ls -l /proc/783/fd
10:06:04 <elliott_> ls: cannot open directory /proc/783/fd: Permission denied
10:06:09 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/783/fd
10:06:09 <elliott_> dr-x------ 2 root root 0 Nov 4 10:04 /proc/783/fd
10:06:18 <elliott_> ais523: so, the permissions on the process itself change properly, but not the fds
10:06:21 <fizzie> I keep grouping that as "webo-flies".
10:06:23 <elliott_> is this some effective/real uid problem?
10:06:30 <elliott_> fizzie: Yes, like olsner.
10:06:40 <ais523> elliott_: all four UIDs are set to the same value, so I don't think so
10:06:57 <ais523> I'm using setresuid
10:06:57 <elliott_> ais523: well, the order could matter, for changing the permissions on /proc
10:07:04 <ais523> why don't you check the ownership on 781 and 783?
10:07:20 <ais523> the order is "simultaneously", because I'm using setresuid
10:07:33 <ais523> which is designed for avoiding race conditions in changing UIDs simultaneously
10:07:35 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/781{,/fd}
10:07:35 <elliott_> dr-xr-xr-x 8 65534 65534 0 Nov 4 10:04 /proc/781
10:07:35 <elliott_> dr-x------ 2 root root 0 Nov 4 10:04 /proc/781/fd
10:07:35 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/782{,/fd}
10:07:35 <elliott_> dr-xr-xr-x 8 65534 65534 0 Nov 4 10:04 /proc/782
10:07:35 <elliott_> dr-x------ 2 root root 0 Nov 4 10:04 /proc/782/fd
10:08:04 <ais523> perhaps your kernel just doesn't like looking at even your own fds?
10:08:14 <ais523> check an ordinary elliott-owned process, like your shell or something
10:08:19 <elliott_> [elliott@dinky weboflies]$ ls /proc/self/fd
10:08:19 <elliott_> 0 1 2 3
10:08:27 <elliott_> [elliott@dinky weboflies]$ ls -ld /proc/self{,/fd}
10:08:27 <elliott_> lrwxrwxrwx 1 root root 64 Nov 4 10:00 /proc/self -> 834
10:08:27 <elliott_> dr-x------ 2 elliott users 0 Nov 4 10:07 /proc/self/fd
10:08:32 <elliott_> wow, how is that the other way around?
10:08:38 <elliott_> oh, /proc/self is a symlnik
10:08:39 <elliott_> symlink
10:08:42 <ais523> yep
10:08:48 <ais523> and symlinks don't have useful perms
10:08:50 <elliott_> [elliott@dinky weboflies]$ ls -ldH /proc/self{,/fd}
10:08:51 <elliott_> dr-xr-xr-x 8 elliott users 0 Nov 4 10:08 /proc/self
10:08:51 <elliott_> dr-x------ 2 elliott users 0 Nov 4 10:08 /proc/self/fd
10:08:56 <elliott_> ais523: I was thinking of the owner
10:08:57 * Sgeo|web is undecided whether to remove Calibre from his Windows system out of .. protest?
10:09:07 <Sgeo|web> Well, that wouldn't actually do anything other than inconvience me
10:09:12 <elliott_> Sgeo|web: how about out of: "I don't want to get my system compromised"
10:09:24 <elliott_> s/that wouldn't/I'm foolish enough to believe that wouldn't/
10:09:28 <ais523> elliott_: how is a suid executable a security hole on Windows?
10:09:37 <elliott_> ais523: you trust that guy to write /any/ software?
10:09:44 <ais523> aha, I see what you mean
10:09:50 <elliott_> ais523: I'm sure Sgeo|web's user has quite sufficient permissions to destroy lots of files he cares about
10:10:27 <ais523> the calibre bugs struck me as being from someone who didn't realise the possibility of malicious input
10:10:39 <ais523> which is typically reasonably safe on a single-user system that doesn't expose network access
10:11:04 <Sgeo|web> This person is assuming single-user
10:11:06 <elliott_> I think he just thinks that it's not serious, because he can't conceptualise a root hole as serious on a desktop machine
10:11:26 <elliott_> so he thinks people are just bullying him for no reason, and won't remove features because of it
10:11:31 <ais523> elliott_: well of course it can be (in case someone gets in from outside)
10:11:35 <elliott_> doesn't make it any less of a worrying attitude, ofc
10:11:36 <ais523> but it's not as serious as on a multi-user system
10:12:33 <elliott_> ais523: wow, chmod works in /proc
10:12:39 <elliott_> erm
10:12:40 <elliott_> chown
10:12:45 <elliott_> unfortunately, it just either fails because of not having permissions, or silently fails
10:12:55 <elliott_> I was thinking weboflies could chown its /proc/blah/fd before dropping perms :)
10:12:56 <Sgeo|web> Did you read the most recent things on the bug report? Someone stated that the exploit still works, and Kovid seems to be assuming it doesn't work just because his directory structure is different or something
10:13:07 <ais523> quite a lot of weird things end up silently failing on /proc, due to not being implemented for procfs
10:13:12 <CakeProphet> elliott_: try sudo -u god
10:13:14 <elliott_> Sgeo|web: I don't really care what he thinks, because he's been wrong about fifty times so far
10:13:20 <CakeProphet> elliott_: oh wait that's not actually a thing? shit...
10:13:23 <CakeProphet> that explains a lot.
10:13:29 <Sgeo|web> elliott_: I'm saying this is probably the 51st
10:14:04 <elliott_> https://bugzilla.redhat.com/show_bug.cgi?id=651183 ;; wow, not even the FUSE people can write a safe suid binary
10:14:54 <fizzie> The only safe suid binary is the unlinked suid binary.
10:14:54 -!- Vorpal has joined.
10:15:09 <fizzie> (Old saying of the jungle.)
10:15:17 <ais523> "I'm glad you've restricted /dev to block devices only. Standby and I will update the exploit for this latest fix of yours."
10:15:17 <CakeProphet> s/the unliked/a dead/
10:15:21 <elliott_> fizzie: Don't say that -- I gotta write one. :/
10:15:37 <ais523> what would happen if you did chmod u+s true?
10:15:39 <elliott_> Thankfully it should just set UID + chroot.
10:15:55 <elliott_> ais523: exploits would become ten times more fun
10:16:03 <elliott_> hmm, distros should do that, it would be entertaining
10:16:10 <elliott_> just setuid a bunch of really innocuous binaries
10:16:14 <Sgeo|web> Oh, I misunderstood what was said, n/m my comment about Kovid's thoughts
10:16:19 <ais523> I'd be surprised if true had exploits
10:16:19 <elliott_> can you find a hole in gnu echo? I wouldn't be surprised
10:16:21 <ais523> even the GNU version
10:16:29 <elliott_> ais523: it uses their internationalisation stuff
10:16:34 <ais523> oh right
10:16:35 <elliott_> that could amount to quite a lot of code
10:16:36 <ais523> wait, what?
10:16:38 <CakeProphet> `run file `which true`
10:16:40 <elliott_> ais523: for the help text, I think
10:16:41 <HackEgo> ​/bin/true: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
10:16:48 <ais523> elliott_: "true --help" doesn't print anything
10:16:56 <ais523> which is in keeping with the way true generally behaves
10:16:57 <elliott_> ais523: that's not gnu true
10:17:00 <fizzie> $ /bin/true --help
10:17:00 <fizzie> Usage: /bin/true [ignored command line arguments]
10:17:00 <fizzie> or: /bin/true OPTION
10:17:00 <fizzie> Exit with a status code indicating success.
10:17:02 <elliott_> that's bash true
10:17:03 <Sgeo|web> `run true --help
10:17:05 <HackEgo> No output.
10:17:06 <elliott_> [elliott@dinky weboflies]$ /bin/true --help
10:17:06 <elliott_> Usage: /bin/true [ignored command line arguments]
10:17:06 <elliott_> or: /bin/true OPTION
10:17:06 <elliott_> Exit with a status code indicating success.
10:17:06 <elliott_> --help display this help and exit
10:17:06 <elliott_> --version output version information and exit
10:17:07 <ais523> right
10:17:08 <elliott_> NOTE: your shell may have its own version of true, which usually supersedes
10:17:08 <Sgeo|web> Oh
10:17:10 <elliott_> the version described here. Please refer to your shell's documentation
10:17:12 <elliott_> for details about the options it supports.
10:17:14 <elliott_> Report true bugs to bug-coreutils@gnu.org
10:17:16 <elliott_> GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
10:17:18 <Vorpal> <ais523> what would happen if you did chmod u+s true? <-- well, true is not written to run as suid, so there might be security holes. My guess however is that for true it wouldn't actually do much. Not a lot you can do with that tool
10:17:18 <elliott_> General help using GNU software: <http://www.gnu.org/gethelp/>
10:17:20 <elliott_> For complete documentation, run: info coreutils 'true invocation'
10:17:22 <elliott_> I had to flood that because I couldn't believe how long it was
10:17:25 <ais523> yep, just found it
10:17:40 <fizzie> elliott_: "long", it doesn't even include a GPL copy.
10:17:44 <CakeProphet> true... bugs?
10:17:59 <CakeProphet> "true isn't being true!" "okay... now it is"
10:18:01 <elliott_> http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true.c
10:18:02 <Sgeo|web> Hasn't there been updates to true or something?
10:18:02 <ais523> heh, the info page mentions that doing something like "./true --version >&-" causes it to return false
10:18:12 <elliott_> setlocale (LC_ALL, "");
10:18:12 <elliott_> bindtextdomain (PACKAGE, LOCALEDIR);
10:18:12 <elliott_> textdomain (PACKAGE);
10:18:17 <elliott_> juicy exploit vectors
10:18:21 <elliott_> version_etc (stdout, PROGRAM_NAME, PACKAGE_NAME, Version, AUTHORS,
10:18:21 <elliott_> (char *) NULL);
10:18:21 <elliott_> this too
10:18:58 <elliott_> ais523: any ideas wrt weboflies?
10:19:17 <Vorpal> ugh. true should literally be int main(void) { return 0; }
10:19:20 <ais523> not really; on my system I can't read fakeinits fd's, but I can read those of the program under test
10:19:26 <Vorpal> well maybe EXIT_SUCCESS
10:19:28 <Vorpal> but whatever
10:19:31 <elliott_> "In this instance, the names of the object files would be chosen by automake; they would be false-true.o and true-true.o." --automake manual
10:19:36 <fizzie> Vorpal: They use the same code to generate both true and false.
10:19:46 <Vorpal> fizzie, heh
10:19:58 <fizzie> #if EXIT_STATUS == EXIT_SUCCESS
10:19:58 <fizzie> # define PROGRAM_NAME "true"
10:19:58 <fizzie> #else
10:19:58 <fizzie> # define PROGRAM_NAME "false"
10:19:58 <fizzie> #endif
10:20:09 <ais523> elliott_: one of C-INTERCAL's temporary files is called oil-oil.c for this reason
10:20:13 <Vorpal> oh well
10:20:29 <fizzie> (EXIT_STATUS defaults to EXIT_SUCCESS; false.c just #defines that and #include "true.c".)
10:20:48 <Sgeo|web> Huh, what's with true-false.o and oil-oil.c?
10:21:03 <ais523> Copyright (C) 1999-2003, 2005, 2007-2011 Free Software Foundation, Inc.
10:21:12 <Vorpal> huh
10:21:16 <ais523> Sgeo|web: to allow for multiple files being generated from the same source file
10:21:54 <CakeProphet> ais523: 2004 and 2006 would have been prime years to steal rights to that code, apparently.
10:22:11 <ais523> oh right, .Po means dependencies, .po means internationalisation code
10:22:24 <ais523> CakeProphet: those are years in which is wasn't changed, I guess
10:22:30 <ais523> I'm more worried about all the years in which it was
10:22:34 <Vorpal> yeah
10:22:36 <Vorpal> scares me too
10:24:46 <elliott_> ais523: what if I... disabled file permissions checks?
10:24:55 <CakeProphet> > [1..3, 5, 7..11]
10:24:56 <lambdabot> <no location info>: parse error on input `,'
10:24:56 <ais523> you can do that?
10:25:03 <CakeProphet> ^^ that should be a thing
10:25:21 <ais523> !perl print (1..3, 5, 7..11)
10:25:33 <Vorpal> slow
10:25:34 <CakeProphet> egobot is apparently perlless for some reason.
10:25:37 <CakeProphet> try `runperl
10:25:39 <ais523> !help
10:25:40 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
10:25:40 <Sgeo|web> https://bugs.launchpad.net/calibre/+bug/885027/comments/33 is this a joke or is a person who knows how to compile C code really this stupid?
10:25:44 <CakeProphet> which elliott totally forgot to delete (shhhh don't tell him)
10:25:47 <ais523> !help languages
10:25:48 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
10:25:56 <CakeProphet> `runperl print 1
10:25:58 <HackEgo> 1
10:25:58 <ais523> heh, why is perl in the eso list?
10:26:06 <ais523> `runperl print (1..3, 5, 7..11)
10:26:08 <HackEgo> 12357891011
10:26:30 <Vorpal> ais523, obviously a reference to the Perl article on the wiki
10:26:32 <Sgeo|web> > concat [enumFromTo 1 3, [5], enumFromTo 7 11]
10:26:34 <lambdabot> [1,2,3,5,7,8,9,10,11]
10:26:35 <fizzie> ais523: In 2009 they made it only call the local stuff when argc == 2; in 2008 they switched VERSION to Version (changed ~every app) and marked the description strings with N_ for translation; in 2007 they used a new emit_bug_reporting_address () helper instead of doing it manually, and changed GNU_PACKAGE to PACKAGE_NAME; in 2003 they changed the format of the AUTHORS macro.
10:26:43 <CakeProphet> Sgeo|web: gross
10:26:56 <Sgeo|web> CakeProphet: I'm not an elegant Haskell writer
10:26:57 <fizzie> ais523: So it's mostly changes in the boilerplate that touch every app in there.
10:27:06 <fizzie> s/local/locale/
10:27:09 <ais523> that would make sense
10:27:34 <Sgeo|web> > concat [[1..3], [5], [7..11]]
10:27:35 <Vorpal> :t enumFromTo
10:27:35 <lambdabot> [1,2,3,5,7,8,9,10,11]
10:27:36 <lambdabot> forall a. (Enum a) => a -> a -> [a]
10:27:40 <Vorpal> ah
10:27:52 <elliott_> fizzie: ais523: in 2003, they fixed a minor bug in which the value "true" was expected to return was mistakenly calculated as 4
10:28:03 <ais523> "minor" bug?
10:28:09 <ais523> returning true is the entire point of true
10:28:12 <ais523> and 4 is a false value
10:28:17 <elliott_> ais523: Well, it's only four off.
10:28:19 <ais523> in UNIX return codes
10:28:23 <Sgeo|web> elliott_: Linky?
10:28:41 <elliott_> Sgeo|web: is this a joke or is a person who knows how to compile C code really this stupid?
10:28:46 <Vorpal> elliott_, how did that bug ever slip past them? After all it wouldn't actually have worked at all
10:28:55 <elliott_> >_<
10:29:19 <ais523> elliott_: I don't know, it hits the law of trolling and incompetence being indistinguishable past a certain point
10:29:29 * Sgeo|web is now under the impression that elliott_ was joking
10:29:32 <elliott_> ais523: the designers of true clearly followed the famous maxim to the highest degree: "A good value for k would be around 2, e.g., k = 1.9."
10:29:57 <ais523> does this maxim work regardless of what k means?
10:30:35 <elliott_> ais523: well, it didn't make any sense in context either, so I have to assume so
10:30:56 <elliott_> AFAICT, they needed to add about four words to the paper :)
10:31:10 <elliott_> I suppose "would be around 2, e.g., k = 2." was deemed too obvious
10:31:50 <Vorpal> elliott_, which paper is that from?
10:31:56 <elliott_> one of the Nix ones
10:31:59 <Vorpal> ah
10:32:34 <ais523> elliott_: hmm, the top proggit comment on calibre is pretty interesting, it's about how the calibre dev doesn't seem to understand that he can depend on things that aren't installed in a distro by default
10:32:42 <ais523> because the whole point of a distro is resolving dependencies
10:32:53 <elliott_> ais523: I think that's stupid; it's fairly obvious what he meant
10:32:58 <elliott_> "I don't want to depend on /more/ things"
10:33:08 <elliott_> "installed by default on Gentoo" is being used to mean roughly "once you install a desktop"
10:33:13 <elliott_> in which case things like gtk will be there
10:33:14 <CakeProphet> XMLfuck would simply be an implementation of brainfuck using XML, allowing simple universal transport of brainfuck programs, without the need for complex encodings, as well as allowing it to be processed with a single XSLT to pretty-print or even execute the program.
10:33:18 <CakeProphet> what
10:33:21 <elliott_> something like pmount won't be, because gentoo doesn't dot his whole "infrastructure" thing :p
10:33:33 <elliott_> ...it's a very stupid point, but it's not quite as stupid as "I don't understand dependencies"
10:33:42 <elliott_> ais523: especially since his whole argument is that this is from the binary tarball version
10:33:46 <elliott_> and the distro packages replace them
10:33:51 <elliott_> so dependencies /aren't/ being handled
10:33:53 <CakeProphet> doesn't brainfuck itself allow simple universal transport of brainfuck programs? :P
10:34:05 <elliott_> ais523: the fact that he ships binaries of all his /other/ dependencies doesn't seem to have occured to him
10:34:11 <ais523> elliott_: aha
10:34:19 <ais523> "binary tarball version"
10:34:24 <ais523> I think I've found TRWTF there
10:34:34 <elliott_> well, not to say it isn't in the source distro too
10:34:37 <ais523> shipping binaries should be the distro's responsibility, if it's done at all?
10:34:43 <elliott_> but he claims it only /matters/ for that because debian et al. replace it
10:34:54 <Sgeo|web> Hey, it's good for Linux From Scratch people... except they'd presumably use the source version
10:34:59 <elliott_> ais523: actually, I think he might not view pmount or whatever as a solution because he thinks people are complaining that he's not competent enough to write suid stuff
10:35:00 -!- hagb4rd has joined.
10:35:13 <elliott_> ais523: after all, he said he ~couldn't be trusted to modify pmount~ after someone suggested he use it
10:35:13 <ais523> elliott_: well, he isn't
10:35:16 <Vorpal> well, he isn't
10:35:17 <elliott_> oh, of course not
10:35:18 <Vorpal> snap
10:35:29 <elliott_> but the point is that, why would that stop people complaining, from that warped point of view?
10:35:39 <Sgeo|web> Why would he need to modify pmount?
10:35:39 <ais523> and I don't think pmount would need modification, it was being suggested for that reason
10:35:42 <elliott_> AFAICT, he thinks they're complaining that he's shipping a suid binary and is untrustworthy
10:35:55 <elliott_> that suid binary being pmount wouldn't change that fact
10:36:00 <elliott_> Sgeo|web: ais523: exactly, it wouldn't
10:36:11 <elliott_> which is why it only makes sense if you figure out what his actual motivations behind saying that are
10:36:21 <elliott_> ...unless he really just has no idea how he would replace it with pmount :)
10:36:24 <elliott_> which is perfectly possible too
10:36:34 <elliott_> have I mentioned pmount is supposedly deprecated? layers!! so many layers!!
10:36:43 <Sgeo|web> Anyone want to tell him that it's not whether he's malicious or not that's in question?
10:37:01 <elliott_> you want to talk to him? be my guest
10:37:08 <elliott_> you may find the experience unpleasant
10:38:45 <Sgeo|web> I'm not comfortable saying "You wouldn't need to modify pmount" since I don't in fact know anything whatsoever about pmount or his use case
10:38:53 <Sgeo|web> So I think I'll stay quiet
10:43:44 <elliott_> "That's a wierd mixture of types in that struct, I mean long and uint32, one of them has a fuzzy size (4 or 8 bytes, depending on the compiler), the other is clearly defined. Generally, I never ever use "long" as a type."
10:43:56 <elliott_> terrifying
10:45:19 <Vorpal> elliott_, what?
10:45:39 <ais523> long and uint32_t have different purposes, right?
10:45:48 <Vorpal> elliott_, is that from the suid fiasco thread?
10:45:51 <ais523> "long" just means "I need this to be at least 32 bits"
10:45:53 <elliott_> Vorpal: nope
10:46:01 <Vorpal> elliott_, then from where?
10:46:11 <elliott_> ais523: context: this is somebody commenting on the virtualdub blog, so the context is both "gritty" hand-optimised C, and Windows
10:46:24 <elliott_> ais523: what I am learning: I am terrified of people who actually write C
10:46:25 <Vorpal> aha
10:46:28 <elliott_> (as opposed to being good C programmers)
10:46:39 <elliott_> I mean... they avoid long... because it has a "fuzzy" size...
10:46:39 <ais523> elliott_: if you aren't constantly terrified of C, you're doing things wrong
10:46:40 <Vorpal> are there good C programmers?
10:46:42 * ais523 is doing things wrong
10:46:46 <elliott_> it's...
10:46:50 <elliott_> do they have a /concept/ of portability?
10:47:01 <elliott_> ais523: oh, I am
10:47:08 <elliott_> ais523: why do you think I avoid writing it?
10:47:10 <ais523> elliott_: I've tried to teach people C
10:47:21 <Vorpal> elliott_, the concept of portability in C is painful enough that most people ignore it when writing anything more advanced than a "hell world"
10:47:23 <Vorpal> hello*
10:47:26 <elliott_> hell world
10:47:30 <Vorpal> elliott_, exactly
10:47:43 <elliott_> mcmap runs on, like, at least three platforms.
10:47:46 <elliott_> I bet it even runs on IRIX>
10:47:48 <elliott_> or HP-UX!
10:48:03 <Vorpal> elliott_, sunos with NEWS?
10:48:08 <elliott_> no.
10:48:10 <Vorpal> aww
10:48:53 <ais523> Vorpal: I typically care about portability in C
10:48:57 <ais523> except on the Secret Project
10:49:04 <ais523> there's even a comment on the #define _GNU_SOURCE
10:49:15 <ais523> which shows clearly that I was thinking "hell, this is unportable enough anyway, may as well go all the way"
10:49:23 <Vorpal> elliott_, classical MacOS? NeXTSTEP?
10:49:27 <elliott_> http://www.reddit.com/r/programming/comments/lxfxb/use_haskell_instead_of_c_or_fortran_for_high/ <-- challenge: find a good comment here
10:49:40 <elliott_> generalised challenge: find a good comment on anything (a) to do with haskell, (b) in /r/programming
10:49:40 <CakeProphet> challenge accepted
10:49:41 <Vorpal> ais523, portability to other POSIX or to all C platforms
10:50:23 <Vorpal> I mean, it isn't really painful to be portable to other POSIX.
10:50:47 <elliott_> it's easy to be portable to posix + windows
10:51:08 <fizzie> ais523: But is "long" closer to "int_least32_t" or "int_fast32_t"? I would guess the latter, since the former is explicitly defined so that there can be no smaller types at least 32 bits wide, while the latter is just very vaguely "fast".
10:51:10 <ais523> Vorpal: normally I decide what level of portability I want based on what I'm doing
10:51:12 <Vorpal> elliott_, as long as you use a toolkit for your GUI needs that support both yes
10:51:19 <elliott_> yeah every program has a gui
10:51:30 <Vorpal> elliott_, well if one exists obviously
10:51:37 <Vorpal> elliott_, and most programs on windows have GUIs
10:51:41 <ais523> if I'm doing something that can reasonably be written in portable C89/C99, I do
10:51:44 <Vorpal> but now throw in classical MacOS in that. Have fun.
10:51:54 <ais523> but often I'm not
10:52:29 <elliott_> ooh, I have an idea for an increasing clock that wouldn't be prone to scheduler issues
10:52:34 <CakeProphet> elliott_: found a good comment: "C is simple until you try to do anything nontrivial in it."
10:52:36 <Vorpal> oh?
10:52:36 <elliott_> why not just use thread-local storage for the counter? :)
10:53:07 <Vorpal> elliott_, probably will work if make split the job between threads in a deterministic way I guess?
10:53:16 <Vorpal> jobs*
10:53:24 <elliott_> who cares if it doesn't? i doubt it checks for anything other than clock going backwards
10:53:37 <elliott_> pretty sure -j uses fork() btw
10:53:43 <Vorpal> hm okay
10:53:44 <Sgeo|web> " imperative programs correspond to certain forms of adversarial games."
10:53:53 * Sgeo|web is curious about that
10:55:05 <ais523> Sgeo|web: oh dear
10:55:16 <ais523> I hate that terminology, and think it's rather misleading
10:55:35 <ais523> here, "adversarial" means "has more than one player", not "players are trying to prevent each other winning"
10:55:36 <CakeProphet> elliott_: this might be a good comment: http://www.reddit.com/r/programming/comments/lxfxb/use_haskell_instead_of_c_or_fortran_for_high/c2wzf5b
10:56:30 <elliott_> CakeProphet: that's a totally offtopic flamewar :p
10:56:51 <CakeProphet> elliott_: YOUR CRITERIA SAID TO FIND A GOOD TOPIC THERE
10:56:58 <CakeProphet> CHALLENGE ACCEPTED AND WON.
10:57:05 <Sgeo|web> http://www.reddit.com/r/programming/comments/lxfxb/use_haskell_instead_of_c_or_fortran_for_high/c2wehnw is there a good response to this?
10:57:20 <elliott_> ais523: software hate of the day: gnu make has no way to turn off clock skew warnings. like, at all.
10:57:41 <CakeProphet> elliott_: they obviously anticipate someone trying to hack time.
10:57:46 <CakeProphet> +didn't
10:57:47 <elliott_> /however/, I think I can avoid it
10:58:05 <Vorpal> elliott_, that is because they serve a purpose. If there is clock skew things are likely to break
10:58:26 <elliott_> Vorpal: yeah, keep whining all you want, but I ran bash under that jail and absolutely everything works fine
10:58:36 <elliott_> configure doesn't complain at all
10:58:37 <Vorpal> elliott_, anyway I spotted an issue with the TLS solution.
10:58:40 * CakeProphet writes a command line utility in which every line of code has an attached option that conditionally turns it off.
10:58:42 <elliott_> make works fine and just prints a few stupid warnings
10:58:48 <elliott_> bash works perfectly
10:59:38 <elliott_> now to see if the fine people in #make will help me figure out how to make make work with files made before make was made
10:59:40 <Vorpal> elliott_, what if job a builds foo.c from foo.y, then another job ends up building foo.o from foo.c later on. Will foo.o always have a newer timestamp toan foo.c?
10:59:52 <Vorpal> than*
11:00:08 <elliott_> Vorpal: it will have the same timestamp. other things that can cause this: foo.o being built in the same second as foo.c.
11:00:12 <elliott_> hardly unlikely. computers are fast.
11:00:29 <CakeProphet> also supply a string argument to the option substitutes that line of code with the given code. so then when someone reports a bug I can just say, "Oh, you're just using the full capabilities of the command line options. see the man page."
11:00:30 <Vorpal> elliott_, hm I thought there were sub-second timestamps these days, oh well
11:00:40 <elliott_> Vorpal: gnu make relies on a system with sub-second timestamps?
11:00:44 <Vorpal> Access: 2011-11-03 13:45:55.172384014 +0100
11:00:44 <Vorpal> Modify: 2011-11-03 13:45:47.960263808 +0100
11:00:44 <Vorpal> Change: 2011-11-03 13:45:47.964263870 +0100
11:00:44 <CakeProphet> +not
11:00:46 <Vorpal> elliott_, nope
11:00:53 <CakeProphet> my brain hurts for some reason.
11:01:00 -!- ais523 has quit (Remote host closed the connection).
11:01:10 <elliott_> /* FAT filesystems round time to the nearest even second!
11:01:11 <elliott_> Allow for any file (NTFS or FAT) to perhaps suffer from this
11:01:11 <elliott_> brain damage. */
11:01:18 <Vorpal> heh
11:01:35 <elliott_> file->low_resolution_time = 1;
11:01:35 <elliott_> OH COME ON, just assume everything is low-resolution
11:01:42 <elliott_> hmm
11:01:44 <elliott_> what if I used -B?
11:01:54 <elliott_> I don't need any update logic to be done
11:02:13 <Deewiant> That's 2-second resolution, which seems unusually low
11:02:26 <Vorpal> elliott_, I remember that causing an infinite loop with that once
11:02:49 <elliott_> Deewiant: that's fat for you
11:02:56 <Vorpal> elliott_, anyway if same-second is okay then unpacking source @0 and building @1 should work okay, no?
11:03:05 <Deewiant> elliott_: I meant that assuming that in all cases might not be entirely sane
11:03:11 <elliott_> Vorpal: yes, but 1 is an ugly timestamp
11:03:18 <elliott_> Deewiant: Yeah but it would help here :-(
11:03:23 <Vorpal> elliott_, *shrug*
11:03:32 <elliott_> Vorpal: and make sets timestamps <1970 to the epoch
11:03:36 <elliott_> which sucks
11:03:40 <elliott_> maybe i'll patch make
11:03:43 <Vorpal> *shr*
11:03:44 <Vorpal> shrug*
11:04:03 <CakeProphet> `log Feather
11:04:19 <CakeProphet> `log Feather
11:04:29 <CakeProphet> O(n) is slowwwwwww
11:04:32 <HackEgo> 2008-09-07.txt:20:36:00: <AnMaster> I mean, Feather makes me go "wow"
11:04:37 <HackEgo> 2010-12-13.txt:19:53:53: <elliott> ais523: Feather revision control system: every change is applied retroactively, so there are no changes to track. Problem solved!
11:04:45 <Vorpal> elliott_, I don't see the issue with @1 not being all zeros. Only someone with some weird sort of OCD or something would have an issue with that...
11:04:57 <CakeProphet> `log Feather
11:05:02 <HackEgo> 2011-07-30.txt:07:07:32: <ais523> Feather and @ are fundamentally incompatible, as far as I can tell
11:05:05 <CakeProphet> `log Feather
11:05:07 <Vorpal> CakeProphet, doesn't it work in /msg?
11:05:10 <HackEgo> 2009-10-07.txt:15:50:42: <ais523> hmm... Feather's the only language I know in which you have to worry about portability within a program
11:05:12 <Vorpal> because this spam is annoying
11:05:58 <fizzie> Deewiant: Seems that they wanted to squeeze the timestamp into two bytes, and sadly 86400 > 65536.
11:05:58 <elliott_> it's four lines, hardly spam
11:06:08 <CakeProphet> 8!
11:06:10 <elliott_> Vorpal: the epoch is a far nicer timestamp than @1
11:06:15 <elliott_> changing it later will require a rebuild of all packagse
11:06:19 <elliott_> patching make is the nicset solution
11:06:24 <Vorpal> elliott_, ... OCD
11:06:36 <elliott_> Vorpal: paranoid schizophrenia
11:06:41 <Vorpal> hah
11:06:59 <elliott_> sorry, this is the "assign mental illnesses based on how people waste time on their computers" game, right?
11:07:18 <Vorpal> nope
11:07:27 <Deewiant> fizzie: They could have made it have 2-second granularity before noon and 1-second after
11:07:41 <Vorpal> heh
11:08:01 <fizzie> Deewiant: Indeed, that would make the most sense ever in the history of things that make sense.
11:08:28 <elliott_> if (! (s <= FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX)
11:08:28 <elliott_> && product <= ts && ts <= ORDINARY_MTIME_MAX))
11:08:28 <elliott_> {
11:08:28 <elliott_> char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];
11:08:28 <elliott_> ts = s <= OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX;
11:08:29 <elliott_> file_timestamp_sprintf (buf, ts);
11:08:30 <elliott_> error (NILF, _("%s: Timestamp out of range; substituting %s"),
11:08:32 <elliott_> fname ? fname : _("Current time"), buf);
11:08:34 <elliott_> }
11:08:36 <elliott_> *sigh*
11:08:38 <elliott_> fizzie: Time goes slower before lunch.
11:09:46 <elliott_> ./make.h:#define FILE_TIMESTAMP uintmax_t
11:09:49 <elliott_> oh come /on/
11:09:54 <elliott_> how hard can it be to handle 1969?
11:10:25 <Vorpal> heh
11:11:08 <elliott_> tell me not to mail the gmake lists about this as a bug
11:11:18 <elliott_> "hi, i have some files on a legacy system. ..."
11:11:31 <elliott_> I think touch(1) should require root perms
11:11:38 <Vorpal> elliott_, why
11:11:40 <elliott_> just to stop people accidentally touching a really ancient file
11:11:43 <elliott_> those bits are precious
11:11:48 <Vorpal> ...
11:11:56 <elliott_> can you imagine like
11:12:07 <elliott_> the last unmodified file from the original unix development
11:12:10 <elliott_> timestamp in the 70s
11:12:22 <elliott_> someone accidentally opens it in their editor
11:12:25 <elliott_> which saves it automatically
11:12:36 <elliott_> fuck! you just destroyed history! way to go. hope that autosave was WORTH it, jackass.
11:12:36 <Vorpal> why would the editor do that
11:12:47 <elliott_> Vorpal: why do computers do half the things they do.
11:12:55 <fizzie> MATLAB epoch (though it splits dates and times, and counts days from the epoch in the 'datenum') is 1-Jan-0000.
11:13:03 <Vorpal> elliott_, well, for the same reason as they do the other half
11:13:18 <elliott_> Vorpal: right. because someone fucked up.
11:13:29 <elliott_> fizzie: what do matlab archaeologists do
11:13:54 <Vorpal> elliott_, I was about to say "because that is what that specific pattern of electrical signals input to the device in question will cause the transistors in it to behave" but sure, your answer works too
11:14:12 <elliott_> Vorpal: yes. electricity is god's fuck-up
11:14:23 <elliott_> wait no, god's fuck-up is the whole universe.
11:14:25 <Vorpal> heh
11:14:30 <fizzie> elliott_: All the numbers are doubles, so you can count up to around -2^53 days backwards too.
11:14:36 <elliott_> that's one big fucking fuck-up.
11:14:41 <elliott_> fizzie: heh
11:14:53 <fizzie> Not sure if the conversion functions handle that, though.
11:14:58 <elliott_> fizzie: It even simulates time getting wobblier the further you get to the big bang!
11:15:04 <Vorpal> heh
11:15:04 <elliott_> See, it's a feature.
11:15:14 <Vorpal> elliott_, but why does it do that for the future too?
11:15:28 <elliott_> Vorpal: Maaan, you haven't heard about the bad news?
11:15:31 <fizzie> >> datestr(-1, 'yyyy-mm-dd')
11:15:31 <fizzie> ans =
11:15:31 <fizzie> 9999-12-30
11:15:32 <elliott_> Nobody tell him guys.
11:15:33 <elliott_> It's so sad.
11:15:34 <fizzie> "Uh."
11:15:39 <Vorpal> elliott_, heh
11:15:46 <fizzie> I suppose the 'yyyy' format doesn't quite work for that.
11:15:56 <elliott_> #define PARSE_FILE_SEQ(_s,_t,_c,_p,_f) \
11:15:56 <elliott_> (_t *)parse_file_seq ((_s),sizeof (_t),(_c),(_p),(_f))
11:15:56 <elliott_> Why, GNU, why.
11:16:12 <Deewiant> Why not
11:16:17 <Vorpal> elliott_, strange macro indeed
11:16:27 <elliott_> Deewiant: At least put the type parameter /before/ the value!
11:16:48 <Deewiant> Maybe it makes sense
11:16:53 <elliott_> Maybe YOU make sense.
11:19:08 <elliott_> Deewiant: Can Solaris make handle timestamps from 1969
11:19:21 <Deewiant> I dunno
11:19:26 <elliott_> Deewiant: If yes, I'm gonna build Kitten on top of Solaris
11:19:36 <fizzie> http://en.wikipedia.org/wiki/Epoch_%28reference_date%29#Notable_epoch_dates_in_computing <- that's a lot of epochs. (Also MATLAB is winning.)
11:19:56 <Deewiant> elliott_: Give me a one-liner that checks
11:20:21 <elliott_> Deewiant: echo 'bar: foo ; echo yay' >Makefile; touch -d @-1 foo; make bar
11:20:27 <elliott_> (May require better touch(1) than Solaris has to offer)
11:20:50 <Deewiant> touch: bad time specification
11:21:09 <fizzie> Deewiant: Does it have a "gtouch"?-)
11:21:14 <elliott_> Deewiant: touch 31-12-1969T23:59:59Z or something.
11:21:18 <elliott_> Erm
11:21:18 <elliott_> -d that
11:21:41 <Deewiant> fizzie: Nope :-P
11:21:51 <Deewiant> touch: bad time specification
11:22:00 <Deewiant> usage: touch [-acm] [-r ref_file] file...
11:22:00 <Deewiant> touch [-acm] [-t [[CC]YY]MMDDhhmm[.SS]] file...
11:22:00 <Deewiant> touch [-acm] [-d YYYY-MM-DDThh:mm:SS[.frac][Z]] file...
11:22:00 <Deewiant> touch [-acm] [-d YYYY-MM-DDThh:mm:SS[,frac][Z]] file...
11:22:00 <Deewiant> touch [-acm] [MMDDhhmm[yy]] file...
11:22:26 <elliott_> Deewiant: I'm sure you can write something in that format
11:22:26 <Deewiant> % echo 'bar: foo ; echo yay' >Makefile; touch -d 1969-12-31T23:59:59Z foo; make bar
11:22:29 <Deewiant> echo yay
11:22:32 <Deewiant> yay
11:22:38 <elliott_> No warnings? Sweet
11:22:39 <Deewiant> elliott_: Your date string was wrong-endian
11:22:45 <elliott_> Oh, right
11:23:00 <Deewiant> (I didn't notice until after I pasted the usage)
11:23:00 <elliott_> fizzie: That Cocoa epoch worries me.
11:23:10 <fizzie> Taking the time part into account too, it was nicely middle-endian.
11:24:13 <Vorpal> elliott_, fun fact: A /lot/ of stuff requires gmake to build.
11:24:22 <Vorpal> I noticed that when using freebsd
11:24:30 <elliott_> Let's all talk about how Vorpal is actually seriously taking me serious.
11:24:43 <elliott_> Yes Vorpal, I am basing Kitten on OpenSolaris because it lets me use a certain timestamp without warnings and without a clever hack.
11:24:45 <Vorpal> elliott_, no I'm not thinking you will use solaris
11:24:53 <Deewiant> What's Kitten
11:25:02 <elliott_> Deewiant: Good
11:25:02 <Vorpal> elliott_, but I did think you might end up using a bsd make or other non-gnu make
11:25:09 <elliott_> And actually likely to start existing now that I have the complete design down
11:25:12 <Deewiant> elliott_: What does it do
11:25:13 <elliott_> (It's not @)
11:25:26 <elliott_> Deewiant: It, uh... distribu...tises? What is the verb that a distribution does.
11:25:40 <elliott_> Vorpal: Nah
11:25:42 <Deewiant> Alright
11:25:46 <elliott_> Not to start with at least
11:26:03 <fizzie> Disturbs.
11:26:11 <elliott_> Deewiant: It disturbs.
11:26:41 <elliott_> Deewiant: It's based on a purely functional, source-model, transparent-binary-distribution package, configuration /and service/ manager!! Transparent multilib!! FREE PONY
11:26:43 <Deewiant> I think that'd make it a disturbance
11:27:35 <elliott_> Disturbitbutbution.
11:27:42 <elliott_> Disturbi-butt-ion.
11:27:44 <fizzie> Deewiant: Maybe it distempers instead.
11:27:58 <Deewiant> A distemperance?
11:28:13 <fizzie> "What's your favourite Linux distemp?"
11:28:14 <elliott_> Yes.
11:28:20 <elliott_> Deewiant: It's the best distemperance.
11:28:45 <CakeProphet> Windows is my favorite linux disturbi-butt-ion
11:28:47 <elliott_> Have I mentioned: Generic support for subsuming other package managers???
11:28:49 <elliott_> SO GOOD.
11:29:28 <CakeProphet> elliott_: is it successfully compatible with all existing systems while allow their software to cooperate seamlessly?
11:29:43 <elliott_> It's actually a cardboard box.
11:29:50 <elliott_> Inside is a kitten.
11:29:59 <elliott_> The kitten makes you forget there was a Linux distro, and also not care because aww, kittens.
11:31:07 <fizzie> "Kitten - the robot's choice."
11:31:07 <CakeProphet> http://cutekittehs.com/files/2011/08/cute-adorable-kittens-0044.jpg obligatory
11:31:24 <Vorpal> CakeProphet, turn on that blender now!
11:31:29 <CakeProphet> SO TEMPTING
11:31:40 <Vorpal> they should do that on "will it blend"
11:31:41 <Vorpal> XD
11:33:11 <elliott_> Vorpal: Sorry but you have no soul.
11:33:18 <elliott_> Kitty. Kitty. Kitten I will save you.
11:33:19 <elliott_> There.
11:33:20 <elliott_> All better.
11:33:42 <elliott_> fizzie: OMG please please please write me some (robotfinds)Kitten ads.
11:33:46 <elliott_> Thx
11:33:49 <CakeProphet> blended cat is the best cat.
11:34:11 <CakeProphet> for drinks! for parties! go pitapat! go flip-flap!
11:35:23 <Vorpal> <elliott_> Vorpal: Sorry but you have no soul. <-- sssh! keep quiet about that!
11:35:54 <elliott_> Super Sexing Shell.
11:36:00 <elliott_> sssh.
11:36:06 <Vorpal> XD
11:37:51 <Deewiant> It's at least: "bizarre ssh host management" / "super ssh" / "Simplified SGML for Serial Headers"
11:38:07 <elliott_> runCurses :: Curses a -> IO aSource
11:38:07 <elliott_> Put the terminal in graphical mode, including enabling special keys, colors, and mouse events (if supported).
11:38:07 <elliott_> After the Curses block has finished running, the terminal is reset to text mode.
11:38:17 <elliott_> Thanks for putting this at the top of the Haddock documentation, I can discount your ibrary now!
11:38:35 <Deewiant> Something wrong? :-P
11:38:53 -!- Phantom_Hoover has joined.
11:38:55 <elliott_> Deewiant: Yeah, the part where it wants me to write my entire IO code in an opaque Curses monad
11:39:20 <Deewiant> It's called type-safety
11:39:22 <Deewiant> No transformer?
11:39:34 <elliott_> Deewiant: No transformer
11:39:36 <Deewiant> It's MonadIO
11:39:38 <elliott_> Deewiant: Because it's literally IO
11:39:41 <Phantom_Hoover> There was a new Discworld book?????
11:39:42 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
11:39:47 <elliott_> Deewiant: And yes, it is; exercise: implement fixIO
11:39:48 <Phantom_Hoover> How am I this far out of the loop.
11:39:52 <elliott_> erm
11:39:54 <elliott_> Deewiant: And yes, it is; exercise: implement forkIO
11:40:01 <elliott_> Deewiant: Actually let's make it easier
11:40:01 <Vorpal> <Phantom_Hoover> There was a new Discworld book????? <-- which one?
11:40:04 <elliott_> Deewiant: Implement catch
11:40:40 <elliott_> Deewiant: (This is "easy" in the sense of "still actually impossible")
11:40:46 <Phantom_Hoover> Vorpal, Snuff, apparently.
11:41:04 <Vorpal> I missed it too
11:41:04 <Phantom_Hoover> I only noticed through Pratchett's Facebook page, three days after it was released.
11:41:05 <Vorpal> oh well
11:41:13 <elliott_> OK wow hscurses why would you actually reuse ncurses' naming scheme.
11:41:15 <elliott_> That's... that's not a good idea.
11:41:22 <elliott_> vty it is I guess
11:41:34 <elliott_> Even if it does use under_scores
11:41:54 <elliott_> Actually wow these underscores really hurt me inside
11:42:33 <elliott_> At least it's got some nice pure stuff?
11:42:53 <Deewiant> elliott_: Just liftIO :: Curses a -> IO a and you don't need to use runCurses?
11:43:08 <elliott_> Deewiant: I don't think you understand what liftIO is
11:43:19 <elliott_> Or how to unify types :P
11:43:21 <elliott_> :t liftIO
11:43:22 <lambdabot> Ambiguous occurrence `liftIO'
11:43:23 <lambdabot> It could refer to either `Control.Monad.Error.liftIO', imported from Control.Monad.Error
11:43:23 <lambdabot> or `Control.Monad.Logic.liftIO', imported from Control.Monad.Logic
11:43:25 <Deewiant> Oh, whoops
11:43:28 <elliott_> lambdabot...
11:43:37 <Deewiant> heh
11:43:50 <Deewiant> But yeah, liftIO is the other way around, duh
11:43:52 <Vorpal> Phantom_Hoover, well I ordered the book now.
11:44:21 <elliott_> OItfil :: (oIdanoM m) => m a -> IO a
11:44:42 <elliott_> http://hackage.haskell.org/packages/archive/vty/4.7.0.6/doc/html/Graphics-Vty-Attributes.html#t:MaybeDefault
11:44:45 <elliott_> Gross???
11:44:56 <elliott_> Why does nobody have any taste
11:45:37 <elliott_> http://hackage.haskell.org/package/vty-ui
11:45:42 <elliott_> This looks promising I guess
11:45:59 <elliott_> Actually no
11:46:03 <elliott_> I don't want any of those widgets
11:46:10 <elliott_> Apatr from a progress bar
11:46:14 <elliott_> s/Apatr/Apart/
11:46:41 <Deewiant> hscurses is the direct binding, makes sense that it reuses the names :-P
11:48:11 <elliott_> Deewiant: The world needs more "direct bindings except we use better names"
11:48:30 <Deewiant> The problem with that is difficulty of translation
11:48:34 <Deewiant> But sure, it could provide both
11:48:41 <Deewiant> It has the helper thing, don't know if that's any good.
11:49:42 <elliott_> I'm just using vty because it has decent-looking docs and is well-maintained :P
11:49:46 <elliott_> Even if it does argh_ugh
11:49:47 -!- boily has joined.
11:49:54 <elliott_> (Technical term(tm))
11:52:15 -!- derdon has joined.
11:55:27 -!- Phantom__Hoover has joined.
11:56:18 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:00:54 <CakeProphet> elliott_: there is someone in #django named Kittens.
12:01:07 <elliott_> I doubt they are actually kittens.
12:01:21 <CakeProphet> elliott_: you may be surprised!
12:07:24 <CakeProphet> http://pastebin.com/EdJDazYS
12:07:27 <CakeProphet> such helpful people on #django
12:07:30 -!- ais523 has joined.
12:08:07 -!- CakeProphet has changed nick to DjangoProphet.
12:09:14 <elliott_> DjangoProphet: He said DjagoProphet.
12:09:20 <DjangoProphet> oh he did.
12:09:28 -!- DjangoProphet has changed nick to DjagoProphet.
12:10:14 <fizzie> Crafty advertising tool, only help people if they agree to change their names to be based on your product.
12:10:50 <elliott_> "The main object. At most one should be created. An alternative is to use unsafePerformIO to automatically create a singleton Vty instance when required."
12:10:50 <DjagoProphet> then ask about their irc client mysteriously.
12:10:55 <elliott_> Why do you DO this to me, guys.
12:11:22 <elliott_> Deewiant: Uuuurgh: terminal_handle :: (Applicative m, MonadIO m) => m TerminalHandle
12:12:12 <fizzie> DjagoProphet: Possibly the IRC client question is another part on their "will we help or not" checklist. If you were using, say, a client written in PHP, they'd be all "no wai".
12:13:13 <ais523> you know what? 33554432 is an awesome power of 2
12:14:08 <elliott_> that's a power of 2?
12:14:10 <ais523> yes
12:14:12 <fizzie> 32M.
12:14:14 <fizzie> 33554432 bytes should be enough for everyone.
12:14:21 <ais523> 2**25
12:14:24 <elliott_> but it doesn't /look/ like a power of two
12:14:30 <ais523> that's why it's awesome
12:14:34 <elliott_> :(
12:14:37 <Deewiant> elliott_: The Applicative, or what? :-P
12:14:39 <fizzie> It's an odd power, though, those are all a bit... odd.
12:15:08 <elliott_> Deewiant: (a) Literally isomorphic to IO TerminalHandle (OK, it can actually not be isomorphic, if you have a completely broken monad, in which case it'll probably do something much less sensible than a single lift) (b) Would it kill you to use liftM/return/ap when you're writing library code
12:15:22 <elliott_> fizzie: We should only use meta-powers of two.
12:15:54 <Deewiant> elliott_: I'd prefer it if everything used MonadIO instead of IO: no more lifting
12:16:15 <elliott_> Deewiant: Encouraging monad transformer stacks on top of IO is a very bad idea
12:16:26 <fizzie> PowerTower is the best function.
12:16:29 <DjagoProphet> elliott_: how does a number look like a power of 2?
12:16:35 <elliott_> Not only are they a code smell, they're just plain a pain in the arse to use
12:16:36 <elliott_> cf. catch
12:16:40 <elliott_> Yes, I know of monad-control; it's hideous
12:17:18 <DjagoProphet> fizzie: I agree Tower of Power is an excellent musical group. http://www.youtube.com/watch?v=7LjrCV4Gnxw
12:17:58 <Deewiant> elliott_: How should one avoid them; in general most programs are internally largely StateT s IO
12:18:12 <elliott_> Deewiant: s/most programs/most programs written in an imperative language/
12:18:28 <Deewiant> elliott_: No, most programs :-P
12:18:31 <elliott_> Nope
12:18:32 * ais523 vaguely wonders what the correct way to write "a list of 100 1s" is in OCaml
12:18:34 <Deewiant> Most programs do I/O internally
12:18:44 <elliott_> It's the StateT part
12:18:50 <ais523> I could write a helper function, but ideally I'd like to find something in List to do that
12:18:52 <ais523> it just isn't there
12:19:02 <elliott_> Deewiant: If you want to thread everything through a State monad global, be my guest! (It will be horrible.) Oh, and I hope you never, ever want concurrency!
12:19:04 <Deewiant> elliott_: Most programs have the I part of the I/O affect their state in some way
12:19:22 <DjagoProphet> help what's state.
12:19:25 <Deewiant> elliott_: I didn't say "everything", I just meant that it'd show up in a lot of places
12:19:28 <fizzie> Best powers of two to use: http://oeis.org/A014221 "0, 1, 2, 4, 16, 65536 ... comments: Next term has 19729 digits."
12:19:38 <elliott_> Deewiant: By saying most programs are (StateT s IO) you're saying that every single component of most programs needs to access and modify every piece of state, and also needs to perform completely arbitrary IO
12:19:46 <Deewiant> elliott_: Yeah, that's not what I meant
12:19:55 <elliott_> Deewiant: So if you're right, modular programming is a hopeless task, separating software into components is futile, and functional programming is hopeless
12:20:03 <elliott_> Score one for transformer stacks?
12:20:06 <Deewiant> elliott_: Still not what I meant
12:20:24 <elliott_> Deewiant: You might not mean it, but it's what you said; that's what you're claiming by putting all your program in that
12:20:35 <Deewiant> elliott_: I said "largely"
12:20:58 <Deewiant> elliott_: By which I meant that it'll show up in many if not most of the top-levelish functions
12:21:00 <elliott_> Deewiant: Then what does "largely" make it mean instead
12:21:22 <elliott_> People who use monad transformer stacks don't localise their use to "top-levelish" functions
12:21:23 <Deewiant> elliott_: But of course that doesn't mean that every single IO-using or s-using function has to be in the StateT
12:21:28 <elliott_> I've not seen a single person do that, they stuff everything in there
12:21:31 <Deewiant> I do :-P
12:21:37 <Deewiant> At least nowadays
12:21:40 <elliott_> I don't believe you
12:21:55 <elliott_> And if it's just top-level functions then "MVar s -> IO a" is hardly worse than "StateT s IO a"
12:22:12 <elliott_> Bonus: It isn't a royal pain to make "s" a more specific type for things that only need certain parts
12:22:20 <elliott_> Bonus: You can do concurrency
12:22:31 <elliott_> fizzie: Ha.
12:22:39 <elliott_> Oh, it's just Ackermann.
12:22:50 <elliott_> * ais523 vaguely wonders what the correct way to write "a list of 100 1s" is in OCaml
12:22:54 <elliott_> ais523: does it have an iota operation?
12:22:58 <elliott_> iota : int -> int list
12:23:05 <elliott_> iota 9 = [0;1;2;3;4;5;6;7;8]
12:23:05 <elliott_> or w/e
12:23:20 <ais523> no
12:23:29 <elliott_> ais523: seriously?
12:23:36 <elliott_> it can't do ranges?
12:24:09 <ais523> not in Pervasives or List
12:24:25 <ais523> (which, as we've already established, are the only modules allowed inside the sandbox)
12:24:32 <ais523> also, those are the most obvious modules for a range operator to be in
12:24:50 <elliott_> isn't this what batteries is for
12:24:58 -!- pikhq_ has quit (Ping timeout: 252 seconds).
12:25:02 -!- pikhq has joined.
12:25:07 <ais523> btw, I just kicked Wooble
12:25:10 <ais523> for a legitimate reason
12:25:15 <ais523> I thought you might be amused
12:25:46 <fizzie> Well, it's the PowerTower[2, n] too, just turns out it's Ackermanny too with the proper definition.
12:26:05 <ais523> fizzie: is that Mathematica syntax? For shame!
12:26:41 <fizzie> ais523: It's Mathematica syntax because it's a Mathematica function; I don't know any other place that'd call it PowerTower.
12:27:02 <ais523> hmm
12:27:12 <ais523> isn't "tetration" the usual name?
12:27:37 <fizzie> Possibly; it's a name for it I've seen, at least.
12:28:06 <fizzie> And the one I was thinking of; but the http://mathworld.wolfram.com/PowerTower.html just mentions it in a somewhat non-prominent way.
12:28:07 <ais523> Mathematica is actually quite similar to Prolog without the backtracking, internally
12:28:18 <ais523> which is probably worrying
12:28:18 <elliott_> ais523: Isn't everything Wooble says kickable?
12:28:23 <ais523> elliott_: no
12:28:30 <elliott_> Are you sure?
12:28:38 <ais523> he accidentally pasted a hundreds-of-lines-long pastescript into #devnull_nethack, though, and that definitely is
12:28:57 <Vorpal> ais523, pastescript? I was wondering what it was supposed to bea
12:28:58 <Vorpal> be*
12:29:00 <Vorpal> what is it for?
12:29:21 <ais523> Vorpal: setting autopickup exceptions
12:29:24 <Vorpal> aha
12:29:33 <ais523> devnull turned on APE, but not the ability to configure it via the RC file
12:29:36 <ais523> so you have to set them in-game
12:29:43 <Vorpal> ais523, that sucks
12:30:02 -!- DjagoProphet has changed nick to CakeProphet.
12:30:25 <CakeProphet> there is no cow level.
12:30:31 <Vorpal> CakeProphet, ?
12:30:37 <ais523> Vorpal: Diablo meme
12:30:38 <elliott_> Does anyone know how to make ncurses use the "primary" screen?
12:30:42 <elliott_> Rather than switching away to the alternate thing.
12:30:49 <ais523> Blizzard put in a secret cow level in Diablo II as a reference to it
12:30:59 <Vorpal> I see
12:31:11 <elliott_> (You guys know what I mean, right?)
12:31:21 <CakeProphet> the cheat code for god mode in Diablo 2 is thereisnocowlevel
12:31:30 <CakeProphet> which, surprisingly, disabled the secret cow level.
12:31:44 <Vorpal> elliott_, not entirely.
12:31:59 <Vorpal> elliott_, do you mean that once you edit the program there is no trace of the stuff it displayed?
12:32:01 <elliott_> Vorpal: Ever noticed how curses prorgams reset your scrollbar?
12:32:02 <Vorpal> exit*
12:32:05 <Vorpal> elliott_, right
12:32:06 <Vorpal> that
12:32:09 <elliott_> And don't leave a trace in your shell session?
12:32:09 <elliott_> yeah
12:32:13 <CakeProphet> http://www.youtube.com/watch?v=1XAfUcvdhmc
12:32:15 <Vorpal> elliott_, no I don't know how
12:32:16 <CakeProphet> good music.
12:32:17 <ais523> of course, as befits computer game players, they figured out a way to abuse the cow level for farming massive amounts of exp in multiplayer
12:32:20 <elliott_> I just want to make progress bars. :(
12:32:22 <Deewiant> elliott_: StateT s IO doesn't preclude concurrency, you just need to runStateT them and then figure out what to do with the state afterwards
12:32:25 <elliott_> I guess I'll have to roll my own with ANSI?
12:32:26 <Vorpal> elliott_, use plain termcap?
12:32:38 <ais523> wait, why use screen for a progress bar?
12:32:40 <CakeProphet> ais523: isn't that pretty much its purpose? I don't think it's much of an abuse.
12:32:45 <Vorpal> or terminfo rather
12:32:53 <Deewiant> elliott_: ansi-terminal
12:32:53 <elliott_> Deewiant: "You just gotta implement your own concurrency strategy; btw hope you weren't expecting shared memory of any kind, or MVar style semantics, or transactions, or ..."
12:33:03 <ais523> CakeProphet: its purpose is terminal multiplexing; I don't see what that has to do with progress bars
12:33:12 <Deewiant> elliott_: Uh?
12:33:17 <CakeProphet> ais523: `you must have me mistaken with someone else
12:33:20 <Deewiant> elliott_: If you want to pass in an MVar, pass in an MVar
12:33:24 <Deewiant> elliott_: MVar a -> StateT s IO b
12:33:41 <ais523> CakeProphet: no, you were talking about screen, so was I
12:33:50 <elliott_> Deewiant: "Most programs" don't have a bunch of state that only gets synchronised when a thread dies
12:33:54 <elliott_> Your scenario is ridiculous
12:34:02 <CakeProphet> ais523: oh, no I was talking about the secret cow level.
12:34:04 <CakeProphet> >_>
12:34:08 <ais523> oh right
12:34:10 <fizzie> elliott_: You're not alone: http://www.shallowsky.com/linux/noaltscreen.html has the termcap/terminfo capability to mess with.
12:34:10 <CakeProphet> definitely not about progress bars.
12:34:11 <elliott_> <ais523> wait, why use screen for a progress bar?
12:34:20 <elliott_> ais523: That's not what screen is.
12:34:39 <elliott_> fizzie: Heh. I want to implement this in the program though.
12:34:53 <ais523> elliott_: I still don't get what you're trying to do, or to tell me
12:34:53 <elliott_> Deewiant: ansi-terminal hasn't been updated for over a year which is worrying
12:35:10 <elliott_> Also it's not exactly the most high-level API
12:35:25 <elliott_> But I guess it'll do
12:35:52 <elliott_> ais523: Do you really want me to bother explaining when the misinterpretation of terminology you made makes the chances of you giving a correct answer ~0?
12:35:59 <elliott_> If you don't know what the alternate screen is, you can't help :p
12:36:00 <Deewiant> elliott_: There's wrappers to it
12:36:29 <ais523> elliott_: oh, I thought you were talking about screen(1)
12:36:37 <ais523> I do know what the alternate screen is
12:36:43 <ais523> but I've been having serious problems following your conversation
12:36:47 <ais523> which implies that I'm misunderstanding something
12:36:49 <elliott_> Deewiant: I see exactly one
12:36:56 <Deewiant> elliott_: Maybe they don't have such state, but most programs don't have concurrency in the first place so I can't think of a sufficient amount of examples. But fair enough, most concurrent programs probably should avoid StateT
12:36:59 <ais523> I'm asking you to explain again in different words in the hope that I understand it the second time
12:37:00 <Deewiant> elliott_: Maybe there was only one
12:37:02 <elliott_> ais523: Run curses program; note how it runs on the alternate screen
12:37:04 <Deewiant> elliott_: I've only ever used ansi-terminal directly
12:37:08 <elliott_> ais523: Note how all I want is an inline progress bar
12:37:21 <elliott_> Deewiant: It's called AC-Terminal; I think I started ignoring all packages starting with AC- because their author is an amateur or something
12:37:32 <elliott_> Also because there's like fifty of them
12:37:42 <Deewiant> elliott_: Yeah fair enough
12:37:44 <ais523> elliott_: aha, it's to do with curses(3), not with screen(1)
12:37:54 <ais523> normally when I make progress bars, I just use a bunch of \r
12:38:00 <ais523> and redraw them each time
12:38:01 <elliott_> ais523: It's not really to do with curses either, I'm asking for a general solution
12:38:04 <ais523> that works even on dumb terminals
12:38:07 <elliott_> And yes, I am aware one can do progress bars in that manner
12:38:09 <Deewiant> But not on Windows
12:38:11 <ais523> but I'm not sure it's a perfect solution
12:38:14 <elliott_> Obviously telling me that isn't going to actually help :P
12:38:16 <ais523> Deewiant: Windows doesn't respect \r?
12:38:18 <fizzie> 'screen' has a command (termcap/terminfo/termcapinfo) to tweak the current termcap/terminfo entry without going through the hassle of editing any files; if you feel sufficiently motivated, you could check how that's done; presumably by environment variables somehow. (At least for termcap you can just set TERMCAP; don't know about terminfo, though.)
12:38:22 <elliott_> I'll just use ansi-terminal, it does colours and cursor controls
12:38:23 <Deewiant> ais523: I'm pretty sure cmd.exe doesn't
12:38:26 <Deewiant> ais523: But not entirely
12:38:33 <elliott_> Even if the Windows support is beyond useless to me
12:38:36 <ais523> elliott_: so what are you trying to do that \r progress bars can't do?
12:39:11 <ais523> Deewiant: but cmd.exe isn't responsible for rendering stdout, NTVDM is; and I know that at least the old-fashioned conio.h API handles \r just fine
12:39:21 <ais523> presumably whatever it was replaced with does too
12:39:26 <elliott_> ais523: I'm not looking to get XY Problemed; manually writing out ANSI escape codes and \rs is as ugly and unmaintainable as it is non-portable
12:39:28 <CakeProphet> wow okay Django has stumped me.
12:39:31 <elliott_> Especially since I already have a solution
12:39:56 <ais523> elliott_: the amusing thing is, I'm seriously considering to change Ace to hardcode ANSI escape codes rather than using termcap
12:40:03 <Deewiant> ais523: NTVDM is the 16-bit emulator, I fail to see how it's relevant
12:40:12 <ais523> Deewiant: oh, that would explain my results
12:40:13 <elliott_> ais523: Why not terminfo
12:40:20 <ais523> elliott_: termcap/terminfo/curses/etc
12:40:30 <ais523> the problem is, they adapt to the terminal you're actually using
12:40:37 <ais523> which means that the ttyrec might not play back on other people's terminals
12:40:55 <ais523> and often, the entries in the database are wrong, so they don't even adapt to your own terminal
12:41:10 <ais523> meanwhile, VT100, and some of the extensions of it, are both standardised and actually work on pretty much all terminals in practice
12:41:20 <ais523> so hardcoding that seems to work better than using terminal-specific codes
12:41:24 <ais523> I guess it's a different meaning of "portable"
12:41:29 <elliott_> Deewiant: Barf @ it uses imperative actions to control things like colours; I guess I'll look at ansi-wl-pprint too, which is a wrapper, but I doubt it can do progress bars
12:42:39 <Deewiant> elliott_: I think ansi-wl-pprint just has pretty printing with colours and bold and stuff, not the ability to write over earlier text
12:42:53 <elliott_> Deewiant: Technically, System.Console.ANSI doesn't offer that either
12:42:58 <elliott_> Deewiant: You have to use the cursor functions to do that
12:43:13 <elliott_> So I could just print out each progress bar step with the ansi-wl-pprint stuff and use ansi-terminal to overwrite it each time
12:43:13 <Deewiant> Well, that /is/ a way of doing that
12:43:22 <elliott_> Do you have another way? :p
12:43:27 <Deewiant> Right, I just meant you can't use solely ansi-wl-pprint
12:43:31 <elliott_> Right
12:43:40 <elliott_> Might be overkill for just a progress bars
12:43:42 <elliott_> s/s//
12:43:45 <elliott_> Depends on how much I use this
12:43:51 <elliott_> I can always make a little mini-module of tricks
12:44:01 <Deewiant> s/s\//s$\//
12:44:12 <elliott_> 'Thanks to Brandon S. Allbery and Curt Sampson for pointing me in the right direction on xterm title setting on haskell-cafe. The 0 signifies that both the title and icon text should be set: i.e. the text for the window in the Start bar (or similar) as well as that in the actual window title. This is chosen for consistent behaviour between Unixes and Windows."
12:44:14 <elliott_> --docs of hCursorUp,hCursorBackward,hCursorForward,hCursorDown
12:44:16 <elliott_> s/'/"/
12:44:21 <elliott_> These docs are very badly organised
12:49:31 <elliott_> :t round
12:49:32 <lambdabot> forall a b. (RealFrac a, Integral b) => a -> b
12:51:05 <ais523> elliott_: btw, am I mad for using the powers of 2 in lexicographical order as a test input to a sort function?
12:51:11 <elliott_> yes
12:51:13 <ais523> it seemed to be reasonably interestingly misordered
12:51:46 <ais523> and hits a few expected corner cases (it's meant to be a bignum sort, and it goes a little over the range of an integer in my 32-bit OCaml impl)
12:52:51 <ais523> hmm, is it a good idea to connect a wired and wireless network, both designed to go to the Internet at large, simultaneously?
12:52:58 <ais523> I'm guessing no because they have different proxy settings
12:53:17 <elliott_> blocks :: [Char]
12:53:17 <elliott_> blocks = "▏▎▍▌▋▊▉█"
12:53:17 <elliott_> awwwww yeah
12:53:26 <elliott_> ais523 has no idea how fancy my progress bar is going to be.
12:54:00 <Vorpal> ais523, they have proxy settings?
12:54:06 <Vorpal> heh
12:54:12 <ais523> the wired network firewalls everything, including 80
12:54:23 <ais523> but has an autoproxy to let you access the Web
12:54:24 <Vorpal> ais523, so you can't ssh out for example?
12:54:28 <ais523> (one of the WPAD things)
12:54:28 <Vorpal> Or use https?
12:54:34 <ais523> 443 can go through the proxy
12:54:47 <ais523> 25 works too, but only to a few addresses
12:54:50 <Vorpal> so man in the middle by default?
12:54:54 <ais523> yep
12:54:56 <Vorpal> ouch
12:55:01 <Vorpal> I wouldn't use that network
12:55:09 <ais523> work network, they're all like that
12:55:20 <Vorpal> and I'm surprised firefox doesn't display wrong certificate for the proxy all the time
12:55:34 <ais523> well, with a work computer, it's in the root CAs
12:55:36 <Vorpal> wrong certificate errors*
12:55:39 <Vorpal> hm
12:55:49 <Vorpal> ais523, I would use the wireless if it is saner
12:55:53 <ais523> I think it might not decrypt the contents of an HTTPS transmission, though, just check where you're connecting
12:55:58 <ais523> the wireless is saner except it keeps dropping
12:56:06 <ais523> hmm, idea
12:56:09 <Vorpal> 3G
12:56:16 <ais523> I'm going to connect to https://google.com in Chromium
12:56:29 <Vorpal> that is going to use spdy, no?
12:56:36 <ais523> oh right, I'm on the wireless, ofc it's going to work
12:56:42 <ais523> and it did just jump to an insecure version
12:56:54 <Vorpal> ais523, try https://encrypted.google.com
12:57:07 <ais523> aha, that works
12:57:15 <ais523> anyway, chromium has Google's certs hardcoded
12:57:19 <ais523> *Chromium
12:57:20 <Vorpal> ah
12:57:24 <elliott_> gah
12:57:27 <elliott_> this progress bar /almost/ works
12:57:34 <ais523> so can detect MITMing even with a certificate added by your employer
12:57:39 <Vorpal> heh
12:57:44 <ais523> I'll probably try that next time I'm on the wired
12:57:54 <ais523> my guess is that the proxy can tell I'm connecting to Google, but doesn't decrypt the contents
12:57:56 <ais523> I'm not sure, though
12:58:15 <elliott_> who wants to run a program that will make them vaguely worried that their terminal can output such SMOOTH PROGRESS BARS?
12:58:28 <elliott_> everyone. everyone wants that program.
12:58:30 <elliott_> that everyone could be you.
12:58:36 <Vorpal> elliott_, it is unicode block characters, isn't it?
12:58:38 <Vorpal> *shrug*
12:58:45 <elliott_> Vorpal: yeah, but it's seriously unnerving :P
12:58:52 <Vorpal> elliott_, doubtful
12:59:06 <elliott_> Vorpal: see for yourself: http://sprunge.us/IhEb
12:59:42 <coppro> ais523: it should be incapable of decrypting the contents
12:59:43 <ais523> > 56345683457823567897543234567 * 9313456789341754124566812142
12:59:44 <lambdabot> 524773088150368273322823696325607978422660521630529712514
12:59:46 <Vorpal> elliott_, does it work on ghc 6.whatever?
12:59:49 <elliott_> sur
12:59:50 <elliott_> e
12:59:54 <elliott_> needs the small ansi-terminal library
12:59:59 <Vorpal> too much work
13:00:10 <elliott_> it's in AUR
13:00:19 <Vorpal> elliott_, I'm on my ubuntu laptop
13:00:21 <elliott_> also will install in about 5 seconds with "cabal install ansi-terminal"
13:00:44 <elliott_> Vorpal: oh, and apt-get install libghc-ansi-terminal-dev
13:00:49 <ais523> ^ testcase to determine that a) the library does indeed handle bignums rather than using native ints, b) it multiplies in O(log n), not O(n)
13:00:53 <elliott_> depending on how new the ubuntu is
13:01:04 <Vorpal> elliott_, 10.04 LTS
13:01:19 <ais523> elliott_: what about installing Cabal? or does Ubuntu have that by default nowadays?
13:01:41 <elliott_> ais523: I offered that; Vorpal's just looking for excuses though, so I'm offering as many trivial solutions as possible to antagonise him
13:01:57 <Vorpal> elliott_, I'm going to install it, sure
13:02:05 <Vorpal> just going to take a while over 3G
13:02:13 <ais523> elliott_: do Unicode block characters line up perfectly in most terminals? I'm used to them leaving pixel-wide gaps
13:02:14 <Vorpal> (I'm not at home atm)
13:02:31 <elliott_> ais523: try the program and see; I've had some alignment issues getting the full thing to work, but the program doesn't suffer from them by definition
13:02:48 <Vorpal> elliott_, yeah the package is not in the repo, will check the cabal solution
13:03:01 <elliott_> oh come on: Unicode has every block width going from the left from eighth to whole, but only (a) right one eighth and (b) right half
13:03:06 <elliott_> WHY WOULDN'T YOU JUST THROW THEM ALL IN
13:03:08 <elliott_> WORK WITH ME HERE
13:03:15 <Deewiant> ▏▎▍▌▋▊▉█
13:03:15 <Deewiant> ▏▎▍▌▋▊▉█
13:03:17 <ais523> yeah, I'm missing System.Console.ANSI; what package is it in?
13:03:22 <Deewiant> Lines up for me
13:03:23 <ais523> libghc-ansi-terminal-dev?
13:03:34 <elliott_> ais523: yes
13:03:37 <elliott_> or just cabal install ansi-terminal
13:03:53 <elliott_> Vorpal: ais523: I'm not sure whether it's more or less unnerving if you take the last 0 off the threadDelay line
13:04:00 <elliott_> (run the program with "runhaskell foo.hs", btw)
13:04:03 <ais523> the package doesn't exist in this Ubuntu
13:04:15 <elliott_> ais523: cabal install ansi-terminal, then; it'll install into ~/.cabal
13:04:19 <Vorpal> elliott_, it tells me I have to cabal update first
13:04:20 <ais523> and I don't have cabal either
13:04:24 <ais523> what package is /that/ in?
13:04:27 <elliott_> Vorpal: do that, then
13:04:27 <Vorpal> elliott_, this is going to take a while. I'm on EDGE now.
13:04:34 <ais523> ah, "cabal-install"
13:04:46 <elliott_> ais523: you really shouldn't use debian ghc btw, but *shrug*
13:04:47 <Vorpal> Note: there is a new version of cabal-install available.
13:04:47 <Vorpal> To upgrade, run: cabal install cabal-install
13:04:50 <Vorpal> should I do that?
13:04:52 <Vorpal> probably not I guess
13:04:58 <ais523> elliott_: what should be used instead? and what's wrong with debian ghc?
13:05:06 <elliott_> Vorpal: not unless you want to break everything
13:05:06 <ais523> Vorpal: that's just what CPAN does
13:05:14 <Vorpal> elliott_, right
13:05:18 <ais523> this implies it may be a bad thing
13:05:25 <Vorpal> elliott_, where was the link now again?
13:05:33 <elliott_> Vorpal: in your scrollback
13:05:38 -!- derrik has joined.
13:05:39 <Vorpal> elliott_, *shrug*
13:05:56 <elliott_> Vorpal: your choice whether you want to make the cabal-install work a waste or not :)
13:06:03 <elliott_> i'm busy typing a response to ais523, who asked a non-trivial question
13:06:07 <Vorpal> $ file foo.hs
13:06:07 <Vorpal> foo.hs: UTF-8 Unicode Java program text
13:06:08 <Vorpal> heh
13:06:29 <Vorpal> elliott_, why is it green?
13:06:40 <elliott_> progress bars are green
13:06:44 <Vorpal> elliott_, anyway it is kind of jerky
13:06:46 <ais523> t.o: In function `sYB_info':
13:06:47 <ais523> (.text+0x6ac): undefined reference to `ansizmterminalzm0zi5zi5_SystemziConsoleziANSIziUnix_showCursor_closure'
13:06:49 <ais523> elliott_: in which OS?
13:06:52 <elliott_> ais523: you didn't do what I told you to do
13:07:08 <ais523> what did you tell me to do? I installed cabal, then did cabal install, then tried to compile with ghc
13:07:12 <elliott_> ais523: the binary package installed manually; and, well, debian/ubuntu ghc /itself/ isn't broken, but it /is/ years old except in the very latest releases; but more importantly, if you install any non-core (= shipped with ghc) libraries with apt-get, then you can't mix it with cabal-installed libraries at all, which is problematic because debian's haskell library set is (a) old (b) incrediby incomplete
13:07:17 <elliott_> ais523: <elliott_> (run the program with "runhaskell foo.hs", btw)
13:07:35 <ais523> ah, right
13:07:50 -!- sebbu2 has joined.
13:08:05 <ais523> hmm, it's kind-of jerky due to rounding errors
13:08:16 <ais523> in Unicode
13:08:24 <ais523> but it does make a continuous bar in gnome-terminal
13:08:29 -!- sebbu has quit (Ping timeout: 255 seconds).
13:08:34 <elliott_> it's perfectly smooth here
13:08:42 <ais523> sometimes it moves one pixel, sometimes too
13:08:45 <ais523> *two
13:08:56 <Madoka-Kaname> Vorpal, I'm going to guess it's the import statements
13:09:02 <ais523> aha, because it can't subpixel alias, because it's green
13:09:07 <Madoka-Kaname> Except for missing a semicolon, they're pretty much identical
13:09:13 <ais523> it'd be three times smoother if it were white
13:09:15 <elliott_> Madoka-Kaname: and not being lowercase
13:09:21 <elliott_> `addquote <ais523> aha, because it can't subpixel alias, because it's green <ais523> it'd be three times smoother if it were white
13:09:23 <HackEgo> 706) <ais523> aha, because it can't subpixel alias, because it's green <ais523> it'd be three times smoother if it were white
13:09:27 <ais523> *antialias
13:09:28 <Madoka-Kaname> Well, the syntax is the same.
13:09:31 <elliott_> hmm, probably better with just the second one
13:09:34 <elliott_> `unquote
13:09:37 <HackEgo> ​*poof* <ais523> aha, because it can't subpixel alias, because it's green <ais523> it'd be three times smoother if it were white
13:09:44 <elliott_> but that isn't funny at all then, so meh
13:09:46 <Madoka-Kaname> You can have uppercase package names in Java (but it's probs bad practice)
13:09:47 <ais523> elliott_: but out of context, it's not funny
13:09:58 <elliott_> yep
13:10:01 <ais523> it just looks like an out-of-context "that's what she said" sort of innuendo
13:10:07 <ais523> and those aren't generally that funny
13:10:12 <elliott_> ais523: haha omg i just created an unintentional fancy animation
13:10:23 <ais523> elliott_: you don't normally omg
13:10:26 <elliott_> no but
13:10:27 <Vorpal> Madoka-Kaname, hm yeah
13:10:29 <elliott_> this is fun :DDDDd
13:10:30 <ais523> are you sure you're elliott_?
13:10:34 <Madoka-Kaname> I wonder why it resulted as "Java" instead of "Python"
13:10:53 <ais523> Java would have more semicolons
13:11:12 <Vorpal> Madoka-Kaname, python tends to not have foo.bar when importing very often at least
13:11:29 <ais523> from foo import bar
13:11:45 <ais523> hmm, potentially interesting project: write a really good programming language guesser
13:11:57 <ais523> that's like what file(1) tries to do, except actually working
13:12:17 <Vorpal> ais523, ohcount has a quite okay one in it iirc. It mixes up C and C++ sometimes, but that is actually quite hard to tell apart sometimes
13:12:22 <CakeProphet> no I'm registered to freenode, if that's what you meant... I have clue what you're saying.
13:12:27 <CakeProphet> ...mischan.
13:12:39 <elliott_> I too have clue what you're saying.
13:12:40 <Vorpal> you would basically have to try to parse it as both C and C++ completely and see which worked (possibly both)
13:13:04 <ais523> Vorpal: a typical C++ program would contain at least one method call, which would give away that it wasn't C
13:13:15 <ais523> if you aren't using methods, than what are you doing using C++?
13:13:21 <Vorpal> ais523, well for headers it can be less clear I guess
13:13:32 <ais523> right, headers are often C/C++ polyglots
13:13:40 <ais523> but in the case of a header, the correct language is "cpp", I suspect
13:13:48 <Vorpal> hm
13:14:20 <Vorpal> ais523, anyway ohcount gets confused if you have stuff like this in a header: struct foo { int new; ... }
13:14:35 <ais523> obviously C, it doesn't parse as C++
13:14:38 <Vorpal> indeed
13:14:54 <Deewiant> Vorpal: It calls 'struct foo { int new; };' C
13:14:56 <Vorpal> ais523, but a simple keyword scanning method to determine if it is C++ or C wouldn't handle that
13:15:10 <Vorpal> Deewiant, oh kay
13:15:12 <Vorpal> okay*
13:15:15 <ais523> keyword scanning isn't really the way to go
13:15:23 <Vorpal> Deewiant, I distinctly remember an older version didn't handle that though
13:15:24 <ais523> because languages tend to have similar keywords
13:15:32 <ais523> I think looking for keyword/punctuation combos would work better
13:15:56 <Vorpal> ais523, well iirc it did that to separate C/C++ mostly. And other methods to determine it was one of them in the first place
13:16:13 <ais523> how does it separate C and C++ from C# and Java?
13:16:22 <ais523> they look pretty similar keyword-wise too
13:16:25 <Vorpal> don't remember
13:16:29 <Vorpal> it is open source anyway
13:16:31 <Madoka-Kaname> C and C++ don't have import.
13:16:33 <Madoka-Kaname> Right?
13:16:36 <Deewiant> It seems to have a parser for all the languages it supports, maybe it just tries to parse as everything and then has some supersedence rules: https://github.com/blackducksw/ohcount/tree/master/src/parsers
13:16:50 <ais523> Madoka-Kaname: there are C and C++ compilers that accept "#import" as a preprocessor directive
13:17:01 <Deewiant> Oh, except no C++
13:17:01 <Madoka-Kaname> ais523, but that's easily distinguished from Java imports.
13:17:04 <Deewiant> That I can see
13:17:04 <Madoka-Kaname> #import vs import
13:17:13 <ais523> right
13:17:27 <ais523> Deewiant: isn't that because C++ is TC to even parse?
13:17:36 <Vorpal> Deewiant, c.rl handles C and C++ it seems
13:17:53 <Madoka-Kaname> More interesting might be distinguishing Java from Scala from Python using keyword scanning.
13:18:04 <Vorpal> what on earth is .rl anyway?
13:18:15 <Deewiant> Vorpal: Ragel
13:18:20 <Madoka-Kaname> Well, Scala's probs a little distinctive with val/var/class/import all at once.
13:18:20 <Vorpal> hm
13:18:23 <Deewiant> ais523: Depends on what you call the "parse" stage, I guess
13:18:25 <ais523> I'd imagine Java from Scala would be easy using punctuation
13:18:46 <Vorpal> Deewiant, ragel being a parser generator for C?
13:18:49 <Madoka-Kaname> Scala vs Python should be easy.
13:18:53 <Madoka-Kaname> The former has curly braces.
13:18:57 <Deewiant> ais523: Finding stuff like whether "new" is used as a variable name could be done before the TC part, I think
13:19:23 <Madoka-Kaname> ais523, Java vs Groovy?
13:19:27 <Madoka-Kaname> Java vs C#?
13:19:29 <Deewiant> Vorpal: A parser generator, at least
13:19:31 <ais523> I don't know Groovy
13:19:45 <Madoka-Kaname> Haskell vs Python?
13:19:55 <ais523> Java vs C# is easiest in practice by looking for getters and setters, the conventions for those are entirely different in the two languages and they're pretty common
13:20:08 <ais523> Madoka-Kaname: "let" is all over the place in Haskell, not so in Python
13:20:20 <Vorpal> ais523, doesn't C# use "using" and java "import" too?
13:20:25 <elliott_> does anyone know how to print a unicode character as high as the line height? :p
13:20:49 <ais523> elliott_: use a printer?
13:20:52 <Madoka-Kaname> ais523, Perl vs line noise?
13:20:57 <elliott_> ais523: heh
13:20:59 <Deewiant> elliott_: Your blocks :: [Char] were line height for me
13:21:00 <ais523> Madoka-Kaname: that one is really easy
13:21:05 <elliott_> Deewiant: Not for me :(
13:21:11 <ais523> line noise doesn't look anything like Perl
13:21:14 <ais523> have you not seen it before?
13:21:15 <Madoka-Kaname> =p
13:21:19 <elliott_> Deewiant: It matters because I need to set the background so that partially-filled characters don't have a white background
13:21:25 <elliott_> As opposed to the grey of the rest of the unfilled area
13:21:29 <Madoka-Kaname> More seriously.
13:21:31 <elliott_> But that leaves an ugly grey line above the bar for me
13:21:37 <ais523> even obfuscated or golfed Perl tends to gravitate towards particular characters
13:21:49 <Vorpal> <elliott_> Deewiant: Not for me :( <-- nor for me, do unicode line drawing characters join up for you
13:21:51 <Vorpal> ?
13:21:52 <Madoka-Kaname> Ah, hey.
13:22:05 <elliott_> Vorpal: That's unrelated.
13:22:21 <Deewiant> elliott_: I think you have either a font problem or a line-spacing problem and in either case, you "can't" make it work
13:22:21 <Vorpal> elliott_, not if the terminal inserts padding between lines
13:22:28 <elliott_> Deewiant: Right
13:22:31 <Madoka-Kaname> ais523, would you look at file extensions or shebangs?
13:22:42 <fizzie> Deewiant: So I suppose it will still fail completely if you do the "in suck.h #define BEGIN {, #define END }; in trytofiguremeout.c #include "suck.h", no curly braces at all" thing.
13:22:42 <elliott_> Deewiant: I guess the only solution is to give up my fancy granularity :(
13:22:51 <Madoka-Kaname> i.e. if extension matches a known language, that language gains supercedance over every other language, if it parses as it
13:23:05 <ais523> Madoka-Kaname: yes, in practice; I'm interested in the theory of doing without, though
13:24:17 <Deewiant> fizzie: Well yes, you can do "anything you want" with CPP, of course
13:24:27 <elliott_> Deewiant: Looks like gnome-terminal has the exact same problem, so I can hardly ignore it
13:25:12 <Deewiant> elliott_: Make one-line high bars, or use something like '#' that doesn't even try to look completely filling
13:25:24 <elliott_> Deewiant: One-line high bars?
13:26:17 <Vorpal> elliott_, why do you need multiline stuff here?
13:26:25 <Deewiant> elliott_: Well, if you have one horizontal bar like ███, it doesn't matter whether it lines up with what's on the next line? Or why did you care about the lining up anyway
13:26:41 <fizzie> In quite a few browsers, in a "font-family: monospace;" <pre>, mixing "normal text" and Unicode line-drawing characters ends up making the line-drawing bits misaligned badly.
13:26:41 <elliott_> Vorpal: ?
13:26:52 <Vorpal> elliott_, why do you care about it being line height
13:27:05 <Vorpal> fizzie, ouch
13:27:27 <fizzie> Vorpal: http://zem.fi/rfk86/ suffered from that quite a lot. :)
13:27:31 <elliott_> Deewiant: You don't understand; say I have a progress bar with a grey background, being filled in by green. If I use full blocks of those two colours (ignoring background), everything works fine. But, if I want to use partially-filled blocks, then every partially-filled block will have a space of /normal/ background behind it!
13:27:42 <Vorpal> fizzie, works now in firefox, how did you fix it?
13:27:47 <elliott_> Deewiant: So I need to "fill in" that gap with grey somehow; the obvious way is to set the background.
13:28:06 <elliott_> Deewiant: But that causes an ugly grey line to appear above the progress bar, because the background fills the whole line height, including the inter-line padding.
13:28:28 <Vorpal> elliott_, so why not leave it at the background colour of the terminal?
13:28:38 <elliott_> Vorpal: You misread.
13:28:39 <Deewiant> elliott_: So: don't set the background or don't worry about the grey line
13:28:50 <ais523> elliott_: it's still not going to work on terminals that render backgrounds and foregrounds differently
13:29:00 <Vorpal> elliott_, no I didn't. I'm questioning the need of that grey background
13:29:01 <ais523> e.g. jettyplay will use a darker shade for, say, "dark red" in the background than it will in the foreground
13:29:14 <ais523> so you can read text even when the foreground and background are set to the same colour
13:29:19 <elliott_> Deewiant: If I don't set a background at all, it's not, you know, a bar; I'd rather use full blocks than make it ugly in that way. The grey line is really awful.
13:29:21 <Vorpal> elliott_, just do a green bar that grows over the natural bg colour of the terminal
13:29:28 <elliott_> Anyway "don't care about it" is not a solution to problems
13:29:46 <Deewiant> Yeah, sorry :-P
13:29:53 <Deewiant> elliott_: How isn't it a bar if you don't set a background?
13:29:54 <ais523> elliott_: rather, it's a claim that you don't need a solution to the problem
13:30:07 <ais523> isn't the usual solution to put [ and ] around the bar to show its endpoints?
13:30:07 <elliott_> ais523: Are such claims interesting
13:30:13 <Deewiant> elliott_: ▉█▎looks barry to me
13:30:16 <elliott_> I know I can resort to full blocks if I want
13:30:19 <ais523> elliott_: no, but they can be correct, sometimes
13:30:27 <elliott_> The idea is to try and figure out if I have to
13:30:33 <fizzie> Vorpal: Well, it should now work in everything that does (and allows) font embedding the way it's done there; and it did work with the "regular" monospace font in *some* systems. But I do recall getting rather ragged right edges from others. I think I added a "DejaVu Sans Mono" before monospace to make it work everywhere where that font is installed, since it has all the characters the page uses.
13:30:37 <elliott_> ais523: I could draw a "normal" ASCII bar, I just think this looks much nicer
13:30:40 <elliott_> Even with full blocks
13:30:43 <Vorpal> <Deewiant> elliott_: ▉█▎looks barry to me <-- amusing, there is a gap between those in my irc client
13:30:49 <elliott_> Ditto
13:30:51 <ais523> same in mine
13:30:55 <Deewiant> Not for me
13:31:11 <Deewiant> You have problematic terminals and/or fonts :-P
13:31:15 <ais523> fizzie: I've had problems with "Monospace" referring to a non-monospace font in Windows, believe it or not
13:31:23 <elliott_> Deewiant: Who uses an IRC client in a terminal
13:31:25 <elliott_> Losers, that's who
13:31:32 <fizzie> Deewiant: There's a gap in xchat; there's no gap in irssi/urxvt.
13:31:46 <Vorpal> fizzie, ah
13:31:50 <Deewiant> You have problematic GUI IRC clients
13:32:07 <elliott_> Deewiant: Hmm, the fact that repositioning the cursor causes a forced scroll down in ansi-terminal is problematic
13:32:32 <elliott_> And seemingly not fixable from the provided API
13:32:38 <ais523> hmm, what's the first power of 2 that, expressed in base 10, starts with 7?
13:32:47 * ais523 wonders how to express that in Haskell
13:33:02 <ais523> @hoogle Integer -> [Integer]
13:33:02 <lambdabot> Test.QuickCheck.Arbitrary shrink :: Arbitrary a => a -> [a]
13:33:02 <lambdabot> Test.QuickCheck shrink :: Arbitrary a => a -> [a]
13:33:03 <lambdabot> Prelude repeat :: a -> [a]
13:33:06 <elliott_> > map (2^) [0..]
13:33:07 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
13:33:10 <ais523> @hoogle Integer -> [Int]
13:33:10 <Deewiant> elliott_: Is that somehow explicitly done by the implementation?
13:33:11 <lambdabot> Data.Time.Calendar gregorianMonthLength :: Integer -> Int -> Int
13:33:11 <lambdabot> Data.Time.Calendar.Julian julianMonthLength :: Integer -> Int -> Int
13:33:11 <lambdabot> Data.Generics.Schemes gsize :: Data a => a -> Int
13:33:23 <ais523> elliott_: I'm trying to find a function that list-of-digitizes a number
13:33:31 <elliott_> > find (("7" `isPrefixOf`) . show) $ map (2^) [0..]
13:33:33 <lambdabot> Just 70368744177664
13:33:36 <elliott_> ais523: Tada
13:33:38 <ais523> aha
13:33:42 <Deewiant> > find ((== '7') . head . show) $ map (2^) [0..]
13:33:44 <lambdabot> Just 70368744177664
13:33:45 <ais523> that's actually pretty large
13:33:48 <elliott_> Deewiant: That too, but I don't like head :)
13:33:54 <elliott_> <Deewiant> elliott_: Is that somehow explicitly done by the implementation?
13:33:57 <Deewiant> elliott_: I thought you didn't like using "show" like this :-P
13:34:00 <ais523> I forgot that Haskell strings were just lists of chars
13:34:02 -!- Patashu has quit (Ping timeout: 240 seconds).
13:34:02 <elliott_> Deewiant: There's gotta be some way to avoid it
13:34:03 <elliott_> Surely
13:34:05 <elliott_> :(
13:34:10 <elliott_> And I don't, but oh well
13:34:19 <elliott_> Nothing is more important than showing people how great Haskell is quickly
13:34:21 <ais523> (in Ocaml, string, char list, and char array are all different types; string acts like char array, though)
13:34:24 <ais523> *OCaml
13:34:31 <elliott_> > find (("9" `isPrefixOf`) . show) $ map (2^) [0..]
13:34:33 <lambdabot> Just 9007199254740992
13:34:35 <Deewiant> elliott_: I'd check the implementation first
13:34:46 <elliott_> > map [0..9] $ \d -> find ((show d `isPrefixOf`) . show) $ map (2^) [0..]
13:34:47 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[a1]'
13:34:48 <ais523> @src Integer show
13:34:49 <lambdabot> Source not found. That's something I cannot allow to happen.
13:34:50 <elliott_> hmm
13:34:53 <Deewiant> elliott_: flip map
13:34:59 <elliott_> Deewiant: oh, right
13:35:02 <elliott_> > flip map [0..9] $ \d -> find ((show d `isPrefixOf`) . show) $ map (2^) [0..]
13:35:06 <lambdabot> mueval-core: Time limit exceeded
13:35:08 <elliott_> :(
13:35:14 <elliott_> > [0..9] `map` \d -> find ((show d `isPrefixOf`) . show) $ map (2^) [0..]
13:35:15 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[a1]'
13:35:15 <Vorpal> > find (("42" `isPrefixOf`) . show) $ map (2^) [0..]
13:35:17 <lambdabot> Just 4294967296
13:35:18 <Deewiant> elliott_: 0 won't work
13:35:20 <Deewiant> elliott_: Ever
13:35:22 <elliott_> Oh :P
13:35:22 <elliott_> Right
13:35:35 <elliott_> > flip map [1..] $ \p -> find ((show p `isPrefixOf`) . show) $ map (2^) [0..]
13:35:37 <lambdabot> [Just 1,Just 2,Just 32,Just 4,Just 512,Just 64,Just 70368744177664,Just 8,J...
13:35:47 <elliott_> > catMaybes . flip map [1..] $ \p -> find ((show p `isPrefixOf`) . show) $ map (2^) [0..]
13:35:48 <ais523> can the list be unjusted, somehow?
13:35:49 <lambdabot> [1,2,32,4,512,64,70368744177664,8,9007199254740992,1024,1125899906842624,12...
13:35:59 <elliott_> ais523: snap :)
13:36:17 <Deewiant> map fromJust
13:36:22 <elliott_> Deewiant: Die
13:36:31 <Deewiant> elliott_: More appropriate in this case
13:36:36 <Vorpal> elliott_, what is the log_2 function in haskell now again?
13:36:40 <ais523> technically, find /has/ to return Just x or else diverge, on an infinite list
13:36:44 <Vorpal> > log2 70368744177664
13:36:45 <lambdabot> Not in scope: `log2'
13:36:46 <Vorpal> hm
13:36:48 <Vorpal> not that
13:36:53 <Deewiant> elliott_: catMaybes loses the mapping from the numbers you're looking for, in case you get Nothing
13:36:54 <ais523> > length show 70368744177664
13:36:54 <Vorpal> :t log
13:36:55 <lambdabot> Couldn't match expected type `[a]'
13:36:55 <lambdabot> against inferred type `a1 -> GHC...
13:36:55 <lambdabot> forall a. (Floating a) => a -> a
13:36:56 <elliott_> > [n | p <- [0..], Just n <- find ((show p `isPrefixOf`) . show) $ map (2^) [0..]]
13:36:57 <lambdabot> Couldn't match expected type `[t]'
13:36:57 <lambdabot> against inferred type `Data.Mayb...
13:36:59 <ais523> > length (show 70368744177664)
13:36:59 <lambdabot> 14
13:37:01 <Deewiant> elliott_: I'd rather have an error
13:37:09 <Vorpal> :t log
13:37:10 <lambdabot> forall a. (Floating a) => a -> a
13:37:13 <ais523> ^ a reasonably bad way to do log_10
13:37:24 <ais523> > log 70368744177664 / log 2
13:37:25 <lambdabot> 46.0
13:37:29 <Vorpal> well rigtht
13:37:30 <elliott_> > [n | p <- [1..], Just n <- find ((show p `isPrefixOf`) . show) $ map (2^) [0..]]
13:37:31 <lambdabot> Couldn't match expected type `[t]'
13:37:31 <Vorpal> right*
13:37:31 <lambdabot> against inferred type `Data.Mayb...
13:37:37 <Vorpal> so 2^46 = that number
13:37:38 <elliott_> oh
13:37:45 <elliott_> > [n | p <- [1..], let Just n = find ((show p `isPrefixOf`) . show) $ map (2^) [0..]]
13:37:46 <lambdabot> [1,2,32,4,512,64,70368744177664,8,9007199254740992,1024,1125899906842624,12...
13:37:53 <ais523> > log 9007199254740992 / log 2
13:37:53 <lambdabot> 53.0
13:38:03 <elliott_> > [n | p <- [1..], n <- map (2^) [0..], show p `isPrefixOf` show n]
13:38:04 <lambdabot> [1,16,128,1024,16384,131072,1048576,16777216,134217728,1073741824,171798691...
13:38:06 <elliott_> Nice
13:38:08 <elliott_> Wait
13:38:11 <elliott_> Why's that broken
13:38:12 <elliott_> Oh
13:38:19 <ais523> why is the number 0 called 0? for consistency, it should probably be the null string
13:38:26 <elliott_> > [n | p <- [1..], let n:_ = [n | n <- map (2^) [0..], show p `isPrefixOf` show n]]
13:38:28 <lambdabot> [1,2,32,4,512,64,70368744177664,8,9007199254740992,1024,1125899906842624,12...
13:38:29 <elliott_> (Kidding :P)
13:38:41 <elliott_> OK, now how to avoid traversing the list of powers multiple times...
13:38:50 <elliott_> :t break
13:38:51 <lambdabot> forall a. (a -> Bool) -> [a] -> ([a], [a])
13:38:59 <elliott_> > break (("3" `isPrefixOf`) . show) $ map (2^) [0..]
13:39:01 <lambdabot> ([1,2,4,8,16],[32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,1310...
13:39:10 <elliott_> > span (("3" `isPrefixOf`) . show) $ map (2^) [0..]
13:39:11 <lambdabot> ([],[1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131...
13:39:13 <elliott_> aha
13:39:55 <fizzie> > find ((7 ==) . head . (ord <$>) . flip (showIntAtBase 10 chr) []) $ map (2^) [0..]
13:39:56 <lambdabot> Just 70368744177664
13:39:58 <elliott_> > let f p xs = let (_, wow:xs') = span ((show p` isPrefixOf`) . show) xs in wow : f (p+1) xs' in f 1 $ map (2^) [0..]
13:39:59 <lambdabot> [2,4,8,16,32,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26214...
13:40:05 <elliott_> What
13:40:23 <elliott_> > let f p xs = let (_, wow:xs') = span ((show p `isPrefixOf`) . show) xs in wow : f (p+1) xs' in f 1 $ map (2^) [0..]
13:40:25 <lambdabot> [2,4,8,16,32,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26214...
13:40:29 <ais523> hmm, what we really need is a partition function that sorts into more than one partition, lazily
13:40:58 <elliott_> Oh, wait
13:41:05 <elliott_> The algorithm is totally borked, I think
13:41:07 <elliott_> Yeah, it is
13:42:00 <ais523> `pwd` =~ /production/ or die "Not downloading to production DB?";
13:42:01 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pwd`: not found
13:42:26 <elliott_> ais523: ?
13:42:26 <ais523> a check that I ended up adding after accidentally putting live user data into the test DB
13:42:38 <elliott_> I like the question mark
13:42:41 <ais523> which is possibly a worse mistake than putting test data in the production DB
13:42:46 <ais523> elliott_: it's a NetHack thing
13:42:53 <ais523> to put question marks on error messages that should never happen
13:42:56 <elliott_> @hoogle [a -> Bool] -> [a] -> [[a]]
13:42:57 <lambdabot> Prelude dropWhile :: (a -> Bool) -> [a] -> [a]
13:42:57 <lambdabot> Data.List dropWhile :: (a -> Bool) -> [a] -> [a]
13:42:57 <lambdabot> Prelude filter :: (a -> Bool) -> [a] -> [a]
13:43:07 <elliott_> Deewiant: I bet that's some fancy applicative construction
13:43:08 <elliott_> Go go go
13:43:28 <ais523> @hoogle [a -> Int] -> [a] -> [[a]]
13:43:28 <lambdabot> GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]]
13:43:28 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
13:43:28 <lambdabot> GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
13:43:39 <CakeProphet> society
13:43:39 <ais523> @hoogle [a -> Integer] -> [a] -> [[a]]
13:43:39 <lambdabot> GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]]
13:43:40 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
13:43:40 <lambdabot> GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
13:43:40 <CakeProphet> is crazy.
13:43:48 <ais523> none of those are what I want
13:43:56 <ais523> wait, why the square brackets?
13:44:00 <ais523> @hoogle (a -> Integer) -> [a] -> [[a]]
13:44:01 <lambdabot> GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]]
13:44:01 <lambdabot> GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
13:44:01 <lambdabot> Prelude map :: (a -> b) -> [a] -> [b]
13:44:07 <elliott_> ais523: intentionally, duh
13:44:16 <Deewiant> elliott_: What is that supposed to do
13:44:19 <ais523> elliott_: I mean, in /my/ query
13:44:40 <elliott_> > let finds fs (x:xs) = map (++ finds fs xs) $ map (\f -> if f x then [x] else []) fs in finds (map (==) [0..]) [0..]
13:44:41 <lambdabot> Occurs check: cannot construct the infinite type: t = [t]
13:44:53 <elliott_> Meh
13:45:31 <ais523> elliott_: what's the Haskell to copy-replace the nth element of a list?
13:45:32 <elliott_> Oh, wouldn't work anyway
13:45:37 <elliott_> ais523: don't do that
13:45:39 <Deewiant> > let finds fs (x:xs) = concatMap (++ finds fs xs) $ map (\f -> if f x then [x] else []) fs in finds (map (==) [0..]) [0..]
13:45:42 <lambdabot> [0*Exception: stack overflow
13:45:47 <ais523> elliott_: even lazily?
13:45:59 <ais523> or, well, apply a function to the nth element of a list
13:46:02 <elliott_> ais523: yeah, laziness is a magic bullet that makes slow things super-fast
13:46:03 <ais523> keeping the rest of the list the same
13:46:10 <elliott_> you still pay for it in the thunks
13:46:17 <elliott_> but more importantly, you don't index lists
13:46:26 <elliott_> if you're indexing lists a lot, you've done something awful
13:46:28 <ais523> what do you index, instead?
13:46:33 <Deewiant> Arrays, typically
13:46:34 <ais523> it was going to be a pretty short list
13:46:35 <elliott_> something that isn't a list
13:46:37 <elliott_> a tree or a vector
13:46:43 <ais523> Deewiant: Haskell has arrays?
13:46:48 <Deewiant> ais523: Yes
13:47:00 <elliott_> ais523: no. haskell is a toy language
13:47:13 <elliott_> everyone writes their performance-critical haskell code with singly-linked lists
13:48:06 * elliott_ is also totally serious
13:48:07 <ais523> meh, I'm the sort of person who'd prefer the code to be expressed as lists and the compiler to figure out how to optimize that
13:48:20 <elliott_> yes, you're the sort of person whose programs don't run within acceptable time limits
13:48:40 <ais523> why should it be the programmer's responsibility to make basic data structures work quickly?
13:48:44 <CakeProphet> > listArray (0,MaxBound-1) [1..]
13:48:45 <lambdabot> Not in scope: data constructor `MaxBound'
13:48:48 <elliott_> /kick ais523 trolling
13:48:51 <CakeProphet> > listArray (0,maxBound-1) [1..]
13:48:52 <lambdabot> Ambiguous type variable `a' in the constraints:
13:48:52 <lambdabot> `GHC.Num.Num a'
13:48:52 <lambdabot> ari...
13:48:56 <CakeProphet> ah
13:49:02 <CakeProphet> > listArray (0,maxBound-1::Int) [1..]
13:49:04 <lambdabot> Terminated
13:49:10 <CakeProphet> oh come on.
13:49:13 <CakeProphet> that's perfectly reasonable.
13:49:27 <Vorpal> > maxBound-1::Int
13:49:28 <lambdabot> 9223372036854775806
13:49:33 <Vorpal> really?
13:49:38 <CakeProphet> yeah dude.
13:49:41 <Deewiant> > 2^63-1
13:49:42 <lambdabot> 9223372036854775807
13:49:50 <Vorpal> CakeProphet, no it isn't
13:49:56 <Vorpal> CakeProphet, it would have been if 32-bit, sure
13:50:02 <elliott_> gah, Network.HTTP is unusable
13:50:13 <Vorpal> elliott_, why?
13:50:18 <CakeProphet> Vorpal: what if I want ALL MEMORY in my array?
13:50:18 <elliott_> stupid api
13:50:27 <Vorpal> CakeProphet, ...
13:50:35 <CakeProphet> Vorpal: it's critical to my application.
13:50:58 <Vorpal> CakeProphet, then run it locally on a 128-bit system?
13:51:22 <CakeProphet> wouldn't that be the same thing?
13:51:24 <ais523> OK, so students seem to have found a way to cheat
13:51:30 <CakeProphet> ais523: my god.
13:51:32 <CakeProphet> incredible.
13:51:38 <ais523> they're using the FFI to access the standard libraries without having to mention their names
13:51:41 <CakeProphet> all of academia will crumble.
13:51:49 <ais523> and thus getting around the restriction on which modules they're allowed to use
13:51:54 <ais523> that's nicely creative, I guess?
13:52:03 <CakeProphet> ais523: Haskell class?
13:52:05 <Vorpal> ais523, heh
13:52:14 <CakeProphet> I didn't know those existed.
13:52:23 <ais523> CakeProphet: OCaml
13:52:23 <Vorpal> ais523, why would you allow access to the FFI in the first place in that context?
13:52:27 <CakeProphet> oh.
13:52:40 <ais523> Vorpal: well, because it doesn't do anything that was blacklisted
13:52:44 <Vorpal> heh
13:52:48 <ais523> this is always the danger with blacklisting-based security
13:52:51 <elliott_> ais523: that's beautiful
13:52:55 <elliott_> ais523: give them top marks
13:53:01 <ais523> I'm glad I have a whitelisting-based security too, on the syscalls that can be used
13:53:07 <ais523> elliott_: I'd let it pass, only the answer was wrong
13:53:14 <elliott_> heh
13:53:16 <ais523> people are trying to miss the point of the question by converting the lists of digits to strings
13:53:16 -!- sebbu2 has changed nick to sebbu.
13:53:27 <ais523> my testsuite gets around that by giving them lists that don't fit into ints
13:53:34 <elliott_> ais523: are these master's students or
13:53:42 <ais523> first years
13:53:55 <elliott_> ais523: :( how am i ever gonna get that cool that quickly
13:53:57 <Vorpal> ais523, I used qsort() to answer a badly worded "implement a sorting algorithm" assignment. It passed with a note along the lines of "nice trick, will change the wording for the next year"
13:53:59 <elliott_> i better read up on ocaml's ffi
13:54:15 <ais523> elliott_: well, they're just using "external" declarations
13:54:22 <ais523> I'm not sure if that's FFI or someting else, but it looks FFIish
13:54:36 <elliott_> yep, looks like it
13:54:46 <elliott_> and the stdlibs appear to be conveniently defined with them
13:54:48 <Vorpal> ais523, note that the assignment was in python, so it involved FFI as well
13:54:54 -!- saahil has joined.
13:55:17 -!- saahil has left.
13:55:18 <fizzie> I put a custom bignum implementation in one of the weekly exercises of the C course; and other assorted curiosities, like Blowfish in the one which suggested ROT-13 for "encryption"; and no-one ever commented on them at all. :(
13:55:23 <ais523> Vorpal: wait, you used /C/'s qsort to answer a Python question?
13:55:41 <ais523> fizzie: that's a sign of overengineering in protest at the question
13:55:54 <Vorpal> ais523, yes because the FFI (ctype I think? Or some other FFI bit of python, forgot which one) capabilities weren't blacklisted
13:55:56 <elliott_> fizzie: Aww.
13:56:11 <fizzie> ais523: It's also/instead a sign of too much free time, perhaps.
13:56:11 <Vorpal> ais523, anyway I was bored when I did that. Got to have some fun
13:56:15 <elliott_> hmm, does curl do persistent connections?
13:56:20 * ais523 compare [1; 0; 7; 3; 7; 4; 1; 8; 2; 5] [1; 0; 7; 3; 7; 4; 1; 8; 2; 3]
13:56:35 <ais523> not so much you can do to catch out people who are converting to an integer in a list-of-digits comparison question
13:56:49 <ais523> but those are either side of OCaml's MAXINT, which should
13:57:19 <ais523> (the students who fail on that testcase will get feedback telling them that that's the testcase they failed on, which might clue them in as to what they're doing wrong)
13:57:36 <Vorpal> ais523, there was another python assignment where I handed in two versions: A pure python one and a cython one. Then pointed out that python was very unsuitable for a game AI using alpha-beta pruning based on the maximum ply-depths that could be achieved by the respective versions.
13:58:24 <Vorpal> well for interactive use that is
13:58:32 <Vorpal> I think it was like 5 and 7, or such
13:59:28 <elliott_> ais523: hmm, are you writing this thing to try and fill some byzantine rule that says you have to be completely objective about your marking? I wouldn't put it past you :)
13:59:49 <ais523> elliott_: no, I'm writing it because marking thousands of submissions by hand would take far too long
13:59:59 <ais523> and get very boring, and I'd probably make mistakes
13:59:59 <elliott_> ais523: that's much more boring
14:00:32 <Vorpal> ais523, how many students are taking that class?
14:00:36 <elliott_> ais523: if they get testcase feedback, can't they just hardcode your testcases like anagolf? :)
14:00:44 <ais523> Vorpal: around 100
14:00:51 <Vorpal> heh
14:01:13 <ais523> elliott_: they get feedback on some but not all of the test cases
14:01:30 <ais523> that was inspired by anagolf
14:01:30 <ais523> (i.e. if their program works on the first n but fails on the n+1th and n is large enough, they don't get told what they did wrong)
14:01:30 <Vorpal> that is quite a lot
14:02:15 <CakeProphet> django hell is a scary place.
14:03:19 <CakeProphet> hmmm why is tree not installed by defalt in ubuntu?
14:03:37 <ais523> yay, my marking script handled the change to DST correctly
14:03:49 <elliott_> hmm, I wonder whether downloading in parallel will pay off
14:03:52 <ais523> (I put extra effort into making sure it did timezone math right)
14:04:00 <elliott_> probably not, HTTP pipelining should take care of any overhead for the small files
14:04:16 <Vorpal> elliott_, if they are from different hosts, sure
14:04:24 <elliott_> they're not
14:04:43 <Vorpal> elliott_, iirc aptitude downloads in parallel if the packages come from different hosts, like the main repo mirror and a PPA
14:04:59 <elliott_> I'm probably worrying too much about this package manager's download experience :) but I sure do hate every existing package manager's handling of that
14:05:00 <elliott_> for example
14:05:03 <Vorpal> but in serial if from a single host
14:05:04 <ais523> To: . <.>
14:05:07 <elliott_> I'm pretty sure pacman doesn't use persistent http requests at all
14:05:13 <elliott_> it has a noticeable pause between downloading tiny tiny files
14:05:16 <elliott_> awful
14:05:18 <ais523> hilariously, Evolution linked the second .
14:05:32 <elliott_> Vorpal: eh, that sounds rare enough for me to not care
14:05:45 <elliott_> Vorpal: the most likely scenario would be getting some binary packages from another repo that depend on stuff in the main report
14:05:46 <elliott_> repo
14:05:50 <Vorpal> elliott_, well, the main mirror I use maxes out my connection anyway
14:05:52 <elliott_> Vorpal: I'll just group by repo so it does it as two concentrated downloads
14:06:00 <Vorpal> hm
14:06:02 <ais523> elliott_: upgrading some packages from -proposed and some from -security?
14:06:08 <elliott_> Vorpal: I'll probably do the equivalent of "apt-get update" in very-parallel,t hough
14:06:13 <elliott_> s/,t /, t/
14:06:18 <elliott_> since that's a large number of small files
14:06:20 <elliott_> latency dominates
14:06:33 <fizzie> I was rather happy that the phone alarm clock, when setting an alarm across the DST boundary on Saturday evening, managed to correctly calculate the "HH:MM before next alarm" info-text it shows.
14:06:38 <Vorpal> elliott_, well it was for update, I think I have the bzr PPA and got an upgrade to that and to the main repo at the same time, thus noticed this
14:07:08 <elliott_> I'll probably just encapsulate this so I can add fancy parallel logic later :P
14:07:10 <elliott_> but pipelining is a must.
14:07:15 <Vorpal> sure
14:08:12 <CakeProphet> elliott_: if you have multiple cores I would think utilizing parallel would generally payoff
14:08:16 <elliott_> ais523: you'll be pleased to know I'm using INTERCAL version numbers as the pathological test case for my version handling in my package manager
14:08:19 <CakeProphet> unless the program itself is written to utilize multiple cores.
14:08:22 <elliott_> CakeProphet: ...for a download?
14:08:28 <elliott_> MORE CPUS MORE BROADBAND
14:08:28 <CakeProphet> elliott_: oh... no.
14:08:28 <ais523> elliott_: you told me that already
14:08:34 <elliott_> ais523: no I didn't
14:08:36 <elliott_> at least, not recently
14:08:41 <ais523> well, you did with inst
14:08:47 <CakeProphet> elliott_: THE CPU ISN'T ASKING FAST ENOUGH
14:08:47 <ais523> and I'm assuming the package manager's basedo n that
14:08:50 <ais523> *on that
14:08:54 <CakeProphet> elliott_: ASK CONCURRENTLY
14:09:06 <elliott_> ais523: it's not
14:09:08 <CakeProphet> "may I please have bytes" * 4
14:09:11 <Vorpal> <elliott_> MORE CPUS MORE BROADBAND <-- only in uplink.
14:09:22 <elliott_> ais523: anyway, inst didn't actually do any version number handling
14:09:29 <elliott_> ais523: I have to decide which version numbers are bigger than others
14:09:49 <elliott_> ais523: I think it can handle INTERCAL versions perfectly, it'll just need to take them in reversed form (as an internal field; the user will still see the true version number in the UI)
14:09:55 <elliott_> component-reversed, that is
14:10:01 <Vorpal> heh
14:10:44 <ais523> elliott_: Debian's version is to use version sort (i.e. contiguous numbers sorting as numbers, otherwise sorting alphabetically), with ~ being lexicographically negative
14:10:50 <ais523> that is, 0.1~alpha1 sorts before 0.1
14:10:52 <Vorpal> elliott_, wait isn't there some program that have the version counting down?
14:10:52 -!- derrik has quit (Quit: left).
14:10:56 <ais523> (but after 0.05)
14:11:14 <elliott_> Vorpal: That can be represented as -n
14:11:16 <ais523> err, perhaps it actually sorts before 0.05 too
14:11:17 <elliott_> aka pren
14:11:23 <ais523> otherwise, you have the 0.9 0.10 problem
14:11:39 <Vorpal> elliott_, hm
14:11:39 <ais523> leading 0s on a component part would imply it's meant to be interpreted as a decimal, though…
14:11:53 <elliott_> ais523: I'm going to do something like: Map minus sign to "pre"; split into components (on "."); sort components as list, where each individual component is done numerabetically
14:11:59 <Vorpal> ais523, I will make a package that uses fractions for the version number
14:12:01 <elliott_> ais523: oh, actually
14:12:10 <Vorpal> like foo-3/4
14:12:18 <Vorpal> or foo-1/3
14:12:23 <elliott_> ais523: I'm going to do something like: Map minus sign to "pre"; split into components (on "."); sort components as list, where each individual component is done numerically, with any letter on the end becoming the first digit
14:12:27 <elliott_> or... something like that
14:12:31 <elliott_> nix gets it almost right, anyway
14:12:39 <ais523> elliott_: distinguish 0.5-1 from 0.5.-1
14:12:40 <elliott_> ais523: point is, 3.1a is older than 3.1
14:12:48 <elliott_> also, what the heck is 0.5-1?
14:12:52 <Vorpal> elliott_, ooh another idea for screwy version number: foo-|1+2i|
14:12:54 <ais523> elliott_: 0.5, patchlevel 1
14:12:54 <elliott_> that looks like a package revision number thing
14:12:59 <elliott_> which isn't part of the version in my system
14:13:08 <ais523> well, it might be part of someone else's version numbre
14:13:09 <ais523> *number
14:13:51 <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in spite of frantic operate routine and large operate pressure from the skin. What do you think that they have got sufficient time to observe all attractiveness strategies and tips that his grandmother utilized to abide by?
14:14:04 <Vorpal> what
14:14:23 <ais523> we have two different spambots atm; one posts coherently, the other is a markovbot
14:14:24 <fizzie> Version numbers of the form e^(in), with 'n' incrementing -- because it's all cyclic, man. Far out.
14:14:30 <ais523> but they both have pretty similar content apart from that
14:14:37 <ais523> I'm beginning to wonder if one spambot is using the other as input
14:14:43 <Vorpal> heh
14:15:08 <Vorpal> fizzie, nice
14:15:33 <coppro> haha
14:16:08 <Vorpal> fizzie, problem is distros are going to just use n for the version number there
14:16:14 <elliott_> `addquote <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in spite of frantic operate routine and large operate pressure from the skin. What do you think that they have got sufficient time to observe all attractiveness strategies and tips that his grandmother utilized to abide by?
14:16:16 <HackEgo> 706) <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in spite of frantic operate routine and large operate pressure from the skin. What do you think that they have got sufficient time to observe all attractiveness strategies and tips that his grandmother utilized to abide by?
14:16:21 <Vorpal> fizzie, you have to make that impossible somehow
14:16:36 <Vorpal> hm
14:16:42 <ais523> elliott_: it's really <spambot>
14:16:49 <elliott_> ais523: yes, but that's less baffling
14:17:09 <ais523> well, people know it's me and Keymaker who deal with the spam, and Keymaker rarely comes here
14:17:14 <fizzie> Vorpal: Well... you could do the TeX "converges into an irrational number" thing, except make it converge as (sin x)/x (take the minima and maxima) or something, so that it wobbles up and down, not monotonically like "always add one digit" does.
14:17:15 <ais523> so it's not a hard inference that I was quoting a spambot
14:17:30 <Vorpal> fizzie, good idea
14:17:54 <ais523> Debian got caught out beautifully by C-INTERCAL 1.28
14:18:05 <ais523> as they used the version number literally before realising what they'd done wrong
14:18:14 <Vorpal> ais523, heh
14:18:17 <ais523> (it should have been sanitised to 0.28.1 at that point)
14:18:22 <Vorpal> ais523, so how did they solve it?
14:18:24 <ais523> (but they didn't catch it)
14:18:29 <ais523> Vorpal: the next version number was 29:0.2
14:18:32 <ais523> *29:0.29
14:18:33 <Vorpal> heh
14:18:44 <ais523> which is a complete abuse of the epoch field, and the packaging guidelines specifically say not to do that
14:18:49 <elliott_> ais523: this is why you use Kitten's package manager; you can just define the ordering version as a /function/ of the actual version
14:18:56 <Vorpal> ais523, well, what options did they have at that point?
14:19:05 <ais523> Vorpal: 1:0.29 would be correct
14:19:08 <Vorpal> ah
14:19:16 <ais523> or perhaps 1:0.29.0
14:19:24 <Vorpal> so why didn't they do that then hm
14:19:27 <ais523> or even 1:29.0
14:19:28 <ais523> don't ask me
14:19:33 <Vorpal> oh well
14:19:46 <Vorpal> ais523, what was the clc numbering now again?
14:20:11 <elliott_> ais523: order_version = reverse (version_components version)
14:20:14 <ais523> Vorpal: it's just like regular numbering; it sorts lexicographically by component
14:20:22 <elliott_> ais523: see???? SO MANY ADVANTAGES
14:20:28 <ais523> it's just that the components can potentially be negative
14:20:31 <Vorpal> ah
14:20:32 <ais523> elliott_: what if you don't know Haskell?
14:20:33 <Vorpal> right
14:20:43 <elliott_> ais523: have you ever /seen/ a Debian package?
14:21:29 <ais523> elliott_: I've even /made/ a Debian package
14:21:37 <ais523> no Haskell knowledge required
14:21:54 <ais523> hmm, how do you install ghci on Gentoo, where you can't bootstrap it with a binary?
14:21:56 <elliott_> ais523: good thing my quoted snippet wasn't Haskell either, then
14:22:04 <elliott_> ais523: but seriously, Debian packages are impossible to read
14:22:13 <elliott_> you might have "made" one with automated tools, but they're unmaintainable binary blobs themselvse
14:22:13 <ais523> elliott_: I don't have much problems reading them
14:22:15 <elliott_> themselves
14:22:20 <elliott_> except that people actually have to maintain them
14:22:25 <ais523> and no, they aren't binary blobs
14:22:28 <elliott_> ais523: I take it you've never looked at the gcc package's debian directory
14:22:31 <ais523> they're binary, but it's just a standard tarball
14:22:39 <elliott_> <ais> hurr what is hyperbole
14:22:50 <ais523> or perhaps arball
14:23:20 <ais523> yep, I deleted my gcc Debian source package as it was taking up too much space
14:24:36 <CakeProphet> @hoogle (#)
14:24:37 <lambdabot> keyword #
14:24:37 <lambdabot> GHC.Exts C# :: Char# -> Char
14:24:37 <lambdabot> GHC.Exts D# :: Double# -> Double
14:24:41 <Vorpal> <ais523> hmm, how do you install ghci on Gentoo, where you can't bootstrap it with a binary? <-- you bootstrap it with a binary
14:24:44 <CakeProphet> ah right.
14:25:25 <Vorpal> ais523, or even use a binary package version. They provide that for a few things, like openoffice, firefox, thunderbird, ghc. Where compiling takes ages and/or is a PITA
14:26:04 <ais523> there seems something so wrong about binary packages in Gentoo
14:26:29 <elliott_> hmm, I think http-enumerator is my best bet
14:26:32 <elliott_> even if it has 389573489573894578934578934534789545 dependencies
14:26:38 -!- tiffany has joined.
14:26:57 <Vorpal> ais523, well, you have to start out with a boot strap environment too. Which is a binary download. So you can build your own environment from that point
14:27:41 <ais523> I vaguely assumed you bootstrapped it from your previous OS
14:27:56 <Vorpal> ais523, nah, that is LFS
14:28:09 <ais523> hmm, wasn't someone talking in here a while back about a script that downloaded the book about LFS and parsed it for the commands it needed to run?
14:28:22 <ais523> I was wondering if it used OCR, that'd be even more hilarious
14:28:41 <Vorpal> ais523, gentoo gives you a manual that tells you to run fdisk and mkfs and so on as required, then mount it somewhere and unpack a stage3.tar.gz with some flags to preserve permissions properly
14:28:45 <Vorpal> then you chroot into that
14:28:57 <Vorpal> and run various commands
14:29:03 <Vorpal> usually done from a livecd
14:29:16 <Vorpal> could be done from another installed linux system, sure
14:29:31 <elliott_> <ais523> hmm, wasn't someone talking in here a while back about a script that downloaded the book about LFS and parsed it for the commands it needed to run?
14:29:32 <elliott_> yep
14:29:39 <elliott_> it's actually "official"
14:29:48 <Vorpal> ais523, the book is some HTML pages, no need for OCR
14:30:10 <elliott_> it's docbook, i think
14:30:24 <Vorpal> oh maybe the html pages are generated from that
14:30:26 <Vorpal> quite possible
14:30:57 <elliott_> httpRedirect :: (MonadIO m, Failure HttpException m) => Request m -> (Status -> ResponseHeaders -> Iteratee ByteString m a) -> Manager -> Iteratee ByteString m a
14:31:01 <elliott_> whoo boy
14:31:17 <Vorpal> that looks annoying
14:32:16 <elliott_> Vorpal: what does?
14:32:21 <Vorpal> the type
14:32:22 <Vorpal> elliott_, btw I'm pretty sure you can get wget to pipeline requests (or at least reuse the connection) by giving it several files on the command line
14:32:29 <elliott_> yes, I'm sure curl does that too
14:32:31 <Vorpal> I remember doing so at some point
14:32:39 <Vorpal> might have been recursive mode though
14:40:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:40:50 <Sgeo|web> main = attermptToStopAnIdiotFromDying
14:40:52 <Vorpal> Phantom__Hoover, I now hold the last discworld book in my hand :)
14:41:04 <elliott_> last, eh
14:41:10 <Vorpal> latest
14:41:12 <elliott_> I suppose it's gotta be close to
14:41:33 <elliott_> wonder when he'll take the plunge
14:44:05 -!- Sgeo|web_ has joined.
14:46:29 <elliott_> http://sprunge.us/HihB
14:46:34 <elliott_> I am getting quite bored of typing n
14:47:42 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
14:48:40 <elliott_> Deewiant: This is why people are wary of dependencies:
14:48:42 <elliott_> warning: the following (2) packages will be installed by pacman: haskell-utf8-string haskell-zlib
14:48:42 <elliott_> searching AUR...
14:48:42 <elliott_> Targets (32): haskell-semigroups-0.8-1 haskell-primitive-0.3.1-18 haskell-tagged-0.2.3.1-1 haskell-largeword-1.0.1-1 haskell-entropy-0.2.1-1 haskell-zlib-bindings-0.0.1-1 haskell-vector-0.7.1-18 haskell-cryptohash-0.7.3-1 haskell-base-unicode-symbols-0.2.2.1-1 haskell-dlist-0.5-18 haskell-cryptocipher-0.2.14-3 haskell-crypto-api-0.6.4-4 haskell-cereal-0.3.3.0-18 haskell-hashable-1.1.2.1-1 haskell-zlib-enum-0.2.1-22 haskell-tls-extra-0.3.1-4 haskell-tls-
14:48:42 <elliott_> 0.7.2-4 haskell-monad-control-0.2.0.3-1 haskell-http-types-0.6.5.1-3 haskell-failure-0.1.0.1-18 haskell-enumerator-0.4.14-1 haskell-data-default-0.3.0-1 haskell-cprng-aes-0.2.1-23 haskell-certificate-0.9.1-4 haskell-case-insensitive-0.3.0.1-1 haskell-blaze-builder-enumerator-0.2.0.3-1 haskell-blaze-builder-0.3.0.1-18 haskell-base64-bytestring-0.1.0.3-1 haskell-attoparsec-enumerator-0.2.0.4-22 haskell-attoparsec-0.9.1.2-1 haskell-asn1-data-0.5.1-22 haske
14:48:47 <elliott_> ll-http-enumerator-0.7.0-4
14:49:06 <ais523> why are those dependencies needed?
14:49:36 <elliott_> To do things, presumably
14:50:07 <elliott_> OTOH you're unlikely to get me to agree with your "it's easier to rewrite any library than to use it" stance either, so it's probably pointless expressing it
14:50:24 <elliott_> :p
14:50:40 <ais523> elliott_: "any library" is wrong, there
14:50:49 <ais523> it depends on exactly what you're doing
14:51:23 <Deewiant> Looks like trifecta's dependency list
14:51:37 <elliott_> Deewiant: At least this one is flattened out
14:51:48 <elliott_> Deewiant: With trifecta you at least have the guarantee that 90% of them are by the same person
14:52:40 <elliott_> I've been sitting at this install prompt for ten minutes wondering whether to say y or not
14:52:51 <Deewiant> Where'd you get those dependencies from
14:53:06 <elliott_> haskell-http-enumerator
14:53:32 <elliott_> It has a simpler API than the HTTP package and I can't figure out how to do streaming downloads with the latter
14:54:48 <elliott_> But
14:54:50 <elliott_> So many dependencies
14:55:53 <Phantom__Hoover> <Vorpal> Phantom__Hoover, I now hold the last discworld book in my hand :)
14:55:55 <Phantom__Hoover> I... how...
14:55:58 <Phantom__Hoover> Do...
14:56:05 <Phantom__Hoover> Does Sweden have book rockets.
14:56:11 <ais523> elliott_: oh right, I thought you meant those dependencies were on utf8-string and zlib
14:56:14 <ais523> and I was wondering why
14:56:22 <ais523> as in, from utf-8 and zlib
14:56:28 <elliott_> lol
14:56:41 <Phantom__Hoover> Do you order a book, and half an hour later a missile slams into your front garden and there's a book in it.
14:57:27 <ais523> Phantom__Hoover: no
14:57:54 <elliott_> ais523: you're not Swedish
14:58:37 <Phantom__Hoover> Manchester is in Sweden, isn't it?
14:59:25 <ais523> I'm not in Manchester
14:59:51 <elliott_> Dependenciesasn1-data (≥0.5.1 & <0.7), attoparsec (≥0.8.0.2 & <0.10), attoparsec-enumerator (≥0.2.0.4 & <0.3), base (4.*), base64-bytestring (0.1.*), blaze-builder (≥0.2.1 & <0.4), blaze-builder-enumerator (0.2.*), bytestring (≥0.9.1.4 & <0.10), case-insensitive (≥0.2 & <0.4), certificate (≥0.7 & <1.1), containers (≥0.2 & <0.5), cprng-aes (0.2.*), data-default (0.3.*), enumerator (≥0.4.9 & <0.5), failure (0.1.*), http-types (0.6.*), m
14:59:51 <elliott_> onad-control (0.2.*), network (≥2.2.1 & <2.2.3), network-bytestring (0.1.3.*), tls (≥0.8.1 & <0.9), tls-extra (≥0.3 & <0.5), transformers (0.2.*), utf8-string (≥0.3.4 & <0.4), zlib-enum (0.2.*) or
14:59:51 <elliott_> asn1-data (≥0.5.1 & <0.7), attoparsec (≥0.8.0.2 & <0.10), attoparsec-enumerator (≥0.2.0.4 & <0.3), base (4.*), base64-bytestring (0.1.*), blaze-builder (≥0.2.1 & <0.4), blaze-builder-enumerator (0.2.*), bytestring (≥0.9.1.4 & <0.10), case-insensitive (≥0.2 & <0.4), certificate (≥0.7 & <1.1), containers (≥0.2 & <0.5), cprng-aes (0.2.*), data-default (0.3.*), enumerator (≥0.4.9 & <0.5), failure (0.1.*), http-types (0.6.*), monad-control
14:59:55 <elliott_> (0.2.*), network (2.3.*), tls (≥0.8.1 & <0.9), tls-extra (≥0.3 & <0.5), transformers (0.2.*), utf8-string (≥0.3.4 & <0.4), zlib-enum (0.2.*)
15:00:02 <elliott_> Deewiant: Challenge: Figure out what essential difference the "or" is expressing
15:00:09 <Phantom__Hoover> ais523, but you are in Sweden?
15:00:34 <Deewiant> elliott_: network
15:00:54 <elliott_> Deewiant: Wow, skillz
15:00:58 <elliott_> I couldn't figure it out at all
15:01:04 <ais523> Phantom__Hoover: where did I imply that?
15:01:18 <Phantom__Hoover> ais523, well, you never /contradicted/ it.
15:01:28 <ais523> and still haven't
15:03:09 <elliott_> ais523: hmm... log out of nickserv for a minute
15:03:18 <ais523> elliott_: why?
15:03:25 <ais523> that's quite a suspicious request
15:03:32 <elliott_> ais523: so I can do nefarious things, duh
15:03:34 <elliott_> specifically, whois you
15:03:45 <elliott_> error: target not found: haskell-data-default=0.3.0
15:03:52 <elliott_> Deewiant: Bonus: The package is broken
15:03:58 <Deewiant> elliott_: This is why I use cabal-install
15:04:07 <elliott_> Deewiant: This is the first time it's broken :P
15:04:16 <Deewiant> elliott_: Well, it broke once for me and that was enough
15:04:30 <elliott_> Deewiant: Have I mentioned that Kitten's package manager completely avoids this problem
15:04:45 <ais523> wow, those are specific version number ranges
15:04:56 <ais523> elliott_: if it can't solve Sudoku, it's no good at solving version clashes
15:05:02 <Deewiant> elliott_: Because of this hackage2arch business (or whatever it was called), people just make packages all willy-nilly and then when somebody updates, if nobody else does, the dependers get screwed
15:05:09 <Deewiant> elliott_: (I guess)
15:05:19 <elliott_> Deewiant: Actually no, all the AUR packages are managed by one group
15:05:31 <elliott_> Deewiant: But they're slower than the core repos at dependencies, apparently
15:05:39 <elliott_> So they end up depending on older versions than the core repos have to offer
15:05:40 <Deewiant> elliott_: I've had intra-AUR-conflicts
15:05:49 <elliott_> Hmm, sucks to be you
15:05:59 <elliott_> Deewiant: Have I mentioned Kitten avoids this problem
15:06:07 <Deewiant> What prevents anybody from uploading their own haskell-this-is-my-library-haha?
15:06:10 -!- copumpkin has joined.
15:06:16 <elliott_> In what, AUR?
15:06:16 <Deewiant> elliott_: Let me know when it's done and working
15:06:17 <elliott_> Nothing
15:06:21 <Deewiant> elliott_: Exactly :-P
15:06:32 <elliott_> <ais523> elliott_: if it can't solve Sudoku, it's no good at solving version clashes
15:06:41 <elliott_> ais523: nah, you just don't need to solve them in the first place
15:06:48 <elliott_> <ais523> wow, those are specific version number ranges
15:06:49 <elliott_> they're not
15:06:54 <elliott_> see package versioning policy
15:07:58 <Deewiant> The package versioning policy needs a way of specifying a version range that allows for adding new (non-instance) things to a module
15:08:00 <elliott_> Deewiant: Hmm, I appear to be relatively fucked in terms of getting this library working at this juncture
15:08:10 <Deewiant> elliott_: Hence cabal-install
15:08:40 <elliott_> haskell-ansi-terminal 0.5.5-18
15:08:40 <elliott_> haskell-deepseq 1.1.0.2-2.1
15:08:40 <elliott_> haskell-mtl 2.0.1.0-3.1
15:08:40 <elliott_> haskell-network 2.3.0.2-2.1
15:08:40 <elliott_> haskell-parsec 3.1.1-2.1
15:08:41 <elliott_> haskell-text 0.11.0.5-2.1
15:08:42 <elliott_> haskell-transformers 0.2.2.0-3.1
15:08:53 <elliott_> Deewiant: That's a whole... two libraries I would have to install!! Also everything would break horribly.
15:09:34 <Deewiant> Things might not break at all depending on the precise situation
15:09:50 <Deewiant> But, if they would: go back to the wild west and cabal-install everything
15:09:51 <elliott_> Deewiant: Let me rephrase that for you: I might get lucky :)
15:10:16 <Deewiant> I think it's more a case of not getting unlucky
15:10:24 <elliott_> Deewiant: BTW, re: "Let me know when it's done and working", what do you think I'm attempting to install dependencies for my work on right now :)
15:10:55 <Deewiant> So you're working on it, great; let me know when it's done and working
15:11:04 <elliott_> Deewiant: Maybe I won't
15:13:22 -!- derrik has joined.
15:20:51 -!- ais523_ has joined.
15:21:01 -!- Darth_Cliche has joined.
15:21:38 -!- ais523 has quit (Ping timeout: 240 seconds).
15:21:41 -!- ais523_ has changed nick to ais523.
15:24:20 -!- sebbu has quit (Read error: Connection reset by peer).
15:27:38 -!- sebbu has joined.
15:27:38 -!- sebbu has quit (Changing host).
15:27:38 -!- sebbu has joined.
15:34:11 -!- derdon has quit (Remote host closed the connection).
15:40:15 <elliott_> [elliott@dinky isolate]$ cabal install ansi-terminal http-enumerator
15:40:17 <elliott_> Deewiant: I blame you
15:40:20 <elliott_> Time to wait twenty years
15:48:23 <Phantom__Hoover> I think the way Kate Beaton draws babies may be the greatest work of art the world has yet known
15:50:57 -!- tiffany has quit (Ping timeout: 258 seconds).
15:51:32 <ais523> 33554432
15:52:23 -!- tiffany has joined.
15:52:26 <elliott_> hi ais523
15:52:33 <ais523> hi
15:53:09 <Phantom__Hoover> Oh god no matter how many times I read Hark! A Vagrant it never gets old.
15:54:31 -!- monqy has joined.
16:01:37 -!- ais523_ has joined.
16:02:06 -!- ais523 has quit (Disconnected by services).
16:02:08 -!- ais523_ has changed nick to ais523.
16:26:23 <Phantom__Hoover> Huh, the Darwin Awards exclude people with mental disorders.
16:26:29 -!- ais523 has quit (Ping timeout: 248 seconds).
16:26:46 <Phantom__Hoover> I like how that basically makes it completely explicit that it's all just a front for being sneering assholes.
16:26:56 -!- ais523 has joined.
16:28:25 <elliott_> Phantom__Hoover: To be fair, it wouldn't exactly make them less of a front for being sneering assholes if they included those people.
16:28:49 <elliott_> They're kind of fucked whatever they do, which is usually a Sign(tm).
16:29:07 <Phantom__Hoover> elliott_, erm, the premise that it's for people who removed themselves from the gene pool due to poor judgement would at least be /sound/.
16:29:23 <elliott_> Well, sure.
16:30:46 <Phantom__Hoover> I also found it quite amusing when the woman who runs the site herself nearly DA'ed herself and acted like it was fine because it was a near miss.
16:32:18 -!- ais523 has quit (Ping timeout: 260 seconds).
16:34:12 -!- boily has quit (Read error: Operation timed out).
16:37:55 <elliott_> `addquote <Phantom__Hoover> (I'm not really sure what that explains but nor am I sure what I'm explaining, so it cancels out.)
16:37:58 <HackEgo> 707) <Phantom__Hoover> (I'm not really sure what that explains but nor am I sure what I'm explaining, so it cancels out.)
16:43:09 -!- Gregor has set topic: Friends don't let friends Comic Sans. | EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy) | TO SHREDS!) | http://codu.org/logs/_esoteric/.
16:43:35 <elliott_> http://en.wikipedia.org/wiki/Chunked_transfer_encoding
16:43:36 <elliott_> Oh come on!
16:43:41 <elliott_> How am I meant to implement a progress bar now?
16:44:25 <elliott_> progress.hs: StatusCodeException 403 (Chunk "Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.\n" Empty)
16:44:32 <elliott_> Wow Wikipedia, that's very impolite.
16:44:39 <elliott_> Gregor: I can use codu.org logs as a test URLspam location right
16:44:50 <Gregor> Uhh, I guess?
16:44:56 <elliott_> Thx
16:45:32 -!- sllide has joined.
16:46:52 <Phantom__Hoover> Gregor, have I mentioned that I wrote my folio essay for English on how Comic Sans was awful.
16:47:05 <Gregor> Highest-five
16:47:23 <Phantom__Hoover> I suspect it played a large part in getting me a B.
16:47:43 <Gregor> You know what would have gotten you an A? *trollface*
16:47:49 <Gregor> IF YOU HAD WRITTEN IT IN COMIC SANS
16:48:29 <Phantom__Hoover> Nah, the folio was only worth ~20% of the total marks and it was divided into two essays.
16:52:01 <elliott_> [elliott@dinky isolate]$ curl -I http://codu.org/logs/log/_esoteric/2011-10-19
16:52:01 <elliott_> HTTP/1.1 200 OK
16:52:01 <elliott_> Date: Fri, 04 Nov 2011 16:51:55 GMT
16:52:01 <elliott_> Server: Apache/2.2.21 (Debian)
16:52:01 <elliott_> X-Powered-By: PHP/5.3.8-2
16:52:02 <elliott_> Vary: Accept-Encoding
16:52:04 <elliott_> Content-Type: text/html; charset=UTF-8
16:52:08 <elliott_> Gregor: What's with the lack of Content-Length; why do you hate America
16:52:24 <Gregor> SCREW AMERICA
16:52:51 <Gregor> But more specifically, it generates the HTML and spits it out live *shrugs*
16:52:58 <Gregor> And I was too lazy to buffer just to count.
16:53:21 -!- boily has joined.
16:53:41 <elliott_> Gregor: Oh, it's node.js, isn't it :P
16:53:49 <Gregor> Indeeeeeeeeeeeeeeed.
16:53:52 <elliott_> Land of the "what the fuck is abstraction, you're dealing with HTTP yourself".
16:54:14 <elliott_> Aha, the raw logs get it right :P
16:54:15 <Gregor> Uhh ... no?
16:54:25 <Phantom__Hoover> Gregor, the glogbot rsync stuff seems to be 'broken' again.
16:54:31 <Gregor> Phantom__Hoover: Uhh ... no?
16:54:35 <Gregor> !logs
16:54:44 <elliott_> Gregor: Uhh, no?
16:54:51 <Gregor> elliott_: Uhh ... no?
16:54:58 <Gregor> Phantom__Hoover: E_WORKSFORME
16:54:59 <elliott_> WHAT ARE YOU TRYING TO EXPRSES >_<
16:55:02 <Phantom__Hoover> Uhh— no?
16:55:13 <Gregor> elliott_: <elliott_> Land of the "what the fuck is abstraction, you're dealing with HTTP yourself". // no.
16:55:20 <Phantom__Hoover> !logs
16:55:36 <elliott_> Gregor: You can hardly call node.js' API high-level :P
16:57:38 <Gregor> elliott_: Node's API for /what/? For actually running an HTTP server? Or for just generating pages? 'cuz the latter is, y'know, CGI.
16:58:04 <elliott_> Gregor: Uhh, I don't think you're meant to use its CGI stuff if you want to be Best Practices Web Scale (tm) :P
16:58:34 <Gregor> elliott_: Yeah, I definitely need a separate web server to gen logs now and then.
16:58:53 <elliott_> Gregor: I'm not saying it's required, I'm just saying that it's hardly a typical use of Node :P
17:00:07 <Gregor> elliott_: You're totally right that stalker mode should have a talk function.
17:00:11 <Gregor> It would be epic.
17:00:15 <elliott_> Yes.
17:00:28 <Gregor> <glogbot> An anonymous coward says: WHY HALLO THAR
17:00:36 <elliott_> ...Don't build it into glogbot :P
17:00:47 <elliott_> It's meant to be MORE stable than clog :P
17:01:09 <Gregor> * glogannoyingchatterbot has joined #esoteric \ <glogannoyingchatterbot> WORST IMPLEMENTATION EVER? \ * glogannoyingchatterbot has parted #esoteric
17:01:29 <elliott_> Gregor: It would be sooo hard to add another bot :P
17:01:36 <elliott_> You don't have a premade library for that or anything.
17:01:54 <elliott_> P.S. -n would solve that
17:02:15 <Gregor> I think there are maybe two channels in the history of IRC that are -n :P
17:03:14 <elliott_> Gregor: -minecraft is one of 'em :P
17:03:24 <elliott_> Gregor: It is +s but -n :P
17:03:30 <elliott_> Anyone can talk, but NOBODY CAN KNOW OF ITS EXISTENCE.
17:04:57 <CakeProphet> elliott_: I hope your mother regrets having birthed you. :P
17:05:12 <CakeProphet> (did the :P help there)
17:05:17 <CakeProphet> I'm testing out the theory of :P
17:05:55 <Phantom__Hoover> :) is the "I desperately need to be punched in the face several times" one.
17:05:59 <Gregor> Gregor's theory of :P is that :P is valid for all circumstances :P :P :P
17:06:07 <CakeProphet> Phantom__Hoover: what about :>
17:06:15 <Gregor> CakeProphet: Post-punching.
17:06:21 <CakeProphet> `? CakeProphet
17:06:27 <HackEgo> ​:>
17:06:43 <CakeProphet> @hoogle (:>)
17:06:43 <lambdabot> Data.Sequence (:>) :: Seq a -> a -> ViewR a
17:06:53 <CakeProphet> awesome.
17:07:12 <CakeProphet> I thought that operator looked familiar.
17:07:40 <CakeProphet> is Sequence a monad?
17:07:46 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
17:07:51 <CakeProphet> same as [a] right?
17:08:08 <elliott_> Gregor: Rharaeraerhgaehwegh why does your HTTP server not send Content-Length /only/ to the Haskell lib
17:08:11 <elliott_> curl sees it just fine
17:08:33 <CakeProphet> fungot: hi
17:08:33 <fungot> CakeProphet: and it's self-modifying techniques." stop immobilizes and disables you. in these bones, i shall return! by the way, the wings! now this is a way to the ocean palace? come to see you back again
17:08:43 <Gregor> elliott_: lul
17:09:22 <elliott_> Gregor: I think this library is actually TRYING to get a chunked response whenever possible :P
17:10:03 <CakeProphet> fizzie: your bot doesn't let me spam its name in privmsg and get fungotspeak
17:10:31 <elliott_> So does.
17:10:32 <elliott_> Just did it.
17:10:36 <elliott_> <fungot> elliott_: to. why, this is for you guys are a lot
17:10:36 <fungot> elliott_: so, let's say i call them mindless games. if we hit every stupid person, any person going, tough one. if we solve it,... i know...
17:10:51 <Gregor> fungot fungot fungot
17:10:52 <fungot> Gregor: it's what that guy in medina, a village near the mystic mountain" 65,000,000 b. c.? yes, i'd have done something very brave? fnord 06:22, 29, no. 2, 2, 3, 4, 8, 13, 1(::**) ...bad insn!
17:11:03 <Gregor> ^style
17:11:03 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
17:11:10 <Gregor> ^style sms
17:11:10 <fungot> Selected style: sms (National University of Singapore SMS corpus, 2011-08-20)
17:11:16 <Gregor> fungot fungot fungot
17:11:17 <fungot> Gregor: i want to sent mesages. but u'l talk
17:11:52 <elliott_> ^style homestuck
17:11:53 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
17:11:57 <elliott_> fungot: That sword alone can't ____, solve for ____.
17:11:58 <fungot> elliott_: your name is, i am just as confused. emerging from the trials in the brooding. enjoy a bevverage to me or about my fuckin manners for the roof. you have given yourself a very official?
17:12:08 <elliott_> fungot: Wrong! You have three guesses remaining.
17:12:09 <fungot> elliott_: john, the uncarved minitablet. john carved this tablet at the request. it's just a wrapper for your private reading material later
17:12:13 <elliott_> fungot: Wrong! You have two guesses remaining.
17:12:14 <fungot> elliott_: really, it it is pretty conceivable that i was about to get blown up! :o)
17:12:18 <elliott_> fungot: Wrong! You have one guess remaining.
17:12:18 <fungot> elliott_: an old colonel lost, but a new brother gained. together they will ascend, each time you must be adventurin'.
17:12:25 <elliott_> fungot: Wrong! You have no guesses remaining. Have a nice day.
17:12:36 <elliott_> See, it shut up like it's supposed to and all.
17:12:44 <monqy> does cakeprophet mean that he can't spam fungot's name because of the shutup
17:12:44 <fungot> monqy: enter name. and a whole other issue.
17:12:55 <CakeProphet> monqy: yes you are correct!
17:12:59 <CakeProphet> good job! :>
17:13:02 <monqy> :>
17:14:10 <CakeProphet> I think :> is this: http://media.tumblr.com/tumblr_lr8cphyXGf1qmiocn.jpg
17:15:35 <monqy> good picture
17:17:39 <elliott_> monqy... monqy
17:17:40 <elliott_> monqy
17:17:41 <elliott_> fix my code
17:17:46 <monqy> :(
17:18:00 <monqy> is it broken
17:18:07 <elliott_> Yes.
17:18:16 <elliott_> ACTUALLY it may be: SOMEONE ELSE'S CODE.
17:18:19 <elliott_> Let's FIND OUT.
17:23:06 <elliott_> monqy: btw try runhaskelling this to be really unnerved by your terminal: http://sprunge.us/IhEb
17:23:11 <elliott_> you will ask... whence... crahrahchters
17:27:25 <monqy> wow unnnerving
17:28:20 <elliott_> monqy: it is like a ghost story...... for your terminale.
17:30:05 <elliott_> Gregor: WHYYY DO YOU CHUNK
17:30:17 <Gregor> elliott_: Dah chunky chunks.
17:30:23 <elliott_> W;Yhy
17:30:59 <elliott_> OHHHH, those are /record fielsd/
17:31:03 <elliott_> Suddenly this library makes 10x as much sense.
17:31:41 -!- ais523 has joined.
17:34:04 <Gregor> elliott_: Try now.
17:34:10 <elliott_> Gregor: What did you do :P
17:34:20 <Gregor> elliott_: Made it buffer and send all at once I think :P
17:34:35 <elliott_> Gregor: ...but this issue is with the raw logs, which you already send content-lengths for...
17:34:39 <elliott_> Just not whenever I use Haskell.
17:34:48 <elliott_> It's literally detecting whether I'm using Haskell or not and punishing me for it.
17:34:50 <Gregor> elliott_: OH.
17:34:59 <Gregor> elliott_: I thought it was the cooked logs :P
17:35:07 <elliott_> It was before I realised that'd never work :P
17:35:11 <elliott_> Testin' progress bars here, y'understand :P
17:35:18 <Gregor> elliott_: Well Idonno why it's chunked.
17:35:34 <elliott_> I suspect this HTTP library is trying to make it be chunked for ~PERFORMANCE~ >_>
17:35:41 <monqy> chunk chunk
17:36:59 <elliott_> :t forM
17:37:00 <lambdabot> forall a (m :: * -> *) b. (Monad m) => [a] -> (a -> m b) -> m [b]
17:38:35 <elliott_> status418, statusImATeapot :: Status
17:38:35 <elliott_> I'm a teapot
17:38:46 <elliott_> -- http://hackage.haskell.org/packages/archive/http-types/0.6.6/doc/html/Network-HTTP-Types.html#v:status418
17:39:28 <monqy> apparently for real
17:39:47 <pikhq> Yes, it's part of an April Fool's RFC.
17:39:57 -!- copumpkin has quit (Read error: Connection reset by peer).
17:40:08 <pikhq> Hyper Text Coffee Pot Control Protocol.
17:40:34 <elliott_> it's just so cute that they actually gave it
17:40:35 <elliott_> a name
17:40:38 <elliott_> in a serious library
17:40:40 <elliott_> :))))))))))
17:40:40 -!- copumpkin has joined.
17:41:10 <pikhq> Status 418 is, in fact, 418 I'm a teapot.
17:41:21 <pikhq> The HTCPCP server is a teapot; the corresponding entity may be short and stout.
17:41:22 <elliott_> https://github.com/aristidb/http-types/commit/ec22a919f865f68d3da39ccb75f5d78b331606b2
17:41:24 <elliott_> good! patriot
17:41:41 <CakeProphet> 13:40 <fungot> CakeProphet: this is a really hot look for a stronger! this is so outrageous. hell fucking yes a few more things we can deploy but some things we can deploy but some things we can deploy but some things we can deploy but some things we can deploy but some things we can deploy but some things we can
17:41:42 <fungot> CakePrsw}a{~e^is@]i[iped_a/The-Prophet-Wiza:CakeProphet: what the hell was that? but from what i understand if it is applicable in any sphere, with oceans, trees, networks of pipes, the april issue of the serious business application.
17:41:43 <elliott_> thank you mbbx6spp. good person.
17:41:46 <CakeProphet> deploy but some thing we can deploy but some things we can deploy but some things wee can deploy but some things we can deploy bu
17:41:49 <elliott_> fizzie: Another corruption bug
17:42:03 <monqy> whoa there fungot
17:42:03 <fungot> monqy: and so it would continue. second, you could have a 8ody again and his little blinking in and out the back in case. you never know with that crazy. conveniently, you can watch what happened right here on the monitor has not lost his copy to save her!
17:42:35 <elliott_> i like how fungot never like
17:42:35 <fungot> elliott_: but, there are imps around, but you don't have a very exciting 24 hours or so. you say you are only here to deliver a message and then i'll put in the hallway. beyond a lot
17:42:35 <elliott_> crashes
17:42:39 <elliott_> and never permanently fucks up beyond repair
17:42:47 <elliott_> it's always "goes wack for half a message"
17:42:56 <CakeProphet> befunge is designed for reliable applications.
17:42:58 <elliott_> funge-98: durable
17:42:59 <elliott_> ye
17:42:59 <elliott_> s
17:43:08 <elliott_> fungot: hi
17:43:08 <fungot> elliott_: and it just might be all three possible codes, yielding a radically exactly the same of you.
17:43:26 * CakeProphet lol'd in real life.
17:43:36 <elliott_> at which part
17:43:42 <CakeProphet> yielding a radically exactly the same you.
17:43:45 <elliott_> the "yielding radically exactly the same" is a direct qote
17:43:59 <CakeProphet> `log yielding a radically exactly the same you.
17:44:02 <CakeProphet> elliott_: from what
17:44:04 <CakeProphet> ^style
17:44:04 <elliott_> http://www.mspaintadventures.com/?s=6&p=002986
17:44:04 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
17:44:06 <CakeProphet> oh
17:44:12 <HackEgo> 2011-11-04.txt:17:43:42: <CakeProphet> yielding a radically exactly the same you.
17:44:13 <CakeProphet> hmmm, ah yes that does sound familiar.
17:44:15 <elliott_> "You get the BETA (3+1+1+1), now yielding a radically different hash value with the Scrabble function.
17:44:15 <elliott_> Which is to say a radically exactly the same value."
17:44:26 <nooga> Objective-C is soo ugly
17:44:33 <nooga> but still better than C++
17:45:07 <CakeProphet> -- a goon
17:45:32 -!- MSleep has changed nick to MDude.
17:45:40 <elliott_> [("Date","Fri, 04 Nov 2011 17:44:55 GMT"),("Server","Apache/2.2.21 (Fedora)"),("Last-Modified","Tue, 25 Oct 2011 05:21:24 GMT"),("ETag","\"6a6180d-492e2ed-4b018b5e17d00\""),("Accept-Ranges","bytes"),("Content-Length","76735213"),("Content-Type","application/x-bzip2")]
17:45:40 <elliott_> FINALLY, THAT WORKS
17:45:44 <elliott_> monqy: friendship headers
17:46:07 <elliott_> :t lookup
17:46:08 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
17:46:11 <CakeProphet> elliott_: I'm having no such luck with Django 1.4
17:46:20 <CakeProphet> perhaps I shouldn't use pre-alpha releases of giant enterprisey things.
17:46:46 <elliott_> also maybe don't use python
17:47:09 <elliott_> does anyone know where i can download a bunch of really small files
17:47:15 <elliott_> like 100K
17:47:20 <elliott_> or less
17:48:28 <CakeProphet> elliott_: the internet.
17:48:33 <elliott_> thanks
17:48:55 <CakeProphet> http://thepiratebay.org/torrent/6554331/Papers_from_Philosophical_Transactions_of_the_Royal_Society__fro
17:48:58 <CakeProphet> maybe?
17:49:04 <CakeProphet> they may be too large.
17:49:06 <elliott_> gnu bloat:
17:49:10 <elliott_> hello-1.3.tar.gz 23-May-1993 03:00 86K
17:49:10 <elliott_> hello-2.7.tar.gz 28-Mar-2011 18:44 586K
17:49:45 -!- boily has quit (Quit: WeeChat 0.3.6).
17:50:02 <pikhq> GNU hello now includes most of gnulib.
17:50:46 <nooga> what
17:50:57 <elliott_> hmm, I think I need some kind of task manager to do this
17:50:58 <CakeProphet> elliott_: I love how django is telling me a template file doesn't exist.
17:51:06 <CakeProphet> and then I go to check on my filesystem if it exists at that path
17:51:06 <elliott_> pikhq: this package manager's ui is going to be so sleek, do you have any idea
17:51:08 <CakeProphet> and, oh look, it does.
17:51:26 <elliott_> pikhq: run this program and you will begin to have idea: http://sprunge.us/IhEb
17:51:37 <elliott_> perfect spook program (TM)
17:52:50 <nooga> huh
17:53:09 <nooga> I hate IB
17:53:25 <elliott_> I like how nooga has been fully reduced to just talking about his OS X development life.
17:53:42 <pikhq> elliott_: God damn.
17:53:54 <elliott_> the sleekest of progress bars. the SLEEKEST.
17:53:57 <nooga> elliott_: at least I have a trusted, permanent enemy
17:54:02 <elliott_> nooga: :}
17:54:10 <nooga> :>
17:55:02 <elliott_> pikhq: btw don't ^C that program, you don't get your cursor back :P
17:55:37 <pikhq> "reset" says wut?
17:55:59 <Gregor> elliott_: How do I shot web and/or install System.Console.ANSI?
17:56:23 <elliott_> Gregor: Search "ansi-terminal" in apt-cache
17:56:27 <elliott_> If recent enough Debian there'll be a -dev package
17:56:42 <pikhq> libghc-ansi-terminal-dev did it for me.
17:56:50 <Gregor> elliott_: sid, biatch, sid!
17:57:11 <elliott_> That progress bar has a similar effect on me to w3m's image support.
17:57:26 -!- derdon has joined.
17:57:33 <elliott_> It makes me stare in horror and wonder how you can even fit that many pixels into a glyph.
17:58:02 <Gregor> elliott_: It phails hardcore for me, I'm betting I'm in some weird no-Unicode configuration due to shitty school configuration + SSH :(
17:58:20 <elliott_> Gregor: Yeah, probably best to run it locally :P
17:58:34 <Gregor> elliott_: FIXT
17:58:45 <Gregor> elliott_: That is definitely a progress bar.
17:58:59 <Gregor> elliott_: It is extraordinarily difficult to argue with the notion that that is a progress bar.
17:59:02 <elliott_> IT'S MORE PROGRESS BAR THAN TERMINALS WERE MEANT TO DISPLAY
17:59:16 <elliott_> I CANNOT COPE WITH THE NOTION OF A BAR MOVING LESS THAN ONE VT TABLE CELL AT A TIME
17:59:16 <Gregor> Indeed.
17:59:18 <fizzie> "CakePrs€w}a{~e^is@]i[iped_a/The-Prophet-Wiza:CakeProphet: what the hell was that?" <- how appropriate.
17:59:40 <elliott_> Gregor: But yeah, let's see your fancy APT give you progress bars like that!!!!
17:59:43 <elliott_> KITTEN POWER
17:59:46 <Gregor> :'(
17:59:49 <nooga> I hate that when you want to replicate GUI of any known app, you have to handcode every fucking single view BECAUSE Apple gives you only button and window ;F
18:00:38 <Gregor> elliott_: Seems you're right about nooga.
18:00:42 <elliott_> Yep!
18:01:01 <Gregor> `learn nooga hate OS X. NOOGA SMASH.
18:01:03 <HackEgo> I knew that.
18:01:12 <elliott_> X-D
18:01:38 <elliott_> So is there any known formula for calculating download speeds and download time remaining?
18:01:47 <elliott_> Like, I want something decent, not something that uses Microsoft minutes.
18:01:54 <elliott_> There has to be some fancy formula with weighting and shit :P
18:02:33 <Gregor> Nope.
18:02:37 <Gregor> There is only failure.
18:02:41 <elliott_> :'(
18:03:01 -!- ais523 has quit (Ping timeout: 248 seconds).
18:03:07 <elliott_> http://stackoverflow.com/questions/798800/whats-the-best-way-to-calculate-remaining-download-time
18:03:08 <elliott_> http://stackoverflow.com/questions/2779600/how-to-estimate-download-time-remaining-accurately
18:03:14 <elliott_> Gregor: Ha, I just neeed an EXPONENTIAL MOVING AVERAGE.
18:06:50 <pikhq> Hmm. It occurs to me... I think, in common law jurisdictions, you could actually get away with signing things using a fucking *seal*.
18:07:22 <Gregor> pikhq: Doin' it.
18:07:36 <Gregor> pikhq: You do mean the animal, right?
18:07:47 <Gregor> pikhq: *ARR' ARR'*
18:08:06 <pikhq> Gregor: I do not, sadly.
18:08:16 <Gregor> *snaps*
18:09:35 -!- pumpkin has joined.
18:09:47 <pikhq> Oh, wait, I think you could.
18:09:59 <pikhq> A signature is any mark or action that indicates identity and intent.
18:10:07 <pikhq> Brand your seals and you should be good.
18:10:45 -!- pumpkin has changed nick to copumpkin_.
18:10:55 -!- copumpkin has quit (Disconnected by services).
18:10:59 -!- copumpkin_ has changed nick to copumpkin.
18:12:31 <elliott_> @hoogle Integer -> Integer -> Rational
18:12:31 <lambdabot> Data.Ratio approxRational :: RealFrac a => a -> a -> Rational
18:12:31 <lambdabot> Data.Ratio (%) :: Integral a => a -> a -> Ratio a
18:12:31 <lambdabot> Data.Bits (.&.) :: Bits a => a -> a -> a
18:12:44 <nooga> aaaargh
18:15:52 <pikhq> Hell. I think tattooing something on you would count as a "signature".
18:16:03 <pikhq> Gotta love common law.
18:20:56 <elliott_> OMG it's working :D
18:21:19 <elliott_> pikhq: Gregor: What does Unicode have to offer in the way of fun spinners???
18:21:28 <elliott_> \|/- is so passe.
18:21:55 <Gregor> elliott_: Hmmmmmmmmmm
18:22:42 <elliott_> Spinning arrows??? Spinning SNOWMEN??? GOATS???
18:22:53 <elliott_> Pile of poo becoming slowly more and more gross until a dog eats it???
18:22:55 <elliott_> Ew.
18:23:42 -!- pumpkin has joined.
18:24:01 <Gregor> elliott_: http://www.fileformat.info/info/unicode/char/2196/index.htm and http://www.fileformat.info/info/unicode/char/2197/index.htm tick-tocking like a metronome.
18:24:14 <elliott_> X-D
18:24:18 <elliott_> I like it.
18:24:43 <pikhq> There's actually a large set of arrows.
18:24:59 <elliott_> Gregor: Ooh, these four are promising:
18:25:01 <elliott_> http://www.fileformat.info/info/unicode/char/21b0/index.htm
18:25:02 <elliott_> http://www.fileformat.info/info/unicode/char/21b1/index.htm
18:25:03 <elliott_> http://www.fileformat.info/info/unicode/char/21b2/index.htm
18:25:05 <elliott_> http://www.fileformat.info/info/unicode/char/21b3/index.htm
18:25:27 <pikhq> ←↖↑↗→↘↓↙
18:25:31 <elliott_> Except the set isn't complete >_<
18:26:03 <elliott_> What I'd really like is, like, ten rotations of ↺ :P
18:27:04 -!- copumpkin has quit (Ping timeout: 276 seconds).
18:27:47 <elliott_> OMG wait, there's more right blocks than I thought?
18:27:58 <nooga> spinning nipple
18:28:00 -!- pumpkin has changed nick to copumpkin.
18:28:07 <nooga> oh, Apple took that
18:28:46 <pikhq> elliott_: There's a symbol for each phase of the moon.
18:28:50 <pikhq> Note, not in common fonts.
18:29:10 <elliott_> Argh >_< pikhq: What codepoints are these: ▎▍▌▋▊▉
18:29:17 <elliott_> :p
18:29:38 <elliott_> OMG, what if I cycled rapidly through random Braille characters as my spinner.
18:29:41 <elliott_> That would look so cool.
18:29:43 <pikhq> http://www.fileformat.info/info/unicode/block/block_elements/list.htm
18:29:46 <pikhq> There's the block.
18:29:49 <Gregor> elliott_: That ... is pretty great, actually.
18:29:58 <pikhq> elliott_: Make it binary counting.
18:30:10 <nooga> maybe something Korean? -> http://lcweb2.loc.gov/diglib/codetables/9.3.html
18:30:13 <elliott_> Gregor: I stole that from a Stack Overflow answer >_> But, god damn, that's such an inspired idea :P
18:30:35 <elliott_> pikhq: Wrong
18:30:35 <Gregor> elliott_: Similarly you could use some of the "quadrant" blocks in what pikhq just posted.
18:30:49 <elliott_> pikhq: Note how it has all the ones from the left, but only a few from the right
18:30:53 <elliott_> I need to know where the other ones from the right are :P
18:31:22 <elliott_> nooga: Maybe
18:31:33 <elliott_> OMG ◴ ◷ ◶ ◵
18:31:41 <elliott_> Someone write a one-liner to cycle through those, I cannot believe it doesn't look cool.
18:32:47 <elliott_> $ while true; do echo -ne '\r◴'; sleep 0.1; echo -ne '\r◷'; sleep 0.1; echo -ne '\r◶'; sleep 0.1; echo -ne '\r◵'; done
18:32:50 <elliott_> Not as good as I hoped :P
18:35:47 <Gregor> elliott_: 's too small I think.
18:35:53 <elliott_> Yeah
18:38:25 <nooga> .:፧
18:38:28 <Gregor> while true; do echo -ne '\r┭'; sleep 0.1; echo -ne '\r┮'; sleep 0.1; done
18:38:29 <Gregor> NAILED IT
18:38:47 <elliott_> Gregor: Wow, what :P
18:38:55 <elliott_> It's... wriggling...
18:38:57 <Gregor> It's a spinner, viewed on its side :P
18:39:06 <elliott_> ...X-D
18:39:49 <nooga> ⁘⁙
18:40:08 <Sgeo|web_> -ne?
18:40:48 <elliott_> Sgeo|web_: ?
18:41:57 <nooga> ⁘ ⁙
18:42:04 <Gregor> while true; do echo -ne '\r\xE2\x96\x9A '; sleep 0.2; echo -ne '\r\xE2\x96\x9E '; sleep 0.2; done Perfection
18:43:10 <elliott_> Gregor: It's dancing.
18:44:44 <nooga> while true; do echo -ne '\r⁘'; sleep 0.2; echo -ne '\r⁙'; sleep 0.2; done
18:45:38 <CakeProphet> .፧ is definitely like .: but with three arguments.
18:45:55 <CakeProphet> except it's not a valid operator character. :(
18:46:10 <Gregor> elliott_: while true; do echo -ne '\r\xE2\x97\xBB\xE2\x97\xBD\xE2\x97\xBD '; sleep 0.1; echo -ne '\r\xE2\x97\xBD\xE2\x97\xBB\xE2\x97\xBD '; sleep 0.1; echo -ne '\r\xE2\x97\xBD\xE2\x97\xBD\xE2\x97\xBB '; sleep 0.1; echo -ne '\r\xE2\x97\xBD\xE2\x97\xBB\xE2\x97\xBD '; sleep 0.1; done
18:46:29 <elliott_> Gregor: Enjoying ourselves? :P
18:46:35 <Gregor> elliott_: Yes, but this one is legit good.
18:46:45 <elliott_> It is, but I can only use something one char wide >__>
18:47:02 <elliott_> Gregor: Because it'll turn into a ✓ once it's done :P
18:47:06 <elliott_> A GREEN ✓.
18:47:11 * elliott_ usability expert
18:48:16 <CakeProphet> usability experts are tools, ha ha ha
18:48:20 -!- derrik has quit (Quit: dive).
18:50:58 <nooga> nt
18:51:41 <Gregor> elliott_: So replace it with space check space *shrugs*
18:52:31 <elliott_> Gregor: I'll consider it :P
18:53:18 <Gregor> Of course, ideally the Unicode consortium would be adding characters just for this.
18:53:21 <Gregor> MEATSPIN NORTH WEST
18:53:22 <Gregor> MEATSPIN NORTH
18:53:24 <Gregor> MEATSPIN NORTH EAST
18:53:27 <Gregor> MEATSPIN EAST
18:54:52 <nooga> ELLIOTIAN MEATSPIN *
18:55:06 <elliott_> Wow, this code structure is going to be a pain :P
18:55:21 <elliott_> I need to support fully concurrent, independently-updated tasks and redraw the screen whenever any of them makes progress.
18:55:29 * elliott_ decides to throw threads at the problem.
18:55:50 <nooga> ever thought about.... GUI?
18:56:03 <elliott_> Yeah, I should write a lovely Cocoa program with that wonderful Interface Builder.
18:56:07 <nooga> yeah
18:56:08 <elliott_> It'll make this package manager so much better.
18:56:31 <nooga> you cold write some beautiful NSView subclasses
18:56:36 <nooga> and stuff
18:56:38 <nooga> gradients
18:56:41 <nooga> you know
18:57:12 <nooga> FFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ry23q;0482y[09234n]901yn]-9yn]52~nty]]Ō€5~t480ee4q
18:57:33 <nooga> I hate my job
18:58:47 <Gregor> nooga: Don't worry, it hates you too.
18:59:41 <nooga> the worst part is that I'm my own boss ;F
19:00:29 <elliott_> I suggest: Doing a job that is a different job to that.
19:00:37 * Gregor nods sagely.
19:03:41 -!- ais523 has joined.
19:03:46 <elliott_> Is there a nicer way of getting the terminal width than `tput cols`?
19:04:02 <elliott_> One that doesn't involve shelling out.
19:04:19 <ais523> elliott_: you can simulate tput cols by hand, I guess
19:04:24 <Sgeo|web_> What does echo -ne do?
19:04:26 <Sgeo|web_> And the \r?
19:04:30 <elliott_> ais523: That's sort of what I'm asking.
19:04:36 <Sgeo|web_> I guess the -e makes the \r do something?
19:04:38 <elliott_> By sort of I mean exactly.
19:05:10 -!- Guest63524 has quit (Read error: Connection reset by peer).
19:05:23 <ais523> hmm, Apache have stopped maintaining Harmony?
19:05:42 <ais523> elliott_: as far as I know, it's writing a particular terminal-dependent control string, then reading back from the terminal
19:05:48 <elliott_> Ugh
19:05:54 <ais523> so I suppose technically, you write stdout then read stdout
19:05:59 <ais523> just in case it's different from stding
19:06:01 <ais523> *stdin
19:06:04 <elliott_> Deewiant: You shoulda told me ansi-terminal didn't do width :P
19:06:11 <elliott_> EVERYTHING IS SOMEBODY ELSE'S FAULT
19:06:12 <Sgeo|web_> ...read stdout?
19:06:23 <ais523> Sgeo|web_: why not?
19:06:23 <elliott_> <ais523> *stdin
19:06:28 <ais523> it's typically open both ways
19:06:28 <elliott_> but it's perfectly possible
19:06:31 <ais523> elliott_: that was a correction on "stding"
19:06:38 <elliott_> oh, heh
19:06:45 * Sgeo|web_ may have to fix PSOX
19:06:51 <elliott_> OH NO PSOX IS BROKEN
19:06:53 <Sgeo|web_> (Note: Not actually going to fix PSOX)
19:07:05 <ais523> elliott_: ah, it isn't, it's an ioctl
19:07:16 <ais523> TCGETS, to be precise
19:07:23 <ais523> ioctls are famous for being mostly undocumented
19:07:39 * elliott_ has worked with terminal ioctls before. :-(
19:07:57 <elliott_> you know what, I'll just assume your terminal is 80 columns wide for now
19:08:13 <CakeProphet> ............django
19:08:13 <CakeProphet> why
19:08:14 <ais523> elliott_: however, I think that one might be implemented by the Secret Project
19:08:26 <ais523> the only thing worse than trying to use ioctls is trying to implement them, or something like that
19:08:33 <ais523> (note: worse things exist but wouldn't make for as pithy a quote)
19:08:53 -!- Slereah_ has joined.
19:10:53 <elliott_> reimplementing a quarter of wget with a nicer UI sure isn't fun
19:12:30 <ais523> elliott_: does wget have a programmatic interface that lets you connect it to your own progress counter, like fsck does/
19:12:46 <elliott_> ais523: just --progress=dot
19:12:54 <elliott_> and screen-scraping
19:13:00 <elliott_> (there's no terminal codes, but still)
19:13:06 <ais523> :(
19:13:35 <elliott_> ais523: why do you think I'm rolling my own? :P
19:13:58 <ais523> I was wondering if there was one and you didn't know of it
19:14:02 <ais523> I didn't know of fsck's for ages
19:14:20 <ais523> (I've never actually used it from code, although the system uses it to display fsck progress on the splash screen)
19:14:36 -!- derrik has joined.
19:14:59 <elliott_> data Task = Task
19:14:59 <elliott_> { taskName :: TVar String
19:14:59 <elliott_> , taskProgress :: TVar Rational
19:14:59 <elliott_> , taskProgressInfo :: TVar String
19:14:59 <elliott_> , taskDone :: TVar Bool
19:15:00 <elliott_> }
19:15:02 <elliott_> I guess this is coming together
19:15:18 <elliott_> hmm... maybe that should all be in a single TVar; it's not going to get independently modified
19:15:43 <nooga> what is that for?
19:15:50 <elliott_> package manager!
19:15:54 <nooga> yeah
19:16:00 <nooga> but what is the package manager for
19:16:07 <elliott_> ais523: (apparently I can't write an interactive-ish console program without trying to surpass darcs' UI in every way)
19:16:10 <elliott_> nooga: Kitten
19:16:21 <nooga> what was Kitten, again?
19:16:55 <ais523> elliott_: darcs' UI is great although not perfect, so surpassing it is always going to lead to good UIs
19:17:29 <elliott_> nooga: linux distro!
19:18:03 <nooga> oh right
19:18:06 <elliott_> ais523: My programs are pretty much either completely unusable requiring like ten shell scripts to thread them together and modifications to work with anyone else's stuff but mine, or COMPLETELY FLAWLESS HANDCRAFTED UIs.
19:18:08 <elliott_> (Mostly the former.)
19:19:06 -!- Zuu has joined.
19:19:33 <nooga> elliott_: how it would be different from other linux distros?
19:20:15 <elliott_> nooga: purely functional package and configuration manager (a la Nix), generalised to be a complete service manager; seamless multilib support; hopefully not very crap???
19:22:22 -!- sllide has quit (Read error: Connection reset by peer).
19:23:37 <nooga> do you have packages to manage?
19:25:42 <pikhq> elliott_: Hmm. So, this would probably seamlessly handle multiple libcs.
19:25:51 <elliott_> pikhq: Yep.
19:26:05 <pikhq> And thus could be the basis for a musl-and-glibc distro.
19:26:11 <elliott_> nooga: Sure, every package in a Linux distro shall be managed. Also the entirety of language-specific repos like CPAN and Hackage, seamlessly and automatically.
19:26:12 <pikhq> (glibc for everything that can't be musl)
19:26:35 <elliott_> pikhq: Yep. I'm actually intending to start off with a "regular" glibc/gcc setup and then move to musl as it becomes more usable (i.e. C++ support for WebKit :-P)
19:26:46 <pikhq> Sounds about right.
19:26:48 <ais523> what's musl?
19:26:56 <elliott_> pikhq: The nice thing about the purely-functional package management model is that dynamic linking literally means nothing any more.
19:27:10 <elliott_> It's a minor space tradeoff, a very slight time tradeoff.
19:27:14 <pikhq> ais523: musl is an alternate libc that features better performance than glibc and better size than uclibc.
19:27:18 <elliott_> Saves a bit of network bandwidth for delta updates.
19:27:33 <pikhq> While also being written reasonably well.
19:27:46 <ais523> elliott_: what if the system crashes and the partition with the libraries on can't be mounted?
19:28:09 <pikhq> ais523: Then the system is fucked, *just like any recent Linux distro*. :)
19:28:12 <elliott_> ais523: you mean the only partition that contains packages?
19:28:15 <Gregor> ais523: We all want Web o' Flies, why are you restricting it to elliott_? :(
19:28:23 <ais523> Gregor: I'm PMing it on request
19:28:27 <ais523> are you requesting?
19:28:29 <Gregor> ais523: REQUEST
19:28:37 * pikhq requesteth as well
19:28:46 <elliott_> ais523: I leaked a bit of your valuable IP in the form of the jawdropping comments, sry about that :P
19:28:46 <pikhq> Jesus this is too brilliant for me to not look at. :)
19:29:42 <ais523> wow, all the comments on the first screenful are indicative of one insanity or another
19:29:58 <ais523> and that's just in the preprocessor statements to include relevant headers with relevant options
19:30:30 <pikhq> I appreciate your _POSIX_C_SOURCE.
19:30:38 <pikhq> Though _GNU_SOURCE should suffice.
19:30:49 <ais523> pikhq: no, the value I defined it to is significant, believe it or not
19:30:51 <ais523> but I forget why
19:31:00 <ais523> 199309L is rather higher than the usual setting
19:31:25 <pikhq> Probably disabling some newer POSIX features.
19:32:25 <ais523> oh right, the first bit after the #includes is pretty crazy too
19:33:02 <ais523> I'm defining a couple of structs that aren't in any include files; the docs say you have to define them yourself, and the docs /also/ miss out a field, so if you try to define them to the docs it won't work
19:34:17 <ais523> (that's for the syscall getdents; you're not supposed to use it directly, rather using a wrapper, but you can do a few things with it that you can't via the wrapper, such as listing amazingly large directories, and ofc weboflies is at the receiving end of syscalls so it has to understand getdents, not the libc equivalents)
19:34:28 <pikhq> Oh, it's also x86-specific.
19:35:00 -!- zzo38 has joined.
19:36:32 <pikhq> Where the hell is vt_kd_kbentries, anyways?
19:37:00 <ais523> oh, it's in a separate file, let me paste that too
19:37:09 <pikhq> *Ah.*
19:37:13 <ais523> http://sprunge.us/KKPf
19:38:03 <elliott_> ais523: I can give you a build script
19:38:11 <elliott_> gcc -o weboflies -m32 -O2 -g --std=gnu99 -Wall -Wextra -Wno-missing-field-initializers -Wno-missing-braces weboflies.c ktt.c -lrt -lpng
19:38:15 <elliott_> ktt.c is that other file ais523 just pasted
19:38:17 <Vorpal> <ais523> 199309L is rather higher than the usual setting <-- hm?
19:38:26 <ais523> Vorpal: for _POSIX_C_SOURCE, IIRC
19:38:27 <Phantom__Hoover> Wait, what does `? actually do?
19:38:30 <Phantom__Hoover> `? ?
19:38:32 <HackEgo> ​? is wisdom
19:38:56 <Vorpal> ais523, take a look at man 7 feature_test_macros
19:39:02 <Vorpal> ais523, it should explain how it works
19:39:04 <elliott_> ais523: no, it's usually > 2001 or so
19:39:06 <elliott_> for the year part
19:39:30 <Vorpal> ais523, defining it to 1 just exposes the original POSIX
19:39:45 <Vorpal> usually I define it to 200112L for POSIX.1-2001
19:39:53 <Vorpal> or 200809L for POSIX.1-2008
19:40:40 <Vorpal> elliott_, I have to say that the way _XOPEN_SOURCE works in is weird. 500,600,700? How does that make sense
19:40:47 <elliott_> Vorpal: magic!
19:40:56 <zzo38> On Tuesday, FreeGeek Vancouver fixed the mail, they changed it from GNU mail to BSD mail and it could send/receive properly. But on Wednesday it broke again, somehow reverting to GNU mail. On Thursday, it worked again!
19:40:57 <Vorpal> yes yes, magic constants
19:41:05 <ais523> Vorpal: it's like BASIC line numbers, it's so they can add other values in between
19:41:38 <Vorpal> ais523, but why start at 500 hm
19:41:47 <pikhq> Vorpal: It's "5.0.0", "6.0.0", "7.0.0"
19:41:54 <Vorpal> ah, makes sense
19:42:04 <Vorpal> pikhq, what happened to 4.0.0 though?
19:42:10 <pikhq> Fuck if I know.
19:42:14 <Vorpal> and other lower numbers yeah
19:42:15 <Vorpal> hm
19:42:31 <ais523> isn't X's current version at 11, anyway?
19:42:48 <pikhq> Ah. They didn't use that macro for earlier versions.
19:43:06 <Phantom__Hoover> Some idiot is setting fireworks off outside, since they apparently can't count past three.
19:43:06 <pikhq> ais523: This is the X/Open Portability Guide standard.
19:43:16 <pikhq> *Not* the X Windowing System.
19:43:46 <ais523> why would two different things be called X?
19:44:11 <pikhq> Because people believe in confusing you.
19:44:34 <pikhq> = ERROR: stat proc/pid/fd: Permission denied
19:44:35 <pikhq> YAY
19:44:39 <elliott_> pikhq: join the club
19:44:51 <elliott_> it only works for ais523 :)
19:44:55 <elliott_> everyone else gets that error
19:44:59 <elliott_> all two of us
19:45:07 <elliott_> (you can generalise from two examples! I just did it!)
19:45:22 <ais523> elliott_: I'd /guess/ that something's changed in Linux's handling of perms
19:45:40 <pikhq> http://sprunge.us/fERT And my Makefile.
19:45:45 <ais523> along the lines of "you can't read a process's fds if there's ever been a root-owned process in the history of processes since"
19:46:15 <ais523> I suppose you could just comment out the permission dropping in the main process, but that would be insane
19:46:27 <ais523> (admittedly, it's insane enough as-is, but I don't want to make it even worse)
19:46:44 <ais523> either that, or keep the root perms in reserve for when they're needed; I don't like doing that either, but it's more secure than running as root constantly
19:46:58 <elliott_> "6:54 remaining @ 1 Mio/s" <-- hmm, this seems worryingly long
19:47:04 <elliott_> there's not much space left for the filename
19:47:19 <ais523> what filename lengths are you expecting?
19:47:21 <Vorpal> ais523, hm what kernel version are you on then that make it work?
19:47:33 <ais523> 2.6.32-35-generic
19:47:41 <Vorpal> ah, 10.04 LTS?
19:47:42 <Vorpal> right
19:47:53 <pikhq> And I'm testing on 3.0.0-1-amd64.
19:47:58 <elliott_> ^Cibreoffice-af-3.4... 368.0K 398.0K/s 00:00:02 [#####-----------------] 27%
19:47:58 <elliott_> ok, that's what pacman's looks like
19:48:37 <ais523> I think it's only just new enough to run weboflies, which requires something along the lines of 2.6.30
19:48:38 <ais523> or newer
19:49:11 <Vorpal> <elliott_> "6:54 remaining @ 1 Mio/s" <-- hmm, this seems worryingly long
19:49:11 <Vorpal> <elliott_> there's not much space left for the filename
19:49:12 <Vorpal> uh
19:49:14 <Vorpal> where?
19:49:16 <elliott_> aww, I just had a great idea that would require me to abandon my smooth progress bar format
19:49:31 <elliott_> include the progress at the head of the progress bar itself, white on green
19:49:40 <ais523> elliott_: like AceHack health bars?
19:49:49 <Sgeo|web_> Hmm
19:50:01 <Sgeo|web_> Would there be any problems with killing Flash when it's not in use?
19:50:04 <Vorpal> elliott_, as long as it work over serial console :P
19:50:07 <Vorpal> (not really)
19:50:12 <elliott_> ais523: I don't recall
19:50:36 <elliott_> hmm... /me decides that seeing how much of the file in absolute terms has downloaded so far is useless
19:50:42 <elliott_> a progress bar + total filesize is enough
19:51:08 <elliott_> "8 Gio @ 1 Mio/s; 6:54" that's better
19:51:19 <ais523> Sgeo|web_: on this system, Flash isn't even running when it's not in use
19:51:31 <ais523> $ killall plugin-container
19:51:32 <ais523> plugin-container: no process found
19:51:41 <ais523> and I assume other systems are the same
19:52:01 <pikhq> Vorpal: Funny thing is, almost everything that works with a Linux virtual terminal should work over a serial console.
19:52:20 <pikhq> The concept of a "terminal" is such a stupidly naive thing.
19:52:46 <ais523> pikhq: well, it works with a couple of FIFOs and a bunch of lying about the results of ioctls
19:53:10 <pikhq> ais523: Yeah.
19:53:17 <Vorpal> pikhq, well one connected to a line printer I meant ;P
19:53:20 <pikhq> It's a heck of a lot of lying to get programs to think it's a serial terminal.
19:53:28 <ais523> ktt.c is a lookup table for the results of the ioctl to get the keyboard translation table
19:53:42 <ais523> I have no idea what it means (and have failed to figure it out via looking at it); I obtained it by experiment
19:53:47 <pikhq> Vorpal: I'd be surprised if even vi worked like that.
19:53:56 <Vorpal> pikhq, fair enough
19:54:05 <ais523> I'm not getting programs to think it's a serial terminal; I'm getting them to think it's a VT (ctrl-alt-F1 style)
19:54:19 <ais523> and that they have complete control over the keyboard and screen while it's active
19:54:26 <pikhq> ais523: I'm discussing Linux's normal handling of pty's.
19:54:33 <ais523> ah right
19:54:41 <ais523> actually, I think weboflies does connect to a pty
19:54:45 <ais523> but disguises it as a tty
19:54:46 <pikhq> You, obviously, are adding extra magic on top of that. :)
19:56:32 <elliott_> you know, I think I might be concentrating a little too much on this package manager's download UI
19:57:29 <CakeProphet> elliott_: never
19:57:39 <CakeProphet> UI IS LIKE
19:57:43 <CakeProphet> THE KNOBS AND THE BUTTONS
19:57:47 <CakeProphet> THE STEERING WHEEL
19:57:53 <CakeProphet> YOU WANT YOUR PRODUCT TO BE SHARP.
19:57:58 <CakeProphet> AND EASY TO OPERATE.
19:58:06 <CakeProphet> the UI is the face
19:58:08 <CakeProphet> that greets your user.
19:58:27 <pikhq> More typically, the UI is the hammer. That beats your user.
19:58:29 <olsner> a face of knobs and buttons and a steering wheel? that's not a pretty face
19:58:49 <CakeProphet> tells him or her what's up, provides an... interface... for the user
19:58:51 <CakeProphet> a user interface.
19:59:16 <olsner> the UI is the anvil upon which the user must beat its head
20:05:06 <Vorpal> <elliott_> you know, I think I might be concentrating a little too much on this package manager's download UI <-- yes
20:05:14 -!- zzo38 has left.
20:05:19 <elliott_> no :)
20:05:25 <elliott_> i fucking hate pacman's and apt's
20:05:30 <Vorpal> elliott_, personally I would probably start out just calling out to wget, then later on I would try to format the output a bit
20:05:41 <elliott_> why? a call to wget is one line, there's no point
20:05:45 <elliott_> I know exactly how it'd work
20:05:54 <elliott_> I don't need to prove-of-concept to myself that I can call wget
20:06:07 <Vorpal> oh I thought you were doing the actual implementation
20:06:21 <elliott_> I am
20:06:25 <Vorpal> I would have done download the easy way
20:06:41 <elliott_> what does that buy me?
20:06:50 <elliott_> I'll have to replace it later on, anyway
20:12:21 <Phantom__Hoover> "Search within an incognito window to avoid the Google bubble. Or you could get the Tor browser." — Sensible advice from reddit on how to get rid of search tuning temporarily.
20:12:24 <nooga> Agua di Gio
20:16:22 <elliott_> progress: thread blocked indefinitely in an STM transaction
20:16:22 <elliott_> Oh no.
20:20:57 <pikhq> elliott_: The thing is that by doing the naive thing first you can get *working* code quickly.
20:21:12 <elliott_> pikhq: I already know how to write a working wget call :)
20:21:23 <pikhq> It is far easier to make working code better than to make perfect ideas work. :)
20:22:03 <nooga> the ancient problem of enginieers: idealism
20:30:18 -!- derrik has left.
20:30:26 -!- zzo38 has joined.
20:31:16 -!- GreaseMonkey has joined.
20:33:49 -!- zzo38 has left.
20:39:21 -!- pumpkin has joined.
20:42:20 -!- copumpkin has quit (Ping timeout: 258 seconds).
20:44:22 <nooga> I'm trying to code patch-bay-like view in cocoa
20:44:35 <nooga> and it sucks ;|
20:45:42 -!- sebbu has quit (Read error: Connection reset by peer).
20:46:07 -!- sebbu has joined.
20:46:11 -!- sebbu has quit (Changing host).
20:46:11 -!- sebbu has joined.
20:55:53 -!- Sgeo|web_ has quit (Ping timeout: 265 seconds).
20:56:34 -!- Zuu has quit (Ping timeout: 244 seconds).
20:56:55 -!- SgeoN1 has joined.
20:57:50 <SgeoN1> I'm starting to get concerned about the frequency of non REISUBable freezes
20:58:13 -!- Zuu has joined.
20:58:47 <twice11> SgeoN1: hardware troubles?
20:58:55 <SgeoN1> Is there a way to measure wear and tear on a flash drive?
20:59:03 <SgeoN1> twice, maybe
20:59:26 <twice11> Is the flash drive is a recent SSD, it probably reports interesting numbers via SMART.
20:59:51 <twice11> But non-responsive drives should not prevent the B in REISUB from working.
20:59:54 <SgeoN1> It's a thumb drive
21:00:34 <twice11> For thumb drive, forget it. Maybe there are special controller-vendor-specific tools that could do it.
21:00:58 <twice11> But for that you first would need to know the controller type, and then try to get hold of that tool (if any).
21:02:02 <twice11> Most non-REISUBable freezes I experienced lately were caused by broken laptop mainboards (most likely BGA solder joints broken).
21:03:31 -!- Phantom__Hoover has left ("Leaving").
21:03:36 -!- Phantom__Hoover has joined.
21:07:29 -!- Gregor has set topic: Official support channel for Web o' Flies | EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy) | TO SHREDS!) | http://codu.org/logs/_esoteric/.
21:12:52 <monqy> friendship headers?
21:14:15 <Phantom__Hoover> Freaders.
21:16:10 <Phantom__Hoover> So I learned some topology today, it seems to be the study of blobby shapes?
21:16:32 <quintopia> :D
21:16:51 <olsner> bloody shapes
21:17:24 -!- Ngevd has joined.
21:17:34 <Ngevd> Well, I spent today in a hot stuffy room
21:17:43 <Ngevd> Listening to boring people drone on and on and on
21:18:03 <monqy> good day
21:18:09 <Ngevd> That's right, I've been to the House of Commons!
21:18:25 <monqy> I don't go there
21:18:28 <Phantom__Hoover> Did you know that they let you do that for the hell of it?
21:18:40 <Ngevd> Yuo
21:18:50 <elliott_> monqy: really; im shocked
21:18:51 <monqy> yuo
21:18:58 <Phantom__Hoover> Turns out there's a public gallery.
21:19:02 <Ngevd> yup
21:19:17 <monqy> elliott_: about it working ore what
21:19:32 <elliott_> monqy: about no go house comon
21:19:42 <Ngevd> I met Guy Opperman
21:19:57 <Phantom__Hoover> monqy, you're an ore worker?
21:19:58 <monqy> I don't meet that Guy
21:20:17 <Phantom__Hoover> "Guy Thomas Opperman[3] (born 18 May 1965) is a British Conservative Party politician,"
21:20:21 <Phantom__Hoover> Sounds lovely.
21:20:48 <elliott_> What is it with Conservatives anyway. There are so many of them.
21:20:52 <elliott_> Are they Tribbles.
21:21:30 <Phantom__Hoover> Yes.
21:22:14 <olsner> I guess we need more klingons
21:23:06 <elliott_> You always need more Klingons.
21:23:19 <Phantom__Hoover> What problem can't be solved by throwing Klingons at it?
21:23:32 <olsner> the problem of having too many klingons
21:23:45 <Ngevd> That's the best bit
21:23:46 <monqy> trick answer; there is no such thing
21:23:58 <olsner> hmm, actually... they might start killing each other and solving that problem too
21:23:58 <Ngevd> If you have too many klingons, they start killing eachother
21:24:05 <Phantom__Hoover> olsner, of course it solves that, they're Klingons for christ's sake.
21:24:36 <olsner> what if they decide it's more honorable to increase the number of klingons?
21:24:46 <elliott_> hmm
21:24:48 <Phantom__Hoover> More Klingons.
21:24:49 <Ngevd> Then they are no longer Kilingons
21:24:52 <elliott_> test :: IO (TChan TaskStatus -> IO (), IO ())
21:24:56 <elliott_> ok this will work
21:25:00 <Ngevd> s/Kil/Kl/
21:25:00 <Phantom__Hoover> If that doesn't work, hypervelocity Klingons.
21:25:01 <olsner> killingons :>
21:25:03 <elliott_> I guess I will use a TChan for the TChans????
21:25:07 <elliott_> So many TChans.
21:25:25 <monqy> tchan
21:35:10 <Ngevd> Wow, there's actually sockpuppeting on the IWC forum
21:35:15 <Ngevd> Over Russian translations
21:39:32 -!- pikhq_ has joined.
21:39:33 -!- pikhq has quit (Ping timeout: 256 seconds).
21:44:35 <Gregor> OK, here we go: http://bitbucket.org/GregorR/web-o-flies
21:49:58 <Ngevd> Supposed to be a broken link?
21:50:03 -!- Patashu has joined.
21:54:27 <Phantom__Hoover> "The cat righting reflex is a cat's innate ability to orient itself as it falls in order to land on its feet. The righting reflex begins to appear at 3-4 weeks of age, and is perfected at 7 weeks."
21:54:56 <Phantom__Hoover> I want to be the person who dropped kittens and checked if they righted themselves.
21:57:23 <Gregor> Ngevd: SHHHH YOU'RE RUINING MY JOKE/TROLLERY
21:57:35 <shachaf> zzo38 is adding Gopher menu format support to Haddock.
21:57:51 <Phantom__Hoover> He...
21:58:08 <Phantom__Hoover> Gopher...
21:58:15 <Phantom__Hoover> Haddock...
22:00:03 <Phantom__Hoover> Fun fact: [[Falling cat problem]] links directly to Yang-Mills theory.
22:04:02 -!- pikhq_ has quit (Ping timeout: 240 seconds).
22:04:21 -!- pikhq has joined.
22:06:00 <elliott_> shachaf: It's great having zzo around in that channel, isn't it?
22:06:56 <shachaf> elliott_: I don't think we've had quite these kinds of proposals from anybody else.
22:07:00 <monqy> zzo channel is good channel
22:09:08 <elliott_> http://upload.wikimedia.org/wikipedia/commons/7/78/Cat_fall_150x300_6fps.gif
22:09:13 <elliott_> Phantom__Hoover: I am so happy you made me find this image.
22:09:45 <Phantom__Hoover> I love the overlayed angular momenta.
22:10:21 <monqy> that image because of how good it is reminds me of http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png
22:12:38 <Phantom__Hoover> There is nothing that is not perfect about that diagram.
22:13:21 -!- zzo38 has joined.
22:13:41 <Phantom__Hoover> Speak of the devil...
22:14:03 <zzo38> What about the devil?
22:14:21 <elliott_> monqy: i want to know the logic behind that diagram... actually i don't
22:14:35 <elliott_> monqy: i will just choose to believe someone thought of four random things and arranged them on a plus sign
22:15:40 <zzo38> Should Haddock output format have: Plain TeX, gopher menu format, Plain Old Documentation, MediaWiki, etc
22:16:32 -!- derdon has quit (Remote host closed the connection).
22:16:55 <zzo38> I don't particularly like Haddock markup format so I made up idea of a different format: http://sprunge.us/jdWh
22:17:16 <elliott_> It's perfect. Tell #haskell about it.
22:17:22 <zzo38> I did already.
22:17:28 <coppro> better
22:17:32 <Phantom__Hoover> Keep telling them.
22:17:32 <coppro> make a replacement for TeX
22:17:37 <Phantom__Hoover> Don't ever stop.
22:18:00 <coppro> yeah
22:18:00 <zzo38> Phantom__Hoover: Not right now. Maybe later, when they are different people on that channel, such as the people who invented Haddock.
22:18:07 <coppro> zzo38: definitely insist on .doc
22:18:20 <coppro> that's a good descriptive file extenstion that's totally unique
22:19:15 <zzo38> The extension doesn't really matter as long as it is agreed on. Of course anything in this proposal is subject to changing.
22:19:25 <quintopia> he had dock.
22:19:29 <quintopia> but that was four letters
22:19:36 <quintopia> which was tooooooooooo many
22:19:59 <zzo38> It is OK to have more than three letters in the extension if you want to; I do not think Haddock is a DOS program!!
22:20:25 <quintopia> perhaps .hdd
22:20:26 <shachaf> quintopia: So he had to dock the last letter?
22:20:39 <quintopia> for "hickory dickory dock"
22:21:43 <zzo38> Read it and tell me if each individual thing is wrong, please.
22:22:31 <quintopia> i read it. i don't even know what haddock is so i can't answer that question.
22:26:06 -!- Ngevd has quit (Ping timeout: 260 seconds).
22:31:39 <zzo38> Does the people managing the account for HackageDB have UNIX mail? I send a UNIX message to them and I don't know if it work.
22:31:49 -!- elliott_ has quit (Ping timeout: 248 seconds).
22:32:57 <zzo38> Maybe it doesn't work; my name is not on there.
22:44:01 <zzo38> One day I invented a chess variant with the INTERCAL commands.
22:44:16 <shachaf> zzo38: You invent a lot of things.
22:44:57 <zzo38> Probably many people working in esolangs invent a lot of things it seems to be.
22:46:05 <Phantom__Hoover> zzo38 is like that leading character in Lovecraft who only exists for the protagonist to chart the grizzly demise of.
22:54:32 <nooga> lol
22:54:50 <nooga> Phantom__Hoover: which is your favourite piece by Lovecraft?
22:55:17 <Phantom__Hoover> Haven't read many; I read The Colour Out Of Space and didn't sleep that night.
23:03:02 <fizzie> fungot: So what about those queer angles that can be used for extradimensional travel?
23:03:03 <fungot> fizzie: for hours he climbed with aching and fnord hands, induced to purchase escape at the price of the fnord and i wondered whether asenath could possibly have covered. yet nothing of what i had
23:19:49 -!- ais523 has quit (Remote host closed the connection).
23:23:35 <zzo38> Why does it says "No instance for (IsString ByteString)" even though it says it does?
23:24:52 <shachaf> Because it doesn't.
23:25:04 <shachaf> Import the right module -- .Char8 -- or, better yet, don't use ByteStrings as Strings (they're not).
23:26:33 -!- sllide has joined.
23:48:00 <zzo38> Some Ukranian guy appears to have been overloading my server sometimes.
23:48:42 <zzo38> Or at least their ISP is Ukranian.
23:49:09 <Gregor> Solution: Bomb Ukraine.
23:50:45 -!- CakeProphet has quit (Ping timeout: 248 seconds).
2011-11-05
00:13:14 -!- madbr has joined.
00:13:23 -!- Phantom__Hoover has quit (Quit: Leaving).
00:20:50 -!- pumpkin has quit (Quit: Computer has gone to sleep.).
00:43:47 -!- copumpkin has joined.
00:49:54 -!- sllide has quit (Read error: Connection reset by peer).
00:55:58 -!- copumpkin has changed nick to JesusGarcia.
00:56:11 <zzo38> OK, I got the Haskell program to load the \fontdimen values from a TFM font.
00:56:15 -!- JesusGarcia has changed nick to copumpkin.
00:56:25 <zzo38> Now I just need to add the other stuff too.
00:57:22 -!- Darth_Cliche has joined.
01:07:43 <zzo38> The "makeFont" function takes thirteen parameters, ten of which are applied using the <*> operator.
01:08:05 -!- Vorpal has quit (Ping timeout: 248 seconds).
01:09:39 <zzo38> (map fromEnum <$> (mReadData h 12 :: IO [Word16])) >>= \z -> makeFont n m z <$> mReadData h (z !! 1) <*> mReadData h ((z !! 3) + 1 - (z !! 2)) <*> mReadData h (z !! 4) <*> mReadData h (z !! 5) <*> mReadData h (z !! 6) <*> ........
01:27:04 -!- SgeoN1 has quit (Read error: Connection reset by peer).
01:27:22 -!- SgeoN1 has joined.
02:00:07 -!- CakeProphet has joined.
02:00:35 <zzo38> guard is a very useful command, I have used it with the list monad and with the Maybe monad.
02:00:46 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
02:18:47 <nooga> ninuini\
02:23:37 <quintopia> yes
02:23:42 <quintopia> i agree
02:23:49 -!- copumpkin has quit (Ping timeout: 260 seconds).
02:24:14 -!- copumpkin has joined.
02:34:54 <oklopol> i met a burglar
02:35:21 <oklopol> chatted with him for 5 minutes, went home and called the cops. will prolly be stabbed soon enough :D
02:35:27 <zzo38> Now I made the entire part of the Graphics.DVI program for loading font metrics.
02:36:25 <zzo38> Because it is a functional programming language, it is entirely different to the other programs for doing so.
02:40:25 <zzo38> Inside of a record syntax it has the code: fontDimen = 0 : transEnum (shiftR (head pa) 4) : (rescale fsc <$> tail pa), firstChar = transEnum $ hdr !! 2, leftBoundChar = guard (last lk >= 0xFF000000) >> makeLigKern ke' (drop (fromEnum $ last lk .&. 0xFFFF) lk),
02:42:33 -!- nooga has quit (Ping timeout: 255 seconds).
02:53:35 -!- Zuu has quit (Ping timeout: 244 seconds).
03:02:53 -!- Madoka-Kaname has quit (Read error: Operation timed out).
03:09:11 -!- Madoka-Kaname has joined.
03:09:11 -!- Madoka-Kaname has quit (Changing host).
03:09:11 -!- Madoka-Kaname has joined.
03:09:51 <zzo38> However it doesn't check that the font file is valid, so it is possible to get runtime errors if something tries to access index in a table that is larger than the number of items in that table.
03:46:02 -!- tiffany has quit (Quit: Leaving).
03:51:42 -!- variable has quit (Excess Flood).
03:53:37 -!- variable has joined.
03:59:15 -!- variable has quit (Excess Flood).
04:01:38 -!- variable has joined.
04:14:20 <Gregor> So I finally implemented WebSplat Zalgofication.
04:14:23 <Gregor> And it's SO SLOW :(
04:24:26 <zzo38> What does Zalgofication mean?
04:28:46 <zzo38> This is instructions for a chess variant I invented a while ago, and I wrote it on paper. I will describe: Except for the king, the pieces are flat, and the owner is known by the direction they are facing, rathan than by colors. The king is tall piece like a tombstone. Pawns move one space directly forward (even when capturing), and cannot promote. There are six other kind of pieces.
04:28:58 <zzo38> 1 (Cannon): Moves like Chinese cannon.
04:29:04 <zzo38> 2 (Rider): It is (2,0) rider.
04:29:53 <zzo38> 3 (Abstain): As rook, can capture your own as well as opponent's pieces. It destroys itself (going to opponent's bench) whenever it capture something. Toggle abstain mark of the type and owner of the captured piece. Abstained pieces cannot move.
04:30:52 <zzo38> 4 (Mingle): Cannot capture. Move orghogonally an even number of spaces, and can jump over other pieces. Contents of squares it jumps over are interleaved (e.g. ABCD -> ACBD, ABCDEFGH -> AEBFCGDH).
04:31:22 <zzo38> 5 (Ignore): Move like a rook but cannot capture. Toggle ignore mark of square moved from. Ignored squares cannot be moved into except by number fives.
04:32:14 <zzo38> 6 (Select): No displacement capture. Move one orghogonally then over any number of squares rookwise. Pieces on squares with a piece of same type on adjacent square (opposite direction of first move) are captured by you (you choose order). Other ones fall towards first moved space stops on square just before reaching it.
04:43:56 -!- oerjan has joined.
05:03:55 <zzo38> I have read something about a probability monad. It seem to me, it would be, return makes one value with 1 probability, fmap maps the values, join multiplies the inner probabilities by the outer probabilities, (>>) just results in the value on the right, (>>=) applies a probabilistic function to values. Actually, I think the probability values could be any monoid; it doesn't have to be a number.
05:05:04 <zzo38> Although if it is a number, and the contained value is of a type having equality, then you can simplify by adding the probabilities together, by having a separate function that does that.
05:23:31 -!- MDude has changed nick to MSleep.
05:39:54 -!- GreaseMonkey has quit (Quit: The Other Game).
06:21:53 <quintopia> Gregor: iei
06:22:14 <oerjan> eieio
06:22:14 <lambdabot> oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them.
06:23:57 <oerjan> that elliott, so calm and patient
06:25:41 <oerjan> > ala Sum foldMap [1,2,3,4]
06:25:42 <lambdabot> Not in scope: `foldMap'
06:25:49 <oerjan> @_@
06:26:07 <oerjan> > ala Sum Data.Foldable.foldMap [1,2,3,4]
06:26:08 <lambdabot> 10
06:26:24 <oerjan> fancy
06:26:52 <oerjan> @tell elliott fancy
06:26:52 <lambdabot> Consider it noted.
06:28:15 <quintopia> 45*60*25
06:29:07 <oerjan> > ala Product Data.Foldable.foldMap [45,60,25]
06:29:07 <lambdabot> 67500
06:29:56 <quintopia> yeah i did it with bc :P
06:37:34 -!- CakeProphet has quit (Ping timeout: 260 seconds).
06:41:31 -!- hagb4rd has quit (Ping timeout: 240 seconds).
06:59:14 <Madoka-Kaname> :t ala
06:59:15 <lambdabot> forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o'
06:59:31 <Madoka-Kaname> @src ala
06:59:31 <lambdabot> Source not found. There are some things that I just don't know.
06:59:36 <Madoka-Kaname> @hoogle ala
06:59:37 <lambdabot> Data.List intercalate :: [a] -> [[a]] -> [a]
06:59:37 <lambdabot> Graphics.UI.GLUT.Callbacks.Window DialAndButtonBoxButton :: ButtonIndex -> KeyState -> DialAndButtonBoxInput
06:59:37 <lambdabot> Graphics.UI.GLUT.Callbacks.Window type DialAndButtonBoxCallback = DialAndButtonBoxInput -> IO ()
07:00:43 <zzo38> I added a few more classes related to monoids: MonoidPlus, Group, MonoidMinus, MonoidNorm.
07:02:11 <zzo38> MonoidPlus adds mpempty and mpappend, which should be distributive over mempty and mappend; Group adds minverse.
07:02:39 <oerjan> Madoka-Kaname: http://hackage.haskell.org/packages/archive/newtype/latest/doc/html/Control-Newtype.html
07:03:58 <oerjan> zzo38: MonoidPlus is called a semiring
07:04:19 <zzo38> oerjan: O, I didn't know that.
07:05:14 <zzo38> Actually it isn't; the annihilation property does not necessarily hold.
07:05:57 <oerjan> oh
07:08:38 <zzo38> Now I added a Semiring class, that adds no additional methods but it is only used to tell you which ones are semirings.
07:12:25 <zzo38> Actually, there is another property that is not part of the definition of MonoidPlus, which is commutative addition.
07:17:24 <madbr> argh
07:17:38 <madbr> unlambda/ski calculus is so unforgiving
07:20:02 <oerjan> !unlambda ``````````````````````.I.s. .e.g.o.b.o.t. .w.o.r.k.i.n.g. .n.o.w.?i
07:20:24 <oerjan> !help don't bet on it
07:20:25 <EgoBot> ​Sorry, I have no help for don_t_bet_on_it!
07:20:40 <oerjan> oh hm
07:21:26 <oerjan> @unlambda ```````````.T.h.i.s. .m.i.g.h.t..i
07:21:27 <lambdabot> This might.
07:34:59 -!- monqy has quit (Quit: hello).
07:36:06 -!- CakeProphet has joined.
07:36:11 -!- CakeProphet has quit (Changing host).
07:36:11 -!- CakeProphet has joined.
07:40:32 <CakeProphet> this channel is a waste.
07:44:25 <quintopia> it's better than that other one
07:46:34 <CakeProphet> no.
07:46:51 <quintopia> how do you know
07:46:51 <CakeProphet> this is a game.
07:47:40 <zzo38> What kind of game? Chess game or card game?
07:48:00 <CakeProphet> a game of masturbation.
07:48:37 <quintopia> zzo38: a board game that isnt chess
07:49:06 <CakeProphet> @tell elliott HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
07:49:06 <lambdabot> Consider it noted.
08:16:31 -!- Ngevd has joined.
08:19:54 <Ngevd> Hello
08:26:42 <zzo38> Now I added the instance Num t => Ring (Product t);
08:39:51 -!- Jafet has joined.
08:40:43 -!- sebbu has quit (Ping timeout: 240 seconds).
08:41:41 -!- sebbu has joined.
08:41:41 -!- sebbu has quit (Changing host).
08:41:42 -!- sebbu has joined.
08:53:27 -!- oerjan has quit (Quit: leaving).
09:18:57 -!- hagb4rd has joined.
09:19:08 -!- Phantom_Hoover has joined.
09:31:59 -!- oklopol has quit (Ping timeout: 260 seconds).
09:33:00 -!- Zuu has joined.
09:42:38 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:51:56 -!- zzo38 has quit (Remote host closed the connection).
10:11:42 -!- Ngevd has joined.
10:14:14 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
10:24:59 -!- SgeoN1 has quit (Quit: Bye).
10:25:13 -!- nooga has joined.
10:26:26 -!- Phantom_Hoover has joined.
10:29:01 <madbr> ``s`k``s`k``s`k``s`k``s`k``s`k``si`kksks`sikk
10:29:04 <madbr> damnit
10:29:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `s`k``s`k``s`k``s`k``s`k``s`k``si`kksks`sikk: not found
10:29:19 <Phantom_Hoover> madbr?
10:29:34 <madbr> function that makes a pair in unlambda I think
10:30:07 <madbr> took a couple hours to figure out (without cheating and looking up in the docs)
10:31:02 <madbr> obviously that function is probably crucial for any data type aside from the bit
10:31:21 <Ngevd> Or the natural number
10:31:53 <Phantom_Hoover> Pair as in standard LC pair?
10:32:10 <madbr> dunno what standard LC part means
10:32:32 <Ngevd> http://en.wikipedia.org/wiki/Lambda_calculus#Pairs
10:32:40 <madbr> when it gets 3 arguments, returns the first one if true, second one if false
10:33:56 <madbr> ngevd: I guess you can build numbers from church numerals or something but it's probably faster to do bit arrays or trees
10:34:13 <madbr> for larger numbers
10:34:28 <Ngevd> I really wouldn't know
10:35:17 <madbr> but yeah basically unlambda is incredibly laborious to write :o
10:36:27 <Phantom_Hoover> madbr, the standard pair is \x y f -> f x y.
10:36:54 <Ngevd> S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK) in definitely not unlambda notation
10:37:11 <madbr> similar but a bit different I guess
10:37:48 <Phantom_Hoover> How does yours work?
10:37:55 <madbr> f is different
10:38:22 <madbr> f is either i for true (first member), or `ki for false (second member)
10:38:37 <Ngevd> i won't work
10:38:42 <Ngevd> You want k for true
10:38:42 <Phantom_Hoover> True... isn't i.
10:38:47 <Phantom_Hoover> What Ngevd said.
10:39:00 <Ngevd> i would apply the two arguments together, I think
10:39:09 <Phantom_Hoover> Yep.
10:39:09 <Ngevd> Unless unlambda is weirder than I thought
10:40:02 <madbr> guess you could use k for true and `ki for false, then you would have a skighly different pair constructor yes
10:41:04 <Phantom_Hoover> I don't see how you can use i for true at all.
10:41:24 <Ngevd> i can't get rid of information
10:41:42 <madbr> i = don't replace with i, `ki = replace with i
10:41:50 <Phantom_Hoover> Information-hoarding is a terrible condition, Ngevd.
10:42:11 <madbr> apply on a function that replaces the input with something else
10:42:24 <Phantom_Hoover> Ah, right.
10:42:38 <Phantom_Hoover> Sound, if convoluted.
10:42:55 <madbr> is there anything not convoluted in lambda calculus :o
10:43:09 <Phantom_Hoover> No, not at all.
10:43:43 <Phantom_Hoover> By which I mean it's not all that convoluted.
10:44:33 <madbr> ah
10:44:39 <madbr> is there anything not convoluted in unlambda then ? :D
10:44:55 <Phantom_Hoover> Unlambda is terrible, so I decline to comment.
10:45:27 <madbr> it's terrible and awesome I guess
10:45:36 <madbr> though it's just ski calculus really
10:46:36 <madbr> but yeah a good esoteric language should have mindfuck power, and unlambda definitely qualifies
10:46:46 <Ngevd> It's not my favourite language
10:46:47 <Ngevd> By fa
10:46:47 <Ngevd> r
10:46:49 <Ngevd> For mindfuck, go for Malbolge
10:47:19 <madbr> no that's just random shit
10:47:32 <Ngevd> It's not "random shit"
10:47:41 <Ngevd> Clearly it's too much of a "mindfuck" for your mind
10:47:54 <Ngevd> Saying that, it's too much of a mindfuck for my mind
10:48:14 <madbr> I don't remember the details of malbolge too much
10:48:26 <Ngevd> http://esolangs.org/wiki/Malbolge
10:48:29 <madbr> but last time I remember it's just evil and not at all deep
10:50:06 <Ngevd> A Malbolge program is something I can stand in awe at
10:50:19 <madbr> I'm not a fan of bitwise languages I guess
10:50:30 <Ngevd> Good news, Malbolge is tritwise!
10:50:34 <Ngevd> :P
10:50:50 <madbr> but yeah it's just imperative
10:51:03 <madbr> and not some mindbendingly crazy new paradigm
10:51:45 <Ngevd> Unlambda's paradigm dates back to at least 1924
10:51:57 <madbr> true
10:52:18 <Phantom_Hoover> madbr, Unlambda's paradigm predates conventional imperative programming.
10:52:26 <Ngevd> Which dates to 1954
10:52:55 <Ngevd> If Assembly is counted as a different paradigm
10:53:23 <Ngevd> Which comes from about the same time
10:54:44 <madbr> yeah ok
10:55:37 <madbr> still thinking the point is to come up with crazy paradigms :D
10:55:50 <Ngevd> Like Piet?
10:56:39 <Ngevd> Or Befunge?
10:56:45 <madbr> sorta yeah
10:57:06 <Ngevd> But not like Unlambda
10:57:32 <madbr> anyways, sleep
10:57:34 -!- madbr has quit (Quit: Radiateur).
10:58:00 <Ngevd> He seems nice
11:04:02 <Ngevd> Flobnar seems interesting
11:11:12 -!- Ngevd has quit (Ping timeout: 252 seconds).
11:12:57 -!- Ngevd has joined.
11:19:39 <Ngevd> I think a funge on the hyperbolic plane would be interesting
11:20:18 <Ngevd> Shame I haven't actually figured out how the hyperbolic plane works
11:24:01 -!- sebbu2 has joined.
11:24:02 -!- sebbu2 has quit (Changing host).
11:24:02 -!- sebbu2 has joined.
11:27:31 -!- sebbu has quit (Ping timeout: 240 seconds).
11:35:27 -!- zzo38 has joined.
11:40:23 <zzo38> It seem the MonadPlus instance for Parsec does not follow the laws.
11:48:42 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:54:15 -!- pikhq_ has joined.
11:54:38 -!- pikhq has quit (Ping timeout: 258 seconds).
12:10:44 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:24:04 -!- Vorpal has joined.
13:00:46 -!- variable has quit (Excess Flood).
13:04:08 -!- variable has joined.
13:05:50 <Jafet> Funge a klein bottle
13:22:43 <Phantom_Hoover> <Ngevd> Shame I haven't actually figured out how the hyperbolic plane works
13:23:05 <Phantom_Hoover> One way to think of it is that the angles around a point add up to more than 360°.
13:23:32 <Phantom_Hoover> This is wrong, but it's wrong in a way which is right if you don't go into too much depth.
13:23:53 <Phantom_Hoover> Oh, right, he left.
13:44:17 -!- sllide has joined.
13:49:28 <Vorpal> Jafet, sure, why not
13:50:06 -!- Ngevd has joined.
13:50:13 <Jafet> Well, the first question is whether you're going to funge in three dimensions or four
13:50:31 <Ngevd> Hello!
13:50:31 <Vorpal> ouch
13:50:42 <Ngevd> I saw what you said, Phantom_Hoover
13:50:46 <Ngevd> Hmm
13:51:25 <Vorpal> Jafet, wait, the klein bottle forms a plane that is connected to itself in "weird" ways doesn't it?
13:51:37 <Ngevd> Oh, Houlton, Maine.
13:51:44 <Ngevd> Why do you despise Hexham so?
13:52:06 <Jafet> http://kleinbottle.com
13:54:01 <Phantom_Hoover> Vorpal, ...
13:54:14 <Phantom_Hoover> http://en.wikipedia.org/wiki/Fundamental_polygon
13:54:23 <Phantom_Hoover> I'm going to leave this here.
13:54:57 <Phantom_Hoover> Jafet, fun fact, the guy who runs that site also caught Markus Hess.
13:55:43 <Ngevd> A Klein bottle is a Mooobius strip made even weirder, right?
13:56:15 <Phantom_Hoover> It's a Mobius strip with the other edges joined as well.
13:56:22 <Ngevd> Thought sp
13:56:28 <Vorpal> that is what I meant
13:56:54 <Ngevd> Langton's ant on a Mooobius strip: taking metaphors the wrong way
13:58:13 <fizzie> Langton's cow on a Mooobius strip sounds more likely.
14:05:29 -!- sebbu2 has changed nick to sebbu.
14:24:11 -!- ais523 has joined.
14:34:33 -!- MSleep has changed nick to MDude.
14:36:09 <ais523> so, it turns out that the recent zero-day affecting Windows turned out to be a security bug in the kernel's font parser
14:36:22 <Ngevd> ...!
14:36:34 <Ngevd> Seems an odd place for a security bug
14:37:00 <ais523> seems like an odd place for a font parser
14:37:42 <ais523> apparently it's historical reasons based on trying to run NT 4 on old hardware, and they never moved it back
14:39:35 <Vorpal> ais523, heh
14:40:16 <Vorpal> ais523, I thought NT 3/4 tried to put a lot of stuff in user space?
14:40:36 <ais523> perhaps. but not that
14:40:40 <Vorpal> right
14:43:57 <fizzie> Didn't NT4 in fact move some stuff back into kernel space for speeds.
14:44:38 <Vorpal> ah, perhaps
14:45:06 <fizzie> "The graphics device interface handles image management for the monitor and printers. It provides system calls to allow user programs to write on the monitor or printers in a device-independent way. It also contains the window manager and hardware device drivers. In versions of NT prior to NT 4.0, it was in user space but the performance was disappointing, so Microsoft moved it into the kernel to speed it up."
14:45:48 <ais523> heh, so GDI /is/ kernel? I'd always wondered about that
14:46:21 -!- Ngevd has quit (Ping timeout: 256 seconds).
14:46:37 <fizzie> Random web-quote, so take with a grain of salt; also about NT4.
14:46:39 <Vorpal> I think in modern windows it runs parts in user space again
14:46:45 <Vorpal> like the window manager
14:47:00 <Vorpal> and parts of the graphics drivers
14:47:01 <fizzie> There's probably architectural docs in MSDN.
14:47:02 <ais523> the window manager isn't in GDI
14:47:24 <Vorpal> ais523, it said so above
14:47:38 <ais523> hmm
14:47:40 <Vorpal> " It also contains the window manager and hardware device drivers."
14:47:50 <ais523> well, it's not user-visible that it's in GDI
14:47:55 <ais523> I think
14:48:27 <Vorpal> in vista/7 there is dwm.exe (unrelated to dwm on *nix) which is the compositing "Desktop Window Manager" iirc
14:49:34 -!- tiffany has joined.
14:50:19 <fizzie> Win7 has funny permissions things; sometimes Synergy clicks will not let you switch focus to some window, or to send key/mouse events when switched, if it's somehow... different.
14:51:17 <fizzie> E.g. the photoalbum creation software from this one printing company was like that, for some unfathomable reason.
15:18:58 <Vorpal> ouch
15:27:03 <Jafet> Remember that one of the major security holes in Windows was in a parser for image files.
15:27:21 <Jafet> Yes, folks, code injection in image files.
15:42:53 <ais523> Jafet: but WMF was an image format in the same sense that vim or TECO is a text editor
15:43:02 <ais523> it was more of a programming language for describing images
15:43:20 <ais523> it probably /shouldn't/ have had an FFI, though
15:44:29 <Jafet> Seeing as we're in this channel...
15:44:44 <Jafet> What was its computational class? (sans the ill-conceived FFI)
15:45:06 <olsner> iirc it's basically a serialized list of GDI function calls
15:47:31 <ais523> Jafet: think an LBA that can't take inputs
15:57:56 -!- nooga has quit (Ping timeout: 240 seconds).
16:01:19 -!- nooga has joined.
16:02:10 -!- monqy has joined.
16:07:56 <Phantom_Hoover> <Ngevd> Seems an odd place for a security bug
16:08:04 <Phantom_Hoover> Welcome to Windows.
16:10:51 -!- elliott has joined.
16:11:03 -!- Ngevd has joined.
16:12:22 <tiffany> does windows have butlers to great you at each security hole?
16:12:42 <tiffany> =p
16:13:21 <Jafet> Does Dr Watson count?
16:13:22 <Phantom_Hoover> No, you idiot, that's not what butlers do.
16:13:34 <Ngevd> It has doormen
16:13:39 <olsner> "Welcome to the Windows Font Parser. Which kernel subsystem would you like access to?"
16:13:46 <tiffany> xD
16:17:18 <elliott> q
16:17:19 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:18:10 <olsner> @tell elliott You have 2 new messages. '/msg lambdabot @messages' to read them.
16:18:10 <lambdabot> Consider it noted.
16:18:16 <elliott> hi
16:18:17 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
16:18:19 <elliott> @messages
16:18:20 <lambdabot> olsner said 9s ago: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:18:23 <elliott> @messages
16:18:24 <lambdabot> You don't have any new messages.
16:18:26 <elliott> he;lp
16:18:40 <ais523> olsner: that was ridiculous
16:19:03 <olsner> ais523: the point exactly
16:19:05 <elliott> oh wait i didnt follow the instructions
16:19:10 <elliott> /msg lambdabot @messages
16:19:14 <elliott> yay now i see them
16:19:19 <elliott> they are the best messages.
16:19:44 <elliott> 22:31:39: <zzo38> Does the people managing the account for HackageDB have UNIX mail? I send a UNIX message to them and I don't know if it work.
16:19:45 <elliott> :')
16:20:56 <Ngevd> elliott, you going to the bonfire tonight?
16:21:18 <zzo38> Now I made the MonoidicT monad transformer. newtype MonoidicT a m b = MonoidicT { runMonoidicT :: m (a, b) }; I also made the Monad instance for Monoid t => Monad ((,) t)
16:21:38 <elliott> zzo38: WriterT
16:22:03 <ais523> elliott: what does Writer do?
16:22:12 <elliott> Ngevd: No, I'm plotting to destroy the universe because I'm a grouch who hates fun.
16:22:26 <Phantom_Hoover> Minecraft bonfire night!
16:22:31 <Phantom_Hoover> Minefire night.
16:22:33 <Phantom_Hoover> Minefight.
16:22:38 <elliott> ais523: That's a supremely vague question ...
16:22:46 <ais523> elliott: indeed it is
16:22:49 <Ngevd> elliott, cool, that means I can go without fear of destroying the universe
16:22:51 <ais523> could you help me formulate a better question?
16:23:13 <ais523> I gather that it's some sort of monad that lets you produce intermediate results
16:23:24 <ais523> but I'm not sure of the details, or whether or not that description is confusingly misleading
16:23:46 <elliott> ais523: Writer w a is a monad if w is a monoid
16:23:48 <zzo38> elliott: Yes it is similar. But I used the Monoid t => Monad ((,) t) monad.
16:24:13 <elliott> ais523: it's just (w,a) underneath; return a = (mempty,a); (w,a) >>= f = let (w',b) = f a in (mappend w w', b)
16:24:18 <elliott> ais523: so you can use it to e.g. produce a log
16:24:24 <elliott> "tell" adds to the monoid
16:24:29 <elliott> do tell "doing a"; a; tell "doing b"; b
16:24:31 <elliott> erm
16:24:37 <elliott> do tell ["doing a"]; a; tell ["doing b"]; b
16:24:42 <elliott> that's Writer [String] whateverbreturns
16:24:51 <elliott> you can run it and get the final result plus the [String] out of it
16:24:53 <elliott> the end
16:24:57 <ais523> oh, and tell itself takes a monadic value as argument?
16:25:01 <elliott> WriterT is like that but a transformer
16:25:03 <elliott> ais523: ...no
16:25:35 <ais523> elliott: well, could I convert ["doing a"] to Just "doing a"?
16:25:38 <ais523> and likewise for the second
16:25:44 <ais523> and end up with Just "doing b"?
16:26:07 <elliott> OK, now I'm not sure you understand how either monoids or monads work at all...
16:26:47 <ais523> elliott: I sort-of understand Haskell monads, and category theory monoids
16:26:56 <ais523> but can't combine the category theory idea with the Haskell you're sohwing
16:27:03 <zzo38> They had a instance Monoid t => Applicative ((,) t) but had no Monad instance so I made one up by: join (x, (y, z)) = (x |*| y, z);
16:27:12 <elliott> ais523: what type do you think tell is
16:27:25 <zzo38> (Where |*| is infix operator for mappend)
16:27:35 <ais523> ah, hmm, is List an instance of Monoid, that defines append as some sort of named operator?
16:27:46 <ais523> that may have been what I'm missing
16:27:48 <elliott> @kind List
16:27:49 <lambdabot> Not in scope: type constructor or class `List'
16:27:57 <ais523> @kind [Int]
16:27:58 <lambdabot> *
16:28:05 <elliott> @src Monoid
16:28:05 <lambdabot> class Monoid a where
16:28:05 <lambdabot> mempty :: a
16:28:05 <lambdabot> mappend :: a -> a -> a
16:28:05 <lambdabot> mconcat :: [a] -> a
16:28:06 <zzo38> For list monoid: mempty = []; mappend = (++);
16:28:19 <ais523> mconcat is derived, I take it?
16:28:32 <elliott> it has a default value
16:28:37 <elliott> foldr mappend mempty
16:28:40 <zzo38> mconcat is derived automatically but you can override it to make it more efficiently
16:28:42 <ais523> in that case, I think I understand now
16:28:59 <ais523> interpreting the operation on a monoid as "append" is the Haskellism I'm mising
16:29:01 <ais523> *missing
16:29:02 <elliott> > runWriter (tell ["fooing bars"] >> tell ["done fooing bars", "it was great"])
16:29:03 <lambdabot> ((),["fooing bars","done fooing bars","it was great"])
16:29:07 <ais523> mathematically, there's no reason it has to correspond to that at all
16:29:09 <elliott> > runWriter (tell ["fooing bars"] >> tell ["done fooing bars", "it was great"] >> return 99)
16:29:10 <lambdabot> (99,["fooing bars","done fooing bars","it was great"])
16:29:17 <zzo38> I also made the instance Category c => Monoid (c t t)
16:29:19 <elliott> ais523: I'd prefer it be "empty" and (<>)
16:29:46 <ais523> I'm used to monoids made out of, say, 0 and addition
16:30:02 <elliott> i would not support that :)
16:30:03 <zzo38> There is such a monoid in Haskell; it is the Sum monoid
16:30:04 <ais523> which don't fit the Haskell idea too well
16:30:15 <elliott> ais523: those fit into the "haskell idea" perfectly
16:30:22 <elliott> the names are historical and bad
16:30:24 <ais523> well, they're expressible in Haskell
16:30:29 <zzo38> For multiplication you need a Product monoid
16:30:32 <ais523> but "Writer" is a bit of a silly name for it
16:30:42 <elliott> ais523: how is Writer related?
16:30:45 <elliott> Writer isn't a monoid
16:31:00 <ais523> elliott: because it applies to monoids
16:31:03 <elliott> it's silly to say that something that happens to /use/ monoids constitutes part of Haskell's idea of what a monoid is
16:31:10 <ais523> well, OK
16:31:22 <elliott> bear in mind that Writer is also a fairly legacy name :P
16:31:26 <elliott> it's sort of dual to Reader
16:31:27 <ais523> I'd say it's evidence of Haskell's idea, rather than being part of the idea
16:31:29 <elliott> is the reason it's named that
16:31:32 <ais523> i.e. effect rather than cause
16:31:33 <elliott> (Reader = (->))
16:31:58 <ais523> what does Reader actually operate on? being equivalent to (->) is too heavily Haskell-golfed for me to work it out mentally
16:32:44 <elliott> Reader r a ~ r -> a
16:32:47 <elliott> it's just a newtype wrapper
16:32:56 <zzo38> There is a (e ->) monad; it is: return = const; fmap = (.); join f x = f x x; (I worked it out on paper at first and found it is the same thing)
16:33:09 <elliott> ais523: and the instance Monad ((->) r) is identical to the instance Monad (Reader r)
16:33:18 <elliott> ais523: it's called Reader because it lets you pass around one bit of mutable state implicitly
16:33:19 <elliott> erm
16:33:21 <elliott> ais523: it's called Reader because it lets you pass around one bit of IMmutable state implicitly
16:33:22 <zzo38> You use the module Control.Monad.Reader for the (e ->) monad.
16:33:36 <ais523> elliott: ah right, that doesn't really fit with my idea of what a reverse of Writer would be
16:33:41 <ais523> I imagined it taking elements from a list
16:33:43 <ais523> or something like that
16:33:44 <elliott> ais523: me neither, that's why I said "sort of" :)
16:33:50 <elliott> that's the Supply monad
16:33:55 <elliott> (elements from a list)
16:33:59 <elliott> which isn't in the stdlib
16:34:24 <ais523> elliott: the monad that Haskell calls Reader came up in a CS lecture, btw
16:34:27 <zzo38> That is, sometimes is the use of using the monadic "join" for functions, so that is usually the reason why I will have import Control.Monad.Reader.
16:34:36 <elliott> ais523: it calls it (->) too
16:34:40 <ais523> Dan thought he'd invented it, and called it the "clock monad" as it's what he was using it for
16:34:40 <elliott> there are instances for both
16:34:47 <elliott> in fact, join is really useful on functions
16:34:49 <elliott> it just duplicates its parameter
16:34:49 <ais523> I said it was pretty much just a read-only state monad
16:34:51 <elliott> > join (+) 5
16:34:53 <lambdabot> 10
16:35:16 <elliott> ais523: I'm not sure what it takes to think you could have invented a monad so trivial...
16:35:17 <ais523> wait, what does join do again? I keep forgetting how it relates to >>=
16:35:21 <ais523> elliott: likewise
16:35:22 <zzo38> A lot of people can make up the same monads as other people; it is mathematics so such things are possible.
16:35:24 <elliott> I suppose lack of Haskell knowledge suffices
16:35:25 <ais523> probably just not having seen it before
16:35:30 <elliott> ais523: join = (>>= id)
16:35:33 <elliott> :: m (m a) -> m a
16:35:37 <elliott> ... well with a Monad constraint :P
16:35:41 <elliott> so
16:35:47 <elliott> (r -> (r -> a)) -> (r -> a)
16:35:51 <elliott> so
16:35:53 <ais523> elliott: hmm, why is that operation useful? and can you define >>= in terms of it?
16:35:55 <elliott> (a -> a -> b) -> a -> b
16:36:11 <elliott> ais523: I just gave a use for it; and (>>=) can be defined in terms of join and fmap
16:36:27 <elliott> you can't define fmap with just return and join, but all monads are functors anyway, haskell just doesn't realise it
16:36:48 <elliott> ais523: anyway, join is used in the category theory definition
16:36:52 <elliott> instead of (>>=)
16:36:55 <ais523> I know, I've seen it but didn't understand it
16:37:13 <elliott> that's because you don't understand monads :)
16:37:15 <ais523> hmm, why is there no fmapM? I'm guessing because fmap doesn't have a defined evaluation order
16:37:27 <ais523> I readily admit I don't really fundamentally understand them
16:37:29 <ais523> just enough to use them
16:37:29 <elliott> :t Data.Traversable.mapM
16:37:30 <lambdabot> forall a (m :: * -> *) b (t :: * -> *). (Data.Traversable.Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
16:37:43 <elliott> Functor => Foldable => Traversable
16:37:46 <elliott> is the hierarchy there
16:38:16 <elliott> ais523: but fmapM doesn't even make sense
16:38:27 <ais523> not in general
16:38:32 <ais523> but it does in a lot of specific cases
16:38:36 <ais523> including some that would have been useful
16:38:39 <Jafet> fmap is general.
16:38:42 <elliott> ais523: fmapM :: (Monad m) => (a -> m b) -> (r -> c) -> m (r -> b)
16:38:47 <elliott> (for the (->) monad)
16:38:52 <elliott> well, (->) functor :)
16:38:58 <Jafet> It's pretty weird to name something after fmap if it isn't general.
16:38:59 <elliott> erm
16:39:02 <elliott> ais523: fmapM :: (Monad m) => (a -> m b) -> (r -> a) -> m (r -> b)
16:39:07 <ais523> that looks better
16:39:14 <elliott> ais523: you have a bad definition of better
16:39:23 <ais523> well, the first version was obviously wrong
16:39:25 <elliott> ais523: that's unsafePerformIO :)
16:39:37 <ais523> no it isn't
16:39:39 <ais523> :t unsafePerformIO
16:39:40 <lambdabot> Not in scope: `unsafePerformIO'
16:39:41 <elliott> fmapM putStrLn :: (String -> a) -> IO (String -> ())
16:39:51 <elliott> fmapM putStrLn id :: IO (String -> ())
16:39:58 <elliott> the function you get out of that prints every time it's called
16:40:25 <elliott> therefore not every functor has fmapM qed
16:40:32 <ais523> elliott: well, say, putStrLn "x" is of type IO ()
16:40:42 <ais523> I don't see why that's any safer than IO (String -> ())
16:40:57 <elliott> ais523: and that's because you don't understand Haskell's IO!
16:41:20 <ais523> IO is a little crazy as monads go, indeed
16:41:22 <elliott> no, it's not
16:41:26 <elliott> you just don't understand it
16:41:42 <elliott> IO being a monad is practically irrelevant to understanding it, too, it's just a way of using it
16:42:07 <elliott> IO () is a value describing a side-effectful program that returns (); IO (String -> ()) is a value describing a side-effectful program that returns (a pure function taking a String and returning ())
16:42:17 <elliott> say we have m :: IO (String -> ())
16:42:19 <zzo38> IO being a monad does also make it functor, applicative, and that kind of stuff.
16:42:33 <elliott> ais523: do f <- m; return (doPureComputationWith f)
16:42:48 <elliott> ais523: doPureComputationWith calls f ten times, but f magically prints when it's called oops!
16:44:07 <ais523> yep, this is basically a good argument for showing that fmapM doesn't work on (->)
16:44:16 <ais523> but there are a whole load of functors, like Tree, where it would be useful
16:44:23 <ais523> and in fact, it's the same argument in both cases
16:44:30 <elliott> that's why Traversable exists P:
16:44:30 <ais523> the problem is that functions don't define an evaluation order
16:44:32 <elliott> s/P:/:P/
16:44:37 <elliott> which /does/ define an evaluation order
16:44:40 <zzo38> I made up the instance Alternative IO
16:44:41 <ais523> and if they /did/, there'd be no issue with (->)
16:44:48 <elliott> yes it would
16:44:51 <elliott> sorry, you're wrong
16:44:57 <elliott> there is _no way_ to implement the type I gave without unsafePerformIO
16:45:00 <elliott> at all
16:45:02 <elliott> full stop
16:45:07 <zzo38> empty = fail []; x <|> y = catch x $ \e -> modifyIOError (\z -> if z == userError [] then e else z) y;
16:45:24 <ais523> elliott: it'd be called safePerformIO if evaluation order were defined in Haskell
16:45:25 <ais523> it just isn't
16:45:39 <ais523> (that is, order, and existence)
16:45:39 <elliott> ais523: I give up
16:45:51 <ais523> I think we have different mental images of the same thing
16:45:52 <elliott> evaluation order is irrelevant here
16:46:05 <elliott> it's completely irrelevant to the question of whether to be pure or not
16:46:15 <zzo38> Someone made up a instance MonadPlus IO but it does not follow the right zero law and also doesn't follow the monoid laws either!
16:46:18 <elliott> ais523: if you have an impure language, then unsafePerformIO is safe too
16:46:20 <elliott> even if it's lazy
16:46:23 <ais523> right
16:46:31 <elliott> it's an orthogonal issue
16:47:19 <zzo38> The MonadPlus for Parsec does not follow the right zero law either.
16:47:42 <zzo38> It follows the left zero law; maybe the right zero law should be removed from the documentation?
16:47:45 <elliott> back to logreading!
16:47:48 <elliott> 02:34:54: <oklopol> i met a burglar
16:47:48 <elliott> 02:35:21: <oklopol> chatted with him for 5 minutes, went home and called the cops. will prolly be stabbed soon enough :D
16:47:48 <elliott> :')
16:48:03 <ais523> hmm, what does that smiley mean?
16:48:08 <ais523> crying with happiness?
16:48:25 <elliott> it means the world is beautiful, or something
16:48:37 <elliott> but yes i suppose that's the literal meaning
16:48:45 <elliott> although ' looks like just a single tear to me
16:48:56 <ais523> well, it is
16:49:03 <monqy> :")
16:49:04 <zzo38> Do you think my instance Alternative IO is correct?
16:49:07 <ais523> because trying to render all the tears doesn't work well in ASCII
16:49:15 <monqy> :''''''''''''''''''''''''''')
16:49:20 <ais523> see what I mean?
16:49:35 <monqy> :'''')''''''
16:49:43 <elliott> '''''''''''''
16:49:45 * elliott puddle of tears
16:50:19 <Ngevd> If I had a language that had one command, "interpret input as brainfuck program", would it be Turing-Complete?
16:50:37 <ais523> yes, according to most definitions
16:50:42 <elliott> no
16:50:45 <elliott> according to most definitions
16:50:46 <monqy> except the other definitions
16:50:54 <monqy> hehehe
16:50:58 <zzo38> Ngevd: Many people have asked about things like that before already.
16:51:05 <ais523> elliott: well, it's meta-TC
16:51:13 <zzo38> And there already is an esolang like that for that purpose anyways!
16:51:15 <elliott> ais523: don't even
16:51:16 <ais523> in that it can express an interp for a TC language
16:51:22 <elliott> Ngevd: see here:
16:51:29 <ais523> we've had this argument before, but I can't remember the conclusion
16:51:33 <elliott> Ngevd: v
16:51:35 <elliott> Ngevd: http://esolangs.org/wiki/%E2%84%92
16:52:30 <elliott> ais523: the conclusion between people who aren't messing about on an IRC channel appears to be that models without input are better anyway so it's irrelevant
16:52:41 <ais523> right
16:52:46 <elliott> although i only have one source for that :P
16:52:51 <elliott> and I forget who it is
16:52:54 <Ngevd> I appear to have disconnected
16:52:59 <elliott> Ngevd: amazing
16:52:59 <Ngevd> Or perhaps am just lagging
16:53:02 <elliott> considering you're still here
16:53:51 <Ngevd> Oh there we go
16:53:51 <Ngevd> All the responses just flooded in
16:54:22 <zzo38> I used the MonadicT transformer with list monad to make like the probability distributions, since it is clear what join should mean.
16:54:46 <monqy> MonadicT?
16:55:21 <zzo38> I mean it is called MonoidicT
16:55:23 <zzo38> I made a mistake
16:55:36 <zzo38> It is actually called: newtype MonoidicT a m b = MonoidicT { runMonoidicT :: m (a, b) };
16:55:39 <zzo38> To be more exact.
16:56:05 <elliott> it's still just WriterT afaict :P
16:56:16 <zzo38> There is also the instance Monoid t => Monad ((,) t) join (x, (y, z)) = (x |*| y, z); (where |*| is really mappend)
16:57:02 <monqy> that's just Writer isn't it
16:57:26 <zzo38> There is already the instance Monoid t => Applicative ((,) t) but they forgot the Monad
16:57:30 -!- zzo38 has quit (Remote host closed the connection).
17:23:39 -!- Jafet has quit (Quit: Leaving.).
17:34:01 -!- oerjan has joined.
17:37:44 <oerjan> <Phantom_Hoover> I don't see how you can use i for true at all.
17:38:17 <oerjan> i'm pretty sure you _can_ convert i and `ki to k and `ki
17:39:30 <elliott> `ix = x, ``kix = i
17:39:32 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ix: not found
17:39:48 <elliott> ```kix`ki = `ki
17:39:49 <Ngevd> Whoa
17:39:49 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ``kix`ki: not found
17:39:55 <Ngevd> Suddenly I see a crazy way to do it
17:39:58 <elliott> ``ix`ki = `x`ki
17:40:00 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `ix`ki: not found
17:40:08 <elliott> thus we need x = `kk
17:40:08 <elliott> so
17:40:22 <elliott> ``<bool>`kk`ki
17:40:23 <oerjan> elliott: you _could_, like, add an initial space or something :P
17:40:24 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `<bool>`kk`ki: not found
17:40:25 <elliott> oerjan: right?
17:40:40 <monqy> `hi hakcego
17:40:43 <monqy> `thanks
17:40:48 <elliott> NO HACKEGO: ``i`kk`ki = k; ```ki`kk`ki = `ki
17:40:51 <elliott> i believe.
17:41:06 <elliott> Phantom_Hoover: SO HA
17:41:25 <oerjan> yeah looks right
17:43:18 <Ngevd> But backwards...?
17:43:30 <oerjan> i vaguely recall a theorem that if you have two LC terms in weak (head?) normal form, which are _not_ equivalent, then it is possible to find something to apply them to that gives any desired result.
17:44:00 <oerjan> Ngevd: what is backwards?
17:44:14 <elliott> oerjan: that's either an astonishing or obvious theorem, if true
17:44:18 <elliott> I'm not sure which
17:44:39 <elliott> in some sense it's obvious because they're not equivalent, in another sense it's astonishing that you can... get useful results out of that?
17:45:49 <oerjan> elliott: some of the vagueness may be in the exact requirements needed :P
17:46:05 <elliott> heh
17:46:33 <oerjan> i think it was in barendregt's famous LC book
17:47:18 <oerjan> *drecht
17:47:26 -!- Ngevd has quit (Ping timeout: 244 seconds).
17:47:35 <oerjan> "The Lambda Calculus -- Its Syntax and Semantics"
17:48:40 <oerjan> not beta-eta equivalent, was probably one of the requirements
17:49:41 <oerjan> and the weak normal form stuff was to ensure you had enough in it to not infinitely loop
17:49:44 <oerjan> oh hm
17:50:04 <oerjan> or possibly it involved having different types
17:50:13 -!- aloril has quit (Ping timeout: 255 seconds).
17:50:30 <oerjan> anyway i and `ki are both fully normalizable
17:50:43 -!- derrik has joined.
17:51:18 <elliott> oerjan: different types to the single type the LC has? :-)
17:52:27 <oerjan> elliott: the book had a lot about type systems for LC
17:52:31 <ais523> elliott: "typed lambda calculus" and "untyped lambda calculus" both exist
17:52:44 <elliott> ais523: I know
17:52:47 <ais523> and in fact, without an explicit "untyped", "typed" seems to be implied among actual computer scientists
17:52:49 <ais523> because they like types
17:53:02 <oerjan> and used it to prove nontrivial facts about untyped LC itself, iirc
17:53:25 * elliott doesn't think that's true at all, and suspects you might be using "actual computer scientists" to mean "computer scientists whose work filters down to me"
17:53:35 <elliott> or at least it seems fishy to me
17:53:58 <ais523> elliott: I mean "computer scientists whose seminars I attend"
17:54:02 <elliott> right :p
17:54:14 <ais523> but really, untyped LC is a bit uninteresting nowadays
17:54:17 * elliott has never seen "the lambda calculus" used to mean anything but the untyped version, at least without context
17:54:22 <ais523> because it doesn't form a nontrivial category
17:54:44 <ais523> if you're using LC as the basis of something, TLC tends to work better
17:54:59 <ais523> (and if you go down the other route, you seem to end up with Ursala)
17:55:16 <oerjan> elliott: one of the type systems was one which had the property that a term had a type iff it had a terminating reduction, iirc
17:55:23 <elliott> ais523: Ursala has types, sort of :P
17:55:38 <elliott> oerjan: yeah, I figured it was something like that
17:55:47 <oerjan> of course that means _finding_ a type is undecidable
17:55:57 <elliott> oerjan: I'm pretty sure you can make a type system that types /everything/ in LC reasonably, but -- yeah, that
17:56:02 <oerjan> but for normalized terms, it was possible
17:56:29 <oerjan> and iirc the type was preserved by reductions -- both ways
17:57:04 <elliott> <oerjan> elliott: one of the type systems was one which had the property that a term had a type iff it had a terminating reduction, iirc
17:57:20 <oerjan> so if it terminates, you essentially know the possible types are the same as for the result
17:57:21 <elliott> oerjan: does this include terms that depend on partial reductions of non-terminating terms?
17:57:25 <elliott> hmm, I dunno whether that's possible
17:57:30 <elliott> wait, of course it isn't
17:57:49 <elliott> "Proposed criticism of lambda calculus
17:57:49 <elliott> 01-Nov-2008: I suggest adding a section "Controversy in lambda calculus" because it seems like overkill on fairly useless stuff. I still ponder "Why Johnny can't program" & "Why Johnny can't de-virus" & "Why Johnny can't word search" etc. I think subjects like lambda calculus created a nerd-iverse (re: "universe") that wasted hours on useless math games."
17:57:55 <elliott> -- [[Talk:Lambda calculus]]]
17:57:58 <elliott> s/]]]/]]/
17:57:59 <oerjan> elliott: depends on what you mean by non-terminating
17:58:03 <elliott> oerjan: heh
17:58:34 <elliott> "My view is to cite sources that consider lambda calculus to be a limited concept that thwarted the expansion of computer science in other areas. For example, it has become common knowledge that languages are easier to program when using the standard syntax of algebra (but with words as variable names, not just x/y/z). The vast majority of all software systems originally written in LISP have been re-written in procedural, non-list languages."
17:58:35 <oerjan> you can have something reducing to head normal forms while subparts never terminate
17:58:36 <elliott> this comment...
17:58:47 <elliott> oerjan: right
17:59:21 -!- Ngevd has joined.
18:00:43 <Ngevd> Sorry about my tendency to lag out
18:01:10 <pikhq_> elliott: Apparently that person is rather ignorant of, well, functional languages newer than 1980.
18:01:28 <pikhq_> Or older than sometime in the 60s, for that matter.
18:04:07 -!- aloril has joined.
18:05:13 <oerjan> the type of \f x -> f (f x) was something like ((a -> b) /\ (b -> c)) -> a -> c
18:05:26 <oerjan> *the principal type
18:05:34 <oerjan> fully normalized terms had those
18:05:56 <elliott> Man, Stanislav has managed to turn McCarthy's death into his most intolerable blog post yet.
18:06:28 <monqy> :(
18:06:40 <elliott> What, is that the same Mathnerd314.
18:07:15 <shachaf> oerjan: Wait, did you just bring up my favourite function?
18:07:29 * shachaf considers reading scrollback.
18:07:50 <oerjan> for only head normalizable terms, non-terminating subterms would get the special type omega
18:08:24 <oerjan> which was only allowed to the left of -> or something like that
18:09:13 <oerjan> shachaf: it was just the simplest example i could think of of a function which requires an intersection of types in that type system
18:09:21 <elliott> oerjan: So Y would get the correct type, but its subterms would involve omega?
18:09:54 <shachaf> Ugh, so much scrollback.
18:09:59 <oerjan> elliott: well since it's not fully normalizable it may not have a principal type
18:10:07 <elliott> Hmm, right.
18:10:14 <oerjan> but it would have a type for every occasion where it "works"
18:10:18 <oerjan> iirc
18:10:25 * shachaf just wants a polymorphic \x y -> x (x y); why do we need all these fancy tricks?
18:10:41 <elliott> i don't see any fancy trick
18:11:36 <shachaf> I guess that's pretty simple, actually.
18:11:44 <ais523> :t \x y -> x (x y)
18:11:45 <lambdabot> forall t. (t -> t) -> t -> t
18:11:54 <ais523> I don't see the problem
18:12:19 <oerjan> ais523: the problem is that there are ways to apply the untyped \x y -> x (x y) which don't follow that type
18:12:50 <shachaf> @ty let f :: forall a f. (forall b. b -> f b) -> a -> f (f a); f x y = x (x y) in f
18:12:51 <lambdabot> forall (f :: * -> *) a. (forall b. b -> f b) -> a -> f (f a)
18:12:52 <ais523> hmm, I will call this function 2
18:13:07 <shachaf> > let f :: forall a f. (forall b. b -> f b) -> a -> f (f a); f x y = x (x y) in f Just True
18:13:08 <lambdabot> Just (Just True)
18:13:18 <oerjan> ais523: well of course it's the church numeral 2
18:13:22 <ais523> yes
18:13:46 <ais523> btw, people experimenting with Web of Lies, did you come to any conclusions but "it doesn't run on modern Linux"?
18:14:27 <elliott> ais523: I would come to conclusions if I could get it working
18:14:33 <elliott> ais523: I'm just waiting for you to fix the bug :P
18:14:50 <ais523> I can think up a fix that will almost certainly work, but feels a bit insecure
18:14:56 <ais523> which is to only partially drop permissions in the main process
18:15:04 <ais523> and then undrop them again when that bit of code reads
18:15:31 <ais523> I just don't like leaving around root perms even in the ssuid
18:15:41 <Ngevd> Going to the bonfire
18:15:43 <Ngevd> Bye
18:15:48 -!- Ngevd has quit (Quit: AWAAAAY!).
18:16:29 <ais523> because someone who can exploit a security bug in WOL could call the undrop command themselves
18:16:54 -!- zzo38 has joined.
18:17:22 <elliott> ais523: hmm, could you somehow drop root privs /at clone() time/?
18:17:29 <elliott> so that the relevant process is /never/ owned by root
18:17:55 <ais523> the problem is that fakeinit actually needs the root privs, it calls mknod a lot
18:17:58 <elliott> ais523: or, better: if your effective UID isn't root (but your real UID still is), do spawned processes get owned by your effective UID?
18:18:01 <ais523> the processes are dropped by the time the process under test runs
18:18:10 <ais523> *perms are dropped
18:18:11 <elliott> you could change that before forking or w/e, then change it back
18:18:14 <ais523> so by the second clone, the perms aren't there
18:18:37 <ais523> basically, there are three processes: weboflies, fakeinit, process under test
18:18:50 <ais523> weboflies forks fakeinit as root; fakeinit forks the process after dropping perms, so as nonroot
18:19:24 <elliott> right
18:19:33 <elliott> ais523: I see a flaw in your reasoning
18:19:36 <ais523> and weboflies then can't read the process under test's perms on any computers but mine
18:19:39 <ais523> for some reason
18:19:52 <elliott> ais523: how are /any/ /proc/N/fd directories owned by non-root in a typical linux system by your logic?
18:19:59 <elliott> it's all done by dropping privileges from root and forking, at some level
18:20:17 <ais523> elliott: I'm not trying to make an argument here, I'm just stating facts
18:20:32 <ais523> the observed conclusion doesn't seem to follow from the actual facts, which is why I'm confused
18:20:35 <elliott> ais523: yes, but your reasoning for the bug has been "/proc/N/fd is owned by root because it started off like that"
18:20:43 <elliott> which you've just shown absurd, I think
18:20:45 <ais523> yes
18:21:02 -!- derrik has left.
18:21:16 <ais523> hmm, why don't you check the perms on /proc/fd for init, gdm/kdm/getty/equivalent, and your shell?
18:21:37 <ais523> I'd do it, except the problem doesn't happen on my computer
18:22:03 <elliott> [elliott@dinky ~]$ ls -lhd /proc/1/fd
18:22:04 <elliott> dr-x------ 2 root root 0 Nov 5 18:20 /proc/1/fd
18:22:04 <elliott> [elliott@dinky ~]$ ls -lhd /proc/$(pgrep slim)/fd
18:22:04 <elliott> dr-x------ 2 root root 0 Nov 5 16:09 /proc/632/fd
18:22:04 <elliott> [elliott@dinky ~]$ ls -lhd /proc/$(pgrep bash | tail -n 1)/fd
18:22:04 <elliott> ls: cannot access /proc/7274/fd: No such file or directory
18:22:06 <elliott> [elliott@dinky ~]$ ls -lhd /proc/$(pgrep bash | tail -n 2 | head -n 1)/fd
18:22:08 <elliott> ls: cannot access /proc/7276/fd: No such file or directory
18:22:15 <elliott> but
18:22:16 <elliott> [elliott@dinky ~]$ ls -lhd /proc/self/fd
18:22:17 <elliott> dr-x------ 2 elliott users 0 Nov 5 18:21 /proc/self/fd
18:22:35 <elliott> [elliott@dinky ~]$ ps
18:22:35 <elliott> PID TTY TIME CMD
18:22:35 <elliott> 7244 pts/1 00:00:00 bash
18:22:35 <elliott> 7282 pts/1 00:00:00 ps
18:22:35 <elliott> [elliott@dinky ~]$ ls -lhd /proc/7244/fd
18:22:35 <elliott> dr-x------ 2 elliott users 0 Nov 5 18:20 /proc/7244/fd
18:22:52 <ais523> elliott: oh, by "shell" I meant along the lines of "GNOME shell"
18:22:57 <elliott> ah
18:22:58 <ais523> is slim the login process?
18:23:02 <elliott> slim is my DM
18:23:12 <elliott> ais523: I can check ck-launch-session, xfce4-session, xfwm4...
18:23:14 <elliott> which do you want :p
18:23:20 <elliott> [elliott@dinky ~]$ cat ~/.xinitrc
18:23:21 <elliott> #!/bin/sh
18:23:21 <elliott> exec ck-launch-session startxfce4
18:23:41 <ais523> elliott: whichever one gets execed most directly by the login process
18:23:42 <elliott> ah, ck-launch-session actually isn't alive any more
18:23:54 <ais523> the processes dying is making this a bit harder to trace
18:23:56 <elliott> ais523: That would be... ~/.xinitrc, probably
18:24:02 <elliott> 632 ? 00:00:00 slim
18:24:02 <elliott> 639 tty7 00:04:44 X
18:24:02 <elliott> 642 ? 00:00:00 udevd
18:24:02 <elliott> 643 ? 00:00:00 udevd
18:24:02 <elliott> 661 ? 00:00:00 dhcpcd
18:24:03 <elliott> 662 ? 00:00:00 sh
18:24:04 <elliott> 674 ? 00:00:00 dbus-launch
18:24:06 <elliott> 675 ? 00:00:00 dbus-daemon
18:24:08 <elliott> 679 ? 00:00:00 xfconfd
18:24:10 <elliott> 684 ? 00:00:00 ssh-agent
18:24:13 <elliott> 694 ? 00:00:00 xfce4-session
18:24:15 <elliott> I'll check the sh, dbus-launch, and xfce4-session
18:24:45 <elliott> [elliott@dinky ~]$ ls -lhd /proc/662/fd # sh
18:24:45 <elliott> dr-x------ 2 elliott users 0 Nov 5 16:09 /proc/662/fd
18:24:45 <elliott> [elliott@dinky ~]$ ls -lhd /proc/674/fd # dbus-launch
18:24:45 <elliott> dr-x------ 2 elliott users 0 Nov 5 16:10 /proc/674/fd
18:24:45 <elliott> [elliott@dinky ~]$ ls -lhd /proc/694/fd # xfce4-session
18:24:46 <elliott> dr-x------ 2 elliott users 0 Nov 5 16:10 /proc/694/fd
18:25:10 <elliott> ais523: aha
18:25:19 <elliott> ais523: when you clone from fakeinit, do you remember to specify you want a new fd namespace?
18:25:36 <ais523> err, those exist?
18:25:45 <ais523> I think so, but I'll have to check
18:25:47 <elliott> of course
18:25:57 <elliott> pid = clone(child_handler,
18:25:58 <elliott> (char*)p1stack + sizeof(p1stack) - sizeof(void*),
18:25:58 <elliott> CLONE_PTRACE, argv);
18:25:58 <ais523> (I need to leave stdin/stdout/stderr connected, ofc, but a new fd namespace would do that)
18:25:59 <elliott> ais523: you don't
18:26:02 <elliott> fix that :)
18:26:02 <ais523> aha
18:26:17 <ais523> yes I do
18:26:20 <ais523> it's a negative flag
18:26:25 <elliott> huh?
18:26:29 <elliott> hmm
18:26:32 <ais523> new FD namespace is done by /not/ specifying CLONE_FILES
18:26:38 <elliott> oh, indeed
18:26:43 <elliott> ais523: gah, that seemed /so obvious/
18:26:46 <zzo38> Now I have the classes: MonoidPlus, Group, MonoidMinus, MonoidNorm, MonoidPlusNorm, Semiring, and Ring. When doing probability distributions, you could generalize it to not necessarily proper probabilities, if you have a type which is both Ring and MonoidPlusNorm. Now you can join probabilities, normalize it, and so on. You could use complex numbers if you want to.
18:27:06 <elliott> ais523: I hate it when I have a really good aha moment and it isn't the bug
18:27:12 <ais523> yep
18:27:14 <elliott> especially when it's an /actual bug/ still, but not the one I'm trying to fix
18:27:36 <Vorpal> who doesn't
18:28:15 <elliott> CLONE_PID (obsolete)
18:28:15 <elliott> If CLONE_PID is set, the child process is created with the same process ID as the calling process. This is good for hacking the system, but other‐
18:28:15 <elliott> wise of not much use. Since 2.3.21 this flag can be specified only by the system boot process (PID 0). It disappeared in Linux 2.5.16.
18:28:42 <ais523> oh, I end up fixing loads of bugs when looking for other bugs
18:28:47 <ais523> so I find it useful
18:29:36 -!- sebbu has quit (Read error: Connection reset by peer).
18:29:52 <elliott> ais523: gah, there doesn't look like anything relevant in man 2 clone
18:30:07 -!- sebbu has joined.
18:30:07 -!- sebbu has quit (Changing host).
18:30:07 -!- sebbu has joined.
18:30:25 <fizzie> No context-reading again, but relevant? http://www.mail-archive.com/git-commits-head@vger.kernel.org/msg11654.html -- it's a 2.6.22 patch which makes /proc/N/fd directory have a custom permissions handler which overrides the usual when task_pid(current) == proc_pid(inode). But it could have been removed for all I know.
18:30:47 <ais523> that's interesting
18:30:53 <elliott> that sounds suspiciously relevant
18:30:54 <ais523> what do task IDs handle again?
18:31:02 <fizzie> That's of course not something that'd show up in the permissions-as-seen-by-ls.
18:31:13 <elliott> fizzie: basically the problem is that we have /proc/N owned by someuser but /proc/N/fd owned by root
18:31:16 <elliott> and we have no idea why
18:31:17 <fizzie> (Okay, away again.)
18:31:24 <elliott> damn :)
18:31:35 <elliott> + * /proc/pid/fd needs a special permission handler so that a process can still
18:31:35 <elliott> + * access /proc/self/fd after it has executed a setuid().
18:31:41 <elliott> ais523: ok, this is sounding very worryingly relevant?
18:32:18 <ais523> no, I don't think it is relevant; that's covering the case where a process starts suid root or run via sudo, drops permissions, then tries to read /proc/self/fd
18:32:28 <oerjan> 16:39:02: <elliott> ais523: fmapM :: (Monad m) => (a -> m b) -> (r -> a) -> m (r -> b)
18:32:52 <ais523> :t mapM
18:32:53 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
18:33:04 <elliott> ais523: still, we have a case of dropping permissions from root, and then a child failing to read /proc/N/fd...
18:33:12 <elliott> ais523: it would help if I knew what tasks are
18:33:48 <ais523> elliott: I think that that's special-casing something in the existing behaviour, and the existing behaviour is what's relevant
18:34:00 <elliott> hmm, okay
18:34:49 <ais523> I'm racking my brains for things that could be relevant and resolve the inconsistency
18:34:59 <elliott> maybe Linux just doesn't like you?
18:35:01 <ais523> if pgids or sids were involved, they'd both explain what was happening, but I see no reason for them to be
18:35:06 <ais523> elliott: *doesn't like you?
18:35:08 <ais523> it works for /me/
18:35:14 <oerjan> hm i guess that actually cannot be written
18:35:22 <elliott> ais523: you could be lying! maybe they want everyone else to think you're a crank!
18:35:24 <elliott> oerjan: that was my /point/
18:35:42 <elliott> ais523: also, correcting something I said to itself is...
18:35:44 <oerjan> O KAY
18:35:45 <ais523> on my system, I can read the process-under-test's FDs from the main process, but not fakeinit's, which is simple and makes sense
18:35:54 <elliott> oerjan: read onwards :P
18:36:09 <ais523> elliott: it's not correcting to itself; the referent of "you" is different in each case
18:36:20 <elliott> corrections are textual!
18:36:23 <ais523> as in, it was a substitution on meaning not words
18:36:30 <ais523> I don't see why I can't use a semantic correction
18:36:32 <ais523> for a semantic mistake
18:36:34 <elliott> you should have s/you/me/'d in the correction, so that the resulting statement I would have made would have been correct
18:38:48 <ais523> but then it isn't a correction at the semantic level!
18:39:15 <ais523> hmm, it'd be great if there were a better channel than #esoteric for "weird corner cases of Linux people don't generally care about"
18:41:03 <elliott> heh
18:41:13 <elliott> I don't even see where the corner case /is/, though
18:41:26 <elliott> the problem is basically "Linux breaks after I do [huge laundry list of terrible things]"
18:41:30 <ais523> yes
18:41:31 <elliott> I don't think anybody can solve that problem but you
18:41:44 <ais523> but I can't solve it directly, because the problem doesn't exist on my system
18:42:19 <elliott> Want an ssh account? :-P
18:42:24 <ais523> hmm, I suppose the simplest test is to write a process that is originally run as root, then does setresuid, fork, exec, and the process it execs hangs a while (sleep 100 would do)
18:42:30 <ais523> then check the perms there
18:42:46 <ais523> I'd need root access as well as an ssh account to test this, and that'd be a bit of a crazy thing to give me
18:43:08 <ais523> (and a very crazy thing to give anyone else)
18:43:54 <elliott> main(c,v){setresuid(0,0,0);if(!fork()){execlp(v[1],v+1);};sleep(100);}
18:43:59 <elliott> ran as ./a.out sleep 100
18:44:00 <ais523> that's not dropping perms
18:44:00 <elliott> look good?
18:44:04 <elliott> oh, er
18:44:07 <elliott> s/0/1000/
18:44:07 <ais523> you need to set them to some values other than 0
18:44:11 <elliott> (my user accoutn)
18:44:12 <elliott> account
18:44:18 <ais523> yep, that looks reasonable
18:44:28 <ais523> assuming execlp does what you think it does; I can never remember which of the execs are which
18:44:35 <ais523> shouldn't that be execvp?
18:44:40 <ais523> you're giving it an array as argument
18:44:45 <elliott> oh, right
18:44:52 <ais523> yep, execvp, I just checked
18:44:59 <ais523> run that with sleep 100 as args, as root
18:45:05 <ais523> and see what happens
18:45:26 <elliott> augh.c:1:48: error: subscripted value is neither array nor pointer nor vector
18:45:27 <elliott> o;ps
18:45:34 <elliott> forgot my K&R type declaration of v
18:45:37 <ais523> you need to give argv a type
18:45:43 <elliott> main(c,v)char**v;{setresuid(0,0,0);if(!fork()){execvp(v[1],v+1);};sleep(100);}
18:45:46 <elliott> im good programer
18:45:58 <elliott> ais523: oh, maybe it should print its pid
18:46:02 <elliott> on both halves of the fork
18:46:06 <ais523> it's likely obvious anyway, but it'd help
18:48:11 <elliott> main(c,v)char**v;{setresuid(1000,1000,1000);if(c=fork())printf("%d %d\n",c,getpid());else execvp(v[1],v+1);sleep(100);}
18:48:12 <elliott> here we go
18:48:32 <elliott> [elliott@dinky weboflies]$ ls -lhd /proc/7583{,/fd}
18:48:32 <elliott> dr-xr-xr-x 8 elliott root 0 Nov 5 18:47 /proc/7583
18:48:32 <elliott> dr-x------ 2 root root 0 Nov 5 18:47 /proc/7583/fd
18:48:32 <elliott> [elliott@dinky weboflies]$ ls -lhd /proc/7584{,/fd}
18:48:32 <elliott> dr-xr-xr-x 8 elliott root 0 Nov 5 18:47 /proc/7584
18:48:33 <elliott> dr-x------ 2 elliott root 0 Nov 5 18:47 /proc/7584/fd
18:48:34 <elliott> ais523: wait, what?
18:48:41 <elliott> oh, elliott:root is expected
18:48:45 <elliott> I didn't change the gid
18:48:47 <ais523> yes, indeed
18:49:07 <elliott> but 7583's result is v. interesting
18:49:14 <elliott> ais523: I suppose I should try clone rather than fork
18:49:17 <ais523> 7583's result is consistent with my system
18:49:22 <ais523> and yes, that's the next thing to try
18:49:33 <ais523> you could even give CLONE_PTRACE as an arg, I guess
18:49:35 <elliott> starting to regret my chosen coding style already
18:49:50 <ais523> can you do main(c,char**v), incidentally?
18:49:52 <elliott> ais523: wouldn't that freeze the child?
18:49:53 <elliott> and no
18:50:04 <ais523> elliott: nope, CLONE_PTRACE only does anything if you're being ptraced yourself
18:50:09 <elliott> ah, okay
18:50:11 <ais523> you're thinking of PTRACE_TRACEME
18:50:33 <elliott> child_stack can be NULL, right?
18:50:35 <ais523> CLONE_PTRACE basically means "debugged-ness propagates over the clone"; weboflies injects it into other process's clone calls
18:50:47 <ais523> elliott: it isn't for me; the docs say it can't be
18:50:53 <elliott> what should I make it?
18:50:56 <ais523> but apparently it can be anyway, it's just undocumented
18:51:00 <elliott> heh
18:51:01 <ais523> I made it a char array
18:51:07 <elliott> I'll make it NULL out of laze
18:51:09 <elliott> wait, you can pass arbitrary arguments to the fn with clone?
18:51:20 <elliott> and then there's three arguments /after/ the varargs?
18:51:25 <ais523> just the one void*
18:51:27 <ais523> it's not varargs
18:51:30 <elliott> oh, ok.
18:51:31 <elliott> int flags, void *arg, ...
18:51:31 <elliott> /* pid_t *ptid, struct user_desc *tls, pid_t *ctid */ );
18:51:34 <elliott> that's still wtf though
18:51:38 <ais523> well, it is, but only to hide the fact that those three args are optional
18:51:43 <elliott> oh
18:51:46 <ais523> it's not ... as in varargs, but as in stdarg
18:51:53 <ais523> err, not stdarg
18:51:58 <ais523> whatever was used before varargs was invented
18:52:35 <ais523> incidentally, strace injects CLONE_PTRACE into other process's fork/clone calls too
18:52:39 <elliott> f(v)char**v;{execvp(v[1],v+1);}
18:52:39 <elliott> main(c,v)char**v;{setresuid(1000,1000,1000);printf("%d %d\n",clone(f,0,CLONE_PTRACE,v),getpid());sleep(100);}
18:52:45 <ais523> even changing fork to clone for that purpose
18:52:49 <elliott> ais523: heh
18:53:02 <ais523> (the interface is identical syscall-wise; just different in glibc)
18:53:20 <elliott> ais523: oh no, clone() is returning -1
18:53:30 <ais523> perhaps you can't put NULL there
18:53:32 <ais523> in glibc
18:53:35 <ais523> just in the direct kernel syscall
18:53:36 <elliott> yeah, probably
18:53:39 <elliott> I'll allocate a char array
18:53:43 <elliott> how many bytes should it be, roughly?
18:53:51 <ais523> enough for one exec call
18:53:56 <ais523> so 100 will easily be enough
18:54:06 <ais523> make it 512
18:54:07 <elliott> #define _GNU_SOURCE
18:54:07 <elliott> #include <sched.h>
18:54:07 <elliott> f(v)char**v;{execvp(v[1],v+1);}
18:54:07 <elliott> main(c,v)char**v;{char s[1024];setresuid(1000,1000,1000);printf("%d %d\n",clone(f,s,CLONE_PTRACE,v),getpid());sleep(100);}
18:54:08 <elliott> beautiful
18:54:19 <ais523> wait, you put it /on the stack/?
18:54:24 <ais523> make that thing static!
18:54:29 <elliott> [elliott@dinky weboflies]$ ls -lhd /proc/7739{,/fd}
18:54:29 <elliott> dr-xr-xr-x 8 elliott root 0 Nov 5 18:53 /proc/7739
18:54:29 <elliott> dr-x------ 2 root root 0 Nov 5 18:53 /proc/7739/fd
18:54:29 <elliott> [elliott@dinky weboflies]$ ls -lhd /proc/7740{,/fd}
18:54:29 <elliott> dr-xr-xr-x 8 elliott root 0 Nov 5 18:53 /proc/7740
18:54:30 <elliott> dr-x------ 2 elliott root 0 Nov 5 18:53 /proc/7740/fd
18:54:31 <ais523> I'm not sure what happens if you put a stack on the stack
18:54:34 <ais523> but it seems sort-of wrong
18:54:36 <elliott> ais523: it works, apparently!
18:54:54 <ais523> elliott: OK, so now we have to figure out what weboflies is doing differently
18:55:06 <elliott> ais523: it's formatted slightly more sanely, for one
18:55:18 <elliott> ais523: try removing all whitespace
18:55:53 <ais523> I doubt that'll matter
18:57:00 <elliott> ais523: am i meant to be reading weboflies.c here, or are you? :-)
18:58:13 <ais523> I'm quite familiar with it already, and I'm trying to guess what's different
18:58:14 <ais523> from memory
18:58:37 <Phantom_Hoover> What does weboflies do?
18:59:09 <elliott> Phantom_Hoover: make people go insane
18:59:26 <elliott> Phantom_Hoover: also, catch flies
18:59:38 <Phantom_Hoover> Cool.
18:59:44 <Phantom_Hoover> How does it go about the former?
19:00:13 <ais523> Phantom_Hoover: by directly twiddling bits in their process's memory
19:00:15 <elliott> Phantom_Hoover: catching lots of bugs and then making people figure out what's causing them
19:00:19 <elliott> get it?
19:00:21 <elliott> flies are bugs!!!!!!
19:00:30 <elliott> webobugs
19:00:32 <Phantom_Hoover> Ah.
19:00:32 <ais523> in ways that have a tendency to confuse Linux
19:03:40 <Phantom_Hoover> http://en.wikipedia.org/wiki/Lists_of_Zambia-related_topics
19:03:42 <Phantom_Hoover> I...
19:05:12 <elliott> airports, birds, settlements
19:09:53 <elliott> http://en.wikipedia.org/wiki/Talk:Lists_of_Zambia-related_topics
19:09:55 <elliott> least loved article
19:21:40 <oerjan> i submit that the wikipedia list system will eventually evolve sentience when it becomes so complicated that it requires a TC kind/sort system.
19:21:53 <elliott> :D
19:22:16 -!- Vorpal has quit (Ping timeout: 260 seconds).
19:27:51 <oerjan> "Well, I usually use whatever comes handy, but I'm sure there are other approaches — like, for example, trying something almost unusable first.
19:27:56 <oerjan> "
19:28:02 <oerjan> seen on haskell-cafe
19:32:18 <elliott> heh
19:40:44 <elliott> ais523: any ideas about weboflies?
19:41:34 <ais523> no, I'm a little stumped
19:41:51 <elliott> Gregor: OMG, the Node folks just keep on giving. Get this: ASYNCHRONOUS testing. http://vowsjs.org/
19:41:54 <elliott> Webscale tests!
19:41:55 <ais523> let me make sure it isn't a schrödingbug
19:42:57 <ais523> yep, it's working just fine for me, still
19:44:43 <elliott> ais523: I could give you root ssh access to a VM
19:46:27 <ais523> elliott: hmm, might help
19:46:35 <ais523> such a pity that weboflies repels debuggers
19:46:36 <oerjan> we bo flies here
19:46:52 <elliott> ais523: ok, I'll set one up... you could set up your own VM, but I guess you don't have a recent iso handy
19:46:59 <ais523> right
19:47:08 <ais523> I don't have a recent iso handy of /anything/
19:47:13 <elliott> hmm, neither do I, but I can download one quickly
19:47:18 <elliott> it'll be a 32-bit vm to simplify things
19:47:29 <elliott> also, qemu, since I don't have VirtualBox installed
19:50:04 -!- nooga has quit (Ping timeout: 240 seconds).
19:51:30 <elliott> ais523: right, I'll have a VM up in 15 minutes or so
19:52:07 <ais523> I suppose I'm glad you aren't insane enough to give people you only know over the Internet root access to your main computer
19:52:38 <elliott> ais523: I was going to, but then I realised I didn't want you to have read access to ~
19:52:57 <ais523> yes, that's probably a good idea ;)
19:53:09 <ais523> not giving me read access to ~
19:53:11 <elliott> there should be something like root identical in every way except that they can't elevate to root or read directories with a certain special bit set
19:53:18 <ais523> (I'm amused that you don't mind me having /write/ access to ~, though)
19:53:32 <elliott> ais523: meh, the only thing you could do with that is trash things
19:53:57 <pikhq_> I've known people who literally have ~ accessible via http.
19:53:59 <ais523> I could rewrite your .bashrc to change the perms on your home dir so that I could read them, I guess
19:54:08 <ais523> pikhq_: normish had / accessible via http
19:54:12 <ais523> but it wasn't really a normal system
19:54:21 <elliott> ais523: yes, but I don't think you /would/ do that :)
19:54:31 <pikhq_> IIRC, ams has that setup.
19:54:32 <elliott> (I don't really think you'd look at ~ either, but it's a bit too readily accessible for me to be happy about it)
19:54:46 <pikhq_> Of course, ams is anything but normal.
19:54:50 <ais523> right, and I'd feel uneasy having access to it even if I didn't use it
19:55:02 <elliott> hmm, home directories should be encrypted loopback filesystems
19:55:14 <elliott> problem: you'd have to type your private key in on every login
19:55:27 <elliott> I suppose password-encrypted would work, actually
19:55:34 <pikhq_> Well, you already have to type a password in on every login.
19:55:37 <elliott> right
19:55:53 <elliott> gah, I need a better name for my temporary stuff than ~/Temp
19:56:05 <elliott> (needs to be titlecased because ~/Code is permanently ingrained in my brain)
19:56:15 <ais523> elliott: how temporary?
19:56:22 <elliott> ais523: good question :)
19:56:24 <ais523> I use /var/tmp for temporary stuff that needs to persist across reboots
19:56:27 <elliott> in this case, the VM HD in question
19:56:28 <ais523> and /tmp for other temporary stuff
19:56:38 <elliott> it's not so temporary that I want it in a system temporary directory
19:56:41 <ais523> oh, I probably would put that in /tmp
19:56:46 <elliott> but I won't feel any great loss if I rm -r ~/Temp
19:56:56 <elliott> hmm, ~/Junk is tempting
19:57:39 <ais523> I have a specific directory for things that I want to keep around because they'd be time-consuming to redownload and reunpack, but are too large and unimportant back up
19:57:45 <ais523> *to back up
19:57:50 <elliott> that's /var/cache
19:58:05 <elliott> which is why downloaded packages are stored there
19:58:09 <ais523> well, OK
19:58:14 <ais523> but it's not quite the same as /var/cache
19:58:25 <ais523> it's things like the repo of gnome-games (with entire history)
19:58:29 <elliott> this is why my Keep system is best :)
19:58:32 <ais523> and my builds of it
19:58:35 <elliott> those would go in ~/Keep/YYYY-MM
19:58:39 <ais523> you don't normally build things in /var/cache, do you?
19:58:44 <elliott> indeed
19:58:59 <elliott> (2/3) installing vde2 [######################] 100%
19:58:59 <elliott> Change /etc/conf.d/vde to your needs.
19:58:59 <elliott> vde config files should be placed in /etc/vde, sample files are provided.
19:58:59 <elliott> iptables and dhcpd sample files have been installed to '/usr/share/vde2'.
19:58:59 <elliott> Merge those examples, if needed to the according config files.
19:59:00 <elliott> blahh, I hope qemu networking works without doing that
19:59:06 <elliott> I anticipate forwarding the ssh port to be a pain
19:59:14 <ais523> what's vde?
19:59:21 <elliott> a dependency of qemu
19:59:23 <ais523> elliott: reverse-tunnel from the VM outwards?
19:59:35 <elliott> ais523: I mean, exposing it on my local machine outside of the VM
19:59:42 <elliott> the default networking mode of most VM's doesn't do that
19:59:50 <ais523> right, I see
20:00:17 <elliott> [elliott@dinky Temp]$ qemu-img create weboflies.qemu2 4G
20:00:17 <elliott> Formatting 'weboflies.qemu2', fmt=raw size=4294967296
20:00:17 <elliott> [elliott@dinky Temp]$ ls -lh
20:00:17 <elliott> total 0
20:00:17 <elliott> -rw-r--r-- 1 elliott users 4.0G Nov 5 19:59 weboflies.qemu2
20:00:18 <elliott> turns out qemu2 =/= qcow2
20:00:36 <elliott> [elliott@dinky Temp]$ qemu-img create -f qcow2 weboflies.qcow2 4G
20:00:36 <elliott> Formatting 'weboflies.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=65536
20:00:36 <elliott> [elliott@dinky Temp]$ ls -lh weboflies.qcow2
20:00:36 <elliott> -rw-r--r-- 1 elliott users 193K Nov 5 19:59 weboflies.qcow2
20:00:36 <elliott> better
20:00:45 <ais523> elliott: is it a sparse file?
20:00:52 <elliott> ais523: presumably; it created instantly
20:00:54 <ais523> for some weboflies test, I was using a sparse ext4
20:01:04 <ais523> which is 4G notional size, but much smaller on disk
20:01:48 <pikhq_> It's not a sparse file as far as the underlying filesystem is concerned; the logic for doing that is in qemu itself for the qcow2 format.
20:03:03 <elliott> pikhq_: he was talking about the previous raw noe
20:03:04 <ais523> pikhq_: I meant in qemu2
20:03:04 <elliott> one
20:03:07 <elliott> ais523: qcow2
20:03:09 <elliott> :D
20:03:20 <ais523> elliott: so one issue with sparse files is, that they don't decompress well
20:03:25 <pikhq_> Yeah, the raw format is just a naive sparse file.
20:03:34 <elliott> haha
20:03:34 <ais523> they compress just fine, but decompressing tends to actually write out all the zeroes
20:03:35 <pikhq_> ais523: tar -S
20:03:54 <ais523> pikhq_: that is good to know
20:04:01 <pikhq_> GNU tar records sequences of 0s so it can write it out as a sparse file again using that option.
20:04:12 <elliott> why isn't that default?
20:04:24 <pikhq_> elliott: It's a GNU-specific extension to the format.
20:04:36 <elliott> oh, it's at record time, not unpack time?
20:04:39 <pikhq_> Yeah.
20:04:40 <ais523> yes
20:04:42 <elliott> right
20:05:15 <pikhq_> When you unpack with a non-supporting tar, you basically get a file with a header describing the sparseness and a bunch of bits.
20:05:51 <pikhq_> IIRC the format was designed so that, at least in principle, you could use a small C program to unpack that.
20:07:53 <elliott> ais523: how much RAM will you need? :p
20:08:06 <ais523> only a few megabytes, to run tests
20:08:21 <elliott> I don't think Linux will even boot with that little :)
20:08:32 <elliott> Man, Arch's installer is so slow and clunky.
20:08:35 <olsner> a few megabytes ... and then a gigabyte to boot the rest of the system
20:08:38 <elliott> There's a noticable delay after hitting any button.
20:08:48 <elliott> ais523: you're getting a jfs filesystem, hope you like it
20:08:59 -!- oerjan has quit (Quit: Good night).
20:09:04 <ais523> why jfs on a VM?
20:09:10 <ais523> just out of interest
20:09:17 <elliott> I like jfs :)
20:09:43 <elliott> had to make an ext2 /boot because arch's installer doesn't do grub2 :(
20:09:47 <elliott> or lilo, lilo would work too
20:09:59 <elliott> (seriously, lilo has much better filesystem support than grub1)
20:10:23 -!- derrik has joined.
20:10:58 <olsner> hmm, lilo doesn't have filesystem support at all, does it?
20:11:18 <elliott> of course it does; how else would it boot?
20:11:36 <olsner> by making a list of blocks to load when you install it, of course
20:11:58 <elliott> hmm, I'm pretty sure it supports reading filesystems nowadays
20:12:09 <elliott> I could always be wrong, though
20:12:26 <olsner> it was a long time ago I used lilo, it can have changed a lot since then
20:13:30 <pikhq_> elliott: It doesn't.
20:13:49 <elliott> pikhq_: well, the statement is still true then, lilo supports *every* filesystem! :)
20:14:03 <elliott> Well, any filesystem that stores the kernel as contiguous raw bytes
20:14:27 <pikhq_> It records in the boot sector the location of a block of the disk that contains a list of blocks for each file it cares about.
20:14:35 <elliott> heh
20:14:44 <pikhq_> i.e. it doesn't even require the kernel be a series of contiguous raw bytes.
20:14:59 <elliott> can't do compression or encryption, though :)
20:15:04 <pikhq_> Right.
20:15:15 <olsner> nothing else did back then either, so that's just fine :)
20:15:32 <pikhq_> Slackware still *uses* lilo.
20:15:44 <pikhq_> I mean, it doesn't support any other bootloader.
20:15:48 <elliott> the ideal would be a bootloader that can use linux filesystem modules
20:15:55 <elliott> silly to duplicate all that effort
20:16:14 <olsner> i.e. using linux on a /boot partition as the boot loader?
20:16:34 <elliott> olsner: well, yeah :)
20:16:41 <elliott> why /can't/ linux boot itself?
20:16:51 <pikhq_> It can. kexec.
20:16:51 <elliott> I suppose the problem is you need the filesystem support to load the filesystem support
20:16:55 <elliott> but that's only a problem if it's not compiled in
20:16:59 -!- nooga has joined.
20:17:10 <pikhq_> The issue is getting *a* Linux running in the first place...
20:17:12 <elliott> surely it'd not take much code to get linux to be installable outside of the FS
20:17:20 <elliott> you'd need a suitable boot sector, that's all
20:17:26 <pikhq_> Until 2.6 you could.
20:17:26 <olsner> it can/could/does build with a built-in boot sector
20:17:34 <zzo38> Now I made the function "probNorm" to normalize a probability distribution using MonoidicT.
20:17:34 <elliott> what did 2.6 do? :(
20:17:42 <pikhq_> dd if=/boot/vmlinuz of=/dev/fd0
20:17:47 <pikhq_> Removed the boot sector.
20:17:53 <elliott> lame
20:18:11 <pikhq_> I think it only booted from floppy, though.
20:18:26 <zzo38> But it has to be a list, the monoid has to be a Ring and a MonoidPlusNorm and Eq, and the data has to be Ord.
20:18:47 <elliott> zzo38: you don't need a list
20:18:50 <elliott> see Data.Foldable
20:19:35 <zzo38> elliott: OK, I will look.
20:19:45 <elliott> zzo38: I'd go for foldMap -- that lets you map every element of the structure to a monoid, then sums them all
20:19:57 <elliott> so you just take the function to turn it into a monoid (e.g. Sum) and extract the final value out
20:20:06 <elliott> but you could do foldr (+) 0 if you're boring :)
20:20:20 <elliott> actually
20:20:23 <elliott> Data.Foldable.sum exists, so yeah
20:21:52 <zzo38> The probNorm function does a whole bunch of stuff including sorting and combining entries, and removing zero probabilities (represented by values equal to mpempty)
20:24:10 <elliott> ais523: this VM is currently taking a really long time to calculate checksums
20:24:13 <elliott> ais523: I probably should have given it more RAM
20:24:39 <zzo38> Yes there is Data.Foldable.sum but I am using it for any ring, so that won't work.
20:27:03 <elliott> Yeah, just use the folds directly then
20:35:22 <elliott> ais523: the installer died at the hands of the OOM killer...
20:35:28 <ais523> ouch
20:35:32 <ais523> probably it does need more memory :)
20:35:38 <elliott> I'll do it again later :P
20:35:40 <elliott> cba right now
20:46:57 -!- NihilistDandy has joined.
21:10:34 <elliott> `? welcome
21:10:37 <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
21:10:39 <elliott> `? finland
21:10:42 <HackEgo> Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus.
21:10:44 <elliott> (turns out those are not the same word)
21:11:00 <Phantom_Hoover> `? elliott
21:11:02 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?
21:11:09 <elliott> Gregor wrote that.
21:11:13 <Phantom_Hoover> `? Gregor
21:11:15 <HackEgo> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
21:11:25 <Phantom_Hoover> `? ai
21:11:27 <Phantom_Hoover> `? ais523
21:11:27 <HackEgo> ai? ¯\(°_o)/¯
21:11:29 <HackEgo> ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented.
21:11:33 <Phantom_Hoover> `? Ph
21:11:35 <HackEgo> Ph? ¯\(°_o)/¯
21:11:36 <Phantom_Hoover> `? Phantom_Hoover
21:11:38 <HackEgo> Phantom_Hoover? ¯\(°_o)/¯
21:11:45 <Phantom_Hoover> I keep forgetting to hit tab.
21:11:55 <Phantom_Hoover> `? EgoBot
21:11:57 <HackEgo> EgoBot? ¯\(°_o)/¯
21:12:02 <Phantom_Hoover> `? fungot
21:12:02 <elliott> `? friendship
21:12:03 <fungot> Phantom_Hoover: is not often that he returns empty-handed. he knows where the old slope holds unchanged the fine estates and bits of walled garden and crystal
21:12:04 <HackEgo> fungot? ¯\(°_o)/¯
21:12:08 <elliott> `? friendship
21:12:11 <HackEgo> friendship wisdom
21:12:19 <HackEgo> friendship wisdom
21:12:21 <Phantom_Hoover> How do I add things
21:12:34 <Phantom_Hoover> `? CakeProphet
21:12:36 <HackEgo> ​:>
21:12:42 <Phantom_Hoover> `? tiffany
21:12:44 <HackEgo> tiffany? ¯\(°_o)/¯
21:12:52 <Phantom_Hoover> `? augur
21:12:54 <HackEgo> augur took no cakes.
21:12:56 <tiffany> wha?
21:16:40 <elliott> <Phantom_Hoover> How do I add things
21:16:43 <elliott> learn to `learn
21:18:20 <Gregor> HELLO BEAUTIFUL SEXY NEW COMPUTER
21:18:32 <Gregor> $ df -h .
21:18:34 <Gregor> Filesystem Size Used Avail Use% Mounted on
21:18:36 <Gregor> /dev/sda1 2.7T 7.2G 2.6T 1% /
21:18:38 <Gregor> Awwwwwwww yeaaaaaaaaaaah
21:18:54 <olsner> 7.2GB used? omg the bloat
21:19:46 <elliott> Gregor: mount | grep sda1
21:20:33 <Phantom_Hoover> `learn you a haskell
21:20:35 <HackEgo> I knew that.
21:20:37 <elliott> `? you
21:20:39 <Phantom_Hoover> `? you
21:20:39 <HackEgo> you a haskell
21:20:41 <HackEgo> you a haskell
21:20:44 <elliott> You so a Haskell.
21:21:03 <Gregor> elliott: ... why?
21:21:19 <elliott> Gregor: Because I bet you're using a Wrong Filesystem, and I want to insult your computer on that basis.
21:21:43 <Gregor> I'm using ext4. <elliott> LOLOL IT DON'T SCALE I PREFER MURDERFS
21:21:47 <Phantom_Hoover> `learn fungot cannot be stopped by that sword alone.
21:21:48 <fungot> Phantom_Hoover: when age fell upon the world whenever another earthquake shall heave their monstrous stone city again to the pit, all fnord by a white god might prove valuable to the ethnologist. in his lonely farmhouse. he was writhing under the bedclothes, and a sprinkling of crumpled papers. it was inside this circle that the ring of fire.
21:21:49 <HackEgo> I knew that.
21:21:53 <Phantom_Hoover> `? fungot
21:21:55 <fungot> Phantom_Hoover: that such regions in truth existed, seemed amply clear from many things. faint cries and groans unmistakably came up now and then he shut him in an attic room across the hall. all i could, and watched for the lights to come up early the next day with little old matthew fenner, whose grave was not very likely to be fnord fnord,
21:21:55 <HackEgo> fungot cannot be stopped by that sword alone.
21:21:58 <olsner> he's probably using one of the boring default ones, like ext4
21:22:03 <elliott> ^style
21:22:03 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft* nethack pa sms speeches ss wp youtube
21:22:21 -!- Patashu has joined.
21:22:25 <elliott> Gregor: Nah, ext4 probably scales just fine, it's just intended obsolete by design :)
21:22:35 <olsner> it's as if he'd rather want a working filesystem than a cool one
21:22:48 <elliott> Gregor: Hope you're happy when its authors decide we're ready for btrfs, which ext4 is meant as a transition to! Enjoy yer Oracle
21:23:15 <Phantom_Hoover> MurderFS is what is also known as ReiserFS, right?
21:23:26 <elliott> olsner: I'm so glad serious people like IBM don't use the 12-year-old filesystem I use.
21:23:48 <olsner> elliott: hmm, which one was that? JFS?
21:23:53 <elliott> yeah
21:24:00 <elliott> actually 21 years old, but JFS2 is 12 years old
21:24:25 <elliott> the filesystem i turn to when i want coolness is nilfs2 :P
21:24:30 <olsner> hah, OS/2 had JFS support :D
21:24:39 <elliott> it's where it originated :P
21:25:00 -!- Phantom_Hoover has left ("Leaving").
21:25:04 -!- Phantom_Hoover has joined.
21:25:18 <olsner> I always assumed it came from AIX or at least that it never existed at the same time as OS/2
21:26:08 <pikhq_> They first shipped it for OS/2 in 1999.
21:26:21 <pikhq_> OS/2, of course, lasted a *lot* longer than it had any right to.
21:26:47 <pikhq_> The Linux version is a port of the OS/2 version.
21:34:06 * ais523 reads about Eclipse's new language Xtend
21:34:26 <ais523> as far as I can tell, it's basically Java plus all the syntactic sugar they could think of
21:34:39 <ais523> although "whitespace inference" is a bit bizarre
21:34:40 <elliott> haha
21:34:46 <elliott> wait, what?
21:34:57 <ais523> when you have a string with a bunch of interpolations in
21:35:01 <elliott> <pikhq_> They first shipped it for OS/2 in 1999.
21:35:06 <ais523> then you might want to put whitespace around the interpolations
21:35:09 <elliott> oh, hmm
21:35:12 <ais523> which doesn't go in the string
21:35:17 <pikhq_> elliott: Yes, OS/2 lasted fucking *ages*.
21:35:17 <elliott> olsner: looks like JFS1 was AIX in 1990, and JFS2 was OS/2 in 1999
21:35:25 <elliott> ais523: weird
21:35:33 <ais523> so it figures out whether the whitespace is meant to be part of the string, or is just there for indentation
21:35:46 <elliott> ais523: oh, I see
21:35:47 <ais523> and Eclipse syntax-highlights which is which, obviously
21:35:48 <pikhq_> Actually, make that "has lasted".
21:35:54 <elliott> which doesn't go in the resulting string, not which doesn't go in the source string
21:36:01 <pikhq_> IBM sold it off, but it's still actively developed.
21:36:03 <elliott> I thought "x${y}z" would become "x foo z" or something
21:36:05 <elliott> with y="foo"
21:36:20 <ais523> ah, I see
21:36:24 <ais523> you're thinking of Perl 6, there
21:37:01 <pikhq_> Hell, it's even vaguely usable still; Firefox, OpenOffice, VLC, et al. have maintained ports.
21:38:13 <elliott> pikhq_: I think the same applies to AmigaOS 4 :-)
21:39:21 <pikhq_> ... The fuck?
21:39:32 <pikhq_> eComStation's sound stack is a port of ALSA.
21:39:38 <elliott> X-D
21:41:20 -!- nooga has quit (Quit: leaving).
21:42:05 <elliott> [elliott@dinky Temp]$ qemu -m 1024 -hda weboflies.qcow2 -cdrom ~/Downloads/archlinux-2011.08.19-netinstall-i686.iso -boot c
21:42:05 <elliott> Failed to allocate 1073741824 B: Cannot allocate memory
21:42:05 <elliott> Aborted
21:42:07 <elliott> ais523: wait, what?
21:42:24 <ais523> clearly it was trying to allocate 1GB of memory
21:42:25 <elliott> -/+ buffers/cache: 3190 613
21:42:32 <elliott> hmm... why is all my RAM used up?
21:42:36 <ais523> at least, that looks around 1GiB, I'm not sure if it's exact as I don't have it memorized
21:42:43 * elliott checks how to sort by RAM in topa gain
21:42:46 <elliott> s/topa /top a/
21:42:53 <elliott> (I have to look it up every time I want to do it)
21:42:59 <olsner> M
21:43:01 <elliott> ais523: that would be the -m 1024 part
21:43:12 <ais523> elliott: I just use < and > after loading top
21:43:14 <elliott> olsner: gah, I think it's counting virtual memory
21:43:19 <ais523> they changes the sort order
21:43:25 <elliott> olsner: can I count physical memory?
21:43:27 <ais523> and it's normally reasonably obvious what they're sorting by right now by inspection
21:43:29 <elliott> ais523: *change
21:43:33 <ais523> err, yes
21:44:01 <olsner> elliott: hmm... I thought it sorted by RSS or something, at least not VSIZE
21:44:13 -!- nooga has joined.
21:45:06 <elliott> oh, killall chromium actually solved the problem
21:45:57 <elliott> ais523: I'm surprised qemu's allocation actually /failed/, though
21:46:02 <elliott> I'm pretty sure I have overcommit on
21:46:17 <nooga> how would you process ruby source files containing classes? discovering/adding/removing class contents
21:46:22 <olsner> qemu might be asking to commit that memory
21:46:29 <elliott> nooga: awk
21:46:38 <elliott> olsner: hmm, how do you do that?
21:46:44 <elliott> nooga: or sed, at a pinch
21:47:03 <olsner> there's a flag to mmap for that, MAP_LOCK or something
21:47:12 <ais523> elliott: well an alloc that large would be mmaped
21:47:23 <elliott> mmap overcommits too
21:47:40 <nooga> hmm
21:47:53 <nooga> i tried with ruby ParseTree and sexp_processor
21:47:57 <nooga> and ruby2ruby
21:48:14 <elliott> nooga: congratulations, you successfully overthought the problem in an insufficiently reflective language
21:48:15 <ais523> elliott: MAP_POPULATE requests prefaulting
21:48:20 <elliott> ais523: fair enough
21:48:27 <ais523> I just went and looked it up
21:48:38 <ais523> and ofc, if you're overcommitting but prefaulting is requested, then you can tell something's worng
21:48:40 <ais523> *wrong
21:48:41 <nooga> elliott: ruby is quite reflective at runtime
21:48:46 <ais523> I doubt qemu /would/ be prefaulting, though, it has no reason to do so
21:48:52 <elliott> nooga: no it's not, at least not in the right sense
21:48:58 <elliott> ruby provides no access to its ast whatsoever
21:49:51 <nooga> ParseTree takes a method or class and throws it's sexp representation in your face
21:50:07 <nooga> you can mess with sexp and then translate it to ruby again
21:50:18 <nooga> its*
21:50:23 <nooga> i will never learn
21:50:29 <elliott> Ruby: because we think every AST is a sexp!
21:50:50 <elliott> isn't parse_tree by zenspider
21:50:55 <elliott> I can't imagine his software is any more tolerable than himself
21:55:02 <elliott> ais523: haha, wow, apaprently the Calibre website says "Please do not use your distribution provided calibre package, as those are often buggy/outdated. Instead use the Binary install described below."
21:55:10 <elliott> *apparently
21:55:23 <ais523> elliott: beautiful
21:55:26 <elliott> "As I suspected, you're in this not to contribute something to the community, but as a destructive influence." ;; ooh, this keeps getting better and better
21:55:27 -!- edne has joined.
21:55:35 <elliott> (after he gives up on writing exploits because the guy keeps patching it)
21:55:36 <elliott> hi edne
21:55:37 <elliott> `? welcome
21:55:39 <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
21:55:45 <edne> elliott: hi
21:57:00 <elliott> ais523: haha: "Well, if you do not wish to help, that leaves me with no choice but to remove the mount helper."
21:57:33 <elliott> ais523: (this is /after/ one of them supplies a drop-in replacement patch using the udisk script Ubuntu uses)
21:58:13 <elliott> "@Dan: You were on my ignore list, which meant I never saw your exploit" ;; lmao
21:58:18 <elliott> this is definitely the best bug report I've read
21:58:32 <ais523> can you link it again?
21:58:38 <ais523> given that I assume you're there atm
21:58:43 <elliott> https://bugs.launchpad.net/calibre/+bug/885027
21:58:48 <elliott> good luck trying to find your previous position
22:02:09 <ais523> I found it pretty easily, actually
22:02:24 <ais523> by skimming for the comment I remembered being at the end
22:03:26 <Phantom_Hoover> http://www.ciclops.org/view_media/34501/Catching_Its_Tail%253Fjs%253D1?js=1
22:03:27 <Phantom_Hoover> Whoa.
22:06:55 <Phantom_Hoover> Oh, I just realised that the line in the middle is the rings.
22:07:04 <Phantom_Hoover> I thought it was some weird formatting bug.
22:07:12 <elliott> ais523: I like the guy who signs every comment with "<name> of the GNAA." like it's a Ph.D.
22:07:16 <ais523> <dan-j-rosenberg> Please note that I misjudged just how broken this code is
22:07:23 <elliott> Phantom_Hoover: X-D
22:07:47 <elliott> Phantom_Hoover: What is it with planets looking so cool.
22:08:07 <elliott> Phantom_Hoover: (OK this is bias in the form of how cool the Earth looks seeming mundane.)
22:08:13 <olsner> got to the end and now it says "Displaying first 40 and last 40 comments."
22:08:40 <elliott> olsner: heh
22:08:42 <Phantom_Hoover> elliott, have you seen pictures of the Earth from space?
22:08:47 <elliott> Phantom_Hoover: <elliott> Phantom_Hoover: (OK this is bias in the form of how cool the Earth looks seeming mundane.)
22:08:54 <olsner> there went all sense of accomplishment from getting to the end
22:09:14 <Phantom_Hoover> Ah, I was confused by your insane grammar.
22:09:38 <elliott> olsner: um it inserts "N comments hidden" inline
22:10:08 <Phantom_Hoover> (I think the best demonstration of the 60s is that TOS episode where they had a completely cloudless Earth because /nobody had seen a picture of it from space/.
22:10:10 <Phantom_Hoover> *)
22:10:20 <elliott> c) Has the full right to be proud of his work and initially doubt and/or question vulnerability reports from an unknown source
22:10:32 <olsner> I didn't read those "comments hidden" blocks since they weren't formatted as comments :)
22:10:32 <elliott> An unknown source that gives source-format exploits.
22:10:47 <elliott> Phantom_Hoover: Oh man, that would be cool to see.
22:11:18 <Phantom_Hoover> I think IWC had an annotation on the matter.
22:11:32 <elliott> Phantom_Hoover: It's simultaneously weird at what a relatively high level of tech we were at in the 60s and still not having been to space, and weird that we managed to go to space on the tech level of the 60s.
22:11:46 <elliott> (You think my grammar is insane, try THAT one out for size.)
22:12:41 <olsner> "Standby and I'll update the exploit for your latest fix" :>
22:12:43 <Phantom_Hoover> elliott, I think it's even weirder that navigational computers could be fitted into a spacecraft less than thirty years after someone had the bright idea of building one of these computer things.
22:12:53 <elliott> ais523: the best part is people claiming it's secure because it's not used if you have udisks installed
22:13:02 <elliott> ais523: despite it /still being installed/
22:13:20 <elliott> Phantom_Hoover: That's... pretty unbelievable when stated like that.
22:13:35 <elliott> Phantom_Hoover: I think I know the reason we haven't gone back to the moon yet, it's because it worked like flying does in H2G2.
22:13:38 <ais523> thirty years is a long time, though
22:13:42 <elliott> We only managed it because we hadn't realised how bloody hard it was.
22:13:59 <ais523> I'm less than 30 years old; and a lot's happened in technology in my lifetime
22:14:04 <Phantom_Hoover> Or maybe because the Russians couldn't be allowed to get there first?
22:14:18 <elliott> ais523: OTOH, the further you go back, the fewer advances technology makes in 30 years...
22:14:22 <Phantom_Hoover> ais523, oh man, I honestly remember being introduced to the web.
22:14:33 <elliott> what massive technological advancements happened 1210-1240?
22:14:51 <elliott> (I bet that date span I just made up contained the invention of something of huge magnitude by sheer coincidence.)
22:14:52 <Phantom_Hoover> elliott, careful, that way lies mainly Kurzweil.
22:14:59 <ais523> hmm; I think it's to do with the speed of communication
22:15:10 <Phantom_Hoover> "Colossus was the world's first electronic programmable computer."
22:15:12 <elliott> Phantom_Hoover: Oh come on, it's undeniable that the rate of change /has/ increased rapidly in recent history.
22:15:13 <ais523> without good communication technology, technological advances have to be made again and again and again
22:15:24 <Phantom_Hoover> elliott, yeah, unquestionably.
22:15:32 <elliott> Phantom_Hoover: That's not the same as "also, it's going to increase exponentially in the next like ten years and then we'll be friendship computers".
22:15:46 <Phantom_Hoover> It was a joke.
22:15:55 <elliott> Phantom_Hoover: YOU COMPARED ME TO KURZWEIL THAT WILL NEVER BE A JOKE
22:15:56 * elliott sobs
22:15:58 <Phantom_Hoover> "In Song Dynasty China and the classical Islamic world, this century marked the high point for both classical Chinese civilization, science and technology, and classical Islamic science, philosophy, technology and literature."
22:16:16 <Phantom_Hoover> elliott, your anti-11th-centur— wait 1200s are the 13th.
22:16:20 <elliott> Phantom_Hoover: FML
22:16:22 <elliott> Oh good.
22:16:26 <pikhq_> That's still nothing compared to the craziness that was the 20th century.
22:16:33 <Phantom_Hoover> Yeah nothing happened then.
22:16:49 <Phantom_Hoover> pikhq_, sorry, you're not allowed to comment after that stupid thing you said about the Dark Ages once.
22:16:50 <elliott> July 17 – Former king Sverker the Younger of Sweden is defeated and killed by present king Erik Knutsson of Sweden in the Battle of Gestilren.
22:17:00 <elliott> Phantom_Hoover: Wow, Erik Knutsson must be really old if he's the present king.
22:17:04 <pikhq_> Phantom_Hoover: I said something about the Dark Ages?
22:17:05 <Phantom_Hoover> If Swedes died in it, it's all right with me.
22:17:12 <elliott> Phantom_Hoover: Also the middle ages never happened OK.
22:17:43 <Phantom_Hoover> http://en.wikipedia.org/wiki/Timeline_of_historic_inventions#13th_century
22:17:46 <Phantom_Hoover> Aahahahaha
22:17:49 <Phantom_Hoover> Worst century.
22:17:49 <elliott> http://upload.wikimedia.org/wikipedia/commons/c/c9/Hommage_of_Edward_I_to_Philippe_le_Bel.jpg ;; wow this is the worst interior design.
22:17:54 <pikhq_> We started the century having basically figured out industry, and ended it with flight, computers, networking, nuclear power, and an insane pile of science.
22:17:55 <Phantom_Hoover> "al-Jazari's automata"
22:18:01 <elliott> Phantom_Hoover: Paper mill ain't bad!
22:18:05 <Phantom_Hoover> pikhq_, you forgot the space!
22:18:11 <elliott> Phantom_Hoover: OTOH that's 100 years, not 30.
22:18:22 <Phantom_Hoover> Pfft, it's just a normal mill with paper.
22:18:24 <Phantom_Hoover> Derivative.
22:18:26 <elliott> Phantom_Hoover: omg "The first confirmed record of a press appeared in a 1439 lawsuit against Gutenberg."
22:18:31 <pikhq_> Also, yes, we got spaceflight and satellites.
22:18:32 <elliott> Superinjunctions!
22:18:32 <Phantom_Hoover> http://en.wikipedia.org/wiki/Al-Jazari#Automata
22:18:39 <Phantom_Hoover> Actually this looks pretty cool.
22:18:40 <zzo38> Which system do you prefer: degrees or zodiac or hours?
22:18:50 <pikhq_> zzo38: Radians.
22:18:52 <elliott> Phantom_Hoover: OMG robot band.
22:19:06 <Phantom_Hoover> pikhq_, which computers totally ruined (note: opinion derived from Project Rho, probably wrong).
22:19:25 <elliott> Phantom_Hoover: Wow, that timeline of historic inventions' entire list for the 20th century is "the web".
22:19:29 <elliott> What's up with that.
22:19:30 <Phantom_Hoover> (There was also probably something about how it would have all been great if Asians had done it which I trimmed out.)
22:19:39 <pikhq_> elliott: Because nothing else matters.
22:19:49 <elliott> pikhq_: Tell me you're not being serious.
22:19:49 <Phantom_Hoover> elliott, it takes the confused.com attitude towards history.
22:20:03 <pikhq_> elliott: That's the most heavily sarcastic thing I have said in memory.
22:20:06 <olsner> elliott: remove that and replace it with a link to wikipedia, the pinnacle of human achievement
22:20:06 <zzo38> pikhq_: O, OK. However, Astrolog does not support that format. But if I write such a program, possibly I will include that option.
22:20:08 <elliott> Phantom_Hoover: You fuckwit, I just heard that ad play out in my head.
22:20:09 <Phantom_Hoover> Man, this article is so terrible.
22:20:14 <elliott> pikhq_: OK good.
22:20:36 <elliott> Phantom_Hoover: Maaan, it just reminded me that we STILL haven't replicated greek fire yet.
22:20:39 <elliott> Somebody get on that???
22:20:45 <Phantom_Hoover> elliott, dude, napalm.
22:20:47 <elliott> I want to the world's best hooligan???
22:21:01 <Phantom_Hoover> We mightn't be able to /replicate/ it, but we can do a hell of a lot bette.
22:21:03 <Phantom_Hoover> *better
22:21:07 <elliott> Phantom_Hoover: I don't WANT better.
22:21:15 <elliott> http://upload.wikimedia.org/wikipedia/commons/2/25/Hand-siphon_for_Greek_fire%2C_medieval_illumination.jpg
22:21:17 <elliott> Look at this guy.
22:21:27 <elliott> This guy is standing on a seriously structurally unsound battleground.
22:21:30 <Phantom_Hoover> He does look pretty awesome.
22:21:33 <elliott> He doesn't even GIVE a shit.
22:21:40 <elliott> Also wow how tall is that thing.
22:21:42 <Phantom_Hoover> Particularly how his tower is just like "FUCK YOU GRAVITY".
22:21:58 <elliott> Phantom_Hoover: I like how the castle looks like it was drawn by a five year old.
22:22:05 <elliott> Including the two-dimensional bits at the top whose name I don't know.
22:22:13 <Phantom_Hoover> elliott, do you know nothing about art history?
22:22:27 <elliott> Phantom_Hoover: Do you know nothing about the history of manuscripts authored by five-year-olds.
22:22:31 <elliott> JUST SAYING?
22:22:34 <zzo38> (Astrolog is set to zodiac signs by default, but it can use hours and degrees too. I set it to degrees; but astronomers who want to measure right ascension will probably use the hours format. Astrologers probably want to use the default setting for zodiac (which is probably why it is the default).)
22:22:37 <Phantom_Hoover> It's basically "art was all drawn by five-year-olds until the Renaissance when they finally worked out how to draw actual things".
22:22:58 <Phantom_Hoover> Also they're crenellations you fool.
22:23:03 <pikhq_> Phantom_Hoover: Not actual five-year-olds.
22:23:11 <pikhq_> Just people with all the aesthetic sense of five-year-olds.
22:23:17 <elliott> http://upload.wikimedia.org/wikipedia/commons/2/2f/Hand-siphon_for_Greek_fire%2C_medieval_illumination_%28detail%29.jpg
22:23:20 <pikhq_> Also, that's an exclusively European phenomenon.
22:23:20 <elliott> Phantom_Hoover: OK seriously I want one of those.
22:23:26 <Phantom_Hoover> pikhq_, clap clap clap, ur decetefivte
22:26:27 -!- quintopia has quit (Ping timeout: 245 seconds).
22:27:31 <zzo38> Although there are many correct arguments against astrology, there are also some wrong ones, such as this one: http://jyte.com/cl/if-you-must-do-astrology-you-should-at-least-get-the-position-of-the-sun-correct Some lists have both correct and wrong ones. They really should learn better before writing such wrong things.
22:27:56 <zzo38> If you say the sun is yellow due to 2+2=3, then you can get a correct conclusion even though you are making the wrong arguments for such things!
22:31:57 <Phantom_Hoover> http://en.wikipedia.org/wiki/Early_thermal_weapons
22:32:12 <Phantom_Hoover> 'Thermal weapon' is apparently a euphemism for 'setting fire to stuff'.
22:32:54 <Phantom_Hoover> "War without fire is like sausages without mustard"
22:32:56 <Phantom_Hoover> I like this man.
22:34:52 <elliott> Phantom_Hoover: PH how is dynamite so modern.
22:35:03 <zzo38> "A boy without mischief is like a bowling ball without a liquid center." "A gleekzorp without a tornpee is like a quop without a fertsneet (sort of)." "A man without religion is like a fish without a bicycle." "A computer without COBOL and Fortran is like a piece of chocolate cake without ketchup and mustard."
22:35:03 <Phantom_Hoover> I don't know?
22:35:18 <elliott> Phantom_Hoover: Like what did we even do for fun before then.
22:35:29 <Phantom_Hoover> Gunpowder.
22:35:39 <Phantom_Hoover> Which isn't even a high explosive.
22:36:25 -!- quintopia has joined.
22:36:25 -!- quintopia has quit (Changing host).
22:36:25 -!- quintopia has joined.
22:36:37 <zzo38> Do you prefer cake with ketchup and mustard, or with fire and gunpowder?
22:37:31 <Phantom_Hoover> Fire and gunpowder.
22:37:35 <Phantom_Hoover> Gunpowder smells nice.
22:37:48 <elliott> "People exposed to TNT over a prolonged period tend to experience anemia and abnormal liver functions. Blood and liver effects, spleen enlargement and other harmful effects on the immune system have also been found in animals that ingested or breathed trinitrotoluene. There is evidence that TNT adversely affects male fertility, and TNT is listed as a possible human carcinogen."
22:38:08 <Phantom_Hoover> I remember when one of the staircases in the school science building smelt of it for days because of What The Sixth Years Did.
22:38:09 <elliott> Phantom_Hoover: We should start just, like, putting TNT into the water supply of countries we don't like.
22:38:17 <elliott> Then they will all become infertile and blow up??
22:38:34 <Phantom_Hoover> I think it's stable in solution or something?
22:38:48 <zzo38> I think you are not supposed to put TNT into the water supply.
22:39:03 <elliott> zzo38: oh, OK then.
22:39:09 <Phantom_Hoover> Also TNT is quite hard to blow up anyway.
22:39:20 <Phantom_Hoover> TNT contains 4.184 megajoules per kilogram.
22:39:25 <elliott> Phantom_Hoover: Dammit when did we start using TNT for explosives.
22:39:27 <Phantom_Hoover> Add " as appropriate.
22:39:32 <olsner> if not TNT, what *are* you supposed to put in the water supply?
22:39:41 <zzo38> olsner: Hydroxic acid.
22:39:43 <elliott> Phantom_Hoover: What weren't you allowed to do because of the sixth years again?
22:39:47 <Phantom_Hoover> Huh, that's almost exactly 1000 times the heat capacity of water.
22:39:58 <Phantom_Hoover> elliott, get chemicals which we didn't explicitly need.
22:39:59 <elliott> TNT = explosive water.
22:40:18 <zzo38> You also need to put dihydrogen monoxide.
22:40:31 <Phantom_Hoover> It was first synthesised in 1863, and was used as a dye.
22:41:45 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Sailor_Hat_Shot.jpg
22:41:51 <Phantom_Hoover> It's... like Minecraft in real life.
22:43:14 <elliott> Phantom_Hoover: Man, and that was from the days where clicking TNT would blow it up.
22:43:21 <elliott> They must have been really careful.
22:43:56 -!- MSleep has joined.
22:44:35 -!- sllide has quit (Read error: Connection reset by peer).
22:44:59 <ais523> zzo38: "hydroxic acid" = water?
22:45:00 -!- sllide has joined.
22:47:10 -!- MDude has quit (Ping timeout: 240 seconds).
22:47:22 <zzo38> ais523: Yes
22:47:30 <elliott> ais523: what's your favourite locale?
22:48:10 <ais523> en_GB.UTF8
22:48:13 <ais523> or however it's spelt
22:48:40 <pikhq_> Why not en_US.SJIS? :P
22:48:47 <elliott> ais523: your wish is my command; what's your favourite hostname
22:48:59 <ais523> elliott: I normally use biomes as hostnames
22:49:09 <elliott> But there are only like five of them!
22:49:11 <elliott> (Bad Minecraft joke.)
22:49:28 <elliott> ais523: Is there a biome where everything is miniature and also in a VM.
22:50:41 <ais523> so as this one won't be around long, let's use "glacier", which isn't a biome but would be if more things lived there
22:50:41 <ais523> and which is also rapidly melting
22:50:41 <Phantom_Hoover> What about mushroom?
22:50:51 <ais523> not as far as I know
22:51:46 <elliott> Mushrooms aren't rapidly melting, Phantom_Hoover.
22:51:59 * elliott usually calls VMs matryoshka because he thought of it once and then never stopped using it.
22:52:04 <elliott> It's a pain to spell, though.
22:52:50 -!- MSleep has quit (Read error: Connection reset by peer).
22:53:02 -!- MSleep has joined.
22:53:08 -!- MSleep has changed nick to MDude.
22:54:42 -!- NihilistDandy has quit (Quit: http://haskell.org).
22:55:52 <olsner> elliott: luckily, I think cyrillic transliterations are varied enough that almost any spelling can be correct
22:55:57 <olsner> "correct"
22:56:11 <elliott> I'm not sure exactly how to pronounce it, either :)
22:56:32 <olsner> in russian, obv.
22:56:49 <elliott> let's see... Матрёшка
22:56:52 <elliott> mat puker
22:57:33 <olsner> matpuker, much easier to spell
22:58:11 <elliott> Huh, nobody told me Chrome does RSS now.
22:58:27 <olsner> a matpewka in the pectopah
22:58:43 -!- sebbu has quit (Read error: Connection reset by peer).
22:59:04 <elliott> ais523: weboflies would work in Xen, right?
22:59:05 -!- sebbu has joined.
22:59:06 -!- sebbu has quit (Changing host).
22:59:06 -!- sebbu has joined.
22:59:10 <ais523> elliott: I don't see why not
22:59:17 <ais523> unless it triggers entirely different kernel bugs there
22:59:24 <elliott> I doubt it, it's just drivers
22:59:32 <elliott> ais523: and oh no, that means I've had another "if I was using Kitten..." moment.
23:02:20 <elliott> ais523: [elliott@dinky Temp]$ qemu -m 1024 -hda weboflies.qcow2man -net nic -net user,hostfwd=tcp::2222:22
23:02:23 <elliott> ais523: let's hope this works
23:02:25 <elliott> oops, s/man//
23:02:48 <elliott> qemu: -net user,hostfwd=tcp::2222:22: Device 'user' could not be initialized
23:02:50 <elliott> oh good
23:03:01 <elliott> aha
23:03:03 <elliott> needs a - after 2222
23:04:31 <elliott> ais523: libpng is the only dependency I need, right?
23:05:08 <ais523> elliott: yes
23:05:17 <ais523> well, barring the obvious, like glibc
23:05:24 <zzo38> Save the others: Eat yourself!
23:05:29 <elliott> ok /me eats self
23:05:37 <elliott> ais523: lol, the arch "emacs" package depends on gtk
23:05:55 <ais523> Debian has both gtk and non-gtk versions, I think; IIRC both are installed here
23:06:15 <elliott> seems there's no alternative, sigh
23:06:28 <elliott> I'll just let it install gtk
23:06:29 <ais523> to Emacs?
23:06:35 <elliott> ais523: to the main package
23:06:39 <ais523> does vim depend on gtk too? that'd be really hilarious
23:06:40 <elliott> it's only a 70 meg download
23:06:44 <Deewiant> Congrats, you're the only Arch user of emacs that doesn't want gtk
23:06:44 <elliott> one that would go much faster with kitten...
23:06:55 <Deewiant> ais523: No, there's a separate gvim package
23:06:59 <elliott> it really irks me to see it download a bunch of few-hundred-kilobyte packages and pause noticably between them
23:07:02 <elliott> Deewiant: The only?
23:07:11 <elliott> Plenty of people use Emacs from the console
23:07:21 <ais523> even I do sometimes
23:07:25 <ais523> mostly when I'm termcasting for vim users
23:07:25 <elliott> Arch has a lot of people who work from the console so I'd be very surprised if nobody would want it
23:07:36 <elliott> ais523: hahaha
23:07:48 <Deewiant> I was just referring to how there doesn't seem to be even an AUR package for non-gtk emacs
23:07:56 <elliott> Deewiant: heh
23:07:57 <Deewiant> I may've missed it though, there's a lot of emacs packages
23:08:19 <elliott> Deewiant: you think it'd be easy, arch does tons of optional dependencies by just letting things break without them; all it'd take is some logic to make -nw be default if the gtk libs can't be found
23:08:34 <elliott> I guess it'd have to load them dynamically too
23:08:43 <elliott> And at that point people start getting queasy because ~OMG PATCHES~
23:08:44 -!- hagb4rd has quit (Ping timeout: 240 seconds).
23:10:40 <elliott> Why aren't you checking package integrity in parallel you stupid thing
23:12:37 <elliott> Oh man, I can use the terminal UI stuff I'm developing now for the installer too
23:12:46 <elliott> Have you ever wanted your installer to have a BETTER UI THAN DARCS?!?!?!?! TRY KITTEN
23:13:38 <zzo38> Do you think this is OK way to measure the width? objWidth (Box p) = maximum $ 0 : map (\((x, _), z) -> x + objWidth z) p;
23:17:22 <zzo38> Should there be a submodule for Graphics.DVI that is for accessing the system printer driver with it?
23:19:31 <nooga> huh
23:19:54 <nooga> i try to record a screencast fot the sixth time
23:20:14 <nooga> i suck at speaking in english
23:21:22 <elliott> ais523: yay, it's finally installed emacs and libpng
23:21:35 <ais523> and libpng-dev?
23:21:46 <elliott> ais523: that's part of library packages in arch, I think
23:22:03 <ais523> hmm, source distro?
23:22:06 <elliott> no
23:22:19 <elliott> debian is the only one that does stuff like that
23:22:25 <nooga> it's not even that i don't know what to say or make lame mistakes
23:22:29 <nooga> i just mumble
23:22:30 <ais523> why would a binary distro download library headers with libraries? most people want the libraries to run programs using them, not write programs using them
23:22:42 <elliott> ais523: you can compile programs without writing them
23:22:50 * elliott finds the -doc and -dev splits really annoying, personally
23:23:06 -!- zzo38 has left.
23:23:08 <elliott> I could buy that the -dev split might be OK for most Linux users (but probably not most Arch users), but -doc is just silly
23:23:14 <ais523> well, yes, but you're on a binary distro; if you're compiling, it's probably because it's something that the distro doesn't package, or that you're working on personally
23:23:20 <ais523> -doc is a bit silly, agreed
23:23:41 <elliott> ais523: or you want a newer version, or you're installing something from the AUR (which is source-based), or it's source-configured like dwm
23:23:46 <elliott> the second is particularly pertinent
23:23:57 <elliott> ais523: anyway, I really doubt headers take up a noticable amount of space
23:24:09 <elliott> keeping them together, at worse, wastes a bit of space
23:24:23 <elliott> 67M/usr/include
23:24:29 <elliott> I was expecting it to be smaller, but I guess most headers are <4K
23:24:32 <elliott> anyway, that's still pretty tiny
23:24:39 <elliott> compared to, say, binaries :P
23:24:39 <ais523> if headers are small, and they are, I suppose you could just have a package containing /all/ library headers
23:24:46 <elliott> ha
23:24:50 <elliott> that would conflict with itself, though
23:24:54 <elliott> 54M/usr/include
23:24:56 <elliott> (with --apparent-size)
23:25:07 <Deewiant> 299M /usr/include
23:25:15 <Deewiant> 234M with --apparent-size
23:25:17 <elliott> Deewiant: you have a bigger disk than me, so it balances out :)
23:25:22 * elliott considers making ais523's user account have correct name information
23:25:29 <ais523> as much of it as you know?
23:25:29 <elliott> otherwise how could I know he's the 523rd such user on the system?
23:25:35 <elliott> ais523: I believe I know it all
23:25:37 <elliott> unless you have more middle names
23:25:42 <ais523> well, OK
23:25:44 <Deewiant> elliott: 50G for /
23:25:46 <monqy> i have all the middle names
23:25:52 <ais523> things like room number are part of the name info, aren't they?
23:25:57 <ais523> and I can't quite remember that myself
23:26:00 <elliott> ais523: I... doubt it?
23:26:27 <elliott> ais523: looks like room number is a separate field
23:26:33 <ais523> well, OK
23:26:39 <ais523> but it's the same block of info, so it's unified in my head
23:26:44 <elliott> ais523: technically, I should be asking you whaty it is, along with your work phone, home phone, and other
23:26:49 <elliott> s/whaty/what/
23:26:52 <elliott> but who even fills those out?
23:26:54 <ais523> elliott: but I can't quite remember it
23:27:00 <elliott> ais523: what's your favourite password :)
23:27:03 <ais523> nor my work phone number, although I could look it up
23:27:08 <ais523> elliott: like I'm going to tell you that :)
23:27:27 <elliott> ais523: what's your second-favourite password :P
23:27:31 <ais523> isn't it usual for you to set one and tell me, in this situation?
23:27:42 <elliott> yes
23:27:51 <elliott> you're so boring!
23:27:59 <elliott> wait, /me gets the best idea
23:28:12 <ais523> that distributed RNG thing you wrote for nomics?
23:28:22 <elliott> that's beautiful too, but my idea was simpler
23:29:20 <ais523> I suppose we could diffie-hellman a password over IRC, so it'd all be in the open and yet only us would know the passwords
23:29:23 <ais523> but I can't remember how it works
23:29:54 <elliott> I love how cryptography does the impossible on a regular basis
23:30:06 <elliott> ais523: what does the naming scheme that made you ais523 do when people don't have middle names?
23:30:19 <ais523> elliott: puts an x in there, generally
23:30:32 <elliott> # adduser exh1
23:30:35 <ais523> although I've seen other letters, that's only in staff names (which don't have the numbers)
23:31:05 <pikhq_> What's it do with people with only a first name? Another x?
23:31:15 <elliott> ais523: if you look at /etc/shadow, try not to mentally crack my password
23:31:18 <ais523> pikhq_: I haven't seen that happen
23:31:25 * elliott hasn't yet shaken the habit of using one password for everything...
23:31:29 <ais523> elliott: is it, umm, using an insecure hash?
23:31:37 <elliott> it's the default, which is I think MD5(!)
23:31:38 <pikhq_> Well, yeah, it's not exactly *common* any more.
23:31:44 <elliott> but I somewhat doubt you can mentally crack MD5
23:31:55 <ais523> elliott: I advise you to put the MD5 of your password into Google
23:31:59 <ais523> if there are any results, change it :)
23:32:02 <elliott> hmm, good idea
23:32:13 <ais523> (note: this is the world's best method of reversing hashes)
23:32:18 <elliott> god, I love the "incident will be reported" message
23:32:33 <elliott> ais523: no results :)
23:32:49 <elliott> wow, my old password gets results, though
23:32:58 <elliott> and it's not a word or anything
23:33:16 <elliott> the database it returns looks suspiciously like it's from leaked hashes of some kind
23:33:25 <ais523> I need to try with mine, but I'm trying to work out how to md5 it without it being in my bash history
23:33:41 <elliott> ais523: echo -n "$(cat)" | md5sum
23:33:43 <elliott> -n to avoid the newline
23:33:49 <elliott> you could also just md5sum and use ^D^D
23:33:58 <ais523> ah right, I was thinking without it appearing on screen eitehr
23:34:00 <ais523> *either
23:34:24 <ais523> because I've been known to termcast shell sessions by mistake before now, also as I'm paranoid
23:34:30 <elliott> ais523: hmm, someone must have packaged the "securely read a password" thing into a program
23:34:33 <Deewiant> echo -n "$(cat)", eww
23:34:36 <elliott> ais523: I know Python has an stdlib for it
23:34:41 <elliott> Deewiant: :)
23:35:00 <ais523> perl -MTerm::ReadPassword -e 'print read_password'
23:35:04 <ais523> that's pretty simple
23:35:18 <Deewiant> perl -pe 'chomp if eof' | md5sum
23:35:42 <elliott> ais523: heh, I just outright googled my old password,a nd it's in SHA1 databases too
23:36:04 <elliott> s/a nd/ and/
23:36:06 <elliott> I keep making that mistake
23:36:14 <ais523> yay, no results for either of my insecurish passwords
23:36:28 <ais523> I'm assuming the ones that are meant to be secure, and that are only used in one place, really are secure
23:36:46 <elliott> phew, my current password has no results
23:36:51 <elliott> (Google could already know it about a thousand times over)
23:36:57 <elliott> (so I don't see any harm in searching for it)
23:37:15 <elliott> wow, host key generation takes ages
23:39:03 <elliott> ais523: hmm, I'm changing my password to stop you possibly worrying about reading /etc/shadow :)
23:40:09 <elliott> ais523: OK, ssh -p 2222 ais523@95.149.230.52; your password is your middle name, and you have passwordless sudo access
23:40:17 <elliott> and so do I :p
23:40:37 <olsner> what's his middle name again?
23:40:51 <elliott> olsner: exactly
23:40:55 <ais523> no longer my password on glacier :p
23:41:11 <elliott> ais523: hmm, did your wikipedia article have it?
23:41:13 <ais523> (new password is unique but insecure)
23:41:17 <ais523> elliott: I think so, but I don't know
23:41:22 <elliott> good thing it's deleted!
23:41:31 <elliott> err, it looks like changing my password failed
23:41:46 <ais523> don't worry, I won't look at /etc/shadw until you fix it
23:42:21 <elliott> it's shadow, not shadw, these days
23:42:26 <elliott> ais523: but I /msg'd you my requested new password
23:42:29 <elliott> as you're the only one with sudo access
23:42:56 -!- pikhq has joined.
23:43:13 -!- pikhq_ has quit (Ping timeout: 252 seconds).
23:44:01 <elliott> ais523: couldn't resist
23:44:10 <ais523> what couldn't you resist?
23:44:14 <ais523> oh right
23:45:37 <ais523> hmm, a few warnings, but none are relevant
23:46:03 <ais523> elliott: well, weboflies works just /fine/ inside the VM
23:46:10 <ais523> on echo, at least
23:46:11 <elliott> ais523: hahahahaha
23:46:13 <ais523> let me check on cat
23:46:23 <elliott> ais523: theory: it's something to do with 64-bit
23:46:26 <ais523> yep, I just did cat /etc/passwd
23:47:12 <elliott> ais523: see, if I was running Kitten, I could change the desired architecture in my VM configuration file and rebuild it in minutes...
23:47:32 <ais523> oh, I was wondering why root's password wasn't shadowed; it was because it wasn't the actual root account, but a repeatablized one
23:47:51 <elliott> heh
23:48:08 <elliott> ais523: oh, I forgot to remove root's password; it's "x"
23:48:16 <elliott> and now it's not
23:48:27 <elliott> now it's inverse_shadow("!"), which has no result
23:49:02 <ais523> hmm, I just tried running weboflies on su, to see what would happen
23:49:20 <elliott> ouch
23:49:25 <ais523> and it just said incorrect password, without taking input
23:49:30 <elliott> haha
23:49:35 <elliott> ais523: it probably tried to get control of the tty
23:49:45 <ais523> but it can; the tty actually exists
23:49:54 <ais523> it's just a repeatablized tty
23:50:11 <ais523> there was also a bunch of "unknown syscall 102"
23:50:13 <elliott> ais523: maybe you have a bug that stops such input methods working
23:50:17 <elliott> test with that perl program :)
23:50:18 <ais523> which is socketcall
23:50:24 <ais523> so it's trying to use sockets for some reason
23:50:53 <ais523> I think what I'd expect it to do is to notice it isn't running as root, and exit
23:50:59 <elliott> ais523: it's emailing your password to rms for the Revolution
23:51:02 <ais523> (you can't debug suid programs while still having them escalate)
23:51:04 <Deewiant> On 64-bit it's getuid
23:51:14 <elliott> (I wouldn't make cheap rms jokes if he hadn't written literally that about su)
23:51:16 <ais523> Deewiant: rather than setuid?
23:51:25 <Deewiant> Yes, setuid is 105
23:51:26 <elliott> ineiros_: no, syscall 102, presumably
23:51:40 <ais523> 102 is socketcall
23:51:43 <ais523> elliott: that was a weird misping
23:51:45 <elliott> <Deewiant> On 64-bit it's getuid
23:51:56 <elliott> on 64-bit, syscall 102 is socketcall
23:51:58 <elliott> is what Deewiant is saying
23:52:24 <Deewiant> s/is/isn't/
23:53:15 <ais523> well, socketcall doesn't exist on 64-bit
23:53:33 <ais523> and this is running 32-bit su, as weboflies only runs 32-bit programs
23:54:04 <ais523> I need to go home, anyway
23:54:21 <ais523> elliott: anyway, if you want to run weboflies, now you have a VM it works in ;)
23:54:53 <ais523> Linux glacier 3.0-ARCH #1 SMP PREEMPT Wed Oct 19 12:14:48 UTC 2011 i686 QEMU Virtual CPU version 0.15.1 GenuineIntel GNU/Linux
23:55:00 <ais523> elliott: what version Linux on your own computer?
23:55:56 <elliott> ais523: haha; and the same but x86-64 and not Virtual CPU
23:56:02 <elliott> I suspect it's a 64-bit thing
23:56:53 <elliott> ais523: since this is an up-to-date Arch system and I haven't fiddled about with anything like that at all
23:57:30 <ais523> I just don't see how the number of bits would matter for file permissions
23:57:43 <ais523> unless, hmm, perhaps that's just a symptom of the syscall numbers being all wrong
23:57:53 <elliott> yep; note that I /did/ do -m32
23:57:58 <elliott> but what if:
23:58:05 <ais523> try running it on a 32-bit program
23:58:10 <elliott> ais523: I did (weboflies)
23:58:19 <ais523> you ran it on /itself/? is that sane?
23:58:26 <elliott> ais523: it didn't even get to printing the usage error message
23:58:29 <elliott> (I didn't specify any parameters)
23:58:40 <elliott> ais523: like, let me tell you what number ioctl is on 64-bit
23:58:46 <elliott> and you can check what that corresponds to on 32-bit
23:58:58 -!- ais523 has quit (Remote host closed the connection).
23:59:34 <Deewiant> /usr/include/asm/unistd_64.h:#define __NR_ioctl16
23:59:38 <elliott> #define __NR_ioctl 16
23:59:38 <elliott> #define __NR_lchown 16
23:59:43 <Deewiant> Right
23:59:48 <elliott> I doubt lchown is being called at process startup time...
2011-11-06
00:00:04 <elliott> although there is\
00:00:06 <elliott> ewarn(chown("/tmp/home/" WOLUSER_NAME, WOLUSER_UID, WOLUSER_GID));
00:00:07 <elliott> it's not a link
00:00:08 <elliott> s/\\//
00:04:48 -!- derrik has quit (Quit: take carezz).
00:07:42 -!- pikhq has quit (Ping timeout: 244 seconds).
00:07:47 -!- pikhq_ has joined.
00:16:55 -!- tiffany has quit (Quit: nyu~).
00:24:07 -!- sllide has quit (Read error: Connection reset by peer).
00:24:17 -!- tiffany has joined.
00:27:47 -!- zzo38 has joined.
00:30:37 -!- tiffany has quit (Remote host closed the connection).
00:30:55 -!- quintopia has quit (Ping timeout: 260 seconds).
00:33:56 -!- variable has quit (Excess Flood).
00:34:10 -!- tiffany has joined.
00:37:45 -!- quintopia has joined.
00:37:57 <zzo38> Are you sure?
00:38:08 -!- variable has joined.
00:43:37 -!- edne has quit (Read error: Connection reset by peer).
00:43:51 -!- variable has quit (Excess Flood).
00:46:23 -!- elliott has quit (Remote host closed the connection).
00:48:46 -!- tiffany has quit (Remote host closed the connection).
00:50:44 <Phantom_Hoover> https://github.com/kragen/xcompose/blob/master/dotXCompose
00:50:49 <Phantom_Hoover> Ooh, a nice compose file.
00:51:39 -!- variable has joined.
00:51:51 <Phantom_Hoover> variable!
00:52:58 * Phantom_Hoover → sleep
00:52:59 -!- Phantom_Hoover has quit (Quit: Leaving).
00:54:25 -!- tiffany has joined.
00:56:51 -!- nooga has quit (Ping timeout: 276 seconds).
00:57:10 -!- GreaseMonkey has joined.
00:58:29 <zzo38> Does the ddate program allow you to switch which kind of Discordian calendar you want?
01:05:57 <olsner> oh wow, the full name of the guy who plays bashir is Siddig El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi
01:07:14 <olsner> ... and his son's name is django
01:08:10 -!- edne has joined.
01:11:11 <zzo38> Invent a game that requires you to use a realtime horoscope as the game board. Maybe, one player is Summer and one player is Winter. And if you have four players, then there is Spring and Autumn as well. You have to pay attention to the phase of the moon, too. And cards. And of course there need a time limit so that you cannot just wait for many months until the planets favor you.
01:14:42 -!- elliott has joined.
01:14:45 <elliott> 00:50:44: <Phantom_Hoover> https://github.com/kragen/xcompose/blob/master/dotXCompose
01:14:57 <elliott> I decided that sucked, IIRC, although I forget why.
01:15:03 <elliott> 01:05:57: <olsner> oh wow, the full name of the guy who plays bashir is Siddig El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi
01:15:03 <elliott> 01:07:14: <olsner> ... and his son's name is django
01:15:09 <elliott> olsner: What is it with you and Django :P
01:15:13 <elliott> `quote olsner.*django
01:15:20 <HackEgo> 324) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something \ 379) <cpressey> `quote django <HackEgo> ​352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something <cpressey> thankfully only one \ 380) <monqy> `quote django <HackEgo> ​352)
01:15:27 <olsner> elliott: it's not my fault!
01:16:14 <zzo38> Whose quotation are this: "Any sufficiently advanced religion is indistinguishable from schizophrenia." "I just hijacked your brain. You can have it back at the end of this sentence." "The Grand Unified Conspiracy Theory ate the last cookie!" "It is better to bless the dark than to waste a candle."
01:17:29 <zzo38> "It's not that life is too short, it's that death is too long." "If you're not confused, you're ignorant." "Yoda is programing in Forcetran only."
01:18:54 <zzo38> Who are these quotations?
01:20:12 <zzo38> Does superstition bring bad luck?
01:24:12 -!- tiffany has quit (Quit: nyu~).
01:36:49 -!- tiffany has joined.
01:46:10 -!- edne has left.
01:46:37 -!- myndzi\ has changed nick to myndzi.
01:48:20 <Madoka-Kaname> `log "a", "b", "c", "aa"
01:48:44 <HackEgo> 2011-11-06.txt:01:48:20: <Madoka-Kaname> `log "a", "b", "c", "aa"
01:48:54 <Madoka-Kaname> :t replicateM
01:48:55 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
01:48:56 <Madoka-Kaname> :t permutations
01:48:57 <lambdabot> forall a. [a] -> [[a]]
01:49:40 <elliott> `log "0", "1", "01", "11"
01:49:52 <HackEgo> 2011-11-06.txt:01:49:40: <elliott> `log "0", "1", "01", "11"
01:50:03 <elliott> heh
01:51:06 <Madoka-Kaname> > (\l -> map (\i -> permutations $ replicateM i l) [1..]) "01"
01:51:06 <lambdabot> [[["0","1"],["1","0"]],[["00","01","10","11"],["01","00","10","11"],["10","...
01:51:27 <Madoka-Kaname> > (\l -> map (\i -> replicateM i l) [1..]) "01"
01:51:28 <lambdabot> [["0","1"],["00","01","10","11"],["000","001","010","011","100","101","110"...
01:51:44 <Madoka-Kaname> > (\l -> map (\i -> replicateM i l) [1..]) "abc"
01:51:45 <lambdabot> [["a","b","c"],["aa","ab","ac","ba","bb","bc","ca","cb","cc"],["aaa","aab",...
01:51:51 <Madoka-Kaname> > (\l -> bind (\i -> replicateM i l) [1..]) "abc"
01:51:52 <lambdabot> Not in scope: `bind'
01:52:04 <zzo38> This is the kind of logic some people used in the past: There are seven windows in the head, two nostrils, two ears, two eyes, and a mouth; so in the heavens there are two favorable stars, two unpropitious, two luminaries, and Mercury alone undecided and indifferent. From which and many other similar phenomena of nature such as the seven metals, etc.,
01:52:08 <Madoka-Kaname> @hoogle (a -> m b) -> m a -> mb
01:52:08 <lambdabot> Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b
01:52:08 <lambdabot> Control.Monad (=<<) :: Monad m => (a -> m b) -> m a -> m b
01:52:08 <lambdabot> Prelude (>>=) :: Monad m => m a -> (a -> m b) -> m b
01:52:18 <Madoka-Kaname> > (\l -> (\i -> replicateM i l =<<) [1..]) "abc"
01:52:19 <lambdabot> <no location info>: parse error on input `)'
01:52:21 <zzo38> which it were tedious to enumerate, we gather that the number of planets is necessarily seven. [...] Moreover, the satellites are invisible to the naked eye and therefore can have no influence on the earth and therefore would be useless and therefore do not exist.
01:52:23 <Madoka-Kaname> > (\l -> (\i -> replicateM i l) =<< [1..]) "abc"
01:52:24 <lambdabot> ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"...
01:52:36 <Madoka-Kaname> @pl (\l -> (\i -> replicateM i l) =<< [1..])
01:52:36 <lambdabot> ([1..] >>=) . flip replicateM
01:52:58 <Madoka-Kaname> `log replicateM
01:53:03 <HackEgo> 2011-09-19.txt:03:09:44: <CakeProphet> :t replicateM
01:53:06 <Madoka-Kaname> `log replicateM
01:53:13 <HackEgo> 2011-08-26.txt:07:10:34: <CakeProphet> > join . join $ (`replicateM` words "son I am proud") =<< [3..]
01:53:27 <Madoka-Kaname> :t join
01:53:28 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
01:53:38 <Madoka-Kaname> @hoogle (a -> m b) -> m a -> mb
01:53:38 <lambdabot> Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b
01:53:38 <lambdabot> Control.Monad (=<<) :: Monad m => (a -> m b) -> m a -> m b
01:53:39 <lambdabot> Prelude (>>=) :: Monad m => m a -> (a -> m b) -> m b
01:53:40 <Madoka-Kaname> Erm
01:53:41 <Madoka-Kaname> `log replicateM
01:53:46 <HackEgo> 2011-07-20.txt:05:11:36: <elliott> ?ty replicateM
01:53:50 <Madoka-Kaname> `log replicateM
01:53:55 <HackEgo> 2011-09-16.txt:07:58:51: <CakeProphet> > drop 6 $ replicateM 3 "012"
01:54:07 <elliott> > [1..] >>= replicateM
01:54:08 <lambdabot> Couldn't match expected type `[b]'
01:54:09 <lambdabot> against inferred type `m a -> m ...
01:54:14 <elliott> > [1..] >>= flip replicateM "abc"
01:54:16 <lambdabot> ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"...
01:54:18 <elliott> Madoka-Kaname: hth
01:54:23 <elliott> the problem in the `log query was the spaces
01:54:32 <elliott> also the use of "abc" as the alphabet, probably
01:54:40 <Madoka-Kaname> ^_^
02:17:45 -!- Madoka-Kaname has changed nick to Cirno-chan.
02:17:55 -!- Cirno-chan has changed nick to Madoka-Kaname.
02:25:14 -!- tiffany has quit (Quit: Bye).
02:32:29 -!- pikhq has joined.
02:32:37 -!- SilverShot has joined.
02:32:38 -!- pikhq_ has quit (Ping timeout: 252 seconds).
02:34:53 -!- SilverShot has left.
02:35:12 <Madoka-Kaname> > filter (==2) (join . flatten [1..2])
02:35:13 <lambdabot> Couldn't match expected type `Data.Tree.Tree (m (m a))'
02:35:13 <lambdabot> against inf...
02:35:20 <Madoka-Kaname> > filter (==2) (join . cycle [1..3])
02:35:21 <lambdabot> No instances for (GHC.Num.Num (m a),
02:35:21 <lambdabot> GHC.Num.Num (m (m a...
02:35:35 <Madoka-Kaname> > filter (==2) (join $ cycle [1, 2])
02:35:36 <lambdabot> No instance for (GHC.Num.Num [a])
02:35:36 <lambdabot> arising from a use of `e_1212' at <int...
02:36:05 <Madoka-Kaname> > filter (==2) $ join $ cycle [1, 2]
02:36:06 <lambdabot> No instance for (GHC.Num.Num [a])
02:36:06 <lambdabot> arising from a use of `e_1212' at <int...
02:36:15 <Madoka-Kaname> > filter (==2) $ join $ join $ cycle [1, 2]
02:36:16 <lambdabot> No instance for (GHC.Num.Num [[a]])
02:36:16 <lambdabot> arising from a use of `e_1212' at <i...
02:36:21 <Madoka-Kaname> :t join
02:36:22 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
02:36:30 <Madoka-Kaname> :t cycle [1, 2]
02:36:31 <lambdabot> forall t. (Num t) => [t]
02:36:35 <Madoka-Kaname> > join $ cycle [1, 2]
02:36:36 <lambdabot> No instance for (GHC.Num.Num [a])
02:36:36 <lambdabot> arising from a use of `e_112' at <inte...
02:36:40 <Madoka-Kaname> > cycle [1, 2]
02:36:41 <lambdabot> [1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,...
02:36:45 <Madoka-Kaname> oh woops
02:36:49 <Madoka-Kaname> > filter (==2) $ cycle [1, 2]
02:36:50 <lambdabot> [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
02:49:28 <Madoka-Kaname> @hoogle m [x] -> [m x]
02:49:28 <lambdabot> Data.List transpose :: [[a]] -> [[a]]
02:49:28 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
02:49:28 <lambdabot> Data.List inits :: [a] -> [[a]]
02:52:34 <Madoka-Kaname> :t mapM
02:52:35 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
02:52:56 <Madoka-Kaname> @hoogle [IO a] -> IO [a]
02:52:56 <lambdabot> Prelude sequence :: Monad m => [m a] -> m [a]
02:52:56 <lambdabot> Control.Monad sequence :: Monad m => [m a] -> m [a]
02:52:56 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
02:55:43 <copumpkin> lambdabot responds to private messages, too
02:55:52 <elliott> copumpkin: Madoka-Kaname knows and doesn't care
02:55:58 <copumpkin> o.O
03:00:06 <Madoka-Kaname> :t mapM
03:00:07 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
03:01:01 <Madoka-Kaname> > [0..5]
03:01:02 <lambdabot> [0,1,2,3,4,5]
03:01:31 <CakeProphet> ...
03:03:55 <copumpkin> urusai!
03:04:13 <copumpkin> うるさい
03:06:53 <CakeProphet> I don't difficulty reasoning about space and time efficiency of Haskell programs is really an argument against its use for high performance programs.
03:06:57 <CakeProphet> *don't think
03:08:05 <shachaf> CakeProphet: Really? I'd think that would be the main argument.
03:08:47 <CakeProphet> any compiled implementation of a language that optimizes is going to do possibly non-obvious things once compiled, regardless of evaluation order. But wait! there's more!
03:09:13 <Madoka-Kaname> :t foldl
03:09:13 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> a
03:09:27 <olsner> hmm, if it really matters you might be using measurements rather than reasoning anyway
03:09:56 <CakeProphet> someone who actually understands Haskells evaluation semantics can reason (and measure as you said) about space/time usage. The same applies to C++.
03:10:14 <CakeProphet> a C++ nub isn't going to know shit about how to optimize C++.
03:11:11 <CakeProphet> being ignorant of something is not an argument against it.
03:11:15 <shachaf> "given a sufficiently smart programmer"?
03:11:22 <Madoka-Kaname> @hoogle (Map a), (Set a) => a
03:11:22 <lambdabot> Parse error:
03:11:22 <CakeProphet> ^^^
03:11:22 <lambdabot> (Map a), (Set a) => a
03:11:22 <lambdabot> ^
03:11:24 <Madoka-Kaname> @hoogle (Map a) (Set a) => a
03:11:25 <lambdabot> Parse error:
03:11:25 <lambdabot> (Map a) (Set a) => a
03:11:25 <lambdabot> ^
03:11:44 <copumpkin> ತ_ತ
03:11:47 <CakeProphet> Madoka-Kaname doesn't actually no Haskell.
03:11:48 <Madoka-Kaname> @hoogle (Map a, Set a) => a
03:11:48 <lambdabot> Warning: Unknown class Map
03:11:48 <lambdabot> Prelude undefined :: a
03:11:48 <lambdabot> Data.Function fix :: (a -> a) -> a
03:11:54 <copumpkin> Madoka-Kaname: can you quit spamming?
03:11:56 * CakeProphet doesn't no English.
03:11:57 <Madoka-Kaname> Sure
03:12:02 <copumpkin> thanks!
03:12:07 <shachaf> Haskell is a good deal more abstracted from how computers tend to work than C++.
03:13:10 <CakeProphet> I see.
03:13:34 <olsner> CakeProphet: this was ... news to you?
03:14:16 <CakeProphet> (no)
03:14:28 <CakeProphet> I'm just kind of bewildered as to what it's implying.
03:14:43 <CakeProphet> programmers can't reason through abstraction or something?
03:14:46 * CakeProphet shrugs.
03:15:54 <shachaf> Things like garbage collection make performance more difficult to reason about, for instance.
03:16:00 <shachaf> I don't think anyone said "impossible".
03:16:02 <pikhq> C++ is pretty damn abstracted from how computers tend to work, though.
03:16:30 <shachaf> pikhq: True.
03:35:25 <elliott> shachaf: I'm not sure the machine mismatch matters.
03:35:50 <elliott> shachaf: As long as your mental conception of Haskell is low-level enough to account for thunks and sharing, then pretty much all the reductions to standard hardware don't change anything except constant factors.
03:36:47 <shachaf> Constant factors matter when you want to write high-performance programs.
03:38:37 <pikhq> Define "high-performance". :)
03:45:05 <shachaf> I have no idea what context this conversation came up in.
03:45:31 <shachaf> I'll define it as "where you care about performance enough to worry about constant factors". :-)
03:45:41 * shachaf unsafeCoerce
03:45:54 <elliott> shachaf: OK, to clarify: Small constant factors :P
03:46:56 <elliott> shachaf: You don't really have to care that much about how GHC goes from the level involving thunks and sharing to the machine code, since it's not going to end up /slower/ than you perceive on that level
03:48:41 <pikhq> shachaf: In such a context anything shy of assembly is going to involve at least a little bit anguish.
03:49:06 <shachaf> s/ shy of assembly//
03:55:46 -!- madbr has joined.
04:02:25 <zzo38> I found a anime crossword in mathNEWS that although the clues are in English, you must write the answers using katakana.
04:09:24 <madbr> can't decide if that's lame or awesome
04:10:20 <coppro> madbr: it is mathnews, therefore awesome
04:12:23 <pikhq> Probably lame.
04:13:31 <madbr> wonder how japanese coders name variables in c++
04:14:04 <shachaf> Hopefully in English.
04:14:21 <shachaf> Probably not, though. :-(
04:17:17 <pikhq> I'm inclined to go with "that's a crapshoot".
04:17:53 <pikhq> And would like to add that "¥n" still drives me bonkers.
04:18:36 <madbr> heheh
04:18:48 <madbr> japanese backslash
04:18:50 <coppro> pikhq: why
04:19:03 <pikhq> coppro: That's "\n".
04:19:10 <coppro> lol
04:19:16 <coppro> thanks windows
04:19:26 <pikhq> Actually, that's not even slightly Microsoft's fault.
04:19:31 <coppro> oh?
04:19:44 <pikhq> That's the fault of JIS X 0201.
04:20:21 <pikhq> The 8-bit ASCII superset encoding that was used for a while on early Japanese computers.
04:20:27 <madbr> kinda sucks yeah
04:20:35 <pikhq> It encoded ¥ where \ is on normal ASCII.
04:20:41 <madbr> they should have taken one of the 0-31 range characters
04:20:45 <madbr> nobody uses those
04:20:56 <madbr> except tab and newline ofc
04:21:13 <zzo38> madbr: The 0-31 range characters are control characters. I sometimes use them for purpose of control characters.
04:23:46 <madbr> ah
04:24:13 <madbr> figured most people decided in band signaling was stupid and moved to other means
04:24:33 <pikhq> Of course, JIS X 0201 sucks in every way imaginable for use in Japanese.
04:30:17 <zzo38> In case you need to include control characters in the data, that is a reason they have a Data Link Escape control character in ASCII.
04:36:10 <elliott> madbr: dos used all of the control chars as symbols
04:36:51 <madbr> well, yeah, cause the char rom had the space
04:37:10 <madbr> and text mode has no escape chars ofc
04:37:38 <zzo38> Well, yes; it is CP437, which used all 256 slots (although 0, 32, and 255 are all blank). Sometimes still used today.
04:38:16 <zzo38> However the control characters had meanings as control characters too; but if poked directly into video memory they could be displayed.
04:41:38 <zzo38> The BIOS has the same function today.
04:42:21 <madbr> vga text mode hasn't changed much no
04:44:44 <zzo38> So if you run FreeDOS, it will work. Linux uses something more complicated so it can display more characters at once and so on.
04:45:31 <pikhq> Actually, Linux using a VGA text mode pretty much just does ASCII.
04:45:31 <madbr> well, if it's over 512 chars it has to be an emulation yes
04:45:49 <pikhq> I think you only can pull more characters using a framebuffer.
04:46:04 <zzo38> Yes, but the screen grid size is more than 80x25 as well
04:46:22 <pikhq> Yeah, there's more VGA text modes than that.
04:46:48 <zzo38> At least on the computer at FreeGeek, the ability for the Linux terminal to play sound appears broken, as far as I can tell.
04:46:54 <madbr> doesn't change the hard limit of 256 (or 512 if you use different chars for colors 8-15) :D
04:47:52 <madbr> unless you used a set of 8x1 pixel characters kinda like a msx text mode game
04:48:12 <zzo38> madbr: Yes, I know of that. It is limit 256, but there is a way to use different chars for high intensity. Actually, I discovered that by accident when I was running font programs in strange ways on a DOS computer; only later on have I found proper documentation about how this works.
04:50:10 <madbr> zzo: yeah you can see it used in impulse tracker
04:51:20 <zzo38> Actually I discovered it by running multiple programs incorrectly that don't go together. I haven't used Impulse Tracker.
04:54:08 <zzo38> I am trying to think of how to implement TeX's ligaturing algorithm in Haskell; maybe I should do it on paper since that does seem to help sometimes.
04:55:24 <zzo38> Currently I have: typesetSimpleString :: Font -> String -> PageObject; typesetSimpleString f s = Text f $ typesetSimpleChar f s (leftBoundChar f); typesetSimpleChar :: Font -> String -> [LigKern] -> TextString;
05:01:58 -!- zzo38 has quit (Remote host closed the connection).
05:05:33 -!- MDude has changed nick to MSleep.
05:13:21 <CakeProphet> In North America although not generally in the United Kingdom, the term seafood applies also to any fresh water life eaten by humans, so all edible aquatic life can be referred to as seafood.
05:13:28 <CakeProphet> huh, interesting.
05:16:18 <pikhq> Pretty much, though usually it's limited to fish & shellfish.
05:17:10 <CakeProphet> well right, I'm familiar with the US usage. I just ate fresh water catfish and I would call it seafood.
05:17:22 * CakeProphet hadn't ever considered that it wasn't. :P
05:17:24 <pikhq> Right.
05:18:04 <CakeProphet> but apparently eating seafood is really fucking good for you.
05:19:41 <CakeProphet> Vietnamese catfish cannot be legally marketed as catfish in the US, and is subsequently referred to as swai or basa [24] Only fish of the family Ictaluridae may be marketed as catfish in the United States.
05:19:45 <CakeProphet> more weird food laws.
05:34:17 -!- Darth_Cliche has joined.
05:36:34 <Madoka-Kaname> @hoogle Fractional -> Intergral
05:36:35 <lambdabot> Warning: Unknown type Fractional
05:36:35 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
05:36:35 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
05:36:44 <Madoka-Kaname> Oh, it's Rational
05:36:44 <Madoka-Kaname> derp
05:43:38 <Madoka-Kaname> @hoogle a -> Double
05:43:39 <lambdabot> Prelude id :: a -> a
05:43:39 <lambdabot> Data.Function id :: a -> a
05:43:39 <lambdabot> GHC.Exts breakpoint :: a -> a
05:44:41 <CakeProphet> Madoka-Kaname: what are you trying to do.
05:44:48 <CakeProphet> also, try the actual hoogle site.
05:53:30 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:16:28 -!- hagb4rd has joined.
06:16:48 -!- Zuu has quit (Read error: Connection reset by peer).
06:18:57 <CakeProphet> hmmm, I wonder why desserts traditionally come at the end of meals?
06:22:00 -!- Zuu has joined.
06:52:29 -!- oerjan has joined.
06:53:31 <elliott> hi oerjan
06:54:01 <oerjan> good morning elliott
06:55:54 <oerjan> <CakeProphet> Vietnamese catfish cannot be legally marketed as catfish in the US, and is subsequently referred to as swai or basa [24] Only fish of the family Ictaluridae may be marketed as catfish in the United States.
06:56:08 <oerjan> when my dad says "kattfisk", he means fish to feed the cat.
06:57:45 <oerjan> 00:58:29: <zzo38> Does the ddate program allow you to switch which kind of Discordian calendar you want?
06:58:02 <elliott> oerjan: does he say that a lot?
06:58:03 <oerjan> shouldn't it, sort of, switch in an unpredictable way...
06:58:20 <oerjan> elliott: well probably not :P
06:59:51 <oerjan> anyway the other point is we don't use that to name any species in norwegian.
07:00:05 <oerjan> that i'm aware of.
07:02:18 <elliott> sea kittens
07:03:07 <oerjan> land fish
07:03:30 <oerjan> GET YOUR DELICIOUS LAND FISH HERE
07:03:42 <elliott> oerjan: i take it you missed the reference :
07:03:45 <oerjan> ONLY RECENTLY DEWHISKERED
07:03:51 <oerjan> no, i don't think i missed it
07:03:59 <oerjan> i just reversed it
07:04:19 <elliott> ok :P
07:04:41 <CakeProphet> > DLL
07:04:42 <lambdabot> Not in scope: data constructor `DLL'
07:06:47 <oerjan> apparently i'm not very inventive there
07:06:54 <oerjan> 'My wife and I have decided to start calling our cats "Land Fish".'
07:08:30 <oerjan> oh apparently stephen colbert used the phrase
07:09:32 <CakeProphet> http://en.wikipedia.org/wiki/Walking_fish
07:09:37 <CakeProphet> first hit for "land fish"
07:10:16 <oerjan> well i added sea kitten to the search
07:12:18 <CakeProphet> http://features.peta.org/PETASeaKittens/game.asp
07:16:33 <CakeProphet> oh god I actually just played a seakitten dress up game.
07:18:36 <oerjan> soon you will be possessed by an irrestible urge to eat nothing but strawberries and seaweed.
07:29:47 <pikhq> Let's face it: if cats looked, tasted, and mostly acted like fish except on land, I'd eat cat. With glee.
07:30:06 <pikhq> "Sea kittens" is solid fail.
07:30:59 -!- Ngevd has joined.
07:31:56 <CakeProphet> pikhq: how do you know they don't taste like fish?
07:32:01 <CakeProphet> what if they taste better?
07:32:03 <CakeProphet> hmmmm???
07:33:13 <Ngevd> *yawn*
07:33:14 <Ngevd> Hello
07:33:44 <pikhq> CakeProphet: You'll note taste wasn't the only criterion there.
07:36:00 <CakeProphet> pikhq: what if cats looked, tastes, and acted like cats and were delicious?
07:36:04 <CakeProphet> weoijroiwejrowiejet huh what now huh?
07:38:18 <pikhq> Nyaaaa
07:45:01 <CakeProphet> http://en.wikipedia.org/wiki/Cat
07:45:10 <CakeProphet> I think this entire article is written by a cat-lover
07:45:23 <CakeProphet> because it basically talks about all of their awesome skillz.
07:47:30 <Ngevd> Put on of those not neutral thingies in
07:51:26 <Madoka-Kaname> > (10**10)**(2**32)
07:51:27 <lambdabot> Infinity
07:51:34 <Madoka-Kaname> > (10^10)^(2^32)
07:51:49 <lambdabot> *E
07:52:07 <Ngevd> > (1 `div` 0, 1/0)
07:52:11 <lambdabot> mueval-core: Time limit exceeded
07:52:17 <Ngevd> 1 `div` 0
07:52:25 <Ngevd> > 1 `div` 0
07:52:26 <lambdabot> *Exception: divide by zero
07:52:31 <Ngevd> > 1 / 0
07:52:32 <lambdabot> Infinity
07:56:41 * oerjan finds some vandalism at the end of the Cat article
07:59:13 <CakeProphet> > 1 `mod` 0
07:59:16 <lambdabot> *Exception: divide by zero
08:01:46 <pikhq> Second 01:00 is the best time of day.
08:06:39 <elliott> pikhq: there's only one 01:00 in a day :)
08:07:01 <monqy> today is special
08:07:02 <pikhq> Not today.
08:07:22 <pikhq> Today, 01:59 was followed by 01:00.
08:08:37 <elliott> oh. we did that ages ago.
08:08:55 <elliott> pikhq: also: fuck dst
08:09:03 <pikhq> The US decided to do more summer time than standard a couple years back.
08:09:05 <pikhq> Agreed.
08:09:14 <monqy> dst is the worst :(
08:09:22 <elliott> does ANYONE like dsty
08:09:23 <elliott> ds
08:09:24 <elliott> dst
08:09:28 <pikhq> I enjoy second 01:00. I despise 01:59 being followed by 03:00.
08:09:34 <elliott> even my fingers don't like dst
08:09:38 <monqy> bad people enjoy dst
08:09:38 <pikhq> It averages out to a mild hatred for DST.
08:10:03 <monqy> dst days are offset in a bad way
08:10:21 <elliott> pikhq: maybe we can do second 01:00 every day, and makes the minutes in an hour e.g. in the middle of the workday go twice as fast
08:10:30 <pikhq> Clearly we should eliminate the "spring back" bit.
08:10:45 <monqy> fall forward?
08:10:45 <pikhq> elliott: I approve of your 25 hour day plan.
08:10:53 <pikhq> Erm.
08:10:56 <pikhq> Spring forward.
08:11:01 <elliott> pikhq: "and makes the minutes in an hour e.g. in the middle of the workday go twice as fast"
08:11:02 <pikhq> Fuck DST.
08:11:09 <pikhq> elliott: I want 25 hour days.
08:11:30 <pikhq> Let's make everyone *else* have trouble maintaining normal sleep. :P
08:12:21 <oerjan> argh does someone know how to view bot edits in wikipedia's page histories?
08:13:00 <elliott> not I
08:13:00 <elliott> why?
08:13:09 <oerjan> ...i found some vandalism, but there is no sign of it in the diffs
08:13:14 <elliott> I know anti-vandalism etc. bots don't make edits marked as bot
08:13:24 <elliott> oerjan: there is
08:13:29 <elliott> try cache
08:13:34 <elliott> or looking harder :)
08:13:51 <Ngevd> `pastequotes
08:13:57 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32522
08:14:29 <oerjan> hm maybe it's actually in an included template.
08:15:20 <elliott> oerjan: yep, that sounds likely
08:15:40 <oerjan> if wikipedia wasn't so dog slow...
08:15:52 <oerjan> ...i guess it would be, on the cat page.
08:16:03 <elliott> arf arf arf
08:17:57 -!- Ngevd has quit (Ping timeout: 240 seconds).
08:18:36 -!- monqy has quit (Quit: hello).
08:19:23 <elliott> `quote
08:19:23 <elliott> `quote
08:19:24 <elliott> `quote
08:19:24 <elliott> `quote
08:19:24 <elliott> `quote
08:19:31 <HackEgo> 649) <ais523> elliott: so what are the two issues with xfce? <elliott> they're very unlikely to fuck up Xfce, and it can be made to work basically exactly like gnome two
08:19:33 <HackEgo> 398) <elliott> oerjan: but hypothetically, assume a Christian spontaneously materialised during the apocalypse
08:19:46 <HackEgo> 627) <elliott> Dear god stop staring at me. <monqy> no never <Phantom_Hoover> monqy is always staring at everyone. <monqy> it takes many eyes to do this but I manage <Phantom_Hoover> He is an inspiration to us all.
08:19:47 <HackEgo> 465) <fizzie> elliott: You have become the very thing you fought for!
08:19:47 <HackEgo> 261) <fizzie> Deewiant: Did you take the course at some point and/or were you taking it now and/or did you actually already graduate and/or are you still in Otaniemi anyway?
08:20:26 <elliott> 649 is the worst but I don't have the heart to remove any
08:21:30 <elliott> `log so you are doing for compilers what imperative programming did for functional programming
08:21:56 <HackEgo> 2011-10-02.txt:10:46:13: <elliott> `addquote <oklopol> so you are doing for compilers what imperative programming did for functional programming
08:22:05 <elliott> `logurl 2011-10-02.txt:10:46:13:
08:22:08 <HackEgo> http://codu.org/logs/log/_esoteric/2011-10-02
08:24:04 <elliott> 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
08:24:04 <elliott> this was basically the height of itidity
08:28:00 -!- spl1nt has joined.
08:29:00 <oerjan> argh!
08:29:14 <oerjan> elliott: do you see vandalism at http://en.wikipedia.org/wiki/Cat#External_links ?
08:29:29 <elliott> oerjan: yes
08:29:43 <elliott> let's see...
08:30:03 <elliott> oerjan: trying to purge it
08:30:19 <oerjan> it is not in the page when i try to edit it :P
08:30:22 <elliott> oerjan: see, all gone
08:30:24 <elliott> it was just cached
08:30:30 <elliott> I purged the page and now it's fixed
08:30:36 -!- Ngevd has joined.
08:30:42 <oerjan> but i've reloaded several times D:
08:30:49 <elliott> oerjan: purging is a MW thing.
08:30:51 <Ngevd> I think they should make a movie about fungot
08:30:52 <fungot> Ngevd: there was no sleep for either of them that night, but sat up thinking of the door, and the bed of death with the black pall but is finally restored to security and happiness with her lover fnord, after the death of his only son conrad on the latter's fnord fnord,
08:30:55 <elliott> oerjan: try refreshing now
08:31:04 <elliott> just append ?action=purge to a page url and click the button
08:31:07 <elliott> it re-renders the page on the server side
08:31:15 <oerjan> aha
08:31:23 <oerjan> well it worked by simply reloading now
08:31:32 <oerjan> i assume your purge fixed it for everyone
08:31:34 <Ngevd> Also, why won't my brother's XBox read discs? I just want to play AC:B
08:31:37 <elliott> "My main hobby outside Wikipedia is the VMS Mosaic web browser (hence my username)."
08:31:43 <elliott> That's a really shitty hobby, User:VMS_Mosaic.
08:31:46 <elliott> oerjan: yep
08:33:15 <shachaf> VMS Mosaic?
08:33:30 <shachaf> I hope that's not Mosaic ported to VMS.
08:33:38 <shachaf> Hmm. It's Mosaic ported to VMS.
08:33:43 * oerjan swats shachaf -----###
08:34:00 <Ngevd> I'm not too sure what VMS is...
08:34:29 <oerjan> an old OS
08:34:30 <shachaf> My father once ported vi to VMS. It was apparently quite popular.
08:34:33 <Ngevd> Okay
08:34:40 -!- spl1nt has quit (Killed (idoru (Spam is off topic on freenode.))).
08:35:10 <oerjan> my first university account was on a VAX/VMS system
08:35:14 <Ngevd> shachaf: this was your father's operating system
08:35:39 <Ngevd> A more civilized software from a more civilized time
08:36:15 <shachaf> VMS was many things, but I don't know if civilized is among them.
08:36:30 <Ngevd> What does it stand for?
08:37:13 <shachaf> Virtual Memory System, apparently.
08:37:36 <shachaf> > map succ "VMS"
08:37:37 <lambdabot> "WNT"
08:37:38 <shachaf> zomg
08:37:55 <Ngevd> Windows NT?
08:38:00 <elliott> `addquote <shachaf> VMS Mosaic? <shachaf> I hope that's not Mosaic ported to VMS. <shachaf> Hmm. It's Mosaic ported to VMS.
08:38:02 <HackEgo> 708) <shachaf> VMS Mosaic? <shachaf> I hope that's not Mosaic ported to VMS. <shachaf> Hmm. It's Mosaic ported to VMS.
08:38:04 <elliott> * spl1nt has quit (Killed (idoru (Spam is off topic on freenode.)))
08:38:05 <elliott> omg :')
08:38:07 <elliott> he was our friend.
08:38:49 <shachaf> What's a spl1nt?
08:39:01 <elliott> the best spl1nt
08:39:10 <Ngevd> It's for mending broken b0nes
08:40:36 <oerjan> i liked the VMS hierarchical help system
08:40:52 <elliott> I wish I had memories of VMS.
08:41:01 <elliott> So I could know that it would be foolish to wish for memories of VMS.
08:41:09 <Ngevd> I have memories of some operating system
08:41:14 <Ngevd> It was text-based
08:41:18 <Ngevd> It was in a garage
08:41:20 <elliott> dos
08:41:31 <shachaf> CP/M
08:41:36 <elliott> actually if you've used dos without realising then it's dos then i'm really weirded out
08:41:38 <Ngevd> In Mount Waverley, VIC
08:41:48 <Ngevd> I was 3-4
08:41:49 <elliott> ah yes. from when you lived in scotland
08:41:53 -!- derrik has joined.
08:42:18 <Ngevd> FINALLY ASSASSIN'S CREED HAS LOADED
08:42:25 <oerjan> if you did help pascal, you got help on the pascal program but also a submenu for individual functions
08:42:43 <shachaf> VMS apparently had this fancy QIO thing.
08:42:43 <oerjan> and the hierarchy was quite deep
08:42:56 <oerjan> *pascal compiler
08:51:10 <Ngevd> If I was Korean, I'd be fearing for my life
08:51:16 <elliott> 648) <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life.
08:51:17 <fungot> elliott: when the driver came out of those years to engulf him utterly.
08:51:17 <elliott> :D
08:51:19 <elliott> god i remember that
08:51:50 <elliott> oerjan: isn't that essentially what info does
08:52:04 <Ngevd> I have a fan and a closed door
08:52:41 <oerjan> elliott: i guess. on the command line, this was more like a nested version of irssi help, though
08:53:05 <elliott> oerjan: oh, so you went deeper by taking the last command and appending?
08:53:10 <elliott> sounds like http >:)
08:53:15 <oerjan> there was a graphical version, but i only rarely saw an actual DEC workstation
08:53:15 <elliott> Ngevd: beware fan death
08:53:54 <shachaf> The full documentation for blahB is maintained as a Texinfo manual. If the info and blah programs are properly installed at your site, the command info blah should give you access to the complete manual.
08:54:00 <shachaf> Whoa, man, an irssi bug.
08:54:17 <oerjan> elliott: except you didn't have to prepend the current term if you were already on it, this was interactive.
08:54:28 <elliott> oerjan: ok so it's not command-line :P
08:54:50 <oerjan> elliott: i guess i meant terminal, as opposed to graphical
08:54:54 <shachaf> Type: something something CtrlBblahCtrlB something something, where CtrlB is the "bold" indicator. Then move cursor on top of the "b" in "blah", and press M-d.
08:54:55 <elliott> yeah
08:55:24 <oerjan> i mainly logged in via genuine physical VT100/VT3something terminals
08:55:27 <elliott> oerjan: did it actually have a line-based interface, though, or was it layout-based (i.e. like typical guis, moving a cursor around and activating things)
08:55:39 <oerjan> elliott: line-based
08:56:10 <oerjan> it was still the best help system i'd seen at the time :P
08:56:13 <elliott> oerjan: it sounds like info has the kind of structure you want, it's just that the clients suck :)
08:56:29 <shachaf> I guess no one here appreciates a good irssi bug.
08:56:29 <elliott> also, nobody but GNU people want to, or do, write info pages...
08:56:43 <shachaf> s/good/bad/
08:56:44 <elliott> shachaf: I figure they're probably too numerous to appreciate.
08:56:45 <elliott> Like lives.
08:56:57 <elliott> Until there are, like, less than a billion people alive, I'm a sociopath.
08:57:25 <elliott> 592) <CakeProphet> monqy: help how do I use lambdabot to send messages to people. [...around half an hour later...] <CakeProphet> @messages <lambdabot> quicksilver said 1y 2m 18d 19h 54m 29s ago: you use @tell
08:57:29 <elliott> still the most beautiful thing to ever happen
08:58:23 -!- nooga has joined.
08:59:01 <elliott> 567) <monqy> mmm these music samples are still so tasteful
08:59:01 <elliott> 568) <monqy> im sampling ultra hip holiday <monqy> hes the boogie woogie santa clause <monqy> switching to oktoberfest <monqy> yes i would love to shop to this
08:59:04 <elliott> the qdb makes great light reading
09:11:39 -!- Vorpal has joined.
09:12:18 <CakeProphet> Alexander Kramir, from the novel Lentara is a fairly accurately portrayed boy with Albinism who helps an alien race save the Earth and falls in love with an alien. He later fathers a child who will help save the universe
09:12:22 <CakeProphet> elliott: this is probably better light reading.
09:17:44 -!- sebbu2 has joined.
09:17:44 -!- sebbu2 has quit (Changing host).
09:17:44 -!- sebbu2 has joined.
09:18:45 -!- sebbu has quit (Ping timeout: 240 seconds).
09:23:31 -!- madbr has quit (Quit: Radiateur).
09:56:03 -!- Phantom_Hoover has joined.
09:58:17 <CakeProphet> Honey bees transform nectar into honey by a process of regurgitation, and store it as a primary food source in wax honeycombs inside the beehive. Beekeeping practices encourage overproduction of honey so the excess can be taken from the colony.
09:58:24 <CakeProphet> mmmm regurgitated nectar.
09:58:47 <oerjan> bbl, bleaching brain
09:59:39 <elliott> youd idn't know that?
10:00:04 <oerjan> i probably have known at previous pre-bleaching occasions
10:01:08 <elliott> 545) <itidus20> well, you have bested me <zzo38> itidus20: Yes.
10:01:09 <elliott> :')
10:06:14 <elliott> 484) <oklopol> interestingly enough, go is a second player win <oklopol> chess is also first player win <oklopol> tennis, interestingly enough, is always a draw.
10:06:21 <elliott> oerjan: have you ever read this qdb i mean damn
10:07:57 <coppro> haha
10:15:21 <elliott> 356) <crystal-cola> http://www.sessionmagazine.com/img/nature/worlds-10-smallest-animals/worlds-10-smallest-animals07.jpg <crystal-cola> worlds biggest thumb
10:15:36 <elliott> oerjan: it's getting to that stage in the fax cycle where i start to miss em
10:26:20 <elliott> 241) <Phatom__Hovver> LoTR actually compresses pretty well into a film; the large amount of description becomes unnecessary. <pikh> LotR would compress pretty well into a book; the large amount of description *is* unnecessary.
10:26:29 <elliott> hmm, wonder whether phatom and pikh actually said that
10:27:34 -!- GreaseMonkey has quit (Quit: The Other Game).
10:28:24 -!- Ngevd has quit (Ping timeout: 256 seconds).
10:30:54 <Phantom_Hoover> We did.
10:31:16 <elliott> `log <pikh>
10:31:21 <HackEgo> 2011-05-14.txt:23:04:21: <HackEgo> ​261) <Phatom__Hovver> LoTR actually compresses pretty well into a film; the large amount of description becomes unnecessary. <pikh> LotR would compress pretty well into a book; the large amount of description *is* unnecessary. \ 272) <oklopol> oerjan: also actually A(4, 4) is larger than
10:31:26 <elliott> sceptical
10:31:39 <Phantom_Hoover> I remember saying it!
10:31:46 <Phantom_Hoover> Unless you're talking about the nicks.
10:31:51 <elliott> of course i am
10:36:04 <oerjan> `quote 272
10:36:06 <HackEgo> 272) <Vorpal> !bfjoust test (-)*10000 <EgoBot> Score for Vorpal_test: 12.9 <Vorpal> yay
10:36:15 <oerjan> wat
10:36:20 <oerjan> `quote 271
10:36:22 <HackEgo> 271) <elliott> Deewiant: ha, you were wrong, I have stacks, fungespace and MULTIPLE functions! <elliott> and a monad! <elliott> nothing can stop me now!
10:36:37 <oerjan> hum
10:36:48 <oerjan> `quote 261
10:36:50 <HackEgo> 261) <fizzie> Deewiant: Did you take the course at some point and/or were you taking it now and/or did you actually already graduate and/or are you still in Otaniemi anyway?
10:36:59 <oerjan> oh duh
10:37:16 <oerjan> `quote 252
10:37:19 <HackEgo> 252) <oklopol> ah yes, indeed, alan turing was gay and stupid
10:37:30 <oerjan> close enough
10:37:51 <elliott> hi
10:39:40 -!- oerjan has quit (Quit: Bye!).
10:48:08 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
10:53:49 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:08:51 -!- Phantom_Hoover has joined.
11:30:33 -!- Jafet has joined.
11:48:12 <Vorpal> elliott, there?
11:48:23 <elliott> No.
11:48:25 <Vorpal> elliott, there may be ways to get better support for multilib on arch
11:48:32 <Vorpal> I just found a package named gcc-multilib
11:48:35 <Vorpal> I have not yet tried it
11:48:49 <elliott> Uhh, gcc-multilib is part of the multilib repos.
11:48:53 <elliott> It's used in conjunction with them.
11:48:54 <Vorpal> yep
11:49:00 <Vorpal> and it provides gcc
11:49:05 <Vorpal> according to pacman -Si
11:49:07 <elliott> It isn't "better support", it's "being able to link with multilib things at all". What's your point?
11:49:13 <Vorpal> hm okay
11:49:18 <elliott> It's still the same shitty support at the core.
11:49:23 <Vorpal> right
11:49:25 <elliott> But yes, you're meant to replace gcc with gcc-multilib.
11:56:43 -!- sebbu2 has quit (Read error: Connection reset by peer).
11:59:04 -!- sebbu2 has joined.
11:59:04 -!- sebbu2 has quit (Changing host).
11:59:04 -!- sebbu2 has joined.
12:00:04 <Vorpal> elliott, is there a name for "initialism except they selected X instead of E for words starting with Ex-"?
12:00:13 <elliott> "stupid"
12:00:19 <Vorpal> elliott, also "common"
12:00:30 <elliott> just call it an acronym, nobody cares
12:00:33 <Vorpal> hm
12:00:51 <elliott> probably most people don't know what "initialism" even is
12:00:59 <Vorpal> (two examples that spring to my mind: XML and AVX)
12:05:10 <twice11> XMS, note there was EMS before.
12:05:40 <elliott> It just uncontrollably became more X-Treme.
12:05:49 <Vorpal> oh the DOS thingy?
12:05:53 <twice11> It starts getting ridiculous when these terms are translated.
12:05:57 <twice11> Vorpal: yes
12:06:13 <Vorpal> <twice11> It starts getting ridiculous when these terms are translated. <-- oh?
12:06:14 * twice11 remembering of "Erweiterungsspeicher" and "Expansionsspeicher"...
12:06:36 <Vorpal> assume I don't understand German
12:07:16 <twice11> So it's just that you take the spelled out version of these acronyms in english (most people already don't know of), and translate them to German.
12:07:26 <Vorpal> right
12:07:31 -!- elliott has quit (Quit: Leaving).
12:07:39 -!- elliott has joined.
12:07:44 <Vorpal> twice11, makes sense so far
12:08:05 <twice11> End result: You get something nobody undestands and also can't correlate to the maybe known terms XMS/EMS as the acronyms do not really fit to the german terms.
12:08:12 <Vorpal> ah
12:08:42 <twice11> Note that EMS means Expanded Memory Specification, XMS means Extended Memory Specification.
12:08:48 <twice11> Both words starting with "Ex"...
12:08:52 <Vorpal> right
12:09:17 <twice11> After the german translation, only one word starts with Ex - which is expanded that has been left as technical term.
12:09:30 <Vorpal> heh
12:09:36 <twice11> While eXtended has been replaced with the german term "Erweiterung".
12:09:55 <fizzie> XHTML too, but that's just following in XML's footsteps.
12:10:11 <Vorpal> I remember hearing "utökat minne" in Swedish. I don't remember which one of those that refers to, literally that means "extended memory" though.
12:10:13 <fizzie> Oh, and XP when it's standing for "eXperience Points".
12:10:16 <Vorpal> I grew up with a Mac
12:10:18 <Vorpal> not a PC
12:10:23 <twice11> IIRC these translations are made by Digital Research - but do you think Microsoft learned anything of that?
12:10:30 <twice11> of->from...
12:10:55 <Vorpal> fizzie, yeah, should be EP in all games
12:11:07 <Vorpal> fizzie, wait, did windows xp stand for Windows Experience Points?
12:11:23 <Vorpal> and doesn't xbox have some "microsoft points" or something
12:11:30 <Vorpal> hm... maybe they confused the names somehow?
12:11:31 <fizzie> eXPerience, I'd think.
12:11:38 <twice11> They introduced the HMA (a 286 concept of magically adding a near 64k memory addressable in DOS). Which was translated as "Oberer Speicher" in German.
12:12:07 <twice11> fizzie: That's what the marketing people say. Some people claim in fact it means eXtra Problems.
12:12:59 <twice11> The HMA translation was not that bad until another concept of extending conventional memory, called "upper memory blocks" (UMB).
12:13:09 <twice11> Which was then translated as "hoher Speicher".
12:13:30 <Vorpal> well, xp was probably one of the better windows versions so far. Especially the 64-bit one.
12:13:49 <twice11> Note the ethymologic connection between "hoher Speicher" and "high memory" on the one hand, and "upper memory" and "oberer Speicher" on the other hand.
12:13:53 <elliott> Windows Me + Windows XP = the almighty Windows Mexp.
12:14:01 <elliott> It's like Windows Sexp, but with a sugary syntax.
12:14:14 <fizzie> Finnish terminology for EMS and XMS is "laajennettu muisti" and "jatkettu muisti", those are probably the closest-in-meaning words for "expanded" and "extended".
12:14:15 <twice11> Vorpal: I guess you are talking about XP after SP1 or so.
12:14:28 <Vorpal> twice11, yeah, but compared to 9x it was way way better.
12:14:45 <Vorpal> even the original I mean
12:14:48 <twice11> Windows 9x is a game loader, not an operating system ;)
12:14:51 <Vorpal> right
12:15:00 <elliott> twice11: Then what's DOS?
12:15:06 <Vorpal> older game loader
12:15:10 <fizzie> Game loader with bad graphics?-)
12:15:22 <twice11> A game loader missing a common 32 bit driver infrastructure.
12:15:24 <Vorpal> game loader not even pretending to have multitasking
12:15:41 <elliott> Good god you guys, be patient, twice11 MIGHT have generated perfect quote material with a one-word response like "Crap"!
12:15:43 <elliott> But then you ruined it!
12:15:47 <elliott> You ruined everything!
12:15:53 <Vorpal> twice11, I suspect that windows server might be the best windows version, since so far xp 64-bit has been the best I used, and that was based on windows server 2003 iirc.
12:16:35 <twice11> Windows 7 also works not that bad, as far as I have experience with Windows.
12:16:58 <Vorpal> twice11, windows 7 is quite bloated compared to XP. Try installing both on a SATA 1 disk. Check boot times.
12:17:04 <Vorpal> that is 64-bit of both
12:17:15 <elliott> Oh no! Boot times!
12:17:21 <elliott> The thing Vorpal told me he doesn't care about just a few weeks ago.
12:17:24 <Vorpal> and also general sluggishness of the interface
12:17:26 <elliott> Or less, actually.
12:17:53 * elliott hasn't experienced any interface sluggishness with 7 at all.
12:17:54 <twice11> Vorpal: Compare boot times of Windows XP and DOS on the same hardware
12:18:03 <Vorpal> elliott, I don't really care about 10 seconds vs. half a minute on a system I rarely reboot. I do care about 2 minutes vs. 7 minutes on a system I reboot often.
12:18:10 <Vorpal> elliott, you have to consider the context.
12:18:19 <elliott> Vorpal: It sounds like the context is: your system is really shitty. :p
12:18:23 <Vorpal> twice11, indeed.
12:18:32 <twice11> elliott: If you run Windows XP and Windows 7 on the same system with 384MB RAM, Win 7 will be much more sluggish, of course.
12:18:42 <elliott> twice11: Yeah, and I bet Windows 7 is really sluggish on this 286 I just materialised :P
12:18:49 <elliott> Hell, it probably doesn't even RUN on my Commodore 64.
12:18:53 -!- derrik has quit (Quit: gone).
12:18:53 <twice11> elliott: Windows XP won't run on it, too.
12:18:59 <Vorpal> twice11, thing is, apart from the disk the system in question is top notch
12:19:10 <elliott> OK guys, what's the best Windows version for ENIACs?
12:19:11 <Vorpal> twice11, I simply reused an old disk for installing windows 7 on.
12:19:38 <Vorpal> and not THAT old either.
12:19:46 <twice11> People tried hard to get WinXP getting run on minimal hardware. I guess they ended up on an underclocked 486 with 8MB of RAM.
12:19:58 <twice11> To install they needed a Pentium with 24MB.
12:20:02 <elliott> twice11: I remember that.
12:20:04 <elliott> That was awesome.
12:20:06 <Vorpal> heh
12:20:08 <Vorpal> link?
12:20:16 <twice11> 10 minute boot time or like that.
12:20:26 <Vorpal> and I guess WinPE or such?
12:20:34 <Vorpal> or do you mean full XP?
12:20:39 <twice11> Vorpal: No, full XP.
12:20:43 <Vorpal> impressive
12:20:49 <twice11> Of course it was not usable at all...
12:20:53 <Vorpal> of course
12:21:35 <Vorpal> twice11, anyway linux runs fine from that same SATA 1 disk that windows 7 runs terribly from. And XP ran fine from it too back in the days.
12:21:53 <twice11> German version of one of those tests: http://www.winhistory.de/more/386/xpmini.htm
12:22:27 <twice11> And english version: http://www.winhistory.de/more/386/xpmini.htm.en
12:23:49 <Vorpal> the former displayed as English for me too
12:23:59 <Vorpal> I guess it looks at the http headers for preferred language
12:24:05 * twice11 guesses that, too.
12:25:35 <elliott> I guess it uses pixie magic.
12:25:41 <elliott> Teach the controversy.
12:29:21 <twice11> Hmm, seems I was wrong - at least these people did not swap the CPU to a 486 after installation.
12:29:30 <twice11> And it was 18MB RAM minimum, not 8MB.
12:29:38 <twice11> Sorry for exaggregating.
12:30:53 <elliott> I can't help but feel they gave up right when things could have become really interesting.
12:31:01 <elliott> e.g. patching the XP installer to stop it complaining about hardware :)
12:31:55 <Vorpal> hah
12:32:15 <Vorpal> elliott, they wanted to do this on a vanilla xp obviously
12:32:44 <twice11> elliott: I guess the installer has some reason to check for CMPXCHG8B
12:32:56 <twice11> And that instruction is introduced with the Pentium.
12:33:07 <twice11> CPUID is available on late 486, too.
12:33:15 <elliott> twice11: Microsoft probably had some reason to tell people not to use XP on machines with <64 megs of ram, too :-)
12:33:42 <twice11> Granted, but I am quite confident, the XP kernel or ntdll indeed uses CMPXCHG8B.
12:34:00 <twice11> OTOH, if you do this kind of stuff, just add an invalid opcode handler...
12:34:07 <elliott> Probably. But maybe not always? :-)
12:34:11 <elliott> Maybe you can turn that stuff off.
12:34:40 <twice11> CMPXCHG8B is a core instruction for some kind of lockless thread-safe linked lists.
12:34:59 <twice11> Sounds like very likely used in the deep core of the kernel.
12:35:00 <Vorpal> maybe you can emulate CMPXCHG8B. I don't know what the semantics of that are wrt bus mastering hardware though
12:35:49 <elliott> twice11: You know, f00f bug involved CMPXCHG8B...
12:35:51 <elliott> Maybe that's why it checks.
12:35:58 <twice11> Get a real 486 board with ISA cards - bus mastering problem gone ;)
12:36:02 <Vorpal> hah
12:36:03 <elliott> twice11: But: You could just replace that with a lock.
12:36:07 <elliott> What could go wrong?
12:36:36 <twice11> CMPXCHG8B does a locked operation on 8 bytes at a time.
12:36:52 <twice11> just using LOCK can't do an 8-byte-operation.
12:37:00 <elliott> I meant a software lock.
12:37:09 <elliott> twice11: You could just pause the scheduler while that code runs :)
12:37:27 <Vorpal> well for a single CPU you could just disable interrupts and do it
12:37:33 <twice11> A software lock is what they replaced by CMPXCHG8B for improved performance...
12:37:45 <elliott> twice11: Yeah, 'cuz that's gonna help SO much on a 486.
12:37:57 <elliott> It would be blazing if only we didn't have software locks!
12:38:26 <twice11> If you have access to the source of the kernel to be able to replace CMPXCHG8B by software locks or some PUSHF/CLI/POPF magic, it won't be XP anymore.
12:38:49 <twice11> I would expect the CMPXCHG8B instruction to be inlined to many places...
12:39:14 <twice11> Adding an "undefined opcode" handler sounds less intrusive (and less performant)
12:39:44 <twice11> BTW: The story goes on: http://www.winhistory.de/more/386/vistamini.htm Vista on an AMD K5 90MHz, 224MB of RAM.
12:39:51 <elliott> Yeah, a handler is probably the best way to do it.
12:40:06 <elliott> 224MB? Pfft
12:40:32 <twice11> Would be interesting whether you manage to boot 7 on "just" 192MB.
12:40:38 <Vorpal> twice11, what is the minimum for win7 yeah?
12:40:59 <twice11> No idea. Too bad they didn't make a report on that.
12:40:59 <Vorpal> twice11, the last link is german only
12:41:01 <elliott> Windows 7 on a cardboard box with a toothbrush
12:41:11 <elliott> also some salt
12:41:35 <twice11> elliott: Don't cheat. That is Windows Phone 7!
12:41:51 <elliott> :D Windows Phone 7 standard deployment platform
12:41:57 <Vorpal> heh
12:42:00 <elliott> The toothbrush has to have at LEAST three bristles.
12:42:06 <elliott> But no more than seven.
12:50:26 <Phantom_Hoover> Windows 7 bristles.
12:55:01 <twice11> windows XP whistles...
12:55:14 <twice11> Or long Vista horns.
12:56:39 <elliott> Man, I remember the days of Longhorn.
12:56:54 <elliott> Where it was basically XP, but it had a horrible sidebar and every window had a garish-as-fuck light blue gradient all over it.
13:09:05 <Vorpal> heh
13:09:19 <Vorpal> was longhorn the codename for xp or vista, I don't remember
13:09:35 <twice11> Longhorn -> Vista, Whistler -> XP
13:10:02 <Vorpal> ah
13:10:03 <twice11> Or Whistler -> Server 2003?
13:10:09 <Vorpal> what was the code name for 7?
13:10:22 <twice11> Longhorn really ready to manufacture? ;)
13:10:45 <Deewiant> Vorpal: Blackcomb, later Vienna
13:10:48 <Vorpal> ah
13:10:58 <Vorpal> is there a code name for windows 8?
13:11:14 <Deewiant> Not that I know of
13:11:55 <elliott> Vorpal: 8
13:12:30 <twice11> According to de.wikipedia, there were the code names "Mystic" and "Orient" for sucessors of W7 and WSrv2008R2, but now the project seems called "Windows Next"
13:13:33 <Vorpal> elliott, hah
13:13:58 <twice11> Hmm, interesting 2008R2 is available for x64 and Itanium, but not for x86.
13:14:11 <twice11> Is there really that much buisiness interest in Itanium?
13:14:29 <twice11> Or is it just some MS-Intel-treaty that they have to support it?
13:15:11 <elliott> Nobody uses Itanium at all.
13:15:21 <twice11> elliott: That was my impression, too.
13:15:21 <elliott> I mean, people do, but they're rounding errors. Legacy rounding errors.
13:15:45 <Vorpal> I believe it has been used in some HPC applications?
13:15:46 <elliott> I think IBM still sell servers with it? It's pretty much the case that people jumped on board Itanium because it was THE FUTURE, and some people haven't managed to jump back off yet.
13:15:50 <Vorpal> probably not much any more
13:15:54 <Vorpal> and yeah some mainframe stuff
13:16:19 <Vorpal> I mean, in theory it is an awesome idea... In practise? Not so much
13:17:06 <twice11> Having a simple VLIW design is great, but if the realtime out-of-order-scheduling works so well that it beats compile-time VLIW, it's not really helpfull...
13:17:25 <Vorpal> indeed
13:18:00 <elliott> Now would be a great time to tell you all how much I love graph reduction architectures.
13:18:02 <Vorpal> I believe there are some specialized processors using VLIW though
13:18:09 <elliott> Instruction sets: LITERALLY OBSOLETE.
13:18:39 <Vorpal> elliott, how good are they are number crunching?
13:18:46 <twice11> Vorpal: Does Itanium count as "some specized processor"?
13:18:51 <elliott> Vorpal: They have arithmetic primitives, yaknow :P
13:18:57 <Vorpal> twice11, not in this context
13:19:21 <Vorpal> elliott, right
13:19:35 <Vorpal> elliott, how does pipelining and so on work with them?
13:20:05 <Vorpal> elliott, anyway what do you mean with ISAs being obsolete?
13:20:19 <Vorpal> don't you still need some form of encoding for the input
13:20:21 <elliott> Vorpal: It's not obvious how to answer at all, since there's no concept of an "instruction".
13:20:28 <elliott> And yes, but that form doesn't include any instructions.
13:20:33 <elliott> It's just a set of rewrite rules.
13:20:49 <elliott> Those aren't instructions, they don't /do/ anything.
13:20:51 <elliott> They're declarations.
13:20:53 <twice11> rewrite instructions...
13:21:00 <Vorpal> elliott, well the description of how you encode rewrite rules and data must be defined in something similar to an ISA, whatever you call it.
13:21:07 <elliott> Vorpal: No?
13:21:17 <elliott> ISAs are pretty much inherently imperative; they're composed of /instructions/
13:21:20 <elliott> Declarations aren't instructions
13:21:28 <elliott> twice11: Except they're not executed in order, or executed at all :)
13:21:44 <elliott> twice11: They're just used as rules for the CPU's reduction.
13:21:45 <Vorpal> elliott, with something similar I mean "formal documentation of the input expected by the processor"
13:21:47 <Vorpal> so yes
13:22:00 <twice11> think speculative execution, out of order execution.
13:22:00 <elliott> Vorpal: Nobody thinks that when they think ISA
13:22:17 <elliott> twice11: Sure, you can do speculative evaluation on such a machine...
13:22:26 <Vorpal> elliott, whatever, arguing this will be pointless anyway
13:22:39 <twice11> Even today instructions not always executed in order or suddenly rolled back...
13:23:09 <twice11> It's just instructions including a much more complicated set of conditional execution than just referring to some flag bits.
13:23:12 <elliott> twice11: Well, CPU architectures look nothing like their ISAs nowadays.
13:23:26 <elliott> They're much less imperative in fact... and much more weird :)
13:23:42 <elliott> They just try really hard to perfectly emulate the old instruction sets for compatibility.
13:23:43 <twice11> The x86 instruction set is weird enough. Really.
13:24:08 <elliott> Oh, it's weird, it's just not as weird as what actually goes on...
13:24:53 <twice11> In the end, you just interpret that weird x86 instruction set into something sensible.
13:25:07 <twice11> Compiling instead of interpreting failed on the market (see Transmeta)
13:25:22 <elliott> Yeah.
13:26:34 <Vorpal> which bus will be the last to be dropped on common consumer x86 PCs: ISA or PCI?
13:26:48 <Vorpal> I suspect ISA will stay around longer, for compatibility.
13:26:53 <twice11> ISA is already dropped on consumer PCs.
13:26:56 <elliott> twice11: Honestly, if I was a compiler dev I would be begging the CPU corps to standardise and give access to the lower-level details... OK, I wouldn't because that sounds like it would fundamentally contradict my Principle of Absolute Laziness, but I can't imagine compiler devs couldn't do a better job at sorting things out than CPUs doing things just-in-time.
13:27:01 <Vorpal> twice11, the slots yes, not the bus
13:27:15 <Vorpal> 00:1f.0 ISA bridge: Intel Corporation P67 Express Chipset Family LPC Controller (rev 05)
13:27:17 <twice11> Real ISA is dead.
13:27:22 <Vorpal> twice11, I said bus
13:27:26 <twice11> LPC replaced it.
13:27:36 <Vorpal> hm it is still called ISA bridge thoug
13:27:38 <Vorpal> though*
13:27:40 <Vorpal> wonder why
13:27:53 <twice11> LPC is kind-of 4-bit-parallel serial ISA.
13:28:16 <Vorpal> hm
13:28:20 <twice11> But is as a lower pin count (hence the name!), obviously.
13:29:20 <elliott> Deewiant: Hmph: ansi-terminal does nothing for input whatsoever
13:30:04 <twice11> elliott: Having the CPU do the lowest level details provides strong advantages: Independence of exact architectural designs, like you are able to add an extra execution engine and all apps are going to use it, and makes things like simultaneous multitrhreading possible at all.
13:30:25 <twice11> Some abstractions seems like not being too bad.
13:30:34 <elliott> twice11: Yeah, it's probably true that the microcode layer changes way too quickly for that to be feasible.
13:30:50 <elliott> Modern x86-64: kind of a mess?
13:31:27 <twice11> anything called remotely like x86 is something to stay away from if you like to keep sanity.
13:31:49 <twice11> The 8086 instruction set might have been a good idea in 1978, though.
13:32:05 <twice11> Already the 8088 is an abnomination, in my oppinion.
13:32:19 <twice11> What use is a processor that starves on instruction fetch bandwidht?
13:32:42 <elliott> Maybe I should just buy an FPGA and put a Reduceron on it and build a computer up from that, out of wood.
13:32:50 <elliott> I'm sure I can make a wooden monitor. It would feel very appropriately DIY.
13:34:03 <twice11> But history repeats, processors starving on instruction bandwidth reappear all the time, like the Cx486SLC2 or the first Pentium 4 designs (although in that case, it was the RAM/Northbridge that didn't manage to keep up with the excessive bandwidth required).
13:34:30 <elliott> What we need is Checkout CPUs. (Problem: The instruction manuals would _probably_ form a black hole.)
13:34:32 <Vorpal> that is why you have instruction caches
13:35:20 <Vorpal> with the current technology you can either make expensive, fast & small RAM or you can make cheap, slow & large RAM.
13:35:26 <twice11> Instruction caches on the mentioned processors are too small, or way to small.
13:35:37 <Vorpal> true
13:36:02 <twice11> I once inherited a cheap craptop with a Cx486SLC2.
13:36:14 <twice11> Bus interface: 16-bit 286-like at 25MHz.
13:36:26 <twice11> Processor core: 486 variant at 50MHz.
13:36:31 <twice11> Cache size: 1KB.
13:36:46 <twice11> The only thing the processor is fast at is tiny benchmark loops.
13:36:57 <Vorpal> heh
13:37:57 -!- Nisstyre has quit (Ping timeout: 240 seconds).
13:39:06 <Vorpal> my laptop has an L2 cache three times as big as my desktop. Crazy Core 2 Duo.
13:39:11 <Vorpal> 3 MB L2
13:40:06 <twice11> By cache is longer than yours! 4MB in a C2D T7200
13:40:14 <twice11> My cache...
13:40:24 <Vorpal> heh
13:40:38 <elliott> Didn't Core 2s go up to like 12 meg cache?
13:40:42 <Vorpal> possibly
13:40:48 <Vorpal> that was a laptop C2D though
13:40:53 <elliott> They were just moving all the RAM to L2.
13:40:54 <Vorpal> model name: Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz
13:40:54 <elliott> Why not!
13:41:22 <Vorpal> elliott, I heard of CPUs with 256 MB L2.
13:41:26 <Vorpal> not x86 though
13:41:27 <elliott> lol
13:41:31 <Vorpal> think it was a PowerPC or Power
13:41:36 <Vorpal> for HPC
13:41:36 <twice11> Is that some server CPU?
13:41:41 <Vorpal> twice11, HPC even
13:41:48 <twice11> compute server ;)
13:41:58 <Vorpal> elliott, oh maybe it was 256 MB L3
13:42:02 <Vorpal> rather than L2
13:42:03 <Vorpal> not sure
13:42:07 <Vorpal> still rather insane
13:42:11 <elliott> 789324789234798234 TB L0!!!!!!111
13:42:56 <Vorpal> I can't find the L3 cache info for my laptop in lshw, not sure where else to look
13:43:07 <twice11> Vorpal: 0MB
13:43:14 <twice11> You laptop has no L3 cache.
13:43:16 <Vorpal> oh, C2D had no L3?
13:43:16 <Vorpal> hm
13:43:45 <twice11> Just think about the die size if you want an L3 cache that is signicantly bigger than your 3MB L2 cache.
13:44:41 <Vorpal> heh
13:44:41 <twice11> So L3 needs to be outside the processor. The front-side bus is slow enough to have that backed by dual-channel DDR, so what use is a L3 cache.
13:45:00 <Vorpal> my desktop has 6 MB L3 it seems. That is a Core i7 Sandy Bridge. It seems to be internal to the processor.
13:45:52 <elliott> Core 2 doesn't do L3, Nehalem does.
13:46:02 <Vorpal> wait what, it lists L3 cache in two places? Once as 8 MB and once as 6 MB. Lol lshw
13:46:30 <Vorpal> I'll check what the intel cpu finder thingy has to say about it
13:46:32 <Vorpal> brb
13:47:24 <twice11> Maybe lshw trusts DMI info.
13:47:32 <twice11> Usually an extremely bad idea.
13:47:47 <Vorpal> possibly, it is mostly "To be filled by O.E.M."
13:48:01 <Vorpal> my laptop has accurate DMI info mostly
13:49:16 <Vorpal> well, intel claims 8 MB
13:51:04 -!- pikhq_ has joined.
13:51:23 -!- pikhq has quit (Ping timeout: 258 seconds).
13:54:32 <twice11> In fact, the info amount and structuring of lshw is quite impressive.
13:55:42 <fizzie> In (at least) Sandy Bridge processors, it's not L2 cache, it's "Intel® Smart Cache". (That's how it's listed in ark.intel.com/ tech-specs listings.)
13:56:37 <fizzie> http://www.intel.com/content/www/us/en/architecture-and-technology/intel-smart-cache.html -- wow, that's so Warriors of the Net -esque.
13:56:50 -!- sebbu2 has changed nick to sebbu.
13:57:23 <elliott> Does anyone actually pronounce it "cash"?
13:58:07 <olsner> doesn't everyone?
13:58:17 <elliott> I say cash-ey.
13:58:28 <Vorpal> twice11, indeed
13:58:38 * twice11 says "cash", too
13:58:47 <olsner> hmm, I've never heard cash-ey
13:58:49 <Deewiant> elliott: Nobody pronounces it like that
13:58:54 <elliott> I do!
13:58:55 <Vorpal> fizzie, "warriors of the net"?
13:58:59 <olsner> acache indians
13:59:01 <elliott> It SOUNDS RIGHT.
13:59:05 <twice11> Old joke: "Your parity check is overdrawn and you are out of cash"
13:59:06 <fizzie> Vorpal: http://www.warriorsofthe.net/
13:59:28 <fizzie> "Did you ever wonder how the Internet works? How does a router look like? What color does a IP packet have? How does a IP packet travel through firewall. All the answers and many more can be found in the Warriors of the net move."
13:59:29 <Vorpal> fizzie, sadly that (and the intel thing) both require flash. Oh well
13:59:42 <elliott> Deewiant: Anyway ansi-terminal doesn't do input?? Hmph at you, hmph
14:00:06 <fizzie> Vorpal: The latter seems to work just fine with elinks.
14:00:54 <fizzie> (There's even a non-youtube download link to SUnet.)
14:01:40 <Deewiant> elliott: I guess you mean noecho and nodelay and nocbreak and getch? Yeah, I don't think anything non-curses on Hackage does that
14:01:52 <elliott> Deewiant: Well, libedit/readline/haskeline &co.
14:01:57 <Vorpal> oh right, it is youtube indeed
14:02:03 <elliott> Deewiant: But that's a very specific usecase :-P
14:02:13 <elliott> I can't use curses at all, sigh, it's just impossible
14:02:14 <fizzie> Just go download -> non-youtube link if you don't want flash.
14:02:42 <Deewiant> elliott: Hmm, can you mix e.g. haskeline with ansi-terminal?
14:02:44 <fizzie> The Intel thing is very probably flash-only though.
14:03:22 <elliott> Deewiant: ansi-terminal just does output colouration pretty much, so... yeah? It's just printf on steroids. Dunno about Windows. Don't care about Windows.
14:03:57 <Vorpal> fizzie, youtube-dl seemed to work
14:04:03 <Deewiant> elliott: If you don't care about Windows you can implement everything using only putStr and ECMA-48 :-P
14:04:06 <Vorpal> not for intel of course
14:04:09 <Vorpal> didn't even try that
14:04:20 <elliott> Deewiant: Except raw input
14:04:25 <Vorpal> fizzie, anyway how does "smart cache" differ from L2?
14:04:28 <elliott> Deewiant: Wanna write my ioctls for me?
14:04:32 <Vorpal> on a technical level I mean
14:04:55 <twice11> Vorpal: "smart cache" is dynamically shared between processor cores and integrated graphics.
14:05:01 <Vorpal> ah
14:05:24 <Deewiant> elliott: Not particularly, no; see CCBI's TERM implementation if you're doing similar things
14:05:31 <elliott> Seriously though, why would you even make a library use the alternate screen with NO CHIOCE AT ALL. :/
14:05:47 <elliott> Deewiant: Yeah, that D code will help me use awful ioctls with hideous structs from Haskell
14:05:59 <Vorpal> elliott, you can work around it by using only the terminfo interface of ncurses
14:06:00 <Deewiant> elliott: I don't use ioctl
14:06:04 <Vorpal> elliott, TERM in cfunge does that
14:06:06 <elliott> Vorpal: How
14:06:07 <twice11> Considering stuff like Turbo Boost, where you effectively disable cores, it makes sense to reuse the cache from that core for running cores.
14:06:08 <elliott> Deewiant: What do you do then
14:06:18 <Deewiant> elliott: What Vorpal's talking about
14:06:22 <Vorpal> elliott, basically doing what tput(1) does
14:06:26 <elliott> Right; go on
14:06:38 <elliott> How do I put shit on the screen like that :P
14:06:40 <Deewiant> elliott: man putp
14:06:53 <Vorpal> elliott, check TERM.c from cfunge, I forgot the exact details
14:07:07 <elliott> Deewiant: Uuugh this is ugly.
14:07:16 <Deewiant> elliott: Yeah, it is
14:07:18 <Vorpal> anyawy the coordination between NCRS and TERM is tricky
14:07:27 <Vorpal> I recommend not loading both NCRS and TERM at the same time.
14:07:56 <Vorpal> it *should* work for the cases I tested (as in, it doesn't crash), but the results might be somewhat hard to predict
14:08:04 <elliott> Deewiant: And hscurses don't bind to it
14:08:08 <Deewiant> elliott: char *go_xy = tigetstr("cup"); int x = 10, y = 20; putp(tparm(go_xy, y, x)); /* cursor is now at 10,20 */
14:08:14 <elliott> <elliott> Deewiant: And hscurses don't bind to it
14:08:22 <elliott> 'Least, far as I can tell
14:08:23 <Deewiant> elliott: And?
14:08:35 <elliott> What, you want me to suffer through the FFI for the privilege of using such an awful API?
14:08:36 <Vorpal> eh
14:08:39 <Vorpal> how is it ugly
14:08:41 <elliott> I hate my life.
14:08:44 <Deewiant> elliott: It only uses basic types and pointers to opaque structs AFAICT
14:08:45 <Vorpal> putp(cursor_down);
14:08:55 <Deewiant> elliott: That much FFI is hardly suffering
14:08:57 <Vorpal> I think cursor_down is defined in the header
14:09:04 <elliott> Deewiant: FFI is always sufferin'
14:09:07 <Vorpal> oh wait, it is a macro isn't it?
14:09:12 <elliott> Plus
14:09:13 <Deewiant> elliott: Your pain threshold is way lower than it should be
14:09:17 <elliott> Vorpal demonstrates the FFI problem with ncurses
14:09:20 <elliott> Everything is a fucking macro
14:09:34 <Deewiant> elliott: Nothing you need is a macro
14:09:35 <Vorpal> $ grep cursor_down /usr/include/term.h
14:09:35 <Vorpal> #define cursor_down CUR Strings[11]
14:09:37 <Vorpal> yeah
14:09:44 <elliott> Deewiant: How about that
14:09:50 <Vorpal> elliott, okay, this will be painful from anything except C and C++
14:09:50 <Deewiant> elliott: You don't need that
14:09:53 <Deewiant> elliott: You use tigetstr
14:10:08 <Vorpal> elliott, anyway, I know a way to work around this: Do a small C module that wraps this horrible macro API, then FFI to it
14:10:14 <Vorpal> that might not be too painful
14:10:17 <elliott> Deewiant: Are you sure this actually does input
14:10:41 <Vorpal> I don't think the term.h interface does input.
14:10:49 <Vorpal> not sure though
14:10:57 <elliott> I like how you're both contradicting each other every line.
14:11:05 <Vorpal> heh
14:11:11 <Deewiant> elliott: I still don't know what you mean by "does input"
14:11:19 <Vorpal> Deewiant, I presume he means stdin
14:11:21 <Deewiant> elliott: getchar(3)
14:11:29 <elliott> Deewiant: With raw console, duh
14:11:32 <elliott> No buffering
14:11:34 <Vorpal> set input unbuffered and do getchar()?
14:11:42 <elliott> Vorpal: Now you have two problems!
14:11:42 <Vorpal> hm
14:11:47 <elliott> Tell me how to do the former; it will involve ioctl.
14:11:53 <elliott> Deewiant just told me to use putp to avoid ioctl.
14:12:00 <twice11> You need to turn off kernel buffering/basic line editing.
14:12:00 <elliott> And so we come full circle.
14:12:06 <Vorpal> elliott, no I think it involves setvbuf()
14:12:13 <elliott> twice11: Right, that's just a hideous pain from anything but C :)
14:12:26 <twice11> Just turning off userspace buffering like setvbuf() doesn't help.
14:12:30 <Vorpal> oh okay
14:12:35 <Deewiant> elliott: I said "if you're doing similar things", I can't even remember what things TERM has :-P
14:12:57 <Vorpal> TERM has CDGHLSU
14:13:00 <Vorpal> s/ / /
14:13:11 <Vorpal> (not helpful I know)
14:13:13 <twice11> The original idea was that in stuff like telnet, the telnet client does the whole line editing, and only complete lines get sent over the network.
14:13:32 <Deewiant> Is enter_ca_mode sufficient, I wonder
14:13:49 <Vorpal> Deewiant, doesn't that do the crazy alt-screen thingy?
14:13:57 <elliott> twice11: I wish that was actually done so I could get a benefit from all this awfulness
14:14:02 <elliott> ssh line editing lag regularly annoys me
14:14:06 <Deewiant> Vorpal: It's the "do this before doing anything else"
14:14:19 <Vorpal> Deewiant, does ccbi TERM do that?
14:14:23 <Deewiant> Vorpal: Yes
14:14:31 <twice11> elliott: telnet does that as long as the program invoked does not turn off kernel line editing/buffering.
14:14:40 <twice11> You could tunnel telnet over ssh.
14:14:48 <Vorpal> oh right, so does cfunge with some defines.
14:14:52 -!- Jafet has quit (Quit: Leaving.).
14:14:56 <elliott> twice11: Hmm, right, I've never used telnet for actual shells
14:14:57 <twice11> But don't expect tab completion or history or any other fancy stuff to work.
14:15:00 <Vorpal> the problem is, that does the alternate screen that fucks with scrollbars
14:15:12 <Vorpal> and it works without that
14:15:12 <elliott> Messes with more than just scrollbars
14:15:14 <Vorpal> yes
14:15:24 <elliott> It's fine for screen-oriented UIs
14:15:25 <Vorpal> anyway:
14:15:28 <elliott> But my program is streaming, line-based
14:15:28 <Vorpal> #ifdef TERM_CAP_CORRECT
14:15:28 <Vorpal> putp(enter_ca_mode);
14:15:28 <Vorpal> atexit(finalise);
14:15:28 <Vorpal> #endif
14:15:46 <Vorpal> which is usually done
14:15:52 <Deewiant> You have an option for buggy termcaps or something? :-P
14:16:05 <twice11> In a line-based program, don't enter alt-screen mode. Easy ;)
14:16:11 <Vorpal> Deewiant, it is #defined at the top of the file, so changing it requires patching TERM.c
14:16:42 <Vorpal> Deewiant, I think I experimented with and without that though. And it worked fine without it in all tests. I did settle for having it on though, just in case...
14:16:49 <twice11> If a library forces you to enter alt-screen mode, fix the library.
14:17:20 <Vorpal> twice11, problem is, you are supposed to use that before any cursor moving magic iirc. According to the documentation
14:18:09 <twice11> The idea was that you don't need cursor moving magic in a line-based program.
14:18:28 <Vorpal> iirc elliott is doing a progress bar or something
14:18:33 <elliott> And that's why wget goes into alternate screen mode to draw a progress bar
14:18:38 <twice11> At the point where you implement your own readline with sensible wrapping, the idea breaks down...
14:18:53 <twice11> huh, wget does that? Are you sure?
14:18:54 <Vorpal> elliott, it does? Why doesn't it mess up with the scrollbar then?
14:18:55 <elliott> It's more than just progress bars here, I update status indicttors too
14:18:57 <elliott> twice11: Sarcasm :)
14:19:22 <elliott> Was just giving an example of a line-based program that obviously needs cursor magic
14:19:45 <twice11> backspace is enough for updating scrollbars.
14:20:04 <twice11> And backspace is not considered "cursor movement".
14:20:13 <Vorpal> twice11, progress bars you mean
14:20:21 <twice11> Vorpal: Yes.
14:20:26 <elliott> twice11: there's more at work here
14:20:31 <elliott> I have multiple progress bars on different lines
14:20:40 <elliott> and like I said, also have to update status indicators in various lines
14:20:56 <twice11> In this case, it is no longer plain line based... Hybrid concepts are not supported. Too bad.
14:21:20 <elliott> twice11: Well, I'm not going to give up when the fix is "only" an ioctl away...
14:21:37 <elliott> Nothing actually breaks when you use cursor codes before that anyway.
14:21:54 <twice11> On most terminals I can imagine, doing what you want to do without alt screen mode works.
14:22:16 <Vorpal> elliott, wait, isn't the ioctl for input you said? Rather than output?
14:22:19 <elliott> Yep, just means I can't benefit from things like ncurses which force me into alt-screen mode
14:22:27 <elliott> Vorpal: Yes, I just mean that if I need to roll my own escapes, I need ioctl for input
14:22:30 <elliott> As opposed to using curses
14:22:36 <CakeProphet> the joys of telnet.
14:22:37 <Vorpal> ah
14:22:37 -!- Ngevd has joined.
14:23:13 <twice11> ncurses must be usable in non-alt-screen mode too.
14:23:21 <Ngevd> Hello
14:23:33 <Vorpal> elliott, what happens if you have more progress bar than the height of the terminal? I have seen programs like powertop fuck up when output didn't fit on the screen
14:23:35 <twice11> AFAIK, GNU readline is based on ncurses. And readline does not enforce alt-screen.
14:23:41 <Vorpal> not sure if they fixed that in more recent versions
14:23:44 <Vorpal> it is possible
14:23:51 <elliott> twice11: Well, the standard API definitely does it.
14:24:06 <CakeProphet> I'm almost positive that telnet can ask terminal dimensions.
14:24:18 <elliott> I'm almost positive you have no idea what we're talking about.
14:24:23 <CakeProphet> that too.
14:24:27 <elliott> Vorpal: Pretty sure you can cursor-up beyond the displayed terminal height
14:24:31 <CakeProphet> other than you're talking about telnet and terminal dimensions
14:24:33 <Vorpal> elliott, hm
14:24:34 <Ngevd> Don't look at me, I just got here
14:24:36 <elliott> It's really a very big terminal, just with limited viewport
14:24:37 <elliott> CakeProphet: Not telnet
14:24:44 <CakeProphet> ah, okay. well then nevermind. :)
14:26:00 -!- sllide has joined.
14:29:05 <Vorpal> elliott, which ioctl is it
14:29:19 <elliott> SCSCTATTR or some nonsense like that.
14:29:23 <elliott> (I just typed random chars that look right.)
14:29:26 <elliott> ICOSAGET. Something.
14:29:31 <elliott> It's an awful bugger.
14:29:41 <Vorpal> which man page?
14:29:45 <elliott> termios stuff.
14:29:53 <elliott> http://en.wikibooks.org/wiki/Serial_Programming/termios
14:30:03 <elliott> Has some "lovely" examples.
14:30:10 <elliott> Hmm, OK that's not a ioctl, but there's an ioctl underneath it.
14:30:14 <elliott> Isn't termios deprecated?
14:31:15 <Vorpal> CONFORMING TO
14:31:15 <Vorpal> tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(), tcflush(), tcflow(), cfgetispeed(), cfgetospeed(), cfsetispeed(), and cfsetospeed() are specified
14:31:15 <Vorpal> in POSIX.1-2001.
14:31:16 <Vorpal> cfmakeraw() and cfsetspeed() are nonstandard, but available on the BSDs.
14:31:19 <Vorpal> well, maybe?
14:35:02 <twice11> temios-like: TCGETS/TCSETS{,F,W}; termio-like: TCGETA/TCSETA{F,W}
14:35:19 <elliott> I forget which is newer.
14:35:49 <twice11> TCSETS == TCSANOW, TCSETSF == TCSADRAIN, TCSETSF = TCSAFLUSH
14:35:57 <twice11> elliott: It's SysV/BSD, not old/new.
14:37:41 <twice11> Other people claim termios is standard, termio is BSD.
14:38:16 <elliott> BSD user, by any chance? :-)
14:38:38 <Vorpal> "The termio interface is now obsolete: POSIX.1-1990 standardized a modified version of this interface, under the name termios."
14:38:42 <Vorpal> says man termio here
14:39:20 <elliott> Right.
14:40:08 <Vorpal> but I would guess twice11 is a BSD user from that
14:40:12 <elliott> Hmm, /can/ you go above the terminal size with cursor movement?
14:40:18 <elliott> I suppose it's easy enough to avoid.
14:40:24 <Vorpal> try it and see?
14:40:24 <elliott> But it makes scrolling up ... ugly.
14:40:27 <elliott> Vorpal: Lazy.
14:40:33 <Vorpal> with a few different terminals I guess
14:40:42 <twice11> No, Linux only.
14:41:07 <twice11> But sometimes remembering things incorrectly.
14:41:48 <elliott> [elliott@dinky ~]$ tput cols | cat -v
14:41:48 <elliott> 168
14:41:48 <elliott> Disturbing. :/
14:41:53 <elliott> Reveal your secrets!!!
14:42:12 <Vorpal> strace?
14:42:29 <Vorpal> it might just look at $COLUMNS :P
14:42:35 <Vorpal> which iirc the shell sets
14:42:45 <elliott> Wow, $COLUMNS actually gets set.
14:42:52 -!- tiffany has joined.
14:42:59 <Vorpal> elliott, remember that the user might resize the terminal window while your program is running
14:42:59 <elliott> How to install strace:
14:43:02 <elliott> Targets (43): strace-4.6-1 ncurses-5.9-2 readline-6.2.001-3 bash-4.2.010-2 gawk-4.0.0-2 m4-1.4.16-2 autoconf-2.68-2 automake-1.11.1-3 bison-2.5-2
14:43:02 <elliott> findutils-4.4.2-4 sed-4.2.1-4 ca-certificates-20111025-2 curl-7.22.0-4 db-5.2.36-2 dialog-1.1_20111020-1 expat-2.0.1-7 flex-2.5.35-5 gdbm-1.8.3-9
14:43:02 <elliott> gettext-0.18.1.1-4 grep-2.9-2 gzip-1.4-4 libldap-2.4.26-5 krb5-1.9.2-1 less-444-2 lib32-libpciaccess-0.12.1-3 libcap-2.22-2 libpcap-1.1.1-4
14:43:02 <elliott> libpipeline-1.2.0-2 libusb-1.0.8-2 linux-firmware-20111101-1 nano-2.2.6-2 patch-2.6.1-3 pciutils-3.1.8-1 popt-1.16-4 pkg-config-0.26-2
14:43:04 <elliott> sqlite3-3.7.9-1 talloc-2.0.7-1 tar-1.26-2 texinfo-4.13a-6 thunar-1.2.3-2 vi-1:050325-2 which-2.20-5 wpa_supplicant-0.7.3-4
14:43:12 <Vorpal> elliott, doubtful your own COLUMNS would be upgraded then
14:43:13 <Vorpal> elliott, what?
14:43:18 <elliott> Vorpal: Yeah, I'll have to roll my own.
14:43:49 <Vorpal> elliott, here strace only depends on perl. Guess that could pull in a lot.
14:44:01 <Vorpal> elliott, are you still on arch? That vi version number looks debianish
14:44:03 -!- sebbu2 has joined.
14:44:03 -!- sebbu2 has quit (Changing host).
14:44:03 -!- sebbu2 has joined.
14:44:13 <Deewiant> strace doesn't depend on all that
14:44:23 <Vorpal> oh it is that on arch
14:44:24 <Vorpal> hm
14:44:32 <elliott> Vorpal: Those are what vi version numbers look like
14:44:45 <Vorpal> elliott, did you do pacman -Su strace or something?
14:44:56 <elliott> -Syu
14:45:04 <Vorpal> well okay that will do system upgrades too
14:45:06 <elliott> Beats remembering to upgrade the system regularly
14:45:07 <Deewiant> I.e. "update whole system, oh and install strace"
14:45:12 <elliott> Deewiant: Yep
14:45:17 <Vorpal> elliott, pacman -S strace will probably just show strace :P
14:45:19 <elliott> Deewiant: It's either that or avoid synchronising
14:45:21 <Deewiant> So not reallywquite "how to install strace"
14:45:25 <elliott> Or I might get inconsistent packages
14:45:31 <Deewiant> + ctrl
14:45:31 <elliott> So -Syu all the time it is
14:45:40 -!- sebbu has quit (Ping timeout: 256 seconds).
14:46:06 <elliott> Vorpal: Guess what tput uses (it's ioctl)
14:46:30 <Vorpal> elliott, it might use termios, but if termios is done in glibc it would likely map to ioctl
14:46:38 <Vorpal> remember, strace shows ioctls, not library calls
14:46:41 <Vorpal> err system calls
14:46:58 <elliott> Vorpal: Oh, termios lets you do that?
14:47:14 <Vorpal> nm -D /bin/tput
14:47:16 <Vorpal> no ioctl
14:47:20 <Vorpal> lots of termios stuff
14:47:43 <elliott> OK, now I must face my true problem: termios is butt-ugly.
14:47:52 <Vorpal> wait, is that ncurses stuff rather
14:47:53 <Vorpal> it might be
14:48:12 <Vorpal> elliott, yes it is term.h stuff
14:48:16 <Vorpal> not termios
14:48:23 <elliott> God dammit term.h
14:48:27 <elliott> All roads lead to you
14:48:37 <Vorpal> elliott, but that still doesn't deal with the input issue at all
14:48:42 <Vorpal> I suspect you need termios for that
14:48:48 <elliott> Sure, but I don't want to use term.h
14:48:50 <elliott> 'S ugly
14:48:53 <elliott> Let's get raw, raw, raw
14:48:55 -!- sebbu3 has joined.
14:48:55 -!- sebbu3 has quit (Changing host).
14:48:55 -!- sebbu3 has joined.
14:48:56 <Vorpal> certainly
14:48:56 <elliott> termios is about as raw as it gets
14:49:22 <twice11> tcgetattr/cfmakeraw/tcsetattr is the usual way to get raw input.
14:49:23 <Vorpal> elliott, term.h provides you will a way to look up the control codes. And yes ncurses headers suck.
14:49:32 <twice11> The first and third call ends up in an ioctl.
14:49:39 <elliott> The tigetflag, tigetnum and tigetstr routines return the value of the capability corresponding to the terminfo capname passed to them, such as xenl.
14:49:39 <elliott> What I don't understand is, how can "cols" be a capability, like this and man tput imply?
14:49:44 <Vorpal> twice11, cfmakeraw is a deprecated BSD only thingy
14:49:47 <Vorpal> as far as I can tell
14:49:47 <elliott> It sounds like they're static configuration values from the terminfo database.
14:49:54 <elliott> But obviously columns change.
14:50:09 <Vorpal> yes, beats me how it handles that
14:50:12 <twice11> you can ask for cols through an ioctl.
14:50:19 <twice11> But not all terminals support that.
14:50:22 <Vorpal> wait, isn't there a signal for resized terminal?
14:50:25 <Vorpal> that some terminals do
14:50:26 <twice11> I mean terminal driver.
14:50:27 <Vorpal> but not all
14:50:30 <twice11> SIGWINCH
14:51:03 <elliott> twice11: Linux console/xterm/rxvt/gnome-terminal is pretty much all I care about, honestly.
14:51:03 <CakeProphet> SIGWICH mmmmmmm
14:51:15 <Vorpal> I seem to remember some terminal emulator that let me set if I wanted to use SIGWINCH or something else
14:51:23 <Vorpal> might have been konsole
14:51:24 <Vorpal> not sure
14:51:57 <CakeProphet> is it bad that the primary reason I decided not to use KDE is that I dislike the names of all its default software?
14:52:03 <Deewiant> Yes
14:52:08 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
14:52:30 <Vorpal> the sole reason for me is that KDE 4 is horrible.
14:52:37 <CakeProphet> the starts-with-a-K naming scheme just makes me... kringe.
14:52:54 <twice11> But isn't that kool?
14:52:56 <Vorpal> gnome has quite a few things starting with g iirc
14:53:02 -!- sebbu2 has quit (Ping timeout: 256 seconds).
14:53:36 <elliott> Nothing starts with g nowadays :P
14:53:45 <Vorpal> maybe
14:53:57 <Vorpal> elliott, a few of the games iirc?
14:53:57 <CakeProphet> yes but usually it just kind of is attached to the front of the name rather than incorporated into the first word.
14:54:00 <CakeProphet> which is somehow better?
14:54:19 <elliott> Vorpal: AisleRiot, Quadrapassel, ...
14:54:31 <Vorpal> gweled
14:54:56 <CakeProphet> I have gbrainy in games.
14:54:59 <CakeProphet> *Games
14:54:59 <elliott> Vorpal: Very unofficial from the looks of it
14:55:03 <Vorpal> elliott, hm
14:55:04 <elliott> Not GNOME at all
14:55:13 <elliott> CakeProphet: That's the only example I can think of
14:55:43 <Vorpal> gedit
14:55:46 <CakeProphet> I can think of -- yes
14:55:47 <Vorpal> (not a game)
14:55:51 <CakeProphet> you beat me. :P
14:55:56 <CakeProphet> gedit is a perfectly acceptable name.
14:56:09 <CakeProphet> I base this on arbitrary aesthetic values.
14:56:10 <Vorpal> gconf-editor
14:56:21 <CakeProphet> g is a helpful indicator here.
14:56:29 <CakeProphet> and shorter than gnome-conf-editor
14:57:11 <Vorpal> gnome-panel, that doesn't just start with g, it starts with a whole "gnome"
14:57:21 <elliott> <Vorpal> gconf-editor
14:57:23 <elliott> please :P
14:57:24 <CakeProphet> if most of the applications in Gnome started with a big capital G as the first word of the name.
14:57:27 <Vorpal> elliott, what?
14:57:29 <CakeProphet> I would also feel the same way about gnome.
14:57:41 <elliott> also, gnome-panel is actually just Panel I think
14:57:47 <elliott> gnome-panel is just the executable
14:57:47 <CakeProphet> s/word/letter/
14:58:16 <Vorpal> /usr/bin/gnome-sudoku hm
15:00:26 <Vorpal> what about gphoto2
15:00:29 <Vorpal> isn't that gnome?
15:00:32 <CakeProphet> so if Nautilus were called Galaxy, the image viewer were called Gorgeous, Trash was instead Garbage, and there was a music player called Gain.
15:00:40 <Vorpal> or hm maybe not
15:00:44 <elliott> CakeProphet: coooooool
15:00:52 <CakeProphet> elliott: I agree.
15:01:57 <CakeProphet> they should have a Ukubuntu where "Trash" is called "Rubbish"
15:02:03 <CakeProphet> that is the only change.
15:02:29 <elliott> CakeProphet: it's called the Rubbish Bin in UK locales
15:02:35 <elliott> gnome has many localisations, you know
15:02:44 <Vorpal> elliott, anyway for portable escape codes to the terminal: term.h. For unbuffered input: termios or possibly some ioctls, not sure how portable the latter would be
15:02:46 -!- MSleep has changed nick to MDude.
15:02:50 <Vorpal> (between different terminals I mean)
15:03:00 <elliott> Vorpal: "portable", do you even believe yourself. show me a terminal that can't do vt100
15:03:09 <CakeProphet> elliott: oh really? those craft gnomes.
15:03:14 <CakeProphet> *crafty
15:03:21 <Vorpal> elliott, sec
15:03:32 <elliott> Vorpal: That works with modern linux and is a progra
15:03:32 <elliott> m
15:03:43 <Vorpal> elliott, oh. I was about to say VT62 :P
15:03:44 <CakeProphet> elliott: can microsoft run do vt100?
15:04:00 <Vorpal> run do?
15:04:01 <CakeProphet> *run.exe or whatever
15:04:05 <Vorpal> cmd.exe?
15:04:08 <CakeProphet> er
15:04:08 <CakeProphet> yes
15:04:12 <Vorpal> unlikely
15:04:25 * CakeProphet <-- Wundoes Youser
15:05:00 <Vorpal> ?
15:05:32 <Vorpal> elliott, anyway I seen someone do terminal on matrix printer with linux 2.6.something
15:05:32 <CakeProphet> I will let you puzzle it out on your own
15:05:36 <Vorpal> it is still supported
15:05:44 <Vorpal> elliott, not a sane setup though :P
15:05:47 <elliott> Not a terminal :P
15:06:06 <Vorpal> I forgot what the input was
15:06:21 <CakeProphet> can Cygwin do vt100? I recall seeing vt100-like things in it before.
15:06:25 <CakeProphet> but it runs through cmd.exe
15:06:33 <Vorpal> elliott, I used serial console myself a few times on modern linux.
15:06:48 <elliott> you're not a person; anyway does that even count as a tty
15:06:51 <elliott> what does isatty think
15:07:02 <Vorpal> for serial console? No idea
15:07:24 <elliott> i bet it thinks no
15:07:31 <elliott> in which case the package manager will use paper trail output
15:07:34 <elliott> rather than interactive output
15:08:14 <Vorpal> elliott, right. A more reasonable question would: what about GUI package managers wrapping your package manager. How will you support that (if at all)
15:08:26 <Vorpal> I guess there is packagekit, doubt that would fit you
15:08:29 <elliott> that's what libraries are for
15:08:35 <Vorpal> fair enough
15:08:48 <CakeProphet> libraries are for books not packages.
15:08:50 <elliott> paper trail output isn't gonna print a dot for every minuscule bit of progress :P
15:09:06 -!- Phantom_Hoover has joined.
15:09:32 <Vorpal> elliott, is this for download or for installation too?
15:09:48 <elliott> it's for... package management
15:10:16 <Vorpal> elliott, yes but surely not all bits of package management needs a progress bar.
15:10:23 <Vorpal> only those that take some time
15:10:25 <elliott> yeah that's totally a thing i implied
15:10:32 <elliott> you're being perfectly reasonable by stating this as if it's somehow cogent
15:10:45 <Vorpal> I'm glad you feel that
15:11:10 <Vorpal> so I guess you plan to use it for more than just download, such as compilation and installation?
15:11:39 <elliott> no, by package manager all this time i've actually meant wget
15:13:10 <CakeProphet> wget is the great for Porkege Ménagement
15:14:15 -!- Ngevd has quit (Quit: Leaving).
15:25:22 <CakeProphet> elliott: happy day-in-which-King-James-1-is-still-alive day.
15:25:29 <CakeProphet> I wonder where we would be without him.
15:33:34 -!- sebbu3 has changed nick to sebbu.
15:35:19 -!- Darth_Cliche has joined.
15:43:21 <elliott> def ioctl_GWINSZ(fd):
15:43:21 <elliott> try:
15:43:22 <elliott> import fcntl, termios, struct, os
15:43:22 <elliott> cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,
15:43:22 <elliott> '1234'))
15:43:22 <elliott> except:
15:43:24 <elliott> return None
15:43:26 <elliott> return cr
15:43:28 <elliott> Vorpal: OH GOODY
15:45:58 <elliott> Kind of tempting just to shell out to tput
15:46:18 -!- pikhq has joined.
15:46:23 <elliott> Unless you can do that with the portable termios api
15:46:25 <elliott> i.e. not ioctl
15:46:27 -!- pikhq_ has quit (Ping timeout: 252 seconds).
15:46:53 <elliott> hi pikhq
15:47:56 -!- Nisstyre has quit (Ping timeout: 260 seconds).
16:00:01 -!- monqy has joined.
16:06:16 <Vorpal> wait
16:06:21 <Vorpal> fcntl.ioctl?
16:06:22 <Vorpal> what?
16:06:36 <twice11> fcntl == module name, ioctl == function name.
16:06:36 <Vorpal> oh wait, that is python
16:06:37 <Vorpal> right
16:06:40 <Vorpal> *phew*
16:06:52 <Vorpal> thought it was some weird C with function pointers in structs first
16:49:01 -!- quintopia has quit (Ping timeout: 244 seconds).
16:53:19 -!- shareholder has joined.
16:53:25 <tswett> Why would you ever have a function pointer anywhere other than a struct?
16:53:27 <tswett> }:P
16:54:26 <Vorpal> tswett, in qsort() parameter list for example
16:55:13 <Vorpal> cfunge puts them in dynamically allocated arrays acting as stacks iirc.
16:55:44 <tswett> What are qsort's parameters?
16:56:00 <Vorpal> check qsort(3)
17:00:59 -!- quintopia has joined.
17:01:00 -!- quintopia has quit (Changing host).
17:01:00 -!- quintopia has joined.
17:17:53 -!- shareholder has left ("Quitting").
17:56:35 -!- Nisstyre has joined.
18:06:46 -!- derrik has joined.
18:07:16 -!- Ngevd has joined.
18:10:51 -!- oerjan has joined.
18:11:04 <Ngevd> BEFUNGE 93 WITH NUMBERED MACROS
18:11:10 <monqy> hi
18:11:17 <CakeProphet> o/ hi
18:11:19 <Ngevd> Hello
18:11:22 <oerjan> ho
18:11:35 <CakeProphet> var "friendship ho"
18:11:36 <Ngevd> oerjan: this isn't #esoteric-minecraft
18:11:41 <CakeProphet> > var "friendship ho"
18:11:42 <lambdabot> friendship ho
18:11:53 <oerjan> Ngevd: wat
18:11:58 <Ngevd> hi ho
18:12:03 <Ngevd> Disney's Snow White
18:12:08 <Ngevd> Dwarfs who do mining
18:12:10 <CakeProphet> implying dwarves
18:12:10 <Ngevd> Minecraft
18:12:12 <CakeProphet> implying...
18:12:18 <CakeProphet> dwarf fortr--wait what?
18:12:23 <CakeProphet> oh okay.
18:12:30 <CakeProphet> sure.
18:12:51 <oerjan> I think so Ngevd, but where are we going to find 500 unicycles?
18:13:02 <Ngevd> Well, I have one
18:13:07 <Ngevd> And a dinner to eat
18:13:12 -!- Ngevd has quit (Quit: CURRY TIEM).
18:13:30 <CakeProphet> oerjan: just find 250 bicycles and cut them in half.
18:13:50 <oerjan> brilliant!
18:17:22 <oerjan> <CakeProphet> elliott: happy day-in-which-King-James-1-is-still-alive day.
18:17:28 <oerjan> OMG ZOMBIE KING
18:24:44 -!- Ngevd has joined.
18:24:47 <Ngevd> Hello
18:25:10 <oerjan> you eat fast
18:25:18 <Ngevd> It was a madras
18:25:27 <Ngevd> And I'm not a big eater
18:26:43 <CakeProphet> what does your size have to do with anything?
18:26:49 <CakeProphet> :>
18:26:53 * elliott small eter
18:26:57 <elliott> im cat
18:29:17 <CakeProphet> s/cat/land fish/
18:31:06 <oerjan> now lessee, if a cat loves to eat sea kittens...
18:31:44 <CakeProphet> speaking of that conversation, I am eating honey right now.
18:31:48 <CakeProphet> best vomit ever.
18:34:12 <elliott> i did it guys
18:34:12 <elliott> i foudn
18:34:15 <elliott> the worst subreddit
18:34:17 <elliott> http://www.reddit.com/r/aaaaaatheismmmmmmmmmm
18:34:21 <elliott> it's f7u12
18:34:25 <elliott> ...for /r/atheism
18:34:42 <elliott> monqy: rejoice with me
18:35:27 <monqy> :(
18:36:35 <elliott> monqy: http://i.imgur.com/VF98o.png
18:36:45 <elliott> this is stellar.
18:37:08 <elliott> monqy: classic vintage rage comics; http://www.reddit.com/r/classicrage
18:37:34 <Ngevd> Satan's in the Philippines
18:37:56 <elliott> Ngevd: do you like dst
18:38:07 <CakeProphet> elliott: I'm not entirely sure I'm making the connection between that picture and stars.
18:38:17 <Ngevd> It has its upsides
18:38:23 <monqy> dst is all bad
18:38:26 <elliott> Ngevd: no. no no no. bad.
18:38:28 <monqy> there is nothing good about it
18:38:30 <elliott> bad opinions
18:38:40 <elliott> CakeProphet: what
18:38:50 <CakeProphet> 13:36 < elliott> this is stellar.
18:38:57 <elliott> oh.
18:39:15 <CakeProphet> :3 :> etc
18:41:30 <elliott> monqy: http://i.imgur.com/7tEqu.jpg
18:41:32 <Ngevd> The Commonwealth of England had a stupid flag
18:41:39 <elliott> these are the worst things ever made by humanity
18:41:45 <elliott> in fact if we showed this to aliens who came down and were like
18:41:47 <elliott> justify your species
18:41:50 <elliott> we'd be so fucked
18:42:29 <elliott> "what IS this PRAYER..no BURNS! no! burn!"
18:42:32 <elliott> --fungot
18:42:32 <fungot> elliott: young john soon afterward receives as a visitor a fnord spaniard, fnord de moncada, who has escaped from fnord fnord dissolved in the absolute.
18:42:38 <elliott> `addquote <fungot> elliott: young john soon afterward receives as a visitor a fnord spaniard, fnord de moncada, who has escaped from fnord fnord dissolved in the absolute.
18:42:40 <fungot> elliott: most horrible of all sights are the little unpainted wooden houses remote from travelled ways, usually squatted upon some damp grassy slope or leaning against some gigantic outcropping of rock. i looked at him i saw that my searching would have to cross the blighted, fnord woods alone to his home on the great horse, and his face and accept his alternate blows and fnord who seeks a proud and fnord, and fnord the actual
18:42:41 <HackEgo> 709) <fungot> elliott: young john soon afterward receives as a visitor a fnord spaniard, fnord de moncada, who has escaped from fnord fnord dissolved in the absolute.
18:43:10 <elliott> ^style
18:43:10 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft* nethack pa sms speeches ss wp youtube
18:43:24 <monqy> wow these reddits images
18:43:28 <monqy> wow this reddits
18:43:33 -!- zzo38 has joined.
18:43:37 <monqy> who would do this
18:43:48 <elliott> http://i.imgur.com/BEaH0.png
18:43:57 <elliott> the world is so beautiful
18:44:17 <elliott> the part of my brain that should turn to pure blackened hatred when i see things like this
18:44:22 <elliott> got spontaneously reconfigured at some point
18:44:32 <elliott> so it just makes me think of how beautiful life is instead, it's great
18:44:46 <elliott> maybe i should like read freerepublic daily to keep my happies up
18:45:36 <elliott> monqy: http://i.imgur.com/b83hr.png
18:45:39 <elliott> monqy: it's...
18:45:40 <elliott> i
18:46:31 <monqy> ;_;
18:48:57 <monqy> i wish i had this....reconfigured brai.nnnnn
18:49:36 <elliott> monqy: the key is i think
18:49:39 <monqy> maybe i am reacting inappropriately as well, but not in such a pleasant manner....
18:49:44 <elliott> extreme extrospection (totally a word) whenever you meet anything like this
18:50:06 <elliott> i just lean back and look at the world and also humanity and i'm like ha ha ha ha hahahahaha
18:50:13 <elliott> oooh new iwc annotation
18:50:36 <Ngevd> It's about ATOMS
18:50:41 <monqy> i guess im hahahaha too but i don't know how to describe it....im bad at feelings....
18:51:17 <elliott> oerjan: how do you even like dmm, he's so happy and upbeat.
18:51:32 <monqy> is oerjan emo
18:51:32 <CakeProphet> 13:43 < elliott> got spontaneously reconfigured at some point
18:51:37 <CakeProphet> puberty?
18:51:38 <Ngevd> elliott, he's like me
18:51:41 <elliott> monqy: yes "emoerjan"
18:51:47 <elliott> Ngevd: are you emo as well
18:51:51 <Ngevd> No
18:51:53 <Ngevd> I am anti-emo
18:52:00 <monqy> ngemovd
18:52:00 <elliott> ok
18:52:02 * CakeProphet is emo. -_;;
18:52:07 <Ngevd> One person showed up to my birthday party
18:52:14 <Ngevd> And I was all like "who cares?"
18:52:23 <Ngevd> "There's a universe to explore!"
18:52:29 <Ngevd> "Also, more cake for me!"
18:52:46 <CakeProphet> http://www.youtube.com/watch?v=EJ51kW684FM
18:52:46 -!- sebbu has quit (Read error: Connection reset by peer).
18:52:54 <CakeProphet> wrong channel
18:52:56 <CakeProphet> but whatever
18:52:57 <elliott> "dephlogisticated air" :D
18:53:26 <Ngevd> I love that theory
18:58:28 -!- elliott has quit (Remote host closed the connection).
18:59:09 -!- sebbu has joined.
18:59:09 -!- sebbu has quit (Changing host).
18:59:09 -!- sebbu has joined.
19:04:26 <zzo38> oerjan: Actually, there is the Gregorian calendar based which is what the heading says and is likely what the author intended, but literally following the instructions in Principia Discordia for the calendar results in it based on the Julian calendar so that on 2100 AD (3266 YOLD) it will diverge, being 1 Chaos 3267 on Jan2, 2101
19:09:17 <oerjan> <elliott> oerjan: how do you even like dmm, he's so happy and upbeat. <-- funny you should say that, i found the previous (first new style) annotation somewhat grating that way, i didn't even read all of it. have just opened the new one, we'll see.
19:26:52 <Phantom_Hoover> <elliott> wowflowrs! ! 1 nobdy 0sksi a go
19:27:00 <Phantom_Hoover> elliott's cryptic final transmission.
19:27:27 <Phantom_Hoover> <Ngevd> I am anti-emo
19:27:41 <Phantom_Hoover> I'm mismisanthropicic, can we fight crime?
19:28:06 <Ngevd> If I collide with an emo, we annihilate each-other in a burst of energy
19:28:32 <oerjan> i don't see how you could possibly get energy from an emo.
19:28:51 <Ngevd> Okay, a burst of energy and anti-energy
19:28:57 <Ngevd> Which then collide and form matter
19:30:15 <Ngevd> And that's all that matters
19:30:25 <Ngevd> And Phantom_Hoover, yes. We can fight crime.
19:30:30 <Ngevd> Meet you in Glasgow?
19:30:49 <Phantom_Hoover> No you can't fight crime in Glasgow.
19:31:13 <Phantom_Hoover> It's like trying to get rid of the space-time continuum.
19:31:26 <Ngevd> Hmm...
19:31:31 <Ngevd> Meet you in Newcastle?
19:31:49 <Phantom_Hoover> Which one?
19:32:00 <Ngevd> Upon Tyne
19:33:17 <Ngevd> Or New South Wales, your call
19:33:33 <zzo38> (I was replying to oerjan's message at UNIX timestamp 1320562665)
19:35:35 <CakeProphet> so many limeys.
19:35:48 <Ngevd> That's a thought
19:35:54 <Ngevd> We could go Under Lyme?
19:37:14 -!- GreaseMonkey has joined.
19:38:06 <Ngevd> Hello, GreaseMonkey
19:38:12 <GreaseMonkey> 'lo
19:58:35 -!- oerjan has quit (Quit: Good night).
20:07:13 -!- sllide has quit (Read error: Connection reset by peer).
20:17:11 -!- Zuu has quit (Read error: Connection reset by peer).
20:19:04 -!- Zuu has joined.
20:25:50 -!- edne has joined.
20:27:07 -!- edne has left.
20:37:00 -!- Ngevd has quit (Ping timeout: 256 seconds).
20:38:33 -!- Ngevd has joined.
20:39:49 -!- ais523 has joined.
21:02:01 <ais523> headline just seen on the news: [CG :88
21:02:10 <ais523> I assume it's a typo, rather than some sort of complex smiley
21:02:27 <Ngevd> CG would be Karkat...
21:02:29 <Ngevd> Hmmm
21:26:13 -!- edne has joined.
21:27:35 -!- edne has left.
21:51:58 -!- Ngevd has quit (Quit: Leaving).
21:53:17 <zzo38> I have an idea for a telephone service, where it is a free feature you can enable and allows the A,B,C,D tones to access several extra commands such as diagnostics, disable call waiting, disable call display, disable toll calls, switch call display protocol, impose time limits, enter red box mode, prevent recipient from using ANI (separately from call display),
21:54:29 <zzo38> disable voice mail, reverse polarity, cut the line for a duration of time, select ground start protocol, disable tone dialing, disable pulse dialing, select a call display mode that tells you whether the last digit to call you was dialed using pulse or tone, etc.
21:55:00 <CakeProphet> Act 6 is going to be amazing.
21:55:25 <zzo38> I don't know if anyone can do that.
21:56:42 <coppro> zzo38: Some phone operators provide a number which allows you to change your features by calling it
21:57:15 <tswett> zzo38: a little bit like USSD?
21:57:37 <tswett> By the way, otoko no ko
21:58:16 <zzo38> coppro: OK, but probably not everything I have mentioned. One idea is to have that when receiving diagnostics information, A announces by voice and C for computer receiving data.
21:58:20 <zzo38> tswett: What is USSD?
21:58:30 -!- Ngevd has joined.
21:58:53 <zzo38> O, I found it in Wikipedia
21:59:00 <tswett> zzo38: that's a thing where you punch in a series of symbols, like a phone number except with pounds and stars, and it does something.
21:59:10 <tswett> Such as diagnostics or reversing the polarity.
21:59:32 <coppro> can it bounce the graviton particle beam off the main deflector dish?
21:59:48 <tswett> coppro: yes, but nobody knows the code for that.
22:00:20 <Vorpal> <zzo38> I have an idea for a telephone service, where it is a free feature you can enable and allows the A,B,C,D [...] <-- why?
22:00:32 <Vorpal> isn't out of band metadata better than in-band?
22:01:15 <tswett> The software that processes these codes is more complicated than all of Ubuntu and OS X combined, and we've also lost the source code.
22:01:56 <zzo38> Vorpal: The reason for in band is to use standard telephones and modems to access it without requring any connection other than standard telephone lines.
22:02:29 <Vorpal> tswett, ubuntu can't be terribly complicated. Just look at how trivial a clean install of windows 7 is. And Ubuntu has a way smaller install size than that! (Nevermind that there are so many more features in the latter, probably just a statistical fluke)
22:03:56 <Vorpal> zzo38, isn't land line dying anyway, compared to voip
22:04:19 <zzo38> I still use landline service.
22:04:21 <Vorpal> I still have a landline because I have ADSL, but most people I know with cable or fibre have switched to voip
22:05:00 <tswett> Vorpal: well, I meant "Ubuntu and all packages available for it in the official repositories".
22:05:04 <Vorpal> tswett, ah
22:05:12 <Vorpal> tswett, yeah that is /quite/ a bit more then
22:05:28 <zzo38> Landline service does not require a computer, and the protocol is sufficiently simple that you can build your own telephone with a few spare parts (as long as pulse dialing is not disabled)
22:05:36 <Vorpal> tswett, sigh, if only there was a distro with a repo as extensive as ubuntu but rolling release....
22:06:15 <CakeProphet> Rollbuntu
22:06:17 <Vorpal> arch has two major issues for me: multilib support is crappy. No split debug info. Still. There is work being done on the latter though.
22:06:48 <Deewiant> What's wrong with the multilib support
22:06:49 <Vorpal> and of course debian's package building system is a mess
22:07:55 <Vorpal> Deewiant, badly incomplete
22:08:06 <Deewiant> How so
22:08:36 <Vorpal> missing headers for 32-bit, few libraries. I mean there was no OpenMPI library for 32-bit last I checked
22:08:40 <Vorpal> and so on
22:08:55 <Vorpal> the 32-bit libraries that exist are there to support a few packages, like zsnes and so on
22:09:10 <Vorpal> but apart from those required by the binary 32-bit packages in the repo: not much
22:09:44 <Deewiant> Fair enough; personally I've yet to need anything that wasn't in the repo
22:10:32 <Vorpal> Deewiant, oh and if you use arch: valgrind fucks up on cfunge atm. I think it is a missing suppression for gmtime() or some internal function it uses.
22:10:42 <Vorpal> in the latest glibc that is
22:10:50 <Vorpal> there are no errors when running on ubuntu
22:11:01 <Vorpal> (10.04 LTS)
22:11:11 <Vorpal> (so a bit older glibc)
22:11:32 <zzo38> Do any of the BayHac2011 Haskell programs exist?
22:12:25 <Vorpal> Deewiant, also the lack of debug info for glibc means I can't really track down the missing suppression...
22:12:58 <Vorpal> -dbg packages work perfectly on ubuntu
22:18:25 -!- GreaseMonkey has quit (Quit: The Other Game).
22:21:51 -!- Ngevd has quit (Ping timeout: 260 seconds).
22:31:59 -!- sebbu has quit (Read error: Connection reset by peer).
22:32:25 -!- sebbu has joined.
22:32:26 -!- sebbu has quit (Changing host).
22:32:26 -!- sebbu has joined.
22:34:22 -!- MDude has quit (Ping timeout: 240 seconds).
22:35:46 <Vorpal> Phantom_Hoover, do you happen to remember the name of that libc elliott was interested in?
22:35:57 <Phantom_Hoover> No.
22:35:59 <Vorpal> oh well
22:36:15 <Vorpal> I think it started with m. Time for a very wide grep of the logs
22:36:21 <monqy> musl?
22:36:28 <Vorpal> ah thanks
22:36:30 <Vorpal> that was it
22:43:28 <Vorpal> hm based on http://www.etalabs.net/compare_libcs.html it still looks like eglibc is a better bet for most desktop systems. It is only worse than musl in a few cases, but has so much better support for lots of features.
22:44:02 <Vorpal> still worth trying building against
23:06:28 <pikhq> Yeah, it's a very good libc, if still a work in progress.
23:07:12 <Vorpal> pikhq, still, missing out on C99 math and so on. :/
23:08:24 -!- hagb4rd has quit (Read error: Connection reset by peer).
23:11:38 <pikhq> Yeah, C99 math is hard to do well.
23:12:42 -!- variable has quit (Excess Flood).
23:15:08 * Phantom_Hoover → sleep
23:15:09 -!- Phantom_Hoover has quit (Quit: Leaving).
23:17:40 -!- variable has joined.
23:30:47 <Vorpal> <pikhq> Yeah, C99 math is hard to do well. <-- oh?
23:34:45 -!- tiffany has changed nick to tiffnya.
23:34:53 -!- tiffnya has changed nick to tiffany.
23:40:11 -!- BlueProtoman has joined.
23:40:20 <BlueProtoman> Can anyone here help me with my Brainfuck interpreter? I've got most of it down except for loops, which are not so much looped as they are ran once. http://codepad.org/eznPVPyy
23:43:09 <BlueProtoman> Anyone?
23:43:45 * ais523 looks
23:44:37 <ais523> you aren't assigning the result of jumpPosition.pop() to anything
23:45:52 <BlueProtoman> Let's see, then.
23:47:05 <BlueProtoman> pop() is void, though...
23:49:35 <BlueProtoman> Any thoughts, ais523?
23:51:34 -!- ais523 has quit (Ping timeout: 240 seconds).
23:52:13 -!- ais523 has joined.
23:52:40 <Vorpal> BlueProtoman, err: jumpPosition.push(ptr+1);
23:52:53 <Vorpal> BlueProtoman, you should run the condition every time surely
23:53:08 <Vorpal> you need to run the condition when you enter the loop anyway
23:53:17 <Vorpal> which you don't seem to do
23:53:26 <BlueProtoman> Run the condition? I don't get it,
23:53:35 <Vorpal> BlueProtoman, A loop might run zero times.
23:53:37 <BlueProtoman> Ah wait, you mean testing the stack for whether it's empty?
23:53:42 <Vorpal> if the current cell if 0
23:53:45 <Vorpal> it won't ever run
23:53:59 <Vorpal> it will stop when at the start of an iteration the current cell is zero
23:54:12 <Vorpal> so the loop logic is wrong
23:54:16 <BlueProtoman> Vorpal: That's the point of the Brainfuck language isn't it?
23:54:21 <BlueProtoman> Hm...
23:54:27 <Vorpal> yes, but you don't seem to do that currently
23:54:46 <Vorpal> you check if (*ptr) at the end of the loop
23:54:55 <Vorpal> which means every loop will run at least once
23:55:44 <Vorpal> BlueProtoman, you need code to scan forward to the matching ] without executing
23:55:55 <Vorpal> since a loop can be executed zero times
23:56:17 <BlueProtoman> I see...I can maybe throw another function in there for that.
23:56:35 <BlueProtoman> So check for a ], then...hm...
23:56:38 <Vorpal> personally I would parse it into a tree then exeute the tree.
23:56:42 <BlueProtoman> This is tougher than I thought.
23:57:24 <BlueProtoman> Tree? I think I'm lost now. I've only been studying C++ for a few months.
23:57:43 <Vorpal> I never really been a fan of interpreting directly on the source (and before anyone points out I wrote several befunge implementations, let me point out that there is no other sensible way to implement it in that case!)
23:58:10 <Vorpal> oh well, ask ais523. I'm not good at explaining.
23:58:55 <ais523> and I'm about to go home
23:58:55 <BlueProtoman> I wanna write a BF IDE that can both compile and interpret.
23:59:13 <BlueProtoman> I'm getting it together bit by bit by bit.
23:59:42 <BlueProtoman> Well, thanks anyway.
2011-11-07
00:04:18 -!- BlueProtoman has quit (Ping timeout: 252 seconds).
00:14:46 -!- nooga has quit (Ping timeout: 240 seconds).
00:19:47 <zzo38> Change the game to low score. * In boss levels, you have to catch the apples/bombs/whatever to throw at them. Now, when you catch the object, you earn points. Which means, it is a good idea not to miss! (Becuase of low score game! It doesn't work at all with high score game)
00:20:34 <zzo38> It is: gopher://zzo38computer.cjb.net:70/0phlog*c_game.game-design-i
00:23:34 -!- ais523 has quit (Ping timeout: 240 seconds).
00:25:17 -!- BlueProtoman has joined.
00:26:31 <BlueProtoman> test
00:26:50 <monqy> hi
00:27:11 <BlueProtoman> Hi.
00:27:14 <BlueProtoman> Can anyone here help me with my Brainfuck interpreter? I've got most of it down except for loops, which are not so much looped as they are ran once. http://codepad.org/eznPVPyy
00:30:05 -!- tiffany has quit (Quit: nyu~).
00:32:57 <monqy> not exactly sure what you're doing, but it looks like instead of jumping back to the position in the file where you were, you're setting the character value to the character at that position, and then overwriting it anyway
00:33:14 <monqy> I'd suggest not interpreting as you read the file, for one
00:33:25 <monqy> also not using c++, but that's even further beside the point
00:35:22 <BlueProtoman> Hm...let me look into that.
00:35:33 <BlueProtoman> Also, this interpreter is meant to be a learning exercise for me.
00:35:47 <BlueProtoman> If you suggest not interpreting as I read the file, then what should I do instead?
00:36:23 <BlueProtoman> Answer quickly, I'm at my bus stop.]
00:36:28 <monqy> you could parse it in some way. the easiest thing to do would be to store the contents in an array or something.
00:36:40 <BlueProtoman> Like a string?
00:36:41 <monqy> or you could do some more structured thing
00:36:46 <BlueProtoman> How?
00:36:59 <monqy> structures for loops etc.
00:37:04 <BlueProtoman> I know how to use stringstream, so putting the program in a string would be easy...
00:37:12 <BlueProtoman> Structures for loops. Don't follow, sorry
00:37:15 <monqy> uhhhhh
00:37:29 <monqy> do you know what an abstract syntax tree is? it would be good if you could parse to one of those
00:37:31 <BlueProtoman> (I'm fairly new to C++)
00:37:34 <BlueProtoman> No, sorry.
00:37:41 <BlueProtoman> Gotta go!
00:37:46 <monqy> this isn't a c++ matter; it's a programming language implementation matter
00:37:47 <monqy> oh, bye
00:38:22 <monqy> if you're still around, I'd suggest learning some compiler theory or whatever it's called
00:38:35 <monqy> you could use your brainfuck interpreter as an exercise
00:39:39 <Vorpal> monqy, doubtful he know what an AST is. I said "tree" before and that lost him.-
00:39:41 <Vorpal> s/-//
00:39:43 <Vorpal> so eh...
00:39:55 <monqy> oh
00:40:42 <monqy> well then learning some data structures or whatever first would also be a good idea. if he's new enough we might be able to drag him to a better language too?? who knows. is anyone here experienced with this
00:41:02 <Vorpal> I suck at pedagogics
00:41:07 <Vorpal> anyway I need to sleep
00:41:09 <Vorpal> night →
00:41:58 -!- BlueProtoman has quit (Ping timeout: 240 seconds).
00:48:27 <CakeProphet> data structures are useful for learning how to structure data I've found.
00:49:04 <CakeProphet> monqy: wait, AST for a brainfuck program?
00:49:06 <CakeProphet> uh......
00:49:10 <monqy> CakeProphet: yes!!!!
00:49:10 <CakeProphet> I think that's called a linked list.
00:49:16 <monqy> uhhh
00:49:19 <monqy> are you sure
00:49:23 <monqy> because
00:49:25 <CakeProphet> well, I guess for the loops actually...
00:49:28 <monqy> yes
00:49:28 <CakeProphet> that would not be a bad idea.
00:49:33 <monqy> it's for the looops
00:49:39 <CakeProphet> but I would just use a stack. which is... equivalent
00:49:41 <CakeProphet> so, okay.
00:49:55 <monqy> pfft, stacks are for uncool people
00:50:03 <CakeProphet> stacks are the best data structure.
00:51:50 <monqy> another good way to do things is compile the brainfuck to C (really easy) and JIT it up (yes!!!)
00:53:11 <monqy> really easy because you don't have to worry about structure; the C parsing handles all of that
00:53:44 <CakeProphet> serialize the AST as JSON and offload it to a brainfuck server that converts the JSON to a C# structure which is then used to JIT to Python that outputs Perl which is then compressed and sent back to the client.
00:54:31 <monqy> good but that requires getting an ast
00:54:43 <monqy> for brainfuck, I mean
00:54:50 <monqy> assumign that's what you meant
00:58:59 <CakeProphet> yes.
00:59:30 <CakeProphet> oh and the server uses ASP.NET to generate the XHTML response
00:59:34 <CakeProphet> which is
00:59:49 <CakeProphet> a single script tag whose javascript outputs the Perl
01:06:22 -!- CakeProphet has changed nick to Alissy.
01:06:36 -!- Alissy has changed nick to Alissy_.
01:07:03 -!- Alissy_ has changed nick to Kallisti.
01:07:06 -!- Kallisti has changed nick to CakeProphet.
01:29:17 -!- derrik has quit (Quit: fried brain, anyone?).
01:53:58 -!- Vorpal has quit (Ping timeout: 240 seconds).
02:15:01 <zzo38> I made a Prelude.Golf module for Haskell.
02:16:12 <zzo38> It includes many instances which do not follow the laws at all.
02:17:42 <zzo38> I also want to include a regular expression parser in instance IsString (String -> [String])
02:20:26 -!- BlueProtoman has joined.
02:21:23 -!- BlueProtoman has left.
02:21:45 <zzo38> Actually I meant instance IsString (String -> [[String]])
02:26:39 <CakeProphet> zzo38: I think this is a beautiful addition to the language.
02:27:29 <zzo38> CakeProphet: It is designed for use with code golf. But a regular expression parser would still be a good idea in general, I think.
03:00:42 <Gregor> elliott (not online; or anyone else who remembers): What was that Cygwin installer that doesn't suck like the Cygwin setup.exe?
03:15:56 <pikhq> Don't recall, but I can guess it's called tar.
03:18:43 <Madoka-Kaname> @src IsString
03:18:43 <lambdabot> Source not found. My pet ferret can type better than you!
03:55:20 <zzo38> Madoka-Kaname: class IsString t where { fromString :: String -> t; }
03:55:29 <zzo38> It is used with OverloadedStrings extension
04:03:35 -!- MDude has joined.
04:31:19 -!- olsner has quit (Read error: Operation timed out).
04:33:18 -!- olsner has joined.
05:08:45 -!- oerjan has joined.
05:23:43 -!- GreaseMonkey has joined.
06:03:37 -!- MDude has changed nick to MSleep.
06:11:11 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:14:31 <zzo38> Too bad, Wikipedia does not have article about "Yomi (card game)"
06:15:27 <zzo38> EBook readers are not at all about "green". Nor are they about convenience.
06:21:18 <pikhq> Ebook readers may have some of those properties. But, to be sure, the primary draw for publishers is taking away niceties that real books have, like actual ownership.
06:23:26 <quintopia> in the future, authors will be able to kill off characters they didnt like long after the book was published
06:23:32 <quintopia> whoa
06:23:50 <quintopia> people might actually pay more for a book that constantly changes...
06:24:11 <pikhq> George Lucas is a pioneer in the field.
06:25:06 <quintopia> true. like that time he edited dinosaur pictures into all my masturbation memories. all my special memories are special editions!
06:26:02 <quintopia> on a related note, three new smbcs tonight
06:27:20 <zzo38> For more notes about ebook readers not about "green", these are comments some people have posted about it: "tax on books, amazon censorship" "Why would I want 600 books to read during a week's holiday, a glorified calculator to lug around, a power supply, a continental adaptor and an air of superiority, when I can select one piddlin' book to pack for my ultimate "travel light" experience"
06:28:30 <pikhq> *Three*?
06:29:10 <quintopia> paper books are better for the environment. you dont have to keep putting energy in them and they are completely biodegradable
06:32:12 <zzo38> quintopia: Yes, that too.
06:37:12 <zzo38> But I still don't like to waste paper; I avoid wasting paper by reusing the paper that someone has thrown into the recycling for writing a note by hand, reducing the margins/font size when printing by computer, using double-sided, etc
06:37:57 -!- nooga has joined.
06:39:12 <zzo38> Even reducing margins or font sizes a little bit can reduce the number of pages of a book.
06:52:14 <zzo38> And a traditional point is slightly smaller than a DTP point (in TeX, DTP points are called "big points").
07:29:28 -!- derrik has joined.
07:47:05 -!- CakeProphet has quit (Ping timeout: 248 seconds).
07:49:00 -!- CakeProphet has joined.
07:49:00 -!- CakeProphet has quit (Changing host).
07:49:00 -!- CakeProphet has joined.
09:05:16 -!- oerjan has quit (Quit: leaving).
09:25:59 <zzo38> I invented a chess variant called "Three Universes Chess" where you need three colors of ink to write the move notations.
09:33:42 <zzo38> My name (Black) comes near first of alphabetical order; and that is actually the reason why my father did that!!
09:33:46 -!- zzo38 has quit (Remote host closed the connection).
09:55:16 -!- ais523 has joined.
09:59:15 -!- Vorpal has joined.
10:08:57 -!- derrik has quit (Quit: i hear you).
10:13:25 -!- monqy has quit (Quit: hello).
10:23:21 -!- ais523_ has joined.
10:25:14 -!- ais523 has quit (Disconnected by services).
10:25:15 -!- ais523_ has changed nick to ais523.
10:26:02 -!- copumpkin has quit (Ping timeout: 256 seconds).
10:26:27 -!- copumpkin has joined.
10:41:10 <CakeProphet> @let morse_table=M.fromList[('a',".-"),('b',"-..."),('c',"-.-."),('d',"-.."),('e',"."),('f',"..-."),('g',"--."),('h',"...."),('i',".."),('j',".---"),('k',"-.-"),('l',".-.."),('m',"--"),('n',"-."),('o',"---"),('p',".--."),('q',"--.-"),('r',".-."),('s',"..."),('t',"-"),('u',"..-"),('v',"...-"),('w',".--"),('x',"-..-"),('y',"-.--"),('z',"--..")]
10:41:11 <lambdabot> Defined.
10:41:41 <CakeProphet> @let morse = unwords . concatMap (maybeToList.(`M.lookup` m).toLower)
10:41:41 <lambdabot> <local>:8:53:
10:41:42 <lambdabot> Couldn't match expected type `M.Map k String'
10:41:42 <lambdabot> ...
10:41:55 <CakeProphet> @let morse = unwords . concatMap (maybeToList.(`M.lookup` morse_table).toLower)
10:41:56 <lambdabot> Defined.
10:42:05 <CakeProphet> > morse "Hello, World!"
10:42:07 <lambdabot> ".... . .-.. .-.. --- .-- --- .-. .-.. -.."
10:43:38 <fizzie> I've seen people "transliterate" morse by using / for the (longer) interword gaps.
10:45:05 <fizzie> (So you could consider having a (' ', "/") in there.)
10:46:46 <CakeProphet> I think space conveys spaces effectively. >_>
10:48:52 <fizzie> But you're not differentiating between the gaps between letters and gaps between words there.
10:49:01 <fizzie> Which have a different length.
10:51:05 <fizzie> From ".... . .-.. .-.. --- .-- --- .-. .-.. -.." it's impossible to say whether you were saying "Hello, World!" or "Hell, ow... or ld?"
10:53:29 <fizzie> (It's a three-unit -- dash-length -- gap between letters, but a seven-unit gap between words.)
10:57:00 -!- ais523 has quit (Remote host closed the connection).
11:04:48 -!- ecntrk has joined.
11:04:50 -!- GreaseMonkey has quit (Quit: The Other Game).
11:12:07 -!- ecntrk has quit (Quit: Page closed).
11:19:44 -!- ais523 has joined.
11:33:59 -!- Zuu has quit (*.net *.split).
11:34:01 -!- augur has quit (*.net *.split).
11:34:02 -!- atehwa has quit (*.net *.split).
11:34:04 -!- EgoBot has quit (*.net *.split).
11:34:04 -!- shachaf has quit (*.net *.split).
11:34:05 -!- Deewiant has quit (*.net *.split).
11:34:05 -!- fungot has quit (*.net *.split).
11:34:05 -!- fizzie has quit (*.net *.split).
11:34:37 -!- EgoBot has joined.
11:35:13 -!- nooga has quit (Quit: Lost terminal).
11:37:52 -!- atehwa has joined.
11:38:39 -!- Deewiant has joined.
11:40:21 -!- ais523 has quit (Ping timeout: 255 seconds).
11:40:43 -!- augur has joined.
11:40:57 -!- ais523 has joined.
11:41:51 -!- Zuu has joined.
11:41:52 -!- Zuu has quit (Changing host).
11:41:52 -!- Zuu has joined.
11:43:30 -!- shachaf has joined.
11:43:54 -!- fizzie has joined.
11:57:53 -!- ais523_ has joined.
11:58:04 -!- ais523 has quit (Disconnected by services).
11:58:05 -!- ais523_ has changed nick to ais523.
12:08:57 -!- ais523 has quit (Ping timeout: 248 seconds).
12:10:26 -!- ais523 has joined.
12:28:41 -!- kmc has quit (Ping timeout: 248 seconds).
12:31:01 -!- ais523 has quit (Read error: Operation timed out).
12:33:55 -!- ais523 has joined.
12:38:21 -!- kmc has joined.
12:38:49 -!- derrik has joined.
12:46:16 -!- augur has quit (Remote host closed the connection).
12:58:36 -!- sllide has joined.
13:05:25 -!- boily has joined.
13:06:06 -!- ais523 has quit (Ping timeout: 240 seconds).
13:15:20 -!- augur has joined.
13:17:17 -!- ais523 has joined.
13:45:38 -!- derrik has quit (Ping timeout: 252 seconds).
13:46:15 -!- ais523_ has joined.
13:49:31 -!- derrik has joined.
13:50:56 -!- tiffany has joined.
13:53:20 -!- derrik_ has joined.
13:53:27 -!- derrik has quit (Read error: Connection reset by peer).
13:53:31 -!- derrik_ has left.
13:53:59 -!- derrik has joined.
13:54:07 -!- derrik has left.
13:54:44 -!- derrik has joined.
13:57:22 -!- ais523 has quit (Ping timeout: 260 seconds).
14:04:28 -!- sebbu2 has joined.
14:04:29 -!- sebbu2 has quit (Changing host).
14:04:29 -!- sebbu2 has joined.
14:06:39 -!- sebbu has quit (Ping timeout: 258 seconds).
14:11:23 -!- MDude has joined.
14:11:43 -!- sebbu2 has quit (*.net *.split).
14:11:45 -!- fizzie has quit (*.net *.split).
14:11:46 -!- olsner has quit (*.net *.split).
14:11:47 -!- variable has quit (*.net *.split).
14:11:48 -!- mycroftiv has quit (*.net *.split).
14:11:53 -!- sebbu2 has joined.
14:11:53 -!- sebbu2 has quit (Changing host).
14:11:54 -!- sebbu2 has joined.
14:13:05 -!- shachaf has quit (Read error: Connection reset by peer).
14:14:05 -!- derrik_ has joined.
14:14:06 -!- derrik has quit (Read error: Connection reset by peer).
14:14:24 -!- kmc has quit (Ping timeout: 240 seconds).
14:14:25 -!- MSleep has quit (Ping timeout: 240 seconds).
14:14:25 -!- Nisstyre has quit (Ping timeout: 240 seconds).
14:14:27 -!- shachaf_ has joined.
14:14:43 -!- atehwa has quit (Ping timeout: 255 seconds).
14:14:48 -!- olsner has joined.
14:14:49 -!- boily has quit (Ping timeout: 248 seconds).
14:15:04 -!- fizzie has joined.
14:15:12 -!- boily has joined.
14:16:31 -!- Nisstyre has joined.
14:18:13 -!- variable has joined.
14:18:13 -!- mycroftiv has joined.
14:18:16 -!- kmc has joined.
14:19:50 -!- atehwa has joined.
14:20:27 -!- derrik_ has quit (Quit: Reconnecting…).
14:20:44 -!- derrik has joined.
14:27:14 -!- pumpkin has joined.
14:31:12 -!- copumpkin has quit (Ping timeout: 260 seconds).
14:58:11 -!- yorick has quit (Remote host closed the connection).
14:58:33 -!- Vorpal has quit (Ping timeout: 248 seconds).
14:58:55 -!- yorick has joined.
15:12:15 -!- pumpkin has quit (Quit: Computer has gone to sleep.).
15:12:50 -!- elliott has joined.
15:16:09 <elliott> `addquote <Phantom_Hoover> No you can't fight crime in Glasgow. <Phantom_Hoover> It's like trying to get rid of the space-time continuum.
15:16:15 <HackEgo> 710) <Phantom_Hoover> No you can't fight crime in Glasgow. <Phantom_Hoover> It's like trying to get rid of the space-time continuum.
15:18:14 <elliott> 22:06:17: <Vorpal> arch has two major issues for me: multilib support is crappy. No split debug info. Still. There is work being done on the latter though.
15:18:29 <elliott> Don't Arch's libs include the debug info
15:19:05 <elliott> 22:06:48: <Deewiant> What's wrong with the multilib support
15:19:06 <elliott> Deewiant: It's an ugly special-case hack solution and only covers a small percentage of all the library packages in the repo?
15:19:52 <elliott> 22:11:32: <zzo38> Do any of the BayHac2011 Haskell programs exist?
15:19:56 <elliott> No, they're all fake
15:20:23 <elliott> 22:43:28: <Vorpal> hm based on http://www.etalabs.net/compare_libcs.html it still looks like eglibc is a better bet for most desktop systems. It is only worse than musl in a few cases, but has so much better support for lots of features.
15:20:44 <elliott> @tell Vorpal Nobody uses any of the stuff musl doesn't have except for C++ crap
15:20:44 <lambdabot> Consider it noted.
15:21:50 <elliott> @tell Vorpal Once it works with C++ and has configurable locale support it'll work with the vast majority of programs (it has locale support, just not configurable locales yet)
15:21:50 <lambdabot> Consider it noted.
15:23:34 <elliott> 23:56:38: <Vorpal> personally I would parse it into a tree then exeute the tree.
15:23:41 <elliott> Preparsing is probably slower for BF
15:24:03 <elliott> You have to load all the code in first though of course
15:25:09 <elliott> 03:00:42: <Gregor> elliott (not online; or anyone else who remembers): What was that Cygwin installer that doesn't suck like the Cygwin setup.exe?
15:25:14 <elliott> Gregor: Don't recall, try `pastelogs
15:25:23 <elliott> Gregor: I suggest using a non-Cygwin solution :P
15:28:40 <ais523_> thing I just discovered and am worried at: the internals of Sun's implementations for listeners work by using an Object[], which stores, alternately, Class objects representing what type the listeners were supposed to have when they were added (e.g. ActionListener.class), and the listeners themselves
15:29:00 <ais523_> that's just making a mockery of the type system, really
15:29:16 <ais523_> presumably, they /should/ have created an class ListenerWithClass, and made an array of those
15:30:08 <elliott> :D
15:30:17 <elliott> ais523_: java's typesystem makes a mockery of itself
15:30:22 <elliott> ais523_: at least ever since generics
15:30:40 <ais523_> the generics impl isn't blatantly stupid, though
15:30:47 <ais523_> it has many faults, but it's not indefensible
15:31:18 <elliott> ais523_: "what are covariance and contravariance" --Java's generics system
15:31:42 <ais523_> it, umm, sort-of handles those
15:31:46 <ais523_> at least, it has syntax to do so
15:31:54 <ais523_> Collection<? extends Foo>
15:31:57 <elliott> ais523_: which is why you can cast a list of cats to a list of animals and then add an element?
15:32:00 <ais523_> Collection<? super Foo>
15:32:11 <elliott> /without/ any unsafe casts?
15:32:16 <ais523_> elliott: it doesn't enforce it across casts
15:32:35 <ais523_> arguably it should; I don't think it trusts its developers to declare the variances correctly so it ignores them
15:32:46 <elliott> ais523_: I think it actually /runtime errors/ when you add that element
15:32:48 <ais523_> but at least it has syntactic support for them!
15:32:59 <elliott> and no, I'm not talking about anything with ?s
15:33:02 <elliott> I'm talking about a plain List<Cat>
15:33:11 <elliott> you can pass it, without casting, to a method expecting List<Animal>
15:33:18 <elliott> and that method can, as it should rightfully be able to, add a tortoise to it
15:33:25 <elliott> java's type system is completely broken
15:35:42 -!- copumpkin has joined.
15:39:27 -!- aloril has quit (Ping timeout: 252 seconds).
15:42:24 <ais523_> well, it's not as broken as, say, Dart's
15:42:46 <elliott> hmm, what's wrong with Dart's, I thought it was basically Java's
15:42:48 <elliott> I mean
15:42:52 <elliott> what's additionally wrong
15:43:20 <ais523_> it's checked only at runtime
15:43:32 <elliott> ais523_: that's an implementation detail
15:43:44 <ais523_> no it isn't, it's detectable from within code
15:43:58 <ais523_> e.g. you can pass objects round as variants a bunch, and then eventually use them
15:44:09 <elliott> ais523_: only if that's defined behaviour
15:44:09 <ais523_> in a way that's unsafe a small percentage of the time based on an RNG
15:44:17 <elliott> show me where the language is defined to be runtime-checked?
15:44:21 <ais523_> elliott: it is; Dart's typing is explicitly optional
15:44:28 <elliott> hmm, alright then
15:45:17 <ais523_> what's your opinion on instanceof (the operator)?
15:45:29 <elliott> breaks parametricity
15:45:46 <elliott> possibly an unhelpful statement as iirc you didn't know what that was last time i mentioned it :P
15:46:58 <elliott> ais523_: so, "I don't like it"
15:47:03 <ais523_> I'm not very good with words that are the same as other words except for the endings
15:47:15 <ais523_> I'm trying to figure out if it's inherently broken, and suspect it is, but am unsure why
15:48:39 <ais523_> meanwhile, I'm busy pondering whether I should try to translate Anarchy to OCaml more or less directly, or try to be cleverer
15:48:52 <ais523_> the thing about Anarchy is that it isn't pure, but doesn't seem fully impure either
15:48:58 <ais523_> and I'm having trouble trying to work out what exactly it is
15:48:59 <elliott> ais523_: it's broken because
15:49:03 <elliott> id :: a -> a
15:49:29 <elliott> isn't necessarily _|_, the identity function, or const _|_, or `seq` _|_
15:49:36 <elliott> (bottoms sure do mess with a language)
15:50:04 <elliott> but seriously though, it completely breaks parametricity, and that's all you need to know to realise it's completely broken
15:50:18 <ais523_> heh, that reminds me of how awkward it is to write an infinite loop in Anarchy
15:50:25 <ais523_> you can only do it by creating a data structure while you're iterating over it, in such a way that the iteration never finishes
15:51:25 <elliott> actually, wait
15:51:30 <elliott> `seq` _|_ is just const _|_
15:51:31 -!- aloril has joined.
15:51:32 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: seq`: not found
15:51:33 <elliott> so that simplifies things
15:51:50 <ais523_> hmm, that probably means that Anarchy always terminates on a real computer, as it'd run out of memory if an infinite loop ran long enough
15:52:13 <elliott> ais523_: not if you have GC
15:52:21 <elliott> you can iterate through [0..] in constant space
15:52:36 <ais523_> right; but the structure so far, AFAICT, would always be referenced
15:52:53 <ais523_> hmm, although a replacement of _ would probably be optimized out to not remember the original
15:53:50 <ais523_> (that is, if I write what would be "a = f(List.tl (a@[1]))" in OCaml, the compiler should be sensible enough to discard the old value of a meanwhile)
15:54:12 <elliott> mutable references generally don't reference values they're not currently set to
15:54:35 <ais523_> well, this isn't a :=, just an =
15:54:54 <ais523_> it's inventing a new variable called a, driving the old one out of scope in the process
15:55:16 <elliott> ais523_: oh, let as opposed to letrec + shadowing
15:55:29 <ais523_> pretty much
15:55:32 <elliott> let me be the first to say, ew
15:55:37 <ais523_> letrec gets involved eventually, which is where the loop comes from
15:55:54 <ais523_> I think you're ew-ing at the wrong thing, there
15:55:59 <ais523_> as I was trying to come up with an analogy
15:56:02 <elliott> ais523_: but I bet you couldn't letrec a = f(List.tl (a@[1])) :-)
15:56:26 <ais523_> elliott: don't you mean letrec f a = f(List.tl (a@[1]))?
15:56:36 <ais523_> actually, I'm trying to figure out what that does mentally atm
15:56:43 <ais523_> I think it's just an infinite loop
15:56:46 <elliott> ais523_: nope, I don't
15:56:50 <elliott> that's the point :)
15:57:01 <ais523_> right
15:57:09 <ais523_> oh, I see
15:57:36 <ais523_> incidentally, is it usual to write mutual recursions in OCaml that span many pages?
15:57:51 <ais523_> it feels a bit weird having to go and...and...and in order to keep the mutual recursion going
15:57:59 <elliott> ais523_: actually, I'm not sure my letrec a would work, assuming @[n] is an array access operator
15:58:08 <ais523_> @ is list append
15:58:10 <ais523_> like ++ in Haskell
15:58:10 <elliott> arrays are generally not lazy in their structure...
15:58:14 <elliott> ais523_: oh, that'd work fine then
15:58:23 <ais523_> array access is .(n)
15:58:26 <elliott> in a language which supported it, I mean
15:59:33 -!- pumpkin has joined.
15:59:33 <ais523_> > :t \a f -> f(tail ((a+f)++[1]))
15:59:34 <lambdabot> <no location info>: parse error on input `:'
15:59:37 <ais523_> :t \a f -> f(tail ((a+f)++[1]))
15:59:38 <lambdabot> Couldn't match expected type `[t1] -> t'
15:59:38 <lambdabot> against inferred type `[t1]'
15:59:38 <lambdabot> In the expression: f (tail ((a + f) ++ [1]))
15:59:48 <ais523_> :t \a f -> f(tail ((a f)++[1]))
15:59:49 <lambdabot> forall t t1. (Num t) => (([t] -> t1) -> [t]) -> ([t] -> t1) -> t1
15:59:52 <ais523_> that's what I meant
16:00:05 <ais523_> I'm not convinced it's a /useful/ expression, though ;)
16:00:16 <elliott> that's definitely wrong
16:00:17 <elliott> (a f)?
16:00:30 <elliott> :t let a = f (tail (a ++ [1])) in a
16:00:31 <lambdabot> forall t. (SimpleReflect.FromExpr [t], Num t) => [t]
16:00:35 <elliott> :t let a = ?f (tail (a ++ [1])) in a
16:00:36 <lambdabot> forall t. (Num t, ?f::[t] -> [t]) => [t]
16:00:49 -!- copumpkin has quit (Ping timeout: 258 seconds).
16:01:00 <elliott> > let f = (0:); a = f (tail (a ++ [1])) in a
16:01:03 <lambdabot> mueval-core: Time limit exceeded
16:01:09 <elliott> hmm
16:01:16 <elliott> oh
16:01:23 <elliott> > let f xs = 0 : 2 : xs; a = f (tail (a ++ [1])) in a
16:01:24 <lambdabot> [0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
16:01:28 <elliott> ais523_: useful!
16:02:01 <ais523_> elliott: I was parametrizing a on f
16:02:05 <ais523_> because I didn't know what f was
16:02:19 <ais523_> and, hmm, is there any way to make the 1 come up at all?
16:02:24 <elliott> ais523_: it was definitely wrong, sorry
16:02:29 <elliott> (a f) was completely wrong
16:02:34 <elliott> a doesn't even end up a list there
16:02:39 <ais523_> elliott: but (a f) does
16:02:42 <ais523_> I was defining (a f)
16:02:47 <elliott> no you weren't
16:02:47 <ais523_> not a
16:02:52 <ais523_> to be what I called a earlier
16:02:55 <elliott> oh
16:02:58 <elliott> you should learn to use fix...
16:03:19 <elliott> <ais523_> and, hmm, is there any way to make the 1 come up at all?
16:03:20 <elliott> possibly
16:03:25 <elliott> > let f xs = 0 : 2 : init xs; a = f (tail (a ++ [1])) in a
16:03:28 <lambdabot> mueval-core: Time limit exceeded
16:03:37 <elliott> > let f = const [1]; a = f (tail (a ++ [1])) in a
16:03:38 <lambdabot> [1]
16:03:39 <elliott> ais523_: there we go
16:03:45 <ais523_> that's not the same [1]
16:03:52 <ais523_> I mean, the one in the definition of a
16:04:06 <elliott> hmm, the trick is to make a a finite list
16:04:24 <elliott> which is quite hard
16:04:33 <elliott> because it needs to have a certain number of elements added by f
16:04:39 <elliott> and f is fixed
16:05:19 <ais523_> what's Haskell's equivalent of OCaml's "match", and the syntax?
16:05:23 <ais523_> my Haskell is really rusty
16:05:35 <ais523_> (I know how to do it with a sequence of definitions, but not in a let)
16:05:54 -!- Phantom_Hoover has joined.
16:06:05 <elliott> ais523_: let Just x = y
16:06:10 <elliott> but the equivalent of match is case
16:06:18 <elliott> also, was your Haskell /ever/ not rusty? :P
16:06:27 <ais523_> sometimes it's rustier than other times
16:06:55 <elliott> s|/ever/ not|ever /not|
16:06:56 <elliott> argh
16:07:00 <elliott> s|/not|/not/|
16:07:16 <ais523_> > let f xs = case xs of _:_:_ -> [0] : _ -> xs; a = f (tail (a ++ [1])) in a
16:07:17 <lambdabot> <no location info>: parse error on input `->'
16:07:31 <ais523_> > let f xs = case xs of _:_:_ = [0] | _ = xs; a = f (tail (a ++ [1])) in a
16:07:32 <lambdabot> <no location info>: parse error on input `='
16:07:43 <ais523_> err, can you fix my syntax?
16:07:45 <ais523_> I don't think it works anyway
16:07:47 <elliott> yes, give me a minute
16:08:03 <elliott> hmm, I was trying to think of a way to stop people using a piece of software posted on reddit without having to respond to its author/submitter
16:08:08 <elliott> then I realised that's what downvotes are for!
16:08:26 <elliott> > let f xs = case xs of _:_:_ -> [0]; _ -> xs; a = f (tail (a ++ [1])) in a
16:08:27 <lambdabot> <no location info>: parse error on input `='
16:08:31 <ais523_> I'm not certain I've downvoted anything ever
16:08:33 <elliott> wtf?
16:08:45 <elliott> ais523_: wait, why are you even using case there?
16:08:46 <ais523_> that's a weird place for the parse error
16:08:48 <elliott> just use pattern matching
16:08:56 <ais523_> elliott: giving two different definitions for f?
16:08:58 <elliott> > let f (_:_:_) = [0]; f _ = xs; a = f (tail (a ++ [1])) in a
16:08:59 <lambdabot> Not in scope: `xs'
16:09:03 <elliott> ais523_: no, giving two clauses for f
16:09:08 <elliott> > let f (_:_:_) = [0]; f xs = xs; a = f (tail (a ++ [1])) in a
16:09:09 <ais523_> > let f (_:_:_) = [0]; f xs = xs; a = f (tail (a ++ [1])) in a
16:09:11 <lambdabot> mueval-core: Time limit exceeded
16:09:13 <elliott> I know that'll fail
16:09:13 <lambdabot> mueval-core: Time limit exceeded
16:09:17 <ais523_> right
16:09:18 <elliott> because f pattern-matches on it before adding anything to it
16:11:35 <ais523_> gah, why does the terminal here need an explicit kill -WINCH $$ in order to wrap properly after resizing it?
16:11:53 <elliott> ais523_: ssh?
16:11:56 <elliott> or similar?
16:17:33 <ais523_> local
16:17:42 <elliott> ais523_: which terminal?
16:17:57 <ais523_> gnome-terminal on Scientific Linux
16:18:19 <ais523_> it's not sending bash SIGWINCH properly, for whatever reason
16:18:50 -!- ais523_ has quit (Quit: Page closed).
16:18:57 <elliott> first question, why are you us-
16:18:59 <elliott> okay
16:20:11 <Gregor> elliott: I'm not a huge fan of Cygwin, but I must admit it made it super-easy to turn Windows into an SSH-able server that only very slightly has the bitter taste of Windows.
16:20:46 <elliott> Gregor: The POSIX subsystem is sooo much nicer and has none of the bitter taste of Windows at all, but unfortunately they're dropping support in Windows 8
16:21:04 <elliott> Gregor: And admittedly only Gentoo offer a viable distribution for it... but it's really polished :P
16:21:26 <Gregor> Sux2b Gentoo, since it'll vanish in Windows 8 :P
16:22:21 <elliott> Gregor: I'm not sure Windows 8 will get much adoption from the kind of people who use the POSIX subsystem
16:23:45 -!- ais523 has joined.
16:23:55 <elliott> ais523: first question, why are you using Scientific Linux :P
16:24:01 <ais523> not through choice
16:24:11 <ais523> it's the Linux distro installed in the computer labs where we do marking
16:25:18 <Gregor> elliott: Soooooooo in other words, Cygwin is it.
16:25:20 <Gregor> Got it.
16:25:35 <elliott> Gregor: I'd just use the Gentoo installer *shrugs*
16:25:44 <elliott> Gregor: One advantage is that the resulting environment is thousands of times faster than Cygwin :P
16:25:50 <Phantom_Hoover> Scientific Linux reminds me of the Scientific People in The Stars My Destination.
16:26:04 <elliott> Gregor: Also for all the things I don't like about Emerge, being worse than Cygwin's installer isn't one of them :P
16:27:06 <Gregor> 's hard to argue with that ... and it's a good environment for compiling things w/ MingW?
16:27:13 <Gregor> Oh, and it comes with an SSH server?
16:27:21 <Gregor> (That works)
16:27:56 <elliott> Gregor: Well, it can run Windows programs, but there's not as much integration as Cygwin; I'm pretty sure you could get Makefiles working; and I'm pretty sure it does, but you could just install OpenSSH from the repos if not
16:28:07 <elliott> http://distfiles.gentoo.org/experimental/prefix/x86-interix/current/, FWIW, since it's impossible to find
16:28:09 <elliott> The PDF is very helpful
16:28:40 <elliott> The installer installs the subsystem etc. for you; it's a pretty big iso, but *shrug*
16:28:44 <elliott> Yeah, it does SSH
16:28:47 <Gregor> Hm
16:28:53 <elliott> 3.1 SSH Daemon
16:28:54 <elliott> Gentoo Prex
16:28:54 <elliott> comes with an SSH daemon, which automatically starts at boot
16:28:54 <elliott> time. If you don't want the SSH daemon to start automatically, remove the les
16:28:54 <elliott> /etc/rc2.d/S32sshd and /etc/rc2.d/K68sshd.
16:28:54 <elliott> To manually start the SSH
16:28:56 <elliott> daemon, run /etc/init.d/sshd start.
16:28:58 <elliott> Wow, pro copying
16:29:32 -!- pumpkin has changed nick to copumpkin.
16:29:52 <elliott> The tradeoff is pretty much: POSIX subsystem: Actually feels like proper UNIX, ten times faster, toolchain isn't godawful; Cygwin: Bit better integration for running Windows stuff with it, not as large a download
16:29:59 -!- Ngevd has joined.
16:30:31 <elliott> "In the current Release, an experimental build of XFCE4 is included with the
16:30:31 <elliott> DVD image."
16:30:36 <elliott> Gregor: I guess that explains why it's 3 gigs :P
16:30:42 <Gregor> lolwut
16:31:10 <Gregor> But I really need "integration for running Windows stuff with it", I really just use the environment as a shell for building things with MingW.
16:31:27 <elliott> Gregor: I didn't say it can't run Windows stuff.
16:31:32 <elliott> I'm just saying there's no cygpath or anything.
16:32:21 * Gregor starts the download.
16:32:26 <Gregor> Speed is important :P
16:32:26 <elliott> Gregor: You could install a MinGW cross-compiler from inside it :P ... but seriously, it will probably run MinGW just fine.
16:32:53 <Gregor> Having a cross-compiler is fine, even preferable, the question is just when I make foo.exe, can I run that and have its output go to the right place.
16:32:58 <elliott> Gregor: Yeah, the main advantage is that ./configure doesn't take minutes to run.
16:33:11 <ais523> elliott: it does sometimes!
16:33:14 <elliott> Because the fork() is implemented at the NT layer, not on top of Win32 :P
16:33:25 <elliott> ais523: Do you have any idea what the context is...?
16:33:29 <ais523> oh, you're talking about optimisations to make configure run faster
16:33:29 <elliott> ./configure /always/ takes minutes on Cygwin
16:33:33 <elliott> No.
16:33:33 <ais523> not the general speed of configure itself
16:33:39 <elliott> That is not what we are talking about at all.
16:33:44 <ais523> I was about to say that configure always takes minutes on cygwin as an example
16:33:48 <ais523> then I noticed it was the context
16:33:49 <elliott> heh
16:33:55 <ais523> so you're talking about making configure run faster on Windows
16:33:58 <ais523> by not using cygwin
16:34:10 <elliott> Well, I'm naming a reason the POSIX subsystem is much nicer :P
16:34:56 -!- Zuu has quit (Ping timeout: 258 seconds).
16:34:58 <elliott> Gregor: You should see the "stock" POSIX subsystem tools, the ones Microsoft ships... they're completely awful
16:35:05 <elliott> Gregor: It uses some ancient version of ksh
16:35:19 <Deewiant> Wait, Interix has an efficient fork?
16:35:26 <elliott> Deewiant: More efficient than Cygwin's
16:35:40 <elliott> I think NT can perfectly support a fork()y process model, just Win32 can't
16:35:56 <Deewiant> Why not
16:36:04 <elliott> Because it doesn't offer fork()
16:36:12 <elliott> Cygwin just spawns the process and fucks around to make it jmp to the right place
16:36:17 <Deewiant> Exactly, why doesn't it
16:36:21 <elliott> s/the process/a new process running the same stuff/
16:36:24 <Gregor> Because Windows.
16:36:26 <Deewiant> If it can be done well in Interix
16:36:26 <elliott> Deewiant: Because Microsoft don't care about fork()?
16:36:30 <Deewiant> Firk ding blast
16:36:34 <elliott> Firk ding blast
16:36:42 <elliott> (What?)
16:37:10 <elliott> Oh.
16:37:13 <elliott> That took ages to parse :P
16:37:30 <elliott> Deewiant: But yeah, Windows has been all about the threads since approximately forever.
16:37:38 <Deewiant> I'm well aware of that
16:37:51 <elliott> Deewiant: Well, Win32 was basically /ported/ to NT
16:38:03 <elliott> So whatever limitations its process model has will exist in the NT port too
16:38:18 <Deewiant> Hmm, that's true I suppose
16:39:33 <elliott> Deewiant: I mean, obviously the bits that NT replaces might make things more flexible, but I doubt the actual process model changed much beyond getting more layers, because WIn32's API is based around it
16:40:11 <elliott> Deewiant: OR, efficient COW fork() would be totally possible for Microsoft to offer, and they just don't care. It might even be a lock-in thing to stop people writing overly-portable programs.
16:41:50 <elliott> Gregor: Man, why isn't all open source documentation this good...
16:41:56 <elliott> (Reading the Gentoo Prefix/Win32 PDF :P)
16:42:02 <Gregor> Because of people like me.
16:42:03 <Gregor> That's why.
16:42:39 <elliott> Ah.
16:47:33 <elliott> Gregor: BTW, ISTR that the subsystem in Vista onwards is better than the one in XP, but I used Gentoo Prefix fine on XP so YMMV
16:56:01 -!- monqy has joined.
16:58:33 -!- ais523 has quit (Remote host closed the connection).
17:07:51 -!- ive has joined.
17:17:03 <tswett> Gregor: say, is hackiki.org supposed to be broken?
17:20:17 <elliott> First release of Kansas Lava (ittc.ku.edu)
17:20:18 <elliott> NOT MORE OF THEM
17:27:07 <Gregor> tswett: FFFFFFFFFFFFFFFUUUUUUUUUUUUU
17:27:43 -!- shachaf_ has changed nick to shachaf.
17:27:51 <Phantom_Hoover> I was into Kansas Lava before it was cool.
17:28:19 <Gregor> # ls -l bin/su
17:28:19 <Gregor> -rw------- 1 root root 33112 Dec 6 2009 bin/su dafuq
17:28:42 <Phantom_Hoover> What does the 'dafuq' mean?
17:28:43 <Gregor> Did hackiki get pwned?
17:29:46 <elliott> Gregor: Hahahahahahahaahaha
17:29:47 <Phantom_Hoover> We should never have let newsham stay.
17:31:04 <elliott> Gregor: So what's in bin/su
17:31:23 <Gregor> elliott: Idonno, but its modes are wrong and I don't think I have a canonical to compare it against.
17:31:35 <elliott> Gregor: Surely you can just get a canonical one from Debian
17:31:41 <elliott> Gregor: I'd check logfiles :P
17:31:43 <Gregor> Oh duh :P
17:32:15 <tswett> Check the audit tables!
17:34:33 <Gregor> Not pwned, just the wrong modes.
17:34:34 <Gregor> wtf.
17:34:46 <elliott> Gregor: They pwned HackEgo JUST to fuck with the modes.
17:35:00 <Gregor> # ls -l bin | grep -v '^...x'
17:35:00 <Gregor> total 4420
17:35:00 <Gregor> -rw------- 1 root root 66152 Apr 29 2008 mount
17:35:00 <Gregor> -rw------- 1 root root 33528 Jul 25 2010 ping
17:35:00 <Gregor> -rw------- 1 root root 28944 Jul 25 2010 ping6
17:35:00 <Gregor> -rw------- 1 root root 33112 Dec 6 2009 su
17:35:01 <elliott> Gregor: But srsly, if things are wrong then it could have just been mode-changed as part of a greater pwnering :P
17:35:02 <Gregor> -rw------- 1 root root 46040 Apr 29 2008 umount
17:35:05 <Gregor> elliott: *Hackiki
17:35:08 <elliott> ...yeaaaaaaah.
17:35:10 <Ngevd> Is Whenever Turing-complete?
17:35:24 <elliott> Ngevd: I think so
17:35:30 <elliott> you basically emulate serial execution
17:35:37 <tswett> Are HackEgo and Hackiki connected?
17:35:41 <Ngevd> That means nothing to me
17:35:56 <tswett> [BDarn this connection that makes me ask questions thirty seconds after they've been answered.
17:36:45 <tswett> How does irssi even *suspect* that I've typed in an escape character followed by [B?
17:37:16 <elliott> <tswett> How does irssi even *suspect* that I've typed in an escape character followed by [B?
17:37:18 <elliott> tswett: cursor chars
17:37:22 <elliott> the connection is too laggy
17:37:27 <elliott> and the timeout happened before the [ came in after the esc
17:37:49 <tswett> So the esc came in and then it was a long time before the [ came in?
17:38:22 <elliott> tswett: Where a long term means more than like 50 ms
17:38:26 <elliott> s/term/time/
17:38:53 <tswett> Surely if I press the escape key, wait a moment, and type [B, the same thing out to happen.
17:38:59 <elliott> Yes.
17:39:21 <tswett> But it doesn't.
17:39:27 <tswett> s/out/ought/
17:39:56 <elliott> *shrug*
17:40:11 <tswett> Perhaps my terminal is holding the escape character in escrow before sending it out.
17:40:47 <Gregor> My logging is insufficient to figure out how this happened :P
17:41:23 <elliott> Gregor: I'm so glad I never used Hackiki right now :P
17:41:31 <Gregor> elliott: Nothing is lost *shrugs*
17:45:30 <tswett> Whelp. I now have a database. I'm so proud.
17:46:00 <Gregor> LOLOLOLDISCOVERY
17:46:04 <Gregor> fdupes effs up modes.
17:46:14 -!- Vorpal has joined.
17:46:15 -!- Vorpal has quit (Changing host).
17:46:15 -!- Vorpal has joined.
17:46:26 <tswett> It has three tables in it, each with one row! Granted, two of the tables have only dummy data in them...
17:47:16 <elliott> tswett: Enjoy your pain
17:47:22 <elliott> Gregor: Nice
17:47:27 <tswett> elliott: the pain of... having a database?
17:47:33 <elliott> tswett: The pain of using one
17:47:36 <tswett> Ah.
17:48:01 <tswett> How does the pain of using a SQL database compare to the pain of using Perl?
17:49:55 <Gregor> GOD that's lame.
17:49:57 <Gregor> DAMNED FDUPES
17:50:21 <tswett> Gregor: I wish I could swear like you.
17:50:40 <Ngevd> But tswett lacks the ability to speak
17:51:01 <Gregor> Tragic, really.
17:51:15 <Gregor> Ohwell, luckily I have backups of everything so this won't take TOO long to fix I hope.
17:51:33 <tswett> ...
17:51:35 <tswett> }:(
17:52:44 -!- ais523 has joined.
17:53:05 <elliott> Gregor discovers not to run untrusted code on / :P
17:53:18 <Gregor> elliott: No, I discovered not to trust fdupes :P
17:53:23 <elliott> Or that
17:53:29 <elliott> Gregor discovers not to trust by default :P
17:53:34 <Gregor> I needed that disk space! :(
17:53:44 <elliott> Gregor: Doesn't fdupes use hard links
17:53:45 <ais523> what happened?
17:53:53 <Gregor> elliott: Yeah.
17:53:53 <elliott> Gregor: Hard links for anything mutable are an awful terrible idea
17:53:58 <Gregor> elliott: I don't run it over /
17:54:04 <Gregor> elliott: I run it over /bin, /lib and /usr
17:54:06 <elliott> Gregor: Since tools are completely inconsistent about breaking or not breaking the link :P
17:54:07 <elliott> Fair enough
17:54:11 <elliott> But I bet dpkg can break it
17:54:24 <Gregor> Obviously this plan did not fully work out as I had hoped :P
17:54:34 * elliott wouldn't touch anything dpkg manages, anyway.
17:54:42 <elliott> ais523: Hackiki broke
17:54:46 <tswett> With hard links, can you have a file with two different sets of permissions and everything?
17:55:04 <elliott> tswett: Uhh... no.
17:55:06 <ais523> I think the permissions are hardlinked too
17:55:16 <ais523> as in, they're on the inode not the directory
17:55:17 <tswett> Two different paths and nothing else?
17:55:25 <ais523> two different paths on the same fs
17:55:32 <elliott> Hard links point to inodes, which contain everything but the name in this context.
17:55:43 -!- derrik has quit (Quit: quitter).
17:55:54 * tswett nods.
17:56:07 -!- CakeProphet has quit (Read error: Operation timed out).
17:58:57 -!- Ngevd has quit (Ping timeout: 258 seconds).
17:59:59 <Gregor> tswett: To answer your original question, HACKIKI WAS NEVER DOWN EVER.
18:00:56 <tswett> Gregor: YES SIR.
18:01:12 <Gregor> elliott: My backups are so great, looka how fast I fixed that shiiii!
18:01:21 <elliott> That shiiii is so fixed.
18:01:43 <Gregor> I fixed the shit out of that shit!
18:02:18 <tswett> Gregor: wait, what happened?
18:02:44 <Gregor> tswett: I ran fdupes, that effed up some modes, but because Hackiki caches I didn't notice until those caches expired.
18:02:44 <Phantom_Hoover> He fixed a horse race.
18:03:05 <tswett> Gregor: I see. So what was the problem that this caused?
18:03:24 <Gregor> tswett: Hackiki's chroot couldn't run anything :P
18:03:35 <Gregor> tswett: Oh, the problem fdupes solved?
18:03:38 <Gregor> tswett: Lack of disk space.
18:03:42 <tswett> Gregor: huh. How was it able to continue running when the chroot couldn't run anything?
18:03:53 <tswett> I mean, I would expect that to cause Hackiki to go down.
18:03:55 <elliott> Because the httpd is from outside.
18:03:57 <Gregor> tswett: It already was running, and didn't need to run anything new to read a cache.
18:04:02 <elliott> And/or still running.
18:04:25 <tswett> Gregor: I see. So this was mostly a theoretical problem; it didn't cause any actual trouble.
18:04:52 <Gregor> tswett: ... <tswett> Gregor: say, is hackiki.org supposed to be broken?
18:05:17 <tswett> Gregor: well, yes. I said that because I noticed that Hackiki was running perfectly fine, and I suspected that maybe it was supposed to be broken.
18:05:54 <Gregor> ... I've erased history too well.
18:06:40 <elliott> Gregor discovers the wonders of communicating with tswett :P
18:06:57 * tswett preens.
18:08:17 <tswett> Gregor: so, how does this grinworthy software work? There's a repository, and a sandbox with a copy of the head revision, and programs run in the sandbox, and, if they have write permissions, the sandbox is then committed back to the repository?
18:08:28 <elliott> Grinworthy is so not a word.
18:08:36 <tswett> It is extremely a word.
18:08:39 <Gregor> tswett: More or less.
18:09:01 <elliott> Gregor: Does it use UMLBox yet?
18:09:03 <tswett> Gregor: truly you have a dizzying intellect.
18:09:09 <Gregor> elliott: Nope :P
18:09:25 <Gregor> elliott: It will ... sooooooooooooooooooooooooooooooooon
18:09:27 <elliott> Gregor: How does Hackiki prevent injecting arbitrary badHTML, anyway
18:09:34 <Gregor> elliott: It doesn't.
18:09:37 <elliott> Neat
18:09:39 <Gregor> elliott: Welllllllllll
18:09:44 <Gregor> elliott: To be fair, that's not quite true.
18:09:49 <elliott> I have heard quite enough :P ...but go on
18:10:06 <Gregor> elliott: Hackiki ITSELF doesn't, however the template Hackiki filesystem only lets you write scripts for the Wiki formatter, which only allows wikisyntax.
18:10:32 <elliott> But custom formatters is like twenty to ninety percent of the appeal.
18:10:37 <Gregor> elliott: Why is Gentoo Prefix Interix Wtferix 3 giggerixes >_<
18:10:49 <elliott> Gregor: Doesn't take long to download in a civilised country
18:10:52 <Phantom_Hoover> Oh god, I was just slightly puzzled by the idea of a function which doesn't map numbers to numbers.
18:10:55 <Phantom_Hoover> WHAT HAVE I BECOME
18:10:56 <elliott> Gregor: I think there might be better mirrors you could get it from
18:10:59 <Gregor> elliott: It's downloading at 800KB/s
18:11:05 <elliott> Shrug
18:11:10 <Gregor> NOT - FAST - ENOUGH
18:11:17 <elliott> Gregor: It should come in source form :)
18:11:35 <Gregor> Welp, I'm tired of downloading, I'm going with Cygwin cuz it's better lol.
18:11:42 -!- Darth_Cliche has joined.
18:11:49 <elliott> Gregor: For some values of better lol
18:11:59 <elliott> (Equal to not)
18:12:42 <Phantom_Hoover> "1) The idea that any subject is inherently more rigorous/challenging than another is bollocks."
18:12:52 <Phantom_Hoover> — person in a Guardian comment thread.
18:13:01 <elliott> Gregor: Anyway, it's probably that big because it also contains the installers for the subsystem itself that it runs automatically *shrug*
18:13:08 <elliott> That's the price of convenience
18:13:09 <Phantom_Hoover> I... guess it's not particularly surprising that it's a hotbed of idiocy.
18:13:17 <Gregor> Ohhhh yeah
18:14:26 <tswett> Hackiki would probably be rather simpler if pages were Lua files rather than arbitrary executables.
18:14:49 <elliott> Also more terrible
18:14:54 <tswett> Yep.
18:15:05 <elliott> Especially since you'd have to use Lua
18:15:20 <tswett> Speaking of terrible, I'm working on another terrible codenomic.
18:15:23 -!- Ngevd has joined.
18:15:33 <Phantom_Hoover> Codenomic?
18:15:35 <Ngevd> Hello!
18:16:23 <tswett> I've installed Apache and Postgres and, you know, done stuff. Next is the actual *stuff* part of the nomic.
18:16:47 <tswett> Phantom_Hoover: yeah. Essentially, a computer game whose source code can be changed by the players at runtime.
18:16:56 <Phantom_Hoover> Ah.
18:17:03 <elliott> tswett: Two bad software choices!
18:17:07 <elliott> Good start.
18:17:12 <Phantom_Hoover> Sounds exceptionally tricky to get right.
18:17:33 <Ngevd> I seem to remember someone discussing something like this much earlier....?
18:17:36 <elliott> Phantom_Hoover: Codenomics have worked perfectly well in the past; PerlNomic was the most prominent and lasted for years and with high activity.
18:17:52 -!- zzo38 has joined.
18:18:31 <tswett> elliott: thank you.
18:18:34 <Phantom_Hoover> Oh, it's a wiki-style thing with accessible code?
18:18:41 <tswett> Phantom_Hoover: more or less, yeah.
18:18:42 <elliott> Phantom_Hoover: No, it's a game.
18:18:50 <elliott> Unless you mean Hackiki.
18:19:01 <Ngevd> It's like single player Hackiki in a way(?)
18:19:10 <tswett> elliott: what would you advocate instead of Postgres? The brilliant DBMS known as "files"?
18:19:10 <Phantom_Hoover> ???
18:19:15 <tswett> Ngevd: yes, but with multiple players.
18:19:24 <elliott> tswett: I'd question why you think you need one, or what you're doing, or anything
18:19:32 <tswett> Ngevd: also, there's a superuser, and the players can, with consensus, run stuff as the superuser.
18:19:33 <Phantom_Hoover> It's like multiplayer single-player Hackiki.
18:19:33 <elliott> Postgres is the best SQL DB though
18:20:09 <ais523> elliott: I don't believe "lasted for years and with high activity" on PerlNomic
18:20:13 <ais523> it lasted for years but with very low activity
18:20:17 <elliott> ais523: Those were separate statements
18:20:20 <zzo38> I have used SQLite but you can use whatever works best for your situation
18:20:24 <ais523> hmm…
18:20:24 <elliott> ais523: It had high activity when it was an Agoran officer
18:20:27 <elliott> That sort of period
18:20:27 <Ngevd> `addquote <Ngevd> It's like single player Hackiki in a way(?) <tswett> Ngevd: yes, but with multiple players.
18:20:34 <HackEgo> 711) <Ngevd> It's like single player Hackiki in a way(?) <tswett> Ngevd: yes, but with multiple players.
18:20:36 <ais523> elliott: even higher when it was Slashdotted
18:20:38 <elliott> ais523: And PerlNomic-related proposals were regularly passing
18:20:41 <Phantom_Hoover> How did PerlNomic work, normally?
18:20:44 <elliott> ais523: and yes, but I wasn't around then
18:20:46 <Vorpal> elliott, hm, if you want ACID (to disk) but don't particularly want SQL, what options do you have, apart from writing it yourself, which can be rather tricky.
18:20:46 <lambdabot> Vorpal: You have 2 new messages. '/msg lambdabot @messages' to read them.
18:20:57 <elliott> Phantom_Hoover: it was a bunch of cgi scripts, one of which let you add a proposal (a piece of perl code)
18:21:03 <elliott> Phantom_Hoover: another one let players vote on those proposals
18:21:04 <ais523> Phantom_Hoover: basically, proposals were Perl scripts, enough votes and it'd be run on the server as root
18:21:06 <elliott> when one passed, it was executed
18:21:19 <elliott> and other cgi scripts added through this mechanism added various subgame mechanisms that added to a player's score, etc.
18:21:21 <ais523> or at least, with enough perms to affect the whole of the nomic
18:21:30 <ais523> and there were scripts to help write proposals too
18:21:31 <elliott> ais523: not root :P
18:21:39 <ais523> root was Normish
18:21:49 <Vorpal> <lambdabot> elliott said 3h 8s ago: Nobody uses any of the stuff musl doesn't have except for C++ crap <-- cfunge wants some of the C99 math functions, far from all required. Whatever FIXP, FPDP and FPSP requires.
18:22:03 <elliott> cfunge also wants _posix_poopadvise and uses inline asm
18:22:03 <ais523> which had similar activity to PerlNomic while it was a player of Agora, but didn't last as long
18:22:05 <Vorpal> hm TURT might use sin/cos too
18:22:10 <ais523> it doesn't have sin/cos?
18:22:17 <tswett> I think Normish got onto a couple of spam blacklists. }:P
18:22:18 <elliott> sin is not C99.
18:22:19 <Vorpal> ais523, sinl
18:22:20 <Vorpal> long
18:22:27 <Vorpal> err long double*
18:22:41 <Vorpal> elliott, no longer inline asm, modern gcc actually compiles the intrinsic for it sanely
18:22:46 <ais523> elliott: I interpreted Vorpal as "C99 functions, also sin and cos"
18:22:52 <elliott> Vorpal: http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/math.h;h=677248287ae99470346db96e5d64926ed12b7645;hb=HEAD
18:23:09 <Phantom_Hoover> musl?
18:23:15 <elliott> musl just doesn't have complete C99 math support.
18:23:25 <elliott> Phantom_Hoover: jfgi
18:23:27 <Vorpal> elliott, the only reason I used inline asm was that using the gcc intrinsic produced terrible code in then modern gcc versions
18:23:34 <Phantom_Hoover> Also wait, people have used GCC inline assembly and come out sane?
18:23:47 <elliott> gcc inline assembly is easy
18:23:47 <Vorpal> Phantom_Hoover, well, people claim I'm sane
18:24:02 <Phantom_Hoover> Vorpal, no, you're so Vorpid it hurts.
18:24:04 <Gregor> elliott: Why does Windows have to be so terrible?
18:24:11 <elliott> Gregor: Why are you using Windows
18:24:17 <elliott> Anyway, it's because you're not using the POSIX subsystem
18:24:37 <Gregor> elliott: I just wanted a "real" Windows machine to not cross-compile on and not test with WINE :P
18:24:38 <Vorpal> elliott, I just played the Trine 2 beta. Quite promising I have to say. I look forward to the full version of the game being released.
18:24:41 <tswett> So, yeah. What I need to toss into the nomic blender now is... pages. Stuff that you see when you go to zbasu.net, and which interacts with the database and stuff.
18:24:54 <Vorpal> elliott, did you play the first Trine? I forgot
18:24:55 <elliott> Lemme know when you give up :P
18:25:04 <elliott> Vorpal: I haven't played any of the Bundle games yet
18:25:05 <tswett> elliott: on the codenomic thing?
18:25:08 <elliott> Well
18:25:12 <elliott> Apart from the ones I have played
18:25:14 <elliott> tswett: Yep!
18:25:22 <elliott> Vorpal: Oh, I didn't even get that bundle
18:25:24 <Phantom_Hoover> elliott, i.e. Voxatron which isn't terribly good.
18:25:24 <tswett> elliott: I haven't given up on it in the last two years. }:P
18:25:25 <Vorpal> oh
18:25:27 <Phantom_Hoover> wait dude
18:25:28 <Phantom_Hoover> you
18:25:29 <Vorpal> elliott, okay.
18:25:29 <Phantom_Hoover> didn't get
18:25:31 <Phantom_Hoover> spacechem
18:25:46 <elliott> tswett: It's made this little progress in the last two years?
18:25:50 <elliott> tswett: Let me know when you give up in fifteen
18:25:53 <Vorpal> elliott, Trine is really fun. Don't even bother trying it on intel graphics though
18:26:28 <Gregor> <eboyjr> I'm sure robots will become good conversationalists <inimino> probably not before they become good barbers, though
18:26:31 <tswett> Perl has a trusted mode, right? And it ought to be easy to write web scripts in Perl, and for Perl to access the database... right?
18:27:01 <elliott> Perl has taints, which are useless.
18:27:04 <elliott> If that's what you mean.
18:27:07 <Vorpal> I have to say I never seen a game with so much bloom as Trine 2 though. Trine 1 had a lot of it too, but even more in Trine 2. Works within the setting though.
18:27:27 <Vorpal> hm may be HDR rather than bloom, not sure
18:27:41 <Phantom_Hoover> <elliott> tswett: It's made this little progress in the last two years?
18:27:41 <Phantom_Hoover> <elliott> tswett: Let me know when you give up in fifteen
18:28:05 <Phantom_Hoover> Also let me tell you about this amazing ElliottCraft thing, also how it will run on a new thing called @.
18:28:41 <elliott> Phantom_Hoover: I have never once claimed @ is an actively developed project, and I've already pointed people to the various bugs in other packages Elliottcraft is blocked on *shrugs*
18:28:48 <elliott> Fix those bugs or quit complaining
18:29:09 <Phantom_Hoover> <elliott> What is a good-natured jibe I have not heard of this?
18:29:50 <elliott> Usually good-natured jibes aren't things you've actively whined about
18:30:06 <Phantom_Hoover> When have I ever whined about EC or @ development?
18:30:34 <elliott> lol
18:30:43 <Gregor> elliott: OMG I'm only at 22% downloaded
18:30:47 <Gregor> elliott: WHY ARE YOU DOING THIS TO ME
18:30:59 <elliott> Gregor: America sux
18:31:21 <Gregor> elliott: GODDDDDDDDDD BLESS AMERRRRRRICAAAAAAAAAAAAAAAAAAAA, LAAAAAAAAAAAAAAND OF PEOPLE WHO PRONOUNCE THEIR ARRRRRRRRRRRRRRRRS!
18:31:31 <Phantom_Hoover> *cough*
18:32:00 <Ngevd> Phantom_Hoover wishes to remind you that Canadians pronounce their r's too
18:34:49 <Ngevd> :P
18:34:56 <Phantom_Hoover> *:R
18:35:19 <Ngevd> Touch
18:35:32 <Phantom_Hoover> *Tourché.
18:36:41 <elliott> Deewiant: omg great news! I gotta write my own lib, ansi-terminal won't work for the output end of things and I need input support too
18:36:47 <elliott> ~fuck~yes~
18:38:45 <Ngevd> Wow, someone on the IWC forum likes my MSPAFA
18:39:26 <Gregor> Canadians pronounce their R's so hard they pronounce them even when there are no R's!
18:39:35 <elliott> Vorpal: And sigh, you were right about moving above the top of the screen
18:39:43 <Ngevd> Grergror
18:41:26 <Ngevd> elliott, is curses at all relevant?
18:41:40 <elliott> Ngevd: Yes, and unusable for my purposes
18:41:45 <Ngevd> Okay
18:42:05 <Ngevd> I only pretend to be an even half-way decent programmer
18:42:31 <Gregor> I didn't realize you even pretended BA-DUM TISH
18:44:13 <Ngevd> :R
18:48:11 <elliott> How can I get the width and height of the current X screen from the terminal?
18:52:19 <Gregor> elliott: xrandr I suppose?
18:52:24 <Gregor> Probably a better way.
18:52:26 <elliott> Gregor: Ahh, thanks
18:52:32 <elliott> Gregor: Hey, guess what I don't have installed :P
18:52:37 <Gregor> Hyuk
18:52:49 <Gregor> xdpyinfo?
18:53:18 <Ngevd> Python 3.2?
18:53:19 <Ngevd> Fortran?
18:53:19 <Ngevd> Windows Vista?
18:53:29 <Gregor> AT&T Unix System V?
18:53:36 <Gregor> But actually xdpyinfo was a suggestion.
18:55:45 <Gregor> Speaking of xdpyinfo, when I did a fresh install of Debian on my shiny new machine for some reason it thought my DPI was 350, resulting in lolfontsize.
18:56:59 <elliott> Gregor: Open an rxvt or xterm (xfce terminal won't work, probably not gnome terminal either) and run this Haskell program (no dependencies): http://sprunge.us/WeDa
18:57:02 <elliott> Trust me, it's worth it :P
18:57:08 <Gregor> Uhh
18:57:13 <elliott> Warning: Not for epileptics
18:57:19 <Gregor> *whew*, don't have Haskell at work.
18:57:36 <elliott> Dammit!
18:57:45 <elliott> You're on x86-64 Linux right? ;D
18:58:06 <Gregor> ... yessssssssssss
18:58:55 <elliott> Gregor: Dammit, I can't statically link this :P
18:59:07 <Gregor> Muahahahaha
18:59:49 <elliott> Gregor: But I _CAN_ rewrite it as a Python script!
19:01:34 -!- oerjan has joined.
19:01:52 <Ngevd> Hello oerjan
19:02:10 <oerjan> evening all
19:02:13 <twice11> elliott: On gnome-terminal, the windows gets small, then it grows, shrinks again, and then a lot of strange character sequences (meant as escape codes) appear on the screen, with the window still small.
19:02:20 <elliott> twice11: Yep :P
19:02:33 <elliott> That's what happens in Xfce too
19:02:41 <twice11> It seems to dislike negative numbers.
19:03:50 <Gregor> elliott: Hahaha, I'm making you write Python.
19:04:24 <twice11> Throw in an abs application on the "let j" line and no escape-spam appears in the window.
19:05:07 <elliott> twice11: I think negative numbers might be what make it go so haywire on rxvt
19:05:56 <elliott> Gregor: Python seems to ruin the effect... maybe it's not fast enough :P
19:06:05 <Gregor> Teehee
19:07:21 <twice11> elliott: On rxvt, the effect does not change with/without abs.
19:07:27 <twice11> It seems to ignore the sign.
19:07:40 <elliott> Hmm, weird.
19:08:03 <elliott> Does it work on your machine too? Dunno if it's just my WM or whatever. i.e. the pseudo-duplicated window effect and the like
19:08:04 <twice11> And my xterm does nothing.
19:08:26 <twice11> I get no duplicate window effect.
19:09:08 <twice11> I get a periodically shrinking/growing and oscillating window with rxvt, no effect with xterm, just grow/shrink with gnome terminal.
19:09:13 <elliott> Huh
19:09:18 <elliott> I'm using the xterm codes, so it's weird that it does nothing
19:09:27 <twice11> Probably a security feature.
19:10:37 <elliott> Or a non-annoyance feature :P
19:10:37 <twice11> Yes, security, indeed.
19:10:50 <twice11> "Allow window ops" in Ctrl-Rightclick.
19:11:06 <elliott> Can't say I can think of a valid use for them :P
19:11:27 <twice11> elliott: There is a valid use.
19:11:39 <elliott> Ooh, I could even spawn more xterms; I'm thinking of something that spews audio to /dev/dsp or whatever, while bar-visualising it using an array of resizing xterms :-D
19:11:53 <twice11> In the times where "gui, noun: 10 xterms and a background image" was true,
19:11:57 <elliott> You could combine that with colour codes!
19:12:06 <twice11> You could position pop-up windows where they belong.
19:12:13 <elliott> Ha, wow.
19:12:15 <elliott> Did people actually do that?
19:12:26 <twice11> i.e. you could make a multi-window application without linking X11.
19:12:26 <elliott> I thought xmessage was ancient.
19:12:34 <elliott> Oh, pre-X terminal multiplexing
19:12:49 <twice11> No, X terminal multiplexing,
19:12:55 <elliott> Oh, without linking in, right
19:12:56 <twice11> but without depending on libX11 yourself.
19:13:08 <elliott> You could just speak the X wire protocol :P
19:13:17 <twice11> I'm too young to know whether someone used it.
19:13:30 <twice11> GNOME ignores the position, it just uses the size.
19:15:02 <twice11> And the reason I get no duplicate window effects or other strange things is most likely that I am using a compositing system.
19:15:48 <elliott> twice11: Me too (xfwm4 with compositing enabled)
19:15:51 <elliott> Although no fancy effects.
19:15:54 <elliott> That's why it was surprising.
19:16:01 <elliott> I guess my LCD refresh rate is just too low.
19:16:16 <twice11> I run gnome-shell (gnome 3.0), and the stuff looks really smooth here.
19:16:53 <twice11> btw: gnome terminal interprets size 0 as "default/original size"
19:17:22 <elliott> twice11: My condolences re: gnome-shell
19:17:29 <elliott> Although it's actually Mutter doing the window management duties there.
19:18:55 <twice11> Is mutter a module of gnome-shell? I don't see a separate window manager process here.
19:19:45 <elliott> Hmm
19:20:04 <twice11> In gnome fallback mode, I think there is mutter. And if mutter crashes, you get metacity.
19:20:15 <elliott> twice11: Maybe you're running COmpiz instead or something, or the executable is called something else
19:20:18 <elliott> The Mutter window manager can function as standalone window manager application for GNOME-like desktops, and serves as the primary window manager for the GNOME Shell desktop,[4] which is an integral part of the GNOME 3.0 release. Mutter is extensible with plugins and supports numerous visual effects.
19:20:20 <twice11> You might call that a "cheat code"...
19:20:36 <elliott> If only the fallback mode had a usable panel :P
19:20:48 <twice11> The standard mode has neither.
19:21:47 <elliott> Neither what?
19:21:55 <twice11> Bad grammar.
19:22:06 <twice11> I meant "The standard mode doesn't have one, too".
19:22:06 <elliott> Oh, hasn't either
19:22:31 <twice11> Yeah, hasn't either would have been correct.
19:23:42 <Phantom_Hoover> Is Gnome 3.0 all that terrible?
19:23:46 <twice11> Looks like mutter runs as dynamic library inside gnome-shell.
19:24:08 <elliott> Phantom_Hoover: Yes.
19:24:26 <twice11> Gnome 3.0 looks nice, and is quite usable - but it abandons some concepts we get really used to.
19:24:37 <twice11> One of them being a customizable panel with applets.
19:24:40 <elliott> Well, I haven't run gnome-shell for quite a long while, but I used it for about a day a few months ago and it was intolerable; reviews don't appear to imply it's improved at all
19:24:45 <Phantom_Hoover> Are we talking "the buttons are all precisely the wrong shade of blue" terrible or "help where are the buttons" terrible?
19:25:05 <elliott> Phantom_Hoover: We're talking "unusable application starting/window management interface"
19:25:26 <elliott> Honestly, I'm not even tied to the panel + windows model, I just don't want to replace it with something /worse/. If GNOME 3 came out with a tiling WM I'd give it a long while before deciding it sucked :P
19:26:06 <Phantom_Hoover> What are the later reasons for it sucking?
19:26:13 <twice11> Alt+F1 i-c-e-w-Enter is not really that bad to start an application (yeah, I'm using debian)
19:26:34 <elliott> Phantom_Hoover: What?
19:26:49 <elliott> twice11: That's what dmenu is for :P
19:26:54 <Phantom_Hoover> If you'd give it a long while, there are other reasons for it sucking which are more subtle.
19:27:17 <twice11> elliott: I had configured the quick-launch bar in GNOME 2.x, but never got used to using it.
19:27:39 <elliott> Phantom_Hoover: Your last two lines have been uninterpretable, sorry
19:27:59 <Phantom_Hoover> "If GNOME 3 came out with a tiling WM I'd give it a long while before deciding it sucked :P"
19:28:48 <elliott> As in "a tiling WM could possibly be a major improvement on the previous GNOME 2 model, so I would give it a fair chance before making any judgement".
19:29:05 <elliott> Whereas I could tell gnome-shell was fundamentally broken in a day.
19:29:21 <Phantom_Hoover> Yeah, but why would your judgement still be that it sucked?
19:30:22 <elliott> I didn't imply that.
19:30:34 <Phantom_Hoover> Oh, right, ambiguity.
19:30:57 <elliott> Neat, GNOME 3.4 is dropping Linux support
19:31:04 <elliott> Very smart of them
19:31:14 <elliott> Because Poettering told them to!
19:31:15 <twice11> BSD only?
19:31:30 <twice11> Sounds like news from the onion, if you ask me.
19:31:40 <Phantom_Hoover> Zwuh?
19:31:42 <elliott> Erm
19:31:44 <elliott> X-D
19:31:46 <elliott> Dropping non-Linux support
19:31:58 <elliott> The other way around would be particularly amazing news :P
19:32:10 <Phantom_Hoover> So they're not spiting everyone because Ubuntu switched to Unity?
19:32:39 <elliott> X-D
19:32:47 <elliott> "Fuck you, we're leaving! ANNOUNCING: GNOME 3.4 for Windows!"
19:33:35 <Ngevd> Who the hell bothers with cheating at the International Maths Olympiad?
19:34:11 <Ngevd> By which I mean North Korea
19:34:18 <Ngevd> But why!?
19:35:38 <Ngevd> It's pointless!
19:35:43 <Ngevd> And rather sad!Q
19:35:55 <Ngevd> That 'Q' is symbolic of my pity.
19:35:59 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
19:36:24 <Phantom_Hoover> WTF, John McCarthy was the Lisp guy???????????????
19:36:36 -!- Vorpal has joined.
19:36:49 <Ngevd> It wasn't Joe
19:37:03 <Phantom_Hoover> All this time I've been wondering why we were mourning the inventor of McCarthyism.
19:37:18 <Ngevd> He died in '57
19:37:32 <elliott> Phantom_Hoover: .........
19:37:52 <Phantom_Hoover> I... have to go and... do... things...
19:37:52 -!- Phantom_Hoover has quit (Quit: Leaving).
19:38:20 <elliott> For reference, Joseph McCarthy would have been 103 had he died this year.
19:38:43 <Ngevd> Ironically, he was killed by Fascists
19:38:46 <Ngevd> ;)
19:39:58 -!- Phantom_Hoover has joined.
19:39:59 <Ngevd> For the benefit of future civilizations: he died probably due to alcoholism.
19:40:00 <elliott> "Reactions to GNOME Shell have also not been universally negative." --Wikipedia
19:40:02 <elliott> Well that's good then!
19:40:19 <Phantom_Hoover> Please tell me it just leaves off there.
19:40:25 <elliott> For the benefit of future civilizations: Ngevd is making a quaint 21st century joke; Joseph McCarthy is the President of Europe.
19:40:37 <elliott> Phantom_Hoover: No :P
19:40:50 <elliott> Ngevd: We really have to destroy these logs before civilisation falls.
19:40:58 <elliott> For the benefit of future civilizations: So that you don't discover our horrible secret.
19:41:29 <Phantom_Hoover> The Terrible Secret of #esoteric.
19:42:05 <Phantom_Hoover> For the benefit of future civilisations (shame on you, elliott and Ngevd): that was a reference to Shakespeare.
19:42:08 <elliott> I am the /kicker robot. Kicking is the answer. Kicking will protect you from the Terrible Secret of #esoteric.
19:42:13 <Ngevd> The #esoteric Secret of Terrible
19:42:24 <Ngevd> I look forward to GNOME 4
19:42:26 -!- ive has quit (Ping timeout: 276 seconds).
19:42:39 <twice11> I don't. I look forward to GNOME 3.6 or so.
19:42:52 <twice11> GNOME with a new major version is known to be major breakage.
19:43:07 <Ngevd> Meh, I use Unity
19:43:15 <Ngevd> Because I am masochist.
19:43:30 <olsner> #esoteric has a terrible secret?
19:43:36 <elliott> twice11: Known for all two versions it's happened? :P
19:43:41 <Ngevd> olsner, shh
19:43:47 <elliott> OK, I suppose GNOME 1.0 happened, but I'm pretty sure GNOME 1 was never not awful.
19:43:52 <olsner> I think it's a Terrific Secret!
19:44:10 <twice11> Yeah, statistics with 2 data points is science. Statistics with one data point is crap.
19:44:27 <Ngevd> Statistics with three data points is overkill.
19:44:38 <olsner> statistics with data is overkill
19:44:40 <elliott> `addquote <twice11> Yeah, statistics with 2 data points is science. Statistics with one data point is crap.
19:44:42 <HackEgo> 712) <twice11> Yeah, statistics with 2 data points is science. Statistics with one data point is crap.
19:44:46 <twice11> You measure a third point if you need an error estimate.
19:44:50 <elliott> Darn, Ngevd and olsner made it better before I added it.
19:44:55 <elliott> `delquote 712
19:44:58 <HackEgo> ​*poof* <twice11> Yeah, statistics with 2 data points is science. Statistics with one data point is crap.
19:45:03 <elliott> `addquote <twice11> Yeah, statistics with 2 data points is science. Statistics with one data point is crap. <twice11> You measure a third point if you need an error estimate.
19:45:04 <elliott> There we go :P
19:45:05 <HackEgo> 712) <twice11> Yeah, statistics with 2 data points is science. Statistics with one data point is crap. <twice11> You measure a third point if you need an error estimate.
19:45:47 <elliott> twice11: So is your name 22 and you just have to mangle it everywhere because of the leading digit? :P
19:46:12 <twice11> No, my name covers a terrible secret ;)
19:46:35 <twice11> Or a terrific secret, perhaps.
19:46:36 <Ngevd> But not THE Terrible Secret
19:46:54 <Ngevd> (it's 1111)
19:47:00 <elliott> Did you... have two 11th birthdays?
19:47:17 <Ngevd> Possible, if he's 47
19:47:34 <Ngevd> Or older
19:47:36 <olsner> today, as every day, is his elevenhundredeleventieth birthday
19:47:49 <twice11> Ngevd: Don't tell everyone the number combination of my suitcase!
19:47:53 <elliott> Like, maybe twice11 was born at exactly midnight and blah blah blah DST.
19:48:07 <Ngevd> Or maybe he was born on February the 30th
19:48:17 <olsner> he will be born in 4 days, on 11/11 -11
19:49:18 <twice11> That nick has been chosen 13 years ago, when freaks still knew CP437 with graphic symbols for control characters and is correctly spelled twice#11
19:49:29 <Ngevd> Hey, there's a new esolang
19:49:40 <twice11> On the other hand, probably today I would use a different nick, if I didn't get used to this one.
19:50:01 <Ngevd> I use Taneb in most places except for this channel.
19:50:16 <Vorpal> <Ngevd> Hey, there's a new esolang <-- any good?
19:50:21 <elliott> I can only conclude that twice11 is actually Mars.
19:50:27 <Ngevd> It doesn't appear to be a brainfuck derivative
19:50:35 <Vorpal> well, that is a start
19:50:41 * Phantom_Hoover sets down the brick.
19:51:04 <Ngevd> Hold on, Phantom_Hoover
19:51:09 <Ngevd> Keep a hold of that brick
19:51:17 * twice11 congratulates elliot for looking up CP437
19:51:20 * Phantom_Hoover picks the brick up again.
19:51:35 <elliott> twice11: I know what CP437 is :P
19:51:40 <olsner> Phantom_Hoover: what are you doing with that brick?
19:51:41 <Phantom_Hoover> twice11, we all know CP437.
19:51:48 <elliott> I don't know it off by heart, though
19:51:52 <Phantom_Hoover> olsner, readying it for some brickbrainin'.
19:51:56 <twice11> heart is #3
19:52:05 <Ngevd> I'd like a second opinion
19:52:08 <Ngevd> http://esoteric.voxelperfect.net/wiki/Lenta
19:52:13 <olsner> Phantom_Hoover: do a brickroll
19:52:30 <olsner> or some brickabrack
19:52:48 <Ngevd> Hmm...
19:52:59 <Phantom_Hoover> Oh FFS, when I look at ¬ my first thought is "better expand the food stockpile again".
19:53:03 <Vorpal> twice11: hm, which base should it be interpreted in?
19:53:04 <elliott> olsner: Looks vaguely interesting
19:53:14 <elliott> Erm
19:53:15 <elliott> Ngevd:
19:53:44 <twice11> Vorpal: I'm only commenting as much as that elliott already looked up the right character.
19:53:48 <olsner> hmm, that's a bit of a typo there
19:53:48 <Phantom_Hoover> Doesn't look much like a Brainfuck derivative.
19:53:51 <Ngevd> Oh god, he's either writing something big or died.
19:54:07 <elliott> Who's he
19:54:17 <Phantom_Hoover> boily.
19:54:27 <Ngevd> Sir Terry Pratchett?
19:54:38 <olsner> boily boils?
19:54:39 <Vorpal> twice11: you mean "<elliott> I can only conclude that twice11 is actually Mars."? That doesn't mean anything to me
19:54:43 <Phantom_Hoover> You know that he released a book like 3 days ago?
19:54:45 <elliott> Ngevd: How was I supposed to know that from the context
19:54:58 <Ngevd> Mind reading
19:55:04 <twice11> Vorpal: Yeah, that's the quote I meant.
19:55:06 <elliott> Ngevd: Anyway, you'll know when he dies since he's committed to suicide *shrugs* :P
19:55:16 <quintopia> boily wont ever talk it seems
19:55:17 <Vorpal> twice11: so what is the symbol for Mars?
19:55:24 <quintopia> i want to talk to boily
19:55:25 <elliott> Vorpal: You have access to Google
19:56:14 <twice11> Vorpal: ^K in the display RAM of some ancient IBM graphic cards.
19:56:16 <Vorpal> so 11 in base 10, meh. I was looking at the hexdecimal 0x11
19:56:25 <elliott> quintopia: The lurkers are usually lurkers because they're boring people.
19:56:37 <twice11> Vorpal: Get some Turbo(?) Pascal!
19:56:47 <Vorpal> twice11: ugh nop
19:56:48 <Vorpal> no*
19:56:55 * Vorpal forces twice11 to use Delphi.NET
19:57:10 <Vorpal> I seem to have a vague memory of hearing about that
19:57:13 <Vorpal> sounds horrible
19:57:25 <twice11> Last Delphi I had contact with is Delphi 5.
19:57:28 <elliott> Haha, ConsoleKit is dying
19:57:33 <elliott> Being replaced with systemd
19:57:37 <Vorpal> ouch
19:57:45 <Vorpal> elliott: what will happen to distros not using systemd
19:57:53 <elliott> They'll switch to systemd :)
19:57:59 <olsner> of course, nothing named CamelKit can remain in Linux, it needs to be a somethingd
19:58:01 <twice11> It's actually no worse than Visual Basic, but I don't think this means anything...
19:58:02 <Vorpal> elliott: you think ubuntu will?
19:58:11 <elliott> Vorpal: Debian are, IIRC
19:58:15 <Vorpal> hm
19:58:24 <elliott> I doubt Canonical are so attached to upstart that they won't in the face of pressure like that, but we'll see
19:58:26 <Vorpal> elliott: but did debian ever use upstart?
19:58:26 <twice11> PolicyKit gets what then? permissiond?
19:58:41 <elliott> Does PolicyKit depend on ConsoleKit?
19:58:52 <elliott> Don't see anything about it being unmaintained on freedesktop.org
19:58:55 <Vorpal> what do consolekit and policykit actually do btw?
19:59:09 <Vorpal> elliott: also what will you do for Kitten then? I assume you won't use systemd...
19:59:11 <twice11> No, but olsner suggested all *Kits are dying.
19:59:19 <elliott> policykit is what allows you to do things like modify net connection/users/packages from the GUI
19:59:21 <Vorpal> hm I guess you could just implement the relevant interfaces
19:59:25 <elliott> (for stuff that doesn't use gksudo or w/e)
19:59:31 <olsner> twice11: they could change names too, I guess
19:59:33 <Vorpal> and consolekit?
19:59:34 <elliott> finer-grained stuff
19:59:38 <Phantom_Hoover> My cat had some dtens.
19:59:44 <olsner> but people like to rewrite stuff because they can
19:59:46 <elliott> "ConsoleKit is a framework for defining and tracking users, login sessions, and seats."
19:59:47 <elliott> "ConsoleKit is a framework for managing user sessions and permissions. Some of the most common usages of consolekit is allowing non-root users to mount removable media and suspending/shutting down the computer through common desktop applications (ie: thunar, nautilus, the gnome shutdown menu, etc)."
19:59:56 <Vorpal> seats?
20:00:03 <elliott> *shrug*
20:00:04 <olsner> also because the existing stuff sucks, but so will their replacements :D
20:00:04 <quintopia> elliott: huh, i just figured since the active people are so boring, the lurkers must be the interesting ones
20:00:30 <elliott> Oh, I see what twice11 meant
20:00:35 <elliott> Pretty sure olsner was not being serious :P
20:00:47 <olsner> quintopia: yep, they're too interesting to dilute their interestingness with banter
20:00:52 <twice11> Vorpal: seats: If your computer has two keyboards and two seperately controlled monitors, you can have two independent sessions at the consoles.
20:00:52 <Vorpal> sounds like I could do without consolekit. Since none of those things actually work on my desktop anyway. Probably because I use startx rather than a login manager
20:00:56 <twice11> These are two seats.
20:01:10 <Vorpal> twice11: ... that sounds extremely rare
20:01:11 <elliott> Vorpal: You're meant to have ck-launch-session in ~/.xinitrc.
20:01:24 <Vorpal> elliott: hm I do have that
20:01:26 <elliott> Vorpal: That's not incredibly rare. Any thin client is probably a seat.
20:01:28 <Vorpal> exec ck-launch-session dbus-launch --exit-with-session startxfce4
20:01:47 <Vorpal> so... why doesn't those things work
20:01:50 <elliott> Shrug
20:02:09 <twice11> Most of this new-fangled Linux stuff looks like overdesigned crap.
20:02:17 <twice11> But maybe I just don't understand it.
20:02:36 <Vorpal> I guess removable media is nice. Hm
20:02:43 <Ngevd> Wait a second...
20:02:56 <Ngevd> Lenta seems awfully similar to my old Ook!++
20:03:01 <olsner> elliott: well... yes and no, names like ConsoleKit do look awfully out of place among the rest of the stuff
20:03:04 <Ngevd> Except further from brainfuck
20:03:09 <Vorpal> hm
20:03:31 <elliott> olsner: freedesktop people do not care much about fitting in to the "old" ecosystem
20:03:32 <Vorpal> olsner: is there actually any /etc/init.d/consolekit though?
20:03:33 <olsner> though the process is actually just called console-kit-something, I thought it was called ConsoleKit
20:03:49 <Vorpal> or /etc/rc.d or whatever
20:04:06 <elliott> http://www.freedesktop.org/wiki/Software/eventuality guess this took out
20:04:07 <elliott> erm
20:04:08 <elliott> s/out/off/
20:04:09 <Vorpal> I have no such init script
20:04:11 <elliott> (from http://www.freedesktop.org/wiki/Software)
20:04:20 <olsner> but isn't mac or next where they started calling things FooKit etc?
20:04:44 <elliott> olsner: WebKit is the only thing I can think of
20:04:48 <elliott> and is unrelated to all these
20:04:59 <elliott> olsner: OS X is more about Core Blah
20:05:10 <elliott> image, garphics, animation, video
20:05:14 <elliott> s/garphics/graphics/
20:05:16 <Vorpal> core quartz?
20:05:22 <elliott> cowartz
20:05:24 <Vorpal> or what was quartz now again
20:05:25 <twice11> Core Dump
20:05:28 <Vorpal> what did it do?
20:05:47 <twice11> Quartz == The display engine based on PDF data.
20:05:50 <Vorpal> ah
20:06:09 <twice11> Maybe replaced by Core Graphics now.
20:06:13 <twice11> No idea.
20:06:13 <Vorpal> hm
20:06:26 <elliott> "Quartz specifically refers to a pair of Mac OS X technologies, each part of the Core Graphics framework: Quartz 2D and Quartz Compositor. It includes both a 2D renderer in Core Graphics and the composition engine that sends instructions to the graphics card. Because of this vertical nature, Quartz is often interchanged synonymously with Core Graphics.[1]"
20:06:35 <Gregor> elliott: Where the heck was I downloading Gentoo Prefix? >_<
20:06:41 <elliott> Gregor: ?
20:06:45 <Vorpal> Gregor: you mean "why the heck"
20:06:47 <Gregor> elliott: I can't find it :P
20:06:53 <elliott> Gregor: The URL or file
20:06:55 <Ngevd> What's conceptually inbetween Haskell and Perl?
20:07:00 <elliott> Vorpal: Because the alternative is Cygwin
20:07:05 <Vorpal> elliott: why windows...
20:07:06 <Gregor> elliott: The file. You can't help me, but that doesn't stop me from blarping at you.
20:07:10 <elliott> Ngevd: What's in-between a banana and a pile of dirt
20:07:14 <elliott> Gregor: Right :P
20:07:18 <elliott> Gregor: Try the Windows file-finding feature?
20:07:25 <elliott> It OCCASIONALLY works.
20:07:25 <Ngevd> elliott, a rotting banana.
20:07:28 <Gregor> elliott: I don't think I was downloading it on Windows.
20:07:30 <Ngevd> I don't like bananas
20:07:31 <Gregor> In fact I know I wasn't.
20:07:33 <Vorpal> elliott: also, modern internix requires win 7 ultimate, win 7 enterprise, or win server 2008 iirc
20:07:36 <Vorpal> hm
20:07:43 <elliott> Gregor: find . -name \*gentoo\*
20:07:46 <Ngevd> So, what's the rotting banana of programming languages?
20:07:49 <Gregor> elliott: That's what I'm doing :P
20:07:51 <elliott> Vorpal: Gentoo Prefix supports XP onwards
20:07:55 <Vorpal> hm
20:07:58 <elliott> Ngevd: Perl
20:08:09 <Ngevd> I thought that was the Banana!
20:08:09 <Vorpal> well I can't do it on my win 7 pro install.
20:08:11 <Vorpal> oh well
20:08:15 <Vorpal> not like I need it
20:08:21 <Vorpal> Gregor: so... why are you using windows?
20:08:29 <Gregor> elliott: If this doesn't work on my Windows 7 Pro ... KILL KILL KILL KILL DIE DIE DIE
20:08:35 <elliott> Gregor: It will.
20:08:35 <Gregor> Vorpal: I wanted a VM to not cross compile on.
20:08:37 <elliott> Gregor: Vorpal is just an idiot.
20:08:49 <Gregor> Of course, if I can't find the damned thing X-D
20:08:56 <elliott> Gregor: BTW, make sure you have the Administrator account enabled; see the manual for why
20:08:58 <Vorpal> elliott: well, microsoft said it wasn't supported.
20:09:07 <elliott> Microsoft don't support XP, indeed.
20:09:14 <elliott> I'm not sure how this is surprising.
20:09:17 <elliott> Or, hmm
20:09:20 <elliott> Has it actually reached its EOL yet
20:09:23 <Vorpal> "Version 6.1 is included in Windows 7 (Enterprise and Ultimate) and Windows Server 2008 R2 (all editions)."
20:09:24 <Gregor> Seriously, where the HELL did I download this >_<
20:09:33 <elliott> Vorpal: Yes, OS components only get upgraded with the OS
20:09:37 <elliott> Similarly, NT 7 or whatever isn't available for XP
20:09:49 <elliott> Gregor: /tmp?
20:09:51 <elliott> Did you reboot? :P
20:10:05 <Vorpal> elliott: I'm just saying that version 6.1 of interix is not supported on win 7 pro.
20:10:10 <Gregor> elliott: I had to reboot the machine that was SSH'd in to download.
20:10:11 <Vorpal> maybe you can use an older version
20:10:13 <Vorpal> I don't know
20:10:13 <Gregor> elliott: Hence why I lost it.
20:10:16 <elliott> Vorpal: You could use... the version for XP?
20:10:24 <Vorpal> elliott: would that run under win 7?
20:10:30 <elliott> Gregor: So was it in /tmp
20:10:41 <Gregor> elliott: No, why would I download in tmp :P
20:10:46 <elliott> Vorpal: Why the fuck would you use the version for XP on Windows 7
20:10:55 <Gregor> FOUND IT
20:11:06 <Ngevd> HURRAH!
20:11:08 <Vorpal> elliott: my point exactly. I'm just saying if you use win 7 you will need win 7 ultimate or win 7 enterprise
20:11:17 <Vorpal> and who would still use xp?
20:11:33 <elliott> Vorpal: "Version 6.1 is included in Windows 7 (Enterprise and Ultimate)"
20:11:37 <elliott> Note: INCLUDED
20:11:47 <elliott> Turns out smaller versions of Windows don't include all components which is why you might have to download them.
20:11:59 <Vorpal> elliott: I did check recently, it is NOT available for windows 7 pro according to microsoft.
20:12:00 <elliott> This is also irrelevant since the Gentoo Prefix ISO contains the SUA files.
20:12:08 <Vorpal> elliott: if I'm wrong, please tell me where you found it
20:12:12 <Vorpal> as I would very much like it
20:12:28 <elliott> Try looking on the Gentoo Prefix ISO :)
20:12:32 <Vorpal> hm okay
20:12:52 <olsner> OMG, Quark is dying :(
20:13:03 <Vorpal> olsner: quark?
20:13:05 <Gregor> Vorpal: Although Microsoft is killing SUA as of Windows 9.
20:13:11 <Vorpal> right
20:13:13 <elliott> Gregor: 8, I think.
20:13:25 <Vorpal> "It is set to be deprecated after the release of Windows 8. [4]"
20:13:29 <elliott> olsner: :'(
20:13:30 <Vorpal> sounds like 8 will still have it
20:13:31 <elliott> Meh, fair enough
20:13:45 <elliott> Who cares, Windows 9 will probably suck :P
20:13:52 <Vorpal> Gregor: tell me if it works on win 7 pro though if that is what you have
20:13:58 <Vorpal> elliott: won't windows 8 suck too?
20:14:10 <Ngevd> I think the Piet pi calculation is the most interesting
20:14:14 <elliott> Vorpal: Did I say otherwise?
20:14:19 <elliott> Windows 8 will support SUA, so it's irrelevant
20:14:21 <Vorpal> elliott: nope
20:14:26 <Gregor> Vorpal: That's what I have.
20:14:26 <olsner> elliott: I can only assume he'll survive though, haven't seen any mention of quark leaving the show in all the spoilers I've read
20:14:30 <Gregor> Haven't gotten OS X working in a VM yet :(
20:14:36 <elliott> olsner: Don't read spoilers :P
20:14:37 <Gregor> (I have 16GB of RAM now, so I'm VM'ing EVERYTHING)
20:15:02 <elliott> Gregor: There are tutorials for things like OS X in VirtualBox
20:15:05 <elliott> It's a pain but doable
20:15:08 <Gregor> elliott: I know, I've tried.
20:15:09 <Gregor> And failed.
20:15:13 <elliott> Less of a pain now that Apple support it on OS X hosts
20:15:14 <Gregor> elliott: I think it doesn't like my CPU or something.
20:15:15 <Vorpal> Gregor: do you have a copy of xp pro 64-bit? Quite lightweight for being windows. More so than the 32-bit xp
20:15:19 <Gregor> I knew I shouldn't have gone with AMD >(
20:15:21 <Gregor> *>:(
20:15:34 <Gregor> Vorpal: I don't need lightweight :P
20:15:50 <olsner> elliott: I actually like reading spoilers so I know something of what I have to look forward to
20:15:50 <Gregor> elliott: It gets through most of the installer, then freezes and dies horribly at 11% remaining and won't boot.
20:15:55 <Vorpal> Gregor: come on, aero is never going to be fast in a VM
20:15:59 <elliott> Gregor: Heh
20:16:02 <Vorpal> (sure you can turn that off)
20:16:07 <Gregor> Vorpal: Me using a GUI? Ha ha ha no
20:16:19 <elliott> olsner: That ruins DS9 a lot since the plot goes through major changes *shrug*
20:16:20 <Vorpal> Gregor: :P
20:16:33 <elliott> Vorpal: Aero runs just fine in a VM, and Aero can also be turned off.
20:16:53 <Vorpal> elliott: did I say anything that indicated the opposite of the latter+
20:16:55 <Gregor> So anyway, what's all this about Quark dying which now I assume is Star Trek Quark?
20:16:56 <Vorpal> s/+/?/
20:17:07 <elliott> Vorpal: Well, I'm assuming you're not just throwing bullshit statements unrelated to what the topic is at Gregor
20:17:18 <Vorpal> elliott: I even said you could turn it off
20:17:21 <Vorpal> <Vorpal> (sure you can turn that off)
20:17:36 <olsner> Gregor: I'm just occasionally dumping the plot of whatever DS9 episode I happen to be watching
20:17:46 <Gregor> olsner: Oh :P
20:17:57 <Vorpal> ...
20:17:59 <olsner> or just the opening gambit, since I sometimes stop reading IRC while watching
20:18:34 <elliott> Anyway, if anyone wants to avoid systemd in the future, Kitten is their best bet :P
20:19:05 <Vorpal> https://en.wikipedia.org/wiki/Windows_To_Go <-- now that is interesting. How do they think that will work with activation? Or did they drop activation and locking to hardware?
20:20:02 -!- GreaseMonkey has joined.
20:20:02 -!- GreaseMonkey has quit (Changing host).
20:20:02 -!- GreaseMonkey has joined.
20:23:57 <olsner> oh! this is the episode where *that* happens... this is about as hilarious as when the guy in Enterprise got pregnant and grew nipples on his arms
20:24:41 <elliott> olsner: Which episode
20:24:52 <elliott> Vorpal: So anyway, you were right about ANSI codes and scrollbars and I hate you for it
20:25:14 <Vorpal> elliott: what did I say about scrollbars? I don't remember
20:25:20 <olsner> elliott: 4x25, Body Parts
20:25:33 <elliott> Vorpal: That you couldn't just move the cursor up beyond the top of the terminal screen to poke lines that have scrolled out of view
20:25:37 <elliott> You're right, which is really annoying
20:26:14 <Vorpal> ah
20:26:47 <Vorpal> elliott: yes cursor movement doesn't really fit well into the concept of scrollback
20:27:00 <Vorpal> so I'm not surprised
20:27:28 <elliott> Vorpal: I have no idea what I can do, other than... well, I know you can hook into mouse scrollwheel because vim does it, so I could do that, wait for a repaint, and then adjust the now-visible lines appropriately??
20:27:29 <elliott> Euurgh
20:27:46 <Vorpal> wow
20:27:47 <elliott> It's unlikely that you'll have more than 24 tasks pending at a time but it's still possible, so this is annoying
20:27:56 <Gregor> elliott: INSTALLIN' DAT GENTOO
20:27:57 <Vorpal> elliott: I don't know if that will work
20:28:05 <elliott> Gregor: Awww yeah
20:28:15 <elliott> Gregor: Is the Administrator account activated :P
20:28:18 * elliott HELPFUL REMINDER
20:28:26 <elliott> Vorpal: I don't see why not
20:28:38 <elliott> Vorpal: Hmm, I guess because maybe only the last 24 lines are actually active
20:28:41 <Vorpal> elliott: anyway I think it might send some terminal code to get scroll wheel as character input, and it might only work with alt screen
20:28:42 <Gregor> elliott: INSTALLING SUA FAILED
20:28:44 <Gregor> elliott: I BLAME YOU
20:28:45 <elliott> After all, printf goes to the end of the scrollbar not before
20:28:47 <Vorpal> not sure
20:29:00 <Vorpal> Gregor: failed with what error?
20:29:07 <elliott> Gregor: Weird, I guess it's specifically checking for the right version of 7?
20:29:11 <elliott> Gregor: Just get Ultimate, man :P
20:29:19 <elliott> Or... downgrade to XP, I suppose :P
20:29:21 <Vorpal> elliott: I told you so...
20:29:25 <Gregor> Vorpal: None, just "Installing SUA failed!"
20:29:36 <Gregor> elliott: This Pro is actually /legal/
20:29:49 <Vorpal> Gregor: did it do it at the start of the install, or did it happen a bit into the install?
20:29:52 <Vorpal> hm
20:29:59 <elliott> Gregor: Wooooow! I care so much :P
20:30:04 <Gregor> Vorpal: Beginning of install.
20:30:09 <olsner> Gregor: you mean to imply that your Ultimate wouldn't be? :)
20:30:16 * Gregor installs cygwin.
20:30:24 <Gregor> olsner: I'm sure as hell not going to PAY for Windows.
20:30:30 <olsner> haha, cygwin, welcome to hell
20:30:31 <Gregor> I can sort of tolerate having it if I don't pay for it.
20:30:32 <elliott> Gregor: You will regret your decision of Cygwin over piracy very rapidly
20:30:34 <Vorpal> Gregor: was it gentoo's installer or microsoft's installer that did that?
20:30:44 <elliott> Gentoo's installer is the only installer involved.
20:30:49 <Gregor> Vorpal: I don't have a clue, Gentoo's just called SUA's installer.
20:30:51 <Vorpal> hm
20:31:01 <olsner> if you're lucky you'll have a 64-bit windows where cygwin doesn't work at all
20:31:07 <Vorpal> it doesn't?
20:31:08 <Vorpal> ugh
20:31:16 <elliott> Wow, it doesn't?
20:31:20 <elliott> Gregor: SO AWESOME
20:31:21 <olsner> what cygwin does to emulate fork() is ... horrible
20:31:27 <Vorpal> olsner: why would it not work on 64-bit linux as a 32-bit program...
20:31:33 <olsner> it *might* work
20:31:41 <elliott> 64-bit Linux?
20:31:41 <boily> quintopia: hello!
20:31:42 <olsner> but sometimes it just doesn't, apparently
20:31:43 <elliott> Cygwin for Linux!
20:31:47 <Vorpal> elliott: windows...
20:31:47 <Gregor> olsner: Uhhh, I have 64-bit Windows, but I assure you Cygwin works ...
20:31:49 <elliott> boily: Holy fucking
20:31:59 <elliott> boily: Your long reign as lurker is over
20:32:17 <boily> I'm at work, so my activity on IRC isn't quite stellar.
20:32:19 <olsner> and on some 64-bit systems, cygwin *sometimes* works :)
20:32:58 <elliott> boily: You're at work 24/7? :P
20:32:59 <Vorpal> olsner: really? How does it fail then?
20:33:01 <elliott> `pastelogs <boily>
20:33:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10997
20:33:33 <olsner> Vorpal: fork() fails because cygwin can't manage to find a way to load all DLL's at the same address as in the parent
20:33:39 <Vorpal> heh
20:33:41 <boily> elliott: Sometimes I forget that my computer's open.
20:34:07 <elliott> boily: OK, you've technically talked 10 times this year before today :P
20:34:13 <elliott> But there was a two year gap before that.
20:34:24 <Vorpal> was he in the channel then
20:34:29 <Gregor> INSTALLIN' DAT CYGWIN
20:34:30 <Vorpal> that is kind of important
20:34:31 <elliott> Dunno
20:34:48 <elliott> Gregor: This is going to be more painful than downloading Ultimate :P
20:34:51 <olsner> well that's *one* of the failure modes anyway, and apparently the workarounds for it don't always work at all
20:34:53 <boily> woooah, history from 4 years ago!
20:34:56 <Gregor> elliott: INSTALLIN' DAT CYGWIN
20:35:12 <Vorpal> olsner: hm...
20:35:27 <twice11> I never really was a fan of cygwin. If you just need to get GNU programs run, use MinGW. If you need a shell, use msys. If you need more, use unix.
20:35:37 <elliott> twice11: MSYS is just an ancient version of Cygwin.
20:35:44 <Gregor> twice11: MSYS is sooooo painfully obsolete.
20:35:47 <Vorpal> yeah why does Gregor need windows, he never answered.
20:35:49 <elliott> It's literally just Cygwin.
20:35:51 <elliott> But ancient.
20:35:52 <Gregor> Vorpal: Yes I did.
20:35:53 <elliott> And with no Unicode support.
20:36:10 <Vorpal> Gregor: not really, I saw no sufficient important reason :P
20:36:10 <Gregor> "Vorpal: I wanted a VM to not cross compile on."
20:36:22 <elliott> twice11: And MinGW doesn't let you use compile anything that uses such esoteric POSIX APIs as fork() :P
20:36:24 <Vorpal> Gregor: cross compiling is kind of less work than cygwin
20:36:35 <elliott> Vorpal: If it compiles it works, right?
20:36:37 <Gregor> Vorpal: Until shit doesn't work and you can't test why.
20:36:43 <Vorpal> elliott: exactly!
20:36:49 <twice11> Well, there is no fork on Windows. Too bad.
20:36:51 <Vorpal> elliott: no need to test or anything. Especially if C code
20:37:04 <elliott> twice11: Which is why Cygwin and the POSIX subsystem provide one :P
20:37:10 <twice11> And cygwin is just kudging around it and failing on x64 sometimes.
20:37:19 <Gregor> I only want MingW for compiling, I just want a shell that doesn't suck foot, and an SSH server so I never have to look at the UI.
20:37:22 <Gregor> That screams Cygwin.
20:37:30 <elliott> twice11: Yep, but the POSIX subsystem isn't, it just implements POSIX APIs at the NT layer.
20:37:40 <Vorpal> Gregor: fork is slow there though
20:37:50 <twice11> So why does cygwin not use the POSIX system then?
20:37:51 <Gregor> Vorpal: No shit
20:37:54 <elliott> Gregor: (a) Stop typoing it already it's MinGW (b) Cygwin's shell sucks foot because it's built on top of Cygwin
20:38:05 <elliott> twice11: Cygwin is older than the POSIX subsystem.
20:38:12 <elliott> It dates to the 95 days.
20:38:26 <Gregor> Also, Cygwin will live after the POSIX system is dropped in Windows 9 :P
20:38:35 <Vorpal> FSVO live
20:38:53 <twice11> That does not mean you can not have a Cygwin replacement using the POSIX personality on NT-derivatives that provide it.
20:39:08 <elliott> twice11: That's why Gentoo Prefix exists.
20:39:12 <elliott> (for Windows)
20:39:21 <elliott> It's a full environment on top of SFU/SUA.
20:39:30 <elliott> It just doesn't like Gregor's specific release of Windows for licensing reasons.
20:39:32 <Vorpal> how does interix do fork()?
20:39:39 <Vorpal> Can't cygwin just switch to do the same?
20:39:42 <elliott> Vorpal: How does Linux do fork()
20:39:49 <elliott> It's a subsystem, it's implemented at the NT layer
20:39:54 <elliott> It's at the same level as the implementation of Win32
20:39:58 <Vorpal> hm
20:40:08 <olsner> how is babby forked?
20:40:09 <Vorpal> elliott: so why can't cygwin directly call ntdll?
20:40:13 <elliott> For Cygwin to use it would involve first throwing out all of Cygwin's code and second becoming SFU/SUA
20:40:32 <Vorpal> are there any third party NT sub systems at all?
20:40:34 <elliott> Vorpal: Because it runs on top of Win32?
20:40:45 <elliott> And yes, SFU/SUA is based on an acquisition of Interix.
20:41:03 <Vorpal> microsoft didn't make it originally?
20:41:04 <Gregor> Cygwin and SSH installed!
20:41:04 <Vorpal> heh
20:41:08 <elliott> Hmm, I think
20:41:21 <elliott> Yeah:
20:41:24 <elliott> This product began to be developed in 1996 under the product name OpenNT by Softway Systems, Inc. before the name was changed to Interix in 1998. The last release by Softway Systems was release 2.2. Softway Systems had virtually completed the next release code-named Firebrand in 1999 which became the basis of Interix 3.0.
20:41:24 <elliott> Interix was acquired by Microsoft in 1999. Microsoft continued to distribute Interix 2.2 as a standalone product until 2002.
20:41:24 <elliott> Interix release 3.0 was released as component of Services for Unix (SFU) 3.0 in 2002. Interix release 3.5 was released as component of SFU 3.5 in January, 2004.
20:41:24 <elliott> Interix became integrated as component of the regular Windows OS distribution[5] as a component of Windows Server 2003 R2 in December, 2005 at release 5.2 and is a component of the Windows Vista release as release 6.0 (RTM November, 2006). Windows Server 2008 has release 6.0. Windows 7 and Windows Server 2008 R2 include SUA 6.1.
20:41:46 <Vorpal> heh
20:41:57 <elliott> Gregor: Don't put ! after statements about your slow descent into hell :)
20:42:34 <Gregor> elliott: What is it I can say to make you /ignore me? Trololololol?
20:42:45 <elliott> Gregor: Good luck
20:42:59 <Gregor> I'm SSH'd in and installing shit :P
20:43:02 <Gregor> Seems to work great to me.
20:43:13 -!- Zuu has joined.
20:43:27 <Vorpal> Gregor: I thought you had to use the original setup program to install components in cygwin?
20:43:38 <Vorpal> what command line program do you use then
20:43:44 <elliott> The setup program supports GUIless operation.
20:43:46 <elliott> It's just painful.
20:43:49 <Vorpal> I see
20:44:01 <elliott> Gregor: Anyway, yeah, it works great until you run any shell script ever, or run into one of its numerous integration problems, or it just plain breaks.
20:44:05 <Gregor> I'm not using setup.exe
20:44:10 <elliott> Gregor: Or you realise how absolutely friggin' ANCIENT every piece of software it comes with is.
20:44:21 <Gregor> elliott: GCC 4.5 is good enough *shrugs*
20:44:37 <Vorpal> gcc 4.5 is fairly new
20:44:38 <elliott> Okay, that's one piece of software. (It was gcc 3 not long ago, btw.)
20:46:07 <elliott> Aww shit, SLIM is unmaintained
20:46:09 <Gregor> elliott: It's a hell of a lot more up to date than MSYS :P
20:46:28 <elliott> Gregor: So relevant :P
20:47:29 <Gregor> Now time to run a configure script huzzah :P
20:48:51 <Vorpal> night →
20:49:14 <elliott> Gregor: Have fun waiting
20:49:18 <Gregor> Let's time GMP's configure :P
20:49:23 <Gregor> I'm betting ... 20 minutes.
20:51:26 <elliott> Gregor: Have I mentioned that the POSIX subsystem makes the shell run only very slightly slower than Linux? :)
20:51:27 <olsner> minutes, hours, days, years, who knows... I doubt anyone's watched it to the end yet :P
20:52:42 <Gregor> elliott: Do I HAVE the POSIX subsystem? Doesn't seem so!
20:53:06 <elliott> Gregor: You could download Ultimate quicker than waiting for Cygwin to run a configure script :)
20:53:41 <Gregor> elliott: My Windows. It is legal.
20:53:52 <elliott> Gregor: Legally shitty
20:54:00 <Gregor> All legal Windows is legally shitty.
20:54:08 <olsner> you could convince Gates to give you a copy for free quicker than waiting for Cygwin
20:54:29 <Gregor> Still configurin'!
20:54:33 <Gregor> It's chuggin' away!
20:54:40 <olsner> or maybe you could meet Jobs and have *him* buy you a copy even quicker
20:55:13 <Gregor> Necromancy: Faster than Cygwin™
20:55:18 <Gregor> DONE
20:55:26 <Gregor> 5:25
20:55:31 <olsner> you're just saying that to make us stop goading
20:55:56 -!- oerjan has quit (Quit: Good night).
20:56:00 <olsner> in two weeks/months/years/something we'll see a "<Gregor> DONE" and have no idea what you're talking about
20:56:16 <Gregor> Please hold while I install make :P
20:58:41 <elliott> I'm trying to compute a lot of SHA-1 hashes with sha1sum; I'm running 4 sha1sum processes in parallel, what number of args should I pass to each sha1sum to overcome the fork/etc. overhead?
20:58:51 <elliott> Considering that passing too many to one is a waste of time because it'll compute them sequentially
20:59:58 <olsner> how quickly does each item finish?
21:00:09 <elliott> sha1sum is pretty much instant :P
21:00:10 <ais523> <YouTube commentor> how do u make uploader comments
21:00:25 <ais523> that's… somehow impressively worse than the normal YouTube standard
21:00:44 <elliott> [elliott@dinky ~]$ time sha1sum $(find /usr -type f -print | head -n 1) >/dev/null
21:00:45 <elliott> real0m0.008s
21:00:45 <elliott> [elliott@dinky ~]$ time sha1sum $(find /usr -type f -print | head -n 16) >/dev/null
21:00:45 <elliott> real0m0.030s
21:00:45 <elliott> [elliott@dinky ~]$ time sha1sum $(find /usr -type f -print | head -n 64) >/dev/null
21:00:46 <elliott> real0m0.047s
21:00:48 <elliott> [elliott@dinky ~]$ time sha1sum $(find /usr -type f -print | head -n 128) >/dev/null
21:00:50 <elliott> real0m0.118s
21:00:52 <elliott> olsner: Does that help
21:01:12 <elliott> I'm thinking maybe 16 to each process?
21:01:26 <elliott> Except that seems too low, maybe 32
21:01:31 <elliott> Which adds a really tiny amount to the runtime
21:01:36 <elliott> (0.003s)
21:01:43 <elliott> Actually, even 64 only takes 0.047s
21:02:01 <elliott> Wait, there's an easy way to measure
21:02:02 <olsner> I think fork/exec overhead is much less than a millisecond
21:02:20 <elliott> olsner: Oh yeah, but the scheduler isn't gonna like millions of new processes a second :P
21:02:37 <olsner> I did a simple test run (once :P) with starting thousands of gcc processes on an empty file (which actually also does something), got about 1ms per execution then iirc
21:03:12 <olsner> ehm, not all at the same time of course, started them sequentially
21:04:47 <tswett> Now, by default, Apache runs everything as the same user, right? I seem to remember that it's usually a bad idea to change this.
21:06:07 <elliott> real0m35.221s
21:06:07 <elliott> That's for n=64
21:06:22 <elliott> tswett: You're writing things as an Apache module...?
21:06:46 <tswett> elliott: no, but I might want to run CGI scripts as different users.
21:07:14 <elliott> tswett: Have them communicate with daemons.
21:07:33 <tswett> That sounds like it might be a good idea.
21:08:11 <olsner> elliott: 35s? :) that's like ... half the time you spent explaining the problem to me and I spent thinking about it?
21:08:18 <elliott> real0m20.968s
21:08:18 <elliott> n=64 again
21:08:21 <elliott> olsner: Oh, this is on a subset of the data
21:08:25 <olsner> oh, ok
21:08:28 * elliott tries with n=1.
21:08:54 <elliott> The same time
21:09:00 <elliott> My CPU isn't getting pegged at all, I think I need more processes than CPUs
21:09:25 <elliott> Trying n=1, j=128.
21:09:27 <elliott> 18s.
21:09:40 <elliott> Trying n=1, j=8192 :P
21:09:45 <tswett> elliott: do you currently have fewer processes than CPUs?
21:09:51 <elliott> Finally my CPU's going at 50%.
21:09:54 <elliott> tswett: For this job, yes.
21:10:03 <elliott> OK, that's slightly worse... so more processes aren't helping here.
21:10:09 * elliott tries n=32, j=8192.
21:10:10 <olsner> if you're not pegging the cpu, how about a larger n? maybe you're just not seeing wasted time on your cpu meter
21:10:26 <elliott> Sweet, n=32 j=8192 gets me 6 seconds
21:11:15 <elliott> n=128, j=8192 gets me 5 seconds.
21:11:33 <elliott> n=512, j=8192 gets me 6 seconds. OK, I think I want to lower j now...
21:12:34 <elliott> Sweet, n=128, j=128 gets me 4 seconds.
21:13:02 <elliott> n=64 j=128 gets me 3 seconds 8D
21:13:12 <olsner> hmm, annoyingly trivial problem made hard to get right/fast for the wrong reasons
21:13:12 <elliott> n=32 j=128 is slightly worse.
21:13:22 <elliott> olsner: What, this one?
21:13:32 <Ngevd> 2,7,11,42,231
21:13:46 <olsner> just hindered by sha1sum not wanting to implement the whole making a workqueue for its arguments and parallelizing over cpus to distribute work evenly
21:13:59 <elliott> n=64, j=64 is slightly worse than n=64, j=128...
21:14:01 <elliott> olsner: Right :P
21:14:04 <Gregor> Configurin' PCRE!
21:14:34 <elliott> olsner: I think 2.6-2.8 seconds to calculate the sha1sums for 16384 files ain't bad.
21:14:52 <olsner> and xargs -P (or whatever you're using) can't do the fair distribution without requiring a fork/exec for each file - because it obviously doesn't want to integrate any closer with the things it starts
21:14:54 <twice11> Gregor: Is there no ready-made pcre package for cygwin?
21:15:03 <Gregor> twice11: I need a MinGW one.
21:15:38 <twice11> Yeah, supply of MinGW libraries is quite bad :(
21:15:38 <elliott> olsner: find ... -type f | wc -l is the fastest it can be, right?
21:16:04 <Gregor> GMP and PCRE are all I need (for now), so hopefully I'm not in hell just yet :P
21:16:11 <elliott> Gregor: Wow, I just realised that Kitten could actually help you there X-D
21:16:18 <elliott> Its package manager, that is.
21:16:25 <olsner> you mean something like wc --files0-from=- -l?
21:16:33 <elliott> There's no inherent reason individual packages couldn't support architectures that Kitten itself can't run on.
21:16:43 <elliott> So you could install packages with the MinGW cross compiler.
21:16:50 <elliott> olsner: X-D
21:17:02 <elliott> olsner: I don't care about that :P
21:17:24 <olsner> elliott: oh, you mean just counting the number of files?
21:17:47 <elliott> olsner: Yeah. It completed fast enough, though.
21:17:56 <elliott> OK, if my incredibly rough calculations are correct, it'll take 30 seconds to do this.
21:18:00 <olsner> obviously, there is some overhead involved in printing the whole file names and just counting the newlines... but you'd need a lot of files to notice :)
21:18:04 <elliott> So... yay.
21:18:25 <Gregor> 2:46! That's ... within 5 minutes :P
21:18:28 <olsner> you want inter-process deforestation
21:18:41 <elliott> find: `/home/elliott/.gvfs': Permission denied
21:18:41 <elliott> Oh come on find, you're /root/
21:18:43 <elliott> You can access /anything
21:18:44 <elliott> /
21:18:53 <twice11> root_squash?
21:19:34 <elliott> twice11: ?
21:19:58 <tswett> So, I've got Apache, and I want to code in Perl. That probably means using mod_perl, right?
21:20:43 <twice11> elliott: If /home is on nfs, and the nfs export has root_squash enabled,
21:20:43 <olsner> obviously not, write a perl interpreter in mod_rewrite instead
21:20:50 <Gregor> Oh here we go, I'll time autoreconf :P
21:20:59 <twice11> the nfs server interprets a client saying "I am root" as "I am nobody".
21:21:21 <twice11> That is supposed to be a security feature.
21:21:46 <twice11> OTOH, a client that can claim "I am root" could also claim "I am elliott".
21:21:48 -!- elliott has quit (Read error: Connection reset by peer).
21:21:54 -!- elliott has joined.
21:21:57 <elliott> tswett: No.
21:22:15 <elliott> olsner: Advantage of this pegging my CPU: It finishes quickly. Disadvantage of this peggnig my CPU: It freezes my system.
21:22:31 <Gregor> autoreconf: 1:40
21:22:34 <tswett> elliott: got any better ideas?
21:22:49 <olsner> elliott: freezing the rest of your system is its way of telling you it's doing its job
21:22:56 <elliott> tswett: You mentioned CGIs earlier, what happened to those, anyway?
21:23:09 <tswett> I figured mod_perl might be just as easy, or easier, and slightly faster.
21:23:19 <tswett> If CGI is easier, I probably should go with CGI.
21:24:44 <olsner> yes! use computer-generated imagery to make it *look* like you're running perl without you actually doing it
21:24:52 <twice11> elliott: Did you receive my explanation of what I meant saying "root_squash"?
21:24:56 <olsner> genius :P
21:24:59 <elliott> twice11: Nope.
21:25:21 <twice11> elliott: If /home is on nfs, and the nfs export has root_squash enabled,the nfs server interprets a client saying "I am root" as "I am nobody".
21:25:39 <twice11> That is supposed to be a security feature. OTOH, a client that can claim "I am root" could also claim "I am elliott".
21:26:03 <elliott> tswett: FastCGI is what's popular nowadays in most ecosystems, either that or proxying a full HTTP server written in the language; consult your framework's documentation for the recommended deployment scenario
21:26:03 <elliott> t
21:26:26 <tswett> Framework... am I supposed to have one of those?
21:26:28 <elliott> Hmm, looks like the freezes come in waves :P
21:27:13 <elliott> tswett: If not, then you should already know what your deployment scenario looks like. Frankly I think you should learn more before jumping into something this complex, since you don't appear to have much experience with web stuff.
21:28:13 <elliott> olsner: sha1sum: /proc/804/task/817/ns/ipc: Invalid argument
21:28:26 <olsner> elliott: your argument is invalid
21:28:27 <elliott> It's, uh, always safe to read files in /proc, right? :P
21:28:41 <tswett> I guess I'm not familiar with the term "deployment scenario", and I also just know "framework" as meaning "a bunch of software that helps you do something", so... conclude what you will.
21:28:55 <Gregor> elliott: /proc/sys/read_this_to_poweroff :P
21:29:10 <olsner> reading should be safe... I guess :)
21:29:25 <elliott> tswett: I gather Catalyst is the most popular thing around Perl parts.
21:29:34 <elliott> But don't quote me on that.
21:29:42 <tswett> elliott: is there... a similarly popular thing around Python parts?
21:29:53 <elliott> tswett: I believe you said you were using Perl?
21:30:03 <olsner> but reading can definitely have side effects: had a system where you had to read the temperature sensor (from /proc/acpi/) to make the bios update the fan speed based on the current temperature
21:30:04 <tswett> I haven't actually started writing any P code.
21:30:21 <tswett> (Which, of course, means "language for a programming language whose name starts with P".)
21:30:39 <elliott> olsner: OK, I'm terminating this and excluding /proc, /sys, /dev and /tmp :P
21:32:14 <tswett> Anyway, maybe I can read some CGI tutorial.
21:32:15 <olsner> I guess the same thing could trigger a bug that goes boom if you try to read from the wrong widget
21:32:20 <olsner> let's say something mixes up "poke this to read the temperature" and "poke this to reboot" :P
21:33:08 <olsner> anyway, I think the primary reason to skip /proc would be that it has annoying special files, like pipes and links into the rest of the file system
21:33:09 <elliott> OK, let's try this again :P
21:34:31 <tswett> Is there something like ScriptAlias except not bothering to alias anything?
21:34:33 <elliott> Why does uniq have an option to ignore the first N fields, but not all fields beyond the first N?
21:34:43 <elliott> tswett: Have I mentioned you shouldn't use Apache yet?
21:34:46 <olsner> also e.g. sha1sum on /dev/sda might be a bit annoying :)
21:35:20 <tswett> elliott: you may have, but at this point, I don't know how easy it would be to switch.
21:35:25 <olsner> just use cut/awk before uniq?
21:35:33 <elliott> tswett: You've written 0 lines of code.
21:35:34 <tswett> I guess it would probably be... really easy, since the only thing I've actually put work into is the Postgres database.
21:35:35 <olsner> arguably, uniq should not have the option at all
21:35:52 <elliott> olsner: Except I need the field data after, duh
21:36:07 <elliott> I want to /uniquify/ based on only the first field, but I need the data after that too
21:36:22 <olsner> oh, right, annoying
21:36:31 <tswett> I'd just remove Apache, and possibly also remove phpPgAdmin, since phpPgAdmin has nearly outlived its usefulness.
21:37:20 <elliott> Why on earth are you using a web interface to the DB
21:37:34 <tswett> Because it's pretty.
21:37:35 <elliott> Just write a few INSERT statements, that way you're not fucked if you have to recreate it too
21:37:49 <tswett> How many rows do you think this database contains?
21:37:55 <elliott> Erm
21:37:57 <elliott> s/INSERT/CREATE TABLE/
21:38:05 <tswett> That's more like it.
21:38:19 <elliott> I mean, you're going to have to learn SQL anyway to interface with it.
21:38:31 <elliott> Which is a large time investment in itself, of course...
21:38:35 <elliott> Seeing as it's practically a profession unto its own.
21:38:41 <tswett> Right. And I *am* using psql every so often.
21:38:47 <tswett> And I *am* already more or less familiar with SQL.
21:39:45 <elliott> tswett: I can write SELECT and INSERT queries =/= I am familiar with the relational model, how NULL works, how to do complex joins, how to get foreign keys right, how to use stored procedures, ...
21:40:07 <elliott> I hope you at least know how to parameterise queries without string concatenation and escaping functions.
21:42:38 <tswett> I *am* familiar with the relational model. I think. And joins seem easy enough, though I've forgotten how outer joins work.
21:42:44 <elliott> olsner: Woo, eight and a half minutes later it finishes
21:42:54 <elliott> tswett: Consider me fully reassured...
21:43:14 <olsner> elliott: congratulations
21:44:20 <tswett> And then foreign keys, those seem simple enough. Use a foreign key whenever a row needs to refer to another entity. Use CASCADE when CASCADE is appropriate, use DELETE when DELETE is appropriate, use SET DEFAULT when SET DEFAULT is appropriate, use NO ACTION when you don't know what's appropriate.
21:44:52 <tswett> Then stored procedures... those aren't the same as functions, are they. Though I (re-)learned how to create triggers today.
21:45:18 <elliott> olsner: Oh great, xargs doesn't actually synchronise the output, so there's a bunch of incomplete lines and shit
21:46:30 <olsner> ooh... I've seen that too, I could've told you before letting it churn for 10 minutes if I'd thought of it :P
21:47:01 <tswett> (A mathematician's relational model: A table is a set of tuples. Given two tables, you can take their union or Cartesian product. Given one table, you can take subsets and projections. Done.)
21:47:38 <elliott> tswett: Of course there's also the very high probability you don't even want a relational database, but whatever
21:47:58 <tswett> But relational databases are nature's solution! God gave them to us!
21:47:59 <elliott> olsner: I wonder if GNU parallel does the same
21:48:33 <twice11> OTOH, there is also a high probability you don't really want a NoSQL data dumpbin, too.
21:48:37 <olsner> hmm, maybe it's something else that jinxes it, tee?
21:49:38 <elliott> twice11: Naturally.
21:49:52 <twice11> elliott: How did you get xargs to run jobs in parallel? Special xargs edition?
21:49:54 <tswett> What I'm about to mention is probably such a common problem that everyone but me has a solution to it. }:)
21:50:00 <elliott> twice11: Yes, the fancy-pants GNU edition.
21:50:02 <olsner> I mean, the clever folks that have built this should have made it work, right? because they're clever (right?)
21:50:27 <elliott> olsner: xargs is the last element of my pipeline.
21:50:47 <twice11> elliott: My manpage doesn't document -j for xargs, or yield any hits for parallel and background...
21:50:48 <tswett> I have a .vimrc file on one machine. I want it to be on every machine. Ideally, I could just edit one copy of it and everything else would change to match.
21:50:51 <elliott> twice11: -P
21:51:06 <twice11> Thanks.
21:51:08 <elliott> twice11: Re SQL vs. NoSQL vs. ...: I would suspect tswett would be best off with simple object persistence; likely his data set is much smaller than memory, too.
21:51:31 <Ngevd> (*):S(~(*)*:S(
21:51:31 <Ngevd> )S~:^):^
21:51:41 <elliott> At least most people generally want object persistence when they think they want an SQL database.
21:51:57 <elliott> tswett: Keep it in a VCS repository, put it on GitHub/whatever, pull from each machine.
21:52:06 <Gregor> Heyyyyyoooooo got me some OS X.
21:52:26 <twice11> SQL databases are a way to implement object persistence, although most likely not the one associated with least pain when implementing.
21:52:34 <elliott> tswett: Or if you want something less fancy, rsync, but you'll need your own server and you'll have to be careful about modifying it from two places at once.
21:53:08 <twice11> And that's something SQL people already invented transactions for.
21:53:30 <elliott> twice11: Sure, they work as a backend, but "using an SQL database" through an automatic persistence facility where you don't even see the SQL isn't what most people think of when they say "using an SQL database". Also, the impedance mismatch makes it a pain. But you do get some nice advantages; a well-optimised and robust implementation, transactions, ...
21:53:49 <elliott> People want all the guarantees SQL databases offer without the actual "relational SQL database" part :P
21:53:53 <elliott> <twice11> And that's something SQL people already invented transactions for.
21:53:56 <elliott> What's this in response to?
21:54:17 <Phantom_Hoover> Are you still on SQL or did you go back to it?
21:54:29 <elliott> When were we previously on SQL?
21:54:49 <Phantom_Hoover> Postgres. I guess you went back to it.
21:54:50 <twice11> elliott: Reponse to "you'll need your own server and you'll have to be careful about modifying it from two places at once."
21:55:10 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/m3jns/on_the_most_fundamental_level_what_is_a_computer/
21:55:14 <olsner> elliott: so the less fancy way is more work? :)
21:55:18 <Phantom_Hoover> What *are* computers? We just don't know.
21:55:32 <elliott> twice11: Merging > locking
21:55:32 <olsner> but I guess it's less fancy as in uglier...
21:55:35 <twice11> But I can feel the pain of auto-generated SQL queries for complex object models...
21:55:39 <elliott> twice11: You're not a CVS person, are you? :-)
21:55:54 <twice11> I know cvs, subversion and git.
21:55:55 <elliott> olsner: Less fancy what?
21:55:55 <Phantom_Hoover> OK this is right up our alley and half the answers are misleading.
21:56:05 <Phantom_Hoover> "To add to this, it is an open problem (known as the Church-Turing thesis)"
21:56:17 <twice11> And transactions don't necessarily mean locking the whole table.
21:56:17 <olsner> elliott: reply to "Or if you want something less fancy, rsync, ..."
21:56:34 <tswett> On the *most* fundamental level? I guess a computer is one of the components of the universe's wavefunction or something...
21:56:34 <elliott> olsner: Yep
21:56:42 <twice11> If queries are independent on the same table, they are still run in parallel, even updates.
21:56:49 <elliott> twice11: Well, how do you propose to implement transactional config file modification??
21:57:00 <twice11> Merging already done by the SQL system.
21:57:03 <elliott> Unless you're saying every config file should be an SQL database running on a server or something.
21:57:32 <twice11> Well, config file, sounds like something you usually don't update in day-to-day operation.
21:57:47 <tswett> "static" is probably an excellent name for a directory containing CGI scripts.
21:57:50 <twice11> So you don't really need transactions on it, or a database...
21:58:09 <elliott> twice11: ...that's good, because nobody said config files should be databases...
21:58:17 <elliott> I was telling tswett how to synchronise config files across multiple machines sanely.
21:58:26 <Phantom_Hoover> "This is wrong. The Church-Turing thesis is just that, a thesis, not a problem: it *states* that computation simply means "what Turing machines and equivalents do"."
21:58:29 <Phantom_Hoover> Someone nitpick.
21:58:30 <elliott> i.e. a VCS or rsync, and then I said why the former is preferable (multiple independent modifications, for one).
21:58:34 <twice11> Well, use a blob in a singleton table...
21:58:47 <elliott> twice11: ...why do you think a database is assumed here?
21:58:50 <elliott> We're talking about ~/.vimrc!
21:58:51 <tswett> Any statement can be thought of as a question.
21:59:25 <twice11> Seems I missed the context then.
21:59:56 <elliott> That's interleaved discussions for you.
22:00:00 <twice11> I just jumped on it when you claimed that SQL is likely not the solution and then talked about concurrent updates.
22:00:30 <twice11> .vimrc sounds like a fine thing to put into $VCS_OF_YOUR_CHOICE
22:00:51 <elliott> Yeah, I was talking about SQL likely not being suited for a different thing :P
22:01:41 <olsner> CREATE TABLE vimrc ...
22:01:55 <tswett> I probably should lop off one of this server's domain names. Is there an easy way to tell Apache that if the client is asking for remy.s.zbasu.net, just give them a 404?
22:02:10 * Phantom_Hoover → sleep
22:02:11 -!- Phantom_Hoover has quit (Quit: Leaving).
22:02:39 <twice11> tswett: Map that virtual host to a non-existing path, maybe?
22:03:25 <tswett> I'll map it to /dev/null, thereby making some people a little bit angry.
22:03:47 <tswett> "You're not supposed to use /dev/null! It's the empty file, not the invalid directory!"
22:03:57 <elliott> That probably won't work.
22:03:58 <tswett> "But it *is* an invalid directory."
22:04:11 <elliott> I guess I should email my hosting company telling them I lost my ssh key again.
22:04:28 <tswett> elliott: you should have kept it in a SQL database so this wouldn't happen!
22:04:36 <elliott> tswett: The computer died.
22:04:40 <elliott> I hadn't yet backed up.
22:05:05 <twice11> SQL servers make it easy to have a replicated server in sync...
22:06:17 <tswett> Yeah. You should have done that.
22:06:18 <elliott> Hmm, I ought to see if I can do that higher-order query thing with acid-state; I've had a vague idea for it for a while and now that object persistence has been brought up...
22:06:38 <elliott> tswett: ?
22:07:04 <elliott> Actually I really just want something as nice as Durus is for Python; distributed persistent STM...
22:07:10 -!- boily has quit (Ping timeout: 260 seconds).
22:07:14 <tswett> elliott: you should have kept it on a replicated synchronous SQL server farmy thing.
22:11:14 <tswett> Gee. So far, my CGI scripts work on the server if and only if they do not work on the command line.
22:11:32 <ais523> tswett: just write ) or something
22:11:36 <tswett> I suddenly feel a little bit like Karkat trying to write a ~ATH program.
22:11:37 <ais523> run it on the command line, observe it failing
22:11:43 <ais523> now you have a brilliantly working CGI script
22:11:44 -!- Ngevd has quit (Ping timeout: 252 seconds).
22:13:44 <tswett> It seems like system(foo) doesn't work in CGI.
22:19:19 <tswett> Perhaps the script doesn't have access to any executables...
22:19:53 <tswett> Aha! cd . works on the server.
22:20:34 <tswett> But /bin/echo doesn't, even though that file exists...
22:22:11 <tswett> This behavior doesn't seem to make sense. If I run system('/bin/echo albatross'), I get an internal server error. If I run system('/bin/echo'), my browser attempts to download the page.
22:22:34 <tswett> If I comment the line out, it works as expected: I see text.
22:23:37 <tswett> There goes the no-access-to-executables hypothesis. system('set') doesn't work.
22:25:09 <tswett> New hypothesis: it works if and only if the command has no output.
22:25:20 <tswett> uaaaaaaaai
22:25:46 <elliott> tswett: send headers first
22:25:47 <elliott> duh
22:25:55 <tswett> That's what I'm doing.
22:26:15 <tswett> This works: http://pastebin.com/TQBvdTNs
22:26:22 <tswett> Change "false" to "echo albatross", and it fails.
22:26:46 <elliott> can't open that now. will look in ~5m
22:27:12 <olsner> argh! that was some crappety-crap quality, rm -fr Season.5
22:27:13 -!- sebbu2 has changed nick to sebbu.
22:27:28 -!- augur has quit (Remote host closed the connection).
22:30:18 <olsner> and seasons 6 and 7 too... so it goes
22:31:46 * tswett pats elliott on the head repeatedly.
22:35:03 <elliott> what
22:39:51 <elliott> tswett: yep, i was right.
22:39:57 <elliott> tswett: you're not sending headers correctly
22:40:03 <elliott> they must be terminated with two newlines
22:40:47 <tswett> elliott: print sends a newline implicitly, doesn't it?
22:41:14 <tswett> This program *does* output two newlines, so the only potential problem there would seem to be that it's outputting them wrong.
22:41:26 <elliott> tswett: I'm pretty sure Python's print omits a newline if the string ends with one.
22:41:43 <elliott> Anyway, try \r\n\r\n.
22:41:45 <elliott> Rather than \n\n.
22:41:55 <elliott> So sys.stdout.write('blah\r\n\r\n')
22:43:02 <tswett> elliott: yeah, it doesn't work.
22:43:19 <elliott> Shrug
22:43:23 <elliott> Catch exceptions, print them
22:43:24 <tswett> http://pastebin.com/nUVk8zg8
22:43:28 <elliott> Catch exceptions, print them
22:43:36 <tswett> It doesn't throw any exceptions when I run it on the command line.
22:43:37 <tswett> But okay.
22:43:59 <elliott> the command line is a different environment.
22:45:37 -!- ais523 has quit (Remote host closed the connection).
22:47:53 <tswett> elliott: http://pastebin.com/NZQFH8UA
22:47:59 <tswett> Still a server error.
22:48:18 <elliott> Check server log filse
22:48:20 <elliott> files
22:48:21 <tswett> Oh, but now the system line isn't causing it.
22:49:00 <tswett> ...I didn't import sys.
22:49:06 <elliott> smart.
22:49:19 * elliott meant an except block around the whole thing, anyway
22:49:25 <elliott> I think the cgi module has an exception handler thing you can activate.
22:49:39 <elliott> Prints a pretty HTML page.
22:50:44 <elliott> tswett: Yeah, put
22:50:44 <elliott> import cgitb
22:50:44 <elliott> cgitb.enable()
22:50:45 <elliott> at the top.
22:51:22 <tswett> "malformed header from script. Bad header=www-data: test.py"
22:51:25 <tswett> That's not part of the header...
22:51:53 <elliott> Yes, it is.
22:52:01 <elliott> You print the header with sys.stdout.write.
22:52:07 <elliott> Which prints an exception in the header block.
22:52:14 <elliott> Exception traces make bad HTTP headers.
22:52:53 <tswett> But printing the header isn't causing an error, is it?
22:53:04 <tswett> But yeah, cgitb's probably a really good idea.
22:53:25 <elliott> <tswett> But printing the header isn't causing an error, is it?
22:53:27 <elliott> you didn't import sys
22:53:34 <elliott> you print the header with sys
22:53:35 <elliott> ???????
22:53:37 <tswett> Yes, but *now* I've imported sys.
22:54:08 <tswett> And I'm still getting a plain ol' regular error.
22:54:11 <elliott> does it work from the commandline
22:54:19 -!- Patashu has joined.
22:54:32 <tswett> Yes.
22:54:39 <elliott> what is the actual script at this point
22:54:43 <elliott> also, why are you using CGI again
22:55:08 <tswett> Because it seems easier than mod_perl or mod_python.
22:55:30 <elliott> why would you use either of those
22:55:44 <elliott> mod_python is unmaintained and I think deprecated, and I don't think many people use mod_perl any more
22:55:56 <elliott> I don't want to use RISC OS or QNX, so I guess I'll go for Windows
22:56:33 <elliott> just use django or bottle or something
22:56:46 <tswett> Oh... right. Django exists.
22:57:20 <elliott> this project is going very well, I see.
22:57:34 <elliott> just use mod_wsgi
22:57:43 <elliott> that's what everyone does
22:57:49 <tswett> Anyway, here's my code right now: http://pastebin.com/8zenkdpF
22:57:49 <elliott> + Django or Bottle or <favourite framework>
22:57:55 <tswett> It gives a plain internal server error.
22:58:03 <tswett> The log file says, "malformed header from script. Bad header=www-data: test.py".
22:58:10 <elliott> what does python test.py produce
22:58:28 <tswett> Content-type: text/plain
22:58:28 <tswett> > whoami
22:58:29 <tswett> tswett
22:58:29 <lambdabot> Not in scope: `whoami'
22:58:36 <tswett> Plus a line break after the Content-type line.
22:58:45 <tswett> You know, a blank one. irssi eats those.
22:58:47 <elliott> dunno
22:58:49 <elliott> anyway https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/ here you go
22:58:56 <tswett> Thank you infinitely much.
22:59:14 <elliott> I think the same applies to Bottle too
23:00:20 <tswett> Yeah, Django is probably better.
23:01:34 <elliott> tswett: oh, and see http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide /Delegation to Daemon Processes/
23:01:39 <elliott> you probably want to do that (probably=definitely)
23:01:44 -!- ive has joined.
23:04:43 <tswett> What's this mod_wsgi thing?
23:05:18 <elliott> The Apache module to run WSGI apps.
23:06:06 <elliott> Wow, Durus is <6000 lines...
23:06:56 <tswett> What's WSGI?
23:07:17 <elliott> http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface
23:08:34 -!- sllide has quit (Read error: Connection reset by peer).
23:09:31 <tswett> I see. Is that the sort of thing I would use instead of Django, or alongside it, or qué?
23:10:20 <elliott> tswett: Upon reading https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/, did you get the idea that Django was hosting documentation for a competitor to it, and saying that's the recommended way to deploy Django...?
23:10:31 <elliott> It's an API that both Django and Apache support.
23:11:11 <tswett> Your sarcasm is praiseworthy. I praise it.
23:11:12 -!- Sgeo|web has joined.
23:12:56 <elliott> Hey, who knows Latin
23:13:13 <olsner> ancient romans
23:13:17 <elliott> Thanks
23:13:30 <Sgeo|web> I know Latin-1
23:13:41 <Sgeo|web> (Well, erm, hmm)
23:14:03 <tswett> elliott: I can read some Latin and I can kind of dechiper some other Latin.
23:14:24 <tswett> I can give you a decent guess what the plural of "lusus naturae" is, for example.
23:14:47 <tswett> (Namely, "lusus naturae".)
23:14:58 <elliott> tswett: Great! Wiktionary tells me that "durus" is a Latin adjective meaning "hard, rough (of a touch)"/"harsh (of a taste)"/"hardy, vigorous"/"unyielding, unfeeling, stern"/"oppressive, severe"; what's the opposite.
23:15:06 <elliott> (In Latin, naturally.)
23:15:11 * elliott HAS A LIBRARY TO NAME.
23:15:47 <olsner> elliott: name it bob
23:15:54 <tswett> elliott: what do you want the opposite word to *mean*? Soft to the touch? Gentle? Weak? Pliable?
23:15:59 <elliott> Hmm, mollis looks close: "soft, delicare to the touch"/"pliant, flexible"/"mild"/"tender, weak"
23:16:19 <elliott> tswett: ALL OF THE ABOVE!
23:16:25 <elliott> Problem: "mollis" is sort of an ugly word?
23:16:30 <tswett> Yeah, that looks like a pretty darn good word.
23:16:39 <elliott> Okay fine I'll call it mollis.
23:16:44 <elliott> s/delicare/delicate/
23:16:45 <tswett> elliott: well, what do you think of "lentus"?
23:16:59 <elliott> "sticky, tenacious"/"slow, sluggish"
23:17:04 <elliott> "indifferent, phlegmatic"
23:17:07 <elliott> MY LIBRARY IS NONE OF THESE THINGS
23:17:26 <olsner> what's wrong with 'bob'?
23:17:34 <elliott> olsner: What's Bob in Latin
23:17:36 <tswett> elliott: use a different language, perhaps. Mol, mole, muelle, mou...
23:17:43 <elliott> tswett: Oh, mollis even names durus as an antonym on the page.
23:17:45 <tswett> elliott: we're both looking at exactly the same documents, aren't we.
23:17:54 <elliott> I find that quite thoroughly likely.
23:18:09 <elliott> Have to say I won't be going with the Portugese translation.
23:18:13 <elliott> s/gese/guese/
23:21:00 <tswett> Go with the Lojban translation!
23:21:13 <tswett> ranti
23:22:38 <elliott> Yeaaah.
23:23:56 <elliott> tswett: Hmm, "molli" is a bit nicer. But then it'd be a dative or ablative singular!!!!!
23:24:16 <elliott> And that would RUIN the PURITY.
23:24:39 <tswett> weich
23:25:18 <tswett> mola pehmeä morbido svak blando
23:25:29 <elliott> Totally.
23:25:38 <tswett> SVAK
23:45:17 <tswett> Ooh, Django has apps. It comes with authentication and stuff.
23:47:20 -!- ive has quit (Ping timeout: 245 seconds).
23:47:26 -!- tswett has quit (Changing host).
23:47:26 -!- tswett has joined.
23:49:00 <elliott> tswett: Hi tswett Warrigal ihope.
23:50:44 <tswett> I see you're referring to me by--wait, how old are you now? Are you an adult now?
23:50:54 <tswett> No, you're not.
23:50:57 <tswett> You're at most 16.
23:51:27 <pikhq> I'm afraid that elliott suffers from a rare form of dyslexia.
23:51:35 <pikhq> He is, in fact, swapping the digits in his age.
23:51:46 <elliott> * tswett (~Warrigal@unaffiliated/ihope) has joined #esoteric
23:52:04 <elliott> You evidently have three names. It is the only thing I can conclude.
23:52:21 <tswett> Ooh.
23:52:35 <Sgeo|web> His preferred name is one of those pieces of uncertainty that surround him
23:52:41 <tswett> pikhq: so he's actually St Atom 61?
23:52:44 <elliott> tswett: And I believe I'm a legal adult in Scotland, but not here.
23:52:53 <elliott> Which is relevant only because I googled it and Scotland came up.
23:53:06 <tswett> Yeah, I guess depending on the place, I go by tswett, Warrigal, or both adiosToreador and Tavros Nitram.
23:54:18 <pikhq> elliott: Neat trick. You can become a legal adult without leaving whatever-the-fuck-you-call-the-UK.
23:54:29 <elliott> I call the UK the UK.
23:54:57 <elliott> pikhq: I somewhat suspect it's about where you live, not your location.
23:54:59 <tswett> And I guess those are just the online handles I've been using recently. There's also uorygl, which I stopped using recently, and Tanner, the name I use when looking at something...
23:54:59 <pikhq> I mean, it's a bit hard to call it a country... Seeing as that would be England, Scotland, Wales, and Northern Ireland.
23:55:07 <tswett> Er. Someone.
23:56:32 <Sgeo|web> tswett: there's another online handle you're recently using
23:57:27 <tswett> Ooh, right. conduitController.
23:57:55 <tswett> elliott: call me whatever the fuck you want, as long as people know who you're referring to.
23:58:05 <elliott> tswett: Okay, whatever the fuck you want.
23:58:31 <tswett> elliott: I am ninety-nine point nine nine nine percent sure you will stop referring to me by that name within the week.
23:58:36 <tswett> But yeah.
23:58:57 <tswett> For example, don't call me "Mister Snuggles". People won't know who you're talking about. Don't call me "Ed Murphy" either.
23:59:07 <elliott> Deewiant: What does list-tries have over TrieMap... oh, it predates it by several months.
23:59:20 <elliott> tswett: Okay, Ed Murphy.
23:59:33 <Sgeo|web> I should attempt to understand finger trees, I think
23:59:42 -!- augur has joined.
2011-11-08
00:00:01 <elliott> Sgeo|web: http://apfelmus.nfshost.com/articles/monoid-fingertree.html
00:00:12 <Sgeo|web> ooh, ty
00:00:19 <tswett> elliott: ooh, here we go. Call me Pupa.
00:00:26 <elliott> tswett: No.
00:00:48 <tswett> Or call me "tswett, you should shut the fuck up, you've had too much caffeine lately".
00:01:38 <elliott> I'm having trouble distinguishing your behaviour from normal :)
00:01:47 <elliott> Do you always have this much caffeine?
00:02:03 <tswett> Nope.
00:02:18 <tswett> Though, elliott. What do I do in this channel on most days?
00:02:30 <elliott> Not talk, but I presume that's because you don't actually pay attention to it.
00:02:47 <tswett> Yeah.
00:03:13 <Sgeo|web> I've only seen the .. syntax in extensions to record stuff
00:03:37 <elliott> Sgeo|web: It's a placeholder.
00:03:52 <elliott> Sgeo|web: Note how it isn't code.
00:03:55 <elliott> "we want the annotations to fulfill"
00:04:40 * Sgeo|web is too tired for this
00:05:01 <elliott> That's what you always say.
00:06:35 * Sgeo|web has no desire to use global mutable variables, the ReaderT stuff should be sufficient I think
00:07:05 <elliott> Sgeo|web: Monad transformers over IO are ugly. You're binding a C API, so you're going to have to do a lot worse than global variables.
00:07:13 <elliott> They won't be exposed from outside the package, so it's quite irrelevant.
00:07:40 <elliott> Basically you're saying you'd rather infect all user API code with an implementation detail, than use one of the provided facilities intended for binding to C APIs.
00:10:23 <elliott> Sgeo|web: But *shrug* your code
00:10:31 <Sgeo|web> unsafePerformIO to make a global variable is intended to be used like that?
00:11:43 <elliott> unsafePerformIO was originally part of the FFI addendum to accomplish things like that. See http://hackage.haskell.org/package/safe-globals for a way to hide the ugly.
00:13:06 <Sgeo|web> Suppose something stupid like multiple invocations of the library.. somehow
00:14:04 <elliott> That's impossible.
00:14:14 <elliott> Unless the AW API supports that.
00:14:21 <elliott> Which we've established it doesn't, because it does awful global things.
00:15:35 <Sgeo|web> A hypothetical library that does
00:15:42 <elliott> You don't have one of those.
00:15:57 <elliott> Or are you trying to write one binding that works with multiple hypothetical APIs without changing the implementation??
00:16:08 <elliott> Heck, why not just make one Haskell library that binds to every C library ever without changing.
00:16:11 <elliott> dwim :: IO a
00:16:17 <Sgeo|web> Hmm, I probably should ask just to check that aw_int and the like don't send stuff over the wire
00:17:04 <Sgeo|web> If it does, it would be .. absurd to set every global to a blank variable
00:17:11 <elliott> What?
00:17:33 -!- tiffany has quit (Quit: nyu~).
00:17:42 * elliott doesn't think you have any idea what you're doing, if you think there's going to be a large number of globals, or if you think "blank variable" means anything.
00:18:06 <Sgeo|web> The C API has a large number of .. global-like things
00:18:19 <elliott> What makes you think you need to reflect those in Haskell?
00:18:25 <Sgeo|web> And I'm just hoping they're stored locally, rather than on the server
00:18:32 <elliott> I was suggesting these for internal use, because that's what you'd talked about earlier.
00:18:49 <Sgeo|web> elliott: I wouldn't, I would just.. I think kmc suggested setting those to a default value every function call
00:19:04 <Sgeo|web> Except for the ones that the function call needs modified
00:19:14 -!- TeruFSX_ has joined.
00:19:16 <elliott> Maybe it would help if you actually communicated the API issues involved rather than just asking as vague a question as possible.
00:19:32 -!- TeruFSX has quit (Ping timeout: 258 seconds).
00:20:00 <Sgeo|web> elliott: Many function calls require setting what the API calls attributes, such as using aw_int_set("AW_TELEPORT_X", 0); before the function call
00:20:19 <Sgeo|web> Events also often receive data which you retrieve by, e.g., aw_int("AW_TELEPORT_X")
00:20:22 <elliott> Googling doesn't suggest those quotes should be there.
00:20:30 <elliott> They look like #defines.
00:20:39 <Sgeo|web> Oops, you're right
00:20:59 <elliott> Sgeo|web: Every call has a defined set of parameters, yes? Going by http://www.activeworlds.com/sdk/aw_object_add.htm.
00:21:26 <elliott> Then you just need to poke each parameter, make the call, and read the parameter result.
00:21:26 <Sgeo|web> Yes
00:21:31 <elliott> (In the thread that's making the API calls, etc. etc. etc.)
00:22:05 <Sgeo|web> I'm... pretty sure I only need to ensure sequential access
00:22:16 <Sgeo|web> Rather than all having to be in the same thread
00:22:49 <elliott> Sgeo|web: So you want a global lock. Now we'll spend 3 minutes as you convince yourself that these two situations are equivalent.
00:23:09 <Sgeo|web> What two situations?
00:23:19 <Sgeo|web> This was the situation that I was using the global lock for
00:23:41 <elliott> Sgeo|web: The situation of having one thread making all API calls, and every thread acquiring a lock on each API call.
00:23:57 <elliott> Also remember that Haskell threads are very cheap, if that's what you're worrying about (tens of thousands at a time is fine).
00:24:19 <Sgeo|web> I thought global lock is easier to implement
00:25:14 <elliott> Both are trivial. Which one you want depends on your situation.
00:28:01 <elliott> Man, this code is hard to get a handle on.
00:28:05 <elliott> (Not your thing.)
00:33:48 <Gregor> There, now my machine is simultaneously running Debian (naturalismo), Windows 7, and #1 contender for the "Even Worse than Windows" prize Mac OS X.
00:34:58 <elliott> Gregor: At least OS X doesn't need Cygwin.
00:35:18 <olsner> cygwin in wine on os x? :)
00:39:08 <elliott> olsner: You should liberate this Python code by porting it to Haskell for me (note: incredibly non-trivial)
00:40:11 <olsner> first: liberate it from its misery using rm -fr
00:40:21 <elliott> But it's gooooood.
00:40:41 <olsner> then rewrite in haskell sometime, I might not feel like helping you with that :P
00:41:57 <olsner> nah, python code can't be good... I'll admit that it can work, but *good*?
00:42:45 <elliott> olsner: It's an ACID STM database with both file-based and network access in less than 6000 lines of code!
00:43:39 <olsner> aha! haskell has STM built-in! :)
00:43:56 <olsner> hmm, or maybe it's a library, w/e
00:43:56 <elliott> olsner: um, it's missing the database part.
00:44:06 <elliott> ghc has built-in _in-memory_ STM
00:44:16 <elliott> there's no way you can extend that to be file-based or w/e
00:44:39 <olsner> bah, how can it be hard? I have no knowledge of this being hard!
00:45:12 <elliott> olsner: you'd have to completely rewrite the ghc stm internals :P
00:45:15 <Sgeo|web> Doesn't the M refer to memory?
00:45:22 <Sgeo|web> So for things other than memory stuff, why call it STM?
00:45:32 <elliott> Because it's still memory, it's just non-volatile memory
00:45:39 <olsner> elliott: trivial! (given a sufficently smart reader to finish the exercise)
00:45:41 <elliott> Also because you have to have all the database in-RAM in Durus and similar
00:46:07 <elliott> olsner: I think the one thing every expert can agree on is that STM is not trivial :P
00:46:27 <olsner> their readers are just not sufficiently smart
00:47:19 <Sgeo|web> Could STM be implemented without compiler support?
00:47:24 <Sgeo|web> Albeit potentially inefficiently?
00:48:01 <olsner> I think they tried putting it in .NET and it was horribly inefficient, don't recall how much compiler support it took
00:48:06 <elliott> Sgeo|web: trivially
00:48:45 <elliott> olsner: tons; the problem is that stm sucks without purity
00:49:59 <Sgeo|web> Would it be particularly wrong for me to name a type Object?
00:50:21 <elliott> Not only will people kill you, but they might kill your family too.
00:50:23 <elliott> Object - not even once.
00:51:20 * Sgeo|web should learn lenses
00:51:29 <Sgeo|web> I can only assume that lenses make dealing with records easier
00:54:25 <elliott> lenses are just Lens whole part = whole -> (part, whole -> part)
00:54:34 <elliott> name :: Person -> (String, String -> Person)
00:54:45 <elliott> name (Person name age email) = (name, \name' -> Person name' age email)
01:00:56 <elliott> Sgeo|web: ^
01:01:05 <Sgeo|web> Ok
01:01:24 <elliott> + helper functions for modification, accessing within state monad + template haskell to derive them from a record definition
01:02:42 <olsner> hmm, 6000 lines of python, hopefully that's more python than I've ever read before
01:03:01 <olsner> meh, probably not :(
01:04:23 <elliott> olsner: Actually 5288 (+ 461 lines of mostly boilerplate)
01:04:50 <olsner> mostly boilerplate? doesn't that apply to the rest of the python code?
01:05:00 <olsner> unless it's all obfuscated python!
01:06:42 <elliott> olsner: it's actually remarkably boilerplate-free :P
01:06:58 <elliott> which makes it hard to read, I'm trained to ignore all but every fifth line when reading Python
01:07:29 -!- ive has joined.
01:07:34 <olsner> :)
01:19:38 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:37:00 <zzo38> Lenses form a category too, I think. And yes that is very good if you need more you could use a Template Haskell code to automatically generate the lens codes for each field.
01:43:53 <Sgeo|web> Can Template Haskell generate Template Haskell?
01:44:03 <zzo38> Sgeo|web: I don't think so.
01:44:31 <zzo38> But you might be able to fake it.
01:45:00 <olsner> time for *Template* Template Haskell!
01:45:09 <olsner> @quote majestic
01:45:09 <lambdabot> monochrom says: Welcome to #haskell, where @remember's are in majestic stereo!
01:45:17 <olsner> wrong majestic quote, nm
01:46:28 <zzo38> There should be some macro system that can do things with a Haskell code. That way you could generate Template Haskell and various other things. (There is C preprocessor but that isn't very good for Haskell.)
01:47:21 <zzo38> I mean, a macro system that could be used to make up do-notation, rather than requiring do-notation built-in to Haskell.
01:49:15 <Sgeo|web> For some reason I was under the impression that quasiquoters take arbitrary strings
01:50:10 <elliott> They do.
01:50:33 <elliott> @quote majestic
01:50:33 <lambdabot> Anonycale says: Welcome to #haskell, where your questions are answered in majestic stereo!
01:50:39 <elliott> @quote majestic
01:50:40 <lambdabot> Anonycale says: Welcome to #haskell, where your questions are answered in majestic stereo!
01:50:41 <elliott> @quote majestic
01:50:41 <lambdabot> monochrom says: Welcome to #haskell, where @remember's are in majestic stereo!
01:51:03 <olsner> @quote template.haskell
01:51:03 <lambdabot> ghc says: Can't represent a guarded lambda in Template Haskell
01:51:05 <olsner> @quote template.haskell
01:51:05 <lambdabot> ghc says: Cannot desugar this Template Haskell declaration
01:51:06 <olsner> @quote template.haskell
01:51:06 <lambdabot> ghc says: Can't represent a guarded lambda in Template Haskell
01:51:07 <olsner> @quote template.haskell
01:51:07 <lambdabot> ghc says: Can't represent a guarded lambda in Template Haskell
01:51:37 <olsner> meh, can't find it *shrug*
01:52:25 <olsner> @quote majesty
01:52:25 <lambdabot> malcolm says: I don't believe you need to invoke the full awesome majesty of Template Haskell
01:52:43 <olsner> now, imagine the awesome majesty of template template haskell
01:53:31 <elliott> :D
01:54:21 -!- copumpkin has joined.
01:54:54 -!- ive has quit (Ping timeout: 276 seconds).
01:55:41 <Sgeo|web> It occurs to me that Stanislav probably doesn't like Haskell
02:08:33 <zzo38> Quasiquotes do take arbitrary strings; it is sometimes the problem due to if you are using a Haskell syntax in them, and you have |] in a string or comment; it won't work.
02:11:40 <zzo38> If you combined Template Haskell with a system of macros that works well, you might be able to make up do-notation and more-notation using that, and possibly such things as anonymous classes, autonumbering, and so on.
02:14:07 <Gregor> Vorpal: BTW, Aero was off by default, it's smart about not turning it on on systems without good graphics.
02:16:57 -!- ive has joined.
02:18:33 <Sgeo|web> Isn't more notation your idea?
02:19:23 <zzo38> Sgeo|web: Yes it is. But I mean a more general system that could be used to make up such things, and even things already in Haskell such as do-notation.
02:20:16 <elliott> <Sgeo|web> It occurs to me that Stanislav probably doesn't like Haskell
02:20:21 <elliott> see comments on nock or urbit post or w/e
02:20:27 <elliott> but it's okay because: stanislav is an idiot!
02:20:39 <Sgeo|web> elliott: nock? urbit?
02:20:58 <elliott> http://moronlab.blogspot.com/2010/01/nock-maxwells-equations-of-software.html
02:20:59 <elliott> http://moronlab.blogspot.com/2010/01/urbit-functional-programming-from.html
02:21:00 <elliott> read in order
02:28:18 <Sgeo|web> In Nock, I don't quite get ^
02:28:38 <Sgeo|web> It seems to be meaningless when applied to a cell
02:28:52 <Sgeo|web> ...or is that the point?
02:29:20 <Sgeo|web> Hmm, I see other things with similar stuff
02:29:27 <Sgeo|web> I'm going to guess that that's the point
02:33:20 <olsner> hmm, haven't got my thinking brain in, that looks tricky
02:33:24 <elliott> Sgeo|web: The Urbit post doesn't actually require any understanding of Nock, FWIW
02:33:39 * Sgeo|web is now reading the Urbit post
02:33:43 <elliott> I've never actually done the challenge, but might sometime
02:37:04 <Sgeo|web> "These C functions, or jets, will take noun arguments and produce noun results. In between, they can do whatever the heck they want - so long as they produce the same result as the actual Nock formula."
02:37:07 <Sgeo|web> This sounds familiar
02:40:29 <Sgeo|web> "On Mars, SIN is taken to an extreme. Logically, Urbit is a single broadcast network - a single big Ethernet wire. Everyone sees everyone else's packets. "
02:40:41 <Sgeo|web> I was about to complain about security, but that's stupid, if you want security, encrypt it
02:41:51 <elliott> Nobody tell Sgeo|web how IP routers work.
02:42:22 <Sgeo|web> At least SIN forces people to realize it
02:46:44 <Sgeo|web> "Read the whole thing. Haskell fans, you'll know exactly where you can stick your monads."
02:46:45 <Sgeo|web> o.O
02:47:05 <Sgeo|web> There is a distinction between monads in general and monadic I/O
02:47:19 <elliott> The guy is hardly an expert
02:47:21 <elliott> (on Haskell)
02:47:40 <elliott> Monads and monadic IO are regularly conflated even by Haskellers
02:48:10 <shachaf> elliott: They are?
02:48:18 <elliott> Well, not _good_ Haskellers.
02:48:22 <shachaf> Monadic I/O isn't even fundamentally monadic in any way.
02:48:29 <shachaf> It's just a convenience thing.
02:48:51 <elliott> But it's trivial to find a tutorial written by someone good enough at Haskell to write real applications in it that talks about how monads are there to let you isolate IO side-effects.
02:48:52 -!- CakeProphet has joined.
02:48:53 -!- CakeProphet has quit (Changing host).
02:48:53 -!- CakeProphet has joined.
02:49:31 <shachaf> Oh, well, *tutorials*, sure.
02:49:49 <CakeProphet> good morgen comraderies
02:50:59 <shachaf> Good IO to you.
02:51:01 <shachaf> I mean monad.
03:01:56 <elliott> Sgeo|web: this is the particular stanislav remark I was directing you to: "Algebraic types and immutability: Yuck. Your Haskellian / type-theoretical mis-spent youth is showing. Actual computers contain rewritable storage and will likely always contain it. This is something to be celebrated, not a set of genitalia to be shamefully hidden behind a Christian fig leaf."
03:02:19 <elliott> he then proceeds to link to that stupid land of lisp comic whose own author happens to be a haskell fan :P
03:02:51 <Sgeo|web> I remember seeing someone say that data stores are monads
03:02:59 <Sgeo|web> I have no idea what that means precisely
03:05:31 <Sgeo|web> " For instance, to write Urbit in Haskell, you would need a Haskell interpreter written in Haskell. "
03:05:43 <Sgeo|web> What does ghc-api etc. count as?
03:06:00 <elliott> not homoiconic at all, and practically irrelevant in context
03:14:39 * Sgeo|web attempts to understand FRP
03:15:35 <CakeProphet> RIP Buick "Pimpmobile" Skylark, bereaved from us by the unwavering yet abiding clutches of the sibling forces of time and entropy (and perhaps the recklessness of its owner). Though it met its end in the shrinking confines of a large industrial steel compactor, it will always be remembered as the glorious mechanical steed that it was, matched only by the unbridled power of 150 horses and maybe better cars.
03:16:52 <Sgeo|web> ...Did Conal invent FRP?
03:16:57 -!- Jafet has joined.
03:18:02 <elliott> Sgeo|web: yes? why is this surprising
03:18:06 <elliott> "FRP was invented by a HUMAN???"
03:39:44 <Sgeo|web> Would it be a terrible idea to try to make an FRP version of the AW stuff?
03:43:16 <elliott> yes
03:45:10 <Sgeo|web> Why?
03:45:20 <Sgeo|web> Don't answer because I don't understand FRP
03:46:11 <elliott> yep! also because fitting existing C libs to FRP is painful. you would want reactive-banana, and that's way more suited to gui frameworks than network stuff
03:48:21 <Sgeo|web> "as the library can be hooked into any existing event-based framework "
03:50:34 <elliott> Sgeo|web: yes, i have used reactive-banana, i am aware of how it functions
03:50:50 <Sgeo|web> Huh, I didn't know you could put a where clause there
03:51:58 <elliott> where
03:52:49 <Sgeo|web> https://github.com/HeinrichApfelmus/reactive-banana/blob/master/reactive-banana-wx/src/Arithmetic.hs line 41
03:53:49 <elliott> it's a declaration
03:53:52 <elliott> declarations have where clauses
03:54:12 <Sgeo|web> I guess I thought only top-level declarations could do that
03:58:09 <Sgeo|web> Is reactive-banana good in general?
03:58:14 <Sgeo|web> Or just for hooking into existing stuff?
03:59:11 <elliott> what is there but hooking into existing stuff
03:59:26 <elliott> you don't live in a world where your library - opengl, sdl, gtk, whatever - uses frp, do you?
04:00:37 <Sgeo|web> So, addHandler is provided by reactive-banana
04:01:30 <Sgeo|web> No, wait, fromAddHandler
04:01:31 <Sgeo|web> And newAddHandler
04:02:43 <elliott> newAddHandler is not always needed, it is just a helper
04:03:20 <Sgeo|web> Still not quite sure what it does, but I guess its type is IO (EventSource ())?
04:03:24 <Patashu> hey, I found The Best Language Ever http://bondi.it.uts.edu.au/
04:03:33 <Patashu> it has more braces than lisp
04:04:09 <elliott> Sgeo|web: read the example
04:04:33 <Sgeo|web> I am
04:04:54 <Sgeo|web> Oh, right, EventSource is application-defined
04:05:45 <elliott> Patashu: looks cool
04:06:47 <Sgeo|web> Somehow, fromAddHandler knows to take a ...so, fromAddHandler always takes a pair of AddHandler a, and a -> IO ()
04:07:06 <elliott> uh, no
04:07:43 <Patashu> http://www-staff.it.uts.edu.au/~cbj/patterns/13012009/ found the bondi examples
04:07:47 <Patashu> let cloud = Banks [Bank (Name "Cloud",Accountss [Accounts (AccountName "Qin",Balance 3333.00)],TermDepositss [TermDeposits (TdName "Cloud",MinDeposit 500,Period 1,Rate 3.25)])];;
04:08:17 <elliott> doesn't look unreasonable
04:08:51 * Sgeo|web has no idea what <$ is
04:08:52 <Sgeo|web> :t <$
04:08:53 <lambdabot> parse error on input `<$'
04:08:56 <Sgeo|web> :t (<$)
04:08:56 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
04:09:08 <Sgeo|web> Oh right, that thing
04:09:14 <Sgeo|web> :t ($>)
04:09:15 <lambdabot> Not in scope: `$>'
04:09:20 <Sgeo|web> boo
04:10:30 <Sgeo|web> :t mapAccum
04:10:30 <lambdabot> Not in scope: `mapAccum'
04:12:29 <Sgeo|web> roll :: () -> StdGen -> (Reels, StdGen)
04:12:31 <Sgeo|web> Uh, why
04:12:33 <Sgeo|web> Why the ()
04:13:50 <elliott> ?
04:14:38 <Sgeo|web> http://hackage.haskell.org/packages/archive/reactive-banana/0.4.3.0/doc/html/Reactive-Banana-Implementation.html this is a little clearer, tbh
04:15:43 <Sgeo|web> As is http://hackage.haskell.org/packages/archive/reactive-banana/0.4.3.0/doc/html/Reactive-Banana-Model.html when I stop being scared of the scary type, I think
04:16:05 <elliott> model is MUCH clearer
04:16:17 <elliott> trust me
04:16:34 <elliott> note how that omits
04:16:36 <elliott> import qualified Reactive.Banana.PushIO as Implementation
04:16:38 <elliott> Sgeo|web: ^\
04:17:36 <Sgeo|web> .Implementation has an example though
04:17:38 <Sgeo|web> >.>
04:18:22 <elliott> read Model. if you can't grok Model you will fail at the lower-level implementation of THE SAME API
04:19:05 * Sgeo|web is reading
04:19:20 <Sgeo|web> Seems simple so far, and I finally understand Behavior and Event, I think
04:20:07 <elliott> behavior is a signal. Time -> a
04:20:20 <elliott> like audio, or mouse position
04:20:21 <Sgeo|web> ....apply takes a function which itself changes over time?
04:20:35 <elliott> event is a set of one-off occurrences
04:20:44 <elliott> e.g. a key being pressed
04:20:54 <elliott> [(Time,a)]
04:22:14 <Sgeo|web> What sort of things are Behavior f (a -> b)? An example?
04:23:08 <elliott> any behavior constructed with the provided functions that is function-valued
04:27:41 <Sgeo|web> I don't see any such
04:27:52 <Sgeo|web> Except for making constant values into behaviors
04:28:24 <elliott> Sgeo|web: see FRP class
04:29:19 <Sgeo|web> Uh, stepper, I guess?
04:30:13 <Sgeo|web> That ...no?
04:31:43 <elliott> ANYHING ENDING -> Behavior
04:31:45 <elliott> sheesh
04:32:23 <elliott> i.e. stepper, accumB
04:32:31 <Sgeo|web> Two of those assume I have events that are functions
04:32:53 <elliott> so make them. sheesh
04:32:53 <Sgeo|web> (yeah yeah, bad use of "are")
04:36:13 <Sgeo|web> Wait, FRPs are Applicative
04:36:43 <Sgeo|web> ....Not entirely sure if that really helps me
04:37:26 <elliott> uh
04:37:27 <elliott> no
04:37:31 <elliott> behaviors are
04:37:40 <elliott> frp is just "implementation of frp"
04:37:54 <elliott> its a code organisation tool for model vs implementation
04:38:00 <elliott> nothing semantic
04:39:28 <Sgeo|web> ShShould I shy away from Discrete?
04:39:48 <elliott> no
04:42:41 <zzo38> Does the Alternative/MonadPlus instance for Parsec follow the identity law?
04:43:04 <elliott> not left identity!
04:43:13 <elliott> or was it right
04:43:50 -!- DCliche has joined.
04:45:04 <Sgeo|web> counter = accumulate ($) 0 (fmap (+1) eventUp `union` fmap (subtract 1) eventDown)
04:45:15 <Sgeo|web> How does fmapping onto an Event produce a Behavior?
04:45:25 <zzo38> I know it doesn't follow the right zero law; but some people (myself included) think the right zero law should not be one of them, and only the left zero law and monoid laws should apply.
04:45:46 <zzo38> (That is, for MonadPlus. For Alternative, the left zero law is optional too.)
04:45:50 <Sgeo|web> I guess I should look for accumulate in reactive-banana
04:45:55 <Sgeo|web> But I don't see it
04:46:16 <elliott> where's that from
04:46:25 <Sgeo|web> http://apfelmus.nfshost.com/blog/2011/03/28-essence-frp.html
04:46:31 <elliott> that post is old
04:46:57 <elliott> api has changed
04:46:58 -!- Darth_Cliche has quit (Ping timeout: 260 seconds).
04:47:09 <elliott> i think that's accumB or sth
04:47:58 <zzo38> Here is an instance which I believe does follow the identity laws: instance Alternative IO where { empty = fail []; x <|> y = catch x $ \e -> modifyIOError (\z -> if z == userError [] then e else z) y; };
04:49:09 <zzo38> It follows the left zero law, too; so you could make it MonadPlus as well if you do not care about the right zero law.
04:50:14 <zzo38> Did you know that the Gregorian calendar and Gregorian chant are both named after popes but they are two different popes?
04:50:44 <zzo38> Do you think my instance follows the laws correctly? If not, please tell me what is wrong with it.
04:52:46 <elliott> Sgeo|web: in the comments you can see accumukate
04:52:51 <elliott> become accumB
04:55:42 <Sgeo|web> ty
04:59:14 <Sgeo|web> http://stackoverflow.com/questions/4113207/frp-reactive-how-to-use-filtere is this the same package?
04:59:20 <zzo38> What would be the correct parameters to define the Ecclesiastical moon in Swiss Ephemeris? What would be the parameters to define artificial satellites? Are either of these possible?
04:59:33 <Sgeo|web> No
04:59:40 <Sgeo|web> zzo38: that No was not to you
04:59:59 <elliott> Sgeo|web: see reative-banana tag
05:03:36 <zzo38> The parameters are: epoch of elements, equinox, mean anomaly at epoch, semi-axis, eccentricity, argument of perihelion, ascending node, inclination, and whether it orbits the Earth or the Sun. Any of these parameters can have T terms where T = (tjd - epoch) / 36525. For example, the intramercurian Vulcan uses: J1900,JDATE, 252.8987988 + 707550.7341 * T, 0.13744, 0.019, 322.212069+1670.056*T, 47.787931-1670.056*T, 7.5
05:03:58 <Sgeo|web> I think maybe I should see things in Behaviors and Events as "trapped" (bad terminology, I know), in an Applicative, and I use <$> and <*> the way I might with a monad
05:04:08 <Sgeo|web> No do notation though
05:05:48 <zzo38> Sgeo|web: A monad is really applicative too, but the way it is programmed in Haskell doesn't make it do that normally.
05:06:28 <Sgeo|web> zzo38: I know that monads are applicatives, but not all applicatives are monads
05:13:51 -!- MDude has changed nick to MSleep.
05:33:59 <elliott> gah
05:34:02 <elliott> durus, reveal your secrets
05:35:07 <elliott> @src Alternative
05:35:07 <lambdabot> class Applicative f => Alternative f where
05:35:07 <lambdabot> empty :: f a
05:35:07 <lambdabot> (<|>) :: f a -> f a -> f a
05:43:13 * elliott very briefly considers demanding Sgeo|web write his code for him.
05:45:28 <elliott> Patashu: bondi looks very interesting.
05:45:39 <elliott> bit light on documentation..
05:48:46 <monqy> demanding sgeo|web to write your code: a good idea????????
05:51:24 <elliott> monqy: you might like my code, it will be a good code (once it writ)
05:51:40 <monqy> oH???
05:52:30 <elliott> monqy: yes: a fully-ACID object persistence store with STM semantics
05:52:54 <elliott> tl;dr: write program with standard STM transactional semantics, get reliable, durable file-based storage
05:53:16 <monqy> mm
05:53:21 <elliott> later: transparent operation on datasets larger than memory (perhaps), server support
05:54:17 <elliott> monqy: now, guess what language has an existing, industrial-strength, corporate-backed, open-source, performant ~5500 line implementation of all this already
05:54:20 <elliott> (do not cheat; good luck guessing)
05:54:32 <elliott> (yes, including full transactional STM semantics and server support)
05:54:37 <elliott> (ok not the larger-than-memory stuff but w/e)
05:55:42 <monqy> it's too late, I cheated hours ago
05:55:49 <monqy> by briefly looking at the chat back then
05:55:58 <elliott> monqy: bad person
05:56:01 <monqy> ;_;
05:56:12 <elliott> monqy: but seriously, who is gifted with all that knowledge and then forced to write python code :(
05:56:48 <monqy> bad people
05:56:53 <monqy> i mean
05:56:56 <monqy> bad people forced
05:57:03 <monqy> i feel bad for whoever was forced
05:58:30 <elliott> monqy: http://sprunge.us/NjEY
05:58:35 <elliott> this is the kind of thing i have to base my code on :P
05:59:29 <monqy> :(
05:59:55 <monqy> i;ve have to lots of python recently because schoole (ha) ha()
06:00:05 <elliott> monqy: incidentally i'd like to just use acid-state but it has severe limitations for me :(
06:00:10 <monqy> :(
06:00:18 <elliott> you have to declare the transactions on your data-type upfront
06:00:26 <elliott> and can't remove them or anything, only add
06:00:28 <elliott> not compositional
06:00:50 <elliott> i think the only way to fix that with acid-state's model would be if you could serialise functions
06:04:08 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:04:20 <elliott> monqy: but yeah... hopefully it will be good???
06:04:34 <monqy> hopeuflly
06:05:43 -!- mtve has quit (Ping timeout: 260 seconds).
06:06:03 -!- mtve has joined.
06:06:38 <elliott> monqy: it would be nice if i could find a way to benefit from sharing... like, you don't want adding an element to a huge map to write out the huge map again in the transaction, you'd like to just write out the additional stuff and have a pointer back
06:06:40 <elliott> will have to see
06:06:53 <elliott> would be especially nice if i can do that for every structure, not rewriting each structure for this
06:17:21 <elliott> monqy: gdtodntihgt monqey
06:17:33 <monqy> goodotnighte
06:17:34 <elliott> goudnihgt
06:17:57 <elliott> to do: read acid-state's Log.hs and things, read durus, zzzzzzzzzzzzzzzzzzz
06:18:00 -!- elliott has quit (Quit: Leaving).
06:31:01 -!- Zuu has quit (Ping timeout: 244 seconds).
06:34:40 <zzo38> Is the ring of sets normalizable?
06:36:50 <zzo38> Probably not.
06:42:36 -!- oerjan has joined.
06:48:06 -!- Jafet has quit (Quit: Leaving.).
07:24:35 -!- zzo38 has quit (Remote host closed the connection).
07:33:39 -!- ive has quit (Ping timeout: 256 seconds).
07:44:41 -!- CraZzYboY90 has joined.
07:44:56 -!- CraZzYboY90 has left.
07:49:43 <coppro> lol I crashed x
07:57:01 -!- monqy has quit (Quit: hello).
08:12:27 -!- ive has joined.
08:33:41 -!- ive has quit (Quit: leaving).
08:56:46 -!- Madoka-Kaname has quit (Read error: Connection reset by peer).
08:58:31 -!- Madoka-Kaname has joined.
08:58:31 -!- Madoka-Kaname has quit (Changing host).
08:58:31 -!- Madoka-Kaname has joined.
09:05:45 <Vorpal> <Gregor> Vorpal: BTW, Aero was off by default, it's smart about not turning it on on systems without good graphics. <-- nice
09:12:09 <fizzie> Yes, it only enables Aero if your WEI is 3 or more.
09:12:14 <fizzie> (Windows Experience Index.)
09:12:39 <Vorpal> fizzie: the global WEI or the graphics one?
09:12:45 <Vorpal> the former doesn't really make sense
09:13:13 <Vorpal> after all my desktop scores 2.5 due to a slow hdd for windows 7. The rest of the components score 7.5-7.8
09:13:14 <fizzie> I think it's the base score.
09:13:19 <Vorpal> hm
09:13:28 <fizzie> But not sure.
09:13:52 <Vorpal> I don't remember it areo was on or not after install. It is turned off now though, and with windows classic theme on
09:16:49 <fizzie> http://windows.microsoft.com/en-US/windows-vista/Windows-Experience-Index-Understand-and-improve-your-computers-performance-in-Windows-Vista "Base score: 3.0 to 3.9 .. Windows Aero will typically be enabled automatically on the computer."
09:17:13 <fizzie> They might well have changed the logic on seven, though.
09:17:35 <fizzie> After all, the scores themselves go up to eleven^W7.9 now.
09:18:07 <Vorpal> fizzie: what was the old max value?
09:19:21 <fizzie> 5.9 in Vista.
09:19:36 <Vorpal> strange they didn't make it an even 6.0
09:19:52 <fizzie> It also starts at 1.0 and not zero.
09:19:56 <Vorpal> heh
09:41:27 -!- oerjan has quit (Quit: leaving).
09:45:36 -!- ais523 has joined.
09:50:41 -!- ais523 has quit (Ping timeout: 245 seconds).
09:50:47 -!- ais523 has joined.
09:57:13 <CakeProphet> I can't tell if I'm well-rested or tired.
09:57:29 <CakeProphet> I got 6 WHOLE HOURS OF SLEEP in a row so I should be way more rested than usual.
09:57:46 <CakeProphet> however, I feel like dog shit. This is probably because I only got 6 hours of sleep still.
09:59:27 <Vorpal> ouch
09:59:44 * CakeProphet is a zombie.
10:00:25 <Vorpal> I haven't slept well either. And I have to drive today.
10:00:27 <Vorpal> Ugh.
10:00:35 <CakeProphet> oh did I mentioned that a deer hit my car. Yes, that car I just bought to replace my old car not too long ago.
10:00:45 <CakeProphet> Vorpal: that's always fun. Driving on no sleep is great.
10:00:50 <CakeProphet> an adventure!
10:00:58 <Vorpal> I slept some, just not as much as I would want to
10:01:03 <Vorpal> like 6 hours instead of 8
10:02:20 <Vorpal> CakeProphet: besides I will be picking up another guy on the way to university, since we live in the same town and study the same stuff at university we usually travel together to save money.
10:02:26 <Vorpal> oh and it is my parents car
10:02:32 <Vorpal> parents'
10:04:30 <CakeProphet> fun.
10:04:44 <CakeProphet> I got a speeding ticket in my parent's car when I was borrowing it to drive when I didn't have a car.
10:04:54 <CakeProphet> a few weeks ago.
10:05:12 <CakeProphet> but yeah, lately I've been doing that 4-hour nap thing.
10:05:16 <CakeProphet> I mean, not voluntarily
10:05:36 <CakeProphet> it just happens that I'll go to bed at like 10 AM and wake up at 2 AM unable to go back to sleep until the sun comes up
10:07:08 <Vorpal> CakeProphet: I doubt I will get a speeding ticket.
10:07:16 <Vorpal> I never had problems keeping the right speed
10:08:11 <CakeProphet> that's the one bit of recent misfortune I could have prevented, I suppose.
10:09:08 <Vorpal> besides it is a Fiat (though a large station wagon one), so not exactly a fast car anyway. And although there is no automatic speed thingy, the terrain is kind of hilly so you need to adjust speed all the time anyway, hard to forget about speed then.
10:11:57 <CakeProphet> well it's usually not that I forget speed it's just that I don't consider the same speeds to be fast that other people seem to
10:12:11 <Vorpal> eh?
10:12:19 <CakeProphet> there are mountainous roads where I live and I still drive like a madman. :P
10:12:20 <Vorpal> doesn't it say on the sign what the speed limit is
10:12:25 <CakeProphet> oh yes.
10:12:31 <CakeProphet> that's beside the point. :P
10:12:36 <Vorpal> and you have a speed indicator in the car?
10:12:39 <CakeProphet> yep.
10:12:43 <Vorpal> then what is the issue
10:12:56 <CakeProphet> well see...
10:13:02 <CakeProphet> maybe this is just an American thing, but
10:13:20 <CakeProphet> some people intentionally break the law by driving fast because they think the speed limits are ridiculous.
10:13:38 <CakeProphet> I am one such person.
10:13:44 <Vorpal> anyway hardly mountainous roads here, just slightly hilly. I live on a plain, it is just that the road goes over the few hills that exist.
10:13:57 <Vorpal> CakeProphet: that is rarer in Europe
10:14:03 <CakeProphet> I've noticed.
10:14:09 <CakeProphet> in previous speed limit conversations.
10:14:11 <Vorpal> CakeProphet: beside you could lose your driving license from that if you go too fast.
10:14:14 <CakeProphet> with Europeans.
10:14:20 <Vorpal> right
10:14:30 <Vorpal> CakeProphet: don't you have speed cameras in US?
10:14:46 <CakeProphet> not many. I've seen maybe one or two in my lifetime.
10:15:01 <CakeProphet> and they're easy to spot and slow down for, hardly something to make me paranoid all the time.
10:15:05 <Vorpal> quite a few here
10:15:09 <Vorpal> and there are mobile ones too
10:15:22 <CakeProphet> also I know the speed traps along my commonly taken routes, so I know when to slow down.
10:15:24 <Vorpal> as in, mounted on a trailer, that they park somewhere for a day
10:15:28 <CakeProphet> so I can pretty much drive as fast as I want otherwise.
10:16:04 <CakeProphet> most American drivers on the highway are in fact speeding much of the time.
10:16:22 <Vorpal> strange
10:16:33 <CakeProphet> I'm one of those insane people that are driving faster than the "normal" speeders.
10:16:38 <Vorpal> ...
10:16:44 <Vorpal> irresponsible
10:17:05 <CakeProphet> I have have to get an insane number of speeding tickets to lose my license, but yes I suppose.
10:17:14 <Vorpal> CakeProphet: anyway, where you speeding when you hit that deer?
10:17:20 <CakeProphet> I'm not chalking up my speeding ticket to mere bad luck.
10:17:28 <CakeProphet> Vorpal: yes, though I would say it was more like the deer hit me.
10:17:38 <Vorpal> would you have been able to stop if you had not been speeding?
10:17:41 <CakeProphet> basically crashed itself into the side of my car. I didn't even see except for in the corner of my eye.
10:17:54 <CakeProphet> a split second thing really. nothing I could do.
10:18:02 <Vorpal> not when speeding indeed
10:18:12 <Vorpal> but maybe you should try keeping to the speed on the signs
10:18:13 <CakeProphet> not at any speed. >_>
10:18:29 <Vorpal> <CakeProphet> oh did I mentioned that a deer hit my car. Yes, that car I just bought to replace my old car not too long ago. <-- what happened to the previous car?
10:18:30 <CakeProphet> I could have been going 25 mph and the same thing would happen.
10:18:49 <CakeProphet> Vorpal: it got old.
10:18:51 <Vorpal> ah
10:18:56 <CakeProphet> engine started knocking.
10:19:08 <Vorpal> CakeProphet: anyway you have to keep real life and GTA separate :P
10:19:16 <CakeProphet> believe me I do.
10:19:27 <Vorpal> didn't sound like it
10:19:58 <CakeProphet> sheesh, Europeans are all strict on their speed limit stuff it seems. :P
10:20:39 <CakeProphet> it's an incredibly minor thing. I drive reasonable speeds when appropriate. Such as in traffic.
10:21:10 <CakeProphet> to say that I should follow a flat rate of speed as posted by a sign is ridiculous, in my opinion.
10:21:34 <Vorpal> of course you have to drive slower sometimes. I never claimed otherwise
10:21:39 <Vorpal> but that should be the upper limit
10:21:57 <CakeProphet> especially when the people setting up those signs generate large amounts of revenue from people going faster than said number on sign.
10:22:25 <Vorpal> I mean, I wouldn't drive 70 km/h on a road marked 70 km/h if the condition of the road, visibility and other traffic didn't allow that in a safe way.
10:23:03 <Vorpal> CakeProphet: wait what? Please don't tell me that speed limits is done by for-profit corporations in US....
10:23:15 <CakeProphet> local government.
10:23:30 <Vorpal> right, crazy state system in US
10:23:33 <CakeProphet> though a number of private businesses can benefit.
10:23:49 <CakeProphet> for example there are online ticket paying services.
10:23:52 -!- ghost_ has joined.
10:23:57 <Vorpal> huh
10:23:59 <CakeProphet> who make money from setting up their services for local governments.
10:24:02 <CakeProphet> things like that.
10:24:07 -!- hagb4rd has joined.
10:24:20 -!- ghost_ has quit (Client Quit).
10:24:29 <CakeProphet> so in my mind speed limits are just a way to take money from me. I suppose I've been doing a good job of allowing them to do that, since I ignore them. :P
10:24:42 <Vorpal> ... you are insane
10:25:00 <CakeProphet> well, no need to state the obvious.
10:26:23 * CakeProphet has generally never thought of himself nor intended to ever be a law-abiding citizen.
10:26:39 <hagb4rd> cakeprophez.state=insane; //consider it noted
10:30:01 <Vorpal> bbl, university
10:55:45 -!- GreaseMonkey has quit (Quit: The Other Game).
11:40:45 -!- augur has quit (Remote host closed the connection).
11:41:40 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:45:56 -!- pikhq_ has joined.
11:46:10 -!- pikhq has quit (Ping timeout: 252 seconds).
12:01:03 -!- ais523 has quit (Ping timeout: 258 seconds).
12:01:15 -!- ais523 has joined.
12:01:15 -!- ais523 has quit (Changing host).
12:01:15 -!- ais523 has joined.
12:02:16 <Madoka-Kaname> @src forever
12:02:17 <lambdabot> Source not found. You untyped fool!
12:06:48 <Madoka-Kaname> > sequence$[[1,2,3],[4,5,6]]
12:06:48 <lambdabot> [[1,4],[1,5],[1,6],[2,4],[2,5],[2,6],[3,4],[3,5],[3,6]]
12:21:06 -!- augur has joined.
12:30:12 <fizzie> Why the $?
12:40:01 -!- ais523 has quit (Ping timeout: 240 seconds).
12:41:06 -!- ais523 has joined.
12:41:37 <ais523> CakeProphet: the council here in Birmingham is actually cracking down on private parking enforcer people
12:41:49 <ais523> some of them are acting vaguely dubiously
12:47:16 <fizzie> Private parking tickets have been a very contentious issue here in Finland too for a while now.
12:47:35 <fizzie> ISTR that a court did sort-of legitimize them quasi-recently though, much to the disappointment of some/many.
12:48:05 <fizzie> Also they had given a parked-on-the-grass-because-answering-an-emergency ambulance a parking ticket or something like that.
12:53:31 <fizzie> Right; the district court and the court of appeal both said private companies just plain aren't allowed to write parking tickets, but in June this year the supreme court reversed their decisions and said it's okay.
12:55:09 <fizzie> (Though the... uh, committee for constitutional law, has stated that according to them private parking-enforcement is unconstitutional.)
12:59:30 <fizzie> Also another funny story: one parking enforcement company (Parkki Oy) apparently had ticketed the car of another; then the other company sent the first one a 350 eur "clean-up" bill because their car had a sticker saying you're not allowed to attach/leave any material (like ads or whatever) to it.
13:04:08 <atehwa> fizzie: good to hear this story here, I've been too lazy to follow the discussion :)
13:04:35 <fizzie> I've been too don't-have-a-car to follow it.
13:04:51 <fizzie> Though apparently they've been leaving parking tickets to bicycles too.
13:05:12 <fizzie> Not that that's exactly enforceable, what with no license plates or anything.
13:05:49 <fizzie> (The companies in question seem to be just a slight bit overly profit-oriented.)
13:10:34 -!- boily has joined.
13:12:16 <CakeProphet> fizzie: I find it's best not ask any questions of Madoka-Kaname concerning what the hell they're doing with lambdabot.
13:12:29 <CakeProphet> also, I private parking tickets = the most absurd thing I've ever heard of.
13:12:54 * CakeProphet actually still has an unpaid parking ticket from the police department on his campus.
13:14:46 <CakeProphet> -I
13:15:37 <fizzie> As far as I can figure out, the current status in Finland is that they can write tickets, but they can't force the owner of the car to pay them if e says someone else was driving, so they'd have to go to court, which they haven't so far done with anyone; on the other hand, there's also a law initiative thingie to explicitly legalize private parking enforcement, but it's not law yet.
13:17:10 <CakeProphet> in the case of campus parking tickets they can simply put a hold on my account.
13:17:32 <CakeProphet> which makes it impossible to do important things like fix financial aid, register for classes, and ultimately graduate.
13:17:52 <CakeProphet> until I give them $25 for not having a little sticker on my car. :)
13:18:22 <CakeProphet> so absurd.
13:24:06 <CakeProphet> @hoogle String -> String -> String
13:24:06 <lambdabot> System.FilePath.Windows (<.>) :: FilePath -> String -> FilePath
13:24:06 <lambdabot> System.FilePath.Posix (<.>) :: FilePath -> String -> FilePath
13:24:06 <lambdabot> System.FilePath.Windows addExtension :: FilePath -> String -> FilePath
13:25:05 <ais523> CakeProphet: there was a case found recently where a carpark had rigged its pay-and-display ticket machines to deliberately miscount the money put into them
13:25:24 <ais523> and then they clamped cars which stayed longer than the amount actually printed on the ticket, and charged ridiculous amounts to unclamp them again
13:27:03 <ais523> it's vaguely interesting that they got caught, actually
13:28:12 <CakeProphet> > unwords $ map shows [1,2] ++ map (++) ["red", "blue"] <*> [" fish"]
13:28:14 <lambdabot> "1 fish 2 fish red fish blue fish"
13:28:26 <CakeProphet> ais523: I would think they stick out like a sore thumb if they're charging ridiculous amounts.
13:28:37 <ais523> for the unclamping? no, they all do that
13:28:52 <ais523> and that's being clamped down on too
13:28:59 <CakeProphet> ha. ha. ha
13:29:01 <CakeProphet> :P
13:29:11 <ais523> not deliberate, but I noticed it before I pressed return
13:29:17 <CakeProphet> > intercalate ", " $ map shows [1,2] ++ map (++) ["red", "blue"] <*> [" fish"]
13:29:18 <lambdabot> "1 fish, 2 fish, red fish, blue fish"
13:31:17 <CakeProphet> what is the purpose of shows again?
13:31:39 <CakeProphet> er, I mean, obviously I know what it does but what is the benefit of it over using ++ explicitly.
13:37:39 <CakeProphet> @hoogle (Applicative f) => f (a -> b) -> f a -> b
13:37:40 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
13:37:41 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
13:37:41 <lambdabot> Control.Applicative liftA :: Applicative f => (a -> b) -> f a -> f b
13:38:21 <Deewiant> CakeProphet:
13:38:28 <Deewiant> > let f 0 = ""; f n = f (n-1) ++ show n in take 5 $ f 500000
13:38:28 <Deewiant> "12345"
13:38:28 <Deewiant> (4.61 secs, 478035512 bytes)
13:38:28 <Deewiant> > let f 0 = id; f n = f (n-1) . shows n in take 5 $ f 500000 ""
13:38:28 <Deewiant> "12345"
13:38:30 <lambdabot> "*Exception: stack overflow
13:38:30 <lambdabot> "12345"
13:38:30 <Deewiant> (0.64 secs, 215319872 bytes)
13:39:16 <CakeProphet> ah
13:40:16 <CakeProphet> would it be fair to say that shows is similar to CPS??
13:42:02 <CakeProphet> > iterate (. shows n) id ""
13:42:03 <lambdabot> Couldn't match expected type `[GHC.Types.Char] -> t'
13:42:03 <lambdabot> against inferr...
13:42:12 <CakeProphet> :t iterate
13:42:14 <lambdabot> forall a. (a -> a) -> a -> [a]
13:42:37 <CakeProphet> erm, nevermind :P
13:45:43 -!- zzo38 has joined.
13:45:47 -!- Phantom_Hoover has joined.
13:53:30 -!- variable has quit (Excess Flood).
13:59:37 -!- variable has joined.
14:28:24 -!- Guanxin has joined.
14:28:46 -!- Guanxin has left.
14:34:34 -!- copumpkin has quit (Ping timeout: 248 seconds).
14:35:08 -!- copumpkin has joined.
14:35:29 -!- sllide has joined.
15:03:55 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:18:20 <zzo38> I found some things about new version of Microsoft Excel. If you enter a text into a cell that starts with "A1-" then it will be formatted as an Islamic date (even in the English version). There is also a BAHTTEXT function which converts a number to Thai text and adds "Baht" suffix. There is no function for English numbers text. Apparently they added that feature for the purpose of ordering Thai food.
15:28:12 -!- copumpkin has joined.
15:32:03 <zzo38> According to Wikipedia, "Baht" is the Thai currency. So it doesn't seem to make sense to use that for ordering Thai food within the United States.
15:39:17 -!- MSleep has changed nick to MDude.
15:43:34 <zzo38> "It's been suggested (by an anonymous Excel MVP) that the Excel programmers enjoy Thai food, and they created this function to facilitate email orders to Redmond Thai restaurants. This theory has not yet been confirmed -- but then again it hasn't been denied either."
15:54:15 <zzo38> Actually from what I can find, the real reason seems to be that it was included in older Thai versions of Excel, but the new version includes all the functions including non-English functions.
15:57:31 <zzo38> I try to run Sakura MML compiler to MIDI, but I get error message about ConvToHalfSign1.
15:59:56 <zzo38> In addition, all menus are completely unreadable; they have only question marks on them.
16:01:06 -!- chickenzilla has quit (Ping timeout: 245 seconds).
16:01:10 <zzo38> Maybe it is for Japanese system only?
16:01:11 -!- chickenzilla has joined.
16:04:23 <CakeProphet> zzo38: forall f g xs. map f (map g xs) = map (f.g) xs
16:04:24 <Phantom_Hoover> http://www.channel4.com/programmes/spaced/4od
16:04:25 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
16:04:26 <Phantom_Hoover> Oh god.
16:04:27 <Phantom_Hoover> Oh god.
16:04:29 <CakeProphet> is this rewrite rule used by default in GHC?
16:04:32 <Phantom_Hoover> What if it never comes back up.
16:04:38 <CakeProphet> also the corresponding filter rule?
16:04:39 <Phantom_Hoover> What if they've taken it down for good.
16:05:07 <Phantom_Hoover> IT'S JUST LIKE THE LAST EPISODE OF SPACED
16:05:54 -!- Ngevd has joined.
16:16:41 <zzo38> I don't know if such rewrite rule is used by default
16:16:48 <Ngevd> Hello!
16:23:05 <CakeProphet> zzo38: ah just read about "list fusion"
16:23:18 <CakeProphet> that uses rewrite rules to remove intermediate lists between some common list functions.
16:25:38 <CakeProphet> {-# RULES
16:25:39 <CakeProphet> "++" [~1] forall xs ys. xs ++ ys = augment (\c n -> foldr c n xs) ys #-}
16:25:48 <CakeProphet> is the rewrite ruke for ++
16:25:53 <CakeProphet> *rule
16:26:05 -!- elliott has joined.
16:27:03 <CakeProphet> the map rewrite rules are quite clever.
16:33:42 <CakeProphet> elliott: hey, how are you?
16:33:59 <elliott> annoyed at tswett for stealing ais523's challenge to me :)
16:34:10 <Ngevd> He did?
16:34:15 <elliott> see a-d
16:34:40 <Ngevd> Where am I seeing a-d?
16:35:03 <ais523> Ngevd: it's a reference to the nomic Agora
16:35:05 <ais523> http://agoranomic.org
16:35:10 <Ngevd> Oooh
16:35:11 <ais523> we had a suspicion it might be Turing-complete
16:35:12 <CakeProphet> Ngevd: duh. :P
16:35:24 <ais523> so I challenged elliott to try to prove it, as e had proven for believed-state-of B Nomic
16:35:29 <Ngevd> That big scary nomic
16:35:34 <elliott> ais523: I did? wow
16:35:43 <elliott> Ngevd: it's not scary, there's like 6 active players and nothing's happening
16:35:44 <ais523> didn't you write a some-language-to-B compiler?
16:35:49 <elliott> ais523: oh, hmm, I do recall that
16:35:55 <ais523> elliott: it's coming out of a slump atm
16:35:57 <Ngevd> Which is the big scary nomic?
16:36:00 <elliott> back when i used to be cool :)
16:36:08 <elliott> Ngevd: none, nomics aren't popular enough to be big and scary
16:36:13 <ais523> Ngevd: Agora is often called scary, but it isn't really
16:36:14 <elliott> blognomic players think agora is scary because they're silly
16:36:16 <ais523> or at least shouldn't be
16:36:23 <elliott> agora is also very slow unlike blognomic :P
16:36:25 <ais523> people see the numbers on the ruleset and get scared
16:36:32 <elliott> ais523: i had a dream where blognomic died because i went idle, btw
16:36:47 <ais523> that's a weird dream
16:36:55 <CakeProphet> I like how LibreOffice autocorrecst naive to naïve and then highlights it as a spelling error.
16:37:07 <CakeProphet> with a recommendation of naive.
16:37:20 <elliott> ais523: what's surprising is that they actually took it seriously, and moved to another game, which was hosted on something almost like a google group, but defying all logic
16:37:31 <elliott> CakeProphet: heh
16:37:57 <ais523> elliott: don't google groups defy most logic anyway?
16:37:58 <Ngevd> I had a dream that I could administer a nomic
16:38:04 <Ngevd> Then it all went horribly wrong
16:38:07 <ais523> there's only a bit remaining left to defy
16:38:08 <Ngevd> Or was that real life?
16:38:11 <elliott> ais523: you haven't seen my dream programs
16:38:19 <ais523> no, probably nor has anyone else
16:38:20 <CakeProphet> I have a dream I was playing awesome pen and paper RPGs
16:38:28 <elliott> ais523: I have
16:38:30 <ais523> do you see them visually? or do you just dream they're there?
16:38:33 <CakeProphet> </story>
16:38:44 <CakeProphet> ais523: I dream that I have friends who like them and play them.
16:39:02 <CakeProphet> then I wake up to the painful sting of reality.
16:39:02 <elliott> ais523: I see them visually in a dream!
16:39:30 <Ngevd> I just thought I autotabbed, but I really just typed "Cake"
16:39:50 <elliott> ais523: does blognomic usually spend entire dynasties constantly making proposals and never actually using them?
16:39:56 <ais523> elliott: often when I'm dreaming, I don't see things as images unless I concentrate on what they look like
16:39:57 <ais523> elliott: yes
16:40:05 <ais523> normally, no more than two and a half rules, on average, will actually be releant
16:40:16 <elliott> maybe I won't bother deidling
16:40:18 <ais523> the others will be used once and then forgotten
16:40:31 <Ngevd> Sad category: http://en.wikipedia.org/wiki/Category:Games_of_nomic
16:40:53 <elliott> ais523: oh, and after i found out blognomic died, i realised it was another victory for agora :)
16:41:10 <elliott> the perfect military strategy: annoy your opponent until you both get bored; the opponent dies weeks later
16:41:11 <CakeProphet> releant? deidling? what is going on in this conversation.
16:41:24 <ais523> *relevant
16:41:31 <ais523> and deidling is the opposite of idling
16:41:34 <CakeProphet> oooooooooh :>
16:41:37 <ais523> as in, starting to do something, rather than starting to do nothing
16:41:43 <CakeProphet> ais523: well I got what releant was.
16:41:45 <ais523> sometimes I fly around in a spaceship :>
16:41:50 <CakeProphet> but deidling did not look like de-idling.
16:42:05 <elliott> ais523: don't, CakeProphet has ruined that smiley :'(
16:42:13 <CakeProphet> what are you talking about it's awesome. :)
16:42:18 <elliott> i even told him about ESO's official copyright claim to it! but no.
16:42:24 <CakeProphet> it's the most obnoxious emoticon ever.
16:44:01 <CakeProphet> you can't get your emoticons mixed up with your peoplethoughts. It's not a very fertile mindset.
16:44:04 <elliott> 10:20:39: <CakeProphet> it's an incredibly minor thing. I drive reasonable speeds when appropriate. Such as in traffic.
16:44:04 <elliott> 10:21:10: <CakeProphet> to say that I should follow a flat rate of speed as posted by a sign is ridiculous, in my opinion.
16:44:04 <elliott> oh, I get it: Americans are equipped with a psychic ability to tell whether there's other cars on the road they're on or not
16:44:23 <CakeProphet> elliott: no, just mirrors and stuff.
16:44:40 <CakeProphet> also I drive a lot at night, in a small town.
16:44:45 <elliott> oh! so then you have infinitely fast reflexes when a car comes into view. ok
16:44:50 <CakeProphet> but no I'm not infallible. :P
16:45:20 <Ngevd> elliott, Americans treat cars as we treat pedestrians, by and large.
16:45:24 <elliott> CakeProphet: hmm, maybe we should institute some sort of maximum speed you can drive at on the roads, so that for the occasional case where a car does come in when you're not expecting it, your lack of fallibility doesn't lead to accidents or death... hmmmmmm...
16:45:31 <elliott> s/fall/infall/
16:45:38 <elliott> Ngevd: heh
16:47:12 <CakeProphet> elliott: better solution: be American and therefore the best drivers in the world.
16:47:26 <Ngevd> Nah, Icelanders are better
16:47:42 <Ngevd> Don't you read your Scandinavia and the World?
16:47:58 <elliott> 10:23:03: <Vorpal> CakeProphet: wait what? Please don't tell me that speed limits is done by for-profit corporations in US....
16:47:59 <elliott> 10:23:15: <CakeProphet> local government.
16:47:59 <elliott> 10:23:30: <Vorpal> right, crazy state system in US
16:48:12 <elliott> Vorpal: it's not crazy when you have that much populated landmass
16:48:22 <CakeProphet> also local as in city government usually.
16:48:24 <CakeProphet> not states.
16:48:33 <CakeProphet> depending on the road probably.
16:48:54 <CakeProphet> actually no I think it's completely local except for interstate highways.
16:49:07 <CakeProphet> because speed limit changes between jurisdictions I find.
16:49:12 <CakeProphet> even on some highways.
16:49:27 <CakeProphet> though interstate highways tend to be fairly consistent for the most part.
16:49:52 <elliott> 12:59:30: <fizzie> Also another funny story: one parking enforcement company (Parkki Oy) apparently had ticketed the car of another; then the other company sent the first one a 350 eur "clean-up" bill because their car had a sticker saying you're not allowed to attach/leave any material (like ads or whatever) to it.
16:49:54 <elliott> finland :')
16:50:10 <CakeProphet> and yeah, good luck trying to administrate every minute detail of American society from Washington DC.
16:50:13 <Phantom_Hoover> Wait... you can do that in Finland?
16:50:49 -!- elliott has changed nick to Iambdabot.
16:51:10 <Iambdabot> > "hi"
16:51:11 <lambdabot> "hi"
16:51:22 <Ngevd> Yam be da bot?
16:51:31 <Iambdabot> @tell Madoka-Kaname Stop fucking with me already!
16:51:31 <lambdabot> Consider it noted.
16:51:34 -!- Iambdabot has changed nick to elliott.
16:51:35 <Vorpal> <elliott> Vorpal: it's not crazy when you have that much populated landmass <-- indeed, but some of the stuff that is local govt in US should probably be federal IMO.
16:51:38 <Vorpal> bbl
16:51:51 <elliott> Vorpal: probably more the other way around.
16:52:20 <CakeProphet> elliott: that's a popular sentiment in the US.
16:52:32 <CakeProphet> more with conservatives but not exclusively.
16:52:44 <elliott> i'm no libertarian :)
16:53:15 <CakeProphet> apparently everyone in the Us is a libertarian.
16:53:21 <CakeProphet> provided they know what it is.
16:53:32 <CakeProphet> (gross exaggeration)
16:54:05 <CakeProphet> hmmm I think I've got my first Skype spam.
16:54:21 <CakeProphet> "NOTIFICATION URGENT ALERT is calling you"
16:54:35 <Vorpal> elliott: you use chrome/chromium right?
16:54:39 <Ngevd> Wow, I didn't realise that exists, CakeProphet
16:54:40 <elliott> yes
16:54:53 <CakeProphet> Ngevd: I was oblivious as well.
16:55:01 <Vorpal> elliott: is there a way to make chrome and/or chromium save open tabs when you close it, and restore them when you open it.
16:55:10 -!- sebbu2 has joined.
16:55:10 -!- sebbu2 has quit (Changing host).
16:55:10 -!- sebbu2 has joined.
16:55:18 <elliott> Vorpal: yes. it's on the first page of preferences. did you check?
16:55:35 <Vorpal> elliott: I did, I somehow missed it. Beats me why it isn't default though...
16:55:56 <elliott> it's kind of annoying since i use sleep as tab gc :)
16:55:56 <Ngevd> Vorpal, that feature reeeeaaally annoys me
16:56:01 <CakeProphet> elliott: I like how that is still somehow one of the reasons people prefer Firefox over Chrome, even though they both support it.
16:56:05 <Ngevd> I close browsers to clear my mind
16:56:09 <Vorpal> heh
16:56:23 <elliott> i still have it on though, to recover from accidental closes
16:56:24 <Vorpal> Ngevd: I just let them pile up until the browser gets sluggish, then I gc.
16:56:27 -!- sebbu has quit (Ping timeout: 248 seconds).
16:56:38 <Ngevd> It's how I escape TVTropes
16:56:41 <elliott> Vorpal: good luck with that, chromium takes about ten windows filled with tabs to get sluggish ime
16:56:51 <elliott> and that's on this puny machine
16:56:51 <Vorpal> this doesn't work well on my new computer though, it takes ages for firefox to get sluggish now
16:57:04 <Vorpal> I mean, on my old computer 70 tabs was about it, now it is more like 700
16:57:10 <Vorpal> (in firefox)
16:57:37 <elliott> I think I'd disable reopening tabs on startup if the history was better.
16:57:56 <elliott> I want my history to track which tabsets in which windows I had open at each given moment, and be able to answer questions like "what tab did I click a link in to open this other tab?".
16:58:03 <Vorpal> elliott: btw I have to say that modern firefox are way less of memory hogs.
16:58:13 <Vorpal> firefox versions*
16:58:16 <elliott> History was accurate when browsing was one tab in one window, but that hasn't been the case for years now.
16:58:45 <Vorpal> elliott: depends on what sort of history. The "you opened this page this day" kind of history still works, doesn't it?
16:58:55 <CakeProphet> elliott: have you noticed that sometimes chrome doesn't preserve google-searches-from-"omnibar" in history sometimes?
16:58:59 <CakeProphet> sometimes?
16:59:11 <elliott> CakeProphet: dunno
16:59:33 <elliott> Vorpal: yes, it records all pages you opened. here's another kind of history that also preserves that: an unordered set of pagse
16:59:34 <elliott> pages
16:59:36 <CakeProphet> hmmm, and now for some reason I can't get it to do that.
16:59:47 <elliott> Vorpal: the point is, since tabs have become commonplace, history is now throwing away a lot of relevant information
17:00:01 <Vorpal> elliott: hm...?
17:00:09 <Vorpal> what more is there than timestamp?
17:00:09 <elliott> Vorpal: what
17:00:21 <elliott> Vorpal: ok, history records the state of the browser
17:00:25 <elliott> in varying degrees
17:00:26 <elliott> throughout time
17:00:28 <Vorpal> yep
17:00:33 <elliott> degree 0: set of urls, no time information
17:00:37 <Vorpal> sure
17:00:38 <elliott> degree 1: ordered set of urls with timestamp information
17:00:43 <Vorpal> yep
17:00:55 <elliott> degree 2: ordered set of urls with timestamp /and tab layout/ information
17:00:59 <Vorpal> ah
17:01:09 <elliott> degree 3: ordered set of urls with timestamp /and tab layout/ information, plus tracks tab parentage (open link in new tab -> current tab becomes parent of created tab)
17:01:18 <elliott> yes, degree 3 would actually be really useful for me
17:04:03 <Vorpal> well okay
17:05:04 -!- monqy has joined.
17:07:13 <atehwa> I wonder if I should write still one round of assignments.... :/
17:07:30 <CakeProphet> elliott: also instead of maintaining only a linear sequence of history for each tab it should be a multiway tree. :) so you can move forward, back, left, and right.
17:07:30 <atehwa> I'm afraid not many will care to do them.
17:07:39 -!- sebbu3 has joined.
17:07:39 -!- sebbu3 has quit (Changing host).
17:07:40 -!- sebbu3 has joined.
17:07:55 * elliott is guilty, I only did half of them
17:08:03 * elliott bad person
17:08:11 <atehwa> tabs are unnecessary, if you have w3m-style history
17:08:15 <CakeProphet> I haven't even clicked the link.
17:09:04 <elliott> hmm, what does w3m history look like?
17:09:14 <elliott> i've wanted a unified history-tab system for aaages
17:09:14 <CakeProphet> atehwa: no dupdog assignments? :P
17:09:34 <CakeProphet> "prove that dupdog is not Turing complete" would be a good assignment
17:10:00 <atehwa> elliott: w3m stores all history (also future history) until you explicitly throw it out
17:10:18 <atehwa> when you enter a new page, the page is added in history right above the page you came from.
17:10:19 <Ngevd> Future history?
17:10:26 <CakeProphet> Ngevd: when you go back I assume
17:10:29 <Ngevd> Aaah
17:10:34 <CakeProphet> it creates "future" history.
17:10:38 <atehwa> Ngevd: those pages where you've been but "back"-ed from.
17:11:15 -!- sebbu2 has quit (Ping timeout: 258 seconds).
17:11:53 <elliott> atehwa: Meh, that doesn't store any hierarchy of recency information. :/
17:12:01 <elliott> (Or, where does it move the history entry if you open a page from history?)
17:12:04 <atehwa> CakeProphet: I can look into that. But I was thinking about making the next assignments in language design, not use.
17:12:41 <CakeProphet> atehwa: how about proofs instead!
17:12:51 <atehwa> elliott: the new pages are always added to the part of the history list where you currently are
17:12:58 <elliott> hmm
17:13:05 <CakeProphet> actually I suppose the problem would be "prove that dupdog is or is not Turing complete"
17:13:05 <atehwa> CakeProphet: there were some proof assignments already
17:13:34 <atehwa> elliott: basically, w3m history could be augmented with link paths and recency lists, but I don't know if it improves it any
17:13:47 <Ngevd> Would Hiafu be a compiled language?
17:14:05 <elliott> atehwa: well, I need something along those lines, so that I can switch between currently-relevant pages without the hundreds of pages I opened in the meanwhile being in the way
17:14:09 -!- tiffany has joined.
17:14:10 <CakeProphet> 12:13 -NickServ(NickServ@services.)- Information on kallisti (account kallisti):
17:14:17 <elliott> my web browsing strategy is not exactly conventional.
17:14:20 <elliott> or productive.
17:14:21 <CakeProphet> 12:13 -NickServ(NickServ@services.)- Last seen : Mar 13 01:25:08 2011 (34 weeks, 2 days, 15:48:07 ago)
17:14:27 <CakeProphet> how long does it take for nicks to expire?
17:14:31 * CakeProphet wants that one.
17:14:32 <Ngevd> Hello, tiffany
17:14:49 <atehwa> elliott: I sometimes specifically throw out cruft history in w3m in order to have a nice, clean history :)
17:14:53 <tiffany> hai
17:14:56 <elliott> CakeProphet: /j #freenode, /nick kallisti, ask for it to be dropped
17:15:01 <Ngevd> Howare you?
17:15:03 <elliott> atehwa: that's revisionism :'(
17:15:10 <CakeProphet> elliott: no I think this is a trait common to some people. programmers especially.
17:15:11 <Ngevd> s/wa/w a/
17:15:18 <CakeProphet> (that kind of web browsing "strategy")
17:15:31 <tiffany> cakeprophet, this one was inactive for 2 years and I went to #freenode and it took them like a month to finally drop it for me :s
17:15:36 <elliott> CakeProphet: most people say "oh i have SO MANY TABS" to mean enough tabs that you can't see the titles on one window
17:15:44 <elliott> i mean enough tabs that you can't see the titles in ten irregularly-sized windows
17:15:46 <atehwa> elliott: basically, you could have a "history trashcan" for history that you haven't used for a long time :)
17:15:49 <Ngevd> Would ~ATH count as an esoteric programming language?
17:16:05 <elliott> no, only a joke language
17:16:19 <CakeProphet> apocalypse oriented programming.
17:16:45 <Ngevd> Can I make an article for it?
17:16:48 <Ngevd> On the wiki?
17:16:50 <CakeProphet> elliott: oh did I mention Act 6 is going to be amazing?
17:17:03 <CakeProphet> you know, now that I actually understand what is going on.
17:17:07 <elliott> Ngevd: probably, but it wouldn't be very interesting, and nobody else would ever edit it :)
17:17:29 <elliott> you should probably just link to the wikia article on it, if you /really/ want to.
17:17:36 <elliott> anyway, hmm
17:17:44 <elliott> i can work on my fun code or my easy code
17:17:47 <elliott> easy code!
17:17:56 <monqy> but fun code is fun
17:18:03 <CakeProphet> elliott: so you just leave tabs open so that your feeble monkey brain can revist them later to remember what the fuck you were doing?
17:18:07 <elliott> monqy: but hard
17:18:14 <monqy> hard is fun when it's fun
17:18:19 <elliott> CakeProphet: no, i just leave tabs open because why would i close a tab
17:18:26 <elliott> monqy: ok then you write it for me if it's so fun
17:18:32 <monqy> but code is never fun :(
17:18:41 <CakeProphet> to sanely navigate a set of tasks at once.
17:18:42 <CakeProphet> >_>
17:18:43 * Sgeo|web always has excessive amounts of tabs open
17:18:58 <CakeProphet> I tend to prune my tabs these days.
17:19:30 <CakeProphet> having a workspace sort of system would be nice. basically tabsets instead of multiple windows.
17:19:39 <elliott> CakeProphet: itt: firefox tab groups
17:19:41 <elliott> (they suck)
17:19:45 <Ngevd> I have a bonsai browser.
17:19:49 -!- tiffany has quit (Remote host closed the connection).
17:19:51 <Ngevd> I prune it often and keep it small
17:19:51 <monqy> is it any good
17:19:53 <CakeProphet> elliott: never used those, but I doubt it's what I want.
17:20:06 <Ngevd> However, it looks like a full-sized browzer
17:21:06 <elliott> 16:04:23: <CakeProphet> zzo38: forall f g xs. map f (map g xs) = map (f.g) xs
17:21:06 <elliott> 16:04:29: <CakeProphet> is this rewrite rule used by default in GHC?
17:21:10 <elliott> CakeProphet: see RULES pragmas in base source
17:21:37 <CakeProphet> elliott: already did. logread moar nub.
17:21:54 <CakeProphet> actually just look at the first thing I say when you join.
17:25:06 -!- tiffany has joined.
17:25:15 <CakeProphet> my hobby: patronizing people via ancient internet protocols.
17:25:27 <monqy> good hobey
17:26:13 <CakeProphet> I wonder if IRC will be in Ancient History of PRogramming classes, 2000 years in the future.
17:26:32 <CakeProphet> what a terrible class that would be.
17:27:13 <Ngevd> And then, according to the Internet Jargon File, Tim Berners-Lee, a member of the Equites class, created the Internet
17:27:28 <CakeProphet> actually that probably won't happen as we'll be part of the singularity hivemind and thus have infinite access to all accumulated human knowledge.
17:27:46 <monqy> im future envy
17:28:29 <CakeProphet> another possible scenario: breakdown of civilization, end of human existence, long distances of space travel rendering an all-encompassing singularity impossible, etc, etc, etc, etc.
17:28:32 <Vorpal> CakeProphet: or society has collapsed.
17:28:33 <CakeProphet> man predicting the future is fun.
17:28:53 <Vorpal> snap
17:30:01 <Vorpal> CakeProphet: I don't think you can make any reasonable prediction about that topic further into the future than 10-15 years.
17:30:26 <CakeProphet> I'd go on the safe side and say 10 years.
17:30:45 <CakeProphet> 5-10
17:31:02 <CakeProphet> or you know, 1-10
17:31:56 <CakeProphet> man future speculation was so much easier when it was just about spaceships, lasers, and flying cars.
17:32:03 <Phantom_Hoover> I predict that the Singularity will occur the day before Kurzweil would otherwise have died.
17:32:04 <CakeProphet> now we're getting into freaky shit.
17:32:12 <Phantom_Hoover> (Joke shamelessly stolen from elliott.)
17:32:26 <Vorpal> well of course, there could always be a meteor, nearby supernova or other rare catastrophic event, sure. But climate change probably haven't caused civilization to collapse in the next 15 years. Nor does singularity in that time frame seem likely.
17:32:35 <elliott> Phantom_Hoover: I'm gonna feel really bad for the guy if it hits us the day after Kurzweil dies.
17:32:56 <Phantom_Hoover> elliott, I'd be so busy laughing I'd be written off as a sociopath.
17:33:12 <elliott> Phantom_Hoover: It's OK, those thoughts would be extracted from your head before they actually happen.
17:33:14 <Phantom_Hoover> Nearby supernovae are fairly unlikely, IIRC.
17:33:38 <Vorpal> Phantom_Hoover: isn't there one possible candidate that could fry us in gamma iirc?
17:33:41 <CakeProphet> elliott: america god bless neutrino
17:34:08 <Sgeo|web> elliott: Do I have any reason for choosing one of reactive-banana or Yampa over the other?
17:34:09 <Phantom_Hoover> Vorpal, a GRB, which is a fair deal less well-understood than a supernova, making predictions hard.
17:34:20 <Sgeo|web> (Possibly replacing Yampa with that fork, Animas I think)
17:34:23 <Vorpal> Phantom_Hoover: sorry, but what is a GRB?
17:34:49 <elliott> Sgeo|web: use reactive-banana
17:34:56 <elliott> Sgeo|web: but don't, if you're trying to do AW stuff
17:34:58 <CakeProphet> I wonder to what degree standardization lockdown (is there an actual term for that?) will slow down technological progress.
17:34:58 <Phantom_Hoover> Gamma ray burst; an extremely bright, highly directional burst of gamma rays.
17:35:05 <Vorpal> Phantom_Hoover: I thought those were caused by supernovas?
17:35:22 <elliott> CakeProphet: nobody cares about standards
17:35:36 <Vorpal> elliott: err. USB?
17:35:41 <CakeProphet> elliott: well I suppose they get revised pretty drastically over the years.
17:35:42 <Phantom_Hoover> There are two kinds of them based on spectral data, and one of those is hypothesised to be caused by a certain class of supernova.
17:35:44 <CakeProphet> in any case.
17:36:00 <Sgeo|web> elliott: Well, nothing wrong with making a normal monadic IO library for AW, then using reactive-banana on top of that, right?
17:36:00 <Vorpal> Phantom_Hoover: ah
17:36:07 <elliott> Vorpal: people regularly violate power specs for usb i believe
17:36:11 <CakeProphet> but will we be using HTTP like 100 years from now?
17:36:21 <Vorpal> elliott: heh, so why does stuff not get fried?
17:36:39 <elliott> Sgeo|web: you will find that frp does not help you at all here, at least not in current forms. but certainly, you will waste your time regardless of what i say, so have fun...
17:36:49 <CakeProphet> elliott: I guess I was referring more to protocols and specs than "standards", or were we talking about the same thing?
17:36:49 <elliott> Vorpal: because computer manufacturers don't care about the specs either?
17:36:53 <Vorpal> heh
17:37:13 <Vorpal> elliott: so you mean devices request more than 500 mA?
17:37:15 <Vorpal> hm
17:37:26 <elliott> dunno, i just recall stuff violating the power stuff
17:37:49 <CakeProphet> this is how garbage collection works in elliotts brain
17:37:53 <CakeProphet> replace concepts with stuffs.
17:38:18 <elliott> stuff stuff stuff
17:39:17 <Vorpal> CakeProphet: quite a broken algorithm there. Since obviously this thing was still reachable
17:40:44 <Sgeo|web> iirc, devices draw more than allowed by default without actually asking
17:40:55 <CakeProphet> Vorpal: well the rules still remain but more specific references are replaced by stuff.
17:41:02 <Vorpal> hm
17:41:33 <CakeProphet> Vorpal: I think that's the sound of Vorpal overthinking it. :P
17:41:41 <Vorpal> CakeProphet: that is more like lossy compression .
17:41:49 <Vorpal> s/ \././
17:41:52 <CakeProphet> yep, that's what that sound was.
17:42:14 <Vorpal> CakeProphet: no it was me looking up how many "s" there were in "lossy" :P
17:43:18 <elliott> sigh. this guy on reddit doesn't understand why a compiler could be faster than cpython
17:43:22 <CakeProphet> depends on how losy youar with yor verds.
17:43:26 <CakeProphet> elliott: whut.
17:43:37 <CakeProphet> elliott: I wonder if he knows how computers work.
17:43:43 <elliott> CakeProphet: see http://www.reddit.com/r/programming/comments/m4rbs/python_3_implementation_in_haskell/c2y45o5 onwards
17:44:32 <CakeProphet> "So what? The compiler used for C is pretty state-of-the-art too" hahahahahahahaha
17:45:12 <CakeProphet> yeah he doesn't get interpreter vs. compiler.
17:45:44 <CakeProphet> honestly why do you talk to people on reddit
17:45:46 <CakeProphet> I don't understand.
17:45:57 <CakeProphet> almost every comment I've read on reddit is bad.
17:46:20 <elliott> i have nothing better to do
17:46:36 <elliott> CakeProphet: anyway /r/haskell is almost universally intelligent
17:47:13 <CakeProphet> gcc is pretty good, but it's no specialiser. It can't turn an interpreter into a compiler as good as itself.
17:47:17 <CakeProphet> that would be a good compiler.
17:47:27 <CakeProphet> I want that compiler.
17:47:50 <CakeProphet> or, specialiser?
17:47:59 <elliott> yes, that is exactly what specialisers do
17:48:00 <elliott> click the link and read
17:48:48 <CakeProphet> "Otherwise the only way to make it faster is by analysing the program during run time and get the information there (jit)."
17:48:51 <CakeProphet> it is THE ONLY WAY.
17:49:02 <CakeProphet> to write something that is faster than an interpreter.
17:49:46 <CakeProphet> is this what Python mind virus does to some unfortunate souls? or is this something else?
17:50:24 <Sgeo|web> How could one compile a language that uses eval? I mean, besides including an interpreter with it
17:50:49 <elliott> Sgeo|web: how could one compile a language that uses printf? i mean, besides including a formatted printer with it
17:51:10 <CakeProphet> you could also jit evals.
17:51:18 <CakeProphet> sounds kind of unwholesome.
17:51:22 <CakeProphet> jitting evals.
17:53:58 -!- Taneb has joined.
17:54:03 -!- Ngevd has quit (Ping timeout: 248 seconds).
17:55:11 <CakeProphet> elliott: you know you want to ditch @ and write the best programming language.
17:55:15 <CakeProphet> compiler.
17:55:20 <elliott> That's what @ is, you moron.
17:55:55 <CakeProphet> hmmm, okay.
17:56:04 * Sgeo|web comments
17:56:27 <Sgeo|web> Actually, that might not be the most accurate comment, but maybe it will be like a cluebat
17:56:39 * CakeProphet aggrieves.
17:56:47 <elliott> or maybe you're just wasting time without the endless charm, charisma and genius required to make it an excellent fun time like i have
17:56:55 <elliott> :DDDDDdddddddddd
17:57:18 <CakeProphet> elliott "not full of himself" hird
17:58:09 <Sgeo|web> Maybe he is just thinking about eval?
17:58:46 <CakeProphet> I think he's just stupid.
17:58:50 <CakeProphet> >_>
17:59:31 <Gregor> elliott is clearly not full of himself.
17:59:36 <CakeProphet> and thinks super-fast optimized python builtins = magically the overhead of interpreting your program with no optimization isn't slow
17:59:36 <Gregor> He doesn't even capitalize his name.
17:59:40 <Gregor> People who are full of themselves capitalize.
18:00:05 <Phantom_Hoover> Of course he's full of himself, it'd be extremely disturbing if he was full of someone else.
18:00:21 * CakeProphet is full of oerjan.
18:00:25 * CakeProphet burps.
18:00:44 <CakeProphet> s/u/e/
18:01:26 <Gregor> Berps?
18:01:45 <elliott> http://www.reddit.com/r/programming/comments/m4rbs/python_3_implementation_in_haskell/c2y51fr ;; I used bullet points, bold and em dashes, so you know it's authoritative.
18:02:05 <elliott> "That is precisely the point you can barely optimize python via static analysis, the information to do that just isn't there."
18:02:05 <CakeProphet> but yes, if your Python libraries provided every single piece of code you needed as a C builtin... then your "Python code" is going to be fast.
18:02:22 <Gregor> I seeeeeeeeeeeeeeeeeeeeeeeee.
18:02:22 <elliott> Gregor: You work in the dynamic languages space, find me one of them papers showing that the behaviour of dynamic programs can be statically analysed in the vast majority of cases.
18:02:23 <elliott> I know I've read one.
18:03:02 <Gregor> There are lots of papers that make that claim, very few (to none) that back it up.
18:03:11 <elliott> Gregor: OK, s/vast majority/some/ :P
18:03:26 <CakeProphet> optimizing python compiler + JITC eval = better Python
18:03:28 <elliott> Gregor: This guy is claiming that you can do /so little static analysis/ that it's impossible for a static, optimising compiler to beat CPython.
18:03:35 <elliott> Ever.
18:03:37 <Gregor> elliott: Yeah, that's kinda siwwy.
18:03:48 <Gregor> elliott: There's actually one on the dynamic behavior of Python out there somewhere :P
18:03:58 <CakeProphet> elliott: python is just too l33t and frexibul
18:04:34 <CakeProphet> I wonder if anyone's tried to write a Perl compiler.
18:04:41 * elliott tries to find other reasons to stop talkign to this guy
18:04:48 <elliott> "While usually I'm quite the liberal/free market in economic terms" strike one
18:04:50 <elliott> s/talkign/talking/
18:04:51 -!- Taneb has quit (Ping timeout: 245 seconds).
18:04:52 <CakeProphet> elliott: @
18:05:06 <CakeProphet> you've got a world to save.
18:05:09 <elliott> "Ahh ok I think I understand where you're trying to get at. I agree modern fencing is definitely not nearly as effective as the real training and sword fighting people used to do. I think I misinterpreted "It wouldn't hold up against any sort of real combat"."
18:05:10 <Gregor> elliott: My attempt to find it again is yielding only my own paper :P
18:05:11 <elliott> Phantom_Hoover: Look at this fucker.
18:05:15 <elliott> Gregor: X-D
18:05:22 <elliott> Gregor: I can cite that, there's no way he'd bother reading it!
18:05:53 <Gregor> elliott: My attempt to find it again is yielding only my own paper :P
18:05:55 <Gregor> ...
18:05:58 <elliott> Oh snap, he plays DCSS. Strike two!
18:05:58 <Gregor> Wow, copypasta fail
18:06:03 <elliott> Gregor: I can cite that, there's no way he'd bother reading it!
18:06:04 <Gregor> elliott: Here we go: http://dl.acm.org/citation.cfm?id=1862665
18:06:18 <elliott> Eeexcellent.
18:06:19 <Phantom_Hoover> elliott, ridiculous, obviously nicking your opponent on the wrist half a second before they run you through the heart makes you the victor!
18:06:20 <Sgeo|web> elliott: HEY
18:06:27 <elliott> Sgeo|web: Yo
18:06:45 <Sgeo|web> I play DCSS... occasionally...
18:07:05 <elliott> Sgeo|web: Wanna bet how long I'd bother arguing with you about the practicality of compiling Python?
18:07:15 <elliott> THE RULES WORK.
18:07:30 <CakeProphet> elliott: you forgot the static compiler + dynamic JIT superfrankenstein
18:07:38 <CakeProphet> at the bottom of your list.
18:08:42 <elliott> Gregor: Can I refer to you as a ``colleague''? It would boost my credibility.
18:08:49 <Gregor> lol
18:09:03 <elliott> Gregor: THE BULLET POINTS AREN'T ENOUGH
18:09:05 <Gregor> We are colleagues at the International Institution of Esoteric Software Design
18:09:11 <Gregor> i.e. IIESD
18:09:11 <CakeProphet> #esoteric is friendship colleagues.
18:09:12 <elliott> Great, thanks for the permission
18:10:20 <elliott> http://www.reddit.com/r/programming/comments/m4rbs/python_3_implementation_in_haskell/c2y54qu
18:10:23 <elliott> Gregor: *COLLEAGUEHI5*
18:10:32 -!- tiffany has quit (Quit: restarting in attempt to fix nvidia drivers).
18:10:38 <Gregor> elliott: *COLLEAGUEPOLITENOD*
18:10:42 <elliott> X-D
18:10:53 <elliott> Gregor: *COLLEAGUEFORMALHANDSHAKE* *COLLEAGUEBUSINESSMEETING*
18:11:03 <elliott> Gregor: *COLLEAGUEAPPEARINGINSTOCKPHOTOSFORBADWEBHOSTINGCOMPANIES*
18:11:26 <Gregor> elliott: *COLLEAGUEPOINTINGATCOMPUTERMONITORWITHCHEESYGRINWHILEYOUTYPESOMETHING*
18:11:50 <CakeProphet> elliott: I think calling it a static compiler + dynamic JIT superfrankenstein would greatly lend to your credibility.
18:12:10 <elliott> Gregor: *COLLEAGUESUBVERTINGYOURATTEMPTSTOGETPROMOTEDSOTHATICANRISEABOVEYOUINTHEPECKINGORDERANDRUTHLESSLYCUTYOUDOWNBECAUSEIHATEYOU*
18:12:24 <Gregor> elliott: *COLLEAGUETENUREBITCH*
18:12:32 <elliott> Gregor: *COLLEAGUEMURDER*
18:12:33 -!- tiffany has joined.
18:12:37 <elliott> ~The End~
18:12:40 <Gregor> Daaaaaaaaaaaaaaaaaaamn
18:12:57 <elliott> You scored a maximum 0.3/1000000000 points.
18:13:03 <elliott> s/fix that sentence./
18:13:05 <Gregor> Probably the fastest Python you could get today would be by compiling Python into JavaScript and then running it with V8 ;)
18:13:25 <elliott> :-D
18:13:30 <elliott> Gregor: That's... that's ALMOST tempting.
18:13:32 <CakeProphet> compile to Lua and LuaJIT
18:13:54 <elliott> Gregor:
18:13:54 <elliott> Posted 28 Sep 2008 at 14:03 UTC (updated 28 Sep 2008 at 16:33 UTC) by lkcl
18:13:55 <elliott> pyv8 is an experimental project to combine two-way python bindings to v8
18:13:55 <elliott> with the python-to-javascript compiler from pyjamas. a simple test has shown a ten times
18:13:55 <elliott> performance increase of python code converted and executed as
18:13:55 <elliott> javascript, when compared to running the same program as python. (to be
18:13:57 <elliott> fair, cython gives a 100 times performance increase).
18:14:15 <Gregor> elliott: Hahaha X-D
18:14:50 <Gregor> CakeProphet: I'm not confident, but I would be unsurprised if compiling Lua to JS and running it through V8 was faster than LuaJIT. LuaJIT is really good, but JS has gotten a stupid amount of attention lately, and the Lua->JS semantic difference is very small.
18:14:59 <elliott> Gregor: Still, 10x over a naive bytecode interpreter is not that impressive :P
18:15:03 <elliott> Maybe it's even better now though.
18:15:17 <Gregor> elliott: 'struth
18:15:40 <Gregor> Clearly the bestest would be Fythe lololol
18:15:51 <elliott> I do wonder if you couldn't do better than Pyjamas though, I think they're more focused on their AJAX GUI/FRP stuff than their translator...
18:15:54 <CakeProphet> Gregor: I'm blissfully unaware of the thriving world of, uh, JS development.
18:16:14 <elliott> CakeProphet: No you're not, if you've used any JS app in the past few years
18:16:23 <Sgeo|web> I think this person is assuming that since you can't always infer types, you can never infer types
18:16:30 <Sgeo|web> Which might be the sort of assumption I might make
18:16:40 <elliott> We detected that your computer does not meet the system performance requirements for MapsGL. Learn more about the system requirements for MapsGL.
18:16:42 <elliott> ;____;
18:16:44 <CakeProphet> elliott: I... don't think that's how it works.
18:16:44 <Gregor> Have I mentioned that my new computer is supersweet?
18:16:46 * elliott crais
18:16:56 <elliott> Gregor: Is it better than bsmntbombdood's?
18:17:04 <Gregor> elliott: Idonno, I don't have his specs.
18:18:07 <Gregor> `findlogs bsmntbombdood.*ghz
18:18:08 <elliott> Gregor: What CPU, how much RAM :P
18:18:11 <elliott> Nooo cheater.
18:18:13 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: findlogs: not found
18:18:16 <elliott> That's not how you use logs anyway.
18:18:19 <Gregor> Eh :P
18:18:30 <elliott> I got the part list anyway, so I'm like SO AUTHORITATIVE.
18:18:31 <Gregor> elliott: 6-core 3.1GHz AMD Phenom, 16GB RAM
18:18:54 <elliott> Gregor: Well, same RAM, but he has a 4-core first generation i7... which is better, 'cuz, really, AMD.
18:19:07 <elliott> Gregor: He gets bragging rights anyway on account of getting it years ago :P
18:19:08 <Gregor> Yeah, I shouldn't have let my friends talk me into getting an AMD >_<
18:19:17 <Gregor> I have a 3TB HDD :P
18:19:26 <elliott> Gregor: Any SSD?
18:19:27 <CakeProphet> Gregor: huh cool I've got a V6 3.0L Honda V-Tec with I-can't-think-of-an-analogy-for-RAM
18:19:32 <Gregor> elliott: Nope.
18:19:41 <elliott> Gregor: He has an 80 GiB first-gen Intel X25M SSD plus two 1 TiB drives in RAID-1.
18:19:53 <Gregor> elliott: So, I still have more SPACE :P
18:19:56 <elliott> Gregor: Or at least, did, years ago :P
18:20:04 <Gregor> Fair 'nuff.
18:20:14 <elliott> Gregor: More space, it's just that everything you can access goes so slowly you never get to appreciate it ;D
18:20:15 <Gregor> OK, how 'bout this then: Mine was expensive, but not as retarded-expensive as his must have been years ago.
18:20:23 <elliott> Gregor: It was <$1,600.
18:20:29 <elliott> I don't remember the exact amount. $1400?
18:20:41 <elliott> So, not libc.so expensive!
18:20:50 <Gregor> X-D
18:21:11 <elliott> Gregor: Talk me out of getting AMD BTW
18:21:26 <elliott> There is literally exactly one reason I'm considering it and it's that I hate Intel :P
18:21:27 <Gregor> elliott: Running OS X in a VM with AMD is *cry*
18:21:38 <elliott> I should find out about AMD's despicable business practices so I can hate them too.
18:21:54 <elliott> Gregor: So... that's... how is that a disadvantage?
18:21:57 <elliott> That lets me avoid OS X more effectively.
18:22:19 <Gregor> :P
18:22:32 <Gregor> My machine is SIMULRUNNING (<-- this is a word) Debian, OS X and Windows.
18:22:40 <Gregor> So I can have 2/3rds pain and suffering and 1/3 joy.
18:22:50 <elliott> I should really have given bsmntbombdood a worse computer, because now the awful consumerist in me feels really bad about buying a computer worse than his.
18:22:50 <monqy> 3/3 pain
18:23:03 <elliott> Thankfully, not being rich counteracts this!
18:23:22 <elliott> I wonder if ECC RAM is less expensive these days. (Hahahahaha.)
18:23:54 <Gregor> More like Extra Crappy Crap RAM
18:24:37 <CakeProphet> Gregor: does access to RAM become a bottleneck when you increase the number of cores in your CPU or does it matter?
18:24:51 <CakeProphet> *not matter
18:25:02 <Gregor> CakeProphet: Depends. Generally yes. Depends on how NUMAlicious your CPU is too.
18:25:19 <elliott> Gregor: FSVO Extra Crappy Crap equal to not broken :P
18:25:39 <CakeProphet> elliott: you should make FSVO a valid operation in @lang
18:25:52 <elliott> But seriously though, I'd like to take this opportunity to laugh really hard at anyone who buys a new computer without an SSD system drive.
18:25:58 <elliott> ha ha ha
18:26:28 <elliott> Gregor: Ohh, there's the other reason I was considering AMD, i7s don't do ECC.
18:26:44 <elliott> You have to get the vastly more expensive Xeons which need the vastly more expensive server motherboards because Intel are fucks.
18:27:32 <monqy> intelllllll................................
18:27:55 -!- Taneb has joined.
18:28:37 <elliott> http://promotions.newegg.com/ASUS/111511/696x288.jpg
18:28:42 <elliott> im true red
18:28:43 <elliott> nes
18:29:35 <CakeProphet> elliott: help. it seems that when I click on the "learn more" button, nothing happens.
18:29:41 <elliott> you have learned
18:29:41 <elliott> the most
18:30:22 <CakeProphet> `? learn
18:30:24 <HackEgo> learn? ¯\(°_o)/¯
18:30:28 <elliott> Gregor: I was going to ask why 16 gigs of RAM when you're not on Nehalem and then I felt really stupid.
18:30:35 <elliott> 16: Not a multiple of three? Instead a multiple of two?
18:30:37 <elliott> You decide.
18:31:51 <elliott> http://bytesizebio.net/index.php/2011/11/06/brainfk-while-waiting-for-a-flight/
18:31:56 <elliott> WHY ARE YOU ON /R/PROGRAMMING YOU PIECE OF FUCKING SHIT
18:31:58 <elliott> UPDATE II: Following Vincent's comment, here is a fixed version of the interpreter. This time it should work with nested loops. Thanks Vincent.
18:32:00 <elliott> DIEEEEEEEEEEEEEEE
18:32:09 <elliott> IM GOING TO THROTTLE YOU TO DEATH
18:32:19 <CakeProphet> I don't know on one hand I can see how it would seem that 16 is a multiple of 3 because it is a very 3-like number, but then there is also the case that 16 is a multiple two because it lends well to create the 2-like numbers, but very few scholary sources seem to encroach upon the difficult subject.
18:32:29 <elliott> NO
18:32:29 <Phantom_Hoover> I love people who write BF interpreters without nested loops.
18:32:30 <elliott> NOOO
18:32:31 <elliott> THE GUY
18:32:33 <elliott> KNOWS ABOUT ESOLANGS.ORG
18:32:35 <elliott> NOOOOOOOOOOOOOOOOOOOO
18:32:39 <Phantom_Hoover> They remind me of myself when I was twelve.
18:33:13 -!- tiffany has quit (Remote host closed the connection).
18:33:18 <elliott> Heh, I like this golfed thing: http://www.reddit.com/r/programming/comments/m4c29/fun_with_brainfuck_while_waiting_for_a_flight/c2y2oxe
18:33:43 -!- tiffany has joined.
18:33:52 <CakeProphet> uh
18:33:55 <CakeProphet> why is he using format
18:33:57 <elliott> http://www.shapecatcher.com/index.html Nooooooo, it doesn't do "PILE OF POO".
18:34:07 <elliott> CakeProphet: Python 3, looks like.
18:34:18 <CakeProphet> does % not exist in Python 3?
18:34:27 <elliott> dunno
18:34:33 <CakeProphet> it would be way better for golfing in any case.
18:34:52 <elliott> 🙀
18:34:55 <elliott> weary cat face
18:35:28 <monqy>
18:35:28 <Phantom_Hoover> "In block: Byzantine Musical Symbols"
18:35:29 <Phantom_Hoover> Wow.
18:35:36 <monqy>
18:35:53 <CakeProphet> :<
18:35:54 -!- sebbu3 has changed nick to sebbu.
18:35:55 <monqy> 𝆋
18:36:19 <elliott>
18:36:21 <monqy> 😆
18:36:23 <Phantom_Hoover> It didn't even recognise my shark pirate.
18:36:26 <CakeProphet> :$ suddenly my money is where my mouth is.
18:36:27 <elliott>
18:36:28 <elliott>
18:36:28 <elliott>
18:36:28 <elliott>
18:36:33 <CakeProphet> best face.
18:36:46 <monqy> 😌
18:36:50 <monqy> 😒
18:36:53 <monqy> 😋
18:36:54 <elliott>
18:36:57 <monqy> 😁
18:37:00 <monqy> 😜
18:37:04 <monqy> 😏
18:37:09 <monqy> 😣
18:37:12 <monqy> 😚
18:37:14 <elliott> Ѷ
18:37:15 <elliott> Ѷ
18:37:15 <elliott> Ѷ
18:37:15 <monqy> 😞
18:37:45 <monqy>
18:38:02 -!- zzo38 has quit (Remote host closed the connection).
18:38:09 <elliott>
18:38:15 * elliott mature.
18:38:27 <elliott>
18:38:55 <elliott> ⚧ waht
18:39:06 <monqy> 😅
18:39:08 <elliott> "MALE WITH STROKE AND MALE AND FEMALE SIGN"
18:39:14 <monqy> 😘
18:39:17 <elliott> monqy: hi
18:39:47 <CakeProphet> `ls wisdom
18:39:49 <HackEgo> ​? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ elliott \ everyone \ finland \ fizzie \ flower \ friendship \ fungot \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ monad \ monads \ monqy \ nooga \ oerjan \ oklopol \ qdb \ qdbformat \ sgeo \ shachaf \ u \ vorpal \ welcome \ wiki \ you
18:40:05 <CakeProphet> `learn you
18:40:07 <HackEgo> I knew that.
18:40:11 <elliott> `forget you
18:40:12 <Sgeo|web> `? you
18:40:15 <Phantom_Hoover> `? banach-tarski
18:40:15 <HackEgo> Forget what?
18:40:17 <CakeProphet> `? you
18:40:18 <Sgeo|web> ...
18:40:21 <HackEgo> ​"Banach-Tarski" is an anagram of "Banach-Tarski Banach-Tarski".
18:40:24 <HackEgo> you? ¯\(°_o)/¯
18:40:31 <HackEgo> you
18:40:34 <Sgeo|web> What was you?
18:40:38 <Phantom_Hoover> `? itidus20
18:40:40 <HackEgo> itidus20 is horny 60 year olds having cybersex in minecraft
18:40:55 <Sgeo|web> `? monad
18:40:56 <HackEgo> Monads are just monoids in the category of endofunctors.
18:41:08 <monqy> 😡
18:41:11 <monqy> 😖
18:41:12 <Phantom_Hoover> `? shachaf
18:41:14 <HackEgo> shachaf mad
18:41:18 <monqy> 😪
18:41:22 <monqy> 😏
18:41:23 <CakeProphet> elliott: we have descended into madness.
18:41:24 <monqy> 😎
18:41:34 <CakeProphet> if only Madoka-Kaname were here
18:41:34 <monqy> 😩
18:41:37 <CakeProphet> to spam lambdabot.
18:41:39 <monqy> 😷
18:41:40 <Phantom_Hoover> `learn shachaf ace
18:41:42 <HackEgo> I knew that.
18:41:43 <elliott> `revert
18:41:44 <HackEgo> Done.
18:41:46 <elliott> `revert
18:41:46 <monqy> 😺
18:41:48 <HackEgo> Done.
18:41:49 <elliott> oh wait
18:41:50 <elliott> `help
18:41:51 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
18:41:52 <elliott> monqy: pls stop
18:41:54 <Phantom_Hoover> :(
18:41:59 <monqy> :(
18:42:00 <Phantom_Hoover> `? shachaf
18:42:02 <HackEgo> shachaf ace
18:42:06 <elliott> `revert 876
18:42:07 -!- oerjan has joined.
18:42:08 <HackEgo> Done.
18:42:09 <elliott> `? you
18:42:11 <HackEgo> you? ¯\(°_o)/¯
18:42:12 <elliott> `? you
18:42:14 <HackEgo> you a haskell
18:42:22 <monqy> me a haskell
18:42:34 <Phantom_Hoover> `? shachaf
18:42:36 <HackEgo> shachaf mad
18:42:41 <Phantom_Hoover> :(
18:42:46 <Phantom_Hoover> `? oklopol
18:42:48 <HackEgo> oklopol "so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid."
18:43:04 <CakeProphet> `? Phantom_Hoover
18:43:06 <HackEgo> Phantom_Hoover? ¯\(°_o)/¯
18:43:08 <Phantom_Hoover> `? sgeo
18:43:09 <HackEgo> Sgeo invented Metaplace sex.
18:43:12 <monqy> `? phantom hoover
18:43:14 <HackEgo> phantom hoover? ¯\(°_o)/¯
18:43:20 <Phantom_Hoover> `? vorpal
18:43:22 <HackEgo> Vorpal is really boring. Seriously, you have no idea.
18:43:35 <CakeProphet> Vorpal follows speed limits.
18:43:35 <Phantom_Hoover> Nothing to do with elliott, I assume.
18:43:37 <CakeProphet> laaaame.
18:43:56 <Phantom_Hoover> `? everyone
18:43:58 <HackEgo> Everyone in here is mad.
18:44:16 <CakeProphet> `fortune
18:44:17 <Phantom_Hoover> `? ievan
18:44:19 <HackEgo> Somewhat alarmed at the continued growth of the number of employees \ on the Department of Agriculture payroll in 1962, Michigan Republican Robert \ Griffin proposed an amendment to the farm bill so that "the total number of \ employees in the Department of Agriculture at no time exceeds the number of \ farmers in
18:44:31 <HackEgo> ievan is basically http://www.youtube.com/watch?v=4om1rQKPijI
18:44:31 <CakeProphet> :(
18:44:32 <monqy> good poem
18:44:52 <CakeProphet> I wonder if there are IRC fortune dbs
18:44:57 <CakeProphet> IRC-friendly that is.
18:45:32 <Phantom_Hoover> `? haskell
18:45:34 <HackEgo> Haskell is preferred by 9 out of 10 esoteric programmers. Ask your GP today! http://learnyouahaskell.com/
18:45:57 <coppro> lol
18:46:08 -!- FireFly has quit (*.net *.split).
18:46:09 <Phantom_Hoover> elliott, I don't think that kind of advertising is allowed here?
18:46:13 * Sgeo|web reads the Haskerl thingy
18:46:32 <CakeProphet> *Haskperl
18:46:48 -!- FireFly has joined.
18:47:16 <CakeProphet> a google search for perl compiler renders nothing is actually a legitimate perl compiler.
18:47:23 <CakeProphet> +that
18:47:42 <Sgeo|web> CakeProphet: I'm pretty sure it's called Haskerl, but yes
18:48:05 <CakeProphet> oh that's an actual thing.
18:48:27 <Sgeo|web> http://www.dcs.gla.ac.uk/~partain/haskerl/partain-1.html
18:49:04 <CakeProphet> awwww yeah
18:49:11 <monqy> :(
18:49:48 <oerjan> `learn PHP is preferred by 9 out of 10 idiots. Ask your GP today! [Website redacted]
18:49:51 <HackEgo> I knew that.
18:50:53 <oerjan> any evil lies that i wrote [Website redacted] because i couldn't bother to find a website will be harshly punished.
18:51:02 <elliott> Further, if an io_thing turns out to have type "[IO a]" (list of I/O
18:51:02 <elliott> actions), then suitable wrapping will be inserted to deal with that
18:51:02 <elliott> ("listIO io_action `thenIO` ( \ result -> ... ", for those who care).
18:51:05 <elliott> Sgeo|web: this is great and terrible
18:51:28 <CakeProphet> elliott: I just read that line too...
18:51:44 <CakeProphet> and thought roughly the same thing
18:51:45 <monqy> this is awful
18:52:30 <elliott> monqy: don't worry, it was in the naive days of 93
18:52:31 <Sgeo|web> It is an April Fools joke
18:52:33 <elliott> we did not know then
18:52:37 <elliott> Sgeo|web: ...oh :(
18:52:38 <elliott> Sgeo|web: but
18:52:42 <elliott> they literally invented do notation?
18:52:43 <elliott> like
18:52:49 <elliott> this is like when ben franklin was joking about dst :D
18:52:51 <Vorpal> I guess USB 1.1 had a poorly named speed in retrospect
18:52:57 <Vorpal> "full-speed"
18:53:06 <Vorpal> or wait, that might be 1.0 as well
18:53:06 <oerjan> elliott: ah that explains why the wrapping isn't simply a monad.
18:53:31 <elliott> oerjan: ?
18:53:33 <monqy> ah, 93 explains a lot
18:53:38 <Sgeo|web> http://www.dcs.gla.ac.uk/~partain/haskerl.html
18:53:41 <oerjan> elliott: the 93
18:53:49 <elliott> oerjan: well, they say it's monadic IO
18:53:57 <elliott> but it's before the typeclass existed
18:54:09 <elliott> Sgeo|web: wait, was do notation already proposed when this came out?
18:54:10 <elliott> it must have been
18:54:20 <Sgeo|web> elliott: No idea
18:54:37 <oerjan> elliott: surely it should be simply sequence in some monad, otherwise.
18:54:50 <Vorpal> I wonder what they will call UBS 4.0
18:54:53 <Vorpal> USB*
18:54:54 <elliott> oerjan: um like I said, this is 93, so they knew about monadic IO but had no abstraction for it
18:54:58 <elliott> no Monad typeclass, etc.
18:55:13 <elliott> ""if", for example, normally has the type "Bool -> a -> a -> a"."
18:55:15 <elliott> a better time
18:55:16 <oerjan> elliott: that's what "otherwise" means, sheesh
18:55:25 <elliott> oerjan: right
18:55:59 <CakeProphet> is it bad that I think some of this stuff is a good idea?
18:56:04 <elliott> yes
18:56:07 <monqy> yes
18:56:07 <elliott> apart from the do notation part
18:56:09 <shachaf> `rm wisdom/shachaf
18:56:11 <HackEgo> No output.
18:56:17 <elliott> CakeProphet: oh the polymorphic regexps are actually a well known thing
18:56:19 <shachaf> `run kill -9 $$
18:56:21 <HackEgo> Killed
18:56:26 <elliott> `echo nice try
18:56:28 <HackEgo> nice try
18:56:38 <shachaf> Was that a try?
18:56:46 <elliott> dunno
18:56:46 <monqy> was it nice?
18:56:47 <ais523> elliott: what's wrong with bool->a->a->a for the type of if?
18:56:49 <shachaf> It should just exit the shell instance that it spawns.
18:56:51 <ais523> that is the type it has, as a function
18:56:57 <elliott> ais523: where did I say there was something wrong with it?
18:57:00 <CakeProphet> elliott: mainly variable interpolation and backtick stuff (though that syntax would conflict with infix functions)
18:57:01 <shachaf> kill -9 $$ is my usual way of exiting a shell.
18:57:04 <oerjan> `learn shachaf mad with destruction
18:57:07 <HackEgo> I knew that.
18:57:10 <ais523> elliott: in your answer to CakeProphet's question
18:57:12 <shachaf> `rm wisdom/shachaf
18:57:14 <HackEgo> No output.
18:57:14 <elliott> shachaf: Do you bind ^D to that? :-)
18:57:18 <elliott> ais523: that's not "some of this stuff"
18:57:28 <shachaf> elliott: No -- I want ^D to behave as it does.
18:57:28 <ais523> ah, OK
18:57:42 <shachaf> But kill -9 $$ is the easiest way I know of to exit without saving history.
18:57:42 <ais523> run kill -WINCH $$
18:57:49 <ais523> `run kill -WINCH $$
18:57:51 <HackEgo> No output.
18:58:00 <ais523> couldn't do with HackEgo having a badly-sized terminal
18:58:20 <ais523> or at least, a bad belief about the size of its terminal
18:58:28 <ais523> `run tput cols
18:58:30 <HackEgo> 80
18:58:37 <ais523> wow, I wasn't expecting that to work…
18:58:39 <ais523> `run tput rows
18:58:39 -!- derrik has joined.
18:58:40 <shachaf> ais523: Well, you'd want to kill -WINCH its PPID, presumably.
18:58:41 <HackEgo> tput: unknown terminfo capability 'rows'
18:58:48 <ais523> hmm
18:59:06 <elliott> `tput lines
18:59:07 <elliott> silly ais523
18:59:07 <HackEgo> 24
18:59:09 <ais523> aha
18:59:13 <ais523> I was guessing
18:59:24 <ais523> and decided that my guess was wrong after the error
19:01:00 <oerjan> learning from errors? how quaint.
19:01:30 <ais523> `run printf '\x1b[8;120;36t'; tput cols; tput rows
19:01:32 <HackEgo> ​\x1b[8;120;36t80 \ tput: unknown terminfo capability 'rows'
19:01:36 <ais523> `run printf '\x1b[8;120;36t'; tput cols; tput lines
19:01:38 <HackEgo> ​\x1b[8;120;36t80 \ 24
19:01:39 <elliott> http://www.dcs.gla.ac.uk/~partain/haskerl/ganesh-1.html
19:01:44 <elliott> oh god people taking this seriously :')
19:01:54 <ais523> boring, It'd have been hilarious if I'd actually managed to resize its idea of what its temrinal was
19:01:57 <CakeProphet> "I tend to agree, Perl’s ast based internal structure is very fast. The overhead of JIT would almost certainly be a big down side as most perl programs seem to run for a very short time."
19:01:58 <elliott> ais523: i don't think you're using printf right
19:02:00 <elliott> HackEgo doesn't escape
19:02:01 <CakeProphet> what is this crap.
19:02:12 <ais523> `run printf '%c[8;120;36t' 27; tput cols; tput lines
19:02:13 <elliott> `run echo -e '\x1b[8;120;36t'; tput cols; tput lines
19:02:14 <HackEgo> 2[8;120;36t80 \ 24
19:02:19 <elliott> `run echo -e '\e[8;120;36t'; tput cols; tput lines
19:02:21 <HackEgo> ​-e \e[8;120;36t \ 80 \ 24
19:02:24 <elliott> lol
19:02:26 <HackEgo> ​-e \x1b[8;120;36t \ 80 \ 24
19:02:29 <elliott> `run /bin/echo -e '\e[8;120;36t'; tput cols; tput lines
19:02:31 <ais523> I don't think you're using echo right
19:02:31 <HackEgo> ​.[8;120;36t \ 80 \ 24
19:02:35 <elliott> there we go
19:02:40 <elliott> but yeah, no pty
19:03:10 <elliott> "I don't want to be misunderstood but I DON'T WANT to believe this.
19:03:10 <elliott> I mean, programs do not normally kill patients, doctors do. So where
19:03:10 <elliott> were the doctors or nurses who were supposed to keep such patients
19:03:10 <elliott> under close control? Or do we nowadays have artificially intelligent
19:03:10 <elliott> programs acting as doctors?"
19:03:14 <elliott> THIS IS SO ADORABLE OMG
19:03:24 <elliott> "Something missing in the above picture, I think. And I also detect
19:03:24 <elliott> a bad smell of abuse and negligence, too. (Assuming that the last sentence
19:03:24 <elliott> of Hudak's message does really reflect what happened at Yale Med School.)
19:03:24 <elliott>
19:03:24 <elliott> By the way, I would safely guess that there are dozens of newspapers,
19:03:25 <elliott> TV stations, etc. who would be interested in this story. So how come
19:03:27 <elliott> they never did their job? Or did they?"
19:03:27 <ais523> I think I've got the code wrong; at least, it's not working in my shell, and it used to
19:03:29 <elliott> gjkdfsghksdklfg
19:03:35 <elliott> ais523: try in rxvt
19:03:41 <elliott> i know gnome-terminal dislikes some of that stuff
19:03:44 <elliott> what's 8 meant to be
19:03:47 <elliott> isn't it 2 or 3
19:03:49 <ais523> it does work in gnome-term, I've done it in the past
19:04:02 -!- ais523 has quit (Remote host closed the connection).
19:04:13 -!- derrik has left.
19:04:34 <Sgeo|web> ais, how many people did you kill?
19:04:39 <Sgeo|web> With your bad code
19:04:41 <elliott> http://www.dcs.gla.ac.uk/~partain/haskerl/jhf-1.html
19:04:42 <Sgeo|web> Bleh, he's not here
19:04:44 <elliott> excessive monadery!
19:05:18 <elliott> http://www.dcs.gla.ac.uk/~partain/haskerl/wall-1.html
19:05:19 <elliott> hi larry
19:06:10 <monqy> wow this is the best
19:06:22 <elliott> http://www.dcs.gla.ac.uk/~partain/haskerl/dw-2.html
19:06:25 <Sgeo|web> "Support for Visual Basic is not anticipated."
19:06:25 <elliott> who wants to add it to the wiki
19:06:30 <Sgeo|web> NOOOOOOOO
19:06:38 <monqy> David Wakeling (inventor of surrealist programming)
19:07:09 <elliott> oerjan: did you manage to read the annotation
19:09:24 <CakeProphet> monqy: larry -Wall is god among meermortals.
19:11:03 <Taneb> I have two monitors now
19:11:54 <elliott> larry -Wextra
19:14:16 -!- Darth_Cliche has joined.
19:14:22 <monqy> larry -funroll-loops
19:14:32 <elliott> larry o2
19:14:53 <monqy> larry "funroll" loops
19:15:14 <Phantom_Hoover> I wish I had a son so I could call him that.
19:15:23 <Phantom_Hoover> And that my surname was Loops, I suppose.
19:15:49 <CakeProphet> Phantom_Hoover: you can always get married and adopt your wife's surname.
19:16:12 <elliott> You could also just change your name.
19:16:23 <elliott> Also please CakeProphet, we have civil unions in this country. Phantom_Hoover is a gay vampire.
19:17:57 <oerjan> <elliott> oerjan: did you manage to read the annotation <-- on sunday? yes.
19:20:42 <CakeProphet> mmmm biscuit syrup.
19:20:45 <CakeProphet> I feel so... southern.
19:22:32 <Phantom_Hoover> So they're not *dwarven syrup biscuits [10]*?
19:23:06 <CakeProphet> no it's this: http://www.scanavert.com/api/picture.php?upc=00700195004325&width=150&height=150
19:23:29 -!- variable has quit (Quit: I found a 1 /dev/zero).
19:24:20 <CakeProphet> Phantom_Hoover: not referring to your barbaric limey biscuits.
19:24:38 <Phantom_Hoover> Limes????? What are these things?
19:24:43 <Phantom_Hoover> Are they like plump helmetss?
19:24:55 <CakeProphet> Phantom_Hoover: yes, they prevent scurvy in sailors.
19:25:12 <CakeProphet> in other words
19:25:18 <CakeProphet> they prevent scurvy sailors, argh!
19:25:37 * oerjan wants to read that [10] as that +10 thing they put in rpg tables
19:26:02 <elliott> oerjan: play df with us :}
19:26:06 <elliott> :DDDDd
19:26:07 <elliott> :Qqqq
19:26:09 <elliott> :#
19:26:18 <oerjan> elliott: ah so it is something equivalent there?
19:26:29 <elliott> i didnt say that ;___;
19:26:40 * elliott ceries softly.
19:26:44 <oerjan> well it _could_ have been.
19:26:46 <elliott> that was meant to be a typo of softly
19:26:47 <elliott> like
19:26:49 <elliott> soft lie
19:26:49 <elliott> but
19:26:51 <elliott> it turned out being the same
19:26:52 <elliott> as the right way
19:27:00 <elliott> so i
19:27:01 <elliott> mistyped
19:27:03 <elliott> a mistype...
19:27:10 <oerjan> i think i broke elliott again
19:27:15 <monqy> oops
19:27:18 <elliott>
19:27:35 <CakeProphet> http://xlithiumx.files.wordpress.com/2010/07/395px-runny_hunny.jpg
19:27:41 <CakeProphet> notice that American biscuits are far superior.
19:27:42 <monqy> hunny
19:28:03 <CakeProphet> alternatively, see: http://westofthewest.files.wordpress.com/2011/10/hardee-s-new-monster-biscuit.jpg
19:28:09 <CakeProphet> a more typical American biscuit.
19:28:18 <monqy> fastest food
19:28:33 <elliott> america is like going into a quaint film but then the film doesn't end
19:28:54 <CakeProphet> elliott: explain yourself
19:29:41 <elliott> sigh arcanesentiment is in another lull
19:29:45 <CakeProphet> is this a metaphor for life?
19:29:59 <elliott> prog21 too, but it's always in a lull
19:30:05 <CakeProphet> lul
19:30:08 <elliott> well ok it had active posting throughout october
19:30:25 <CakeProphet> monqy: lull with me.
19:31:17 <monqy> lulling good hobbey
19:31:25 -!- Zuu has joined.
19:32:32 <CakeProphet> http://en.wikipedia.org/wiki/File:BiscuitsAmerican%26British.png that's a really shitty american biscuit
19:32:45 <CakeProphet> I am ashame wakapedoia
19:33:04 <elliott> CakeProphet: mmmmmmm bourbons
19:33:21 <CakeProphet> elliott: is that what that obscene doggy treat is?
19:33:26 <CakeProphet> ah yes
19:33:27 <CakeProphet> it is.
19:33:27 <monqy> http://upload.wikimedia.org/wikipedia/commons/archive/6/60/20091013115300%21BiscuitsAmerican%26British.png old version, even shittier
19:33:28 <elliott> no its
19:33:34 <elliott> its filled with chocolate cream shit
19:33:34 <elliott> its
19:33:35 <elliott> great
19:33:38 <elliott> wait
19:33:39 <elliott> wait
19:33:40 <elliott> CakeProphet
19:33:44 <elliott> have you never had a digestive biscuit in your life
19:33:48 <CakeProphet> nope
19:33:51 <elliott> what the fuck!!!!!!!!!
19:33:53 <elliott> ginger nut???
19:33:57 <CakeProphet> uh?
19:34:04 <elliott> http://www.virginmedia.com/images/ginger_nut430x300.jpg
19:34:07 <elliott> have you had one of these
19:34:09 <monqy> america land of the freedom from digestive biscuits
19:34:17 <elliott> CakeProphet: ANSWER FUCKER >:(
19:34:27 <Vorpal> <elliott> have you never had a digestive biscuit in your life <-- I only ever heard of them
19:34:27 <CakeProphet> elliott: oh yes I've ate a cookie before.
19:34:28 <monqy> home of the too brave for ginger nut
19:34:30 <Vorpal> whatever they are
19:34:34 <elliott> CakeProphet: THATS NOT A COOKIE
19:34:37 * shachaf has never heard of digestive biscuits.
19:34:38 <elliott> COOKISE HAVE CHOCOLATE CHIPS
19:34:39 <shachaf> Sounds horrible.
19:34:40 <CakeProphet> elliott: it is exactly a cookie.
19:34:43 <elliott> NO
19:34:44 <Phantom_Hoover> wait
19:34:45 <CakeProphet> yes...
19:34:47 <Phantom_Hoover> CakeProphet
19:34:47 <elliott> YOU DONT EVEN KNOW WHAT YOURE LOOKING AT
19:34:49 <monqy> some cookies do not have chocolate chips
19:34:49 <elliott> ITS GINGER FLAVOURED
19:34:49 <Phantom_Hoover> has not ever
19:34:50 <Phantom_Hoover> tasted
19:34:51 <elliott> AND SNAPS
19:34:51 <elliott> AND SHIT
19:34:55 <Phantom_Hoover> a digestive biscuit
19:34:56 <monqy> i love ginger snaps
19:34:56 <CakeProphet> yes we call those ginger snaps
19:34:58 <shachaf> Hmm, looks like a kind of cookie to me.
19:35:00 <CakeProphet> they're cookies.
19:35:01 <Phantom_Hoover> elliott, they are the best thing in tea?
19:35:01 <elliott> NO
19:35:02 <elliott> STOP CALLING
19:35:03 <elliott> EVERYTHING
19:35:03 <elliott> C
19:35:03 <Vorpal> elliott: I take it you don't like ginger?
19:35:04 <elliott> OOOKIES
19:35:06 <elliott> I HATE YOU!!!!!!
19:35:14 <elliott> Vorpal: GINGER NUTS ARE THE GREATEST FUCKING THING NEXT TO DIGESTIVE BISCUITS
19:35:14 <pikhq_> elliott: A "cookie" in American parlance refers to a large quantity of things, many of which you call "biscuits".
19:35:17 <monqy> i love good cookies too
19:35:21 <elliott> pikhq_: FUCK YOUUUU YOUR DIALECT IS WRONG!!!
19:35:23 <shachaf> (:[{- COOKIES! -}])
19:35:26 <Sgeo|web> > let f (x,y) = True in f undefined undefined
19:35:27 <lambdabot> Couldn't match expected type `a -> t'
19:35:27 <lambdabot> against inferred type `GHC.Bo...
19:35:28 <Vorpal> elliott: Personally I don't like ginger
19:35:33 <Phantom_Hoover> "In the United States it is a small, soft, leavened bread, somewhat similar to a scone."
19:35:34 <CakeProphet> elliott: have you had american biscuits?
19:35:35 <Phantom_Hoover> wtf
19:35:35 <elliott> Vorpal: I;M PUNCHING YOU
19:35:40 <elliott> CakeProphet: IVE HAD SCONES
19:35:40 <Sgeo|web> > let f (x,y) = True in f (undefined,undefined)
19:35:41 <shachaf> elliott: Didn't you ever watch Sesame Street?
19:35:41 <lambdabot> True
19:35:45 <CakeProphet> elliott: not the same.
19:35:46 <Phantom_Hoover> CakeProphet, dude, give up, you can't out-scone Britain
19:35:46 <pikhq_> elliott: You've probably never had biscuits & gravy. :)
19:36:01 <monqy> american biscuits are kind of lame
19:36:03 <elliott> Gravy on digestive biscuits MMMMMMMMmmmmmmmmmmmmmm
19:36:07 <elliott> (no)
19:36:10 <pikhq_> monqy: With gravy, though.
19:36:16 <elliott> monqy
19:36:19 <elliott> have you ever had a digestive biscuit
19:36:21 <CakeProphet> there are many ways to make biscuits gravy
19:36:26 <CakeProphet> the southern US is very good at it.
19:36:32 <CakeProphet> uh
19:36:36 <CakeProphet> s/gravy/good/
19:36:37 <CakeProphet> but uh
19:36:42 <CakeProphet> graby is an acceptable synonym.
19:36:45 <CakeProphet> >_>
19:36:45 <monqy> elliott maybe I have had something which is a digestive biscuit without knowing because nothing is called digestive biscuites here it's all cookies :(
19:36:45 <Phantom_Hoover> monqy
19:36:51 <Phantom_Hoover> we must
19:36:52 <elliott> monqy: wait ill get a picture
19:36:53 <Phantom_Hoover> save you
19:36:55 <Phantom_Hoover> from
19:36:56 <Phantom_Hoover> this
19:37:01 <elliott> monqy: http://upload.wikimedia.org/wikipedia/commons/4/47/Digestive_biscuits.jpg ok this is an ugly picture but
19:37:04 <Phantom_Hoover> digestive biscuitless wasteland
19:37:07 <elliott> monqy: they taste like warmth
19:37:07 <CakeProphet> monqy: yes they're pretty much the same thing.
19:37:09 <elliott> wait
19:37:11 <Vorpal> oh and English people are strange: https://en.wikipedia.org/wiki/Yorkshire_pudding <-- IMO this is a type of bread, not a pudding
19:37:11 <elliott> http://www.webanswers.com/post-images/5/5F/7088B479-AB32-1029-81DD15954676B012.jpg
19:37:14 <elliott> that's a slightly nicer picture monqy
19:37:19 <elliott> monqy: you dunk them in tea and
19:37:21 <elliott> they're so warm and
19:37:22 <elliott> ok
19:37:23 <pikhq_> elliott: Digestive biscuits basically aren't in the US, but if we had them we'd call them cookies.
19:37:24 <elliott> monqy
19:37:26 <elliott> monqy: do you have a supply of adequate tea
19:37:28 <monqy> I've never had a msvitties the original
19:37:35 <elliott> it's mcvities
19:37:36 <monqy> I only have crappy tea sorry
19:37:40 <elliott> monqy: ok but is it
19:37:44 <elliott> can you stand to have a mouthful of it
19:37:48 <elliott> english biscuits work with any tea
19:37:51 <Phantom_Hoover> Is it tea, not weird herbal crap?
19:37:53 <CakeProphet> this conversation is hilarious.
19:37:57 <elliott> oh yeah it has to be actual tea not
19:37:58 <Vorpal> CakeProphet: agreed
19:37:58 <monqy> pretty sure it's tea
19:37:58 <elliott> green tea or whatever
19:38:02 <elliott> ok good
19:38:04 <elliott> monqy: what's your address
19:38:05 -!- GreaseMonkey has joined.
19:38:06 -!- GreaseMonkey has quit (Changing host).
19:38:06 -!- GreaseMonkey has joined.
19:38:10 * elliott loads up amazon
19:38:19 <CakeProphet> http://www.mamas-southern-cooking.com/images/biscuits-and-gravy-01.jpg
19:38:21 <CakeProphet> mmmmmmmmmm
19:38:26 <pikhq_> Hey, man. Green tea is actual tea. Admittedly, probably not the sort of thing you want to drink if you want to do things proper & British-like.
19:38:30 <monqy> giving out my address would only end badly
19:38:32 <elliott> no amazon.co.uk i dont want the chocolate ones!! they are niceb ut monqy needs _real digestives_
19:38:38 <elliott> monqy: it is ok you can tell mei n private
19:38:39 <Phantom_Hoover> OK American biscuits look like crappy scones.
19:38:45 <Phantom_Hoover> CakeProphet, have you had scones.
19:38:51 <elliott> Phantom_Hoover: dude find me digestives on amazon.co.uk i cant
19:38:51 <Vorpal> pikhq_: Does it originate from the tea plant?
19:38:54 <elliott> they re like
19:38:55 <pikhq_> Vorpal: Yes.
19:38:56 <elliott> 20 quid
19:38:56 <CakeProphet> Phantom_Hoover: scones are a US thing too.
19:38:58 <elliott> for a 23712389723 pack
19:39:04 <elliott> CakeProphet: ??? haha no?
19:39:09 <CakeProphet> they are similar but usually not eaten with the same things that biscits are.
19:39:10 <elliott> monqy: http://www.amazon.co.uk/1StopCufflinkShop-Novelty-Digestive-Biscuit-Cufflinks/dp/B003PLO6PQ/ref=sr_1_18?ie=UTF8&qid=1320781097&sr=8-18
19:39:11 <Phantom_Hoover> Corollary: do you rhyme 'scone' with 'cone'?
19:39:15 <elliott> novelty digestive biscuit cufflinks
19:39:16 <elliott> Phantom_Hoover
19:39:17 <elliott> novelty digestive biscuit cufflinks
19:39:19 <elliott> i
19:39:21 <Vorpal> pikhq_: nothing else added except hot water and possibly milk?
19:39:30 <monqy> elliott: no its because mysterious thing comes in mail from mysterious place and my parents wouldn't be able to deal with it.........and i wouldn't be able to tell them i gave out adres because then they'd kill me
19:39:31 <CakeProphet> Phantom_Hoover: scones don't really exist where I live.
19:39:31 <elliott> GUYS NOVELTY DIGESTIVE BISCUIT CUFFLINKS WHAT???
19:39:33 <pikhq_> Vorpal: You don't add milk to green tea.
19:39:33 <Phantom_Hoover> Are they actual digestive biscuits?
19:39:35 <pikhq_> Vorpal: But, yeah.
19:39:37 <elliott> HELP???
19:39:37 <monqy> the joys of not bein gan audtl
19:39:40 <elliott> Phantom_Hoover: HELP?
19:39:43 <CakeProphet> Phantom_Hoover: but I've seen them in the midwest and northeast.
19:39:46 <pikhq_> *Maybe* a small amount of sugar.
19:39:49 <CakeProphet> it's pretty much all biscuits in the south.
19:39:53 <elliott> monqy: is there anywhere ican dliver things that you canp ick them up (in secret)
19:39:54 <Vorpal> pikhq_: right, then it is a type of tea. And I wouldn't know if you use milk with it or not, I don't like any tea really
19:40:05 <monqy> not that i know of.....
19:40:12 <Phantom_Hoover> monqy, wait we can use that strike bomber we were going to kill you with (long story) and drop digestive biscuits instead?
19:40:25 <monqy> good idea
19:40:38 <elliott> ok monqy
19:40:40 <Phantom_Hoover> Do you mind the taste of high explosive?
19:40:42 <elliott> can we meet up in california
19:40:46 <elliott> i will bring digestives
19:40:49 <elliott> and proper eta
19:40:50 <elliott> tea
19:41:09 <elliott> Phantom_Hoover: http://www.amazon.co.uk/McVities-Digestive-Biscuits-400g-Pack/dp/B005R0LO5S/ref=sr_1_34?ie=UTF8&qid=1320781212&sr=8-34 20 POUNDS!!!!
19:41:18 <elliott> wait
19:41:23 <elliott> they sell digestives in america
19:41:25 <elliott> i know they do because
19:41:29 <elliott> im sure like on reddit theres been an expat saying
19:41:31 <shachaf> elliott: Whoa, man, I thought biscuits had to be hard.
19:41:34 <elliott> oh you just have to go blah and they have all the BISCUITS!!!
19:41:37 <shachaf> Apparently there are soft biscuits.
19:41:45 <elliott> monqy: find the biscuits
19:41:50 <Phantom_Hoover> shachaf, none of us knew this?
19:41:54 <monqy> hmmmmmmmmm,
19:41:55 <pikhq_> elliott: Well, yes, if you know where to look you can find just about any damned food item in the US.
19:42:31 <elliott> i dont think you guys understand
19:42:33 <elliott> what you're missing out on
19:42:36 <elliott> pikhq_: you've had digestives right
19:42:38 <Phantom_Hoover> Oi, pikhq_, do you rhyme 'scone' and 'cone'?
19:42:38 <pikhq_> *Especially* if you're in, say, New York.
19:42:40 <pikhq_> elliott: No.
19:42:40 <Vorpal> funnily enough I don't think either of the Swedish words "kaka" and "kex" translates directly to either the British or the American biscuit/cookie concepts
19:42:43 <pikhq_> Phantom_Hoover: Yes.
19:42:44 <elliott> WHAT
19:42:47 <elliott> pikhq_: FIX IT???
19:42:57 <Phantom_Hoover> pikhq_, BASTARD SCUM BASTARD BASTARD
19:43:06 <pikhq_> Vorpal: Describe?
19:43:09 <CakeProphet> Phantom_Hoover: http://swervechurch.files.wordpress.com/2010/02/6b7d841b6f6f35e6_m.jpg DO YOU GUYS DO THIS TO YOUR SCONES?
19:43:12 <pikhq_> Phantom_Hoover: I don't speak Scots. :P
19:43:12 <elliott> Phantom_Hoover: I found a summary of the French.
19:43:14 <Phantom_Hoover> IT RHYMES WITH 'CON'
19:43:15 <Phantom_Hoover> IT
19:43:17 <Phantom_Hoover> ALWAYS
19:43:18 <elliott> Phantom_Hoover: http://en.wikipedia.org/wiki/Biscuit_rose_de_Reims "The biscuit is very hard. It is hence customary to dip the biscuit in champagne or red wine to soften it."
19:43:19 <Phantom_Hoover> RHYMES
19:43:19 <Phantom_Hoover> WITH
19:43:22 <Phantom_Hoover> 'CON'
19:43:29 <Vorpal> pikhq_: well, I wouldn't even know what to classify those "digestive biscuits" as in Swedish terminology.
19:43:42 <pikhq_> Phantom_Hoover: Ah nay spik braid scots
19:43:44 <elliott> Vorpal: you know those biscuits they sell in the swedish section of ikea? those are nice guys
19:43:49 <Vorpal> pikhq_: definitely not kaka. And kex need to be crisp
19:43:52 <Phantom_Hoover> CakeProphet, OH GOD WHAT ARE THEY DOING TO THAT SCONE
19:43:53 <Phantom_Hoover> pikhq_,
19:43:55 <Phantom_Hoover> you
19:43:56 <Phantom_Hoover> do
19:43:57 <elliott> Vorpal: they're thin and sort of star shaped but rounded?
19:43:59 <Phantom_Hoover> not understand
19:44:01 <elliott> Vorpal: and gingerbready
19:44:01 <Vorpal> elliott: they don't sell food in IKEAs in Sweden
19:44:04 <elliott> those are nice mm
19:44:05 <monqy> poor scone
19:44:05 <CakeProphet> Phantom_Hoover: making it amazing
19:44:06 <elliott> well
19:44:11 <elliott> Vorpal: tey're like
19:44:12 <elliott> ANNA
19:44:12 <elliott> or
19:44:14 <elliott> ANNKA
19:44:16 <elliott> or something like that
19:44:16 <Vorpal> uh
19:44:18 <pikhq_> Phantom_Hoover: That's a McDonalds McBiscuit. They taste worse than they look.
19:44:21 <Vorpal> elliott: ANKA?
19:44:23 <Vorpal> that means duck
19:44:24 <Phantom_Hoover> AEWFAWEGUWAGHE
19:44:30 <elliott> Vorpal: maybe it's made from duck
19:44:31 <CakeProphet> pikhq_: it is?
19:44:31 <monqy> mcbiscuit
19:44:34 <monqy> good name
19:44:37 <Vorpal> elliott: doubtful
19:44:47 <pikhq_> CakeProphet: http://swervechurch.files.wordpress.com/2010/02/6b7d841b6f6f35e6_m.jpg sure is.
19:44:47 <CakeProphet> oh, yes it is.
19:44:47 <Phantom_Hoover> pikhq_, are these... common?
19:44:49 <elliott> Vorpal: i will find them on
19:44:51 <elliott> Vorpal: the ikea site
19:44:58 <Vorpal> elliott: but I don't know any Swedish brand with a name like that
19:45:01 <Vorpal> but sure, do that
19:45:05 <Phantom_Hoover> http://upload.wikimedia.org/wikipedia/commons/9/9c/Tea_and_scones.jpg
19:45:10 <pikhq_> Phantom_Hoover: I think McDonalds is the only place that carries them.
19:45:11 <CakeProphet> pikhq_: where do you live?
19:45:18 <pikhq_> CakeProphet: Colorado, US
19:45:18 <elliott> Vorpal: http://www.ikea.com/us/en/catalog/products/90124690/ i think this is the same thing?? but different packaging and stuff
19:45:19 <Phantom_Hoover> I will soothe my eyes with scones that have not been mutilated.
19:45:29 <pikhq_> Phantom_Hoover: But, McDonalds is exceptionally common.
19:45:34 <Vorpal> elliott: that /is/ gingerbread
19:45:35 <CakeProphet> pikhq_: in Colorado you can find sausage, egg, and cheese biscuits that are not from a fast food chain, yes?
19:45:37 <Phantom_Hoover> pikhq_, there is no other Colorado to speak of.
19:45:38 <monqy> do other fast food places carry mcbiscuitalikes
19:45:42 <Vorpal> elliott: pepparkakor
19:45:43 <pikhq_> CakeProphet: Never seen one.
19:45:46 <monqy> i'm no expert on fast food
19:45:48 <CakeProphet> o_o
19:45:49 <pikhq_> Phantom_Hoover: True, true.
19:46:00 <Vorpal> elliott: anyway, how do you do gingerbread for xmas over there?
19:46:03 <CakeProphet> pikhq_: oh, well, in the south that's just a thing we do to biscuits, apparently.
19:46:04 <elliott> Vorpal: whatever they are they're delicious, there's another one with almonds i think?
19:46:06 <pikhq_> Phantom_Hoover: But I tend to not assume people outside the US don't memorise a list of states.
19:46:11 <pikhq_> CakeProphet: Ah.
19:46:19 <Vorpal> elliott: possible, there are many variants of the basic recipe
19:46:33 <pikhq_> Erm, s/don't//
19:46:33 <Phantom_Hoover> pikhq_, I think if you mentioned a state most people here would recognise it as one, by and large.
19:46:35 <Vorpal> elliott: literally the name translates to "pepper cookies/biscuits/whatever"
19:46:36 <elliott> <Phantom_Hoover> I will soothe my eyes with scones that have not been mutilated.
19:46:38 <monqy> some gingerbread is good. other gingerbread is awful.
19:46:41 <pikhq_> Phantom_Hoover: Feh.
19:46:42 <elliott> Phantom_Hoover: Let's be honest though, scones aren't actually all that good.
19:46:47 <Phantom_Hoover> I
19:46:48 <Vorpal> elliott: but I know at least one recipe that have no pepper
19:46:51 <Vorpal> XD
19:46:52 <elliott> Phantom_Hoover: I mean yes they're good.
19:46:54 <Phantom_Hoover> I will not talk to you ever again.
19:46:58 <elliott> Phantom_Hoover: But they're so easy to fuck up!
19:47:00 <Phantom_Hoover> Yes
19:47:02 <pikhq_> Phantom_Hoover: You *know* you want biscuits & gravy.
19:47:12 <pikhq_> Gravy: it is delicious.
19:47:12 <elliott> Phantom_Hoover: It's like, you keep reaching for this unattainable state of perfect scone.
19:47:17 <elliott> But all you get are Failed Scones.
19:47:20 <Vorpal> <Vorpal> elliott: anyway, how do you do gingerbread for xmas over there?
19:47:22 <elliott> The average sconesperience is not good.
19:47:26 <Vorpal> elliott: not like the IKEA ones?
19:47:27 <Phantom_Hoover> elliott, no, you are just a terrible sconesmith.
19:47:29 <elliott> Vorpal: Not in that shape.
19:47:34 * Phantom_Hoover → food (non-scone).
19:47:37 <elliott> Phantom_Hoover: OK show me a good scone.
19:47:45 <elliott> Phantom_Hoover: I will drive to Edinburgh.
19:48:01 <Vorpal> elliott: well, there are many shapes over here. Xmas trees. People (which sounds strange when you think about it), hearts. Circles.
19:48:04 <Vorpal> and so on
19:48:14 <Vorpal> I think the heart shape is probably most common
19:48:49 <monqy> haert shape?
19:49:00 <Vorpal> I said heart
19:49:00 <elliott> http://upload.wikimedia.org/wikipedia/commons/c/cb/Gingerbread_house_8.jpg challenge: eat without vomiting
19:49:05 <pikhq_> ♥, I assume.
19:49:14 <Vorpal> pikhq_: yes, what else?
19:49:14 <elliott> Ikea to drop famous Swedish food brands
19:49:14 <elliott> 15 October 2011 | news Newsdesk
19:49:14 <elliott> Swedish furnishing giant Ikea is undergoing a change and will soon rid their food shelves of anything not bearing it’s name.
19:49:14 <elliott> People outside of Sweden craving Swedish-brand eats have made a habit of frequenting Ikea stores around the world in order to find such things as Cloetta chocolate, Abba herring, Kalle's caviar spread, and cookies by Göteborgskex.
19:49:15 <pikhq_> Mmmm, gingerbread.
19:49:16 <elliott> But soon, those looking for a taste of Sweden will instead have to settle for Ikea-branded approximations following a decision by the company to move to own-branded foods.
19:49:19 <elliott> OH NOOOOOOOOOOOOOOOOOOOO
19:49:21 <elliott> OH NOOOOOOOOOOOOOOOOOOOO
19:49:23 <elliott> OH NOOOOOOOOOOOOOOOOOOOO
19:49:25 <elliott> OH NOOOOOOOOOOOOOOOOOOOO
19:49:26 <Vorpal> <elliott> http://upload.wikimedia.org/wikipedia/commons/c/cb/Gingerbread_house_8.jpg challenge: eat without vomiting <-- what? It looks delicious
19:49:39 <Vorpal> elliott: though maybe a bit at a time
19:49:42 <elliott> Vorpal: Good luck with the parts that are basically thick raw sugar :P
19:49:56 <Vorpal> elliott: well, I wouldn't eat it all in one meal of course
19:49:56 <monqy> it looks too sugary for me
19:50:00 <pikhq_> elliott: Probably not that bad in the US, though.
19:50:06 <Vorpal> elliott: anyway I like sugar :P
19:50:13 <monqy> hopefully that gingerbread isg ood gingrebread and not bad gingerbread
19:50:13 <oerjan> elliott: please don't mention anna anka in polite company
19:50:17 <Vorpal> elliott: I doubt it would be healthy though
19:50:18 <pikhq_> I mean, jesus, I can find fucking lutefisk in the US, I'd imagine it wouldn't be hard to find Swedish foods.
19:50:22 <monqy> the only gingerbread houses i've had were bad gingerbread
19:50:24 <elliott> oerjan: sounds like a nursery rhyme
19:50:37 <elliott> monqy: have you gotten a digestive biscuit yet
19:50:39 <Vorpal> pikhq_: lutefisk is Norwegian when spelled like that at least.
19:50:40 <monqy> :(
19:50:44 <elliott> Phantom_Hoover: What are your opinions on rich teas.
19:50:47 <Vorpal> the Swedish spelling is lutfisk.
19:51:00 <elliott> pikhq_: BTW get a fucking digestive and dunk it into some tea and eat it.
19:51:01 <Vorpal> I don't know anyone under the age of 70 that eats lutfisl
19:51:05 <Vorpal> lutfisk*
19:51:17 <elliott> `quote rotting sea life
19:51:19 <pikhq_> Vorpal: Yes, I'm aware. Still, if I can find *lutefisk*, I'd imagine it's not hard to find anything Scandinavian. :)
19:51:19 <HackEgo> 100) <songhead95> think of all the starving kids in china who don't have rotting sea life to eat
19:51:22 <CakeProphet> http://i-cdn.apartmenttherapy.com/uimages/kitchen/2011_03_20-ShrimpGrits2.jpg oh my god this looks amazing.
19:51:30 <Vorpal> pikhq_: hm. Surströmming?
19:51:31 <elliott> CakeProphet: ;__;
19:51:34 <elliott> america is devil
19:51:35 <elliott> country
19:51:43 <Vorpal> pikhq_: if the answer is yes, then I'm scared.
19:51:50 <Vorpal> it should never have been exported
19:51:51 <CakeProphet> I don't think most americans eat grits actually.
19:52:17 <pikhq_> Vorpal: Might have to make a trip of it, but I have no doubt I could find it.
19:52:21 <elliott> oh my god
19:52:24 <elliott> ikea published a cookbook
19:52:25 <elliott> and
19:52:26 <elliott> http://media.treehugger.com/assets/images/2011/10/ikea-cook.png
19:52:32 <elliott> (found when googling for ikea biscuits)
19:52:37 <elliott> look at that butter pyramid oh my god
19:53:04 <elliott> http://media.treehugger.com/assets/images/2011/10/orange-ikea.png :DDDD
19:53:09 <Vorpal> pikhq_: btw I suspect that in Sweden, lutfisk will be pretty much gone in 30-40 years from mainstream shops.
19:53:33 <CakeProphet> elliott: mmmmm. I too am a cocaine afficionado
19:53:39 <pikhq_> It's still fairly commonly consumed in rural areas of Minnesotta.
19:53:39 <Vorpal> <elliott> look at that butter pyramid oh my god <-- sure that is butter?
19:53:45 <elliott> http://media.treehugger.com/assets/images/2011/10/semlor-ikea.png "recipe contains semen"
19:53:50 <elliott> Vorpal: yes but
19:53:52 <elliott> Vorpal: look at the tiny eggs omg
19:53:57 <elliott> it is the best way to list ingredients ever
19:53:58 <Vorpal> elliott: I thought it was white chocolate...
19:54:13 <elliott> Vorpal: nah, that's butter
19:54:15 <elliott> i'm sure
19:54:17 <CakeProphet> elliott: semen and coke: a hookers best griends.
19:54:24 <Vorpal> elliott: wait what are the white mountains to the left in the first picture then
19:54:25 <elliott> Vorpal: it's gingerbread cookies apparentl
19:54:26 <elliott> y
19:54:31 <elliott> and icing sugar?
19:54:35 <Vorpal> oh I see
19:54:44 <elliott> not sure where the ginger is there.
19:54:47 <elliott> oh it's the
19:54:48 <elliott> |>
19:54:49 <elliott> triangle
19:54:51 <pikhq_> Hmm. Seems it's actually really non-trivial to find surströmming in the US.
19:54:52 <Vorpal> elliott: they do the ingredient lists like that in the book?
19:54:56 <elliott> yep!
19:54:59 <elliott> "It is a 140 page coffee-table recipe book, containing 30 classic Swedish baking recipes--everything from small biscuits to large cakes. For each recipe, there are two images: one of the ingredients and one of the finished item."
19:55:15 <elliott> i hoped that meant it had no instructions
19:55:17 <elliott> but i guess it dose
19:55:18 <elliott> does
19:55:18 <Vorpal> elliott: so where is the scale for figuring out how to calculate the amount from the pictures
19:55:19 <pikhq_> It's a crapshoot to see if it gets past customs; it'll either go through or get turned down for being rotten.
19:55:35 <elliott> Vorpal: swedes may be a little unfamiliar with this idea. but it's called approximation
19:55:48 <Vorpal> elliott: I know about it, I just don't like it
19:56:26 <Vorpal> elliott: besides calculating the area of the diagonal line in http://media.treehugger.com/assets/images/2011/10/orange-ikea.png seems non-trivial to me. And unlike the eggs in the first there is no known object to compare against
19:56:28 <elliott> "[...] designed perhaps for the tradition of "dunking" in cups of tea; hence preventing the collapse of the biscuit and ruining of the beverage."
19:56:45 <elliott> Vorpal: that's because you're not meant to calculate it
19:57:01 <Vorpal> pikhq_: heh
19:57:04 <elliott> btw
19:57:09 <elliott> CakeProphet: pikhq_: monqy: apologise for oreos
19:57:13 <CakeProphet> Vorpal: the three sticks of butter probably is a good reference point.
19:57:16 <CakeProphet> elliott: never.
19:57:21 <elliott> oreos are so bad
19:57:22 <Vorpal> elliott: oh there is a separate ingredient list?
19:57:26 <elliott> because
19:57:33 <elliott> Vorpal: no, you're meant to approximate using intuition
19:57:36 <CakeProphet> elliott: they're not my favorite, no.
19:57:38 <elliott> CakeProphet: you know how they're meant to be chocolate flavoured
19:57:38 <elliott> like
19:57:40 <elliott> the black bits
19:57:42 <elliott> are meant to taste like chocolate
19:57:43 <elliott> well
19:57:46 <elliott> break one off sometime
19:57:48 <elliott> and chew on it
19:57:49 <monqy> oreos.........................................................
19:57:50 <elliott> and think about the taste
19:57:51 <elliott> and tell me honestly
19:57:54 <elliott> that it tastes like chocolate
19:57:55 <elliott> it doesn't
19:57:58 <elliott> you know what it tastes like?
19:58:01 <elliott> blackness + sugar
19:58:04 <Vorpal> CakeProphet: wait what? The only sticks of butter I know of are 1-kg ones.
19:58:06 <elliott> dear america
19:58:07 <elliott> chocolate
19:58:10 <elliott> does not taste like blackness
19:58:14 <Gregor> Somebody find me an image macro with Shatner going "NYAAAAAAAAAAAAAAAAAAAAAAAAN!" and Nyan cat.
19:58:15 <monqy> some cookies are good, but oreos are not them
19:58:20 <Vorpal> CakeProphet: 3 kg butter? Come on
19:58:32 <elliott> monqy: oreos COULD have been good
19:58:40 <elliott> monqy: if the biscuit part actually tasted like chocolate
19:58:42 <elliott> monqy: but you know what
19:58:43 <Gregor> Wait, oreos are supposed to be chocolate?
19:58:45 <elliott> monqy: those already exists
19:58:46 <CakeProphet> are those not sticks of butter in http://media.treehugger.com/assets/images/2011/10/orange-ikea.png ?
19:58:47 <elliott> THEY'RE CALLED BOURBONS
19:58:51 <CakeProphet> recipes use a lot of butter, sir.
19:58:58 <elliott> SO BASICALLY FUCK AMERICA???
19:58:59 <elliott> Gregor: yes.
19:59:11 <Gregor> Well, as we all know, the USA pretty much sucks at chocolate.
19:59:16 <elliott> Gregor: at least, if they're not intending to, they're quite obviously TRYING to emulate chocolate
19:59:19 <Gregor> We're a nation that seriously believes that Hershey's is good.
19:59:33 <elliott> i've never had hershey's
19:59:35 <elliott> this makes me quite happy
19:59:36 <elliott> btw
19:59:37 <elliott> did you know
19:59:40 <elliott> cadburys products in the us
19:59:42 <Vorpal> CakeProphet: sure, then look at the scale of the whole thing. That diagonal bar is like 80 cm from end to end...
19:59:44 <elliott> are made completely different to in the uk
19:59:46 <elliott> they're poisoning your minds
19:59:50 <elliott> by making you think cadburys sucks
19:59:51 <elliott> dear god it doesn't
19:59:53 <elliott> come home to us
19:59:55 <elliott> we will show you chocolate
19:59:57 <elliott> it is so good
19:59:57 <Gregor> elliott: Yup, but luckily, Cadbury's is rare here.
20:00:00 <Vorpal> CakeProphet: that will generate a huge amount of food
20:00:06 <Gregor> elliott: I've had chocolate in the UK ... also had it in Paris so nya :P
20:00:16 <elliott> Gregor: have you tasted real uk cadburys because
20:00:17 <elliott> it's so good
20:00:25 <elliott> oh man this reminds me of that daily mail article i found
20:00:29 <elliott> it literally compared Milka chocolate to hitler
20:00:33 <elliott> i swear to god
20:00:37 <Gregor> elliott: I have.
20:00:37 <pikhq_> It's not that the US sucks at chocolate, we suck at food regulation.
20:00:45 <Gregor> elliott: But I also made the mistake of trying Turkish Delight.
20:00:46 <elliott> http://www.dailymail.co.uk/news/article-1275526/Cadbury-owner-plugs-inferior-Milka-bar-chocolate-lovers-say-Krafty-sideline-Dairy-Milk.html
20:00:46 <elliott> HERE IT IS
20:00:48 <elliott> they literally say
20:00:51 <elliott> that the nazis had milka
20:00:55 <elliott> read it
20:00:55 <Gregor> elliott: I wonder how anyone could think that earwax flavor in chocolate is good.
20:00:56 <elliott> you will be
20:00:57 <elliott> so amazed
20:01:04 <elliott> Gregor: Turkish Delight is, uh, yeah.
20:01:04 <pikhq_> Our "chocolate" is generally made to the legal standard for what "chocolate" is.
20:01:05 <Phantom_Hoover> Back.
20:01:15 <elliott> Phantom_Hoover: Do you remember that Daily Mail article.
20:01:18 <elliott> Phantom_Hoover: That I linked.
20:01:21 <elliott> Phantom_Hoover: That compared Milka to Nazism.
20:01:31 <Phantom_Hoover> <elliott> Phantom_Hoover: What are your opinions on rich teas.
20:01:34 <Phantom_Hoover> Eugh.
20:01:37 <Phantom_Hoover> elliott, no.
20:01:48 <elliott> "THE chocolate snobs would have you believe that Dairy Milik is cheap, bland and artificial, lacking depth and complexity. Waxy chocolate for the masses, they sneer, while nibbling on some ghastly lavender-infused, organic creation."
20:01:48 <monqy> http://i.dailymail.co.uk/i/pix/2010/05/08/article-1275526-097A1C72000005DC-886_468x681.jpg
20:01:49 <elliott> ACTUAL
20:01:49 <elliott> FUCKING
20:01:50 <elliott> QUOTE
20:01:51 <elliott> DIRECT
20:01:51 <elliott> FUCKING
20:01:53 <elliott> QUOTE
20:02:16 <elliott> "Dull and insipid, like Berne on a wet night" GOD
20:02:24 <Gregor> Of course, milk chocolate is terrible.
20:02:29 <Gregor> And people who like milk chocolate should feel bad.
20:02:36 <Vorpal> <elliott> Gregor: have you tasted real uk cadburys because <-- the only real chocolate is from continental Europe IMO
20:02:38 -!- mtve has quit (Ping timeout: 252 seconds).
20:02:45 <Vorpal> mostly French or Belgian
20:02:58 <elliott> "The chocolate was created in 1901 by Swiss chocolate company Suchard. Both The Kaiser’s and Hitler’s troops took Milka chocolate to war.
20:02:58 <elliott> Read more: http://www.dailymail.co.uk/news/article-1275526/Cadbury-owner-plugs-inferior-Milka-bar-chocolate-lovers-say-Krafty-sideline-Dairy-Milk.html#ixzz1d97FjOnQ"
20:03:00 <elliott> i repeat
20:03:01 <elliott> ACTUAL QUOTE
20:03:03 <Phantom_Hoover> Vorpal, yes, but your opinions are universally head-meltingly Vorpid so we all ignore them.
20:03:04 <elliott> apart from that tynt bullshit
20:03:13 <Vorpal> sure, Switzerland is okay too
20:03:23 <pikhq_> Gregor: US milk chocolate is only 10% cocoa, and is generally made from milk that's gone a little bit bad.
20:03:28 <Vorpal> Phantom_Hoover: what about 100% pure Valrona?
20:03:33 <Gregor> pikhq_: I'm not referring to US any kind of chocolate.
20:03:39 <Gregor> pikhq_: US chocolate isn't chocolate, it's a joke.
20:03:40 <Vorpal> err spelling
20:03:46 <Vorpal> Valrhona
20:03:48 <Gregor> pikhq_: But even legit milk chocolate is terrible.
20:03:51 <Sgeo|web> "Jones’s paper [about classes over type constructors] appeared in 1993, the same year that monads became popular for I/O (Section 7). "
20:03:52 <pikhq_> EU milk chocolate is 25% cocoa, and can't pull that shit.
20:04:06 <elliott> Phantom_Hoover: Anyway I quite like Rich Teas but the context has to be right.
20:04:07 <Sgeo|web> The stuff in [] was my edit
20:04:14 <elliott> Phantom_Hoover: They really rely on a high-quality, fresh biscuit and a good tea.
20:04:21 <Phantom_Hoover> No, they don't.
20:04:31 <elliott> They do. You're just a bad richteasmith.
20:04:55 <Phantom_Hoover> They're made of loosely-caked crumbs which disintegrate when held in tea for more than a fraction of a second, and, unlike digestives, they are bland and joyless when eaten alone.
20:05:23 <elliott> Phantom_Hoover: Damn, Scots must get really bad rich teas. They're quite structurally sound over here.
20:05:25 <elliott> But yes, digestives are better.
20:05:41 <Vorpal> pikhq_: I prefer less milk in my chocolate. Try proper French chocolate some time. Tends to be expensive though
20:05:44 <monqy> im food envy
20:05:47 <elliott> Taneb: Join in the biscuit discussion!
20:05:56 <elliott> monqy: Come to England. We will accept you.
20:06:06 <monqy> maybe when i can
20:06:13 <Phantom_Hoover> Come to Scotland, we have haggis.
20:06:14 <monqy> but for a few years at least i cannot
20:06:24 <elliott> monqy: Sneak.
20:06:36 <CakeProphet> sneak across the atlantic.
20:06:49 <pikhq_> Vorpal: I have, actually.
20:06:57 <pikhq_> Jesus fuck that was good.
20:07:04 <monqy> tiptoe across the atlantic
20:07:06 <elliott> Honestly, milk chocolate is nice.
20:07:15 <elliott> Only joyless people, or those who haven't actually had good milk chocolate, claim otherwise.
20:07:21 <pikhq_> elliott: US milk "chocolate" is shitty.
20:07:23 <Phantom_Hoover> Nobody's saying it isn't except Gregor, and FFS he's anosmic.
20:07:28 <elliott> Phantom_Hoover: So is Vorpal.
20:07:33 <elliott> But he doesn't count as a person.
20:07:55 <monqy> maybe i have had good chocolate but i cannot recall
20:07:57 <pikhq_> It's made with *spoiled milk* for goodness sake.
20:08:00 <Phantom_Hoover> No, Vorpal is wittering on about what specific type of milk chocolate he likes.
20:08:01 <Vorpal> elliott: sure milk chocolate can be okay. But compare it to dark chocolate...
20:08:02 <CakeProphet> monqy: come to the south. we have good food.
20:08:03 <Vorpal> pikhq_: actually I'm going to make a cup of hot chocolate now, From 100% pure Valrhona. I will however add just a tiny bit of sugar to that.
20:08:06 <elliott> Maaan libcurl is way too big.
20:08:07 <monqy> CakeProphet: no never
20:08:14 <elliott> Phantom_Hoover: No, he's talking about the ~best~ dark chocolate.
20:08:18 <Phantom_Hoover> pikhq_, so your chocolate is more cheesy than your cheese?
20:08:19 <monqy> one thing i never want to do is go to the southe
20:08:19 <Vorpal> Phantom_Hoover: no
20:08:25 <pikhq_> Phantom_Hoover: Yes.
20:08:26 <elliott> Vorpal: Milk chocolate is more enjoyable than 99% of dark chocolate and that's that.
20:08:34 <Vorpal> elliott: not at all.
20:08:36 <Phantom_Hoover> monqy, you can go south from California?
20:08:40 <CakeProphet> Phantom_Hoover: cheese is typically made from extremely fresh milk....
20:08:41 <CakeProphet> >_>
20:08:42 <elliott> Vorpal: See exception (a) to my rule.
20:08:46 <Vorpal> elliott: tastes just differ. I guess you don't have a grown up taste yet.
20:08:48 <Phantom_Hoover> pikhq_, enlighten CakeProphet.
20:08:51 <monqy> i don't want to go to mexico either
20:08:59 <monqy> is mexico good?
20:08:59 <elliott> Vorpal: No, you're just a member of "joyless people".
20:09:08 <pikhq_> CakeProphet: Cheese is either coagulated milk or coagulated, carefully rotten milk.
20:09:16 <CakeProphet> no
20:09:18 <CakeProphet> it's not rotten
20:09:19 <CakeProphet> at all.
20:09:23 <Gregor> (Re milk chocolate) Mind you I also hate milk :P
20:09:23 <CakeProphet> coagulated, yes. soured, yes.
20:09:29 <CakeProphet> but the milk is fresh when all of this happens.
20:09:36 <monqy> some cheese is good. other cheese is bad.
20:09:41 <monqy> - monqy
20:09:46 <pikhq_> Allowed to have bacteria and fungi consume it and release waste products, yes.
20:09:56 <pikhq_> This is a process we generally call "rotting".
20:09:58 <Gregor> All cheese is bad. Other cheese is worse. - Gregor
20:10:23 <CakeProphet> pikhq_: it's similar sure, but with rotting there isn't any control over what kinds of bacteria
20:10:34 <elliott> Gregor is bad. - Gregor
20:10:49 <Phantom_Hoover> pikhq_, it was a jibe at American cheese food product, not a discussion on the manufacture of cheese, actually.
20:10:55 <CakeProphet> aaaaaah -aaaaaaaah
20:10:55 <Gregor> Milk chocolate fnarfs quite horrible.
20:11:04 <monqy> gregor smells - gregor's mother
20:11:08 <elliott> Gregor: You fnarf horrible.
20:11:27 <pikhq_> Phantom_Hoover: Oh, right.
20:11:41 <Gregor> I'm sure I would fnarf just fine if prepared properly.
20:11:54 <monqy> american cheese is awful
20:12:09 <Phantom_Hoover> Calling it 'cheese' demeans cheese.
20:12:12 <monqy> yep
20:12:23 <Phantom_Hoover> 'Cheesoid' is perhaps sufficient.
20:12:30 <elliott> Choid.
20:12:31 <monqy> hey guys have you ever had aerosol cheese? I can't recall if I ever have
20:12:37 <elliott> No.
20:12:38 <pikhq_> CakeProphet: American cheese is a "wonderful" thing. It consists of a mixture of milk, whey, milkfat, milk protein concentrate, whey protein concentrate, salt, and an emulsifier.
20:12:46 -!- Gregor has set topic: Official support channel for Web o' Flies | Also official channel of Velveeta™ | Velveeta™: Why cheese, when you can Velveeta!® | http://codu.org/logs/_esoteric/.
20:12:53 <elliott> Gregor: You removed the assignments.
20:13:00 <Gregor> elliott: These things happen.
20:13:12 <elliott> Gregor: atehwa will be sad.
20:13:24 <pikhq_> CakeProphet: American cheese food product is even more amazing: it can contain 0% milk!
20:13:53 <pikhq_> Ah, yes, and it's commonly *extruded* into individual slices.
20:14:00 <pikhq_> Also, it's available in *aerosol cans*.
20:14:16 <Darth_Cliche> America, Land of the Brave, Land of the Free, and Land of Crappy Cheese.
20:14:19 <pikhq_> https://secure.wikimedia.org/wikipedia/en/wiki/File:Easy_cheese2.jpg I shit you not.
20:14:39 <CakeProphet> pikhq_: I'm aware of such concoctions.
20:14:40 <pikhq_> Yes, it even has the audacity to claim to be real cheese.
20:15:10 <Phantom_Hoover> pikhq_, no it doesn't, it states quite clearly that it's a pressurised cheese snack.
20:15:17 <Gregor> pikhq_: To be fair, it's not actually aerosol in it :P
20:15:20 <Phantom_Hoover> "Picture taken by myself in my office, to help show a better picture of Easy Cheese."
20:15:31 <Darth_Cliche> provolone ftw
20:15:32 <pikhq_> Phantom_Hoover: It then has a thing there that says "REAL Kraft™ CHEESE"
20:15:45 <elliott> they should call it Easy "Cheese"
20:15:49 <elliott> just scare-quote every fake product
20:15:51 <Phantom_Hoover> *Kraft* cheese.
20:15:55 <elliott> eventually there'll be like
20:15:57 <elliott> "Kraft" Cheese
20:16:00 <elliott> real cheese from fake kraft!
20:16:02 <Phantom_Hoover> Not *cheese* cheese.
20:16:25 -!- ais523 has joined.
20:16:27 <oerjan> <elliott> that the nazis had milka <-- well they obviously needed something to eat with their fanta
20:16:45 * ais523 continues to boggle at KDE programs loading faster than Gnome programs nowadays
20:16:50 <monqy> hm, would it be possible to put real cheese into a good spray?
20:16:57 <Gregor> So, Wonder Bread, Spam and Easy Cheese: Best sandwich?
20:17:02 <elliott> monqy: No :P
20:17:03 <monqy> not that spray is a good idea at all
20:17:09 <elliott> Gregor: Oh god.
20:17:16 <ais523> (I'm using Gnome 2's shell, so I'd assume that Gnome's libraries would be hotter in cache)
20:17:21 <Phantom_Hoover> monqy, maybe if you used cottage cheese or something?
20:17:30 <elliott> Phantom_Hoover: BTW do you have any Bread Recommendations, I feel like the quality of bread in general has gone down in recent years?
20:17:47 <Phantom_Hoover> I just eats bread when I gets bread.
20:17:49 <ais523> elliott: I don't really, I'm having severe problem finding breads I like
20:18:04 <CakeProphet> elliott: I recommend cake.
20:18:04 <ais523> I typically prefer rolls to loaves
20:18:04 <Gregor> lol@"I just eats bread when I gets bread"
20:18:05 <oerjan> <Gregor> And people who like milk chocolate should feel bad. <-- THAT'S IT YOU'RE AT WAR WITH NORWAY NOW
20:18:19 <elliott> ais523: Ditto.
20:18:37 <Phantom_Hoover> oerjan, perpetually ten minutes in the past.
20:18:41 <Gregor> I prefer rice to bread (because it is an alternative)
20:19:04 <ais523> elliott: because I find it hard to find a brand of loaf I'm OK with
20:19:14 <ais523> typically I don't mind sliced brown bread so much, whatever the manufacturer
20:19:33 <ais523> (the really cheap own-brand stuff tastes OK for me for the purposes for which I mostly use bread, although it's not so good for sandwiches)
20:19:55 <CakeProphet> solution, just use fried chicken breasts as your bread.
20:20:11 <elliott> The fresh, unsliced rolls you can get from $supermarket_bakery are pretty good, but make for lousy toast.
20:20:16 <CakeProphet> http://en.wikipedia.org/wiki/Double_Down_(sandwich)
20:20:34 <pikhq_> Praise be to America!
20:20:40 <monqy> use doughnuts as bread
20:21:13 <elliott> CakeProphet: What does that thing actually taste like.
20:21:19 <CakeProphet> elliott: like I know.
20:21:25 <elliott> I want to hate it, but... it's chicken and bacon...
20:21:25 <monqy> "so much 100 percent premium chicken, we didn't have room for a bun."
20:21:27 <Gregor> elliott: I know of noöne brave enough to try :P
20:21:32 <CakeProphet> I mean I can kind of imagine what it tastes like.
20:21:39 <monqy> elliott: it's kfc chicken
20:21:41 <monqy> elliott: i.e. gross
20:21:57 <ais523> strangely, I ate some just a few minutes ago, but it wasn't from KFC
20:21:57 <pikhq_> monqy: https://secure.wikimedia.org/wikipedia/en/wiki/Luther_Burger
20:22:01 <ais523> but from $generic_fish_and_chip_shop
20:22:03 <monqy> pikhq_: yes that
20:22:23 <elliott> monqy: KFC are the best common non-fish-and-chips fast food outlet I know of, but ISTR their fillets are pretty gross, so eh
20:22:32 <elliott> pikhq_: Wh...
20:22:39 <monqy> maybe british kfc is better than american kfc
20:23:07 <CakeProphet> http://en.wikipedia.org/wiki/Heart_Attack_Grill
20:23:17 <CakeProphet> beats Luther Burger
20:23:27 <elliott> "The establishment is a hospital theme restaurant: waitresses ("nurses") take orders ("prescriptions") from the customers ("patients"). A tag is wrapped on the patient's wrist showing which foods they order and a "doctor" examines the "patients" with a stethoscope. The menu includes "Single", "Double", "Triple", and "Quadruple Bypass" hamburgers"
20:23:29 <ais523> elliott: hmm, actually my favourite common fast food chain is Burger King
20:23:35 <pikhq_> elliott: Remember: this is a country that has such a thing as "deep fried butter".
20:23:48 <Vorpal> <Gregor> All cheese is bad. Other cheese is worse. - Gregor <-- really? Cheese in general is awesome, though there might be specific variants of cheese that I'm not personally a fan of.
20:23:50 <elliott> ais523: I don't actually have any experience with Burger King so that may be
20:23:53 <ais523> as an aside, I went to a McDonalds in Canada once, and it was actually mindbogglingly superior to the version they had in the UK
20:23:55 * elliott is no fast food expert.
20:24:05 <Gregor> Vorpal: I don't like any dairy products.
20:24:05 <ais523> I can see why North Americans hate UK fast food chains that much
20:24:06 <pikhq_> Vorpal: Cheese may taste good, but it seems to fnarf terrible.
20:24:10 <Darth_Cliche> There's British KFC? Kent Fried Chicken?
20:24:18 <Gregor> ais523: McDonalds in Canada is, near I can tell, I totally unrelated chain to McDonalds everywhere else.
20:24:18 <elliott> Kent Fried Chicken :D
20:24:23 <Vorpal> <pikhq_> monqy: https://secure.wikimedia.org/wikipedia/en/wiki/Luther_Burger <-- the crap?!
20:24:27 <Gregor> s/, I totally/, a totally/
20:24:29 <ais523> Gregor: hmm
20:24:31 <elliott> `addquote <Darth_Cliche> There's British KFC? Kent Fried Chicken?
20:24:33 <Vorpal> pikhq_: fnarf?
20:24:33 <HackEgo> 713) <Darth_Cliche> There's British KFC? Kent Fried Chicken?
20:24:35 <Vorpal> pikhq_: what?
20:24:36 <ais523> they had pretty much the same menu items as in the UK
20:24:39 <ais523> they just meant different things
20:24:40 <elliott> Vorpal: Gregor's sense.
20:24:51 <pikhq_> Vorpal: Gregor doesn't have a sense of taste, he has a sense of fnarf.
20:25:02 <Vorpal> OKAAAY
20:25:05 <elliott> BTW, what is actually in Kent, I am not entirely sure it exists.
20:25:07 <elliott> Vorpal: Gregor is anosmic.
20:25:08 <monqy> gregor "tasteless" richards
20:25:10 <pikhq_> ais523: From what I understand, McDonalds is pretty much *identical* world-wide. Except apparently Canada?
20:25:14 <elliott> SORRY HYPOSMIC OR W/E
20:25:23 <elliott> pikhq_: I thought Japanese McDonalds was wildly different.
20:25:34 <Gregor> McDonald's isn't anywhere near identical worldwide.
20:25:39 <Gregor> They're very adaptive, actually.
20:25:48 <Gregor> They have a few staples that are the same everywhere, but that's it.
20:25:49 <CakeProphet> http://1.bp.blogspot.com/_vUALNnFd_tE/Sj8-aWMGzGI/AAAAAAAAAUk/l6SKDtZ-kH8/s320/bypassburger.jpg
20:25:52 <CakeProphet> for reference
20:25:55 <pikhq_> elliott: Japanese McDonalds mostly just has racist marketing.
20:25:58 <Vorpal> pikhq_: if I eat hamburger in Sweden I do it at Max: https://secure.wikimedia.org/wikipedia/en/wiki/Max_Hamburgers
20:26:01 <Darth_Cliche> I suppose in Canada and Australia it's QFC, Quebec Fried Chicken or Queensland Fried Chicken respectively
20:26:07 <Phantom_Hoover> pikhq_, racist to whom?
20:26:10 <elliott> pikhq_: I thought they had, like, really good beef or something. Or at least I've heard that.
20:26:11 <elliott> Phantom_Hoover: Cows.
20:26:16 <pikhq_> Phantom_Hoover: Caucasians.
20:26:18 <ais523> pikhq_ (and other Americans who care): the UK version of McDonalds works pretty much via taking the basic ingredients of a McDonalds meal, submerging them in oil and then serving the result
20:26:22 <elliott> Phantom_Hoover: Same thing.
20:26:28 <ais523> well, apart from things like lettuce, which are just served raw
20:26:30 <Phantom_Hoover> Cowcasians.
20:26:38 <pikhq_> ais523: Sounds utterly authentic to US McDonalds.
20:26:39 <elliott> ais523: They could optimise that. Oil lettuce.
20:26:49 <monqy> double oil
20:26:50 <ais523> the chips/fries end up incredibly bland as a result, and they add vast amounts of salt to cover this up
20:26:56 <oerjan> <Phantom_Hoover> oerjan, perpetually ten minutes in the past. <-- LIES
20:27:06 <elliott> ais523: To be fair, the submerge-in-oil-and-serve-the-result method can sometimes be effective, cf. doughnuts.
20:27:14 <Phantom_Hoover> oerjan, please tell me you waited ten minutes until saying that.
20:27:17 <ais523> elliott: or the typical fish and chip shop
20:27:24 <elliott> ais523: Indeed.
20:27:26 <pikhq_> ais523: Perfectly authentic!
20:27:30 <ais523> I'm not complaining about that, so much as that they don't do anything to the ingredients beforehand
20:27:42 <Taneb> My incredibly slow, inefficient, and badly written program is running
20:27:43 <Gregor> <ais523> pikhq_ (and other Americans who care): the UK version of McDonalds works pretty much via taking the basic ingredients of a McDonalds meal, submerging them in oil and then serving the result // ais523: I thought this was the UK's version of all cooking?
20:27:56 <pikhq_> Gregor: 'Cept curry.
20:27:59 <elliott> Note to future civilisations: Yes, this is really what the 21st century is like.
20:28:02 <ais523> Gregor: oddly, no
20:28:08 <elliott> Gregor: That isn't even in line with the stereotypes.
20:28:10 <monqy> future envy
20:28:10 <monqy> future envy
20:28:20 <pikhq_> Also, the stereotype is boiling, not frying. :)
20:28:21 <elliott> Gregor: You're meant to think we exclusively eat ridiculously bland, quaint stuff.
20:28:26 <elliott> There's no oil involved in that :P
20:28:34 <pikhq_> Boil it until it the flavor's leached out!
20:28:37 <Gregor> pikhq_: Curry is stolen :P
20:28:40 <Gregor> elliott: Fish and chips.
20:28:48 <Phantom_Hoover> monqy, why are you so envious of the future?
20:28:48 <monqy> oil tea
20:28:49 <Gregor> elliott: It's just that you can do even deep fried blandly.
20:28:51 <ais523> Gregor: actually, most good UK food works via stealing it from someone else, then modifying it into something entirely different
20:28:54 <pikhq_> Gregor: Meh, curry got stolen by everyone.
20:28:59 <Vorpal> <Phantom_Hoover> oerjan, please tell me you waited ten minutes until saying that. <-- more like 9 minutes
20:29:02 <Gregor> pikhq_: 'struth, even I stole it :P
20:29:04 <elliott> Gregor: Sounds like you've never had fish and chips!!!!!!!
20:29:06 <ais523> the UK version of curry is unlike that in India
20:29:19 <Gregor> elliott: I don't like fish either 8-D
20:29:21 <ais523> to the extent that imported Indian chefs can't cook it very well without special training
20:29:23 <Taneb> I like Madras curry
20:29:30 <Gregor> elliott: But I've had chicken and chips at a fish and chips place in the UK :P
20:29:31 <monqy> maybe future isn't bad
20:29:33 <monqy> but it most likely is
20:29:35 <Darth_Cliche> Curry is original, it didn't even really exist in India IIRC, it's just meant to taste vaguely Indian
20:29:38 <monqy> future pity
20:29:42 <elliott> Gregor: You probably hate vinegar or something like that because you're not human.
20:29:59 <pikhq_> Besides, it's not like the UK is unique in having done strange things to curry.
20:30:01 <Gregor> Darth_Cliche: Well, the term "curry" refers to a billion things.
20:30:05 <Gregor> elliott: I like vinegar!
20:30:07 <ais523> Gregor: hmm, last Friday I broke the pattern, but previously, I'd been trying a large number of fast food outlets within walking distance of my route home
20:30:10 <pikhq_> Like, every Asian country has their own rendition of it by now.
20:30:15 <ais523> and ordering a chicken burger at each of them, to compare
20:30:17 <Phantom_Hoover> Gregor, please consider that being a culinary nazi is rather pointless when one judges food on an entirely different basis to normal people.
20:30:19 <elliott> Gregor: Then fish and chip chips are pretty much right up your alley? :P
20:30:23 <Darth_Cliche> Gregor: it basically means throwing a bunch of random spices together, right?
20:30:27 <ais523> no cheese because I don't eat cheese, plus chips were appropriate
20:30:33 <elliott> They're pretty much designed as a host for ridiculous amounts of vinegar.
20:30:37 -!- Zuu has quit (Ping timeout: 244 seconds).
20:30:49 -!- variable has joined.
20:30:50 -!- variable has quit (Changing host).
20:30:50 -!- variable has joined.
20:30:52 <pikhq_> Darth_Cliche: It means "sauce".
20:30:55 <ais523> elliott: would you believe it if I said I liked chips both with and without vinegar, but had a marginal preference for without?
20:30:56 <Vorpal> ais523: you don't eat cheese?
20:31:00 <Vorpal> ais523: why on earth
20:31:00 <Gregor> Phantom_Hoover: Shutuppayouface!
20:31:03 <Phantom_Hoover> elliott, my parents *do not understand this*.
20:31:05 <elliott> Vorpal: He's not allowed to.
20:31:05 <pikhq_> As you can imagine, this is really insanely varied.
20:31:06 <ais523> that's quite different to not liking vinegar
20:31:11 <Gregor> elliott: They would be, except I don't like fish :(
20:31:11 <Darth_Cliche> pikhq_: I mean the English meaning, not the meaning of whatever Hindi word it was borrowed from
20:31:12 <Vorpal> elliott: doctors order?
20:31:15 <monqy> i think i like fish and chips
20:31:16 <ais523> Vorpal: I have a huge range of bizarre food intolerances
20:31:20 <Vorpal> ais523: I see
20:31:25 <Phantom_Hoover> They respond with astonishment when I saturate chips with vinegar.
20:31:26 <ais523> some more specific than others
20:31:26 <Vorpal> ais523: :(
20:31:29 <pikhq_> Darth_Cliche: Ah. Yeah, that's just a vague imitation of Indian spicing.
20:31:31 <Gregor> Darth_Cliche: Primarily coriander, cumin, chili peppers and typically turmeric.
20:31:33 <elliott> Vorpal: Ask ais523 about that time he was on a completely neutral drink!
20:31:37 <elliott> Neutral isn't the word.
20:31:41 <elliott> I can't think of what the word would be.
20:31:50 <oerjan> <Phantom_Hoover> oerjan, please tell me you waited ten minutes until saying that. <-- nope.
20:31:50 <ais523> as far as I know I don't have any actual /allergies/
20:31:50 <Vorpal> elliott: ph 7?
20:31:52 <elliott> Phantom_Hoover: Yes well that is parents for you.
20:31:57 <Vorpal> ais523: how specific are we talking about here?
20:31:57 <ais523> but I go a bit crazy if I eat the wrong things
20:32:09 <ais523> Vorpal: we're not sure, the results were self-contradictory
20:32:17 <Phantom_Hoover> elliott, and nobody will stop harping on about that time I drank some vinegar from the bottle.
20:32:18 <Vorpal> oerjan: did you wait about 9 minutes though?
20:32:21 <elliott> Phantom_Hoover: I...
20:32:29 <pikhq_> Phantom_Hoover: I may like vinegar, but WTF man.
20:32:31 <ais523> there's also a list of things that they don't think I'm intolerant to, but I shouldn't eat anyway in case I become allergic to them
20:32:37 <Phantom_Hoover> It was balsamic!
20:32:46 <pikhq_> Okay, that's at least vaguely sane.
20:32:50 <elliott> ais523: How do you distinguish between an existing tolerance and one that's developed by consuming it anyway :P
20:32:59 <Gregor> Phantom_Hoover: I have a friend who drinks pickle brine >_>
20:33:08 <elliott> Phantom_Hoover: Wait, people consume vinegar that isn't balsamic?
20:33:16 <ais523> elliott: I'm not a dietician
20:33:25 <Gregor> elliott: Apple Cider vinegar is OK ...
20:33:35 <Phantom_Hoover> elliott, dude, malt vinegar is the default chip vinegar.
20:33:36 <Vorpal> ais523: huh...
20:33:37 <ais523> and if it involved spending my time dealing with people like me, I probably wouldn't want to be either
20:33:43 * pikhq_ hates malt vinegar.
20:33:58 <pikhq_> There's something about it that's just... wrong.
20:34:00 <elliott> Phantom_Hoover: I might be mixing up my vinegars X-D
20:34:02 <pikhq_> I can't quite place it.
20:34:06 <ais523> towards the end, they basically gave up, concluding that there was a reasonably stable base of things that I could probably eat which was enough to live on
20:34:07 <Darth_Cliche> My sister is allergic to most raw fruits aside from citrus
20:34:14 <Phantom_Hoover> elliott, balsamic is the dark brown stuff.
20:34:18 <elliott> I'm alergic to atoms.
20:34:19 <Vorpal> ais523: could it be some weird form of hypochondria or placebo effect or such behind the contradicting results?
20:34:28 <pikhq_> elliott: Balsamic is the one made from grape juice.
20:34:29 <Phantom_Hoover> Used frequently on salads.
20:34:33 <elliott> Phantom_Hoover: Isn't malt vinegar dark brown too...
20:34:34 <ais523> Vorpal: it's entirely possible
20:34:37 <oerjan> <Vorpal> <Phantom_Hoover> oerjan, please tell me you waited ten minutes until saying that. <-- more like 9 minutes <-- see? lies!
20:34:39 <Phantom_Hoover> elliott, nope, it's transparent.
20:34:47 <monqy> helloerjan
20:34:48 <Vorpal> oerjan: ...
20:34:54 <ais523> anyway, I stop being lawful good if I eat the wrong food, so it's obviously in my interest to avoid it
20:34:55 <pikhq_> Phantom_Hoover: Uh, that's white vinegar.
20:35:07 <Phantom_Hoover> Oh, wait, malt is light brown.
20:35:09 <elliott> ais523: wait, it's that easy to stop you being lawful good?
20:35:12 <pikhq_> Which is generally made *from* malt vinegar, but only because that's cheap.
20:35:14 <elliott> ais523: meet you in birmingham
20:35:25 <ais523> elliott: it's quite hard to get me to eat the wrong food, as a result
20:35:29 <pikhq_> When distilling acetic acid, who cares what the source is? :)
20:35:30 <ais523> I don't turn evil or anything
20:35:33 <ais523> more… primal, or whatever
20:35:40 <ais523> it's a little hard to describe
20:35:43 <ais523> also, to remember after the event
20:35:50 <Darth_Cliche> You're lawful? Odd, most FOSS people are chaotic
20:35:52 <Phantom_Hoover> I just get confused because it looks clear when you put it on things.
20:35:58 -!- Zuu has joined.
20:36:05 <ais523> Darth_Cliche: I've been repeatedly accused of being lawful good until I started believing it myself
20:36:11 <oerjan> <elliott> Gregor: You probably hate vinegar or something like that because you're not human. <-- hey i don't like vinegar :(
20:36:13 <ais523> and it's kind-of easy to see why, to be fair
20:36:16 <Vorpal> ais523: So chaotic good then when you ate the wrong food?
20:36:16 <pikhq_> Darth_Cliche: "Lawful" says you want law and order, not that you support *the* law.
20:36:26 <pikhq_> oerjan: Yeah, but you're Norwegian.
20:36:31 <Darth_Cliche> pikhq_: I know, but most FOSS people I want are chaotic even by that definition
20:36:33 <ais523> Vorpal: more utterly ranting and nonsensical
20:36:34 <Darth_Cliche> er
20:36:36 <Darth_Cliche> s/want/know/
20:36:38 <elliott> ais523: Would you be able to work on Feather in those conditions?
20:36:40 <ais523> hmm, think any typical YouTube user
20:36:41 <elliott> They sound ideal for the purpose.
20:36:48 <Vorpal> <oerjan> <elliott> Gregor: You probably hate vinegar or something like that because you're not human. <-- hey i don't like vinegar :( <-- yes vinegar is horrible.
20:36:49 <elliott> Coherency is optional, after all.
20:36:55 <elliott> oerjan: you suck.
20:37:01 <elliott> Vorpal: you are, as mentioned earlier, not a human
20:37:12 <Vorpal> ais523: I'm not even sure what alignment that is
20:37:12 <ais523> elliott: I can work on Feather in normal conditions, actually
20:37:20 <ais523> Vorpal: neither am I, that's why I didn't call it one
20:37:24 <Phantom_Hoover> Vinegar is wonderful and anyone who disagrees is wrong.
20:37:28 <ais523> probably counts as true neutral via the defaulting rule
20:37:29 <elliott> ais523: OK do it.
20:37:34 <Vorpal> XD
20:37:35 <pikhq_> Vorpal: You need an extra dimension on the alignment chart.
20:37:44 <pikhq_> "Smart/neutral/stupid".
20:37:44 <ais523> elliott: you care /that much/ about Feather?
20:37:49 <Vorpal> pikhq_: heh
20:37:50 <pikhq_> They'd be chaotic neutral stupid.
20:37:53 <elliott> ais523: Enough to tell you to work on it, yes.
20:38:03 <ais523> the problem is, after working on Feather for a few hours, it takes me several weeks to recover
20:38:09 <ais523> but I'm perfectly sane when the process /stars/
20:38:10 <Darth_Cliche> What's Feather?
20:38:12 <ais523> */starts/
20:38:15 <ais523> Darth_Cliche: don't ask that question!
20:38:24 <ais523> elliott: can we train the bots to just get rid of anyone who asks what Feather is?
20:38:35 <Vorpal> pikhq_: I think D&D traditionally represents that as the Int value
20:38:37 <elliott> ais523: yes
20:38:41 <ais523> preferably via humane means?
20:38:42 <elliott> ais523: but only if you work on feather for me
20:38:47 * Sgeo|web wants Feather
20:38:57 <ais523> elliott: but then we'd be able to sensibly answer the question!
20:38:58 <pikhq_> Vorpal: Yeah, but D&D stats suck.
20:39:03 <elliott> Darth_Cliche: http://esolangs.org/wiki/Feather. anyone worthy of knowing more than is written on that page gets to find out how to get a greppable copy of the logs themselves
20:39:08 <elliott> Darth_Cliche: and read every log containing "feather"
20:39:09 <pikhq_> Vorpal: "Wisdom" is your ability to see things for goodness sake.
20:39:16 <Vorpal> pikhq_: true.
20:39:19 <elliott> ais523: you think implementing feather will prove it sensible?
20:39:29 <Vorpal> pikhq_: wait isn't Wis also for wizard spell casting? Or is that Int?
20:39:33 <ais523> Darth_Cliche: let's see… the sanest (but misleading) answer is "it's an inside joke", any /correct/ answer would be indistinguishable from trolling
20:39:36 <oerjan> <Vorpal> oerjan: did you wait about 9 minutes though? <-- no, i responded when i got to it.
20:39:54 <pikhq_> Vorpal: Int is wizard spell casting.
20:39:55 <ais523> elliott: I believe Feather would make sense, if only I had an impl of it
20:39:58 <Vorpal> pikhq_: I think sorcerers use Cha or some stupid thingy though?
20:40:04 <pikhq_> Wis is cleric/druid spell casting.
20:40:04 <Vorpal> which never made any sense to me
20:40:08 <pikhq_> Cha is sorcerers.
20:40:15 <ais523> Vorpal: Cha is force of personality
20:40:17 <pikhq_> And I don't care about the casting state for non-primary casters.
20:40:21 <Taneb> My incredibly badly written bad program is essentially a ridiculously inefficient variant of Dijkstra's algorithm
20:40:21 <Vorpal> ais523: hm
20:40:24 <pikhq_> s/state/stats/
20:40:27 <Taneb> Designed to write Piet programs
20:40:39 <Vorpal> ais523: could eating the right sort of food cause you to code more Feather?
20:41:07 <ais523> think that sorcerers are people who impose their will on the world just by being that badass
20:41:10 <elliott> Vorpal: That's what I asked.
20:41:19 <Vorpal> <pikhq_> And I don't care about the casting state for non-primary casters. <-- wait, who else can cast than those we mentioned so far?
20:41:26 <elliott> ais523: man, i gotta become a sorceror
20:41:28 <ais523> rather than working out how to cast magic mathematically / thaumaturgically / whatever, they just glare at reality until it does what they want
20:41:32 <Vorpal> elliott: ah, I must have missed it what with the multiple convos going on at the same time
20:42:06 <ais523> Vorpal: rangers, paladins
20:42:14 <ais523> and a bunch of custom and prestige classes, as always
20:42:14 <oerjan> <monqy> helloerjan <-- hi monqy
20:42:15 <Vorpal> I see
20:42:26 <Vorpal> ais523: well I never really cared about those
20:42:45 <ais523> or if you're talking 4th edition, everyone casts
20:42:49 <Vorpal> what
20:42:50 <Vorpal> really?
20:42:54 <ais523> and in fact everyone is identical, in order to make the classes balanced, just with different flavour
20:42:57 <ais523> Vorpal: well, it's not called spells
20:43:11 <Vorpal> I only used whatever system NWN1 uses. 3 iirc?
20:43:19 <oerjan> <ais523> more… primal, or whatever <-- "normal"?
20:43:32 <ais523> but 4th edition class abilities, even the ones that are called nonmagical, make no sense whatsoever
20:43:41 <Vorpal> oerjan: you are NEVER going to catch up at this rate
20:43:41 <ais523> oerjan: no
20:43:45 <ais523> it's, umm, a lot like being drunk
20:43:53 <ais523> or at least, how other people act when they're drunk
20:44:16 <ais523> I get really emotional, and don't bother with trying to act sanely at all
20:44:26 <pikhq_> Vorpal: Rangers, paladins, bards, splatbooks.
20:44:26 <ais523> I got into fights sometimes in that state, too
20:44:33 <pikhq_> *Everybody* forgets about bards!
20:44:37 <ais523> pikhq_: where does the name "splatbooks" come from?
20:44:42 <ais523> also, I consider bards primary casters
20:44:43 <pikhq_> ais523: No idea.
20:44:50 <elliott> ais523: what's the gnu tla of tabletop rpgs??? thx
20:44:54 <ais523> having played them at least once, possibly twice
20:44:57 <elliott> also the monotone
20:45:01 <Vorpal> <pikhq_> Vorpal: Rangers, paladins, bards, splatbooks. <-- splatbooks? What?
20:45:03 <elliott> those are basically the only elements of any set i am interested in
20:45:05 <Vorpal> I don't remember that
20:45:11 <oerjan> <elliott> oerjan: you suck. <-- NO U
20:45:12 <pikhq_> Vorpal: "splatbooks" are addon bullshit books.
20:45:17 <Vorpal> oh right
20:45:23 <ais523> they're what people try to sell you once you already have the rules
20:45:37 <pikhq_> Okay, well, there's also the more reasonable addon books. Those ones are in the D20 SRD, though.
20:45:44 <pikhq_> (e.g. psionics handbook)
20:45:52 <Vorpal> pikhq_: I mostly played D&D through NWN1. I think the only pen & paper campaign I ever did used GURPS + a few house rules
20:46:04 <Vorpal> that was several years ago though
20:46:08 <Vorpal> don't remember much of it
20:46:09 <ais523> Vorpal: Neverwinter Nights 1 is based on D&D 3.0
20:46:13 <Vorpal> ais523: right
20:46:21 <ais523> with a few bugfixes taken from 3.5 or elsewhere
20:46:40 <pikhq_> The distinction between 3.0 and 3.5 is fairly minor, though.
20:46:46 <ais523> yep
20:46:52 <ais523> they're noticeably different, in that you'll notice the differences
20:46:58 <ais523> but you won't care all that much about them
20:47:05 <Vorpal> right
20:47:09 <ais523> noticeably different in that the differences are merely noticeable
20:47:11 <ais523> rather than being major
20:47:12 <Vorpal> D&D 4 sounds horrible
20:47:23 <ais523> Vorpal: it's basically an entirely different game from 1..3
20:47:32 <ais523> it has some interest as a wargame
20:47:38 <ais523> but it doesn't seem like a sensible basis for an RPG
20:47:43 <Vorpal> ais523: on the other hand I know a guy who refuses to play any D&D apart from AD&D 1. I don't understand why.
20:47:46 <Darth_Cliche> I prefer GURPS anyway
20:47:58 <Vorpal> Darth_Cliche: GURPS has interesting grappling :P
20:47:58 <ais523> Vorpal: well, D&D has got a lot less lethal over time
20:48:03 <pikhq_> GURPS is a really fun system, though even *less* balanced than D&D.
20:48:17 <tswett> Say again?
20:48:26 <ais523> GURPS is what you get if you combine every roleplay concept ever together in one RPG
20:48:26 <pikhq_> It's probably impossible to be both balanced and generic, though.
20:48:28 <elliott> ais523: unehlfpul :'(
20:48:30 <ais523> and try to make the rules cover all of tehm
20:48:39 <ais523> elliott: sorry, I'm trying to figure out what you mean by the tla and the monotone
20:48:41 <oerjan> <Vorpal> oerjan: you are NEVER going to catch up at this rate <-- plausible.
20:48:44 <pikhq_> ais523: Works surprisingly well, considering.
20:48:49 <ais523> and I feel that the RPG systems exist, but I don't know what they are
20:48:54 <elliott> ais523: well, if D&D is the SVN, or the git, or whatever you think it analogises closest to
20:48:59 <Vorpal> <ais523> GURPS is what you get if you combine every roleplay concept ever together in one RPG <-- yes kind of
20:49:10 <Vorpal> ais523: I think it is GURPS that have the insane grappling rules, isn't it?
20:49:12 <Vorpal> or was it D&D
20:49:16 <elliott> ais523: hmm, GURPS ~ DCSS?
20:49:17 <Vorpal> I don't think I ever grappled in either
20:49:24 <elliott> understanding through analogy is difficult :D
20:49:29 <pikhq_> Vorpal: D&D has the non-functioning grappling rules.
20:49:30 <ais523> Vorpal: D&D's grappling rules are vaguely tacked on and look a little out of place
20:49:43 <ais523> although they work much better in 3rd edition than they did in previous versions
20:49:44 <Vorpal> pikhq_: I mean the one with really really complex one
20:49:45 <pikhq_> I can't remember how, but they actually break.
20:49:54 <pikhq_> That'd be D&D.
20:49:57 <Vorpal> ah okay
20:49:58 <ais523> (i.e. they look weird and only break occasionally, rather than looking weird and breaking all the time)
20:50:07 <Vorpal> right
20:50:11 <Vorpal> ais523: break in what way?
20:50:16 <ais523> elliott: you could compare D&D 3 to svn decently
20:50:35 <Vorpal> ais523: as in references to table entry 59 in a 50 entry long table?
20:50:36 <ais523> Vorpal: I haven't seen the 2nd edition "wrestling table", but it was apparently ridiculous
20:50:40 <ais523> whereas in 3rd ed, it's just fiddly
20:50:44 <Vorpal> I see
20:50:44 <ais523> and broken as in game balance
20:50:45 <pikhq_> Vorpal: They lead you into undefined semantics.
20:50:50 <Vorpal> pikhq_: :D
20:51:02 * Darth_Cliche opens up http://codu.org/logs/_esoteric/2010-12-14.txt and rolls eyes at "00:04:11: * oerjan ponders making a joke page for Feather"
20:51:03 <Phantom_Hoover> I wonder if you could use DF's combat mechanics for that kind of thing?
20:51:42 <elliott> ais523: what's 4, then? svk?
20:51:58 <Vorpal> Phantom_Hoover: doing DF combat mechanics would only ever work in a computerised RPG. It would be unfeasible to do it for a pen & paper RPG
20:52:00 <elliott> Darth_Cliche: http://codu.org/logs/log/_esoteric/2010-12-14 has a nicer UI
20:52:08 <elliott> Darth_Cliche: but that log is much newer than feather discussions
20:52:09 <Vorpal> Phantom_Hoover: too much calculation involved. You would spend ages for each turn
20:52:23 <Phantom_Hoover> Vorpal, I mean using DF for the combat, duh
20:52:25 <elliott> Darth_Cliche: try !logs to get an rsync mirror of the logs then grep -i 'ais.*feather' ????-??-??.txt
20:52:28 <ais523> elliott: hmm, I can mentally construct the VCS analogue of 4, but I'm not sure it exists
20:52:31 <Vorpal> Phantom_Hoover: ah
20:52:39 <Darth_Cliche> !los
20:52:40 <Darth_Cliche> !logs
20:52:44 <ais523> it would probably involve Facebook in some way, though
20:52:50 <Vorpal> ais523: :D
20:52:52 <elliott> ais523: ooh, that sounds like it needs making
20:52:58 <elliott> ais523: hmm, maybe Fossil? that has a wiki
20:53:09 <Darth_Cliche> Now I must figure out rsync
20:53:17 <Vorpal> Darth_Cliche: or hg
20:53:22 <Vorpal> iirc
20:53:34 <ais523> !pastelogs ais523.*Feather
20:53:37 <Darth_Cliche> I don't know what any of this even is, really
20:53:39 <ais523> `pastelogs ais523.*Feather
20:53:47 <ais523> Darth_Cliche: good, you possibly don't want to
20:53:53 <pikhq_> I'm more inclined to say "imagine RCS, except done today, and in Python".
20:53:54 <Darth_Cliche> I mean, rsync and hg and all taht
20:53:55 <ais523> however, more likely you simply won't understand it
20:54:00 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28875
20:54:10 <Vorpal> Darth_Cliche: feather is complicated. It involves time travel. And headaches.
20:54:26 <ais523> "You have chosen to open: paste.28875 which is: a 23600 file"
20:54:28 <Vorpal> pikhq_: what, that would be hg or bzr?
20:54:38 <pikhq_> Vorpal: Neither.
20:54:41 <Vorpal> pikhq_: hm
20:54:47 <ais523> Darth_Cliche: that link is relevant
20:55:04 <ais523> wow, I've been working on Feather for /three years/ now?
20:55:13 <pikhq_> Vorpal: RCS is CVS, single-user.
20:55:15 <Vorpal> ais523: FSVO working
20:55:18 <oerjan> * Darth_Cliche opens up http://codu.org/logs/_esoteric/2010-12-14.txt and rolls eyes at "00:04:11: * oerjan ponders making a joke page for Feather" <-- well i did, didn't i?
20:55:20 <Vorpal> pikhq_: hm
20:55:20 <pikhq_> (oversimplification I know)
20:55:26 <Vorpal> pikhq_: so what would it be in python then
20:55:35 <pikhq_> Vorpal: That but ridiculous.
20:55:40 <Vorpal> right
20:55:43 <ais523> <ais523> tusho: you would make the jquery UI available as IO commands that Feather could use
20:55:52 <Vorpal> anyway why would it make sense to compare RPG systems to VCSes?
20:55:59 <elliott> ais523: I don't want to know what the context of that is
20:56:05 <elliott> and will proceed to not find out
20:56:11 <ais523> elliott: likewise ;)
20:56:31 <ais523> 2008-10-19.txt:12:02:24: <ais523> hmm... figuring out how to hot-change parts of a Feather program while it's running is a major problem
20:56:32 <Vorpal> elliott: I could imagine that with Sgeo... But with you!?
20:56:37 <ais523> actually, I still haven't solved that one
20:56:51 <elliott> Vorpal: hey, ais523 is the one who said that line
20:56:53 <ais523> I'm coming across more fundamental problems in my attempt to get far enough to encounter that one
20:56:59 <Vorpal> elliott: yes but directed to you
20:57:05 <elliott> Vorpal: like i said, let's not find out
20:57:07 <elliott> ais523: what's the current problem?
20:57:50 <ais523> elliott: writing an initial interpreter
20:57:59 <Darth_Cliche> So Feather is a language involving time travel, which has evolved into an inside joke about it driving ais insane?
20:58:16 -!- oerjan has quit (Quit: Caught up, also, good night).
20:58:19 <ais523> I think the solution we worked out between us of using CPS to get complete metacircularity will work
20:58:21 <ais523> but I haven't tried it yet
20:58:32 <ais523> Darth_Cliche: that's a good approximation, I think
20:58:46 <ais523> it /does/ drive me insane, and this has happened enough to become an inside joke
20:58:47 -!- ive has joined.
20:59:12 <Darth_Cliche> how exactly are you supposed to implement it, anwyay?
20:59:21 <elliott> Darth_Cliche: it doesn't actually involve travel
20:59:23 <Vorpal> http://www.dandwiki.com/wiki/SRD:Grapple <-- yeah this looks complicated. Especially given all the tables too
20:59:23 <elliott> just the illusion of such
20:59:45 <ais523> Darth_Cliche: part of the problem is that a Feather interp can only be implemented in Feather
20:59:50 <ais523> so I'm trying to figure out how to get started
21:00:20 <Vorpal> ais523: shouldn't a method similar to that of CLC-INTERCAL work?
21:00:21 <CakeProphet> ais523: neutrino computer
21:00:26 <ais523> (the trick, as far as I can tell, is that although a Feather interp must be written in Feather, a Feather-interp-in-Feather might potentially be runnable in something that isn't a Feather interp, and so can be written in another language)
21:00:31 <Vorpal> ais523: you start off with something, then you modify it into being Feather
21:00:47 <ais523> Vorpal: *retroactively modify it into being Feather
21:00:51 <ais523> but yes, obviously
21:01:06 <ais523> do you seriously think I /hadn't/ thought of that?
21:01:11 <Vorpal> well, no
21:01:16 <Vorpal> but you never know
21:01:33 <ais523> 2009-04-01.txt:23:06:05: <ais523> cpt_obvious: I suggest you ask in #feather-lang, I think it's empty atm so it'll be safe to ask
21:01:53 <Gregor> Britons: http://www.telltalegames.com/wallaceandgromit
21:02:07 <elliott> Gregor: Old, no?
21:02:23 <Gregor> elliott: 'snot new, it's old enough for me to actually buy (read: now cheap :P )
21:02:25 <ais523> Vorpal: elliott solved a couple of major Feather-related problems of mine, anyway
21:02:36 <elliott> ais523: wow, i did?
21:02:38 <Vorpal> ais523: right
21:02:41 <elliott> Gregor: have i mentioned that time someone from telltale was on esowiki??
21:02:43 <elliott> Gregor: so good
21:02:44 <Vorpal> ais523: which ones?
21:02:53 <ais523> elliott: the one related to eigenratios
21:03:27 <elliott> ais523: ah yes
21:03:41 <ais523> gah, now I can't remember the solution
21:04:05 <Gregor> And how goes Scape🐐?
21:04:14 <ais523> Gregor: not as well as I'd like
21:04:26 <ais523> hmm, perhaps I should implement Feather just to get elliott to implement scapegoat
21:04:47 <ais523> or perhaps even implement scapegoat myself, but the problem is that when elliott writes a program, it's superior to everyone else's programs that do the same thing
21:05:09 <Gregor> (Except mine)
21:05:21 <Taneb> To make a good esolang, you need a shiny new concept
21:05:28 <Vorpal> ais523: what really? Or is that just what he thinks?
21:05:30 <Taneb> Or a new take on an old concept
21:05:31 <elliott> ais523: Scapegoat has been on the backburner pending a sufficiently interesting breakthrough for me to be jolted into beginning
21:06:12 <elliott> ais523: e.g. a good scapegoat diff algorithm
21:06:14 <ais523> elliott: oh, I thought you'd already started
21:06:22 <elliott> ais523: well, I have code
21:06:29 <elliott> but it's more the proof of concept type
21:06:36 <ais523> btw, does anyone have any feedback on Web of Lies yet?
21:06:48 <elliott> it still doesn't work on a machine that i don't have to talk to via qemu
21:07:08 <Gregor> ais523: Never made it work >_>
21:07:09 <Darth_Cliche> what exactly do you mean by retroactively modifying another language into Feather, anyway?
21:07:22 <ais523> Darth_Cliche: changing it so that it was Feather all along
21:07:32 <Darth_Cliche> but how?
21:07:32 <ais523> umm, you're getting dangerously close to me having to think about the answers
21:07:40 <ais523> rather than typing them out from memory
21:07:46 <ais523> and that's always vaguely dangerous
21:10:52 -!- pumpkin has joined.
21:11:16 <Taneb> Darth_Cliche, by using Feather, of course
21:11:58 <olsner> so is there some description of feather somewhere?
21:12:39 <Taneb> http://codu.org/logs/_esoteric/
21:12:54 <ais523> olsner: oh no, not you too
21:12:55 <Taneb> Hold on, I'm Taneb!
21:13:02 <ais523> the short answer is: no
21:13:11 <elliott> olsner: grep -r feather
21:13:39 -!- pumpkin has changed nick to copumpkin_.
21:13:48 -!- copumpkin has quit (Ping timeout: 260 seconds).
21:13:54 -!- copumpkin_ has changed nick to copumpkin.
21:13:57 <olsner> mmkay, never mind then
21:15:08 <ais523> elliott: you know you were asking about kerio earlier? this is self-parody, but still a good summary: http://qdb.rawrnix.com/?711
21:15:55 <elliott> ais523: oh, good, paxed knows how to use eir op privileges
21:16:10 * elliott teaches the -minecraft school of op privilege usage
21:16:14 <ais523> elliott: e rarely does
21:16:21 <elliott> hire more ops
21:16:29 <ais523> but doesn't hesitate when he thinks someone is trolling
21:16:47 <Taneb> QUESTION! Are all cellular automatons self-modifying?
21:17:05 <ais523> Taneb: arguably, none are
21:17:15 <ais523> unless the rules for CA update were taken from the playfield
21:17:18 <ais523> hmm, that might be an interesting langauge
21:17:20 <ais523> *language
21:17:23 <ais523> but probably wouldn't be
21:18:11 <elliott> ais523: you've told kerio python sucks, right? maybe e just doesn't realise
21:18:23 <ais523> elliott: yes, although not in those words
21:18:32 <elliott> clearly you're not being clear enough :)
21:18:45 <ais523> fwiw, Rodney is a Perl script that doesn't exactly follow best practices
21:19:04 <ais523> in order to load a module, it used an old-fashioned syntax whose difference from the current one is that it runs at runtime not compile-time, and you have to handle errors manually
21:19:11 <ais523> then ignored the error code
21:19:25 <ais523> which made debugging it really confusing
21:19:43 <CakeProphet> in other words, it used require instead of use?
21:19:51 <ais523> CakeProphet: no, it used do
21:19:55 <CakeProphet> oh.....
21:20:00 <ais523> I had to look up that meaning of do when I saw Rodney
21:20:00 <CakeProphet> fun.
21:20:09 <elliott> http://qdb.rawrnix.com/?470 good quote
21:20:11 <ais523> require is at least vaguely useful
21:20:15 <CakeProphet> ais523: I use do in my words.pl script currently.
21:20:17 <CakeProphet> actually.
21:20:19 <CakeProphet> to load the data files.
21:20:30 <ais523> CakeProphet: do you at least check $@ afterwards?
21:20:35 <CakeProphet> yes.
21:20:41 <ais523> OK, that's more than Rodney did
21:20:53 <ais523> I think I improved Rodney massively by suggesting adding "or die $@" at the end of the do line
21:21:27 <CakeProphet> ais523: yes it's always do or die with these things.
21:21:30 <CakeProphet> :>'
21:21:52 <ais523> CakeProphet: that joke doesn't count, the syntax was intentionally designed to make it possible, I think
21:22:14 <ais523> elliott: I recently learnt that the actual original reason barewords existed in Perl was to make it easier to write poems that were syntactically valid Perl
21:22:23 <elliott> ais523: wow
21:22:37 <CakeProphet> ais523: ala black perl
21:22:42 <ais523> it seems that one of Larry Wall's coworkers was a poet
21:23:13 * CakeProphet has written poems in modern Perl 5.
21:23:18 <CakeProphet> because I'm cool.
21:23:28 <ais523> well, it still accepts barewords for backwards compatibility
21:23:35 <ais523> of both old programs and poetry, I guess
21:23:55 <CakeProphet> perl 5 does not
21:24:35 <CakeProphet> in much the same way there is little difference between code and data.
21:24:40 <CakeProphet> the same can be said of programs and poetry.
21:26:07 <Taneb> I'm going to delete User:Taneb/Binary Variety Pack
21:26:12 <Taneb> It was a stupid idea
21:26:50 <Taneb> No wait, I don't know how to delete pages?
21:26:53 <ais523> isn't esolangs.org/wiki where stupid ideas go to die?
21:26:55 <ais523> also, you can't
21:27:59 <Taneb> Can someone delete it for me?
21:28:32 <CakeProphet> I recommend making a RfD
21:28:35 -!- sebbu2 has joined.
21:28:36 -!- sebbu2 has quit (Changing host).
21:28:36 -!- sebbu2 has joined.
21:28:41 <elliott> ais523: don't
21:28:54 <elliott> ais523: ok, now you can
21:29:04 <ais523> what did you do? make a backup?
21:29:11 <ais523> CakeProphet: redirects for deletion?
21:29:13 <elliott> looked at it :P
21:29:18 <elliott> wait, let's just move it to the mainspace
21:29:22 <elliott> then Taneb has no right to want it deleted!
21:29:32 <CakeProphet> ais523: requests. is that not the wikipedia thing?
21:29:36 <CakeProphet> it's been a while.
21:29:36 <elliott> CakeProphet: it's afd
21:29:40 <CakeProphet> ah.
21:29:44 <elliott> d = discussion
21:29:45 <elliott> not deletion
21:29:49 <ais523> wow, that was a weird Firefox bug
21:30:01 <ais523> I just highlighted some text and then dragged it to the Firefox search bug
21:30:09 <CakeProphet> elliott: it was deletion at one point wasn't it?
21:30:16 <ais523> and it ended up in the middle of the greyed-out text that says what search engine it's set to
21:30:20 <ais523> also greyed-out
21:30:35 <ais523> that's almost as weird as Konversation preserving its syntax highlighting if you copy and paste into the /topic dialogue box
21:30:37 <elliott> CakeProphet: it was votes for deletion
21:30:51 <elliott> ais523: that's very reproducible, iirc
21:30:55 <ais523> (which, as the client itself is set to white on black, and the /topic box is generally black on white, makes it hard to read)
21:30:56 <elliott> but presumably pretty low priority
21:31:02 <ais523> elliott: I didn't say it was unreproducible
21:31:06 <ais523> just that it was weird
21:31:07 <elliott> ais523: white on black? :(
21:31:12 <ais523> I don't see why there has to be a correlation
21:31:31 <ais523> elliott: I prefer dark colours to predominate on my computer screen, it becomes easier to look at for extended periods of time
21:31:37 -!- sebbu has quit (Ping timeout: 240 seconds).
21:31:41 <elliott> ais523: I would accept off-white on dark grey
21:32:15 <ais523> elliott: the foreground isn't pure white, IIRC
21:32:17 <ais523> although it might be
21:32:21 <ais523> the background is pure black, I think
21:32:29 <ais523> my own comments are light red, nickpings are bright red
21:32:33 <elliott> the background's the main problem
21:32:36 <ais523> and notices and server messages are dark yellow
21:32:38 <CakeProphet> irssi is grey on faded blue for topic.
21:33:23 <ais523> hmm, why does recursive grep default to recursively grepping stdin?
21:33:30 <ais523> surely specifying -r is a clue that stdin isn't a good place to read from?
21:33:53 <elliott> ais523: not even gnu people think tools should second-guess you, usually
21:34:00 <elliott> see: unix philosophy
21:34:04 <ais523> elliott: right
21:34:06 <elliott> it should maybe error out according to gnu design
21:34:10 <elliott> but it definitely shouldn't default to . or anything
21:34:12 <ais523> if it's documented behaviour, it's not guessing, I suppose
21:34:24 <elliott> it's second-guessing, just not first-guessing
21:34:31 <ais523> erroring on -r would make sense
21:34:49 <ais523> I hate it when I can't tell whether a program is waiting on a long-running disk/CPU calculation, or waiting on stdin
21:34:58 <elliott> ais523: it would make sense for gnu design, not unix design
21:35:07 <elliott> also, that should be solved some other way
21:35:14 <elliott> terminals should indicate when they want input
21:35:29 <ais523> well, they /do/ (see IO::Pty::HalfDuplex)
21:35:29 <elliott> e.g., I don't think an input cursor should be displayed when input isn't desired
21:35:35 <ais523> but not normally in a user-visible way
21:35:46 <ais523> (IPHD is both awesome and crazy, incidentally; I didn't write it, but I envy it)
21:35:46 <elliott> (that works better with line cursors than block)
21:35:52 <elliott> (since it's less obtrusive and thus less jarring)
21:36:20 <elliott> ais523: hmm, how is it reported?
21:36:28 <elliott> ais523: select() showing the tty is ready for writing?
21:37:04 <ais523> elliott: by reads blocking until the terminal is ready to receive input
21:37:08 <ais523> that's what the HalfDuplex bit is about
21:37:24 <ais523> but ofc that isn't inherent to the way the module works internally, just the way it's designed to be used
21:37:58 <elliott> ais523: no, I mean, how is it implemented internally
21:38:13 <elliott> hmm, oh, ugly
21:38:15 <ais523> on all POSIXy platforms but BSD, using job contorl
21:38:17 <ais523> *control
21:38:26 <ais523> it pretends to be a shell that just backgrounded the program
21:38:30 <elliott> ais523: why does my select() solution not work? because it'd report being ready for writing even before it /blocks/ on reading?
21:38:38 <ais523> then it gets a signal when the program's ready for input
21:38:40 <ais523> elliott: ofc
21:38:45 <elliott> grr
21:38:51 <ais523> it's ready for writing until the write buffer is filled
21:38:58 <elliott> "In particular, programs like qemu and telnet cannot be expected to ever work with this."
21:38:58 <elliott> :-(
21:39:24 <ais523> you could do it with telnet/ssh by having a helper program at the other end, I guess
21:40:23 <elliott> ais523: so does taeb use that?
21:40:29 <ais523> yes
21:40:37 <ais523> most of its development was driven by a desire to use it in TAEB
21:40:46 <ais523> and it's how I know about it
21:42:27 <ais523> you should see what it does on BSD sometime
21:42:34 <ais523> (which I don't fully understand, but it involves a debug API)
21:44:23 -!- sebbu2 has changed nick to sebbu.
21:44:51 <elliott> hmm
21:48:20 <elliott> ais523: why do ansi terminal codes suck :(
21:48:36 <ais523> elliott: Sturgeon's law?
21:48:42 <elliott> ais523: no but i mean
21:48:48 <elliott> ais523: you know how you can scroll up in a terminal
21:49:23 <ais523> many terminals have that feature, yes
21:49:35 <elliott> ais523: that's a lie
21:49:43 <elliott> you actually can't modify any lines above the actual visible size of the terminal
21:49:43 <ais523> ?
21:49:48 <elliott> so for instance
21:49:57 <elliott> terminal is 24 lines high? my program can do 24 progress bars
21:50:01 <ais523> oh, you mean that the scrollback is lying to you in that they aren't actually part of the terminal?
21:50:01 <elliott> even if you could have one above it
21:50:04 <elliott> it couldn't change
21:50:06 <elliott> ais523: yes >:(
21:50:12 <ais523> why did you /expect/ them to be?
21:50:29 <elliott> ais523: because the size of a viewport should not affect the size of the underlying medium?
21:50:32 * Phantom_Hoover really needs to unsubscribe from the Golly mailing list.
21:50:36 <elliott> ais523: pdfs don't get smaller when i resize evince
21:50:43 <olsner> change the terminal program to treat the scrollback buffer as part of the visible screen
21:50:56 <elliott> olsner: i'm tempted
21:50:59 <ais523> elliott: using programs like tmux, you can have a viewport a different size from the terminal itself
21:51:00 <elliott> couldn't the terminal just grow by one line every line?
21:51:11 <ais523> however, most programs assume terminals have a vaguely consistent size
21:51:14 <elliott> ais523: so? it's still stupid that this is how they behave by default >:(
21:51:18 <elliott> i mean
21:51:22 <elliott> the terminal viewport size makes sense
21:51:25 <elliott> for stuff on the alternate screen
21:51:30 <elliott> and for showing stuff at the correct width
21:51:36 <elliott> but forbidding modifications above the viewport is dumb dumb dumb
21:51:48 <ais523> elliott: what if a program scrolled its output sideways rather than upwards?
21:51:50 <olsner> elliott: it'll mess up "full screen" applications though
21:52:22 <elliott> ais523: those programs are bad
21:52:41 <Vorpal> elliott: you could do your own scrollback in alt screen
21:52:46 <ais523> elliott: so what you're really saying is, "terminal programs don't act the way I want them to"
21:53:00 <elliott> ais523: yes, that is indeed the basis of my complaint
21:53:05 <elliott> do you complain when programs work the way you want them to?
21:53:45 <Vorpal> I imagine he consider what the majority would want first
21:53:45 <ais523> elliott: hmm
21:53:47 <Vorpal> before complaining
21:53:51 <Vorpal> knowing ais523 that is
21:54:00 <ais523> Vorpal: sometimes, but not necessarily
21:54:09 <Vorpal> heh
21:54:29 <olsner> the needs of the me outweigh the needs of the many, or few
21:54:37 <ais523> elliott: btw, what's the appropriate reaction to someone who says they're having problems getting Pulseaudio working on Windows?
21:54:58 <elliott> ais523: /ignore, delete from all contact lists, deny existence of in future, avoid in real life
21:54:59 <Vorpal> ais523: did this actually happen? Where?
21:55:31 <ais523> Vorpal: yes, and telling you would probably get me into trouble
21:55:43 <Vorpal> ais523: was it on irc though? Mailing list? reddit?
21:55:48 <ais523> IRC
21:55:50 <Vorpal> ah
21:55:57 <olsner> ais523: help them get pulseaudio working in windows, should prove interesting
21:56:01 * ais523 tries to work out why that's relevant
21:56:01 <Vorpal> ais523: so +s channel then?
21:56:10 <ais523> Vorpal: I assume so
21:56:16 <Vorpal> mhm
21:56:20 <ais523> how do you check a channel for +sness? mode?
21:56:36 <elliott> ais523: are they a member of the UNDEAD?
21:56:43 <ais523> elliott: how would I know?
21:56:46 <Vorpal> ais523: in my client /mode prints the mode of the current channel if given no parameters
21:56:50 <elliott> ais523: it could be a channel for the UNDEAD
21:56:52 <ais523> I think it's likely to be unlikely, though
21:57:07 <ais523> aha, in this client, /mode-ing a channel prints its mode /in that channel/
21:57:10 <ais523> which is why I couldn't find its answer
21:57:13 <Vorpal> ah
21:57:15 <ais523> yes, it's a +s channel
21:57:26 <Vorpal> ais523: how does "likely to be unlikely" differ from a plain "unlikely"?
21:57:40 <ais523> I'm not sure
21:57:46 <Vorpal> well, you used it
21:57:48 <ais523> I think it implies there's a chance it isn't unlikely
21:57:52 <Vorpal> presumably for a reason
21:58:01 <Vorpal> hm
21:58:05 <olsner> hmm, I was thinking about that too
21:58:42 <Vorpal> well it kind of makes sense, but I'm not sure I can think of an actual situation it really makes sense to use that instead of a plain "unlikely"
21:59:27 <olsner> plain unlikely implies that you know the likelihood
21:59:55 <Vorpal> hm I guess so
22:00:04 <olsner> and likely to be unlikely means there's some uncertainty in the likelihood
22:00:13 <Vorpal> still, "likely to be unlikely" sounds awkward
22:08:43 -!- mtve has joined.
22:13:06 <elliott> ais523: oh /no/
22:13:24 <ais523> elliott: ?
22:13:47 <elliott> ais523: I think I just figured out a sufficient amount of a protoproto@ that I could even implement it
22:14:00 -!- CakeProphet has quit (Ping timeout: 258 seconds).
22:14:23 <ais523> elliott: perhaps you should do so, for practice
22:14:37 <elliott> ais523: I intend to, it's just frightening
22:15:32 <elliott> ais523: have I mentioned that one of my main requirements for the portability of @ is that you can get a minimal graphics-keyboard-and-mouse-with-no-special-IO-drivers-or-support @ up and running from only the portable system sources, ~3000 lines of python, and a few hundred lines of unportable @ driver code plugging into the python?
22:15:40 <elliott> (python deliberately picked as an unexpressive and boring language)
22:16:02 <elliott> umm, compiled sources, that is; whereby "compiled" I mean preparsed
22:16:13 <elliott> but that's how you develop them, anyway; @ code isn't text at any stage
22:17:02 <ais523> that seems reasonable
22:17:17 <elliott> 3000 is an overestimate, really
22:17:35 <elliott> I want the abstract machine it's all based on to be simple enough to implement in just about anything
22:17:39 <elliott> although probably not brainfuck without some pain
22:17:52 <ais523> Underlambda!
22:17:56 <elliott> indeed :)
22:18:13 <elliott> I suspect that if @ gets any use at all, it will be through a "simulator" on top of unix
22:18:21 <elliott> perhaps even one written in python
22:18:34 <elliott> you could run your server on @ by having standard debian beneath it and just having it run the @ simulator and nothing else
22:18:44 <elliott> and connect to that from a window on your local unix machine with @ networking
22:20:24 <elliott> it's similar to Squeak in this way, really
22:20:30 <elliott> although with even less integration, and intentionally so
22:20:47 <elliott> probably the only way you should even be able to access your local filesystem is over ssh or whatever
22:21:08 <ais523> what about just using a VM?
22:21:10 <ais523> and running it in that?
22:21:14 <elliott> define VM?
22:21:26 <elliott> ais523: you mean VirtualBox or qemu or w/e?
22:21:36 <ais523> yes
22:21:40 -!- Taneb has quit (Ping timeout: 258 seconds).
22:21:55 <elliott> ais523: well, what's the point? that's just an unnecessary layer of abstraction as opposed to running an implementation hosted on top of unix
22:22:08 <elliott> it'll still be running all the same @ code, just slightly different drivers
22:22:21 <ais523> well, because of the context-switch stuff
22:22:28 <elliott> what context-switch stuff?
22:23:07 <elliott> ais523: ?
22:23:39 <ais523> elliott: the way that @ is meant to avoid context-switches by working NaCl-style rather than having arbitrary code connecting to the kernel's API
22:24:07 <elliott> ais523: oh, yes, that's certainly an advantage; but consider that it's a clarity and structural advantage as well as a raw performance one
22:24:15 <elliott> ais523: here's something that would be a feasible + sensible @ usecase:
22:24:26 <elliott> you have an old laptop lying around collecting dust which you connect to your router and put @ on
22:24:35 <elliott> you use this by running an @ simulator on your main unix computer
22:24:39 <elliott> and connecting to it with @ networking over your LAN
22:24:52 <Vorpal> ais523: NaCl being? (Apart from common salt)
22:24:53 <elliott> you seamlessly run intensive computations on the laptop that would be slow under the simulator, etc.
22:24:59 <ais523> Vorpal: Google Native Client
22:25:01 <Vorpal> ah
22:25:08 <elliott> ais523: performance doesn't really matter that much for what essentially amounts to a medium-thickness client
22:25:16 <ais523> the idea of running native executables from the web by statically verifying that they don't do anything nasty
22:25:45 <pikhq_> Also, @ even in userspace will probably avoid some context switch penalties, simply because the @ scheduler will be task-switching without them.
22:26:05 <elliott> ais523: I mean, while @'s model certainly does lead to possible great performance improvements, it's hardly the only appeal of the system :)
22:26:34 <pikhq_> elliott: Not merely possible. Inherent.
22:26:49 <elliott> pikhq_: well, yes; but it's easy to make an implementation that doesn't end up faster
22:26:56 <elliott> because of the costs you pay elsewhere
22:27:03 <elliott> i.e. if you have a dumb compiler things go slowly
22:27:19 <Vorpal> elliott: what about performance in something like lapack+blas for whatever language @ uses. Not a lot of context switches there. But a lot of fine tuning the machine code for best performance
22:27:38 <elliott> Vorpal: I've never claimed @ is faster on all code
22:27:51 <elliott> Vorpal: personally, I find number crunching pretty boring
22:27:52 <Vorpal> elliott: indeed. I'm just wondering how much worse it would be
22:27:54 <pikhq_> Of course, performance is by no means the sole benefit of @. The big thing is that @ is at least intended to be understandable.
22:27:58 <ais523> I thought @ was mainly intended to be a desktop OS
22:28:04 <elliott> Vorpal: desktop/server usecases are much more interesting than number crunching to me
22:28:09 <Vorpal> hm
22:28:09 <elliott> and there it's IO, IO, IO
22:28:12 <ais523> number crunching is something you don't generally need much of an OS for at all
22:28:17 <elliott> ais523: precisely
22:28:26 <elliott> ais523: in fact, @ could just let privileged processes offload number crunching jobs to the gpu
22:28:34 <elliott> since they tend to be pretty suited to parallelism
22:28:41 <elliott> ofc, that doesn't always work
22:28:42 <Vorpal> elliott: to be fair I do a fair amount of number crunching on the CPU and the GPU on my desktop
22:28:47 <pikhq_> Or even the CPU.
22:28:51 <elliott> Vorpal: I mean, you can inject arbitrary machine code into @
22:28:52 <ais523> elliott: they're optimised for semi-parallelism
22:28:57 <elliott> it just requires very high privileges, and is usually dumb
22:29:01 <ais523> like matrix multiplication, which isn't a completely parallel algo but comes close
22:29:05 <Vorpal> elliott: and anything like a modern AAA 3D game is going to be doing a lot of GPU number crunching
22:29:16 <ais523> do AA games exist?
22:29:21 <pikhq_> elliott: You could probably also do NaCl-style sandboxed machine code.
22:29:27 <elliott> pikhq_: indeed
22:29:29 <ais523> I think AAA is the only classification people tend to mention
22:29:32 <Vorpal> yeah
22:29:35 <pikhq_> (this, of course, would probably be significantly more complicated than the rest of @ put together. :P)
22:29:46 <elliott> also, if you want to be really pipe-dreamy: proof-carrying machine code
22:30:00 <elliott> but basically...
22:30:05 <Vorpal> ais523: I never heard about anything than AAA there
22:30:06 <elliott> Vorpal: I mean
22:30:08 <elliott> Vorpal: look at virtual machines
22:30:16 <Vorpal> ais523: batteries included
22:30:19 <pikhq_> Well. Actually. Sandboxing for you would be really easy, because @'s not using the CPU's privilege levels at all.
22:30:21 <Vorpal> (okay that was terrible)
22:30:23 <ais523> is the classification meaningful if it's the only one that's used?
22:30:24 <elliott> Vorpal: VMWare, Parallels, VirtualBox -- they're edging closer and closer to being able to play modern games
22:30:27 <pikhq_> So, to sandbox machine code you could simply use that.
22:30:29 <Vorpal> elliott: hm
22:30:39 <elliott> I think it's only a matter of time before you don't lose much performance at all from virtualising them
22:30:52 <elliott> so if that's what it takes to do games under @, so what? it's secure, it's predictable...
22:31:01 <Vorpal> elliott: they don't really cut it for the "getting 61 FPS without vsync native" case though.
22:31:06 <elliott> Vorpal: not yet
22:31:23 <Vorpal> btw is there anyone who plays without vsync except for testing what FPS you can reach?
22:31:25 <pikhq_> elliott: The main loss from virtualising nowadays is actually getting stuff through to the GPU.
22:31:53 <pikhq_> Vorpal: Some people actually derp and think higher framerates than your display is a good thing.
22:31:53 <elliott> pikhq_: i'll get ais523 to port @ to checkout :)
22:31:54 <Vorpal> I sadly lack an IOMMU on my mobo I think
22:32:07 <Vorpal> pikhq_: heh.
22:32:08 <ais523> elliott: GPU works really differently from CPU
22:32:20 <ais523> you can't straight-translate with any real measure of efficiency
22:32:28 <Vorpal> pikhq_: anyway I might play with vsync if I got 59 FPS without it. Because screen tearing is horrible. But so is 30 FPS
22:32:31 <elliott> ais523: well, you claim Checkout is how CPUs work nowadays too
22:32:38 <elliott> ais523: it would be awful if @'s design mismatched those
22:32:42 <ais523> elliott: right, internally
22:32:49 <ais523> however, they don't take an input format that matches how they work internally
22:32:56 <elliott> indeed
22:32:58 <ais523> but rather try to translate on the fly, and don't do an amazing job of it
22:33:03 <elliott> ais523: point is, @ doesn't match the exposed layer of CPUs
22:33:05 <Vorpal> elliott: what is Checkout in this context?
22:33:11 <elliott> ais523: so i might as well make it match the hidden layer
22:33:12 <ais523> Vorpal: an esolang, http://esolangs.org/wiki/Checkout
22:33:15 <elliott> Vorpal: http://esolangs.org/wiki/Checkout
22:33:18 <Vorpal> thanks
22:33:27 * elliott waits for Vorpal to say "tl;dr".
22:33:31 <ais523> elliott: but you'd have to abstraction-invert to actually run the code on a real CPU
22:33:47 <elliott> ais523: as opposed to the abstraction-inversion I have to do already?
22:33:51 <elliott> @ wants to be run on a graph reduction machine
22:34:04 <ais523> well, OK
22:34:15 <Vorpal> ais523: "machine code matches the way processors used to work decades ago, rather than the way they work nowadays" <-- for x86: certainly, but is this true for other ISAs?
22:34:18 <Vorpal> I mean, ARM and so on
22:34:40 <ais523> Vorpal: well, Itanium tried to do something lower-level
22:34:43 <ais523> and look what happened to it
22:34:57 <Vorpal> ais523: "Thus, it makes operations like memory transfers (which take up the most time on a modern processor) explicit" <-- this reminds me of how the processing cores on Cell CPUs work.
22:34:57 <ais523> I think it might actually have been a good idea that happened too early
22:35:08 <Vorpal> they DMA to a local memory
22:35:12 <Vorpal> then access that
22:35:16 <ais523> although I think it was being explicit to the wrong thing
22:35:19 <ais523> Vorpal: that's how GPUs work too
22:35:19 <Vorpal> the local memory being SRAM iirc
22:35:26 <elliott> ais523: hmm, I wonder if Checkout isn't just a really weird representation of a dataflow graph
22:35:38 <ais523> perhaps it is, in which case GPUs are too
22:35:46 <Vorpal> ais523: well, to be fair Cell is kind of like a weird mix between CPU and GPU concepts, with a PowerPC core thrown in for good measure
22:35:47 <olsner> but... vliw wasn't exactly new with itanium, was it?
22:35:52 <Vorpal> indeed
22:36:01 <ais523> olsner: I don't think so, but it was the first large-scale serious attempt to do it
22:36:12 <elliott> ais523: I would be very unsurprised if GPUs turned out to be basically dataflow machines
22:36:24 <olsner> and it can still have been too early regardless of how old vliw is
22:36:39 <Vorpal> elliott: they /kind of/ are
22:36:40 <ais523> elliott: it's not obviously exactly the same
22:36:49 <Vorpal> btw I'm taking a course in GPU programming currently
22:36:53 <Vorpal> it seems really interesting
22:36:59 <Vorpal> first lecture was today
22:38:16 <Vorpal> ais523: "The differences are in the value of implementation-defined parameters" <-- any examples?
22:38:25 <ais523> not off the top of my head
22:38:29 <Vorpal> oh well
22:38:38 <Vorpal> are there any Checkout implementations?
22:38:39 <ais523> no
22:38:59 <ais523> it's a thought experiment more than anything else
22:39:10 <ais523> "what would a language look like if it modeled the way processors actually work"
22:39:17 <ais523> and the answer is "frustrating", I think
22:39:22 <Vorpal> doing a level 1 implementation shouldn't be too hard from what I can tell. Might not be efficient though
22:39:36 <ais523> "level 1 implementation"?
22:40:01 <Vorpal> err the stuff needed for doing level 1. Which would form the core of an implementation
22:40:03 <Madoka-Kaname> > fromList [1,2,3,4] \\ fromList [1,2,3]
22:40:04 <lambdabot> No instance for (Control.Monad.Random.Class.MonadRandom [])
22:40:04 <lambdabot> arising from...
22:40:05 <lambdabot> Madoka-Kaname: You have 3 new messages. '/msg lambdabot @messages' to read them.
22:40:18 <Madoka-Kaname> :v
22:40:46 <Madoka-Kaname> > S.fromList [1,2,3,4] \\ S.fromList [1,2,3]
22:40:47 <lambdabot> Couldn't match expected type `[a]'
22:40:47 <lambdabot> against inferred type `Data.Set....
22:40:50 <Vorpal> ais523: anyway from what I heard, coding for the Cell processor is really annoying as well
22:41:01 <elliott> ais523: behold, @:
22:41:01 <elliott> hello-world{s9dj3} :
22:41:02 <elliott> {
22:41:02 <elliott> Data.Rope{bnj55} : module-sig Data.Rope{bnj55}
22:41:02 <elliott> Unicode{7zogf} : module-sig Unicode{7zogf}
22:41:02 <elliott> FRP{45gf6} : module-sig FRP{45gf6}
22:41:04 <elliott> } -> FRP{45gf6}.Behavior (Data.Rope{bnj55}.Rope Unicode{7zogf}.Codepoint)
22:41:13 <Vorpal> elliott: what is that?
22:41:16 <elliott> @
22:41:27 <ais523> elliott: an intermediate internal representation, right?
22:41:29 -!- augur has quit (Remote host closed the connection).
22:41:31 <Vorpal> elliott: what are the {h3b45h} thingies?
22:41:32 <ais523> coding in that would be awkward
22:41:37 <ais523> Vorpal: my guess is hashes
22:41:40 <elliott> ais523: no, a type signature
22:41:48 <elliott> they're partial hashes, I couldn't be arsed to tap out 512 bits or whatever
22:42:01 <Vorpal> heh
22:42:14 <ais523> if people have to type out the hashes by hand, they'll get annoyed
22:42:19 <elliott> never said they would
22:42:22 <ais523> I know
22:42:23 <elliott> I'm not running @ yet, am I?
22:42:33 <ais523> I'm suggesting that some method to sugar them away will be needed
22:42:34 <pikhq_> I'd imagine the plain-text is the human-readable representation and the hash the computer-readable one.
22:42:35 <Vorpal> elliott: sometimes you sound like it :P
22:42:47 <ais523> YOU HAVE TOO MUCH ROPE TO HANG YOURSELF
22:42:55 <elliott> actually, wait, the hashes are in the wrong place there
22:43:03 <Vorpal> wait, that was very un-ais523 like
22:43:11 <ais523> Vorpal: I wrote it originally
22:43:21 <Vorpal> amazing
22:43:27 <ais523> only duckduckgo hit is ESR's website
22:43:37 <Vorpal> ais523: oh right, the intercal error
22:43:38 <ais523> which is interesting, I thought the phrase might occur by chance somewhere else
22:43:44 <Vorpal> what is it an error for in intercal?
22:43:51 <Vorpal> ais523: also when did you switch to ddg?
22:43:54 <ais523> Vorpal: running out of memory during multithreading
22:44:01 <ais523> and when elliott recommended it to me
22:44:04 <Vorpal> heh
22:44:18 * elliott stopped recommending DDG after he recommended it to Vorpal and Vorpal started being obnoxious about recommending it.
22:44:20 <elliott> Anyway, revised @!
22:44:21 <elliott> hello-world :
22:44:21 <elliott> {
22:44:21 <elliott> Data.Rope : module-sig Data.Rope{bnj55}
22:44:21 <elliott> Unicode : module-sig Unicode{7zogf}
22:44:21 <elliott> FRP : module-sig FRP{45gf6}
22:44:22 -!- tiffnya has joined.
22:44:23 <elliott> } -> FRP.Behavior (Data.Rope.Rope Unicode.Codepoint)
22:44:27 <elliott> tiffany: YOU RUINED MY PASTE.
22:44:43 <ais523> not because elliott is perfect in terms of opinions that I'd share, but because e made me aware of its existence
22:44:44 -!- tiffany has quit (Disconnected by services).
22:44:46 -!- tiffnya has changed nick to tiffany.
22:45:18 <ais523> http://www.catb.org/~esr/intercal/ick.htm#Errors
22:45:37 <elliott> ais523: ooh, wait, that type is actually wrong
22:45:39 <elliott> it needs to be dependent
22:45:55 <Vorpal> * elliott stopped recommending DDG after he recommended it to Vorpal and Vorpal started being obnoxious about recommending it. <-- I only recommended it to oerjan in here. No one else.
22:46:03 <elliott> it was enough :)
22:46:11 <ais523> elliott: hmm, perhaps this may end up getting merged with Anarchy somehow
22:46:14 <Vorpal> oh come on
22:46:20 <ais523> which is too specific to be the perfect language, but I love some of its ideas
22:46:24 <elliott> ais523: Anarchy is dependently-typed?
22:46:26 <Vorpal> elliott: admit it, I managed to sell the idea to oerjan
22:46:31 <ais523> elliott: not exactly, well perhaps yes
22:46:31 <elliott> Vorpal: hahaha
22:46:34 <Vorpal> I think he still uses it
22:46:41 <ais523> it feels vaguely similar to dependent typing
22:46:48 <ais523> but I don't think it's the same
22:47:08 <elliott> ais523: I think Anarchy sounds interesting, but I think it'd also be simpler if structured as functional transformations rather than imperative updates
22:47:13 <elliott> (can you tell I like functional programming?)
22:47:29 <elliott> ofc, seeing as I don't really know Anarchy, this may be an ignorant statement
22:47:30 <Vorpal> elliott: Anarchy is a language? Nice name
22:47:37 <ais523> elliott: it is functional, and even almost pure; it's just sugared to look imperative
22:47:53 <elliott> ais523: yet another slightly pregnant language
22:48:01 <ais523> elliott: I've written and tested a parser for it
22:48:11 <Vorpal> ddg is being unhelpful
22:48:11 <elliott> ais523: (almost pure ~ slightly pregnant)
22:48:11 <ais523> which is more progress than certain other languages
22:48:17 <ais523> oh, i see
22:48:19 <Vorpal> ah there we go
22:48:20 <ais523> *I see
22:48:29 <Vorpal> no
22:48:30 <ais523> elliott: well, it isn't pure, but you can't do everything in it you could in an impure language
22:48:33 <Vorpal> that was the wrong anarchy
22:48:37 <elliott> ais523: heh
22:48:41 <ais523> it has a restriction that's weaker than purity, but still ther
22:48:43 <ais523> *there
22:48:46 <ais523> I just need to figure out what it is
22:48:54 <Vorpal> ais523: elliott: I can not find the anarchy you were talking about. Is it an esolang?
22:48:58 <ais523> Vorpal: yes
22:49:01 <elliott> <ais523> elliott: I've written and tested a parser for it
22:49:02 <ais523> one I've only started making
22:49:03 <Vorpal> right
22:49:08 <Vorpal> http://esolangs.org/wiki/Special:Search?search=anarchy&go=Go
22:49:11 <elliott> clearly ais523 is just implementing some wildly well-known language
22:49:13 <Vorpal> ah
22:49:20 <Vorpal> ais523: so not on the wiki
22:49:25 <Vorpal> ais523: what is it about then?
22:49:27 <elliott> ais523 doesn't put incomplete languages on the wiki
22:49:31 <ais523> intended semantics for a subset of the language are mostly worked out, and I'm trying to figure out how to implement them
22:49:35 <ais523> Vorpal: type inference on steroids
22:49:41 <Vorpal> sounds fun
22:49:44 <ais523> also, it's mostly designed for tree-walking
22:49:52 <Vorpal> heh
22:49:57 <ais523> it's specifically intended for being good at writing compilers
22:49:58 <elliott> ais523: anyway, I think @ would be quite happy to host Anarchy
22:50:09 <ais523> and although it'll probably be TC, would be awkward to use for other things
22:50:11 <elliott> it's not an unkind host for languages, really, it just has very high standards
22:50:12 <Vorpal> ais523: so it might actually be an useful esolang?
22:50:16 <ais523> hopefully
22:50:21 <ais523> I may end up giving it a decent FFI
22:50:25 <ais523> for things it's not suited to writing in
22:50:36 <ais523> perhaps even implement integers as a native data type
22:50:45 <ais523> rather than asking the user to make them by hand, like usual
22:50:54 <Vorpal> ais523: so... the lexer and parser are not really tree walking, the latter is tree building. I presume there is adequate support those too then?
22:51:01 <ais523> (I consider a language to be inferior if you /can't/ invent mathematics in it from scratch, but that doesn't mean you should have to)
22:51:14 <elliott> ais523: it makes me really sad that integers are the one thing you absolutely need to be primitive
22:51:17 <ais523> Vorpal: I'm not sure how parsers fit into Anarchy yet
22:51:25 <Madoka-Kaname> @pl (\l -> map fst $ takeWhile (uncurry (==)) $ zip l (tail l)
22:51:25 <lambdabot> (line 1, column 59):
22:51:25 <lambdabot> unexpected end of input
22:51:25 <lambdabot> expecting variable, "(", operator, "$", "$!", "`seq`" or ")"
22:51:25 <ais523> elliott: for efficiency, you mean?
22:51:30 <Madoka-Kaname> @pl (\l -> map fst $ takeWhile (uncurry (==)) $ zip l (tail l))
22:51:30 <lambdabot> map fst . takeWhile (uncurry (==)) . ap zip tail
22:51:31 <elliott> ais523: to be usable at all, efficiency-wise
22:51:41 <ais523> right
22:51:43 <Vorpal> ais523: well presumably you need it if you want to do any sort of useful compiler writing
22:52:05 <elliott> ais523: BTW, that @ type signature I showed is very non-idiomatic
22:52:18 <elliott> Vorpal: parsers are the least interesting part of a compiler
22:52:22 <ais523> that wouldn't surprise me
22:52:25 <elliott> they could be done externally before running anarchy
22:52:26 <ais523> elliott: *usually
22:52:31 <elliott> well, ok
22:52:47 <elliott> ais523: (it's unidiomatic because it uses a rope of codepoints, which is a very strange type)
22:52:51 <ais523> but right, parser theory is well known
22:53:00 <elliott> but I didn't feel like thinking of a document type to use
22:53:04 <ais523> also, what's a rope? something vaguely list-like in the operations it supports?
22:53:12 <Vorpal> elliott: certainly. But they still need to be there in some form. And if done externally you still need to communicate that stuff to the later stages somehow. Which either means a parser for the tree in anarchy or linking C code to it
22:53:22 <elliott> ais523: a balanced tree of short vectors, basically
22:53:27 <elliott> ais523: it's a very good string representation
22:53:28 <ais523> Vorpal: why arbitrarily mention C?
22:53:37 <Vorpal> ais523: well, some other language then
22:53:46 <Vorpal> ais523: I was thinking about bison
22:53:46 <ais523> elliott: hmm, so similar to a skiplist, but with a different way of thinking about it?
22:53:56 <elliott> ais523: completely unrelated; http://en.wikipedia.org/wiki/Rope_(computer_science)
22:53:58 <Vorpal> elliott: why is a rope of codepoints a strange type?
22:54:06 <Vorpal> sounds sensible to me
22:54:07 <elliott> ais523: in @, the obvious implementation is a 2,3 finger tree of short vectors
22:54:16 <elliott> because 2,3 finger trees are literally every data structure
22:54:24 <ais523> interesting primitive
22:54:31 <elliott> Vorpal: unix/windows mind virus
22:54:32 <elliott> ais523: ?
22:54:38 <elliott> ais523: oh, not in @ itself
22:54:53 <Vorpal> elliott: what do you suggest instead for representing an Unicode text?
22:55:02 <elliott> ais523: it's just that 2,3 finger trees are unreasonably good at everything
22:55:22 <elliott> Vorpal: "unicode text" is the problem; there is no real such thing, we're only used to bare strings of bytes and later codepoints because that's what our OSes use
22:55:29 <ais523> rope of codepoints wouldn't be a bad representation for "text file found on the Internet, whose format isn't otherwise specified"
22:55:32 <elliott> books, for instance, aren't unicode text, they have formatting
22:55:41 <ais523> I assume @ wouldn't be insular enough to refuse to interoperate with the wider Internet
22:55:46 <elliott> ais523: that's because the Internet is based around byte strings
22:55:46 <ais523> which means understanding its formats, even if it dislikes them
22:55:49 <ais523> elliott: right, indeed
22:55:54 <elliott> ais523: and most people use Windows/Unix which layers codepoint-arrays on top of them
22:55:57 <Vorpal> elliott: well how will you represent "The dog jumped over the lazy dog" then?
22:56:05 <elliott> every justification for strings is just proof that someone else has used strings previously :)
22:56:13 <elliott> Vorpal: as a document, say
22:56:15 <ais523> `addquote <Vorpal> elliott: well how will you represent "The dog jumped over the lazy dog" then?
22:56:17 <HackEgo> 714) <Vorpal> elliott: well how will you represent "The dog jumped over the lazy dog" then?
22:56:24 <ais523> TIL Vorpal doesn't know about quick brown foxes
22:56:27 <Vorpal> ais523: yes I know it was non-idiomatic :P
22:56:34 <Vorpal> ais523: it was intentional :P
22:56:38 <ais523> also, it has to be present tense, "jumps" not "jumped"
22:56:43 <elliott> the dog jumps
22:56:51 <Vorpal> elliott: and how do you represent a document then?
22:56:52 <ais523> elliott: the quick brown fox jumps
22:56:56 <Vorpal> elliott: internally I mean
22:56:57 <elliott> ais523: the lazy dog
22:57:13 <elliott> Vorpal: depends; it could quite easily be a PDF
22:57:16 <ais523> elliott: hmm, this conversation is rapidly getting too surreal for me
22:57:28 <elliott> Vorpal: a tree of formatting instructions seems reasonable
22:57:39 <Vorpal> elliott: hm. For source code?
22:57:47 <ais523> elliott: with a defined list?
22:57:49 <elliott> Vorpal: code isn't text
22:57:52 <ais523> Vorpal: source code should be stored as an AST
22:57:57 <elliott> ais523: no, you'd want it to basically be compiled source code
22:57:59 <Vorpal> hm
22:58:01 <elliott> the question is what that outputs
22:58:05 <ais523> elliott: that is also an AST too
22:58:08 <elliott> I'm not sure what documents look like, but it's easy to experiment once @ is running
22:58:48 <elliott> ais523: the main problem with a totally generic document type is that it needs to be searchable
22:58:51 <ais523> sorry, I have the CS infection that makes me think that anything that doesn't have higher-order functions isn't a real programming language
22:58:54 <elliott> so it can't just be a program that renders something on the screen
22:59:01 <ais523> elliott: right
22:59:39 <ais523> THE NEXT STACK RUPTURES. ALL DIE. OH, THE EMBARRASSMENT!
22:59:48 <Vorpal> elliott: what about comments?
22:59:51 <ais523> the only message that ESR /changed/ from the original, rather than adding a new message
23:00:05 <Vorpal> ais523: what was the original?
23:00:05 <ais523> I liked the old one too, though ("PROGRAM ATTEMPTED TO EXIT WITHOUT ERROR MESSAGE")
23:00:13 <Vorpal> ah
23:00:16 <elliott> Vorpal: comments should be documents too, but why can't they just be arbitrary objects?
23:00:24 <elliott> there's no reason you shouldn't be able to add an audio file as a comment
23:00:25 <Vorpal> elliott: hm I guess so
23:00:30 <elliott> or, more reasonably, a picture
23:00:38 <elliott> (even if you could just have a document composed only of a picture, it's unnecessary indirection)
23:01:10 <Vorpal> elliott: lets say I'm editing a function, how will you represent this on screen? As a piece of text?
23:01:40 <elliott> Vorpal: have you ever read a paper which had Haskell code in it?
23:01:44 <elliott> it'll probably look something like that
23:02:10 <Vorpal> elliott: I read one that had Miranda code
23:02:20 <elliott> Vorpal: probably not
23:02:24 <elliott> go read some mcbride or something :P
23:02:28 <ais523> elliott: hmm, what about literate programs?
23:02:29 <Vorpal> elliott: got a link?
23:02:40 <ais523> I'm trying to work out if the programs should be "outside" or "inside" comments
23:02:51 <ais523> or if there should be some other method for doing so
23:02:57 <Vorpal> elliott: ddg is rather unhelpful here
23:03:11 <elliott> hmm, there's taht functional pearl i read a while back
23:03:13 <Vorpal> elliott: mcbride is obviously a name. Probably knowing the first name would help
23:03:22 <elliott> it was just a joke :P
23:03:24 <elliott> but here, http://www.google.co.uk/url?sa=t&rct=j&q=indexed%20monad%20functional%20pearl&source=web&cd=3&ved=0CDUQFjAC&url=http%3A%2F%2Fpersonal.cis.strath.ac.uk%2F~conor%2FKleisli.pdf&ei=B7W5TovkAsmM-wbhz7WFCA&usg=AFQjCNG5aO2kQrYOjP71SltPo1vW7kQrMQ&sig2=tjbXn6dw84MjElfdiKoySw
23:03:26 <elliott> ugh
23:03:30 <elliott> personal.cis.strath.ac.uk/~conor/Kleisli.pdf
23:03:41 <ais523> hmm, I think "FLAG ETIQUETTE FAILURE BAD SCOUT NO BISCUIT" is the newest error message there, it's one of ESR's
23:03:59 <elliott> ais523: that's rubbish
23:04:11 <ais523> hmm, it's not /that/ bad
23:04:34 <ais523> "NO SKELETON IN MY CLOSET, WOE IS ME!" would be great if it was just the bit before the comma
23:04:40 <Vorpal> elliott: I can see plenty of haskell source code in there
23:04:47 <Vorpal> nicely formatted
23:04:48 <elliott> Vorpal: that's the point
23:05:08 <Vorpal> but nothing special about it. I mean, it is kind of how it would show in your typical editor, modulo italics and colours
23:05:11 <ais523> elliott: things like syntax highlighting shouldn't be part of the program object, though
23:05:13 <elliott> Vorpal: and operators
23:05:22 <Vorpal> hm good point
23:05:30 <elliott> ais523: anyway, re literate programs: I'm undecided. I think @ can support both just fine. I don't know which the system itself should prefer.
23:05:31 <Vorpal> elliott: didn't even notice that to begin with
23:05:34 <ais523> hmm, the problem with Unicode is that it's inherently linear
23:05:52 <elliott> Unicode isn't that good, but @ uses it as a source of actual characters because it's good enough
23:06:01 <Vorpal> elliott: would it be possible to make that compile by defining the relevant unicode symbols as operators?
23:06:04 <elliott> and because being incompatible with it in 2011 would be completely unjustifiable
23:06:09 <ais523> indeed
23:06:10 <elliott> Vorpal: who says those are valid unicode?
23:06:15 <elliott> Vorpal: there's no unicode for "star in a diamond", last i checked
23:06:16 <ais523> elliott: perhaps you should finish Kitten first
23:06:23 <ais523> to give you a usable OS to develop @ on
23:06:24 <elliott> which is what (<*>) is usually rendered as
23:06:38 <Vorpal> elliott: hrrm
23:06:39 <elliott> ais523: I think Kitten is easy enough to develop at this stage that I can entertain @ thoughts
23:06:45 <ais523> indeed
23:06:50 <ais523> nothing wrong in thinking
23:06:57 <elliott> ais523: I need to push through this design skeleton of protoproto@ to something that can run the simplest system that's sort of like @
23:07:07 <elliott> since that'll be a big win in terms of being able to experiment beyond that
23:07:48 <Vorpal> <elliott> Unicode isn't that good, but @ uses it as a source of actual characters because it's good enough <-- yeah, they didn't add Klingon did they?
23:07:55 <ais523> Vorpal: they didn't
23:08:01 <Vorpal> see, it isn't good at all
23:08:09 <ais523> there is a common embedding of Klingon into Unicode that isn't standard, but doesn't contradict the standard
23:08:14 <ais523> by defining some of the private use area
23:08:17 <Vorpal> right
23:08:28 <Vorpal> approx how large is the private use area, I don't remember
23:08:37 <ais523> considerably larger than Klingon is
23:08:39 <elliott> hello-world :
23:08:39 <elliott> M : {
23:08:39 <elliott> Data : { Rope : module-sig Data.Rope{bnj55} }
23:08:39 <elliott> Unicode : module-sig Unicode{7zogf}
23:08:39 <elliott> FRP : module-sig FRP{45gf6}
23:08:39 <elliott> } -> M.FRP.Behavior (M.Data.Rope.Rope M.Unicode.Codepoint)
23:08:41 <elliott> that's better
23:08:43 <Vorpal> ais523: fair enough
23:08:44 <ais523> but rather small compared to Unicode as a whole
23:09:09 <elliott> now to try and give some example /code/ for hello-world
23:10:43 <elliott> gah, I said Behavior
23:10:51 -!- Patashu has joined.
23:10:59 <elliott> ais523: make sure I don't typo my names again, pls :)
23:11:19 <ais523> haha
23:11:33 <ais523> why would the names be written as sequence-of-letters anyway
23:11:39 <Vorpal> XD
23:11:45 <ais523> as in, why shouldn't Color and Colour be identical?
23:12:13 <elliott> {
23:12:14 <elliott> use Data.Rope as Rope importing Rope
23:12:14 <elliott> use Unicode importing Codepoint
23:12:14 <elliott> use FRP importing Behaviour
23:12:14 <elliott>
23:12:15 <elliott> hello-world : Behaviour (Rope Codepoint)
23:12:16 <elliott> hello-world = point Rope['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l',
23:12:18 <elliott> 'd', '!']
23:12:20 <elliott> }
23:12:27 <elliott> that Rope[...] is misleading; it is actually a Rope object embedded into the code
23:12:35 <elliott> who needs to build up constants from functions when you can just include them in the source?
23:14:05 <elliott> oh, oops!
23:14:09 <elliott> ais523: can you spot the error in the above program?
23:14:14 <elliott> (@ could!)
23:14:56 <ais523> you didn't define lists?
23:14:59 <Madoka-Kaname> @src sequence
23:14:59 <lambdabot> sequence [] = return []
23:15:00 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
23:15:00 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
23:15:09 <ais523> oh, right, that's the embedded object
23:15:10 <elliott> ais523: I didn't use lists
23:15:20 <elliott> ais523: hint: where is "point" imported from?
23:15:26 <ais523> aha
23:15:29 <ais523> I missed the "point"
23:15:38 <elliott> well, ropes aren't behaviours of ropes
23:15:52 <elliott> what's required is
23:15:52 <elliott> use Control.Applicative importing point
23:15:53 <elliott> or similar
23:16:18 <elliott> anyway, ostensibly one can ask an @ computer, given the above, "hello-world", and get back a container with that rope inside, never changing
23:16:35 <elliott> a more interesting program would be one that cycles through different ropes or even responds to input
23:16:36 <Vorpal> elliott: that list sounds quite annoying to write out like that
23:16:41 <elliott> Vorpal: there are no lists
23:16:46 <Vorpal> elliott: well....
23:17:05 <Vorpal> elliott: ['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'] <-- writing that seems really annoying
23:17:07 <elliott> point me to the list
23:17:13 <elliott> <elliott> that Rope[...] is misleading; it is actually a Rope object embedded into the code
23:17:15 <elliott> there's no list
23:17:16 <Vorpal> call it whatever you like
23:17:21 <Vorpal> elliott: certainly
23:17:36 <elliott> so, you missed the part where I said you wouldn't actually use ropes of codepoints in rpactice, right? :)
23:17:43 <Vorpal> elliott: whatever it is, it seems annoying to use if you just want to display a message to the user
23:17:54 <Vorpal> elliott: so what would you do in practise for the hello world
23:18:00 <Vorpal> what would the idiomatic hello world look like
23:18:01 <elliott> use a document type
23:18:09 <elliott> and I don't know, it's impossible to determine @'s idioms before it exists
23:18:13 <Vorpal> hm
23:18:41 <Vorpal> elliott: so what would you do to display "Error connecting to host", would you display a document with that "text" in it?
23:18:54 <Madoka-Kaname> Eh?
23:18:56 <elliott> yes.
23:18:59 <Madoka-Kaname> > ['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'] == "Hello, world!"
23:18:59 <lambdabot> True
23:19:00 <Vorpal> hm okay
23:19:03 <Madoka-Kaname> Why do you have to write it out as a list?
23:19:11 <Vorpal> Madoka-Kaname: that was NOT haskell code
23:19:16 <Madoka-Kaname> Oh.
23:19:18 <Madoka-Kaname> That makes sense.
23:19:21 <Vorpal> elliott: where would actual ropes be used then?
23:19:23 <elliott> {
23:19:23 <elliott> use Text.Doc importing Doc
23:19:23 <elliott> use FRP importing Behaviour
23:19:23 <elliott> use Control.Applicative importing point
23:19:23 <elliott>
23:19:23 <elliott> hello-world : Behaviour Doc
23:19:25 <elliott> hello-world = point "Hello, world!"
23:19:27 <elliott> }
23:19:29 <elliott> Vorpal: smile
23:19:31 <elliott> Vorpal: and probably internally
23:19:39 <elliott> representing runs of unformatted text as ropes of codepoints, etc.
23:19:46 <Vorpal> elliott: "smile" here being?
23:19:56 <elliott> Vorpal: because i converted it to use an imaginary Doc type
23:20:00 <Vorpal> right
23:20:03 <elliott> the "world!" is actually italic there, you just can't see it :)
23:20:09 <Vorpal> hah
23:20:30 <Vorpal> elliott: that might make it a bit tricky to pastebin code to discuss it over irc :P
23:20:40 <Vorpal> elliott: if it can't easily be represented as pure text I mean
23:20:40 <elliott> Vorpal: that's why @ has a standardised object interchange format
23:20:44 <Vorpal> right
23:20:45 <elliott> presumably, there'll be @bins
23:20:54 <elliott> for linking to people over legacy protocols
23:21:21 <elliott> Vorpal: in a @ communications protocol, you would of course exchange objects
23:21:27 <elliott> so you could just embed source code in your message
23:21:29 <Vorpal> elliott: I guess we will see if @ becomes the next Linux.
23:21:34 <Vorpal> I doubt it though
23:21:44 <elliott> the next shitty imitations of a decades-old obsolete system?
23:21:50 <Vorpal> elliott: not in that sense :P
23:21:57 <Vorpal> elliott: I meant "the next big open source OS"
23:22:08 <elliott> I doubt it, but I've never really cared much about that
23:22:16 <elliott> I would like to think it'll get at least ten users
23:22:27 <elliott> probably nobody but me will actually boot it as their main OS
23:22:39 <Vorpal> elliott: I believe that is more ambitious than Linus original goal :P
23:23:09 <elliott> I would like to think @ would take off, but actually it'd probably be pretty hellish.
23:23:21 <elliott> People would start shipping proprietary @ source.
23:23:22 <Vorpal> elliott: I would certainly try it out under qemu if it is ever implemented
23:23:30 <Vorpal> would that even work?
23:23:34 <elliott> Not long until programs become ObfuscatedPropriertyInterpreter("...binary data...").
23:23:46 <elliott> s/Proprierty/Proprietary/
23:24:00 <Vorpal> elliott: I guess that will happen for the graphics drivers.
23:24:05 <Vorpal> at least
23:24:11 <elliott> Vorpal: "will" -- @ won't get to that stage.
23:24:18 <Vorpal> well if it would
23:24:19 <Vorpal> I meant
23:24:26 <elliott> When @ is small, I can just yell at people if they do things like that *shrug*
23:25:19 <elliott> <Vorpal> elliott: I would certainly try it out under qemu if it is ever implemented
23:25:20 <elliott> <Vorpal> would that even work?
23:25:23 <elliott> Vorpal: Were these statements linked?
23:25:32 <Vorpal> elliott: let me look up
23:25:40 <Vorpal> nope
23:25:46 <Vorpal> <elliott> People would start shipping proprietary @ source. <Vorpal> would that even work?
23:25:50 <elliott> Right.
23:25:50 <Vorpal> elliott: was the linkage
23:26:06 <elliott> Vorpal: Anyway, I wouldn't bother running @ in qemu, since like I've said it'll be hostable on Unix.
23:26:11 <Vorpal> elliott: I can't imagine it NOT working under qemu
23:26:19 <Vorpal> right
23:26:29 <Vorpal> elliott: reminds me of inferno in that regard
23:26:39 <Vorpal> except I never got inferno to actually work
23:26:48 <elliott> But I would recommend people try actually booting it if it works out -- it'll be very interesting to see how much the scheduler/IO stuff actually helps.
23:27:08 <Vorpal> elliott: well, I would probably disconnect all my hdds first :P
23:27:11 <Vorpal> which is a chore
23:27:28 <elliott> Vorpal: Well, like I said, my baseline is <3000 lines of Python + a small bit of @ driver code to connect to the Python "hardware" + the standard @ image = hosted @ system with graphics, keyboard and mouse (no other special IO).
23:27:40 <elliott> If you can't implement that, then the abstract machine is too complex.
23:27:49 <elliott> Obviously it'll take more lines to be efficient and do things like networking.
23:27:58 <Vorpal> given that I need to remove one disk compartment to properly read the SATA connectors, because the direct path is blocked by the GPU heatsink
23:28:06 <Vorpal> reach*
23:28:26 <Vorpal> elliott: fair enougj
23:28:28 <elliott> I wouldn't worry about @ clobbering your HDs, unless you think I'm malicious or whatever. It's kind of meant to eliminate a very large portion of those sorts of errors :P
23:28:28 <Vorpal> enough*
23:28:49 <Vorpal> elliott: do I trust you completely to not make any mistakes still? Nope.
23:29:01 <pikhq_> Vorpal: It's pretty damned hard to do HD-hosing mistakes.
23:29:05 <elliott> ais523: quick, tell me how anarchy and scapegoat fit together
23:29:08 <elliott> Vorpal: you trust Linux not to?
23:29:09 <Vorpal> elliott: I appeal to authority here. The authority of Murphy
23:29:11 <elliott> you trust Windows not to?
23:29:14 <elliott> you're insane!
23:29:26 <ais523> elliott: I can't think of an obvious link
23:29:43 <elliott> ais523: I was thinking of language-specific scapegoat change types
23:30:09 <Vorpal> elliott: nope! Guess why I disconnected linux when installing windows. Anyway they had a fair amount of testing. Such issues would according to probability likely have been caught.
23:30:43 <Vorpal> elliott: the only thing I would trust more than that would be an actual formal proof :P
23:30:44 <elliott> how do you even clobber an HD by accident in OS code, anyway?
23:31:02 <elliott> you'd have to send a very specific, very long sequence of instructions to th drive
23:31:03 <elliott> the drive
23:31:23 <Vorpal> elliott: okay more reasonably and scarier you might manage to brick my network card. I remember an OS bug in some pre-release of some 2.6 linux kernel doing that
23:31:30 <Vorpal> for a similar network card to mine
23:31:45 <elliott> Vorpal: that's ridiculous, you think I'll write drivers for your network card?
23:31:51 <Vorpal> by writing in the wrong place, because debug hooks were written into device registers by mistake
23:32:07 <Vorpal> elliott: see, no need to do that ^
23:32:35 <Vorpal> elliott: anyway what network card do you have? If it is intel's gbit ethernet: then yes
23:32:41 <elliott> oh well, if you really think you can trust linux more than @ I'll ujst have to conclude you're insane
23:32:46 <elliott> especially considering the order of magnitude difference in code size
23:33:09 <pikhq_> elliott: Well, there's actually a decent chance you could. There's like one or two network cards that are extraordinarily common in both physical hardware *and* VMs, and are easy to implement drivers for.
23:33:15 <pikhq_> (I can't recall which)
23:33:19 <Vorpal> elliott: indeed you do have a point. Guess why I would never ever boot anything that isn't at least 3.x.1
23:33:50 <elliott> Vorpal: oh, so you just recently switched to Linux?
23:34:02 <Vorpal> elliott: well obviously 2.6.x.1 before
23:34:20 <Vorpal> elliott: and I forgot what the 2.4 versioning system was, and I probably didn't know better back then anyway
23:34:22 <elliott> the first @ release will be 3.1.1
23:34:29 <Vorpal> XD
23:34:34 * Phantom_Hoover → sleep
23:34:36 <elliott> with special Vorpal hd clobbering code
23:34:37 <Vorpal> pikhq_: I believe intel's gbit ethernet is fairly common indeed.
23:34:37 -!- Phantom_Hoover has quit (Quit: Leaving).
23:34:52 <Vorpal> pikhq_: more so in VMs
23:35:12 <elliott> pikhq_: You should help me figure out what @'s networking looks like. :(
23:35:18 <Vorpal> I have the PCI Express one though
23:35:20 <elliott> It has the major constraint that it has to be layerable on top of either TCP/IP or UDP/IP.
23:35:24 <ais523> confirmed: it takes me about 10 seconds to remember the rules of The Game when I'm reminded of it
23:35:25 <Vorpal> which iirc is slightly less common in VMs
23:35:32 <ais523> I think my brain has evolved a defensive response to it
23:35:34 <Vorpal> heh
23:35:46 <ais523> actually, more like 30 seconds
23:35:50 <ais523> I just remembered there was another one
23:35:51 <Vorpal> amazing
23:36:08 <elliott> ais523: I'm so glad I play Not the Game
23:36:18 <ais523> heh, and just now I remembered the "if you think of The Game you lose rule"
23:36:24 <elliott> X-D
23:36:29 <elliott> hmm, it's kind of annoying that @ doesn't seem to be separable from dependent types
23:36:30 <ais523> there are only three, right?
23:36:37 <elliott> on the one hand, it's obviously the correct thing
23:36:40 <elliott> on the other, it makes my job a /lot/ harder
23:36:43 <ais523> and I don't play The Game
23:36:47 <ais523> although I know a bunch of people who do
23:36:54 <pikhq_> elliott: I wouldn't actually consider that a major constraint.
23:37:11 <pikhq_> Being layerable on top of UDP/IP just means it needs to be in packet form, really.
23:37:30 <elliott> pikhq_: It also means it has to be source-dependent...
23:37:32 <Vorpal> elliott: I assume there is a way to embed native code for use in drivers?
23:37:39 <elliott> And target-dependent, for that matter.
23:37:49 <pikhq_> elliott: Not necessarily.
23:37:55 <Vorpal> elliott: oh and how are you going to deal with ACPI?
23:37:58 <Vorpal> that sounds "fun"
23:38:03 <pikhq_> You can have a single port for all of @ networking to be multiplexed over.
23:38:04 <pikhq_> :)
23:38:11 <elliott> pikhq_: i'm talking about IPs, not porst
23:38:13 <elliott> ports
23:38:24 <pikhq_> *Ah*.
23:38:26 <elliott> Vorpal: (a) Sort of, but you almost never want to use it. (b) What do you mean?
23:38:31 <pikhq_> That is a bit of a restriction.
23:38:46 <elliott> pikhq_: If I could, I'd layer it on top of Urbit's networking. :p
23:38:47 <pikhq_> But the alternative is NIHing the thing least NIHable.
23:38:53 <Vorpal> elliott: surely you know that you need to interpret a lot of bytecode in your OS to do ACPI?
23:39:06 <elliott> pikhq_: I wish routers let you give them new routing algorithms remotely.
23:39:11 <Vorpal> there is an open source implementation of this already. It is in C though
23:39:11 <elliott> So you could just define new protocols with router viruses.
23:39:22 <elliott> Vorpal: I know almost nothing about ACPI other than that it's crappy
23:39:22 <Vorpal> well there are probably a few more
23:39:26 <elliott> Vorpal: Give me one good reason not to just ignore it :)
23:39:30 <elliott> I suppose it matters for laptops and shit
23:39:36 <Vorpal> elliott: I don't think you can avoid it on modern hardware in general
23:39:40 <elliott> Vorpal: Anyway, interpreting things is one thing functional languages are really good at!
23:39:54 <Vorpal> isn't it a state machine even? I'm not sure
23:40:30 <elliott> Vorpal: Anyway, yeah, I can't really think of all that many uses for embedding native code.
23:40:42 <ais523> just seen on Slashdot: apparently a microphone error let a bunch of reporters hear the translated version of a private conversation between Obama and Sarkozy
23:41:11 <Vorpal> elliott: I think you might need to poke some addresses and such from the ACPI byte code. And then I guess some core parts of the OS will need it.
23:41:15 <pikhq_> I'm pretty sure that most of what drivers actually need is access to inb/outb analogues and RAM access.
23:41:24 <pikhq_> *And* that can generally be abstracted over.
23:41:31 <ais523> pretty high-profile for a microphone error
23:41:45 <Vorpal> ais523: heh
23:41:51 <pikhq_> You don't really need machine code access for that. More like limited peek/poke.
23:41:54 <elliott> Vorpal: Poking address =/= embedding arbitrary machine code.
23:41:54 <ais523> hmm, I'm still recoiling from the YouTube commenter who asked how you edited the uploader comments (on someone else's video)
23:41:55 <Vorpal> ais523: did they say anything interesting?
23:42:00 <Vorpal> elliott: hm indeed
23:42:03 <elliott> But yeah, what pikhq_ said; sections of RAM + ports.
23:42:11 <ais523> Vorpal: yes, they insulted the prime minister of Israel
23:42:16 <Vorpal> ais523: cool
23:42:18 <ais523> or at least Sarkozy did; Obama's response was ambiguous
23:42:54 <ais523> according to the reports
23:42:58 <ais523> perhaps the translators made the whole thing up
23:43:06 <ais523> but I imagine they'd be in a bunch of trouble if they did
23:43:12 <elliott> 'I can't stand him any more,' said Mr. Sarkozy of Israeli Prime Minister Benjamin Netanyahu. 'He's a liar.' Mr. Obama replied: 'You're sick of him. I have to deal with him every day!'
23:43:14 <elliott> not very ambiguous :)
23:44:07 <Vorpal> elliott: well the driver for a virtual machine would need to run a few instructions, at least if it was to use hardware virtualisation
23:44:12 <Vorpal> hm that is an interesting issue I guess
23:44:31 <elliott> How do graphics drivers for VMs work, anyway
23:44:53 <ais523> elliott: Obama's response is two neutral statements; there's an implication but it isn't stated
23:45:14 <olsner> besides ports and RAM, you'll need some kind of irq routing somewhere
23:45:28 <ais523> and I've played a bunch too much nomic, and watched a bunch too much politics, to necessarily infer anything at all into a statement
23:45:33 <ais523> made by a politician
23:45:50 <pikhq_> ais523: Israel will, of course, go apeshit.
23:45:53 <ais523> elliott: I'm guessing memory-mapped, but not sure
23:46:02 <ais523> pikhq_: probably
23:46:03 <pikhq_> And near as I can tell Israel has more control over US politics than US citizens do.
23:46:11 <pikhq_> Why? Fuck if I know.
23:49:51 <elliott> hmm
23:50:42 <elliott> olsner: I don't get what you mean
23:52:32 -!- augur has joined.
23:53:53 <elliott> I should probably figure out what my FRP model actually looks like.
23:53:59 <olsner> just that some magic is required to either figure out which irq each devices uses, or to decide which irqs they should use and store it wherever that goes
23:54:20 <elliott> olsner: that's not related to what enhanced access driver code needs, though
23:54:24 <olsner> besides io ports and memory access to devices, drivers hook into that
23:54:36 <olsner> no, I was just talking about hardware and drivers in general
23:54:51 <elliott> right
23:55:06 <olsner> whatever enhanced access driver code is :)
23:55:26 <elliott> olsner: whatever (enhanced access) driver code needs
23:55:37 <elliott> over "typical" programs
23:55:41 <olsner> oh, right
23:55:44 <elliott> (no such thing as a program, but anyway!)
23:56:25 <olsner> I should figure out how the whole irq business works some day
23:56:29 <elliott> ais523: come to think of it, @ should be available hosted on @, too
23:56:34 <ais523> elliott: isn't a program just a subroutine (in the general sense) that the user might want to invoke manually?
23:56:42 <ais523> elliott: right; it'd save the need to use a VM
23:56:52 <ais523> for something that you might feel the need to use a VM for
23:56:57 <elliott> ais523: bit pointless though: it'd literally look like a function call
23:57:00 <ais523> yep
23:57:06 <elliott> @ already has object-capability, so you don't need VMs at all
23:57:16 <ais523> well, it might work as a method of mitigating against unknown security bugs
23:57:30 <ais523> or just testing an @ interpreter meant to run on other platforms
23:57:31 <elliott> no, it'd /literally/ just look like a function call
23:57:37 <elliott> ais523: huh?
23:57:43 <ais523> but it wouldn't /be/ a function call
23:57:46 <ais523> just /look/ like one
23:57:53 <elliott> no, it would /be/ a function call
23:57:57 <elliott> and
23:57:58 <elliott> <ais523> or just testing an @ interpreter meant to run on other platforms
23:57:59 <elliott> makes no sense
23:58:02 <ais523> oh, that's a cheat-interp
23:58:04 <elliott> you'd need an emulator for that platform
23:58:05 <elliott> not @
23:58:06 <elliott> ais523: no, it isn't
23:58:10 <elliott> ais523: here's how you port @ to a platform:
23:58:21 <elliott> ais523: write something that passes control to it, giving it the hardware drivers it needs
23:58:50 <elliott> ais523: OK, you could write an @ machine yourself in @lang, but why? the host already has a much faster one
23:58:56 <ais523> elliott: don't you need to put something there capable of executing the code @ is made of?
23:58:57 <elliott> there's no security issues or anything in using it
23:59:07 <elliott> ais523: that's part of passing control
23:59:15 <ais523> elliott: for testing your @ machine in @lang, that you eventually intend to, say, compile into C for the purpose of running on a different OS?
23:59:37 <elliott> hahaha, implying you can compile @lang to C
23:59:49 <ais523> well, you can compile Haskell to C
2011-11-09
00:00:00 <ais523> the operation might not be a generally useful one, but I can't see why it wouldn't be /possible/
00:00:02 <elliott> Haskell is defined in terms of existing OSes
00:00:11 <elliott> compiling @lang to C doesn't work because @lang /is @/
00:00:26 <elliott> the most you can do is bundle it with an interpreter (= a @ simulator)
00:00:26 <ais523> elliott: not quite
00:00:38 <ais523> I suspect you're making a mistake I made in Feather
00:00:42 <ais523> but it's not a very easy mistake to describe
00:01:09 <elliott> well, give it a try
00:03:45 <ais523> umm… a language typically has pure-computation parts, and an API
00:03:47 <elliott> ais523: I mean, if you can take the @ part out of @lang, then @lang is broken
00:03:51 <ais523> to the outside world
00:04:12 <ais523> if you metacircular both of them, then you don't have an interp at all, just a cheat-interp
00:04:27 <ais523> whereas you can't do the API without implementing it in terms of itself, for a self-interp
00:04:36 <ais523> what I mean is, you have to implement @lang in something
00:04:42 <elliott> I'll agree with that
00:04:51 <ais523> parts of that will be pure computation, and can be lifted back to the original language, in a sense
00:04:53 <elliott> but what has this got to do with compiling @lang to C?
00:04:58 <ais523> replacing the parts of it that aren't computation with API calls
00:05:30 <ais523> err, it's pretty hard to explain
00:05:31 <elliott> ais523: those API calls are @
00:05:35 <ais523> elliott: ah, OK
00:05:39 <ais523> but you can't make a language out of /just/ API calls
00:05:50 <ais523> well, probably (/me remembers the MOV-based OISC)
00:05:53 <elliott> indeed, but you can't do anything with /just/ computation
00:05:57 <ais523> right
00:06:02 <ais523> both parts are needed
00:06:05 <elliott> so you can't write an @ simulator in @lang and compile it to another OS
00:06:06 <ais523> and one of the parts, it's meaningful to compile it
00:06:09 <elliott> because you need the bit that's @
00:06:30 <ais523> I wasn't talking about an @ simulator; but rather, an @lang impl in @lang that calls into the surrounding @ just for API calls
00:06:50 <elliott> you don't implement @lang to simulate @; @lang's at a higher level
00:07:03 <elliott> anyway, OK, but I'm not sure what the use of that would be
00:07:06 <ais523> now, you can attempt to restrict those API calls to the smallest subset you can, which is what you'd do to implement @ onto a new system
00:07:14 <ais523> it might not be useful, I'm just saying it's not meaningless
00:07:14 <Vorpal> elliott: remind me, why did you go for @ as the name?
00:07:20 <ais523> Vorpal: @ isn't the name
00:07:24 <elliott> no, you wouldn't, you'd just implement the @ machine in a handful of pages of whatever code
00:07:27 <Vorpal> oh right
00:07:29 <Vorpal> now I remember
00:07:30 <ais523> it's a metasyntactic variable standing for what the name will eventually be
00:07:43 <elliott> anyway, maybe it's possible, but such a compiler would necessarily have to be very ugly
00:07:48 <elliott> and probably only work on very carefully-written programs
00:07:52 <pikhq_> I suggest the name involve "hubris" in some way.
00:07:54 <elliott> easier just to write the C directly for such a simple program
00:08:18 <ais523> perhaps
00:08:42 <elliott> ais523: if it /isn't/, then @'s abstract machine needs replacing
00:09:01 <ais523> right
00:09:05 <pikhq_> I'd imagine @lang without @ would be a bit like Haskell without IO: does computation, and can't do anything at all with it.
00:09:15 <ais523> pikhq_: yes, that's about right
00:09:21 <elliott> pikhq_: worse
00:09:25 <elliott> pikhq_: no data structures
00:09:42 <ais523> elliott: how are the data structures bootstrapped?
00:09:42 <pikhq_> elliott: Okay, so Haskell without Prelude then.
00:09:44 <elliott> you'd basically be reduced to reimplementing everything you want to use from scratch
00:10:02 <ais523> reimplementing the data structures from scratch is exactly the sort of thing I'd expect the @ simulator in @ to do
00:10:07 <ais523> that's usefully compilable
00:10:10 <elliott> I wouldn't
00:10:15 <elliott> because there are no data structures to implement
00:10:25 <ais523> well, they have to come from somewhere!
00:10:26 <elliott> I don't think you understand how simple the abstract machine is meant to be
00:10:48 <ais523> I do, I think; I'm disagreeing with you where the boundaries between the abstract machine and the rest of the world are
00:10:56 <ais523> as in, I think there's something in between that you're repeatedly claiming doesn't exist
00:11:27 <elliott> I think you just don't understand how @ is structured
00:11:56 <ais523> perhaps
00:13:16 -!- sllide has quit (Ping timeout: 276 seconds).
00:14:11 -!- tiffany has quit (Quit: nyu~).
00:14:49 <elliott> ais523: anyway, code in @ is basically completely unportable, by design
00:15:42 <pikhq_> Which sense of "portable" do you mean?
00:15:47 <pikhq_> Between OSes, or between CPUs?
00:16:04 <elliott> pikhq_: OSes
00:16:31 <pikhq_> Ah. Yeah, a port of @ code would either be a complete rewrite or contain an implementation of the relevant portions of @.
00:19:44 -!- boily has quit (Ping timeout: 240 seconds).
00:20:11 -!- ais523 has quit (Remote host closed the connection).
00:29:49 <twice11> Do you have any link for @lang? I don't find it in the Esolang language list.
00:29:55 <twice11> Or do you mean @! ?
00:30:49 <elliott> oh dear :)
00:31:05 <elliott> @lang is not technically esoteric, it's just more esoteric than almost all languages on the wiki
00:31:05 <lambdabot> pong
00:31:11 <elliott> hi lambdabot =
00:31:25 <Vorpal> @lang
00:31:25 <lambdabot> pong
00:31:29 <Vorpal> @ping
00:31:29 <lambdabot> pong
00:31:31 <Vorpal> @whatever
00:31:32 <lambdabot> Unknown command, try @list
00:31:34 <Vorpal> hm
00:31:37 <Vorpal> why would @lang do that
00:31:40 <Vorpal> elliott: any idea?
00:31:45 <twice11> @ling
00:31:45 <Vorpal> @abcd
00:31:46 <lambdabot> pong
00:31:46 <lambdabot> Invalid argument ''
00:31:46 <elliott> @ping
00:31:46 <lambdabot> pong
00:31:51 <Vorpal> any 4 letter word?
00:31:52 <elliott> lambdabot does error-correction
00:31:52 <twice11> @bong
00:31:53 <lambdabot> Maybe you meant: bug ping
00:31:58 <Vorpal> hm
00:32:03 <Vorpal> right
00:32:09 <twice11> @bing
00:32:09 <lambdabot> pong
00:32:18 <Vorpal> elliott: I don't see how lang → ping is reasonable though
00:32:34 <twice11> Probably ping is the unique closest match.
00:32:36 <elliott> dunno :)
00:32:39 <Vorpal> elliott: so hm
00:32:42 <Vorpal> @abcd
00:32:42 <lambdabot> Invalid argument ''
00:32:49 <Vorpal> well, I guess there was none close enough
00:32:53 <Vorpal> @ngng
00:32:53 <lambdabot> pong
00:32:54 <twice11> @long
00:32:54 <lambdabot> pong
00:32:57 <Vorpal> @nnng
00:32:57 <lambdabot> pong
00:33:00 <twice11> @pang
00:33:01 <lambdabot> pong
00:33:01 <Vorpal> @gggg
00:33:01 <lambdabot> Unknown command, try @list
00:33:08 <Vorpal> @nnnn
00:33:08 <lambdabot> Unknown command, try @list
00:33:10 <twice11> @mmpf
00:33:10 <lambdabot> Maybe you meant: map unpf
00:33:13 <Vorpal> @png
00:33:14 <lambdabot> pong
00:33:17 <Vorpal> right
00:33:24 <Vorpal> it seems to be quite lenient
00:33:33 <twice11> @pimf
00:33:34 <lambdabot> Maybe you meant: ping time
00:33:41 <Vorpal> @list
00:33:41 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
00:33:49 <twice11> @lost
00:33:49 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
00:34:05 <Vorpal> @yhjulwwiefzojcbxybbruweejw
00:34:05 <lambdabot> "\"#$%&'()*+,\""
00:34:09 <Vorpal> okay
00:34:32 <Vorpal> €protontorpedo
00:34:36 <Vorpal> @protontorpedo
00:34:36 <lambdabot> how does haskell compare to j2ee?
00:34:39 <Vorpal> @protontorpedo
00:34:40 <lambdabot> is it fun to program in haskell?
00:34:41 <twice11> @spell lang
00:34:42 <Vorpal> I see
00:34:55 <Vorpal> @v
00:34:55 <lambdabot> "\""
00:34:57 <Vorpal> @v
00:34:57 <lambdabot> "\"\\\"\\\\\\\"\\\\\\"
00:35:01 <Vorpal> @yhjulwwiefzojcbxybbruweejw
00:35:01 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\"
00:35:03 <Vorpal> right
00:35:47 <twice11> @gsite
00:35:48 <lambdabot> Empty search.
00:36:03 <twice11> Hmm, lets see how close this is:
00:36:06 <twice11> @goatse
00:36:06 <lambdabot> Unknown command, try @list
00:36:11 <Vorpal> @hoogle+ (a -> b) -> [a] -> [b]
00:36:11 <lambdabot> Data.Monoid appEndo :: Endo a -> a -> a
00:36:11 <lambdabot> Data.ByteString append :: ByteString -> ByteString -> ByteString
00:36:11 <lambdabot> Data.ByteString.Char8 append :: ByteString -> ByteString -> ByteString
00:36:13 <Vorpal> @hoogle (a -> b) -> [a] -> [b]
00:36:14 <lambdabot> Prelude map :: (a -> b) -> [a] -> [b]
00:36:14 <lambdabot> Data.List map :: (a -> b) -> [a] -> [b]
00:36:14 <lambdabot> Control.Parallel.Strategies parMap :: Strategy b -> (a -> b) -> [a] -> [b]
00:36:16 <Vorpal> err
00:36:18 <Vorpal> okay
00:36:33 <Vorpal> I see they return different results, but what is the pattern here
00:36:42 <elliott> @help hoogle
00:36:42 <lambdabot> hoogle <expr>. Haskell API Search for either names, or types.
00:36:43 <elliott> @help hoogle+
00:36:43 <lambdabot> hoogle <expr>. Haskell API Search for either names, or types.
00:36:46 <twice11> hoogle+ knows more libraries?
00:36:57 <Vorpal> well, hoogle+ didn't know Prelude
00:36:59 <elliott> looks like @hoogle+ doesn't return stuff @hoogle does
00:37:01 <elliott> maybe it's just "more results"
00:37:02 <Vorpal> hm
00:37:05 <elliott> @hoogle+ a -> a
00:37:05 <lambdabot> Control.Applicative liftA :: Applicative f => (a -> b) -> f a -> f b
00:37:05 <lambdabot> Data.Traversable fmapDefault :: Traversable t => (a -> b) -> t a -> t b
00:37:05 <lambdabot> Prelude fmap :: Functor f => (a -> b) -> f a -> f b
00:37:08 <elliott> @hoogle a -> a
00:37:09 <lambdabot> Prelude id :: a -> a
00:37:09 <lambdabot> Data.Function id :: a -> a
00:37:09 <lambdabot> GHC.Exts breakpoint :: a -> a
00:37:12 <Vorpal> okay
00:37:12 <elliott> @hoogle (<*>)
00:37:13 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
00:37:16 <elliott> *shrugs*
00:37:23 <Vorpal> @hoogle+ (<*>)
00:37:29 <Vorpal> guess not
00:37:44 <twice11> elliot seems to be right with "more results"
00:37:46 <Vorpal> @dice
00:37:46 <lambdabot> unexpected end of input: expecting number
00:37:52 <Vorpal> @dice 10
00:37:52 <lambdabot> 10 => 10
00:37:54 <Vorpal> @dice 10
00:37:54 <lambdabot> 10 => 10
00:37:56 <Vorpal> okay
00:37:58 <Vorpal> what
00:38:01 <Vorpal> @dice 3
00:38:02 <lambdabot> 3 => 3
00:38:04 <Vorpal> @dice 3 4
00:38:04 <lambdabot> 3 4 => 34
00:38:08 <twice11> @dice D3+4
00:38:09 <lambdabot> unexpected "D": expecting number
00:38:22 <Vorpal> I don't think it is dice as in d20
00:38:37 <Vorpal> @dice 2d20
00:38:38 <lambdabot> 2d20 => 33
00:38:42 <Vorpal> err
00:38:43 <Vorpal> @dice 2d20
00:38:43 <lambdabot> 2d20 => 12
00:38:48 <twice11> @dice 1d3+4
00:38:48 <lambdabot> 1d3+4 => 6
00:38:50 <twice11> @dice 1d3+4
00:38:50 <lambdabot> 1d3+4 => 7
00:38:51 <Vorpal> or maybe it is
00:38:51 <twice11> @dice 1d3+4
00:38:51 <lambdabot> 1d3+4 => 5
00:39:01 <Vorpal> @dice d6
00:39:01 <lambdabot> unexpected "d": expecting number
00:39:02 <Vorpal> @dice 1d6
00:39:03 <lambdabot> 1d6 => 1
00:39:04 <Vorpal> @dice 1d6
00:39:04 <lambdabot> 1d6 => 6
00:39:05 <Vorpal> @dice 1d6
00:39:05 <lambdabot> 1d6 => 5
00:39:09 <Vorpal> yes seems so
00:39:09 <twice11> You may not leave off the 1
00:39:13 <Vorpal> twice11: I noticed
00:39:18 <elliott> @dice 1d6 * 2
00:39:18 <lambdabot> unexpected "*": expecting digit, "+" or end
00:39:20 <elliott> @dice 1d6 * 1d9
00:39:20 <lambdabot> unexpected "*": expecting digit, "+" or end
00:39:21 <elliott> Pah.
00:39:35 <Vorpal> elliott: I don't remember seeing that in GURPS
00:39:43 <Vorpal> but it was ages ago I played that
00:39:45 <twice11> I don't know any RPG multiplying dice...
00:39:54 <Vorpal> and D&D I only played through NWN1, and it hides most of that
00:40:10 <elliott> twice11: See, that's an opportunity for innovation!
00:40:25 -!- Sgeo|web has quit (Quit: Page closed).
00:40:32 <Vorpal> @dice 2d20-90
00:40:33 <lambdabot> unexpected "-": expecting digit, "+" or end
00:40:35 <Vorpal> @dice 2d20+90
00:40:35 <lambdabot> 2d20+90 => 121
00:40:45 <Vorpal> wait, only a bonus? No penality?
00:40:54 <Vorpal> penalty*
00:40:57 <Madoka-Kaname> @dice 2d20+ -90
00:40:57 <lambdabot> unexpected "-": expecting number
00:41:13 <Madoka-Kaname> @dice 2d20 + -1 * 90
00:41:13 <lambdabot> unexpected "-": expecting number
00:41:20 <Madoka-Kaname> What!
00:41:21 <Vorpal> @slap lambdabot
00:41:21 <lambdabot> I'd rather not; lambdabot looks rather dangerous.
00:41:24 <Vorpal> @slap lambdabot
00:41:24 <lambdabot> I don't perform such side effects on command!
00:41:29 <Madoka-Kaname> @slap Vorpal
00:41:29 * lambdabot submits Vorpal's email address to a dozen spam lists
00:41:32 <Vorpal> ...
00:41:36 <Vorpal> that is a side effect
00:41:37 <Vorpal> @slap test
00:41:37 <lambdabot> *SMACK*, *SLAM*, take that test!
00:41:45 <Vorpal> @slap ChanServ
00:41:45 * lambdabot secretly deletes ChanServ's source code
00:41:52 <Vorpal> @slap lambdabot
00:41:52 * lambdabot activates her slap-o-matic...
00:41:54 <twice11> @slap some-user-that-doesnt-exist
00:41:54 * lambdabot activates her slap-o-matic...
00:41:55 <Vorpal> well
00:42:01 <Vorpal> @slap lambdabot
00:42:01 * lambdabot will count to five...
00:42:09 <Vorpal> hm
00:42:13 <twice11> @slap some-user-that-doesnt-exist
00:42:13 * lambdabot loves some-user-that-doesnt-exist, so no slapping
00:42:28 <Vorpal> guess it was random that it refused to slap itself
00:42:31 <Vorpal> also:
00:42:34 <Vorpal> @slap Madoka-Kaname
00:42:35 * lambdabot karate-chops Madoka-Kaname into two equally sized halves
00:42:45 <Vorpal> I think we are even now
00:42:50 <twice11> I guess there is a rate limit on slapping.
00:42:57 <Madoka-Kaname> @slap lambdabot
00:42:57 * lambdabot slaps lambdabot with a slab of concrete
00:43:09 <twice11> OK, Vorpal was right.
00:43:12 <Vorpal> @b52s
00:43:12 <lambdabot> Watch out for that piranha. There goes a narwhale. HERE COMES A BIKINI WHALE!
00:43:16 <Vorpal> what
00:43:18 <Vorpal> @b52s
00:43:18 <lambdabot> Watch out for that piranha. There goes a narwhale. HERE COMES A BIKINI WHALE!
00:43:19 <Vorpal> @b52s
00:43:20 <lambdabot> Girl from Ipanema, she goes to Greenland
00:43:24 <Vorpal> okay
00:43:27 <Vorpal> I don't get it
00:43:32 <Vorpal> @help b52s
00:43:33 <lambdabot> b52s. Anyone noticed the b52s sound a lot like zippy?
00:43:37 <elliott> http://www.google.co.uk/search?gcx=c&sourceid=chrome&ie=UTF-8&q=Watch+out+for+that+piranha.+There+goes+a+narwhale.+HERE+COMES+A+BIKINI+WHALE!
00:43:37 <Vorpal> aha
00:43:37 <elliott> http://www.google.co.uk/search?gcx=c&sourceid=chrome&ie=UTF-8&q=Girl+from+Ipanema%2C+she+goes+to+Greenland
00:43:43 <Vorpal> @help yhjulwwiefzojcbxybbruweejw
00:43:43 <lambdabot> V RETURNS!
00:43:46 <Vorpal> right
00:44:08 <Vorpal> elliott: ah lyrics
00:44:12 <Vorpal> from a specific group
00:44:13 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw
00:44:13 <lambdabot> "\"#$%&'()*+,\""
00:44:15 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw
00:44:15 <lambdabot> "\"#$%&'()*+,\""
00:44:16 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw
00:44:17 <lambdabot> Just 'J'
00:44:19 <Madoka-Kaname> なんでやねん
00:44:34 <Vorpal> Madoka-Kaname: what, please speak English
00:44:54 <Madoka-Kaname> wtf
00:44:54 -!- Sgeo|web has joined.
00:45:18 <Vorpal> Madoka-Kaname: Anyway: I think the story behind that was that some old version of the eval feature of lambdabot used an internal variable called v, which sometimes caused issues. Then it was renamed yhjulwwiefzojcbxybbruweejw.
00:45:23 <Vorpal> I don't think it is in use any more
00:45:40 <Vorpal> @palomer
00:45:40 <lambdabot> (_|_)
00:45:41 <Vorpal> @palomer
00:45:42 <lambdabot> Blargh!
00:45:46 <Vorpal> @help palomer
00:45:46 <lambdabot> palomer. Sound a bit like palomer on a good day.
00:45:51 <Madoka-Kaname> Vorpal, and somebody decided to use it?
00:45:52 <Vorpal> whoever that is
00:46:03 <Vorpal> Madoka-Kaname: well, v could be used by mistake quite easily
00:46:10 <Vorpal> Madoka-Kaname: the other one? Not so much
00:46:17 <Madoka-Kaname> Malicious action =p
00:46:32 <twice11> @v
00:46:32 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\"
00:46:38 <Vorpal> Madoka-Kaname: I don't think it ever broke anything as such. It just made it return the wrong answer sometimes.
00:46:38 <twice11> @v
00:46:38 <lambdabot> "\"#$%&'()*+,\""
00:46:55 <twice11> Seems to be identical to the long command...
00:47:02 <Vorpal> seems so yes
00:47:27 <Vorpal> @help messages?
00:47:28 <lambdabot> messages?. Tells you whether you have any messages
00:47:29 <Madoka-Kaname> @let a $ b = b a
00:47:29 <Vorpal> @help messages
00:47:29 <lambdabot> .L.hs:94:17:
00:47:29 <lambdabot> Ambiguous occurrence `$'
00:47:29 <lambdabot> It could refer to either `L....
00:47:29 <lambdabot> messages. Check your messages.
00:47:31 <Vorpal> right
00:47:42 <Madoka-Kaname> > reverse$"abc"
00:47:43 <lambdabot> "cba"
00:47:47 <Madoka-Kaname> @let a $ b = b a
00:47:48 <lambdabot> .L.hs:94:17:
00:47:48 <lambdabot> Ambiguous occurrence `$'
00:47:48 <lambdabot> It could refer to either `L....
00:47:50 <Madoka-Kaname> :<
00:47:59 <Vorpal> > let v = 5 in v = 4
00:48:00 <lambdabot> <no location info>: parse error on input `='
00:48:03 <Vorpal> eh
00:48:06 <Vorpal> too lazy to fix, night
00:48:36 <twice11> >let 1+1=3;3+1=7 in 1+1+1
00:48:43 <twice11> > let 1+1=3;3+1=7 in 1+1+1
00:48:44 <lambdabot> 7
00:48:59 <Vorpal> amazing
00:49:08 <Vorpal> twice11: I wouldn't have expected that
00:49:12 <twice11> ancient haskell joke.
00:49:23 <Vorpal> twice11: how does that even work?
00:49:24 <twice11> Didn't come up with that myself.
00:49:32 <elliott> Vorpal: it rebinds (+) locally
00:49:35 <twice11> You locally define your own addition function.
00:49:38 <Vorpal> oh, smart
00:49:53 <Vorpal> yeah, very nice
00:49:59 <elliott> > let f 1 1 = 3; f 3 1 = 7 in f (f 1 1) 1
00:50:00 <lambdabot> 7
00:50:02 <elliott> f = (+)
00:50:06 <Vorpal> elliott: quite
00:50:12 <Vorpal> elliott: a bit confusing at first :)
00:50:50 <Vorpal> @help kind
00:50:50 <lambdabot> kind <type>. Return the kind of a type
00:50:54 <twice11> @let testtestt = 3
00:50:55 <lambdabot> Defined.
00:50:58 <twice11> > testtestt
00:51:00 <lambdabot> 3
00:51:01 <Vorpal> @kind Maybe
00:51:02 <lambdabot> * -> *
00:51:06 <Vorpal> eh right
00:51:13 <Vorpal> @kind Maybe Integer
00:51:14 <lambdabot> *
00:51:17 <Vorpal> right
00:51:20 <twice11> @undefine testtestt
00:51:43 <twice11> > testtestt
00:51:44 <lambdabot> Not in scope: `testtestt'
00:51:53 <twice11> OK, undefining works, so...
00:52:03 <elliott> twice11: @undefine is a blunt weapon
00:52:05 <elliott> it clears the whole namespace
00:52:28 <twice11> @define x = 4
00:52:33 <twice11> @define y = 5
00:52:39 <twice11> @undefine y
00:52:41 <twice11> > x
00:52:41 <lambdabot> x
00:52:46 <twice11> yeah.
00:52:55 <twice11> But it is good to have such a thing...
00:53:04 <twice11> @let 1+1=3;3+1=7
00:53:05 <lambdabot> Defined.
00:53:10 <twice11> > 1+1+1
00:53:10 <lambdabot> Ambiguous occurrence `+'
00:53:11 <lambdabot> It could refer to either `L.+', defined at <local...
00:53:18 <twice11> @undefine
01:19:34 -!- ive has quit (Ping timeout: 276 seconds).
01:25:13 -!- copumpkin has quit (Ping timeout: 256 seconds).
01:27:50 -!- copumpkin has joined.
01:59:16 <Madoka-Kaname> @hoogle Integer -> [Bool]
01:59:17 <lambdabot> Data.Time.Calendar.Julian isJulianLeapYear :: Integer -> Bool
01:59:17 <lambdabot> Data.Time.Calendar.OrdinalDate isLeapYear :: Integer -> Bool
01:59:17 <lambdabot> Data.Time.Calendar isLeapYear :: Integer -> Bool
01:59:22 <Madoka-Kaname> @hoogle Int -> [Bool]
01:59:22 <lambdabot> Prelude replicate :: Int -> a -> [a]
01:59:22 <lambdabot> Data.List replicate :: Int -> a -> [a]
01:59:22 <lambdabot> Prelude drop :: Int -> [a] -> [a]
02:06:50 <elliott> Madoka-Kaname: /msg
02:08:27 -!- pikhq_ has quit (Ping timeout: 248 seconds).
02:08:33 -!- pikhq has joined.
02:20:13 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
02:36:10 <Madoka-Kaname> > sort [2, 1]
02:36:11 <lambdabot> [1,2]
02:46:14 -!- copumpkin has joined.
02:46:17 -!- copumpkin has quit (Changing host).
02:46:17 -!- copumpkin has joined.
02:52:09 <elliott> pikhq: I'm not sure how to do @'s DHT.
02:53:00 <pikhq> Nor am I.
02:53:18 <elliott> pikhq: Woooooo
02:53:34 <elliott> pikhq: The problem with something like Chord is that who gets to host what data is essentially arbitrary, which is kind of lame
02:53:58 <pikhq> My understanding of DHT is just shy of "MAGIC"
02:54:02 <pikhq> So. :)
02:54:12 -!- Jafet has joined.
03:03:03 <Gregor> OK, what's the best way for a person who hates JACK and Pulse to transfer the audio output of an ALSA application over a network >_>
03:05:02 <elliott> What's wrong with JACK
03:05:07 <elliott> Apart from being impossible to understand
03:05:17 <Gregor> Mainly the impossible-to-understand thing.
03:05:31 <Gregor> Every time I've used it it's taken about three seconds to go from "ahh" to "... wtf?"
03:05:46 <elliott> Gregor: http://alsa.opensrc.org/Network
03:06:08 <Gregor> elliott: That solution doesn't work with my audio card, it can't capture from "mixer" (all output)
03:06:21 <elliott> You could just install Pulse for like three seconds :P
03:06:57 <Jafet> I stopped hating jack after I stopped trying to get it to work
03:08:19 <Gregor> What's the command to make an ALSA program use JACK?
03:11:25 -!- ive has joined.
03:13:10 <pikhq> jackoff (sadly not)
03:13:29 <Gregor> lol
03:29:21 -!- Patashu has quit (Ping timeout: 240 seconds).
04:17:14 -!- zzo38 has joined.
04:21:37 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
04:23:22 -!- CakeProphet has joined.
04:23:54 <CakeProphet> "I need to create a list of all the elements in a binary search tree in reverse order"
04:24:02 <CakeProphet> tree? reverse?
04:24:15 <CakeProphet> this has to be a trick question because it doesn't specify that it's complete.
04:27:34 <zzo38> Early today I wrote some things on paper, I think I could work these, new transformers in Haskell, which are called ProductT and SumT.
04:30:31 <zzo38> data ProductT a b c = ProductT { leftPT :: a c, rightPT :: b c }; Now I think Monoid x => ProductT (Constant x) is a monad transformer.
04:31:35 <zzo38> Do you think this is correct? Or did I make a mistake?
04:33:16 <Gregor> CakeProphet: If it's a SEARCH tree then it's ordered.
04:34:54 <CakeProphet> Gregor: ah, right.
04:34:57 <CakeProphet> that's what she means.
04:35:34 <CakeProphet> Gregor: but then what is "reverse order", uh... descending?
04:36:26 <CakeProphet> I guess an in-order traversal, outputting elements to a stack.
04:38:42 <Gregor> Presumably just the opposite order of whatever the comparison function ordered it as in the first place :P
04:38:47 <Gregor> And you could just do a RTL traversal.
04:39:54 <CakeProphet> Gregor: I don't think she covered RTL but that would work equally well as pushing to a stack (or prepending to a list)
04:40:19 <zzo38> Now I looked, I think the "ProductT" I have is really like the Data.Functor.Product.Product but there is already a Data.Monoid.Product and since I knew about that at first, I gave mine a different name.
04:41:11 <CakeProphet> Gregor: this class is in the nomenclature of C++, thus "list" means linked list.
04:41:19 <CakeProphet> STL/C++
04:45:23 <pikhq> Gregor: Alternately, you could make it a binary search tree linked list.
04:45:33 <pikhq> Because more confusing data structures are wonderful.
04:48:17 <zzo38> For a ring of sets (actually predicates in this case, meaning what is element of a set), is this correct? instance MonoidMinus (Predicate t) where { mpinverse = id; };
04:49:12 * shachaf switches to #esoteric, sees <zzo38> ... MonoidMinus ..., cautionsly switches in the opposite direction.
04:49:45 <shachaf> What's a MonoidMinus? Ah, just a monoid with inverses?
04:49:59 <monqy> did someone say group
04:50:15 <shachaf> (If so, that's usually called a "Group".)
04:50:17 <shachaf> Yes.
04:50:51 <zzo38> shachaf: Yes. Actually, I do have a "Group" class which does that; "MonoidMinus" is for the inverse of the "MonoidPlus", where "MonoidPlus" is what "Monoid" instance is distributive over.
04:51:25 <zzo38> I also have "Semiring" and "Ring" to indicate they follow additional properties.
04:51:40 <shachaf> Wait, what's MonoidPlus?
04:51:54 <zzo38> Now I told you, isn't it?
04:52:24 <shachaf> I'm not sure I understood.
04:52:45 <monqy> "MonoidPlus" is what "Monoid" instance is distributive over.
04:52:51 <zzo38> For example, the MonoidPlus for Product acts like the Monoid for Sum.
04:53:08 <shachaf> monqy: Oh! Why didn't zzo38 say so.
04:53:19 <shachaf> zzo38: What are the MonoidPlus laws?
04:54:20 <zzo38> shachaf: They are the monoid laws and the distributive laws. Semirings have some additional laws; if they follow those laws, make it also instance of Semiring (which has no methods of its own).
04:55:34 <zzo38> Specifically: mpappend mpempty x = x; mpappend x mpempty = x; mpappend x (mpappend y z) = mpappend (mpappend x y) z; mpconcat = foldr mpappend mpempty; mappend x (mpappend y z) = mpappend (mappend x y) (mappend x z); mappend (mpappend y z) x = mpappend (mappend y x) (mappend z x);
04:55:59 <zzo38> Semirings have these additional laws: mappend mpempty x = mpempty; mappend x mpempty = mpempty; mpappend x y = mpappend y x;
05:10:17 -!- Sgeo|web has joined.
05:23:27 <augur> people!
05:23:33 <augur> choose a business card design!
05:23:36 <augur> http://us.moo.com/design-templates/business-cards/pack/black-white.html
05:23:36 <augur> http://us.moo.com/design-templates/business-cards/pack/urban-abstraction.html
05:23:37 <augur> http://us.moo.com/design-templates/business-cards/pack/lets-talk.html
05:23:37 <augur> http://us.moo.com/design-templates/business-cards/pack/chris-keegan-business-cards.html
05:23:39 <augur> http://us.moo.com/design-templates/business-cards/pack/perfect-paisley.html
05:23:41 <augur> http://us.moo.com/design-templates/business-cards/pack/luminous-nature.html
05:23:49 <elliott> no
05:25:16 <Gregor> augur: Observation: None of the "perfect paisley" business cards are paisley.
05:25:28 <augur> Gregor: i know
05:25:32 <augur> people dont know what paisley is
05:25:37 <augur> c'est la vie
05:31:43 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
05:36:29 <zzo38> I have never used business cards designs. I just used TeX to lay out text and logos on the card. All that we had was a laser printer anyways (although here and now, I have a inkjet printer)
05:38:30 <CakeProphet> augur: chris keegan, black and white, or urban abstraction
05:38:35 <CakeProphet> roughly in order of personal preference.
05:40:54 <augur> ok
06:02:16 -!- copumpkin has changed nick to OracleOfHalting.
06:08:57 -!- MDude has changed nick to MSleep.
06:09:48 <zzo38> How do you change the Godel sentences ("This is unprovable") into a computer program that halts if and only if the statement is true, such that waiting for the program to halt, and that if it does halt that is considered a valid proof?
06:10:45 <Jafet> Search for a proof and disproof at the same time
06:11:13 <Jafet> I didn't know what your question was so I answered the question that I liked
06:12:15 <zzo38> That is what the Tortoise did; and found both at the same time. (Of course it is the dialogue made up by Hofstadter, though. I doubt it can happen.)
06:15:18 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:33:46 <elliott> Hey monqy, can you promise to make a brainfuck derivative if I'm not offline in the next five minutes?
06:33:51 <elliott> A really awful one.
06:33:57 <elliott> And delegate the brickbraining to me.
06:34:05 <elliott> So that it happens to me instead of you.
06:35:50 <elliott> OK, CakeProphet: You do it instead.
06:38:53 -!- elliott has quit (Quit: Leaving).
06:41:12 -!- zzo38 has quit (Quit: I will sleep.).
06:53:19 -!- ive has quit (Ping timeout: 256 seconds).
07:10:28 -!- OracleOfHalting has changed nick to copumpkin.
07:13:56 -!- GreaseMonkey has quit (Quit: The Other Game).
07:18:54 -!- sebbu2 has joined.
07:18:54 -!- sebbu2 has quit (Changing host).
07:18:54 -!- sebbu2 has joined.
07:19:16 -!- ive has joined.
07:20:44 -!- sebbu has quit (Ping timeout: 258 seconds).
07:31:17 -!- ive has quit (Quit: leaving).
08:04:50 -!- augur has quit (Ping timeout: 240 seconds).
08:08:58 -!- augur has joined.
08:14:17 -!- Jafet has quit (Quit: Leaving.).
08:24:26 -!- Zuu has quit (Read error: Connection reset by peer).
08:28:56 -!- Zuu has joined.
08:31:17 -!- derrik has joined.
08:59:31 -!- monqy has quit (Quit: hello).
09:19:04 -!- TeruFSX_ has quit (Read error: Connection reset by peer).
09:49:46 -!- Jafet has joined.
09:50:02 -!- hagb4rd has quit (Ping timeout: 240 seconds).
10:31:39 -!- oerjan has joined.
12:10:17 -!- derrik has quit (Quit: left).
13:06:32 -!- pikhq has quit (Ping timeout: 245 seconds).
13:06:42 -!- pikhq has joined.
13:08:35 -!- Jafet has quit (Quit: Leaving.).
13:50:24 -!- oerjan has quit (Quit: leaving).
14:16:48 -!- jack has joined.
14:17:10 -!- jack has left.
14:48:11 -!- fizzie has quit (Ping timeout: 276 seconds).
14:49:09 -!- sllide has joined.
14:52:15 -!- fizzie has joined.
14:54:43 -!- boily has joined.
14:57:44 -!- aloril has quit (Ping timeout: 260 seconds).
15:09:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:14:35 -!- aloril has joined.
15:18:12 -!- Phantom_Hoover has joined.
15:23:14 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
15:23:37 -!- Phantom_Hoover has joined.
15:37:27 -!- boily has quit (Ping timeout: 258 seconds).
15:43:27 <Phantom_Hoover> WTF, Peter Serafinowicz was the voice of Darth Maul?
15:43:34 <Phantom_Hoover> His role in space is now 50 times funnier.
15:44:42 -!- copumpkin has joined.
15:52:53 -!- boily has joined.
15:59:08 -!- tswebb has joined.
15:59:18 <tswebb> Hey guys, mind if I think here out loud? Great.
16:00:07 <Phantom_Hoover> Oh dear.
16:00:18 -!- augur has quit (Remote host closed the connection).
16:00:29 <tswebb> Suppose you've got an exponentiation b^a, where b and a are complex numbers. You can separate b into a positive part and a unitary part, and a into a real part and an imaginary part. Taking a positive number to any complex power is easy, so we only have to worry about the unitary part of the base.
16:01:32 <tswebb> Taking the unitary part to a real power is easy *if* the unitary part is 1 or the power is an integer. Otherwise, lasciate ogne speranza. So the only question is what happens when you take a unitary thing to an imaginary power.
16:04:56 <tswebb> But wait, every unitary number is of the form e^(i t). So the unitary thingy is simply of the form e^(i t a), so it's all good... well, no, t is actually an angle, so a needs to be something you can multiply angles by. An integer, always.
16:05:17 <Phantom_Hoover> Zuh?
16:05:30 <Phantom_Hoover> The concept of multiplication of reals is new to you?
16:05:32 <tswebb> So b^a just plain doesn't make entirely much sense unless b is positive or a is an integer.
16:05:35 <tswebb> Thanks, everyone!
16:05:56 <tswebb> Phantom_Hoover: what's half of the angle whose sine is 0 and whose cosine is 1?
16:06:09 <tswebb> You'll find that there are entirely too many correct answers.
16:06:29 <tswebb> Worse, what's phi times that angle?
16:06:31 <Phantom_Hoover> No, I won't.
16:06:57 <tswebb> Two is too many, and I refuse to throw out just one of them!
16:07:26 <Phantom_Hoover> I'll find that general exponentiation obviously isn't a map from C → C.
16:07:59 <tswebb> Isn't that what I said?
16:08:26 <Phantom_Hoover> You took a while to arrive at that conclusion.
16:08:36 * tswebb nods.
16:10:33 <Phantom_Hoover> Erm, C → C → C.
16:14:58 <tswebb> It's more like a map ((R+, C) u (C / {0}, Z) u (C, N_0)) -> C.
16:15:34 <Phantom_Hoover> Or, alternately, C → C → P(C).
16:21:01 <tswebb> Predicate on C?
16:25:45 <Phantom_Hoover> Zuh?
16:27:31 <tswebb> What do you mean by P(C)?
16:27:37 <Phantom_Hoover> Powerset?
16:27:38 <tswebb> Oh. The power set of C.
16:31:06 -!- augur has joined.
16:31:53 -!- Zuu has quit (Ping timeout: 244 seconds).
16:32:03 -!- MSleep has changed nick to MDude.
16:32:24 -!- elliott has joined.
16:32:56 <CakeProphet> > read "1337" :: Int
16:32:56 <lambdabot> 1337
16:33:00 <CakeProphet> > read "1337" :: Float
16:33:00 <lambdabot> 1337.0
16:33:05 <CakeProphet> type directed name resolution.
16:33:50 <Phantom_Hoover> Huh?
16:34:01 <CakeProphet> oh, nothing. O:)
16:34:08 <elliott> 15:43:27: <Phantom_Hoover> WTF, Peter Serafinowicz was the voice of Darth Maul?
16:34:11 <elliott> Phantom_Hoover: I KNOW RIGHT?
16:34:20 <Phantom_Hoover> PETER WHY
16:34:44 <elliott> 15:43:34: <Phantom_Hoover> His role in space is now 50 times funnier.
16:34:44 <elliott> Role in space(tm)
16:34:56 <Phantom_Hoover> Oh god, I did.
16:35:11 <elliott> What.
16:35:34 <Phantom_Hoover> Say 'space' rather than 'Spaced'.
16:35:39 <elliott> Phantom_Hoover: BTW who says P(S) for powerset, I am hereby not friends with anyone who doesn't either use fancy LaTeX for it or 2^S.
16:35:46 * elliott set theory notation police
16:36:18 <Phantom_Hoover> ur plice burality
16:36:47 <elliott> burality
16:37:48 <Phantom_Hoover> bareility?
16:38:24 <elliott> Bulity.
16:40:19 <tswebb> Cool people write C -> Prop.
17:10:29 -!- derrik has joined.
17:21:46 -!- monqy has joined.
17:22:34 <elliott> hi monqy.
17:22:44 <monqy> hi
17:23:58 <elliott> moqny
17:24:50 <monqy> hi
17:25:09 <elliott> hi
17:25:19 <tswebb> hi
17:25:19 <derrik> hi
17:25:28 <tswebb> elliott
17:25:34 <elliott> waht
17:25:38 <derrik> :|
17:25:39 <tswebb> hi
17:25:43 <monqy> hi
17:25:44 <elliott> ih
17:25:48 <tswebb> :|
17:25:52 <tswebb> bye
17:25:52 <monqy> :|
17:25:53 <elliott> q
17:25:55 -!- tswebb has quit (Quit: Page closed).
17:26:03 <Phantom_Hoover> We need to do something about these malfunctioning emote bots.
17:26:17 <monqy> hi
17:26:25 <Phantom_Hoover> Motion that derrik be kicked and he and tiffany banned, effective immediately.
17:28:21 <derrik> hi Phantom_Hoover
17:28:55 <Phantom_Hoover> This one is even more vapid than tiffany.
17:29:22 <monqy> o~o
17:29:25 <elliott> Phantom_Hoover: You don't understand, he's a professional teacher.
17:29:32 <monqy> at least o~o is exciting
17:29:40 <monqy> enthralling
17:29:52 <monqy> an true adventure
17:33:35 <Phantom_Hoover> elliott, I...
17:34:10 <elliott> Phantom_Hoover: Speechlessness. The hallmark of a thick adult!
17:42:55 -!- ais523 has joined.
17:48:09 <elliott> hi ais523
17:48:16 <ais523> hi elliott
17:51:47 <quintopia> hi ais523
17:51:56 <ais523> hi quintopia
17:52:22 <elliott> hi Phantom_Hoover
17:52:36 <quintopia> hi elliott
17:52:46 <elliott> hi yiyus
17:53:11 <quintopia> hi <insert full channel ping here>
17:53:48 <elliott> i would never ping ais523 monqy derrik elliott augur boily copumpkin Phantom_Hoover aloril fizzie sllide pikhq sebbu2 CakeProphet mtve variable FireFly chickenzilla Madoka-Kaname Vorpal yorick atehwa kmc mycroftiv Nisstyre olsner MDude shachaf Deewiant EgoBot quintopia Slereah_ Zwaarddijk BeholdMyGlory myndzi yiyus SimonRC rodgort ineiros_ tswett clog jix Gregor glogbot Zetro bd_ lambdabot coppro lifth
17:53:49 <elliott> rasiir HackEgo twice11 all at once
17:53:53 <monqy> hi
17:53:56 <elliott> oh poor lifthrasiir missed out on that :(
17:53:58 <twice11> pong
17:54:01 <elliott> I'm going to get kicked now
17:54:13 <shachaf> elliott: Come on.
17:54:16 * rodgort stabs
17:54:18 <shachaf> I heard u mad yesterday.
17:54:18 <lifthrasiir> pong
17:54:20 <monqy> i like how you put your own name in there
17:54:29 <sllide> elliott, exactly
17:54:30 <shachaf> Even ddarius concurred that u mad.
17:54:33 <Vorpal> elliott: well you didn't lie, but only be cause it was split onto multiple lines :P
17:54:41 <Vorpal> and in the middle of a name
17:54:41 <elliott> Nothing quite like flood of hatred that comes after a channel ping :')
17:54:51 <monqy> it's magical
17:54:55 <rodgort> nothing like a good old stabbing in the face
17:54:59 <elliott> that's also magical
17:55:26 <Gregor> NYAN NYAN NYANNYAN NYAN NYANYANYAN NYAN NYAN, NYAN NYAN NYANNYAN NYAN NYANYANYANYANYANYANYANYAN
17:55:34 * sebbu2 slaps elliott around a bit with a very large trout
17:55:38 -!- sebbu2 has changed nick to sebbu.
17:55:43 * shachaf decides not to feed the troll.
17:55:45 <elliott> sebbu: Oh my god, it's 2001!
17:55:46 <monqy> Gregor..................
17:55:53 <monqy> sebbu..................
17:55:59 <monqy> thanks shachaf
17:56:06 <monqy> for not being them
17:56:11 <twice11> Gregor: ====Oö ?
17:56:15 <elliott> I'm also not Gregor or sebbu.
17:56:18 <monqy> thanks elliott
17:56:23 <elliott> Thanks monqy.
17:56:23 <monqy> thanks twice11
17:56:34 <elliott> monqy is going to ping everyone but Gregor and sebbu in thanks.
17:56:37 <monqy> thanks ineiros_ thanks derrik thanks augur thanks SimonRC thanks Zetro
17:56:38 <monqy> yes
17:56:42 <monqy> you
17:56:44 <monqy> spoiled it
17:56:46 <elliott> sory
17:56:48 <monqy> now i can't ping everyone
17:56:55 <elliott> you can, it'll just be unfunny and meaningless
17:56:58 <elliott> which is the best way to do it
17:57:00 <monqy> crys
17:57:06 <sebbu> a shun on all massive highlighters would be good :)
17:57:28 * derrik does /clear
17:57:30 <elliott> sebbu: This channel NEEDS ME.
17:57:39 -!- Gregor has set topic: Official NYAN support channel for Web o' Flies | Also official channel of VelNYANta | VelNYANta: Why NYAN, when you can VelNYANta! | NYAN http://codu.org/logs/_esoteric/#NYAN.
17:57:53 -!- elliott has set topic: no | http://codu.org/logs/_esoteric/.
17:57:53 <monqy> nooo
17:57:56 <monqy> ysss
17:57:57 <monqy> e
17:57:57 <Gregor> X-D
17:58:03 -!- Gregor has set topic: nyano | http://codu.org/logs/_esoteric/.
17:58:06 <ais523> elliott: quick reactions :)
17:58:08 -!- monqy has set topic: yes | http://codu.org/logs/_esoteric/.
17:58:09 -!- elliott has set topic: http://codu.org/logs/_esoteric/.
17:58:17 <elliott> codu more like no-do
17:58:22 <elliott> ais523: ?
17:58:39 -!- Gregor has set topic: This channel can never truly escape THE CAT | http://codu.org/logs/_esoteric/.
17:58:40 <ais523> elliott: to Gregor's topic change
17:58:49 -!- monqy has set topic: This channel can never truly escape bad topics | http://codu.org/logs/_esoteric/.
17:58:52 <elliott> ais523: you get used to it after a few days of asiekierka
17:59:01 -!- ais523 has set topic: http://codu.org/logs/_esoteric.
17:59:03 <monqy> sad truths topic
17:59:04 -!- ChanServ has set channel mode: +t.
17:59:05 <monqy> rip
17:59:07 <monqy> rip
17:59:08 <elliott> ais523: you missed the slash
17:59:15 <ais523> where?
17:59:15 <elliott> and also abused power :'(
17:59:20 <elliott> ais523: i'm not telling you!
17:59:28 <ais523> oh, trailing slash
17:59:35 <ais523> the link works anyway, so
17:59:44 <ais523> and it's just temporary until people calm down a bit with the topic screwing
17:59:44 <elliott> ais523: it redirects, that's putting load on Gregor's servers
17:59:53 <elliott> Gregor: ais523 is abusing his op powers to DDoS you :'(
18:00:05 -!- ChanServ has set topic: http://codu.org/logs/_esoteric/.
18:00:06 <ais523> better?
18:00:18 <elliott> hmm, all Gregor has to do is move the logs and you're obligated to change the topic
18:00:43 <Gregor> ATTENTION:
18:00:58 <ais523> elliott: don't say that, he'll move them somewhere obnoxious
18:01:00 <Gregor> Channel logs will now be moved to http://codu.org/nyannyannyannyannyannyannyannyannyannyannyanlogs/_esoteric/
18:01:05 <elliott> ais523: exactly
18:01:20 <elliott> Gregor: If you don't do that I'll be really disappointed.
18:01:24 <ais523> elliott: but don't you not want an obnoxious topic
18:01:25 <monqy> somehow i figured the new logs would have "nyan" in them, but i did not expect that much
18:01:28 <elliott> I think you can keep the same programs working just with ln -s
18:01:33 <ais523> note that I could legally retaliate by kicking glogbot
18:01:36 -!- CakeProphet has quit (Ping timeout: 258 seconds).
18:01:37 <ais523> and that would be bad for everyone
18:01:38 <elliott> ais523: Yeah, but this is a bargaining chip to get -t :P
18:01:50 <Gregor> elliott: My laziness is greater than my nyanniness.
18:01:53 <ais523> you wouldn't want me to kick glogbot, would you?
18:02:10 <ais523> the +t is only temporary, just like you do a temporary +m to people widely spamming msgs in the channel
18:02:13 <elliott> ais523: You'd have to link to the clog logs instead, including the old zip of 'em
18:02:18 -!- ChanServ has set channel mode: +o ais523.
18:02:23 -!- ais523 has set channel mode: -t.
18:02:25 -!- ais523 has set channel mode: -o ais523.
18:02:32 <elliott> Darn, now the fun is over. :'(
18:03:20 -!- Gregor has set topic: #esoteric is Not Your Average Network chat channel! | http://codu.org/logs/_esoteric/.
18:03:44 <monqy> :(
18:03:48 -!- derrik has quit (Quit: back soon).
18:03:53 <monqy> bye derrik
18:04:13 <Gregor> Goodbye derrik, we hardly knew ye (as ye never talked)
18:04:16 <ais523> Gregor: OK, I'll agree with that compromise
18:04:43 <elliott> Gregor: oh no, he did
18:04:55 <elliott> Gregor: just hope we don't get to know him any more
18:05:42 -!- Darth_Cliche has joined.
18:09:30 -!- derrik has joined.
18:10:04 <elliott> That was way too soon.
18:10:45 <derrik> ty elliott
18:10:54 <ais523> hi relevant peole
18:11:06 <ais523> I don't think I've talked to derrik ever, but he/she was here earlier
18:11:21 <elliott> ais523: oh, you missed out on that day?
18:11:26 <elliott> you're one of the lucky ones :)
18:11:59 <derrik> :)
18:16:04 -!- ais523_ has joined.
18:16:38 <elliott> rip ais523
18:16:48 -!- ais523 has quit (Disconnected by services).
18:16:50 -!- ais523_ has changed nick to ais523.
18:17:08 <ais523> first time the computer's suddenly cut out during updates
18:17:19 <ais523> let me see if it's in a sane state after that; it seemed to boot up OK
18:17:35 <elliott> ais523: if you used Kitten, you'd have atomic upgrades... :)
18:17:54 <ais523> <synaptic> E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
18:18:05 <ais523> hmm, I wonder why it can't do that automatically?
18:18:24 <elliott> I think it can end up doing debconf stuff
18:18:32 <elliott> or whatever
18:18:38 <ais523> it's a GUI package manager, it should be able to handle it itself
18:18:40 <elliott> anyway, none of that with kitten, either :-P
18:19:36 <ais523> heh, seems it had almost finished
18:19:37 -!- Phantom_Hoover has quit (Ping timeout: 258 seconds).
18:19:46 <ais523> the configure took about half a second, then it was fully up-to-date
18:20:45 <elliott> ais523: regular reminder that this problem doesn't even exist with kitten!!! kitten: the best.
18:21:21 <ais523> elliott: in Kitten, you'd still need to GC the partial update and do the update properly
18:22:00 <elliott> ais523: you're just stringing random words together and hoping they come out correct, right? :P
18:22:25 <ais523> I'm trying to figure out what would happen if the power was cut while Kitten was in the middle of writing a file
18:22:29 <ais523> during a package update
18:22:53 <ais523> the file it was writing wouldn't be used, presumably, because it wouldn't be recorded as being in the unionfslikefs as something to mount
18:23:03 <ais523> but it'd still exist, and you wouldn't want it to hang around forever
18:23:15 <elliott> ais523: I'll explain, to stop you making up nonsense :P
18:23:15 <ais523> and you also presumably still want it, so you'd have to redo the update
18:24:05 -!- zzo38 has joined.
18:24:17 <elliott> ais523: You'd have to define "package update". The upgrade process in Kitten looks like this: Figure out which packages have new versions. Install them -- likely by downloading a binary tarball and extracting it -- into the store. That's guaranteed not to "overwrite" anything because the store is immutable, hash-based, etc. etc. etc.; the old versions of the packages are still there. Once all that is d
18:24:17 <elliott> one, then /atomically/ switch over the user environment to use the new versions of all the upgraded packages.
18:24:29 <elliott> The old versions then become garbage (assuming nothing else -- e.g. another user -- is referencing them), and can be GC'd.
18:24:49 <ais523> elliott: that's the operation I was describing as an update
18:24:58 <elliott> ais523: Yes, but it's composed of multiple operations.
18:25:08 <elliott> The tarballs are extracted to a temporary directory and then moved into the store, so that's atomic too.
18:25:17 <elliott> Basically, there is no way for a crash during a Kitten upgrade to produce an inconsistent state at all.
18:25:19 <ais523> oh, using atomic mv?
18:25:22 <elliott> Yes.
18:25:23 <ais523> it wouldn't produce an inconsistent state
18:25:32 <elliott> If it failed half-way through installing the packages, you'd just re-run it, and it'd do the rest.
18:25:38 <ais523> I was thinking about if the temporary directory was half-written
18:25:42 <elliott> It might do one of them again, if it failed while unpacking it.
18:25:44 <ais523> but I suppose it regularly gets cleaned away anyway
18:26:01 <elliott> ais523: Well, it's per-package.
18:26:23 <elliott> So it's like a few hundred megs waste at most, and it'll probably get cleaned up as soon as the package manager notices it has some junk temporary files lying around.
18:26:38 <elliott> (Won't unpack to /tmp: rename(2) is not atomic across filesystems!)
18:26:46 <elliott> (And also you might not have enough RAM to store the package, anyway.)
18:27:19 <zzo38> That way of garbage collecting the old versions would work in case some user or program requires the old version for some reason. Or in case you want to tell it to keep the old one temporarily in case the new one is broken and you want to revert some programs to the old one!
18:27:22 <ais523> rename(2) works across filesystems at all?
18:27:36 <ais523> also, aren't tmpfses capable of swapping to disk if required?
18:27:36 <elliott> ais523: well, probably not, but mv does
18:27:55 <elliott> zzo38: Yep! (Packages that depend on older versions will keep referencing them and work fine even without doing anything special.)
18:27:57 <ais523> if they weren't, there'd be no difference between a tmpfs and shmfs
18:28:10 <elliott> (Of course you have to manually select an old version to run programs that depend on an older version that aren't part of the package manager.)
18:28:11 <ais523> elliott: how would the GC determine which packages were being referenced?
18:28:22 <elliott> ais523: mark-and-sweep
18:28:27 <ais523> how does it do the marking?
18:28:39 <ais523> it seems nontrivial to tell whether a package is in use or not
18:28:46 <elliott> ais523: Well, the user profiles (sets of packages users have installed) are the roots.
18:28:55 <elliott> ais523: Then you just do a regular conservative scan from there.
18:29:00 <ais523> oh, it's at the package level?
18:29:09 <elliott> ais523: Any package that references another will contain its store path.
18:29:12 <ais523> what happens if a user uninstalls a package while using it?
18:29:18 <ais523> e.g. running an executable from it?
18:29:19 <elliott> ais523: (this breaks if something stores its library paths in UTF-16, or whatever)
18:29:22 <elliott> (but nobody does that)
18:29:31 -!- sebbu2 has joined.
18:29:31 -!- sebbu2 has quit (Changing host).
18:29:31 -!- sebbu2 has joined.
18:29:34 <elliott> (that's like memfrobbing a pointer when using boehm gc)
18:29:45 <elliott> err, I forget whether memfrob is reversible
18:29:50 <elliott> ais523: define uninstall...
18:29:54 <elliott> ais523: presumably you mean "removing from the environment"
18:30:04 <ais523> elliott: removes the package from the list of packages that they state they want
18:30:22 <elliott> ais523: Well, all the package's references to itself will use absolute store path locations.
18:30:32 <elliott> And removing a package from the environment doesn't remove it from the store, only GCing does that.
18:30:35 <elliott> But...
18:30:36 <elliott> Don't do that :P
18:30:45 <ais523> I was fearing the answer was "don't do that"
18:30:51 -!- sebbu has quit (Ping timeout: 240 seconds).
18:30:56 <elliott> ais523: it would be easy enough for the package manager to figure out whether you're using it
18:30:57 <ais523> the package isn't in any user's lists, so it's risking being GCed
18:31:05 <elliott> and refuse to let you remove it
18:31:06 <ais523> this is more important for old versions, though
18:31:11 <elliott> but I'm pretty sure it's obvious
18:31:17 <elliott> ais523: well, yes, GC doesn't just run willy-nilly for a reason
18:31:21 <elliott> ais523: you GC when you're low on disk
18:31:31 <elliott> ais523: you can add packages manually to the set of gc roots, though
18:31:35 <ais523> "uninstalling" a package while using it is a bit weird; but upgrading it while using it is quite common
18:31:37 <elliott> if you want to protect it while not referencing it from any environments
18:32:00 <elliott> ais523: I thought you meant doing it while GCing
18:32:08 <elliott> certainly, things won't break if you upgrade without rebooting
18:32:20 <ais523> elliott: I mean, if the GC runs after doing that
18:32:25 <elliott> ais523: the gc doesn't just "run"
18:32:28 <elliott> the system administrator has to run it
18:32:34 <ais523> well, when's a sensible time to run it?
18:32:38 <ais523> the only time I can think of is during boot
18:32:40 <elliott> ais523: when you're running out of disk for the store
18:32:51 <elliott> or just want to reclaim some free space
18:32:53 <ais523> elliott: but people might have just upgraded a package they're using when that happens
18:33:02 <elliott> ais523: you'd reboot at the same time to get kernel upgrades
18:33:13 <elliott> (say ksplice and I'll ragequit)
18:33:24 <ais523> you hate Oracle that much? :P
18:33:24 <elliott> it's a periodic maintanence task, not anything that needs to be run with regularity
18:33:32 <elliott> ais523: heh
18:33:48 <elliott> wait, hmm
18:33:48 <ais523> it might make most sense to run it on every boot
18:33:58 <elliott> ais523: actually, no, there would be no risk
18:34:08 <elliott> ais523: because you keep old user environments
18:34:15 <elliott> those have to be deleted manually to stop them referencing old packages
18:34:29 <ais523> I don't like the repeated "manual" here
18:34:41 <ais523> it'd make most sense to delete them when the user had no logins
18:34:47 <elliott> ais523: so basically, if you upgraded ten times without rebooting, then the sysadmin said "delete every user environment older than the last 10 and gc"
18:34:51 <elliott> then things would break
18:34:55 <ais523> just like it makes sense to GC packages on boot
18:35:01 <ais523> elliott: right
18:35:02 <elliott> ais523: no, that doesn't make sense at all
18:35:05 <elliott> because you can rollback on boot
18:35:08 <ais523> I don't see why the sysadmin needs to make potentially incorrect decisions
18:35:13 <elliott> that's one of the major advantages of a purely functional package manager
18:35:20 <elliott> you can select an old profile from the GRUB menu to roll back to it
18:35:23 <elliott> in case you break something
18:35:30 <ais523> elliott: right; I think that would count as a reference for the GC
18:35:37 <elliott> the sysadmin doesn't make potentially incorrect decisions, you just don't understand the model :)
18:35:43 <ais523> GC things that have fallen off the end of the rollback menu on boot
18:35:54 <elliott> ais523: they don't fall off
18:35:59 <elliott> it's a matter of system policy when you clean them up
18:36:09 -!- Phantom_Hoover has joined.
18:36:11 <ais523> well, falling off is a sensible system policy, right?
18:36:14 <elliott> it makes sense to delete all but the last 10 for each user before GCing
18:36:18 -!- Phantom_Hoover has quit (Changing host).
18:36:18 -!- Phantom_Hoover has joined.
18:36:25 <elliott> or similar
18:36:34 <ais523> what I'm saying is, it's OK to have the rules customizable, even to entirely manual
18:36:37 <ais523> but entirely manual is not a sane default
18:36:45 <elliott> ais523: let me tell you about cron!
18:36:52 <elliott> it is not the package manager's job to run itself periodically
18:36:59 <elliott> that is a matter of system policy and is why we have generic scheduling tools
18:37:04 <ais523> I'm talking about the system as a whole, not the package manager itself
18:37:11 <elliott> for desktop users, it /does/ make sense to have it be manual
18:37:16 <ais523> putting it in the crontab would be a sensible default, for instance
18:37:21 <elliott> because there is no reason to delete things until you actually need more space
18:37:30 <elliott> which is not something a computer can determine; you need more space when you want more space
18:37:57 <ais523> elliott: you need more space when you want more space, indeed; and if you want more space, you don't want to manually have to run a bunch of "free up space" things
18:38:07 <ais523> you want them to already have happened by the time you want more space
18:38:18 <ais523> so that you don't have to think "oh, I want to create a file, let me run the spacecleaner first"
18:38:23 <ais523> you just think "I want to create a file"
18:38:34 <elliott> ais523: this is why people don't consider 4 gigabytes a large disk
18:38:40 <ais523> the extreme version of your opinion would be a system that always used your entire disk, all the time
18:38:51 <ais523> and whenever you wanted to create a file, you requested it to purge a bit of space to create the file in
18:38:53 <ais523> actually, hmm
18:39:03 <ais523> why not hook the spacecleaning things into the open/close/write syscalls, in that case?
18:39:14 <ais523> as long as it's automated, it's actually a reasonable thing to do
18:39:15 <elliott> if I hadn't given up on this by the last message, I just did
18:40:04 <elliott> ais523: the system does not delete the user's data without asking or being told to. simple as that
18:40:16 <ais523> oh well, when you have an opinion as insane as this one, you generally realise why it's wrong after a few months of actually using it
18:40:24 <ais523> so I suppose there's no real point in trying to convince you now
18:40:51 <elliott> ais523: the NixOS guys don't seem to have any problem with it after 7 years of production use
18:41:11 -!- zzo38 has quit (Remote host closed the connection).
18:41:21 <elliott> the problem is that you want a system that nobody else wants
18:41:27 <ais523> I doubt their GC is entirely manual
18:41:27 <Vorpal> hm
18:41:29 <elliott> yes, it is
18:41:43 <Vorpal> elliott: what is the thing ais523 is suggesting here?
18:41:55 <elliott> Vorpal: a bad idea; you can read the logs if you want more detail
18:42:18 <elliott> "You should periodically run the Nix garbage collector to get rid of unused packages, since uninstalls or upgrades don't actually delete them:
18:42:18 <elliott> $ nix-collect-garbage -d"
18:42:19 <elliott> [...]
18:42:21 <elliott> "Of course, since disk space is not infinite, unused packages should be removed at some point. You can do this by running the Nix garbage collector. It will remove from the Nix store any package not used (directly or indirectly) by any generation of any profile.
18:42:21 <elliott> Note however that as long as old generations reference a package, it will not be deleted. After all, we wouldn’t be able to do a rollback otherwise. So in order for garbage collection to be effective, you should also delete (some) old generations. Of course, this should only be done if you are certain that you will not need to roll back."
18:42:58 <ais523> Vorpal: that if a system requires a GC, then the GC should actually run when needed, rather than making the user have to remember it exists
18:43:14 <elliott> Vorpal: or you could get the misleading version straight from him :)
18:43:18 <Vorpal> ais523: from a quick glance at the scrollback, it seems you want package garbage collection to be automatic. Even "normal" distros doesn't automatically remove downloaded files. You need something like apt-get clean or pacman -Sc for that
18:43:23 <elliott> ais523: hope i've cleared up your doubts
18:43:24 <Vorpal> why should it be any different here
18:43:32 <Vorpal> and if you want it, just put it in the crontab
18:43:48 <ais523> Vorpal: they put them in /var/cache, whose entire purpose for existence is that it can be automatically cleaned at any time
18:43:59 <elliott> Vorpal: ais523 wants even worse than that, he wants /automatic scheduled deletion/ of old package configurations in the crontab by default
18:44:05 <Vorpal> ais523: I have not seen that happen though
18:44:15 <Vorpal> ais523: show me where that is actually done automatically
18:44:18 <elliott> ais523: /var/cache is meant to be cleaned manually
18:44:21 <elliott> as opposed to /tmp
18:44:24 <elliott> that's why it's not called /tmp
18:44:49 <ais523> elliott: err? /tmp is cleaned on boot, that doesn't make sense with the intended purpose /var/cache
18:44:53 <ais523> *intended purpose of
18:44:59 <ais523> which should be cleaned only when the disk is getting full
18:45:10 <Vorpal> it is of course possible ubuntu cleans it automatically but I don't think so
18:45:14 <ais523> I'd be surprised if distros didn't clean the older half of it when the disk was getting near full
18:45:31 <Vorpal> ais523: pretty sure no distro does that currently
18:45:53 <Vorpal> and automatic removing of old configs is insane
18:45:58 <ais523> Vorpal: I know that Windows does, when the disk space becomes full
18:46:07 <Vorpal> that is not a linux distro
18:46:12 <elliott> shocking revelation: packages don't take up most of the disk, user files like audio/video do
18:46:16 <Vorpal> you said distro above, define your meaning of distro
18:46:17 <elliott> /images
18:46:20 <ais523> not completely automatically, but it lists a bunch of things that would make sense to delete, in order of how likely they are to be safe to delete
18:46:29 <Vorpal> ais523: I would like to point out that ubuntu doesn't delete old kernels after you installed a newer one
18:46:32 <Vorpal> you have to do that by hand
18:47:29 <Vorpal> ais523: how is this any different?
18:47:34 <ais523> Vorpal: right, and that confused me, I don't see why it'd need more than 3 or 4 or so
18:47:39 <Vorpal> ...
18:47:44 <Vorpal> it is up to the user?
18:47:57 <ais523> I see no reason why it shouldn't be configurable
18:48:03 <ais523> but infinity isn't a sane default for that
18:48:17 <ais523> whereas, say, for bash_history, the default is much too low, and infinity would be a saner default there
18:48:25 <ais523> as looking arbitrarily far back in your bash history is actually useful
18:48:41 <ais523> whereas old kernels are likely to be around elsewhere online, so can always be redownloaded
18:49:32 <Vorpal> ais523: I actually have multiple kernels on my laptop, I use a newer one that I have graphical issues with (because X isn't new enough) but where they improved various things for battery time a lot when I need that. Then I use the standard distro kernel when I know I will be on AC for quite a while
18:49:35 <Vorpal> like over weekends
18:49:50 <Vorpal> anyway you could just write your own cron job for these misfeatures
18:49:53 <Vorpal> it wouldn't be hard
18:50:02 <ais523> Vorpal: in that case, wouldn't you just mark both kernels as desired versions to keep around by hand?
18:50:13 -!- derdon has joined.
18:50:21 <Vorpal> ais523: sure, but you just added complexity to the solution
18:50:21 <ais523> otherwise, say, when you went and transferred your list of packages onto a different physical computer, you wouldn't have the old versions you were using
18:50:48 <ais523> no I didn't; that complexity exists anyway both in elliott's distro/Nix, and (if you want to be sane) in your case too
18:50:58 <ais523> you have a list of installed packages, right?
18:50:59 <Vorpal> ais523: the newer kernel version I use was basically manually backported and have non-standard options. I would have to compile a new kernel for another system anyway
18:51:12 <ais523> why would you want the list to be different from the set of packages that are actually installed?
18:51:15 <Vorpal> <ais523> whereas, say, for bash_history, the default is much too low, and infinity would be a saner default there <-- not really, that would grow forever much quicker than package history
18:51:34 <Vorpal> <ais523> why would you want the list to be different from the set of packages that are actually installed? <-- ... where did I claim that?
18:54:26 -!- ais523_ has joined.
18:54:57 <elliott> Vorpal: having fun?
18:55:00 <ais523_> Vorpal: are you seriously saying that your bash history grows faster than the binaries of all the kernels you've ever used?
18:55:08 <ais523_> incidentally, my computer just locked up and I had to hard reboot
18:55:10 <ais523_> which is weird
18:55:13 <ais523_> I'm seeing if there's anything in the logs
18:55:36 <Vorpal> elliott: yes. I'm watching a video now.
18:55:38 <ais523_> (magic sysrq wasn't working, nor was control-alt-F1, and the mouse pointer wouldn't move; strangely, the sound card just kept looping the last second or so of what it had been playing)
18:56:03 -!- ais523 has quit (Ping timeout: 240 seconds).
18:56:22 -!- ais523_ has changed nick to ais523.
18:57:25 <ais523> nothing relevant in logs
18:57:47 <ais523> they were just cut off, much as I'd expect if I hard-rebooted while the system was running normally
18:58:26 <ais523> the only unusual thing I was doing was "$ du --si --summarize /usr /home"
18:58:34 <ais523> because I was curious as to their relative sizes on my system
18:59:42 <ais523> it's, umm, taking a while, which isn't surprising
18:59:52 <ais523> because the total size of /usr and /home isn't recorded anywhere, so it has to be worked out
19:00:26 <ais523> I wonder if it would be reasonable to design an fs to record the total size of directories? it'd be O(depth of directory tree) to update, I'm not sure if that'd be too expensive
19:02:09 -!- oerjan has joined.
19:06:30 <oerjan> <tswebb> So b^a just plain doesn't make entirely much sense unless b is positive or a is an integer.
19:06:49 <oerjan> tswett: multivalued functions, man.
19:07:21 <oerjan> even b=1 is interesting to consider that way.
19:08:04 <oerjan> 1^(1/n) naturally has all the values cos (2*k*pi/n) + i sin (2*k*pi/n)
19:08:48 <oerjan> (they're the solutions to z^n = 1, for one thing)
19:09:42 <oerjan> otherwise, you need to choose a branch of the function.
19:10:00 <Vorpal> ais523: actually I can check size of /usr and /home really quick
19:10:11 <ais523> ah, OK
19:10:18 <ais523> elliott: I have 11G in /usr, 53G in /home
19:10:32 <ais523> and I wouldn't be surprised if most of the packages on the system have been upgraded at least 5 times
19:10:33 <Vorpal> ais523: here is how:
19:10:35 <Vorpal> $ df -h | grep -E '(/usr|/home)$'
19:10:35 <Vorpal> /dev/mapper/array-home 192G 158G 25G 87% /home
19:10:35 <Vorpal> /dev/mapper/array-usr 20G 9,9G 8,9G 53% /usr
19:10:50 <ais523> hmm, that's interesting
19:10:58 <Vorpal> ais523: what is?
19:11:01 <ais523> /dev/mapper
19:11:08 <Vorpal> ais523: well, it is basically LVM2
19:11:18 -!- Darth_Cliche has quit (Ping timeout: 255 seconds).
19:11:18 <ais523> also, I note that your /home is only three times the size of your /usr
19:11:27 <ais523> elliott's is probably thousands of times the size, knowing him
19:11:40 <Vorpal> ais523: I have never grown /usr since installing the system. I have grown /home a few times
19:11:56 <elliott> I recently reinstalled this system so I can't say.
19:12:00 <ais523> Vorpal: but you aren't storing old versions of most packages in /usr, are you?
19:12:26 <ais523> elliott: actually, that's a really good time to say, assuming you transferred over /home and transferred over the list of installed packages so that /usr contained the same packages
19:12:46 <elliott> I can't transfer /home from a dead machine.
19:12:58 <ais523> ah, hmm
19:12:58 <Vorpal> ais523: no because I use arch. My current partition scheme would not fit nixos. nixos doesn't even have an /usr. If I were to switch (and I'm contemplating this, still a few issues that needs to be ironed out first though), I would drop /usr and reorganize stuff a bit
19:13:01 <ais523> not even from backups?
19:13:09 -!- derrik has quit (Quit: nite).
19:13:12 <ais523> or by taking the drive out of it and connecting it up directly?
19:13:34 <ais523> Vorpal: well, nixos has a place-where-packages-are-stored
19:13:37 <Vorpal> ais523: I don't imagine elliott backs up anything beyond, say, ssh keys or web browser profile
19:13:41 <Vorpal> ais523: yes
19:13:43 <ais523> which may not be /usr, but certainly has a similar purpose
19:13:55 <ais523> Vorpal: hmm, I suspect my more recent ssh keys aren't actually backed up
19:14:04 <ais523> I only ever made the one backup of dotfiles
19:14:14 <elliott> ais523: I hadn't yet set up backups there for various reasons, although I have slightly old backups of the things I care about most (~/Code, mostly)
19:14:18 <ais523> I don't care about web browser profiles being backed up, most things I care about I memorized the URLs for
19:14:20 <ais523> and the passwords
19:14:27 <ais523> elliott: ah, OK
19:14:29 <Vorpal> ais523: nixos has one file in /bin, that is /bin/sh, and is a symlink. No /usr, not /sbin. It is all done in different ways
19:14:33 <elliott> ais523: and extracting the HD would require taking a chip welded onto the motherboard
19:14:42 <ais523> elliott: ouch
19:14:47 <elliott> and then wiring it up to an enclosure somehow
19:15:06 <Vorpal> <ais523> I don't care about web browser profiles being backed up, most things I care about I memorized the URLs for <-- well, if you use the key ring feature of your browser
19:15:10 <Vorpal> (I do that)
19:15:11 <ais523> Vorpal: that doesn't mean that there isn't a part of the system where installed executables are stored, though
19:15:34 <elliott> btw, Apple have decided that they don't have to fix the MacBook Air according to the warranty
19:15:36 <ais523> Vorpal: well, the browser has some passwords memorized; but I have them memorized too
19:15:42 <ais523> because I'm used to logging in from different systems
19:15:44 <elliott> and want 500 pounds to fix it
19:15:46 <ais523> elliott: hmm, how old was it?
19:15:50 <elliott> in related news, I have a new doorstop
19:15:53 <elliott> it's very thin
19:15:57 <elliott> ais523: less than a year
19:15:58 <Vorpal> ais523: indeed, but I wouldn't put it on a separate partition from / for nixos. I would probably use / /home /boot and possibly /tmp (unless I do that in tmpfs)
19:16:16 <elliott> ais523: probably the warranty excludes all damage that isn't caused by, I don't know, God
19:16:17 <Vorpal> elliott: they what?
19:16:21 * Gregor has one big / partition :P
19:16:27 <elliott> Gregor: So does everyone sane.
19:16:32 <Vorpal> elliott: that sucks
19:16:33 <ais523> elliott: you might be able to get them to fix it on statutary warranty, if the damage is their fault
19:16:47 <ais523> elliott: I have one big / partition, but suspect it may be a bad idea
19:16:57 <ais523> also, an equally-sized partition for Windows
19:17:04 <Vorpal> my laptop has /boot and /.
19:17:10 <ais523> as the repartitioner on the Ubuntu installer wouldn't shrink the Windows partition to less than half its original size
19:17:14 <Vorpal> oh and swap of course
19:17:16 <elliott> ais523: I haven't bothered to investigate further as I don't anticipate arguing with Apple to be productive, but I suspect they have a very bad definition of "fault"
19:17:18 <ais523> I suppose I should use it for local backups, or something
19:17:23 <ais523> but I haven't been bothered to figure out how to mount it
19:17:36 <ais523> elliott: for statutary warranty, it's not their definition that matters, but the legal one
19:17:39 <elliott> Vorpal: it does suck; I guess I might fix it some day if I have some free cash
19:17:45 <elliott> this machine works fine for now, though
19:17:49 <ais523> does the computer you're currently using have working number keys?
19:17:52 <Vorpal> elliott: see what ais523 said
19:17:56 <elliott> ais523: yep, but I'd have to convince them that they have to agree with my definition
19:18:04 <elliott> which sounds like an awful lot of trouble
19:18:08 <elliott> and yes, it does :)
19:18:13 <Vorpal> elliott: talk to your lawyer ;P
19:18:19 <Vorpal> (I doubt you have one)
19:18:26 <ais523> what went wrong with the old one, apart from the digits on the keyboard?
19:18:31 <elliott> Vorpal: If I had a lawyer, I'd probably have 500 pounds spare :P
19:18:46 <elliott> ais523: it turned off and didn't turn back on again
19:19:15 <ais523> hmm, OK
19:19:19 <ais523> with no obvious cause?
19:19:31 <elliott> indeed
19:19:47 <elliott> this happened like a week ago, btw, I just forgot to say anything :P
19:19:51 <oerjan> <ais523> elliott: to Gregor's topic change
19:20:18 <oerjan> Gregor: I SUSPECT YOUR .txt LOGS DON'T INCLUDE TOPIC CHANGES
19:21:49 <Gregor> oerjan: I noticed that >_>
19:23:52 <oerjan> Gregor: i also suspect they don't include +t mode changes :P
19:24:03 <Gregor> oerjan: They don't include mode changes at all.
19:27:05 <oerjan> if not for freenode's stupid idea that there should be a way to avoid getting logged, i'd have liked to point out that a channel should BLOODY INCLUDE EVERYTHING PEOPLE ON THE CHANNEL SEE
19:27:16 <oerjan> *channel log
19:27:26 <oerjan> *BLOODY WELL
19:27:29 <elliott> http://codu.org/logs/_esoteric/2011-11-09-raw.txt
19:27:34 <elliott> Or,
19:27:36 <elliott> !glogbot_help
19:27:40 <elliott> https://codu.org/projects/stuff/logbothg/
19:27:45 <elliott> I'm sure Gregor accepts patches.
19:27:55 <Gregor> elliott: I'm fixing it right now :P
19:27:56 <elliott> Anyway I'm pretty sure glogbot doesn't respect the idiotic "no-logging" thing.
19:27:57 <Gregor> It's half-fixed already.
19:28:13 <oerjan> yay
19:28:13 <ais523> what's the no-logging thing?
19:28:35 <elliott> <oerjan> if not for freenode's stupid idea that there should be a way to avoid getting logged
19:29:12 <Vorpal> <oerjan> if not for freenode's stupid idea that there should be a way to avoid getting logged, i'd have liked to point out that a channel should BLOODY INCLUDE EVERYTHING PEOPLE ON THE CHANNEL SEE <-- err? avoid getting logged?
19:29:20 <oerjan> ais523: i think i saw it in a faq somewhere
19:29:31 <oerjan> it's not in the server intro message, though
19:29:44 <ais523> oerjan: Freenode doesn't like channels to be logged without warning the users of the channel (e.g. in the topic)
19:29:53 <elliott> ais523: that's not it
19:29:57 <ais523> I thought you were implying there was some way to send a message-to-channel that wasn't logged
19:30:01 <elliott> there is
19:30:05 <Vorpal> what
19:30:16 <elliott> or rather there's meant to be
19:30:22 <Vorpal> thats stupid
19:30:28 <oerjan> i'm not sure if there is one which _both_ our log bots simultaneously abide by :P
19:30:41 <elliott> neither of our log bots fail to log anything
19:30:41 <elliott> well
19:30:45 <elliott> apart from clog which is just incomplete
19:31:02 <fizzie> "Be sure to provide a way for users to make comments without logging, --" -- freenode philosophy: channel guidelines.
19:31:10 <Gregor> Argh, I'm incompetent :P
19:31:20 <Gregor> OK, it's 2/3rds fixed (adding topics to log)
19:31:34 <Vorpal> fizzie: that is really simple actually. Tell them to turn off local logging. Then they can make a comment while not logging.
19:31:41 <Vorpal> what a badly worded statement
19:31:48 <elliott> "If you're considering publishing channel logs, think it through. The freenode network is an interactive environment. Even on public channels, most users don't weigh their comments with the idea that they'll be enshrined in perpetuity. For that reason, few participants publish logs.
19:31:48 <elliott> If you're publishing logs on an ongoing basis, your channel topic should reflect that fact. Be sure to provide a way for users to make comments without logging, and get permission from the channel owners before you start. If you're thinking of "anonymizing" your logs (removing information that identifies the specific users), be aware that it's difficult to do it well—replies and general context often
19:31:48 <elliott> provide identifying information which is hard to filter.
19:31:48 <fizzie> It's in the context of publishing logs.
19:31:49 <elliott> If you just want to publish a single conversation, be careful to get permission from each participant. Provide as much context as you can. Avoid the temptation to publish or distribute logs without permission in order to portray someone in a bad light. The reputation you save will most likely be your own."
19:32:24 <elliott> fizzie: You should put on your special op hat and tap my head three times and designate me the Official Catalyst.
19:32:27 <elliott> That's how it works, right?
19:32:42 <Gregor> Your way to make comments without logging is to go to #esoteric-unlogged .
19:32:50 <elliott> Relaxed, open-minded, responsible, unobtrusive, realistic, careful, attentive, minimalist, courteous, cooperative, someone with an internal locus of control, and a user...
19:32:52 <fizzie> I think the catalyst stuff has something to do with chemistry, but that's all I know.
19:32:53 <elliott> Yes, I am all these things!
19:32:53 <Vorpal> Gregor: :)
19:32:57 <Gregor> As an added bonus, you may choose to opt out of hearing unlogged messages by simply not joining #esoteric-unlogged .
19:33:08 <elliott> Gregor: http://codu.org/logs/_esoteric-unlogged/
19:33:13 <Gregor> elliott: Nooooooose
19:33:26 <Vorpal> how did that happen
19:33:29 <fizzie> <span freenode:logging="disable">I sure hope this comment was not logged.</span>
19:33:31 <elliott> I invited glogbot to it. :P
19:33:46 <Vorpal> stupid bot that does that
19:33:57 <Gregor> fizzie: X-D
19:34:00 <elliott> Vorpal: Does what?
19:34:07 <Vorpal> elliott: joins any invites it gets
19:34:11 <elliott> Vorpal: It's a logbot.
19:34:32 <elliott> Vorpal: Why send a command for "start logging" when you could just use an existing IRC mechanism...
19:34:38 <elliott> Vorpal: Bonus: /invite requires op privileges.
19:34:43 <elliott> So glogbot can avoid authenticating that.
19:35:00 <Vorpal> elliott: sure, but surely only the owner of the bot should be able to add new channels
19:35:05 <elliott> Why
19:35:16 <Gregor> Vorpal: It's a public-access logbot, I shouldn't need to be bothered to add new channels.
19:35:17 <Vorpal> elliott: well lets invite it into all high volume channels then :D
19:35:26 <elliott> Vorpal: We're not ops on those channels, you moron.
19:35:28 <Gregor> Vorpal: Good luck getting ops on all of them.
19:35:39 <Vorpal> elliott: true, but do you need that if the channel is not +i?
19:35:42 <Vorpal> I don't think you do
19:35:58 <elliott> * #ubuntu :You're not a channel operator
19:35:58 <elliott> * Channel #ubuntu modes: +CLcntjf 5:10 #ubuntu-unregged
19:36:14 <Vorpal> huh
19:36:16 <elliott> +i is just restricting joins.
19:36:30 <Gregor> That /invite policy is a Freenode thing.
19:36:33 <Gregor> But, glogbot is a Freenode bot :)
19:36:46 <Vorpal> yeah pretty sure invites don't work like that on a standard ircd
19:36:51 <Gregor> OMG HOW DO I KEEP SCREWING THIS UP
19:36:53 <fizzie> There's a chanserv access flag to enable inviting.
19:36:55 <elliott> Like there's any such thing as a standard ircd.
19:37:05 <fizzie> The IRCnet ircd is the standard ircd. :p
19:37:05 <Vorpal> fizzie: isn't that /cs invite
19:37:09 <Vorpal> rather than /invite
19:37:20 <Vorpal> elliott: well, common ircd. As in how it is done on the other big networks
19:37:43 <fizzie> Vorpal: Could be; I suppose it would make sense that way.
19:38:01 <Gregor> FINALLY. After only twelve attempts, the logbot now has topic changes.
19:38:08 <Gregor> Now to add mode changes.
19:43:03 <oerjan> yay
19:43:39 <oerjan> now i just need to ironically ban Gregor for abusing topic changes
19:44:07 <elliott> oerjan: ban ais523 instead, he abused mode changes :'(
19:44:14 <oerjan> EVIL
19:44:28 -!- Gregor has set topic: #esoteric is Not Your Average Network chat channel! | #esoteric trying to enforce topic despotism: But how will this affect our children's fitness? That and more at 11 | http://codu.org/logs/_esoteric/.
19:44:52 <ais523> oerjan: I +t'd the channel in order to stop the topic change abuse
19:44:56 <ais523> I don't call that mode change abuse at all
19:45:08 <ais523> especially as it was only intended to be temporary, and was in fact changed back after a few minutes
19:45:14 <elliott> Oh man, Not Your Average Network
19:45:16 <elliott> I just got it >_<
19:45:19 <Gregor> elliott: Bahahahaha
19:45:25 <oerjan> elliott: should i ban ais523 for not understanding jokes, instead?
19:45:42 <ais523> elliott: I got it right away
19:45:48 <ais523> and thought it was an amusing compromise
19:45:53 <Gregor> OK, topic/mode logging is now perfection.
19:45:59 <ais523> might be better without the caps, I guess
19:46:02 <elliott> oerjan: Yse.
19:46:04 -!- Taneb has joined.
19:46:04 <elliott> Yes.
19:46:39 <elliott> ?unmtl Cont r a
19:46:40 <lambdabot> (a -> r) -> r
19:46:54 <oerjan> monads, so contra
19:47:03 <elliott> forall r. (((m a -> m a) -> m a) -> r) -> r
19:47:04 <elliott> oerjan: help.
19:47:15 <oerjan> elliott: wat
19:47:31 <elliott> oerjan: I was trying to figure out what a coroutine monad looks like because I'm really bored :P
19:47:36 <oerjan> ?unmtl ContT r t a
19:47:37 <lambdabot> (a -> t r) -> t r
19:47:43 <oerjan> er
19:47:46 <oerjan> ?unmtl ContT r m a
19:47:46 <elliott> (with fork :: CoroT m a -> CoroT m (), yield :: CoroT m ())
19:47:46 <lambdabot> (a -> m r) -> m r
19:48:04 <elliott> nothing boring like StateT [CoroT m ()] m ofc
19:48:50 <oerjan> elliott: just put zzo38 on it
19:48:56 * oerjan runs away
19:48:58 <elliott> oerjan: ;___;
19:49:08 <elliott> ...but yeah, I started off with
19:49:11 <elliott> (m a -> m a) -> m a
19:49:26 <elliott> where the argument is a sort of yield
19:49:28 <elliott> you pass it a continuation
19:49:38 <elliott> it context-switches to every other thread then calls the continuation you gave it once that's done
19:49:38 <elliott> but
19:49:40 <elliott> that doesn't work :'(
19:49:43 <elliott> because you can't write fork
19:50:18 <elliott> oerjan: btw did you see Simon Marlow breaking reddiquette :P
19:50:53 <oerjan> what, today?
19:51:20 <oerjan> in r/haskell?
19:51:28 <elliott> yes
19:52:06 <oerjan> well i haven't gotten around to reddit yet. also, laundry -->
19:54:21 <Taneb> Am I here?
19:55:06 <Taneb> 'Twould seem not...
19:55:08 -!- Taneb has quit (Quit: Leaving).
19:55:21 -!- Taneb has joined.
19:55:27 <elliott> Taneb: no
19:55:35 -!- Zuu has joined.
20:01:32 <Gregor> elliott: Why is glogbot not the most wildly popular logbot ever made?
20:01:54 <elliott> 'cuz it doesn't do mode changes.
20:02:05 <Gregor> elliott: But it does now!
20:02:16 <elliott> Does it do nick changes?
20:02:29 <Gregor> elliott: Yup
20:02:36 <Gregor> (I think X-P )
20:02:40 <Gregor> (Oh, yes, it does)
20:02:42 <elliott> Reassuring!
20:02:55 <Gregor> Hey, my memory is distinct from glogbot's quality >_>
20:04:04 <elliott> I typed that before you said it did :P
20:04:11 <elliott> ISTR something like quits were broken a while ago.
20:06:54 <Gregor> They were only very partially broken.
20:07:10 <Gregor> It was join->nick->quit that it didn't detect properly.
20:07:18 <Gregor> It detected the join and the nick, but not the quit.
20:14:31 <Phantom_Hoover> I RETRUN
20:15:10 <oerjan> how retro
20:15:22 <Taneb> Heh, now even Adobe don't use Flash
20:15:54 -!- Phantom__Hoover has joined.
20:18:51 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:18:57 -!- derrik has joined.
20:22:52 -!- Aune has joined.
20:23:24 <oerjan> swede ho!
20:24:04 <oerjan> `? welcome
20:24:14 <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
20:31:59 -!- tiffany has joined.
20:33:47 <Phantom__Hoover> Swo!
20:35:37 -!- GreaseMonkey has joined.
20:35:37 -!- GreaseMonkey has quit (Changing host).
20:35:37 -!- GreaseMonkey has joined.
20:37:41 <Gregor> NOW I remember why I hate PulseAudio so much.
20:37:47 <Gregor> BECAUSE IT FRIGGIN SUCKS
20:38:24 <Gregor> Why is mplayer stuttery and terrible through pulseaudio? And why is it that if I just have pulseaudio INSTALLED, anything that wants it will start it automatically without asking me? >_<
20:38:39 <oerjan> so how many programs do you hate for being too perfect?
20:39:13 <olsner> Gregor: stop complaining and just uninstall pulseaudio then
20:39:24 <Gregor> olsner: I need it for remote audio >_<
20:39:37 <Gregor> olsner: So I have to install it when I want remote audio, then uninstall it when I don't :P
20:39:55 <oerjan> well you're already good at sandboxing...
20:40:08 <elliott> Gregor: Just use JACK :P
20:40:15 <Gregor> elliott: JACK is SO FRIGGIN' DIFFICULT.
20:40:22 <elliott> Gregor: Google a friggin' tutorial :P
20:40:27 <Gregor> elliott: I did! It didn't work!
20:40:34 <oerjan> Gregor doesn't know jack shit
20:40:44 <elliott> yeah Gregor's a fucking moron
20:40:44 <elliott> wait
20:42:01 <Gregor> elliott: That's it, I'm BANNING YOU ... from the logs ... or something.
20:42:17 <elliott> X-D
20:42:34 <oerjan> logs without elliott, so useful
20:42:56 <elliott> You might get a whole percent of the messages.
20:47:13 <elliott> oerjan: did you know: Enum and Bounded are hard to use
20:47:50 <oerjan> aha?
20:48:39 <oerjan> > [minBound..maxBound] :: String
20:48:40 <lambdabot> "\NUL\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t\n\v\f\r\SO\SI\DLE\DC1\DC2\DC3\DC4\NAK\S...
20:49:11 <elliott> boundedEnumElems :: (Enum a, Bounded a, Eq a) => Elems a
20:49:11 <elliott> boundedEnumElems = go minBound maxBound
20:49:11 <elliott> where go m n
20:49:11 <elliott> | m == n = Leaf m
20:49:11 <elliott> | otherwise = Branch (go m mn) (go (succ mn) n)
20:49:12 <elliott> where mn = pred . toEnum $ nv + ((nv - mv) `div` 2)
20:49:14 <elliott> mv = fromEnum m
20:49:16 <elliott> nv = fromEnum n
20:49:18 <elliott> It doesn't wooooork :P
20:49:36 <oerjan> > [minBound,'Ø'..maxBound] :: String
20:49:37 <lambdabot> "\NUL\216\432\648\864\1080\1296\1512\1728\1944\2160\2376\2592\2808\3024\324...
20:51:30 <oerjan> elliott: why not?
20:51:58 <elliott> *Main> boundedEnumElems :: Elems Bool
20:51:58 <elliott> Branch (Leaf False) (Leaf True)
20:51:58 <elliott> *Main> boundedEnumElems :: Elems Test
20:51:58 <elliott> Branch *** Exception: toEnum{Test}: tag (4) is outside of enumeration's range (0,3)
20:52:03 <elliott> where Test is A | B | C | D
20:52:50 <oerjan> ah i guess the problem is if mn == maxBound?
20:53:06 <elliott> yeah
20:53:13 <elliott> I guess I could like compare mn to see if it's maxbound but uhhh
20:53:16 <elliott> s/uhhh/ugggh/
20:53:25 <elliott> oerjan: actually no
20:53:25 <oerjan> then you need Ord
20:53:35 <elliott> oerjan: because the exception is on the first branch
20:53:40 <elliott> which has no succ
20:53:45 <elliott> and no, I don't, I can just use fromEnum >:)
20:54:35 <Deewiant> You don't need Eq either, if you use fromEnum
20:54:36 <oerjan> oh hm
20:54:47 <elliott> Deewiant: True
20:55:11 <elliott> Thinking it might just be easier to do it with a -> [Bool]
20:55:32 <oerjan> elliott: itym where mn = pred . toEnum $ mv + ((nv - mv) `div` 2)
20:55:45 <Phantom__Hoover> http://www.purdue.edu/IMPACTEARTH
20:55:46 <elliott> oh hm
20:55:50 <Phantom__Hoover> Wait this is from Purdue?
20:55:55 <Phantom__Hoover> Where are the chickens?
20:55:59 <elliott> oerjan: that produces an infinite tree for Test :P
20:56:19 <elliott> Phantom__Hoover: Help I don't want to impact?
20:56:29 <elliott> This is like Sburb but with a crappy loading screen.
20:56:42 <oerjan> elliott: oh i guess if they're 1 apart, it may fail?
20:56:49 <elliott> oerjan: auugh why is this ugly
20:57:02 <elliott> Phantom__Hoover: OMG CAN I IMPACT EARTH WITH A GIGANTIC MASSIVE ASTEROID
20:57:06 <oerjan> elliott: nv + ((nv - mv) `div` 2) is definitely wrong, anyway
20:57:14 <elliott> Phantom__Hoover: X-D One of the options for diameter is "Humpback Whale".
20:58:20 <elliott> Phantom__Hoover: :-( I was hoping I could watch it slam in.
20:58:23 <elliott> BOOOOORIIIIIIING
20:59:19 <oerjan> elliott: should the pred . be there?
20:59:28 <elliott> oerjan: istr it failed even more without it :) i can ermove it
20:59:47 -!- Taneb has quit (Read error: Connection reset by peer).
20:59:51 <elliott> "The Earth is completely disrupted by the impact and its debris forms a new asteroid belt orbiting the sun between Venus and Mars.
20:59:51 <elliott> 100 percent of the Earth is melted
20:59:51 <elliott> Depending on the direction and location the collision, the impact may totally change the Earth's rotation period and the tilt of its axis.
20:59:51 <elliott> Depending on the direction and location of impact, the collision may cause a change in the length of the day of up to 38500000000000 hours.
20:59:52 <elliott> The impact shifts the Earth's orbit totally."
20:59:56 <elliott> Phantom__Hoover: "Day change: not significant"
21:00:04 <elliott> FSVO not significant.
21:00:15 <Gregor> elliott: Day changed to no-such-notion :P
21:00:29 <elliott> Gregor: It's just 38500000000024 hours long now.
21:00:57 <elliott> "Transient Crater Depth: 2560000000 km ( = 1590000000 miles )"
21:01:06 <oerjan> elliott: try where mn = toEnum $ mv + ((nv - mv) `div` 2)
21:01:21 <elliott> oerjan: wow, it works :P
21:01:44 <oerjan> yay :)
21:04:01 <oerjan> <elliott> Phantom__Hoover: X-D One of the options for diameter is "Humpback Whale". <-- what about bowl of petunias?
21:04:33 <oerjan> actually then it should be sperm whale, i think
21:05:01 * Gregor starts putting in ridiculous parameters.
21:05:07 <Gregor> A ball of iron the size of Jupiter ...
21:05:12 <Gregor> (i.e. a black hole)
21:05:25 <Phantom__Hoover> It's hardly hitting the Earth then, is it?
21:05:28 <elliott> Gregor: Pffft, I put like 1000000000 in all the fields :P
21:05:32 <Phantom__Hoover> Also hmm.
21:05:39 <elliott> It just basically says "There is no more Earth!"
21:06:03 <oerjan> would that actually be a black hole...
21:06:09 <Phantom__Hoover> Jupiter's 70000km in radius.
21:06:40 <Gregor> "The Earth is completely disrupted by the impact and its debris forms a new asteroid belt orbiting the sun between Venus and Mars." yay
21:06:57 <Gregor> "Depending on the direction and location of impact, the collision may cause a change in the length of the day of up to 23.8 hours." lol
21:08:13 <elliott> X-D
21:09:20 <Phantom__Hoover> WA is misbehaving when I try to find the Schwarzschild radius of a ball of iron the size of Jupiter.
21:10:09 <oerjan> it is probably detecting that you are constructing a weapon of mass destruction
21:10:17 <olsner> if you already know the size, what do you need the schwarzschild radius for?
21:10:34 <oerjan> olsner: to check if it would collapse into a black hole, duh
21:10:36 <Phantom__Hoover> It's 16.8m; it's not a black hole.
21:11:00 <oerjan> sounds unlikely then
21:11:32 <oerjan> although it would probably collapse to some higher density than iron on earth :P
21:11:39 <Phantom__Hoover> Not necessarily; it could still collapse.
21:12:38 <Phantom__Hoover> And it's around five times the Chandrasekhar limit, so it would have to be a neutron star at least.
21:12:47 <oerjan> well but what is the total mass of this, is it more than a minimum size stellar black hole?
21:12:54 <oerjan> oh
21:13:31 <elliott> Phantom__Hoover: What's the biggest ball of iron we can do? I want one.
21:13:41 <oerjan> hm what is the range of possible neutron star masses...
21:13:42 <Phantom__Hoover> Depends on how you define 'iron'.
21:14:10 <Phantom__Hoover> Is electron-degenerate iron counted? Then you can have anything up to the Chandrasekhar limit.
21:14:28 <Phantom__Hoover> Waitwaitwait.
21:14:28 <Phantom__Hoover> Argh.
21:14:33 <elliott> Phantom__Hoover: No I want something that looks like iron ok.
21:14:36 <Phantom__Hoover> I mistook grams for kilograms.
21:14:39 <elliott> X-C
21:14:40 <elliott> X-D
21:14:53 <oerjan> "In general, compact stars of less than 1.44 solar masses – the Chandrasekhar limit – are white dwarfs, and above 2 to 3 solar masses (the Tolman–Oppenheimer–Volkoff limit), a quark star might be created; however, this is uncertain. Gravitational collapse will usually occur on any compact star between 10 and 25 solar masses and produce a black hole."
21:15:00 <Phantom__Hoover> It's around a fiftieth of the Chandrasekhar limit, so it'd be a white dwarf.
21:15:09 <Phantom__Hoover> I... nearly wrote "white dorf".
21:15:12 <elliott> X-D
21:15:23 <oerjan> Phantom__Hoover: oh.
21:15:44 <Phantom__Hoover> Or it might even just be a ball of iron.
21:15:45 <elliott> Phantom__Hoover: So what's the biggest non-vertically-challenged ball of iron
21:16:14 <Phantom__Hoover> Not sure; I'm not good with degeneracy pressures.
21:16:30 <elliott> Phantom__Hoover: OK well what's the biggest ball of iron you can think of that you're sure is of full stature.
21:16:50 <Phantom__Hoover> http://en.wikipedia.org/wiki/Electron_degeneracy_pressure
21:16:53 <oerjan> this sounds... backwards
21:16:54 <Phantom__Hoover> Well, that settles it!
21:17:07 <Phantom__Hoover> oerjan, not really, stuff gets smaller as it gets heavier.
21:17:10 <elliott> Phantom__Hoover: ANSWER MEEEEEEEEEEEEE
21:17:41 <Phantom__Hoover> \varrho? What the hell?
21:18:23 <elliott> Phantom__Hoover: THERE ARE FOLLOW-UP QUESTIONS
21:19:01 <Phantom__Hoover> elliott, bang that into WA after s/m_e/mass of electron/, s/m_p/mass of proton/, s/rho/density of iron/, s/mu_e/1/
21:19:14 <Phantom__Hoover> Oh, and s/h/Planck's constant/
21:19:37 <elliott> Phantom__Hoover: I don't waaant toooo, mostly because Wolfram Alpha can't answer my follow-up question.
21:19:58 <Phantom__Hoover> Sure, but I can answer it with the answer to the previous.
21:20:28 <Phantom__Hoover> Well, it'd need another calculation, but that's just standard fluid pressure AFAIK.
21:20:39 <elliott> Phantom__Hoover: Do you know what the next question is.
21:20:43 <Phantom__Hoover> No.
21:21:28 -!- Ngevd has joined.
21:22:01 <elliott> Phantom__Hoover: http://www.wolframalpha.com/input/?i=%28planck%27s+constant+%5E+2%29%2F%2820*mass+of+electron*%28mass+of+proton%29%5E%285%2F3%29%29*%283%2Fpi%29%5E%282%2F3%29*%28density+of+iron%29%5E%285%2F3%29 It fucked it up slightly I think, but I can't figure out how to fix it.
21:22:51 <oerjan> "A planet such as Jupiter has about the largest volume possible for a cold mass.[2] Add mass to Jupiter and the planet's volume, somewhat counter-intuitively, becomes smaller."
21:22:58 <oerjan> so yeah
21:23:19 <oerjan> http://en.wikipedia.org/wiki/Compact_star
21:23:52 <Phantom__Hoover> Hmm, mu_e is the suspicious bit.
21:23:54 <Ngevd> A rather limited subset of Minecraft could be considered a Linear Bounded Automaton
21:24:06 <Ngevd> I say rather limited.
21:24:22 <Ngevd> I mean, Turing-Complete enough for Wolfram to say it would be
21:24:23 <Phantom__Hoover> It's theoretically possible to build a TM, I think.
21:24:34 <olsner> it has been done, I think
21:24:39 <Phantom__Hoover> Given procedurally-generated terrain
21:24:49 <Phantom__Hoover> Erm, *circuitry.
21:25:02 <Phantom__Hoover> The trick is to stick the player in a minecart and use them to load the tape.
21:25:06 <elliott> Phantom__Hoover: Also its parenthesisation.
21:25:21 <elliott> I don't think 20(m_e m_p)^5/3 is right.
21:26:05 <Deewiant> http://www.wolframalpha.com/input/?i=%28planck%27s+constant+^+2%29%2F%2820*mass+of+electron*%28%28mass+of+proton%29^%285%2F3%29%29%29*%283%2Fpi%29^%282%2F3%29*%28density+of+iron%29^%285%2F3%29
21:26:22 <Phantom__Hoover> http://scienceworld.wolfram.com/physics/ElectronDegeneracyPressure.html
21:27:02 <Phantom__Hoover> Deewiant, thank, you are a helpful person.
21:27:28 <elliott> Deewiant: Thank, you are a helpful person.
21:27:41 <Phantom__Hoover> `learn Finns are helpful, albeit grossly overpopulated (cf. 'Finland').
21:27:43 <HackEgo> I knew that.
21:28:12 <Phantom__Hoover> (fizzie is helpful, and oko is helpful in an oko way.)
21:28:47 <Ngevd> The two towns with the most esolangers are Helsinki and Hexham.
21:28:59 <elliott> We should get twinned or something.
21:29:06 <elliott> Phantom__Hoover: So do you know the answer now.
21:29:08 <Phantom__Hoover> oko's not from Helsinki.
21:29:11 <elliott> Can I ask
21:29:12 <elliott> my
21:29:14 <elliott> follow up question
21:29:24 <Phantom__Hoover> Not yet.
21:29:48 <elliott> cry
21:30:15 <Ngevd> Phantom__Hoover, that makes EVEN MORE PEOPLE FROM HEXHAM RELATIVELY
21:30:20 <Ngevd> Hang on.
21:30:35 <Ngevd> Is there anybody other than Phantom__Hoover from the Edinburgh area on this channel?
21:30:50 <Phantom__Hoover> No.
21:30:51 <elliott> no
21:30:55 <Ngevd> Good.
21:30:55 <elliott> at least nobody who talks
21:31:06 <Ngevd> How about Gregoria?
21:31:23 <elliott> gergoria
21:31:44 * Phantom__Hoover realises that working out the mass from that pressure is non-trivial.
21:31:47 <Phantom__Hoover> Follow-up anyway.
21:31:54 <Ngevd> West Lafayette, Indiana
21:32:17 <elliott> Phantom__Hoover: What would happen if we flung it at the Earth.
21:32:30 <Phantom__Hoover> I could have answered that anyway!
21:32:38 <elliott> NOT MY FAULT YOU GOT ME TO TYPE IN EQUATIONS
21:33:08 <Phantom__Hoover> (The answer is 'sploosh'.)
21:33:19 <elliott> That's
21:33:22 <elliott> Not a satisfactory answer Phantom__Hoover
21:33:34 <elliott> Phantom__Hoover: OK wait what if we just sort of glided it to the earth.
21:33:41 <elliott> At, like, 1 m/s.
21:33:51 <Phantom__Hoover> Sploosh.
21:34:01 <elliott> Phantom__Hoover you are so bad.
21:34:25 <Phantom__Hoover> At those scales, it's basically the same as throwing blobs of water at each other in zero gravity (im good analgogy).
21:35:12 <elliott> Phantom__Hoover: OK but how close would it have to get before fun started happening on Earth (assuming the 1 m/s thing).
21:35:42 <Phantom__Hoover> Quite far.
21:36:03 <elliott> Phantom__Hoover: Duuude you suuuuck.
21:36:14 <oerjan> i was interpreting that sploosh as more the kind of insect on a windshield thing.
21:36:24 <oerjan> where earth, in this case, is the insect.
21:36:48 <elliott> And then the ball of iron's windscreen wipers smudge us.
21:36:54 <Ngevd> But Helsinki and Hexham... BOTH BEGIN WITH 'H'
21:37:01 <Ngevd> Is there anyone from the Hague here?
21:37:04 <elliott> Okay now I'm imagining a perfectly spherical ball of iron just sort of gliding through the heavens with enormous windscreen wipers.
21:37:06 <Phantom__Hoover> Hexsinki.
21:37:22 <oerjan> hondtreim here
21:37:30 <Phantom__Hoover> How can it have windscreen wipers if it's perfectly spherical?
21:37:42 <oerjan> Phantom__Hoover: advanced alien technology.
21:38:01 <elliott> Phantom__Hoover: They're just regular car windscreen wipers but curved.
21:38:04 <ais523> Phantom__Hoover: actually, a perfect sphere is reasonably easy to windscreen-wipe
21:38:14 <elliott> They only wipe the front bit.
21:38:18 <elliott> (The bit that's going forwards.)
21:38:19 <Phantom__Hoover> Yeah, but they interfere with the sphericality.
21:38:26 <elliott> Phantom__Hoover: They aren't part of the sphere.
21:38:27 <elliott> They're just attached.
21:38:43 <Phantom__Hoover> Oh.
21:38:44 <Phantom__Hoover> How?
21:38:50 <Ngevd> Magnets
21:38:51 <oerjan> Phantom__Hoover: advanced alien technology.
21:38:57 <Phantom__Hoover> (Magnets don't count; they'd cause a distortion in the sphere.)
21:39:00 <elliott> Phantom__Hoover: I don't know, how are they attached to cars?
21:39:06 * elliott genius.
21:39:17 <Phantom__Hoover> elliott, cars aren't perfectly spherical.
21:39:21 <oerjan> elliott: advanced alien technology.
21:39:27 <elliott> Phantom__Hoover: Okay, now I'm laughing.
21:39:37 <oerjan> (toyota is secretly grey operated)
21:39:46 <elliott> Phantom__Hoover: OK it's perfectly spherical apart from a little indent where the wipers are attached, happy?
21:39:56 <Ngevd> `addquote <Phantom__Hoover> elliott, cars aren't perfectly spherical.
21:39:58 <HackEgo> 715) <Phantom__Hoover> elliott, cars aren't perfectly spherical.
21:40:09 <Phantom__Hoover> elliott, yes.
21:40:12 <Ngevd> Sticky glue?
21:40:14 <Phantom__Hoover> But SCIENCE isn't.
21:40:26 <Ngevd> As opposed to non-sticky glue
21:40:34 * Phantom__Hoover wishes he'd set fire to that insect food in chemistry today just before the fire alarm went off.
21:40:40 <elliott> Phantom__Hoover: Why amn't science hapey.
21:40:53 <Phantom__Hoover> I missed the opportunity for the best moment of my life.
21:40:59 <oerjan> elliott: because gramer
21:41:00 <elliott> X-D
21:41:07 <Phantom__Hoover> elliott, becuase is 21th sentry.
21:41:09 <oerjan> sory, speeling
21:41:12 <elliott> Phantom__Hoover: :(
21:41:22 <elliott> oerjan: *becuase
21:41:43 <oerjan> elliott: you didnt misple why
21:42:25 <elliott> oerjan: I misspelled wyh just fine.
21:43:59 <oerjan> O QUAY
21:44:17 <Ngevd> Quay is pronounced similar to "key".
21:44:38 <elliott> oak quay
21:45:11 <oerjan> i no i couldnt fine any homonyms of kay
21:45:44 <Ngevd> homofones
21:45:52 <Ngevd> Wiht a "ph"
21:46:07 <oerjan> homofun, o qi
21:46:11 <Phantom__Hoover> O god, r we goan to degenerate in2 thi style of Bascule the Teller?
21:46:17 <Ngevd> Yuo probly no tihs arleayd
21:46:26 <Ngevd> NOOOO
21:46:45 <oerjan> hoos bascule the teller
21:46:55 <Phantom__Hoover> The
21:47:07 <Phantom__Hoover> The A-level pass rate is 97.8%.
21:47:10 <Phantom__Hoover> I don't even.
21:47:23 <Ngevd> Grade boosting
21:47:30 <Phantom__Hoover> I get that.
21:47:31 <oerjan> o dat buk
21:47:37 <elliott> <Phantom__Hoover> O god, r we goan to degenerate in2 thi style of Bascule the Teller?
21:47:39 <Ngevd> Gone wild.
21:47:58 <elliott> Phantom__Hoover: Turns out my mind has been permanently warped by "i"s close to 2s.
21:48:02 <elliott> fuck thii2 2hiit.
21:48:20 <elliott> Phantom__Hoover: Although it dissonantly reacted by my zzo38 detector triggering on "O".
21:48:21 <Phantom__Hoover> 2ollux the teller
21:48:31 <oerjan> i2 dat 2o
21:48:40 <elliott> oerjan: YUO'RE DOING IT WRONEGE ;____;
21:48:49 * elliott cry
21:49:15 * oerjan i22e2pon2ible
21:49:26 <Phantom__Hoover> Issessponsible.
21:49:37 <monqy> me too
21:49:43 <Phantom__Hoover> *Issesponsible.
21:49:46 <elliott> oerjan: you have to duplicate your "i"s ok ;__; doing otherwise is issesponsible
21:50:09 <oerjan> iif u 2ay 2o
21:50:28 <elliott> That would be really scary if not for the "u".
21:50:32 * Phantom__Hoover notes that Higher pass rates have climbed in the past too, is confuse.
21:51:13 <oerjan> Phantom__Hoover: they probaly wrap wen hiting 100%
21:51:35 -!- derdon has quit (Remote host closed the connection).
21:52:32 <elliott> "they"
21:53:07 <Gregor> elliott: Pointing out the only correctly-spelled word? :P
21:53:12 <Gregor> elliott: (But "wrap" is write too!)
21:53:15 <elliott> Gregor: You mean: the only error.
21:53:18 <elliott> Oh, damn.
21:53:25 <Gregor> NOTE JOKE IN LAST MESSAGE
21:53:27 <Gregor> LAUGH LAUGHABLY
21:53:30 <Phantom__Hoover> http://en.wikipedia.org/wiki/Magnetic_circuit
21:53:38 <Phantom__Hoover> Wow, you can make magnetic circuits?
21:53:51 <Gregor> Phantom__Hoover: *brain explodes*
21:54:13 <Phantom__Hoover> Eh, it's shaping flux lines.
21:55:03 -!- tiffany has quit (Read error: Connection reset by peer).
21:55:39 -!- tiffany has joined.
21:58:13 <Ngevd> I'm going to do some more work on Salesman
21:58:28 <Ngevd> By which I mean completely changing all the commands for the fourth time
21:58:58 -!- augur has quit (Remote host closed the connection).
21:59:37 <elliott> oerjan:
21:59:39 <elliott> boundedEnumToBits :: (Enum a, Bounded a) => a -> [Bool]
21:59:39 <elliott> boundedEnumToBits a = go (fromEnum (minBound `asTypeOf` a)) (fromEnum (maxBound `asTypeOf` a)) (fromEnum a)
21:59:39 <elliott> where go :: Int -> Int -> Int -> [Bool]
21:59:39 <elliott> go m n v
21:59:40 <elliott> | m == n = []
21:59:42 <elliott> | v <= mn = False : go m mn v
21:59:44 <elliott> | otherwise = True : go (succ mn) n v
21:59:46 <elliott> where mn = m + ((n - m) `div` 2)
21:59:48 <elliott> help it's ugly :(
22:00:14 <Gregor> Rewrite it in C.
22:00:19 <ais523> hmm, is there any project whose name starts "ya" as an acronym/initialism/abbreviation for "yet another", but is the first project doing what it does?
22:00:21 <elliott> Gregor: lol
22:00:43 <Gregor> ais523: X-D
22:00:49 <elliott> ais523: yapwnsyaaaiafyabitfpdwid
22:01:07 <elliott> @ = yapos
22:01:31 <Ngevd> yaaa
22:01:37 <Gregor> yamlpopl -> Yet Another My-Little-Pony-Oriented Programming Language
22:02:30 <elliott> ais523: Those were funny >:(
22:02:53 <Ngevd> A Salesman implementation must be able to solve the Travelling Salesman problem MULTIPLE TIMES during the course of execution
22:03:01 <Nisstyre> elliott: you highlighted me earlier
22:03:07 <Nisstyre> along with the rest of the channel
22:03:08 <elliott> Nisstyre: No, you must be mistaken.
22:03:35 <Nisstyre> I am not
22:03:38 <Nisstyre> I have a record of it here
22:03:49 <elliott> ais523: Better ban me.
22:04:06 <elliott> Gregor: Have you removed the line from the logs yet???
22:04:28 <Gregor> elliott: ALL THE LINES
22:04:33 <elliott> Thx!
22:04:51 <Nisstyre> you highlighted me and many other at precisely 12:53 Wednesday November, 09 2011 EST
22:05:06 <Nisstyre> anyway
22:05:07 <Nisstyre> your Haskell looks ugly :P
22:05:10 <elliott> Precisely? So, not another second passed?
22:05:17 <elliott> Not another femtosecond?
22:05:21 <Nisstyre> name your goddamn variables properly
22:05:35 <elliott> Those variables are perfectly well named.
22:05:36 <monqy> mnvmnvmnvmnvnvmnvmnvn
22:07:25 <ais523> elliott: sorry, I was out taking a phone-call
22:07:46 <elliott> ais523: What are we meant to do when we need someone banned urgently?
22:08:43 <oerjan> WEP
22:08:55 <elliott> hi oerjan "wep" oerjan
22:09:22 <oerjan> AN NASHING OF TEITH
22:09:36 <elliott> hi
22:09:37 <elliott> ban me
22:09:41 <ais523> elliott: ask #freenode?
22:09:52 <elliott> ais523: hmm... I'll give it a shot
22:11:30 <Gregor> Oooooh, now I'm curious who needs urgent banning.
22:11:35 <Gregor> (And from where)
22:11:50 <elliott> Me.
22:11:51 <elliott> From here.
22:12:25 <oerjan> ida taut itwas obivus
22:12:48 -!- Ngevd has quit (Ping timeout: 245 seconds).
22:23:40 <Phantom__Hoover> Argh, how long until I go to university and get journal access.
22:24:07 -!- Ngevd has joined.
22:27:14 <Ngevd> Damn, I just realised Salesman is gonna have to simulate a basic economy
22:27:35 <Phantom__Hoover> Is this the travelling salesman problem taken to the next level?
22:27:51 <Ngevd> This is getting pretty complicated
22:28:17 <Ngevd> Yes
22:28:22 <Ngevd> As an esolang
22:28:27 <Phantom__Hoover> What, really?
22:28:28 <Ngevd> elliott, did you ever come up with your version of Brook?
22:28:29 <Phantom__Hoover> Awesome.
22:28:55 <Ngevd> With dynamic graph-changing
22:29:33 <Ngevd> But it's a complete graph which is by default Cartesian
22:30:12 <Ngevd> It's possible to change arc weights, but only by doubling them or halving them (may change that)
22:33:10 <Ngevd> Thing is, in Salesman, the salesman actually buys and sells things
22:33:10 <Ngevd> It may have multiple commodities
22:33:47 <Ngevd> It is going to be so damn complicated
22:36:16 -!- Aune has quit (Quit: Lmnar).
22:36:20 <Phantom__Hoover> Minecraft has made me view all trees as ridiculously slender.
22:36:51 <Ngevd> Aww, now you got me thinking about Slender Man
22:37:55 <Ngevd> Well, goodnight
22:38:06 <Vorpal> Phantom__Hoover: XD
22:38:08 -!- Ngevd has quit (Quit: ...).
22:38:25 <Vorpal> well, I need to sleep, night →
22:38:32 <Vorpal> `addquote <Phantom__Hoover> Minecraft has made me view all trees as ridiculously slender.
22:38:34 <HackEgo> 716) <Phantom__Hoover> Minecraft has made me view all trees as ridiculously slender.
22:40:17 -!- boily has quit (Ping timeout: 258 seconds).
22:41:29 -!- sebbu3 has joined.
22:41:29 -!- sebbu3 has quit (Changing host).
22:41:29 -!- sebbu3 has joined.
22:42:27 -!- sebbu2 has quit (Ping timeout: 240 seconds).
23:00:13 <ais523> THE COURT: You don't want to get me started on this. You big companies do not own the U.S. District Court. So, yes, you can have your protective orders, but when it comes to a public hearing, I'm not going to have to resort to Morse Code to understand what you are trying to tell me.
23:00:17 <ais523> that's a neat putdown
23:10:05 <elliott> heh
23:12:25 <ais523> (that's from Oracle vs. Google, against an Oracle lawyer)
23:12:56 <coppro> yeah, that judge is pretty awesome
23:12:59 -!- Rod56 has joined.
23:13:38 <ais523> I get the feeling from reading the rest of the trial that the judge thinks both sides are bullshitting him
23:13:45 <ais523> also, that he is quite probably correct
23:13:48 <coppro> yeah
23:14:31 <Phantom__Hoover> Argh, mplayer isn't working.
23:16:55 <elliott> ais523: wow, you mentioning that made me look at groklaw for the first time in years, which lead to me finding out that the original editor retired from it
23:17:03 <elliott> that's weird, feels like a universal constant changing
23:17:14 <ais523> elliott: you missed PJ retiring? wow
23:17:23 <elliott> ais523: I don't read Groklaw :)
23:17:25 <ais523> she still turns up now and again, especially if SCO are doing things
23:17:42 <ais523> but it's mostly written by Mark, who not only claims to be a lawyer, but obviously /is/ one from the way he talks
23:18:10 <elliott> heh
23:19:21 <elliott> ais523: what's the current state of SCO, btw?
23:19:34 <ais523> elliott: they sold pretty much everything they had to various shady companies
23:19:45 <ais523> and then tried to resume their litigation against IBM, believe it or not
23:19:48 <elliott> ais523: :D
23:19:54 <elliott> did it work?
23:19:55 <ais523> they tried to not resume IBM's counter-litigation against them at the same time
23:20:04 <ais523> I'm not sure
23:20:11 * Phantom__Hoover → sleep
23:20:12 -!- Phantom__Hoover has quit (Quit: Leaving).
23:20:16 <ais523> I think they haven't heard back from the judge yet, who is probably still laughing
23:20:24 <elliott> ais523: SCO's lawyers were paid upfront or something, right?
23:20:28 <elliott> ISTR something like that
23:20:36 <ais523> yes, they were
23:20:40 <ais523> and are probably regretting that
23:20:41 <elliott> :D
23:21:08 <ais523> I think the only reason they haven't just defaulted is to prove to other potential customers that if they're hired for something, they'll go through with it no matter how stupid it is
23:21:14 <elliott> ooh, they renamed themselves!
23:21:19 <ais523> who, SCO?
23:21:22 <elliott> yep
23:21:27 <ais523> I don't think so
23:21:29 <elliott> to... TSG Group, Inc.... so they're The SCO Group Group, Inc.
23:21:31 <elliott> ais523: http://en.wikipedia.org/wiki/SCO_Group
23:21:38 <ais523> oh, wow, I forgot about that
23:21:47 <elliott> The Santa Cruz Operation Group Group, Incorporated
23:22:03 <ais523> *Operations
23:22:22 <elliott> ais523: I don't think so? at least Wikipedia says it's Operation
23:22:28 <ais523> perhaps
23:22:34 <ais523> my memory is shaky
23:22:36 <ais523> it's still laughing too
23:22:40 <elliott> See also: Caldera OpenLinux and The Santa Cruz Operation
23:22:40 <elliott> [edit]The Santa Cruz Operation (SCO)
23:23:02 <elliott> The SCO website now gives details of a new appeal against Novell, Inc, dated September 9, 2010 and presumably lodged with the United States Court of Appeals.
23:23:11 <elliott> oh, there's more info below
23:23:17 <elliott> SCO filed amendments to their certificates of incorporation on 15 April 2011. The SCO Group, Inc. was renamed TSG Group, Inc., and SCO Operations, Inc. became TSG Operations, Inc.[4]
23:23:18 <elliott> On 30 August 2011, the United States Court of Appeals for the Tenth Circuit affirmed SCO's loss to Novell in the second jury/bench trial.[70] SCO's appellate brief had argued that there were evidentiary errors and other issues at trial. The affirmed verdict held that Novell did not transfer the UNIX copyrights to SCO in the amended asset purchase agreement, and that Novell has the right to waive certai
23:23:18 <elliott> n alleged license violations.
23:23:23 <elliott> hmm, so it's over?
23:25:21 <ais523> elliott: SCO can theoretically appeal to the supreme court, but they haven't tried
23:28:08 -!- Rod56 has left.
23:29:24 <elliott> bye Rod56
23:31:37 <elliott> hmm, this feels like interproject limbo :/
23:31:58 <ais523> elliott: what does?
23:32:06 <elliott> this not coding anything :)
23:32:24 <ais523> but you have plenty of projects
23:32:27 <ais523> Kitten, for instance
23:32:38 <elliott> indeed
23:32:51 <elliott> unfortunately, they're swapped out to disk
23:32:55 <elliott> and the scheduler isn't looking at them
23:33:22 <ais523> you're the scheduler?
23:33:48 <elliott> ais523: if I say yes, will you think that means I have control over it?
23:33:53 <olsner> I uninstalled scheduler long ago and switched to procrastinator
23:33:59 <ais523> elliott: I'm not sure
23:34:21 <elliott> oh no
23:34:23 <elliott> oh /no/
23:34:29 <elliott> oh /NO/
23:34:37 <oerjan> olsner: my scheduler did that all by itself.
23:34:37 <elliott> I think I've figured out what's happening
23:34:43 <ais523> with what?
23:34:49 <elliott> my scheduler is swapping out all currently active processes
23:34:58 <elliott> because the next one it'll switch to
23:35:00 <elliott> is @
23:35:26 <monqy> oh no
23:35:35 <ais523> is @ as disastrous as Feather?
23:35:46 <monqy> I thought feather too
23:35:50 <elliott> ais523: I don't /know/, it's only ever run as a background task
23:35:54 <oerjan> the black holes of vaporware
23:36:25 <elliott> ummm, someone give me something really interesting yet surprisingly easy to do, it's the only thing that can stop this
23:36:43 <ais523> elliott: write an optimizing parser for C
23:36:53 <elliott> ais523: an /optimising/ parser?
23:36:55 <ais523> yes
23:37:16 <olsner> a parser that optimizes itself?
23:37:19 <elliott> ais523: go on :)
23:37:20 <ais523> I suppose you could at least do constant-folding in the parse
23:37:31 <ais523> possibly even dead code elimination
23:37:57 <elliott> ouch
23:38:03 <elliott> that doesn't sound fun _or_ easy :)
23:38:17 <monqy> @ time
23:38:21 <ais523> elliott: hmm
23:38:28 <ais523> different language, then
23:39:31 <elliott> project "try and get interested in working on my current projects first": failed
23:39:39 <elliott> something has gone horribly wrong :(
23:40:09 <ais523> elliott: hmm… write a Scheme impl in JS
23:40:22 <elliott> I've already done that :)
23:40:35 <elliott> I think writing more JS code would be very bad for my health
23:40:45 <monqy> js impl in scheme; get them to run each other
23:41:05 <elliott> monqy: they would cry
23:41:14 <elliott> in harmony
23:41:21 <elliott> scheme because
23:41:22 <elliott> js is horrific
23:41:24 <elliott> js because
23:41:26 <elliott> it can never truly be scheme
23:41:41 <olsner> JavaScheme
23:41:49 <elliott> jeme
23:42:27 -!- derrik has quit (Quit: left).
23:42:44 <oerjan> write an optimizing parser for ... malbolge.
23:43:03 <elliott> oerjan: thanks: now i just want to give up on computing altogether
23:43:16 <oerjan> ME GO TOO FAR
23:43:40 <elliott> wait
23:43:44 <elliott> i can think of something
23:43:47 <elliott> that might work
23:43:59 <elliott> however
23:44:06 <elliott> it relies on me having a recent enough copy of it
23:45:04 <elliott> 2011-03-09.txt:19:30:24: <elliott> elliott@elliott-MacBookAir:~/Code/sixth$ make >/dev/null; wc -c sixth.o
23:45:04 <elliott> 2011-03-09.txt:19:30:24: <elliott> 75 sixth.o
23:45:04 <elliott> 2011-03-09.txt:21:31:02: <elliott> 81 sixth.o
23:45:05 <elliott> that's a start
23:45:08 * oerjan suddenly wonders if feather supports concurrency
23:45:33 <elliott> oerjan: I don't see why not
23:45:37 <elliott> probably lock-step
23:45:57 <oerjan> um i meant something _not_ lock-step
23:46:35 <elliott> 2011-09-03.txt:01:51:37: <elliott> also, I still have the code for that boot sector Forth...
23:46:36 <elliott> work with me here :'(
23:46:57 <elliott> 2011-03-12.txt:09:01:17: <elliott> I think si/di are free, it's just a boot sector. But it's tiny, so I don't really care that much :P
23:46:58 <elliott> waht
23:47:14 <Gregor> ... my graphics card has an audio card.
23:47:17 <ais523> oerjan: I don't think race-conditiony-concurrency is possible
23:47:19 <Gregor> My graphics card ... has an audio card.
23:47:29 <Gregor> MY GRAPHICS CARD HAS AN AUDIO CARD *brain explodes*
23:47:29 <oerjan> those are some weird animals http://www.dagbladet.no/2011/11/09/nyheter/utenriks/romfart/astrobiologi/dyrenesnyheter/18952143/
23:47:58 <olsner> Gregor: your what has a what now?
23:48:10 <Gregor> olsner: my GRAPHICS CARD has an AUDIO CAAAAAAAARD
23:48:22 <oerjan> your audio card has a smell card but you cannot detect it *MWAHAHAHAHA*
23:49:05 <elliott> 2011-05-17.txt:17:19:05: <ais523> I think all it does is listen to conversation by the actual elliott and relay back and forth
23:49:05 <elliott> wat
23:49:13 <ais523> context?
23:49:18 <elliott> 2011-09-15.txt:02:44:51: <elliott> Some researchers put forth the thesis that monads could help with concurrency. At this point, it looks like their thesis has failed.
23:49:18 <elliott> wat
23:49:21 <elliott> ais523: i dunno :D
23:49:48 <monqy> Bears etc. stranded in space
23:49:55 <elliott> wow, I never made sprunge pastes in here in 2011-{03,04,09}
23:49:56 <elliott> that's
23:49:59 <elliott> really inconvenient
23:50:01 <elliott> oh wait
23:50:02 <olsner> oerjan: maybe he can get fnarf feedback
23:50:05 <elliott> yes i did :>
23:50:20 <elliott> [elliott@dinky esoteric]$ grep -ri --color=always 'elliott.*sprunge\.us/' 2011-0{3,4,9}-??.txt | wc -l
23:50:20 <elliott> 104
23:50:22 <elliott> here goes nothing
23:50:29 -!- sllide has quit (Ping timeout: 256 seconds).
23:52:02 <monqy> I love bears etc.. They are super cute!
23:52:04 <monqy> (to microscopic animals to be)
23:52:07 <elliott> http://sprunge.us/fhXB ouch
23:52:25 <oerjan> monqy: i think the english name is tardigrade
23:52:28 <monqy> yes
23:52:36 <Gregor> <monqy> I love bears etc.. They are super cute! <-- referring to hairy gay men
23:52:43 <Gregor> <monqy> (to microscopic animals to be) <-- referring to his sperm
23:53:09 <oerjan> Gregor, master of interpretation
23:53:48 <elliott> monqy: do you remember news-ham
23:53:55 <monqy> yes
23:53:59 <monqy> zeptobot too
23:54:01 <ais523> elliott: was the hyphen part of the name?
23:54:10 <monqy> to distinguish news-ham from newsham
23:54:11 <ais523> also, why isn't monqy from Hexham? his name sounds like he should be
23:54:14 <elliott> ais523: yes, obviously; newsham owned newsham
23:54:19 <ais523> monqy: they were different people?
23:54:19 <elliott> `addquote <ais523> also, why isn't monqy from Hexham? his name sounds like he should be
23:54:21 <HackEgo> 717) <ais523> also, why isn't monqy from Hexham? his name sounds like he should be
23:54:25 <elliott> ais523: newsham was a person
23:54:28 <elliott> news-ham was my bot
23:54:31 <ais523> ah, aha
23:54:32 <olsner> news-ham - any relation to new-sham?
23:54:33 <ais523> how confusing
23:54:37 <elliott> ais523: a _complete_ coincidence, I assure you!
23:54:44 <elliott> newsham just stole the name of the fine news-dispensing ham IRC bot.
23:54:52 <monqy> why would i be from hexham
23:55:00 <ais523> because you're called monqy
23:55:04 <ais523> how is it pronounced, anyway?
23:55:09 <elliott> http://sprunge.us/GhYf news ham code (sometime before I added non-bbc feed support)
23:55:09 <monqy> is that a hexham thing
23:55:09 <olsner> monqy: if you're not from finland you're from hexham
23:55:13 <ais523> like "monkey", or slightly differently?
23:55:15 <elliott> it's so short :')
23:55:40 <ais523> monqy: note that the "you" in olsner's statement applies to you specifically
23:55:43 <ais523> not to people in general
23:56:00 <elliott> aha, http://sprunge.us/OYVO is one of the latest versions
23:56:03 <ais523> elliott: what language is that? golfScheme?
23:56:07 <elliott> ais523: picolisp
23:56:25 <olsner> the generic rule is not that much more complicated though
23:56:39 <ais523> esolang idea: a language that isn't sexp-based, but looks visually the same as Lisp
23:57:21 <ais523> what exactly did news-ham do? and why isn't it here atm?
23:57:30 <monqy> i haven't really decided what pronunciations for "monqy" are acceptiable
23:57:35 <elliott> http://sprunge.us/eXiM god, I forgot how lovely this thing is
23:57:51 <monqy> I was not expecting that
23:57:51 <Gregor> ais523: It was the world's least interesting non-ham-related news bot.
23:57:58 <elliott> ais523: whenever you pinged it, or said "what are the haps my friends", it'd give you a random recent BBC news topic
23:58:13 <ais523> that sounds surprisingly useful for a #esoteric bot
23:58:18 <elliott> ais523: you could also specify various topics which it would filter the result to (basically whatever BBC's feeds had, plus the Onion, plus a few other things) :P
23:58:19 <elliott> oh, it had reddit too
23:59:25 <olsner> http://warpdrive.se/9473 hilarious
2011-11-10
00:00:51 -!- tiffany has quit (Quit: nyu~).
00:06:07 <elliott> oerjan: hmm. oh no.
00:06:46 <elliott> oerjan: i may have
00:06:47 <elliott> lost
00:06:47 <elliott> the
00:06:48 <elliott> code
00:06:49 <elliott> :'(
00:06:56 -!- copumpkin has quit (Ping timeout: 260 seconds).
00:06:58 <elliott> ais523: write on my tombstone "killed by @", please
00:07:11 <ais523> elliott: don't be so hasty; you /might/ survive
00:07:22 <elliott> pfffft as if
00:07:47 <elliott> I think I've ended up wiping the backup with the forth
00:07:55 <elliott> so I'll have to find the latest sprunge of it and re-fix that bug
00:10:40 -!- copumpkin has joined.
00:12:45 <oerjan> elliott will survive forever, being ironically saved by a liver transplant from a kurzweil having a tragic accident.
00:13:08 <elliott> X-D
00:13:30 -!- augur has joined.
00:25:45 <elliott> [elliott@dinky esoteric]$ for x in $(grep 'elliott>.*http://sprunge\.us/' 2011-0{3,4,9}-??.txt | sed 's/.*\(http[^ ]\+\).*/\1/g;'); do if curl -sS "$x" | grep -c 'push 0xB800' >/dev/null; then echo "$x"; fi; done
00:25:46 <elliott> here goes
00:26:02 <elliott> ais523: behold ^
00:26:04 -!- oerjan has quit (Quit: Good night).
00:26:16 <ais523> elliott: that is indeed beholdable
00:26:28 <ais523> what, um, does it do?
00:27:06 <ais523> the existence of the special-cased months, and the curl invocation, means it's a bit hard to figure out
00:27:19 <ais523> and I can't remember what B800 does
00:27:26 <elliott> ais523: goes through sprunge pastes I made in 2011-{03,04,09} and prints out the ones that contain "push 0xB800", which was one of the first lines of my Forth bootsector code
00:27:40 <ais523> ah, I see
00:27:59 <ais523> hmm, I mentally read that number as "B800", with a sort of hexadecimal flavour to it
00:28:00 * elliott tries "bits 16", that should be 100% reliable
00:28:07 <ais523> I don't mentally pronounce the "0x" unless I'm thinking about it
00:28:10 <ais523> that is, B 8 hundred
00:28:15 <elliott> ais523: heh
00:29:14 <elliott> no additional results :/ guess I'll trawl through 2011-{04,05} to find where and how i fixed the bug
00:31:41 <elliott> 2011-04-13.txt:20:38:21: <newsham> i came here because olsner has a big mouth and elliott has a small forth
00:31:46 <elliott> olsner: speaking of that, do you have a copy of it
00:34:24 -!- MDude has quit (Read error: Connection reset by peer).
00:34:41 -!- MSleep has joined.
00:36:14 <elliott> 2011-04-24.txt:19:19:51: <elliott_> well that forth almost has a compiler now :D
00:36:15 <elliott> hmph
00:36:23 <elliott> i'm not going to rewrite that thing, it was long
00:36:40 <elliott> ais523: looks like @ it is
00:43:56 <elliott> monqy: pikhq: olsner: You're hired.
00:44:38 <ais523> elliott: http://www.groklaw.net/article.php?story=20111104202226210 is the article about SCO vs. IBM reopening
00:44:47 <ais523> it's 6 days old
00:44:48 <elliott> ais523: ah, thanks
00:45:04 <elliott> "SCO has once again filed an inadequately redacted document, so I've pulled the PDF until they replace it"
00:45:06 <elliott> Aww. :(
00:45:36 <elliott> ais523: hmm, why are they still calling themselves SCO if they're TSG now?
00:45:50 <ais523> they call everything SCO
00:45:54 <ais523> in an attempt to confuse people
00:45:54 <elliott> haha
00:46:05 <elliott> SCO vs. SCO (IBM)
00:46:28 <ais523> well, they did get IBM's name wrong first time they sued them
00:46:31 <ais523> and had to try again
00:46:41 <ais523> (they gave the place of incorporation incorrectly)
00:46:42 <elliott> "Didn't UnXis also get the SCO Group name? In the SCO bankruptcy filings since the sale, the entity formerly known as The SCO Group calls itself TSG. But UnXis *didn't* get the litigation against IBM. It's listed on the Excluded Assets. So who exactly is this asking to reopen the IBM litigation now? The filings say it's "The SCO GROUP, INC., by and through the Chapter 11 Trustee in Bankruptcy, Edward N
00:46:42 <elliott> . Cahn." Maybe the lawyers forgot themselves that they need to change the name. They can do that later, I suppose, but it's odd to anyone like me, who actually keeps track of the details."
00:46:45 * elliott cries.
00:48:04 <elliott> hmm, slicehost's emails to me are getting depressing
00:48:11 <ais523> are you still on slicehost?
00:48:15 <elliott> no :)
00:48:21 <ais523> and if not, are they trying to persuade you to come back?
00:48:36 <elliott> this one's signed "The Rackspace Team", and is about them discontinuing almost all their linux images
00:48:41 <elliott> ais523: considering you can't order new slices, I doubt it
00:48:51 <elliott> or, hmm, maybe you can if you already own an account
00:49:10 -!- ais523 has quit (Remote host closed the connection).
00:49:14 <elliott> ais523: but yeah, rackspace have been in the process of engulfing it completely over the last few months, really slowly
00:49:15 <elliott> argh
00:57:55 -!- elliott has changed nick to qwrji0j0qiwejioi.
00:58:00 -!- qwrji0j0qiwejioi has changed nick to elliott.
01:04:05 <elliott> Gregor: Yooooooo how's cunionfs :P
01:04:28 -!- MSleep has changed nick to MDude.
01:04:34 <Gregor> elliott: Unchanged!
01:04:51 <elliott> Gregor: Wooooooooooooooo
01:07:33 <elliott> Gregor: Did Kernel Modules for Dummies not work out :P
01:13:24 <Gregor> elliott: Nope, I ordered The Idiot's Guide, we'll see how that goes.
01:13:48 <elliott> Gregor: Awesome.
01:14:11 <elliott> Gregor: See, without the unionfs component, the only thing I can work on is the hard stuff, like a parser, evaluator, GC.
01:14:20 <elliott> So I haaaaate you for making me not do the easy stuff.
01:14:25 <elliott> Maybe I'll focus on the download progress bars some more.
01:17:56 <Gregor> Have I mentioned recently that my graphics card has an integrated audio card?
01:17:59 <Gregor> 'cuz I feel it needs to be said.
01:18:08 <elliott> Gregor: Yes. Use it to implement cunionfs! That will work.
01:18:15 <elliott> Gregor: Also, does it give you double audio.
01:20:08 <Gregor> Well yeah, the motherboard has an audio card too.
01:21:51 <elliott> Gregor: Sell it to audiophiles.
01:25:41 -!- pikhq has quit (Ping timeout: 260 seconds).
01:25:51 -!- copumpkin has quit (Ping timeout: 276 seconds).
01:30:24 -!- copumpkin has joined.
01:36:57 -!- zzo38 has joined.
01:39:49 <zzo38> I found my name is now on the Hackage but they didn't sent the password. It is because the system administrator accidentally made a mistake and blocking all incoming connections to their firewall (that meant they couldn't receive their own messages, either). But they fixed it yesterday, and I sent them another message to tell them it is hopefully fixed now. Tomorrow I can check.
01:40:10 <elliott> hoorj
01:40:24 <Gregor> Server maintenance: The greatestest?
01:42:58 <monqy> oh hey another brainfuck equivalent
01:43:14 <Gregor> YESSSSSSSSS
01:43:19 <Gregor> We need more minor rewrites of BF!
01:44:48 <monqy> Wordfuck (also known as Natural BF-based language with common instructions and syntax of that language, or just NBFBLWCIASTL) is a language created by User:Marcsances identical to Brainfuck, except the way to write statements. That makes of Wordfuck even more difficult than Brainfuck (if you want to write beautiful programs, if not, it's just as easy as Brainfuck, but longer).
01:44:49 <elliott> Gregor: monqy: argh this one is annoying because i need to extend my bf-defining metalanguage to support it
01:44:55 <monqy> :(
01:44:57 <elliott> since it's based on length, not direct textual substitution
01:45:12 <elliott> omg
01:45:14 <elliott> monqy: what if
01:45:21 <elliott> monqy: i make my metalanguage
01:45:22 <elliott> just brainfuck
01:45:27 <monqy> omg
01:45:27 <elliott> you just write a language->bf compiler in bf
01:45:28 <elliott> and that
01:45:28 <elliott> is
01:45:31 <elliott> :')
01:45:33 <elliott> beautiful
01:45:44 <monqy> also i have to leave?? haha school
01:45:44 <elliott> i am bad
01:45:48 <elliott> school more like
01:45:49 <elliott> "drool"
01:45:52 <elliott> "on your self"
01:45:53 <elliott> "because"
01:45:54 <elliott> "school sucks"
01:45:55 <monqy> :'(
01:46:04 <elliott> "and because yu are dumb"
01:46:04 <elliott> "for
01:46:05 <elliott> "
01:46:07 <elliott> "schole"
01:46:12 <elliott> just kidding monqy you are coles
01:50:10 <Gregor> Stay in school, kids!
01:50:18 * Gregor gets out his acoustic PSA guitar.
01:50:43 <elliott> "st ay in school or you will be like Gregor and no cunionfs will ever be yours"
01:50:46 <elliott> *tm))
01:50:54 <Gregor> School is cool, when you learn you rule! More bad puns because PSA's are cruel!
01:57:14 <shachaf> Is elliott in school?
01:57:15 * shachaf finds elliott's time zone habits a bit mysterious.
01:57:32 <elliott> Watch as they become even more mysterious:
01:57:33 -!- elliott has quit (Quit: !).
01:59:59 -!- sllide has joined.
02:07:28 -!- TeruFSX has joined.
02:09:45 -!- Sgeo|web has joined.
02:13:25 -!- pikhq has joined.
02:15:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
02:21:46 -!- pikhq has quit (Ping timeout: 240 seconds).
02:21:48 -!- pikhq_ has joined.
02:25:11 -!- sllide has quit (Read error: Connection reset by peer).
02:33:34 -!- hagb4rd has joined.
02:41:11 -!- copumpkin has joined.
02:41:16 -!- copumpkin has quit (Changing host).
02:41:16 -!- copumpkin has joined.
02:49:25 -!- elliott has joined.
02:51:41 <elliott> Gregor: So on thinking about it (= procrastinating more on the harder parts of the package manager), I'm pretty sure that the ideal solution for atomic branch-switching for me would be anything that lets me trivially emulate the following: "Have a process tree all set to source their branches from a file. The file is re-read, and every process in the tree switched to the new branches simultaneously, upon writing to a special file."
02:52:01 <elliott> (A way to simply update the tree with a new branch list atomically without actually involving the file path in the cunionfs stuff qualifies as trivial emulation.)
03:10:27 <zzo38> Another way to make Wordfuck variation, is, punctuation doesn't count, and word with 1 letter means to ignore this word and the next one, word with more than nine letters you put the digits according to the number of letters in the word and do the command according to their decimal digits.
03:10:57 <zzo38> The way the example does the words not very good. Maybe the variation way writes proper wording instead.
03:14:24 <zzo38> For the article about Lenta, I think either the instructions is wrong or the example is wrong, because it says $ move left but you have to move right to start the program given in the examples.
03:14:43 -!- madbr has joined.
03:16:16 <madbr> hmm, had an interesting idea for a CPU architecture
03:16:38 <zzo38> madbr: OK. What is your idea?
03:17:02 <madbr> probably ends up being similar to how out of order cpus work
03:17:13 <madbr> anyways
03:17:37 <madbr> a cpu with 2 modes: "RISC" mode, and what could be called "dataflow" mode
03:18:14 <madbr> risc mode works just like any other architecture and is used for all the non-performance sensitive code
03:18:59 <madbr> ie anything that's probably not going to be in code cache and/or does lots of memory access so it's not going to be faster than 1 op/cycle anyways
03:20:10 <madbr> dataflow mode is used for small loops that churn lots of data, like say a memcopy for instance, or a sound mixing loop
03:20:49 <madbr> sets up the cpu as ~30 ALUs, each leading to one register
03:21:48 <madbr> on each cycle, each of the ALUs read 1 or 2 values from the other registers, performs a math op on it, and next cycle its register will take the resulting value
03:22:10 <elliott> how does memory interact with that
03:22:17 <elliott> i.e. how does that let you do memcpy
03:23:14 <madbr> one of the ALU ops is "load from address", will probably be only available on few of the units, and probably stall everything else on cache misses
03:23:15 -!- olsner has quit (Ping timeout: 240 seconds).
03:24:35 <madbr> some of the units will probably also be writing units, not doing any math ops but taking an adress and a value and writing there
03:27:21 <madbr> memcpy is pretty simple so it would probably look something like this:
03:27:21 <madbr> r0 = r0 + 4
03:27:21 <madbr> r1 = r1 + 4
03:27:21 <madbr> r2 = load [r0]
03:27:21 <madbr> rWrite: [r1] = r2
03:29:05 <madbr> obviously r2 will lag a cycle behind r0 so some mechanism has to be added to deal with that
03:30:37 <madbr> for algos larger than the number of units, some kind of "multi cycle" mechanism would have to be used, where the operations for each unit are cycled around
03:32:07 <madbr> so basically it's somewhere between a VLIW processor and some kind of mini-FPGA
03:35:39 <pikhq_> elliott: Oooh. Oooh. @ gets really cheap memcpy basically for free.
03:35:52 <elliott> pikhq_: Hmm, howso?
03:36:00 <pikhq_> Rewrite the page table.
03:36:15 <madbr> haha nice
03:36:17 <pikhq_> Do "normal" memcpy for first/last ~4k if necessary.
03:36:18 -!- olsner has joined.
03:36:31 <elliott> pikhq_: That, um, might do badly if anyone mutates it :P
03:36:38 <pikhq_> Admittedly, this is nothing unique to @, but it'd be much *easier* to pull off in @ than in UNIX.
03:36:53 <zzo38> It doesn't seem rewriting the page table really copies the memory, unless you know you will never change the data afterward until the program is finished
03:36:56 <madbr> what if ther pages don't align?
03:36:59 <pikhq_> elliott: That's why you make it COW.
03:37:10 <elliott> pikhq_: heh, that would work
03:37:12 <elliott> pikhq_: why doesn't glibc do that
03:37:22 <elliott> madbr: <pikhq_> Do "normal" memcpy for first/last ~4k if necessary.
03:37:23 <pikhq_> elliott: Because the page table is not exposed to userspace.
03:37:26 <elliott> oh i see
03:37:32 <elliott> pikhq_: yeah what if they don't align what now pikhq_
03:37:39 <elliott> also I'm using >4k pages so that's a common scenario
03:38:01 <madbr> elliott: works if the start/end are misaligned I guess, but afaik not if the data is misaligned?
03:38:02 <pikhq_> elliott: *Clearly* in @ your "memcpy" wouldn't copy from address to address, it would be more of an object clone function.
03:38:20 <pikhq_> So, you merely need to have the same alignment as the original object.
03:39:02 <elliott> pikhq_: Sooo cheating :P
03:39:04 <madbr> aligned to 4k pages? :D
03:39:16 <pikhq_> elliott: Only by normal standards.
03:39:19 <elliott> madbr: That's not all that uncommon, really
03:39:34 <pikhq_> @ should milk the removed abstraction layers for all it's got. :)
03:40:31 <pikhq_> (obviously @ still *has* abstraction layers, but they're nowhere near as Carved In Stone as in traditional OS design, I'd imagine.)
03:40:40 <zzo38> Does GHC allow classes with no parameters?
03:41:19 <elliott> no
03:42:41 <madbr> but yeah the risc+"dataflow" cpu thing is kinda like an attempt at a CPUGPU :D
03:43:06 <elliott> cgpu
03:45:49 <madbr> might need some more parallelism for that
03:52:22 <elliott> pikhq_: Anyway, I don't know why you'd need to clone an object.
03:52:38 <elliott> pikhq_: Since my current design still has immutable objects.
03:53:23 <pikhq_> Okay, then you'd be a moron to do that.
03:53:58 <elliott> pikhq_: "@: really fast at doing something really pointless"
03:54:17 <pikhq_> :D
03:54:31 <elliott> pikhq_: Hmm, what granularity is COW done at? Page level?
03:54:58 <pikhq_> Page level.
03:55:01 -!- Darth_Cliche has joined.
03:55:14 <pikhq_> It functions on page faults.
03:55:21 <elliott> pikhq_: Then it could still be useful. Consider a large (many megabyte) unboxed array's underlying storage.
03:55:38 <elliott> pikhq_: You want to make a copy of this storage with one word in the middle changed.
03:55:43 <pikhq_> Certainly.
03:55:52 <shachaf> elliott: You're back.
03:55:56 <elliott> pikhq_: Fiddling with the page tables means you only have to copy one page for the purpose.
03:56:03 <shachaf> I don't know whether that makes your time zone more or less mysterious.
03:56:11 <elliott> shachaf: I have an infinite supply of mysterions.
03:57:05 <elliott> pikhq_: Hmm, that actually sounds like a pretty big win.
03:57:22 <pikhq_> shachaf: His time zone is very clear, his mapping from time to consciousness status is not.
03:57:26 <elliott> pikhq_: Large immutable vectors kinda suck in GHC because you're copying all the time.
03:57:36 <elliott> pikhq_: Although, to be fair, copying even a page all the time isn't instant...
03:57:42 <elliott> But it beats copying hundreds of 'em.
03:57:54 <pikhq_> Yup.
03:57:58 <Sgeo|web> I have decided I will start calling everyone LamE
03:58:30 <elliott> pikhq_: Hmm, how easy is it to fuck with the page tables?
03:58:45 <elliott> I guess faster than copying ~2 MiB per page whatever the circumstances :P
03:59:05 <pikhq_> The only issue is that you need to do at least a partial TLB flush when you update them.
03:59:17 <pikhq_> Otherwise, it's just mutating a fairly simple data structure.
03:59:18 <elliott> Right. I don't really have an intuition for the constant factors involved there.
03:59:47 <pikhq_> Bit less than a cache miss, I think.
03:59:59 <pikhq_> It's significantly better if you only do a partial TLB flush.
04:00:14 <elliott> Right.
04:00:55 <pikhq_> This is something that OSes do every time they task switch. :)
04:01:08 <pikhq_> (though, of course, @ would have no need to do it then)
04:04:54 -!- gouaf has joined.
04:09:00 <elliott> hi gouaf
04:09:02 <elliott> `? welcome
04:09:05 <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
04:10:17 * Sgeo|web wants to see some mysic esotericer who manages to conclude that "programming language" is how to describe magik rituals or something
04:10:45 <Sgeo|web> Which reminds me, can someone help me with this magic spell I've been working on?
04:13:47 <madbr> hmm, i wonder if being non deterministic could help making a turing tarpit with less instructions/functionality
04:26:40 <pikhq_> It's spelled "magick", I'm pretty sure, anyways.
04:26:45 <pikhq_> Or, if you're not a moron, "magic".
04:30:17 <elliott> pikhq_: I wonder what @'s in-memory allocator will look like (i.e. that decides a physical address to put an object at when it's first allocated)...
04:30:26 <elliott> As opposed to the one that decides where on the disk to put it after a while.
04:30:40 <shachaf> "disk"?
04:30:55 <shachaf> By the time the first line of code in @ is written, we'll all be using memristors, man.
04:32:13 <zzo38> Is this a proper group? mempty = Equivalence (==); mappend (Equivalence f) (Equivalence g) = Equivalence $ \x y -> (x == y) /= (f x y /= g x y); minverse = id;
04:38:00 <pikhq_> shachaf: Where "disk" means "the slowest and largest memory on the system".
04:38:11 <elliott> pikhq_: No, that's the internet.
04:38:18 <shachaf> The Network is the Computer.
04:38:27 <pikhq_> Oh, well. Of course it would be.
04:38:42 <elliott> shachaf: Anyway, shaddap, I had an unwanted breakthrough about @ :P
04:38:48 <pikhq_> Except that if ISPs got off their asses it wouldn't be.
04:39:20 <pikhq_> Cable can provide more bandwidth than is on my system bus.
04:39:56 <elliott> How slow is your system bus
04:40:33 <pikhq_> Not very. Cable is just *really* underutilised.
04:45:36 <elliott> Gregor: Convince me not to spend ridiculous amounts of money on some worthless bits of paper with Ryan North's signature and drawings of T-Rex drawn to hat specifications as supplied by me
04:46:21 <shachaf> elliott: Spending money makes you a communist.
04:47:14 <elliott> shachaf: Yes, quite.
04:47:19 <shachaf> Also, Dinosaur Comics are, like, boring.
04:47:40 <Gregor> shachaf: SHUNNNNNNNNNNNNNN
04:48:15 <shachaf> "Shun magic, and shun the appearance of magic! Shun everything, and then shun shunning!"
04:48:40 <elliott> shachaf: Your opinions are so wrong, SO WRONG.
04:49:03 <elliott> Dinosaur Comics is something I never have, and never will, dislike; it is the single beacon of hope that proves to me that I am essentially a good person at heart.
04:49:12 <shachaf> http://www.youtube.com/watch?v=gYz5qnIkf20#t=051s
04:49:53 <elliott> Gregor: What's the best kind of hat.
04:50:12 <Gregor> elliott: Depends on the kind of head!
04:50:21 <Gregor> Hard to go wrong with a Trilby or Derby/Bowler.
04:50:22 <elliott> Gregor: Tyrannosaurus rex, green.
04:50:26 <Gregor> lol
04:50:40 <Gregor> For T-Rex, I'd have to say a top hat.
04:50:51 <elliott> Gregor: I don't think you understand it literally says on the site that you can specify two kinds of hat to be doodled on a doodle of T-Rex by Ryan North???
04:50:58 <elliott> "If you chose YES, please write briefly to whom the books should be made out and the types of hats T-Rex should be wearing!"
04:50:59 <elliott> Direct quote???
04:51:02 <Gregor> elliott: Whaaaaaaaaa
04:51:18 <Gregor> elliott: Well, in that case, you want it to be doodlerific
04:51:20 <pikhq_> Is top hat a different kind of hat from top hat?
04:51:22 <shachaf> elliott: Speaking of comics, did you see that great comic copumpkin linked to yesterday?
04:51:27 <elliott> shachaf: Which one?
04:51:37 <copumpkin> several
04:51:54 <elliott> shachaf said singular I am betrayed.
04:51:56 <shachaf> copumpkin: I'm talking about that one that I actually read.
04:51:56 <Gregor> Soooooo, tyrolean (yessssss) and either fez or pith helmet.
04:52:04 <shachaf> "read"
04:52:11 * shachaf wonders whether to inflict it on elliott.
04:52:15 <elliott> Gregor: Fez OR pith helmet.
04:52:27 <Gregor> Pith ... fez?
04:53:56 <elliott> Pith... fez...
04:54:01 <elliott> shachaf: I'm waaaaiting.
04:54:07 <shachaf> elliott: Oh, you want it?
04:54:11 <shachaf> @localtime elliott
04:54:12 <lambdabot> Local time for elliott is Thu Nov 10 04:53:27
04:54:23 <shachaf> http://comic.naver.com/webtoon/detail.nhn?titleId=350217&no=31&weekday=tue
04:54:24 <elliott> My IRC client is actually on Icelandic time.
04:54:38 <shachaf> I can't say I recommend it.
04:55:02 <elliott> shachaf: Oh, not that thing again. That was all over the internet weeks ago.
04:55:07 <shachaf> Oh.
04:55:16 * shachaf feels betrayed by copumpkin now.
04:55:22 <copumpkin> why?
04:55:34 <copumpkin> elliott: how about the other comics I linked to?
04:55:35 <shachaf> copumpkin: I demand the latest in unpleasant entertainment.
04:55:37 <shachaf> Well, copumpkin had some other links that I decided not to go to after seeing that one.
04:55:44 <elliott> copumpkin: I didn't see the links! It's all shachaf's fault.
04:56:02 <shachaf> elliott: It's your fault because the links were posted in that one channel all the cool people go to.
04:56:11 -!- MDude has changed nick to MSleep.
04:56:14 <elliott> shachaf: You mean the one cheater never shuts up in?
04:56:35 <copumpkin> elliott: well, there's this NSF[W/L] COMIC OF DOOM: http://ikuikuiku.livejournal.com/53281.html
04:57:01 <elliott> Who needs [W/L]s.
04:57:31 <zzo38> I did find some way with barrier monads to do liftIO and even lift things in other monads too, but it isn't really a monad transformer and it requires the use of unsafeCoerce
04:57:45 <copumpkin> there's also a fairly disturbing but long http://read.mangashare.com/Uzumaki, and a much shorter http://brasscockroach.com/h4ll0w33n2007/manga/Amigara-Full/Amigara.html
04:58:26 <elliott> copumpkin: Barrier monads! Talk to zzo38 about barrier monads.
04:59:32 <shachaf> Barrier monads have such an impressive barrier that unsafeCoerce is needed to penetrate it.
04:59:42 <copumpkin> also, if you want a good, depressing (but not horror) comic, read http://www.viruscomix.com/page198.html
05:00:17 <copumpkin> elliott: too tired to think
05:00:20 <zzo38> shachaf: O, that's why!!!
05:02:36 <pikhq_> copumpkin: Well, fucking hell.
05:02:52 <copumpkin> pikhq_: which?
05:03:08 <copumpkin> I can think of two very different kinds of "fucking hell" my links would give rise to
05:03:12 <pikhq_> The first one.
05:03:15 <copumpkin> oh ok
05:03:43 <copumpkin> yeah, that one's rather, um, different
05:04:13 <pikhq_> Hmm. I somehow missed that Winston Rowntree one.
05:04:52 <copumpkin> good times, eh
05:06:58 <pikhq_> That was a bit unlike Winston Rowntree.
05:07:08 <pikhq_> I've come to expect more words than images from him. :P
05:09:15 <zzo38> newtype FrontIO = FrontIO (IO BackIO); newtype BackIO = BackIO BackIO; instance MonadIO (Barrier FrontIO BackIO) where { liftIO = fmap unsafeCoerce . yield . FrontIO . fmap unsafeCoerce; }; Although it is possible to make it do more, and probably in more generalized way.
05:09:42 <copumpkin> pikhq_: yeah
05:10:12 <zzo38> Maybe like this: newtype Unsafe = Unsafe Unsafe; newtype FrontT m f = FrontT (Either f (m Unsafe)); newtype BackT m b = BackT Unsafe;
05:11:19 <pikhq_> copumpkin: It's a bit hard to describe Subnormality as a webcomic, really. More of a web-illustrated-essay-series.
05:11:27 <pikhq_> :P
05:11:37 <pikhq_> Why the hell do I use ":P" so much, anyways?
05:11:48 <copumpkin> cause you gotta be upbeat after that comic
05:11:56 <copumpkin> cause otherwise you just cry :P
05:12:09 <pikhq_> Sounds about right.
05:20:29 <madbr> hmm
05:20:59 <madbr> would be neat to have a language where all variables can only be assigned once
05:24:07 <pikhq_> That's called static single assignment form, and it's used in the IR of any decent compiler for a language relying on mutable state.
05:24:18 <zzo38> LLVM allows only one command to assign each variable, you cannot have multiple commands assigning to the same variable; but you can still loop and reassign them, and you can also read/write memory so you can assign however you want.
05:24:28 <pikhq_> It is also isomorphic to CPS.
05:24:50 <madbr> IR?
05:26:01 <pikhq_> Intermediate Representation.
05:26:26 <madbr> mhm
05:28:09 <madbr> what about one where you can't reassign variables on looping :D
05:28:36 <Sgeo|web> Isn't that what you just asked for?
05:28:42 <madbr> yeah
05:28:57 <madbr> such that you need to keep growing arrays and have some kind of garbage collector
05:29:11 <pikhq_> We call *that* Haskell.
05:29:20 <madbr> heh
05:29:37 <pikhq_> Or, really, lambda calculus.
05:29:53 <pikhq_> Though strictly speaking you can't assign any variables in LC. :)
05:30:37 <madbr> tried some unlambda... looks a lot like string rewriting really :D
05:31:12 -!- gouaf has quit (Quit: Leaving).
05:31:46 <madbr> the strings don't really grow indefinitely afaik... they might grow (s combinator!) or shrink (k combinator !) as you evaluate it :o
05:32:51 <madbr> and afaik it's clear when something has become inaccessible and should get collected :o
05:34:09 <pikhq_> That would be because you have no idea how evaluation of functional programming languages works. :)
05:34:33 <madbr> don't have any experience with that no
05:44:59 <elliott> madbr: fsvo clear
05:45:08 <elliott> unlambda has a form of laziness
05:45:22 <elliott> so i believe you can do cyclic structures
05:46:00 <madbr> will have to look into that
05:50:17 <zzo38> If an expression in GHCi is of type (IO t) where there is no instance (Show t) is it supposed to display no error message for that? For example, return id :: IO (a -> a) displays no message.
05:58:09 <zzo38> newtype Unsafe = Unsafe Unsafe; newtype FrontT m f = FrontT (Either f (m Unsafe)); newtype BackT m b = BackT Unsafe; type BarrierT f b m t = Barrier (FrontT m f) (BackT m b) t; bliftMonad :: Functor m => m t -> BarrierT f b m t; bliftMonad = fmap unsafeCoerce . yield . FrontT . Right . fmap unsafeCoerce;
05:58:20 <elliott> joy
05:58:36 <monqy> joyest
05:58:37 <monqy> hapey
05:58:47 <zzo38> bliftBarrier :: Barrier f b t -> BarrierT f b m t; bliftBarrier = convert (FrontT . Left) unsafeCoerce; executeBT :: Monad m => BarrierT f b m t -> m (Either t (f, b -> BarrierT f b m t)); executeBT (Unit x) = return $ Left x; executeBT (Fail x) = fail x; executeBT (Barrier (FrontT (Left a)) c) = return $ Right (a, c . BackT . unsafeCoerce); executeBT (Barrier (FrontT (Right a)) c) = a >>= executeBT . c . BackT;
05:59:47 <zzo38> FrontT and BackT can be opaque types (without exporting their constructor), and Unsafe doesn't need to be exported at all, because it is only used internally.
06:00:43 <monqy> what does unsafe do
06:01:23 <zzo38> Do you mean the Unsafe type? It does nothing. It is only there for use with unsafeCoerce
06:01:31 <elliott> zzo38: are you sure Unsafe should not be Any from GHC.Exts
06:01:40 <elliott> the way you are coercing can break
06:01:53 <elliott> with Any it's guaranteed to work
06:02:24 <zzo38> elliott: Yes; I want to ask that too. Do you see any possibilities of breaking in my code?
06:02:41 <elliott> other than that, no
06:03:53 <zzo38> I don't see any Any in GHC.Exts
06:04:22 <elliott> it's documented in GHC.Prim
06:04:29 <elliott> but you import it from Exts
06:05:59 <zzo38> Why is that?
06:06:24 <elliott> dunno, internal compiler stage bootstraping blah :)
06:06:58 <zzo38> OK, I fixed that in my program, now it uses Any instead of Unsafe
06:07:19 <elliott> yay
06:09:28 <zzo38> At least GHC.Prim does say to import GHC.Exts instead. And looking at the codes for GHC.Exts, it does reexport GHC.Prim
06:09:44 <zzo38> It also says that max tuple size is 62
06:31:01 <madbr> yeah ok I have a preliminary syntax for monoassignment language
06:31:18 <madbr> conditions : variable = value
06:31:57 <madbr> conditions are = != < > <= >= comparison operators, joined together with boolean AND
06:32:47 <madbr> values are calculated with math operators, kinda like C
06:33:13 <elliott> go on
06:33:53 <madbr> if a variable name never gets any assignment in any of the statements, it's an iterator of some kind
06:34:18 <madbr> and can be used in array assignments etc
06:35:03 <madbr> inputsize, outputsize, input[] and output[] are predefined for those functions
06:35:43 <madbr> so for instance, this partitions the input into two arrays, everything up to the first '@', and then everything else:
06:35:57 <madbr> i1c[0]=1
06:35:57 <madbr> i1c[i] input[i]!='@': i1c[i+1] = 1
06:35:57 <madbr> i1c[i] input[i]='@': pend = i+1
06:35:57 <madbr> i<pend : pr[i] = input[i]
06:35:57 <madbr> i>=pend i<inputsize : in[i-pend] = input[i]
06:36:05 -!- derrik has joined.
06:36:13 <elliott> looks fun
06:36:59 <Darth_Cliche> Goodnight all.
06:37:19 <elliott> bye
06:37:33 <madbr> this implements the '[' operator in brainfuck:
06:37:43 <zzo38> OK so that is how it works.
06:37:49 <madbr> ic[i] pr[ip[i]]='[' dat[i][dp[i]]=0 : ipl[i][0] = 1
06:37:49 <madbr> ipl[i][j] pr[ip[i+j]]='[' : ipl[i][j+1]=ipl[i][j]+1
06:37:49 <madbr> ipl[i][j]!=1 pr[ip[i+j]]=']' : ipl[i][j+1]=ipl[i][j]-1
06:37:49 <madbr> ipl[i][j] =1 pr[ip[i+j]]=']' : ip[i+1] = ip[i]+j+1
06:37:50 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:38:13 <zzo38> Make an article for it and call it something.
06:38:29 <madbr> still a rough draft
06:38:47 <madbr> gotta make it into a nice, insane tarpit :D
06:38:53 <madbr> also a bit easy
06:39:47 <elliott> no
06:39:52 <elliott> don;t make it harder
06:40:04 <elliott> you'll destroy the elegance :)
06:41:29 <madbr> no idea how you'd actually implement it, though it would probably require some sort of lazy evaluation and some insane garbage collector :D
06:42:16 <elliott> does not look that bad...
06:42:28 <zzo38> I would like to see an article of it anyways. And then it could make discussion in case it seem there ought to be changes made.
06:47:30 -!- Zuu has quit (Ping timeout: 244 seconds).
06:52:41 <madbr> night
06:52:42 -!- madbr has quit (Quit: Radiateur).
07:10:08 -!- zzo38 has quit (Remote host closed the connection).
07:30:54 <shachaf> elliott: You sure are missing out on Codensity and Yoneda and Kan extensions and all those things cool people talk about in #-blah.
07:31:02 <shachaf> Where "cool people" means edwardk, of course.
07:31:33 <elliott> Someone drag edwardk into here. (Maybe don't.)
07:32:58 <coppro> haha
07:36:31 <shachaf> elliott: Did you ever got those 5-grams?
07:36:36 * shachaf suspects elliott lost interest.
07:37:45 <elliott> shachaf: Lost the code with the other machine, but can and will reproduce it soon.
07:38:21 <shachaf> What happened to the other machine?
07:38:36 <Sgeo|web> He got fed up with not having a number row, clearly
07:38:45 * Sgeo|web actually has no idea
07:38:49 <Sgeo|web> If that's even the same machine, or what
07:41:59 <elliott> +
07:44:06 <elliott> shachaf: It decided it was tired of being a computer, turned itself off while I was using it, and then refused to turn back on again.
07:44:30 <shachaf> Is the hard drive dead?
07:44:54 <elliott> shachaf: The hard drive is welded to the motherboard.
07:45:39 <shachaf> What is this?
07:46:09 <fizzie> He got tired of it rattling around in there and took a welding torch.
07:46:15 <fizzie> (Disclaimer: not actually true.)
07:46:55 <shachaf> fizzie: Don't worry, I mentally append "(Disclaimer: not actually true.)" to everything you say.
07:47:01 <elliott> shachaf: It's one of them breathable, readable, waterproof raincoat computers.
07:47:15 <elliott> `log (Disclaimer: not actually true.)
07:47:44 <HackEgo> 2011-11-10.txt:07:46:15: <fizzie> (Disclaimer: not actually true.)
07:48:04 <olsner> elliott: I'm hired? what for?
07:48:14 <elliott> olsner: @!!!!!!!!
07:48:21 <Sgeo|web> Disclaimer: I'm going to be awake very late tomorrow
07:48:44 <elliott> OH NOOOO
07:57:22 <shachaf> elliott: U+MAD?
07:57:31 <monqy> you bad
07:57:38 <shachaf> U+MAD is totally a code point.
07:58:10 <shachaf> It matches the regexp /^U\+\w+$/, after all.
07:58:18 <elliott> shachaf: DevHC can't make me mad once I realised that he actually just assumes you're stupid for the first ~3 minutes of any disagreement.
08:00:08 <shachaf> Aw.
08:00:31 <shachaf> u not even a little bit mad?
08:00:44 <elliott> I'm opposite mad.
08:01:07 <shachaf> comad?
08:01:12 <monqy> nomad
08:01:17 <shachaf> monqy++
08:01:29 <elliott> :-D
08:01:39 <shachaf> I propose the name "nomad" instead of "comonad".
08:02:57 <Sgeo|web> I think I tend to assume people are stupid
08:02:58 <Sgeo|web> :/
08:03:11 * Sgeo|web still does nlt quite understand comonads >.>
08:03:34 <elliott> Sgeo|web: They usually are, just not in the way you expect them to be. (This is based on piles and piles of evidence, i.e. a few days in #haskell).
08:05:47 <elliott> shachaf: You know, I think it's only a matter of time before DevHC sincerely asks me whether I mad.
08:05:49 <shachaf> elliott: I always mentally append "(This is based on piles and piles of evidence, i.e. a few days in #haskell)." to everything you say.
08:06:04 <elliott> shachaf: Indeed. (I am a genius).
08:06:24 <shachaf> elliott: You are a genius (this is probably wrong).?
08:06:30 <elliott> Darn.
08:07:47 <monqy> hi (Disclaimer: not actually true.)
08:09:11 <shachaf> @hug monqy
08:09:11 <lambdabot> http://hackage.haskell.org/trac/ghc/newticket?type=bug
08:09:36 <monqy> oh no
08:09:39 <monqy> what have you done
08:09:58 <elliott> turned monqy into bug
08:10:11 * Sgeo|web wants to see elliott be wrong about something
08:10:18 <elliott> Sgeo|web: That literally never happens.
08:12:25 <shachaf> Sgeo|web: There you go. A great example.
08:12:44 <fizzie> 2010-10-12 02:00:00 <elliott> i'm probably wrong, i know nothing about this stuff :)
08:13:02 <elliott> That was a joke.
08:13:06 <shachaf> ddarius was wrong about something the other day!
08:13:07 <elliott> I'm actually a genius.
08:13:10 * shachaf was astonished.
08:20:08 -!- sebbu3 has changed nick to sebbu.
08:22:13 -!- monqy has quit (Quit: hello).
08:37:40 <elliott> > (f <*> g) x
08:37:41 <lambdabot> Ambiguous type variable `a' in the constraints:
08:37:41 <lambdabot> `SimpleReflect.FromExpr ...
08:37:42 <elliott> > (f <*> g) x :: Expr
08:37:43 <lambdabot> Ambiguous type variable `a' in the constraints:
08:37:43 <lambdabot> `SimpleReflect.FromExpr ...
08:37:45 <elliott> :-(
08:37:51 <elliott> > ((==) <*> reverse) "a"
08:37:52 <lambdabot> True
08:37:52 <elliott> > ((==) <*> reverse) "ab"
08:37:53 <lambdabot> False
08:37:53 <elliott> > ((==) <*> reverse) "aba"
08:37:54 <lambdabot> True
08:45:35 <Deewiant> > (f <*> (g :: Expr -> Expr)) x :: Expr
08:45:38 <lambdabot> f x (g x)
08:46:55 <elliott> Deewiant: SimpleReflect should suck less
08:51:21 -!- derrik has quit (Ping timeout: 252 seconds).
08:52:36 -!- derrik has joined.
08:57:40 -!- elliott has quit (Remote host closed the connection).
09:00:50 -!- elliott has joined.
09:15:14 -!- myndzi has quit (Read error: Connection reset by peer).
09:15:41 -!- myndzi has joined.
09:15:43 -!- CakeProphet has joined.
09:23:26 -!- yiyus has quit (Ping timeout: 260 seconds).
09:50:22 -!- yiyus has joined.
09:57:23 -!- ais523_ has joined.
09:58:24 -!- GreaseMonkey has quit (Quit: The Other Game).
09:59:58 <elliott> hi ais523_
10:00:27 <ais523_> hi elliott
10:00:30 -!- ais523_ has changed nick to ais523.
10:04:18 -!- Jafet has joined.
10:08:52 -!- Aune has joined.
10:09:25 -!- oerjan has joined.
10:14:54 <oerjan> <elliott> "Didn't UnXis also get the SCO Group name? In the SCO bankruptcy filings since the sale, the entity formerly known as The SCO Group calls itself TSG. But UnXis *didn't* get the litigation against IBM. It's listed on the Excluded Assets. So who exactly is this asking to reopen the IBM litigation now? The filings say it's "The SCO GROUP, INC., by and through the Chapter 11 Trustee in Bankruptcy, Edward N
10:15:05 -!- derrik has quit (Quit: left).
10:15:25 <oerjan> could this mean they've split up so much there is no one left who has standing to sue? :P
10:15:58 <oerjan> (guess not.)
10:16:11 <elliott> oerjan: it wouldn't surprise me :)
10:27:23 <ais523> oerjan: it won't stop them suing anyway
10:30:52 <oerjan> mhm
10:38:51 <oerjan> 05:45:08: <elliott> unlambda has a form of laziness
10:38:51 <oerjan> 05:45:22: <elliott> so i believe you can do cyclic structures
10:38:53 <oerjan> nope.
10:39:02 <elliott> lame
10:39:06 <oerjan> reference counting works for unlambda.
10:39:12 <elliott> l a m e
10:43:00 <elliott> oerjan: hm doesn't that basically mean that you have to manage your own memory after a certain point in unlambda
10:43:09 <elliott> to avoid leaks with simulation of cyclic structures
10:43:53 <oerjan> hm perhaps
10:44:20 <oerjan> i haven't thought much about that, since unlambda isn't really a lazy language
10:44:45 <oerjan> however i've thought about lazy-k, which i think has that problem.
10:45:46 <oerjan> it has laziness, but no way to make something internally cyclic
10:47:13 <elliott> oerjan: well i think you always need cyclic structures eventually.
10:47:23 <elliott> oerjan: which means you need pointers, laziness, or a simulation of either.
10:47:27 -!- ais523 has quit (Ping timeout: 276 seconds).
10:47:35 <elliott> All-around the music world, no a single seriously is aware of what the variation concerning a baritone and a euphonium is. I've heard reasonings of "baritones have the bell facing front" or "euphoniums expense additional." I've compiled evidence to display, with superior explanation, what the distinction among baritones and euphoniums are.
10:47:42 <elliott> Possibilities are, unless of course you've been to a brass band concert, you've never witnessed an actual British baritone. The Yamaha YBH-301 is a common British baritone. A regular British euphonium is the most widespread euphonium and looks anything like a Yamaha YEP-642.
10:48:17 <elliott> http://esoteric.voxelperfect.net/wiki/User:LeroyButler647 this is amazing
10:48:24 <elliott> wow
10:48:26 <elliott> it doesn't need deleting
10:48:27 <elliott> the domain is expired
10:49:31 <oerjan> `addquote * Sgeo|web wants to see elliott be wrong about something <elliott> Sgeo|web: That literally never happens. <<shachaf> Sgeo|web: There you go. A great example.
10:49:34 <oerjan> argh
10:49:38 <HackEgo> 718) * Sgeo|web wants to see elliott be wrong about something <elliott> Sgeo|web: That literally never happens. <<shachaf> Sgeo|web: There you go. A great example.
10:49:42 <elliott> `unquote
10:49:46 <HackEgo> ​*poof* * Sgeo|web wants to see elliott be wrong about something <elliott> Sgeo|web: That literally never happens. <<shachaf> Sgeo|web: There you go. A great example.
10:49:54 <oerjan> `addquote * Sgeo|web wants to see elliott be wrong about something <elliott> Sgeo|web: That literally never happens. <shachaf> Sgeo|web: There you go. A great example.
10:49:56 <HackEgo> 718) * Sgeo|web wants to see elliott be wrong about something <elliott> Sgeo|web: That literally never happens. <shachaf> Sgeo|web: There you go. A great example.
10:53:20 <elliott> oerjan: btw expect shachaf to delete that a few times
10:53:31 <oerjan> wat
10:53:41 <elliott> shachaf doesn't like bots knowing he exists, I think
10:53:50 <oerjan> `quote shachaf
10:53:52 <HackEgo> 624) <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. \ 670) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough. \ 708) <shachaf> VMS Mosaic?
10:54:43 <elliott> `quote
10:54:43 <elliott> `quote
10:54:44 <elliott> `quote
10:54:44 <elliott> `quote
10:54:44 <elliott> `quote
10:54:47 <HackEgo> 638) <ais523> if all my Facebook friends were to visit a page, it wouldn't make any difference at all
10:54:53 <HackEgo> 45) <Aftran> It looks like my hairs are too fat. Can you help me split them?
10:55:09 <HackEgo> 269) <quintopia> who is guido van rossum <olsner> you could say he's a man who grew a beard but acquired none of the associated good properties
10:55:10 <HackEgo> 168) <fungot> Sgeo: hahaah, and i love when they announced it i dare u to press alt f4 and your house ( acts 16:31 your bible)
10:55:10 <HackEgo> 474) <Taneb> I can't afford one of those! <Taneb> A grandchild, not a laser printer
10:55:20 <elliott> oerjan: help me dec;ide
10:56:41 -!- ais523 has joined.
10:57:05 <elliott> hi ais523
10:57:09 <ais523> wb me
10:57:26 <oerjan> sorry, all good
10:57:55 <oerjan> ok _maybe_ 638 is a bit weak
11:01:27 <elliott> `quote
11:01:28 <elliott> `quote
11:01:28 <elliott> `quote
11:01:29 <elliott> `quote
11:01:29 <elliott> `quote
11:01:34 <elliott> i suppose it's a good sign that we're running out of bad quotes
11:01:34 <HackEgo> 303) <treederwright> enjoy being locked in your matrix of solidity
11:01:37 <HackEgo> 89) <Slereah> I can do everything a Turing machine can do, except love
11:01:38 <elliott> now watch as these are all terrible
11:01:41 <elliott> oh good, saved by solidity
11:01:51 <HackEgo> 82) <coppro> hmm... does anyone know a nonsense game designed for the mentally handicapped involving yelling
11:01:51 <HackEgo> 605) <ais523> this strikes me as probably better than a singularity, because you can't trust a random AI, but you can probably trust olsner
11:01:52 <HackEgo> 24) <ehird> so i can only conclude that it is flawed, or the world is utterly bonkers
11:02:34 <elliott> 303 is perfect, 89 is great, 605 is funny, 24 is a heritage site
11:02:35 <elliott> `delquote 82
11:02:38 <HackEgo> ​*poof* <coppro> hmm... does anyone know a nonsense game designed for the mentally handicapped involving yelling
11:03:46 -!- ais523 has quit (Ping timeout: 240 seconds).
11:04:39 <oerjan> oh come on, that was hilarious. but i guess you have to be evil to appreciate it.
11:06:18 -!- ais523 has joined.
11:06:18 -!- ais523 has quit (Changing host).
11:06:18 -!- ais523 has joined.
11:15:22 <elliott> oerjan: it was part of a stupid non-oerjan-quality pun that i forget
11:15:44 <oerjan> aha
11:22:22 <elliott> `quote
11:22:22 <elliott> `quote
11:22:23 <elliott> `quote
11:22:23 <elliott> `quote
11:22:24 <elliott> `quote
11:22:30 <HackEgo> 503) <itidus20> Game theory is not a perfect tool for analyzing video games. <itidus20> Nash failed to create a "video game theory"
11:22:34 <HackEgo> 513) <ais523> it actually worked, and faster than using Excel for rendering
11:22:45 <HackEgo> 525) <elliott> "Okay, got i-" "I DON'T BELIEVE YOU. SCROLL FOR ME, CHILD."
11:22:45 <HackEgo> 444) <NihilistDandy> elliott: His mouse obeys the law of the excluded middle :/
11:22:45 <HackEgo> 98) <fax> oklopol geez what are you doing here <oklokok> ...i don't know :< <oklokok> i actually ate until now, although i guess i also did other things...
11:23:11 <elliott> 503 is A+, 513 is pretty amusing, 525 i don't get and I /said/ it, 444 is not that funny, 98 is good
11:23:14 <elliott> `delquote 525
11:23:16 <HackEgo> ​*poof* <elliott> "Okay, got i-" "I DON'T BELIEVE YOU. SCROLL FOR ME, CHILD."
11:24:17 <elliott> `log <elliott> "Okay, got i-" "I DON'T BELIEVE YOU. SCROLL FOR ME, CHILD."
11:24:41 <HackEgo> 2011-11-10.txt:11:23:16: <HackEgo> ​*poof* <elliott> "Okay, got i-" "I DON'T BELIEVE YOU. SCROLL FOR ME, CHILD."
11:24:46 <elliott> >:(
11:24:54 <elliott> sometimes i feel like `log is not as useful as it could be
11:28:29 -!- kmc has quit (Ping timeout: 248 seconds).
11:31:07 <elliott> ais523: argh!
11:31:18 <elliott> ais523: you deleted the page which I _specifically_ verified did not link to any spam and contained no spammy content.
11:31:42 <oerjan> here you are http://www.girlgeniusonline.com/comic.php?date=20080514
11:31:51 <oerjan> oops, wrong window. well never mind.
11:32:07 <oerjan> it's for elliott
11:32:12 <elliott> it's actually for HackEgo
11:32:19 -!- derdon has joined.
11:32:26 <elliott> what's up with the eyes of that guy in the last panel, eyes don't work like that
11:32:45 <atehwa> Gregor: it's okay, I can add the assignments back to the topic if/when there will be more.
11:33:01 <oerjan> foglio isn't _always_ perfect on the anatomy.
11:33:26 <atehwa> hmm, you can't use "will" with "when", but how about "will" with "if"?
11:33:45 <atehwa> I think you can
11:33:54 <elliott> seems ok to me
11:34:21 <atehwa> so there's no natural way to use "if/when" in English if it applies to future...
11:35:01 <elliott> You could just talk in Finnish, like half the channel would understand you.
11:35:10 <elliott> Admittedly it'd be the worst half.
11:35:27 <atehwa> oh, definitely
11:35:50 <atehwa> in Finnish, it is quite commonplace to say "jos/kun" which is the equivalent of "if/when"
11:36:01 <atehwa> but Finnish does not have a future tense
11:36:21 <oerjan> the finns _have_ no future, you see
11:36:26 <atehwa> aaaa
11:36:29 <atehwa> that must be it
11:36:47 <elliott> Well, the country breaks all laws of mathematics and space. Time is just another box to be ticked.
11:37:01 <atehwa> English-talking people, on the other hand, have no future when they're talking about when things happen
11:37:04 <elliott> Except... not to be ticked, because that implies time passing in an orderly fashion while you tick the box.
11:37:11 <elliott> It's another box to be made having been ticked at some point or another.
11:37:32 <atehwa> no, the thing is, we do have a past, but the present and the future are molded into one great whole.
11:38:01 <elliott> Ah.
11:38:05 <atehwa> but now, off to work ->
11:38:12 <elliott> That would explain why you guys never make any sense.
11:38:19 <atehwa> definitely.
11:38:30 <atehwa> apparently, the future is the worst half of time.
11:39:55 <elliott> Half?
11:40:09 <elliott> It occurs to me that I have no idea how far along the universe's projected lifespan we are.
11:43:35 -!- kmc has joined.
11:45:02 <atehwa> Well, it's "half" both if time is cyclic and if it's infinite in both directions, so I'm betting on us being halfway through the time
11:45:22 <atehwa> if I prove to be wrong, you can collect the wins.
11:45:42 -!- oerjan has quit (Quit: I wioll haven been gone nao).
11:45:44 <elliott> /The/ time?
11:45:58 <atehwa> :D
11:46:12 <atehwa> do you have many?
11:46:14 <elliott> Finns have arcane knowledge. Knowledge which in some sense borders on the... esoteric.
11:46:55 <atehwa> but maybe I was only talking about my time, which might be also yours.
11:47:28 <elliott> Similarly, when I say "the world", I actually just mean the small section of the world relevant to me.
11:47:35 <elliott> The world has, like, 100 people in it.
11:47:43 <elliott> Okay probably more than that.
11:47:51 <atehwa> well, my time has all the universe in it.
11:48:02 -!- kmc_ has joined.
11:48:05 <atehwa> It's weird, but that's now it is
11:48:21 <atehwa> *how
11:48:22 <elliott> *sigh* Finns. Always hogging the time.
11:48:33 <atehwa> but now you know why
11:48:41 <elliott> It's almost as if a question you would answer yes to is "have you got the time?"!
11:48:42 <elliott> HA HA HA.
11:49:00 <atehwa> or the question
11:49:23 <atehwa> by the way, Finnish has no articles, so most of this discussion doesn't really translate into Finnish
11:49:46 <elliott> I can't tell whether that's an advantage or a disadvantage for Finnish.
11:49:52 <atehwa> at least the ambiguities are hard to translate.
11:51:08 <atehwa> hmm... I wonder whether you're talking about economics of the language, or some lewd way our life might be better/worse because we reflect this lack of articles in our way of thinking, as suggested by Sapir-Worff hypothesis...
11:51:16 -!- kmc has quit (Ping timeout: 240 seconds).
11:52:25 <elliott> I'm just thinking that maybe it's better for the world if we can't have discussions like these :P
11:52:50 <elliott> Sapir-Whorf might be discredited, but it certainly helps to make things a huge pain to talk about.
11:53:28 <atehwa> so, about economics, then.
11:53:36 -!- kmc__ has joined.
11:53:39 <atehwa> but I forgot to start working....
11:53:47 <atehwa> so I'm going to try anew
11:53:49 <Jafet> I think programming languages demonstrate the Sapir-Whorf hypothesis
11:53:58 <Jafet> More than natural languages
11:54:23 -!- kmc__ has quit (Client Quit).
11:54:36 -!- kmc has joined.
11:55:17 <atehwa> I think you're right, because different programming languages talk about different worlds, whereas the world referred to by most natural languages is quite similar
11:56:45 -!- kmc_ has quit (Ping timeout: 248 seconds).
12:05:33 -!- ais523 has quit (Ping timeout: 260 seconds).
12:19:07 -!- derrik has joined.
12:43:41 -!- boily has joined.
12:46:46 -!- derrik has quit (Quit: back to school).
13:03:42 -!- pikhq has joined.
13:03:54 -!- pikhq_ has quit (Ping timeout: 260 seconds).
13:28:15 -!- sebbu2 has joined.
13:28:15 -!- sebbu2 has quit (Changing host).
13:28:15 -!- sebbu2 has joined.
13:29:23 -!- sebbu has quit (Ping timeout: 240 seconds).
13:36:49 -!- Ngevd has joined.
13:38:11 <Ngevd> Hello!
13:45:40 <Ngevd> I see there's another bf derivative
13:48:24 <Ngevd> I think we should encourage people who make bf derivatives to then make another language
13:48:31 <Ngevd> That isn't a bf derivative
13:49:22 <Ngevd> Look at Brainlove --> Elog
13:53:02 <Ngevd> Also, today I realised that I ship Telemachus and Athene
13:57:01 <Ngevd> Also also, there is an object-oriented version of Haskell called Mondrian.
13:57:10 <Ngevd> Somebody should right a Piet implementation in it.
13:57:48 -!- ais523 has joined.
13:58:25 <Ngevd> Hello!
13:58:55 <ais523> hi
13:59:03 <Ngevd> There's some spam on the wiki
13:59:11 <ais523> elliott: a bunch of Agorans just won BlogNomic, btw
14:00:52 <ais523> although we agree that an Agoran dynasty would be inappropriate
14:07:42 -!- sebbu3 has joined.
14:07:42 -!- sebbu3 has quit (Changing host).
14:07:42 -!- sebbu3 has joined.
14:07:54 -!- Guest63524 has joined.
14:09:23 -!- sebbu2 has quit (Ping timeout: 255 seconds).
14:10:16 -!- Slereah_ has quit (Ping timeout: 276 seconds).
14:31:30 <Vorpal> what with the more or less constant popularity of bf derivatives (based on number of such languages made) I think it is time to make a Funge-98 fingerprint that essentially contains some of the more popular BF-variants, such as brainfuck and boolfuck.
14:31:37 <Vorpal> ais523: ^
14:35:27 <ais523> that doesn't seem an obvious inference to me
14:36:43 <Vorpal> ais523: which part of it?
14:37:00 <ais523> the conclusion; I said that the inference was non-obvious, not the premises
14:37:40 <Vorpal> ais523: well, there are two inferences there. One is that bf derivatives are popular, the other is that it is time to make such a fingerprint
14:38:10 -!- augur has quit (Remote host closed the connection).
14:38:34 -!- augur has joined.
14:41:43 <Ngevd> I'd guess ais523 was talking about the second
14:42:56 -!- augur has quit (Ping timeout: 258 seconds).
14:44:14 <ais523> right
14:51:32 -!- sebbu3 has changed nick to sebbu.
14:54:59 -!- derdon has quit (Remote host closed the connection).
14:59:27 <Ngevd> THE PROPHET HEN OF LEEDS
14:59:31 <Ngevd> http://en.wikipedia.org/wiki/The_Prophet_Hen_of_Leeds
15:11:55 <ais523> <YouTube comment> Thumbs up if you're tired of people thumbs uping unoriginal comments asking for thumbs up
15:12:17 <ais523> now I'm trying to figure out if the self-parody seen in YouTube comments is itself being parodied
15:12:28 <ais523> (it was the top comment, pretty obviously)
15:12:47 <ais523> Ngevd: "This poultry article is a stub. You can help Wikipedia by expanding it."
15:17:15 -!- augur has joined.
15:18:06 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:23:02 <fizzie> "This tree-related article is a stub."
15:43:39 -!- copumpkin has joined.
15:44:36 -!- MSleep has changed nick to MDude.
16:30:44 -!- Taneb has joined.
16:31:12 -!- Ngevd has quit (Ping timeout: 256 seconds).
16:31:26 -!- sebbu2 has joined.
16:31:27 -!- sebbu2 has quit (Changing host).
16:31:27 -!- sebbu2 has joined.
16:31:40 -!- sebbu has quit (Ping timeout: 240 seconds).
16:34:54 <Vorpal> fizzie: is that tree as in binary trees or trees as in the natural type?
16:35:14 <Taneb> Tree as in Family tree
16:35:24 -!- ive has joined.
16:52:43 -!- zzo38 has joined.
16:54:51 <elliott> "there are only a few copies of my new book left; if you want one for christmas, order now :o"
16:54:55 <elliott> Gregor: I MUST
16:55:11 <Gregor> elliott: DOIT
16:55:52 <elliott> Gregor: But it's like 30 quid for some awesome sketches on some paper that will probably never be used for non-pimping purposes :'(
16:56:04 -!- Taneb has quit (Ping timeout: 240 seconds).
16:56:29 <Gregor> elliott: DOOOOOOOOOOOOOOIT
16:56:42 <elliott> Gregor: It'd probably be cheaper to fly over to America and meet Ryan North in person and ask him for hat-sketches!
16:56:50 <elliott> PRETTY SURE THAT WOULD COST LESS THAN 30 POUNDS
16:57:38 <Gregor> *Canada
16:57:52 <elliott> Gregor: Um, SAME THING?
16:58:00 <Gregor> Fair 'nuff
16:58:08 <elliott> Not only is Canada on the American continent, but it's TOTALLY the 52nd state.
16:58:20 <Gregor> Hmm ... what's the 51st :P
16:58:20 <elliott> (I made a lie! There's no American continent! That's also a lie! There's TWO!)
16:58:25 <elliott> Gregor: CLASSIFIED.
16:58:35 <elliott> By which I mean, I briefly forgot how many states there are.
16:58:52 * Gregor nods sagely.
16:59:03 <elliott> Gregor: Wait, I have the perfect plan. You could give me 30 pounds, and I could use it to buy the Dinosaur Comic books. ??? Perfect???
16:59:04 <zzo38> Canada is not part of the United States. Even though Canada is part of America.
17:00:46 <quintopia> canada is not part of america!
17:00:56 <quintopia> it is only part of north america
17:01:11 <quintopia> which we can tell by the fact that it is north of america
17:01:52 <zzo38> I realized the definition I have for barrier transform is slightly wrong due to: a = bliftMonad getLine; b = bliftMonad (return 42) :: BarrierT f b IO Int; c = case (b, a) of { (Barrier x y, Barrier z _) -> Barrier z y; }; main = executeBT (c >>= bliftMonad . print);
17:02:04 <elliott> Can you throw money at Amazon to use for later purchases? My mind is considering this as a very viable solution to my debit card's pending expiry.
17:02:12 <elliott> You know, like putting money into PayPal. You can do that right? Help?
17:02:30 <Gregor> elliott: You can put money into PayPal, yes. You could also buy an Amazon gift card if you just want Amazon.
17:02:44 <elliott> Gregor: Yes, I can put money into PayPal, but Amazon sure as hell don't accept PayPal :P
17:02:58 <Gregor> elliott: You can put money into PayPal and get a PayPal debit card :P
17:03:15 <elliott> Gregor: I could also just... get a new card.
17:03:20 <Gregor> LIES
17:03:33 <elliott> Hmm, I wonder if I could somehow buy Amazon gift cards with PayPal. Are there third-party resellers?
17:03:47 -!- fizzie has quit (Ping timeout: 240 seconds).
17:04:05 <elliott> There are! They even look... VAGUELY legitimate.
17:04:49 <elliott> Looks like they only want to sell me the physical form though.
17:05:04 <zzo38> Now I have to think of how to fix the problem. Maybe it should just be done by making BarrierT an opaque newtype, but are there any other ways?
17:06:30 <elliott> Gregor: Basically I want all the convenience of not having to pre-allocate my money without the annoying obstacle of having to go through some kind of banking institution to do that, despite that being a very large part of their purpose :P
17:06:46 <Gregor> PayPal is a banking institution.
17:06:47 <Gregor> So nyaa.
17:07:00 <elliott> Gregor: Exactly! One that Amazon doesn't accept. Wow fuck Amazon.
17:07:09 <elliott> Wait, do Amazon accept Amazon Payments? I'm not joking.
17:07:15 <elliott> Maybe I could somehow feed PayPal funds into that.
17:07:21 <zzo38> elliott: By working in cash you avoid those problems.
17:07:40 <elliott> zzo38: s/avoid those problems/replace those problems with completely different, far more stupid, avoidable, and irritating ones/
17:07:42 <Gregor> elliott: You can bundle up your cash carefully, attach it to an email, and send it to Amazon.
17:07:47 <zzo38> But then it is the other problem in case of paying something by computer.
17:07:58 <elliott> zzo38: For instance, to purchase something online I would have to feed notes into my floppy drive.
17:08:01 -!- fizzie has joined.
17:08:02 <elliott> Unfortunately I haven't got one.
17:08:11 <elliott> Gregor: I just told you I haven't got a floppy drive!
17:08:28 * elliott is certain this is how e-commerce works.
17:08:51 <zzo38> Is it possible to purchase Amazon gift cards at stores? If so, that solves it. Or, credit card company's gift cards? Maybe that will work.
17:09:13 <elliott> I think so :P
17:09:27 <elliott> Gregor: Oh my god, there are 10 pages of designs for Amazon email gift certificates.
17:09:30 <elliott> I don't want to live in this world.
17:09:52 <zzo38> Is there a plain text design?
17:10:06 <elliott> No :P
17:10:31 <zzo38> Then they have hundreds and yet they forgot a few!
17:11:26 <Vorpal> amusing.... Apparently the actual release version of Skyrim hit torrent sites one day before the official launch.
17:12:17 -!- Phantom_Hoover has joined.
17:12:20 <elliott> s/actual release/Golden Master/ we are civilised, there are terms!
17:13:13 <Vorpal> elliott: not quite. You know that steam allows you to download like a day or two before release but it is only decrypted on the release day?
17:13:24 <Vorpal> well, somehow someone managed to decrypt it in advance
17:13:49 <Vorpal> elliott: and I'm not sure the concept "golden master" makes sense for steam :P
17:14:10 <elliott> The Golden Master is whatever the publisher uploads :P
17:14:16 <Vorpal> right
17:15:11 <elliott> Wow, this computer REALLY hates Flash for some reason.
17:15:18 <Vorpal> elliott: how so?
17:15:19 <elliott> It just starts lagging like shit whenever Flash stuff is going on in the background.
17:15:26 <elliott> No CPU pegging or anything.
17:15:30 <elliott> Killing the plugin fixes it.
17:15:36 <Vorpal> btw some more games were added to the voxatron humble bundle
17:16:21 <elliott> As I said elsewhere: Humble Bundle's business strategy is basically Katamari for games.
17:16:34 <elliott> The ball of cash just keeps getting bigger and picking up more games.
17:16:35 <Vorpal> elliott: haha
17:17:16 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:17:44 <elliott> Ehh, I'll just preallocate Amazon cash beforehand. No harm in buying more gift-certificate money than I need, since I'll undoubtedly purchase from Amazon in the future.
17:29:39 -!- Phantom_Hoover has joined.
17:32:25 -!- Taneb has quit (Remote host closed the connection).
17:34:27 <Sgeo|web> .
17:36:46 <elliott> .
17:37:05 <Vorpal> elliott: what do you plan to buy on Amazon?
17:37:18 <elliott> Vorpal: Drugs. Looooads of illegal drugs.
17:37:23 <Vorpal> elliott: right
17:40:03 -!- Ngevd has joined.
17:50:34 <CakeProphet> elliott: http://www.everyherbal.com/herbalfire/salvia-divinorum-sampler-pack-p-314.html
17:50:38 <CakeProphet> found this on google shopping.
17:50:51 <CakeProphet> it's a hallucinogenic plant of the mint family. also you can buy it online.
17:51:02 <elliott> That's not Amazon.
17:51:43 <CakeProphet> elliott: well amazon doesn't /have/ semi-illegal drugs.
17:51:53 <elliott> Why the fuck not?!
17:52:14 <CakeProphet> oh wait
17:52:16 <CakeProphet> it does have salvia
17:52:24 <elliott> Yesssssssssss
17:52:27 <CakeProphet> in liquid form too. nice.
17:52:31 -!- sllide has joined.
17:52:36 <elliott> That sounds convenient!
17:52:39 <CakeProphet> elliott: anyway you don't want salvia.
17:52:49 <elliott> I WANT ALL THE DRUGS AMAZON HAS TO OFFER, CAKEPROPHET.
17:52:56 <CakeProphet> it's guaranteed 5 minutes of bad trip. just sayin'
17:53:14 <elliott> Yesssssssss 5 minutes of SEMI-ILLEGAL AMAZON-PURCHASED bad trip
17:55:13 <CakeProphet> ah yes I suppose so
17:55:33 <CakeProphet> elliott: hmmm amazon apparently doesn't have psilocybe mushroom spores
17:55:34 <CakeProphet> which
17:55:38 <CakeProphet> are legal in most US states
17:55:46 <elliott> Amazon, that's so lame of you. :(
17:56:07 <CakeProphet> despite the grown mushroom caps themselves being illegal.
17:57:01 <CakeProphet> elliott: but they do have substrates specifically tailors for growing psilocybe spores.
17:57:08 <CakeProphet> *tailored
17:57:09 <elliott> Yessssssss
17:57:17 <elliott> You are on SO many watchlists right now.
17:57:35 <CakeProphet> I. I am?
17:57:41 <CakeProphet> #esoteric is a prime target?
17:58:04 <Ngevd> It's Guest63524.
17:58:06 <Ngevd> He's FBI
17:58:14 <Ngevd> Or she.
17:58:20 <CakeProphet> ah
17:58:34 <Phantom_Hoover> <CakeProphet> elliott: anyway you don't want salvia.
17:58:39 <Phantom_Hoover> No, you want saliva.
17:58:45 <elliott> Yes.
17:59:16 <CakeProphet> Phantom_Hoover: uh, are you referencing the Haskell library, just regular mint, or actually salvia divinorum?
17:59:21 <Ngevd> elliott, I don't want to see you high.
17:59:24 <Ngevd> Or is that me?
17:59:29 <Ngevd> Am I you?
17:59:52 <elliott> Ngevd: I think it is possibly the only way the Elliott IRC Experience could reach a new level of intensity. What I'm saying is, not only would I get banned, the whole UNIVERSE would get banned.
18:00:12 <elliott> CakeProphet: You're dyslexic.
18:00:21 <CakeProphet> elliott: ah yes.
18:00:22 <CakeProphet> I am.
18:02:42 * CakeProphet should make a web app framework called Psilocybe
18:02:55 <CakeProphet> to be on par with Salvia and loli.
18:03:00 <CakeProphet> in terms of questionable names.
18:03:42 <CakeProphet> questionably named web app things.
18:03:46 -!- Darth_Cliche has joined.
18:04:03 <elliott> announcing my new haskell webframe work " poop"
18:04:29 <Vorpal> <Phantom_Hoover> <CakeProphet> elliott: anyway you don't want salvia. <-- btw, salvia is the Swedish word for the plant "sage".
18:04:55 * Sgeo|web sages #esoteric
18:05:07 <Vorpal> seels it is "Salvia officinalis" in Latin
18:05:08 <CakeProphet> http://en.wikipedia.org/wiki/Salvia_officinalis "common sage"
18:05:17 <CakeProphet> er, yes.
18:05:21 <Vorpal> CakeProphet: beat you to that
18:05:22 <elliott> Vorpal: Isn't salvia-the-drug just a type of sage.
18:05:24 <Vorpal> also seems*
18:05:33 <Vorpal> elliott: I have no idea
18:05:35 <CakeProphet> elliott: type of mint. is that the same thing?
18:05:40 <elliott> Yes, obviously.
18:05:42 <elliott> Is it peppermint?
18:05:50 <CakeProphet> no.
18:05:50 * Sgeo|web is almost ashamed he knows of 4chan's sage stuff
18:06:13 <elliott> SHUUUN
18:06:15 <CakeProphet> elliott: it smells kind of like tea leaves to me.
18:06:20 <elliott> SHUUUUUUUUUUUUUUUUUN
18:06:21 -!- Ngevd has quit (Ping timeout: 248 seconds).
18:06:24 <CakeProphet> minty tea leaves.
18:06:35 <elliott> (It's funny because sage doesn't even originate from 4chan anyway.)
18:06:40 <elliott> (Assuming shunning is funny.)
18:06:47 <elliott> (It's not funny, we're awful people.)
18:06:48 <Phantom_Hoover> Vorpal, trying to run mplayer and Flash at the same time, mplayer spits out, amongst other things, "[AO_ALSA] alsa-lib: pcm_hw.c:1293:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-16): Device or resource busy
18:06:48 <Phantom_Hoover> [AO_ALSA] Playback open error: Device or resource busy
18:06:48 <Phantom_Hoover> Failed to initialize audio driver 'alsa'"
18:06:49 <elliott> (By we I maen me.)
18:06:52 <CakeProphet> (implying elliott assumes shunning is funny)
18:07:10 <CakeProphet> (implying tautology club is tautology club)
18:07:36 <Vorpal> Phantom_Hoover: I guess you have no hardware mixer and no mixer like arts, esd, pulseaudio, whatever
18:07:47 <CakeProphet> elliott: what's interesting about salvia divinorum is that no other hallucinogen is of the same chemical nature.
18:07:48 <elliott> Vorpal: Isn't that what dmix is for?
18:07:50 <Vorpal> or mplayer just isn't using that
18:07:54 <Vorpal> elliott: sure, dmix too
18:07:55 <CakeProphet> it's the only known hallucinogen of its kind.
18:08:03 <elliott> Vorpal: I would expect that to be enabled out-of-the-box.
18:08:03 <CakeProphet> whereas all of the others are broadly classified into two categories.
18:08:29 <Sgeo|web> Where does sage originate from?
18:08:32 <Vorpal> CakeProphet: oh?
18:08:37 <Phantom_Hoover> alsa -mixer dmix doesn't work.
18:08:39 <Vorpal> elliott: depends on distro
18:08:51 <Vorpal> elliott: I know for sure it isn't on arch linux.
18:08:56 -!- derdon has joined.
18:09:07 <elliott> Vorpal: What's doing my mixing then
18:09:19 <Vorpal> elliott: probably pulse audio?
18:09:24 <elliott> Vorpal: I didn't install Pulse.
18:09:35 <Vorpal> elliott: or it is enabled by default on more modern installs
18:09:39 <Vorpal> it wasn't on mine I know
18:09:43 <elliott> *shrug*
18:11:14 <CakeProphet> 'A survey of salvia users found that 38% described the effects as unique in comparison to other methods of altering consciousness. 23% said the effects were like yoga, meditation or trance.'
18:11:19 <CakeProphet> what the hell kind of yoga are these people doing.
18:11:30 <elliott> SPOOKY yoga.
18:11:34 <elliott> It's like yoga but with a SKULL.
18:11:57 <CakeProphet> I've never heard anyone say "yoga is great! it feels like you're melting into the floor!"
18:12:25 <elliott> It's like you've never even DONE yoga.
18:12:36 <CakeProphet> elliott: holy crap HOW DID YOU KNOW?
18:20:15 <CakeProphet> elliott: you make me fun.
18:20:24 <CakeProphet> :3
18:20:41 <elliott> No, I make everyone fun.
18:20:45 <elliott> Everyone is just so boring without me.
18:21:21 <fizzie> Coincidentally they use the Latin name ("salvia") also as the Finnish name of the plant. Perhaps because it doesn't really sound very foreign.
18:21:59 <CakeProphet> elliott: http://www.deuceofclubs.com/amusive/easap036.htm I'm happy ereryday. because you make me fun, don't worry let's smile
18:22:02 <CakeProphet> :)
18:22:29 -!- Ngevd has joined.
18:23:06 <fizzie> (And "ryytisalvia" for salvia officinalis in particular, assumedly stolen from Swedish "kryddsalvia".)
18:23:28 <CakeProphet> fizzie: you finns have no originality.
18:23:37 <fizzie> That is very true.
18:25:05 <Ngevd> I can find very few references to the Mondrian programming language
18:25:20 <Ngevd> There appear to have been at least two
18:26:05 <fizzie> There's the one the Piet page mentions, but the link there is dead.
18:26:14 <Ngevd> There's one on http://en.wikipedia.org/wiki/Haskell_(programming_language)#Related_languages
18:26:18 <Ngevd> No link given
18:27:34 <Ngevd> Possibly http://hackage.haskell.org/packages/archive/parsec/3.0.0/doc/html/Text-Parsec-Language.html
18:27:46 <fizzie> "You may have landed on this page from following a link for Mondrian. This was a project originally started by Erik Meijer which then moved to New Zealand. Mondrian was a functional language specifically designed to inter-operate with other languages in an OO environment and versions existed for the JVM and CLI. Mondrian also supported ASP.NET, allowing you to embed functional language code in web pages along with C# code. The project predates our in-house Hask
18:27:46 <fizzie> ell work, has not been kept up-to-date with CLI releases, and we no longer make it available."
18:27:57 <fizzie> (From http://kahu.zoot.net.nz/)
18:28:56 <Phantom_Hoover> fizzie, can I make you my search engine?
18:29:06 <fizzie> I don't have an URL.
18:29:18 <Phantom_Hoover> Do you support OpenSearch?
18:30:13 * elliott seriously considers writing a web interface to fizzie.
18:30:35 <fizzie> I wonder if it is actually the same thing the Piet page is talking about, since the dude -- at http://research.microsoft.com/en-us/um/people/emeijer/ErikMeijer.html -- links to the same dead place as the Piet page.
18:30:53 <Ngevd> This is vaguely creepy
18:31:12 <elliott> fizzie: IIRC DMM complained that Mondrian was some kind of boring OO thing, so the description kinda fits.
18:31:31 <elliott> (Missing the functional aspect is understandable if a langauge is targeting the JVM and CLI.)
18:31:48 <elliott> fizzie: To add to the intrigue, Parsec comes with a language definition for "Mondrian".
18:31:50 <fizzie> There are some papers on the dude's page.
18:31:57 <elliott> I suspect it's the Haskell Mondrian,t hough.
18:32:03 <elliott> http://hackage.haskell.org/packages/archive/parsec/3.1.2/doc/html/src/Text-Parsec-Language.html
18:32:11 <elliott> { reservedNames = [ "case", "class", "default", "extends"
18:32:11 <elliott> , "import", "in", "let", "new", "of", "package"
18:32:11 <elliott> ]
18:32:13 <elliott> Or maybe not?
18:32:19 <elliott> s/t hough/ though/
18:32:33 <fizzie> http://research.microsoft.com/en-us/um/people/emeijer/Papers/Mondrian.pdf is probably most relevant; at least 'class' is there.
18:32:55 <elliott> Where have I heard of Erik Meijer before?
18:33:08 <elliott> Ohh, I think he's (co-)written a lot of Haskell papers.
18:33:41 <fizzie> At least a couple Haskell Workshop and ICFP ones, yes.
18:34:08 <fizzie> Or maybe you recall him from the "XML Support in VB9" paper, that sounds so relevant to your interests.
18:35:07 <elliott> Totally.
18:36:13 -!- zzo38 has quit (Remote host closed the connection).
18:37:47 <fizzie> A cautionary tale from his page: "A few versions ago, I was know as "the banana man" because of my work on Squiggol and applying category theory to structure functional programs."
18:38:12 <elliott> *Oh.* He's the bananas, lenses and barbed wire guy.
18:38:17 <elliott> That explains it.
18:38:54 <CakeProphet> !userinterps
18:38:55 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph hello id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez wc y
18:39:04 <CakeProphet> !sffedeesh swedish fish
18:39:18 <CakeProphet> EgoBot: I hate you.
18:39:48 <CakeProphet> !acro
18:40:21 -!- sebbu3 has joined.
18:40:22 -!- sebbu3 has quit (Changing host).
18:40:22 -!- sebbu3 has joined.
18:41:43 <elliott> [AUTOMATED QUERY BEGIN]
18:41:47 <elliott> fizzie: sausages in the 18th century
18:41:47 -!- sebbu2 has quit (Ping timeout: 240 seconds).
18:41:50 <elliott> [AUTOMATED QUERY END]
18:42:25 -!- DCliche has joined.
18:43:30 * Sgeo|web is easily amused by 4chan.org/flash
18:43:56 <Sgeo|web> ...some stuff may be NSFW
18:44:06 <Ngevd> NSFW!?
18:44:08 <Sgeo|web> No, that's not why I'm amused
18:44:17 <elliott> This channel is the most SFW.
18:44:19 <elliott> Fuckity fuckity fuck.
18:44:21 <Phantom_Hoover> The words 'no', 'shit' and 'Sherlock' all come to mind.
18:44:38 <elliott> No Sherlock shit? Why a ban on specifically Sherlock's feces?
18:45:57 -!- Darth_Cliche has quit (Ping timeout: 260 seconds).
18:46:43 <Sgeo|web> Clearly, v8 is the latest version of Flash player
18:46:50 -!- Jafet has quit (Quit: Leaving.).
18:47:11 <elliott> fizzie: http://web.archive.org/web/20031202023619im_/http://www.research.microsoft.com/~emeijer/Media/panel.gif
19:03:44 <Gregor> OK, Hackiki now /officially/ has no users.
19:03:44 <Gregor> Yessssssssssssssss.
19:09:42 <olsner> oh crap, I've been highlighted in #esoteric again
19:09:50 * olsner scrolls back
19:11:03 <olsner> `quote 605
19:11:10 <HackEgo> 605) <Phantom_Hoover> It is like the Holocaust but with Nazis.
19:11:34 <olsner> oh, it must've gotten renumbered in all the deletion that happened since that log line
19:13:39 <elliott> Gregor: What happened :P
19:13:40 -!- kmc has quit (Ping timeout: 240 seconds).
19:14:00 <elliott> http://hackiki.org/wiki/ ;; it disappointingly still exists???
19:14:16 -!- Zuu has joined.
19:14:18 -!- sebbu3 has changed nick to sebbu.
19:17:05 <shachaf> elliott: Maybe I just don't like the bot highlighting my name.
19:17:19 <elliott> ^echo shachaf
19:17:46 <elliott> fungot???
19:17:47 <elliott> fizzie: FUNGOT!!!
19:25:22 <Ngevd> Not Fungot!
19:25:42 -!- oerjan has joined.
19:26:52 -!- Gregor has quit (Excess Flood).
19:27:16 -!- Gregor has joined.
19:27:46 -!- Sgeo|web has quit (Ping timeout: 264 seconds).
19:28:02 * Gregor reappears.
19:28:06 <elliott> Gregor: Explain the flood and also what you said :P
19:28:07 <Ngevd> Hello oerjan
19:28:14 <Gregor> Flood?
19:28:21 <elliott> * Gregor has quit (Excess Flood)
19:28:28 <Gregor> Uhh, that Idonno :P
19:28:40 <Gregor> Not sure why I got kicked.
19:28:56 <elliott> <Gregor> OK, Hackiki now /officially/ has no users.
19:28:58 <Gregor> But anyway, the one known user of Hackiki other than myself is now a known non-user of Hackiki :P
19:28:59 <elliott> OK, now explain :P
19:29:02 <Gregor> I just did.
19:29:31 <elliott> Gregor: Did they stop because of your SECURITY SPLOIT? :P
19:29:39 <elliott> (People other than you used Hackiki?)
19:29:43 <elliott> (Well, "person", I guess.)
19:29:46 <elliott> (Person other than you used Hackiki?)
19:29:50 <Ngevd> I never really got Hackiki
19:30:23 <Gregor> elliott: He hosted a Wiki for a Unix UG on Hackiki, but through me, and was paying me for it. After not using it for two years, he decided to stop.
19:30:42 <elliott> Gregor: Wow :P
19:31:02 <elliott> Gregor: Shoulda got him on a long-term contract.
19:32:10 -!- Guest63524 has changed nick to Slereah.
19:34:50 <oerjan> <elliott> Ngevd: I think it is possibly the only way the Elliott IRC Experience could reach a new level of intensity. What I'm saying is, not only would I get banned, the whole UNIVERSE would get banned.
19:34:58 <oerjan> clearly you misspelled insanity.
19:35:04 <shachaf> `quote elliott
19:35:06 <HackEgo> 190) <fungot> elliott: i like scsh's mechanism best: it's most transparent and doesn't really serve a very useful feature. \ 193) <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. \ 202) <Gregor> elliott: My university has
19:35:30 -!- useless-fungot has joined.
19:35:35 <oerjan> `quote <elliott
19:35:37 <HackEgo> 211) <elliott> Vorpal loves the sodomy. <Vorpal> elliott, sure why not \ 212) <elliott> [...] ALWAYS OPEN TO TRYING NEW THINGS. \ 213) <elliott> So it's not exactly trivial. [Later about same thing] <elliott> It's a trivial C program :P \ 220) * pikhq sticks several thousand kg m^2/A s^3 through elliot <elliott> pikhq:
19:35:44 <shachaf> I don't think you can annoy elliott by pinging his name in #esoteric, because he's always in here anyway.
19:35:45 <elliott> `delquote 212
19:35:48 <HackEgo> ​*poof* <elliott> [...] ALWAYS OPEN TO TRYING NEW THINGS.
19:35:52 <elliott> Vorpal just added that because of the sodomy one.
19:36:12 <Ngevd> fungot?
19:36:41 <oerjan> fungot has gone to a secret meeting of secret bot overlords
19:36:57 <useless-fungot> I am useless-fungot, I have no state
19:37:04 <Ngevd> usless-fungot!!!
19:37:06 <elliott> hi useless-fungot
19:37:08 <elliott> we love you
19:37:11 <elliott> you're not useless
19:37:13 <elliott> be friends with us
19:37:19 <Ngevd> Like friendship mouse!
19:37:21 -!- kmc has joined.
19:37:32 <Gregor> kmc: Kentucky Mutilated Chicken
19:37:43 <ais523> ^ul (this isn't part of the state, right?)S
19:37:54 <ais523> hmm, that is indeed pretty useless
19:37:58 <useless-fungot> Command char is ]
19:38:02 <olsner> Gregor: Keegan McSomething iirc
19:38:06 <ais523> ]ul (this isn't part of the state, right?)S
19:38:06 <useless-fungot> this isn't part of the state, right?
19:38:08 <ais523> aha
19:38:10 <Ngevd> ]ul (test)S
19:38:11 <useless-fungot> test
19:38:28 <elliott> ]raw QUIT
19:38:33 <elliott> :-(
19:39:12 <ais523> `echo ]ul (test)S
19:39:14 <HackEgo> ​]ul (test)S
19:39:22 <ais523> hmm, it still remembers its ignore list
19:39:48 <elliott> are you sure that's not HackEgo's bad feature
19:39:55 <elliott> ?so ]ul (test)S
19:39:55 <lambdabot> ]ul (test)S not available
19:39:55 <useless-fungot> test ...bad insn!
19:39:57 <elliott> indeed
19:40:06 -!- fungot has joined.
19:40:09 -!- useless-fungot has quit (Remote host closed the connection).
19:40:10 <Ngevd> fungot!
19:40:10 <fungot> Ngevd: memory is automatically freed when the routine returns, no more.
19:40:18 <Ngevd> You have killed this imposter!
19:40:24 <Ngevd> But he was our friend!
19:40:32 -!- tiffany has joined.
19:40:43 <Ngevd> He was mouse-like in friendliness!
19:40:46 <Ngevd> And you killed him!
19:40:51 <elliott> revive useless-fungot fizzie :'(
19:40:51 <fungot> elliott: i do get to that part
19:40:59 <oerjan> Ngevd: it just freed its memory, as it said
19:41:13 <Phantom_Hoover> `echo @echo echo
19:41:13 <Ngevd> ^style
19:41:14 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
19:41:15 <HackEgo> ​@echo echo
19:41:17 <fizzie> I had nothing to do with any useless fungots. :/ :/ :\
19:41:17 <fungot> fizzie: sounds great. what kind of comments were you looking for? ' l' is the ' title' sed -e ' s//')" /usr/ bin/ fnord
19:41:59 <Ngevd> THEORY: useless-fungot was Deewieant.
19:41:59 <fungot> Ngevd: undefined method `empty' for :array fnord fnord fnord return fnord fnord y fnord z) ( 5 t))))(if ( i 20)(cons y ( g ( fnord,
19:42:35 <elliott> fizzie: Thence whom htv.fi????
19:42:42 <fizzie> I suggest you use the IP-ADDRESS MATCHING MACHINE to corraboramorate that theory.
19:43:02 <elliott> I don't HAVE one of those.
19:43:04 <elliott> That would be useful.
19:43:13 <oerjan> etacorroborrocate
19:43:23 <elliott> `run grep cs27125254.pp.htv.fi /var/logs/_esoteric/????-??-??-raw.txt
19:43:24 <ais523> elliott: fizzie's right, /whowas useless-fungot matches /whois Deewiant
19:43:24 <fungot> ais523: i'm getting lowest ping delay ever, fnord ms to the nearest mark.
19:43:25 <HackEgo> grep: /var/logs/_esoteric/????-??-??-raw.txt: No such file or directory
19:43:43 <ais523> I should have run a really complex UL program on useless-fungot
19:43:44 <fungot> ais523: cfunge use no external libraries that rely on mutation with precisely mutative operations. linear-update operations may be fnord, just not doing a dns lookup :p
19:43:55 <Ngevd> My THEORY was /right/?
19:44:01 <Ngevd> fungot, what do you make of this?
19:44:01 <fungot> Ngevd: no! type safety really means safety. c++ does not belong to the set
19:44:24 <fizzie> The way the MACHINE works, you set up these numbered balls to resemble IP addresses, and then the balls go to the large drum, and then it rotates, and then you get 7 matching numbers and win millions. Plus three extra numbers.
19:45:30 <Ngevd> What if it uses IPv6!?
19:45:39 <fizzie> Then you just put in more balls.
19:46:05 <Ngevd> OF COURSE
19:46:30 <oerjan> nanoballs
19:46:30 <Ngevd> Mind you, that takes balls to pull off
19:46:53 <oerjan> and a drum the size of half of earth
19:47:44 <Ngevd> Is it just me, or has the art for Freefall suddenly improved?
19:48:09 <fizzie> Also there has not been a "HTV" (for "Helsinki TeleVisio") in quite a while; it's been "Welho" since 2006, and I think it's "DNA Welho" now that Sanoma sold the cable TV/Internet business to DNA.
19:48:55 <elliott> fizzie: Oh, I assumed it was like... Helsinki Technology Vuniversityof.
19:49:50 -!- ive has quit (Ping timeout: 248 seconds).
19:50:08 <fizzie> Those are the old "hut.fi" names.
19:50:10 <elliott> They should do a Rubik's cube where you have to assemble it into the entire 16-bit RGB colour space.
19:50:14 <elliott> How big would that be?
19:50:24 <oerjan> Ngevd: how so?
19:50:28 <elliott> Uh, not 16-bit.
19:50:29 <elliott> 24-bit.
19:50:34 <elliott> You know, #ABCDEF.
19:50:40 -!- fizziew has joined.
19:50:44 <fizziew> Like this work-box.
19:50:52 <elliott> fizziew: GET ON THE MATHEMATICS
19:50:53 <ais523> elliott: YOU'RE NOT ALLOWED TO ABBREVIATE IT!
19:50:59 <elliott> ais523: ?????????????/////////
19:51:11 <ais523> adjudicated blind collaborative…
19:51:14 <ais523> I forget where it goes from there
19:51:18 <elliott> heh
19:51:21 <Ngevd> oerjan, dunno, it just seems to have
19:51:33 <Ngevd> Something esolang factory
19:51:40 <oerjan> well my eyes don't really notice anything...
19:51:50 <fizziew> Deewiant: I accidentally joined #esoteric of IRCnet first. There was a single person on the channel, and the topic said something about esoteric philosophy.
19:52:10 <Deewiant> Did you at least say "hi"?
19:52:12 <Ngevd> DESIGN
19:52:12 <elliott> FINALLY, somewhere to point people!
19:52:39 <fizziew> Deewiant: No, I /part'd in a huff.
19:52:41 <Ngevd> To me, there are only three IRC channels on one server
19:52:52 <Ngevd> #esoteric, #esoteric-minecraft, and #darths
19:52:53 <ais523> fizziew: the idea is that we can tell people to go there if they're coming here for the wrong esoteric
19:52:54 <Deewiant> fizziew: That's a bit rude.
19:52:56 <Ngevd> On irc.esper.net
19:53:02 <elliott> fizziew: Why can't I connect to irc.ircnet.org
19:53:21 -!- sebbu2 has joined.
19:53:21 -!- sebbu2 has quit (Changing host).
19:53:21 -!- sebbu2 has joined.
19:53:23 <elliott> Am I insufficiently European
19:53:41 <Deewiant> elliott: http://irc.tu-ilmenau.de/all_servers/
19:53:56 <oerjan> your europeanness is exceedlingly brittle
19:54:01 <oerjan> *-l
19:54:15 <fizzie> ix.irc.at has the most accurate description.
19:54:26 <Ngevd> I am more European than most Brits.
19:54:27 <elliott> Deewiant: I like how the form's broken
19:54:39 <ais523> elliott: ircnet doesn't have a central send-to-random-server
19:54:48 <ais523> like Freenode does
19:54:52 <elliott> * Topic for #esoteric is: EsotericPhilosopher.com - Esoteric Philosophy
19:54:52 <elliott> * Topic for #esoteric set by Cocytus!~Cocytus@c-76-19-169-95.hsd1.ma.comcast.net at Wed Nov 9 17:48:40 2011
19:54:52 <elliott> * Users on #esoteric: elliott @Cocytus
19:54:59 <elliott> IRC
19:54:59 <elliott> Network: Freenode
19:54:59 <elliott> Channel: #Philosopher
19:55:12 <elliott> Let's make friends with him!!!!!!!!!!!!!!!!! Wait no he's probably awful.
19:55:16 <elliott> Oh god.
19:55:18 <elliott> I know what I'm going to do.
19:55:22 <elliott> I'm going to start talking about esolangs in there.
19:55:27 <elliott> PAYBACK TIME, BITCHES
19:55:32 <fizzie> He's going to be all confused how popular the channel suddenly is.
19:56:26 <elliott> fizzie: Oh no.
19:56:31 <elliott> fizzie: My #esoteric tab went red.
19:56:34 <elliott> That means there's messages.
19:56:36 <elliott> I'm too embarrassed to look.
19:56:45 <Ngevd> It's me
19:56:45 <elliott> SOMEONE JOIN ME FOR SUPPORT
19:56:47 <Ngevd> Don't worry
19:56:49 <elliott> Oh good.
19:56:53 -!- sebbu has quit (Ping timeout: 260 seconds).
19:56:56 <fizzie> Quite many (at least the .fi) IRCnet servers only allow "local" (for some values of) people; ideally you'd just connect to the server of your university/ISP.
19:56:57 <Ngevd> Now that channel is mainly Hexhamers
19:57:02 <elliott> X-D
19:57:12 <elliott> fizzie: I just connected to xs4all's.
19:57:15 <elliott> It's, you know, access for all.
19:57:34 <Deewiant> My ISP's server is on the other side of the country and my university's sucks so I use fizzie's ISP's
19:57:52 <fizzie> Deewiant: Oh, Nebula has generic-enough I:lines for that?
19:57:55 -!- DCliche_ has joined.
19:58:14 <fizzie> Also why you be dissin' irc.cs.hut.fi, it's not that bad.
19:58:26 <Deewiant> I don't know what an I:line is but the connection works so I guess so
19:58:30 <Deewiant> It's in permanent split-mode :-P
19:58:42 <Vorpal> lol?
19:59:05 <elliott> Deewiant: I think I:lines are IP whitelists or something.
19:59:08 <elliott> To keep the foreigners out.
19:59:20 <Vorpal> basically yes
19:59:22 <Deewiant> Yes, that would've been my guess
19:59:40 <fizzie> "/stats I" -- I see there's a 0.0.0.0/0 catch-all line nowadays.
19:59:51 <elliott> Where are the haps on IRCNet, I want to see people talk Finnish
20:00:30 <fizzie> You could consider #linux.fi, I've been banned from there once or twice, for associating with the wrong sort of people.
20:00:32 <Deewiant> fizzie: I don't see that
20:00:56 <Deewiant> fizzie: I do see *@*.pp.*.fi, though
20:01:16 <elliott> fizzie: The "wrong sort of people"?
20:01:24 -!- DCliche has quit (Ping timeout: 258 seconds).
20:01:24 <elliott> * Cannot join #linux.fi (Channel is invite only).
20:01:28 <elliott> I'm not Finnish enough.
20:01:28 <Ngevd> elliott, you know, Swedes
20:01:29 <Deewiant> fizzie: Oh, crap, I'm actually on cs.hut.fi, darn
20:01:44 <Deewiant> I have been on nebula though :-P
20:01:56 <elliott> * [fizzie] @!4QPSPt934400 @#irtie @#getnolife #douglasadams #!/usr/bin/ff
20:02:01 <fizzie> 22:01 [ircnet] -!- #linux.fi: invite 246*!*@*
20:02:01 <fizzie> 22:01 [ircnet] -!- #linux.fi: invite *!*@*.fi
20:02:06 <elliott> fizzie: Wasn't !4QPSPt934400 the one I invaded last time? :p
20:02:08 <fizzie> Yeah, you need to be Finnish enough.
20:02:08 <elliott> Also, wow.
20:02:09 <Vorpal> getnolife?
20:02:29 <Vorpal> <fizzie> 22:01 [ircnet] -!- #linux.fi: invite 246*!*@* <-- uh
20:02:31 <Vorpal> XD
20:02:44 <Vorpal> fizzie: how does that invite even make sense
20:02:46 <fizziew> Vorpal: That's for the autogenerated nicknames.
20:02:52 <Vorpal> fizziew: uh?
20:03:04 <fizziew> Vorpal: They get the server number prefix thingie-thingie, 246* matches Finland.
20:03:07 <Vorpal> ah
20:03:16 <fizziew> Vorpal: For the current IRCnet "handle nick collisions by renaming" thing.
20:03:41 <Vorpal> I see
20:03:52 <fizzie> elliott: Actually it was !4OOW7t934400 at that time; it managed to become empty and therefore got a new random ID generated.
20:04:04 <elliott> fizziew: Can I forge a .fi hostname easily? I want to join the #linux.fi gang.
20:04:13 <elliott> Surely IRCnet is lawless enough for that.
20:04:29 <elliott> I just need to find a really hippie server with a /changehost command.
20:04:55 <fizzie> I'm not sure whether IRCnet servers generally do a forward-lookup check. It could be they just trust reverse DNS as-is.
20:05:36 <elliott> fizzie: I doubt I control my reverse DNS :P
20:05:39 <fizzie> In which case you'd need to just fake that.
20:05:46 <elliott> fizzie: It would be great if they used the old USER syntax and believed the hostname you gave it.
20:06:19 <fizzie> Well, no, but you could control it for e.g. a Hurricane Electric and/or SixXS IPv6 tunnel or whatever. (Though SixXS would then ban you for "DNS spam".)
20:07:02 <fizzie> I really wouldn't say #linux.fi would be worth it.
20:07:12 <fizzie> You can join an empty channel and ban yourself to get the same experience.
20:07:18 <elliott> X-D
20:07:41 <elliott> Deewiant: So how big would that Cube be
20:08:42 <Deewiant> What Cube
20:09:03 <Vorpal> elliott: 128x128x128 I thought?
20:09:19 <elliott> <elliott> They should do a Rubik's cube where you have to assemble it into the entire 16-bit RGB colour space.
20:09:19 <elliott> <elliott> How big would that be?
20:09:20 <elliott> <elliott> Uh, not 16-bit.
20:09:20 <elliott> <elliott> 24-bit.
20:09:20 <elliott> <elliott> You know, #ABCDEF.
20:09:27 <elliott> How big physically, I mean :P
20:09:44 <elliott> Vorpal: Nah, you can't see the colours on the inside, obviously
20:09:55 <elliott> If you rotate the result around fully, you should see every 24-bit RGB colour
20:10:04 <elliott> In a spectrum
20:10:27 <Deewiant> > sqrt (2^24/6)
20:10:27 <lambdabot> 1672.184997739983
20:11:11 <fizzie> Vorpal: Also #getnolife was a sort of a splinter group of "Irti Elämästä ry"; you can try to Googlelate http://fi.wikipedia.org/wiki/Irti_El%C3%A4m%C3%A4st%C3%A4 though I doubt it will much help. Both are defunct now.
20:11:16 <Ngevd> @ping
20:11:17 <lambdabot> pong
20:11:22 <Vorpal> elliott: anyway that was a a322 reference
20:11:46 <elliott> fizzie: Boredom, and epäviileyden nörttiyden promotion.
20:11:46 -!- Ngevd has quit (Quit: Leaving).
20:12:05 <elliott> Rautio, May Day: Nerd culture increases -> (and destruction?) [_ Protu (Journal) . 2005 # 2. Prometheus Camp Association. Subsequent 26/11/2009.
20:12:11 <elliott> Sounds like something fungot would say.
20:12:11 <fungot> elliott: unlambda is weird
20:12:14 <elliott> Ha.
20:12:26 -!- Ngevd has joined.
20:12:49 <fizzie> elliott: "The rise (and fall?) of nerd culture" would be a more apt translation of the title.
20:13:06 <elliott> I prefer "Nerd culture increases -> (and dsetuction?) [_".
20:13:12 <elliott> s/dsetuction/destruction/
20:15:37 <fizzie> elliott: The original organization organized a "nerd attack" to the Helsinki main railway station in 1999; the main thing I recall from that was that they IRCed from inside the storage lockers of the railway station -- cf. http://www.protu.fi/lehti/lehti2-05/kuvat/nortit_lokeroissa_iso.jpg
20:15:49 <fizzie> Made the "main" newspapers and all.
20:15:50 <elliott> fizzie: Why am I not this cool???
20:16:28 <fizzie> Then it all sort of fizzled out pretty soon.
20:16:58 <Ngevd> elliott, I wasn't lying
20:17:00 -!- Ngevd has quit (Client Quit).
20:19:38 <elliott> oerjan: have I mentioned how I think (safeWriteIORef :: IORef a -> a -> b -> b) is safe?
20:19:49 <elliott> safeWriteIORef ref v a = unsafePerformIO (writeIORef ref v >> return a)
20:20:18 <Deewiant> Why the b
20:20:28 <elliott> Deewiant: As opposed to
20:20:36 <fizzie> Some people were annoyed when the social side (meetings and all that) was starting to dominate the organization; there was a (democratic) coup, and then the newly elected government disbanded the organization and started the "People's Democratic Irti Elämästä", while the people who liked being social started "Getnolife". I don't think either one of the new organizations survived for so very long.
20:20:41 <Deewiant> elliott: IORef a -> a -> a
20:20:52 <elliott> Deewiant: Returning what, v?
20:20:56 <Deewiant> elliott: Yep
20:20:57 <fizzie> I wasn't ever a member of any of these, just sort of watched from the sidelines.
20:21:01 <elliott> Deewiant: Less general
20:21:06 <elliott> Deewiant: (Don't say seq, you need pseq)
20:21:18 <fizzie> Incidentally, the irtie folks were in fact the "wrong people" associating with whom got me banned from #linux.fi.
20:21:49 -!- monqy has joined.
20:22:04 -!- copumpkin has quit (Ping timeout: 260 seconds).
20:22:05 <elliott> fizzie: Why is Finnish culture so fucking interesting :(
20:22:06 <Deewiant> elliott: I was going to say that you don't need the generality for anything but I guess it's easier than using pseq
20:22:10 <elliott> We have no IRC gangs!
20:22:18 <elliott> Deewiant: pseq isn't standard
20:22:27 <fizzie> I'm not sure "culture" is the right word here, and this was all long time ago, there's nothing interesting going on in modern-day Finland.
20:22:31 <Deewiant> elliott: unsafePerformIO and writeIORef are?
20:22:39 <elliott> Deewiant: unsafePerformIO is in Haskell 2010
20:22:46 <Deewiant> elliott: writeIORef is?
20:22:49 -!- copumpkin has joined.
20:22:58 <elliott> Hmm, no, surprisingly enough
20:23:01 <elliott> But it's ubiquitous
20:23:03 <elliott> pseq ain't
20:23:48 <elliott> I guess pseq a b = unsafePerformIO (a `seq` return b) is a portable pseq :)
20:26:09 -!- Cocytus has joined.
20:26:38 <Cocytus> lol i was going to refer you to this room. but i had a feeling you were already here.
20:26:47 -!- Cocytus has left.
20:27:02 -!- sebbu2 has changed nick to sebbu.
20:27:11 -!- ive has joined.
20:27:19 -!- Cocytus has joined.
20:28:06 <Cocytus> (elliot, phantom_hoover)
20:28:06 <Cocytus> elliott*
20:28:48 <elliott> oh, dammit
20:28:52 <elliott> you've been here before haven't you :P
20:28:58 <elliott> our beautiful prank ruined forever :'(
20:29:42 -!- Cocytus has left.
20:30:36 -!- GreaseMonkey has joined.
20:30:37 -!- GreaseMonkey has quit (Changing host).
20:30:37 -!- GreaseMonkey has joined.
20:30:53 -!- sebbu has quit (Read error: Connection reset by peer).
20:31:18 -!- ais523 has quit (Remote host closed the connection).
20:31:38 -!- sebbu has joined.
20:31:38 -!- sebbu has quit (Changing host).
20:31:38 -!- sebbu has joined.
20:33:00 -!- ais523 has joined.
20:33:24 <ais523> CakeProphet: "you" = ?
20:34:44 <elliott> Weak (MVar (HashMap a (Weak b)))
20:34:47 <elliott> ais523: behold my beauty
20:34:53 <elliott> in
20:34:55 <elliott> the form of a type
20:35:46 <ais523> elliott: it's a type
20:35:50 <elliott> yep
20:35:53 <ais523> I'm not very good at admiring type beauty
20:36:04 <elliott> ais523: does it help if you know that Weak is a weak pointer?
20:36:07 <elliott> and MVar a mutable reference?
20:36:18 <ais523> which language is this?
20:36:21 <elliott> Haskell
20:36:27 <ais523> it, umm, makes it worse
20:36:35 <elliott> worse in a /beautiful/ way
20:37:45 -!- Ngevd has joined.
20:38:13 -!- Ngevd has quit (Client Quit).
20:43:27 -!- Ngevd has joined.
20:43:46 <Ngevd> Remember when we made ABCDEF...G?
20:44:18 <oerjan> <elliott> you've been here before haven't you :P <-- i thought the nick looked familiar
20:44:37 <elliott> oerjan: insufficient horror at the safety of safeWriteIORef
20:45:29 <shachaf> elliott: Ooh, I'm Finnish!
20:45:36 <elliott> shachaf: Quite.
20:45:38 * shachaf knows little of Finnish culture, though. :-(
20:45:48 <oerjan> elliott: i don't understand why that would be considered safe...
20:45:50 <elliott> shachaf: It's based around IRC and the demoscene.
20:45:58 <elliott> oerjan: it has no observable side-effects outside of IO
20:46:10 <shachaf> elliott: I don't think that's hwo Finnish culture works...
20:46:33 <elliott> oerjan: and, of course, with things like StableNames and so on, we find it perfectly acceptable to be able to observe more about the evaluation of pure expressions than the semantics allow, so long as it is in IO
20:46:45 <elliott> Deewiant: BTW, I think Data.IORef is standard, since you can implement it in terms of the FFI
20:46:56 <elliott> Well, hmm
20:46:59 <elliott> I guess only for Storable types
20:47:14 <elliott> Oh wait
20:47:18 <elliott> You can do it in terms of mutable arrays methinks
20:47:28 <Ngevd> Finnish culture has no observable side-effects outside of IO!?
20:47:31 <elliott> Which aren't standard >_<
20:48:15 <elliott> Aha
20:48:16 <elliott> StablePtrs
20:48:18 <elliott> let you do it
20:48:26 <oerjan> Ngevd: it's the truth!
20:48:46 <oerjan> the finns are a pure people
20:49:54 <elliott> Oh, hmm
20:49:59 <elliott> StablePtrs are immutable
20:50:08 <elliott> Aha
20:50:10 <elliott> But they're Storable
20:51:01 <oerjan> elliott: iirc that's how the reflection package worked
20:51:26 <Ngevd> I see philosophy guy caught onto us
20:51:40 <elliott> oerjan: I think I have a workable implementation :)
20:51:42 <elliott> newtype IORef a = IORef (ForeignPtr (StablePtr a))
20:51:44 <elliott> strategy, that is
20:51:51 * elliott briefly wonders why he's implementing portable IORefs
20:52:48 <olsner> briefly? what made you stop wondering?
20:52:58 <oerjan> to maintain the illusion that there will ever be a non-ghc-based full haskell implementation again
20:54:01 <oerjan> ghc is like this beast that just keeps growing type tentacles
20:55:51 <oerjan> some time in the next 2-3 years someone (perhaps named kiselyov) will discover that ghc's type system has grown to the point of supporting a full embedded dependent type system by accident
20:56:01 <Ngevd> Trivia: all natural numbers are one less than another natural number
20:56:01 <Ngevd> This works backwards almost all the time
20:58:55 <elliott> Deewiant: oerjan: http://sprunge.us/Qcjg
20:59:01 <elliott> Therefore Data.IORef is standard, Q.E.D.
20:59:20 <Deewiant> mkFinalizer?
20:59:39 <elliott> Deewiant:
20:59:39 <elliott> foreign import ccall "wrapper"
20:59:39 <elliott> mkFinalizer :: (Ptr a -> IO ()) -> IO (FunPtr (Ptr a -> IO ()))
20:59:45 <Deewiant> Yes.....
20:59:49 <Deewiant> That doesn't look "standard"
20:59:49 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch8.html
20:59:54 <elliott> Grep /wrapper/
21:01:16 <elliott> ghc: error: a C finalizer called back into Haskell.
21:01:16 <elliott> This was previously allowed, but is disallowed in GHC 6.10.2 and later.
21:01:16 <elliott> To create finalizers that may call back into Haskell, use
21:01:16 <elliott> Foreign.Concurrent.newForeignPtr instead of Foreign.newForeignPtr.
21:01:17 <elliott> Swoot
21:03:58 <elliott> Deewiant: But yes, all that's perfectly standard apart from my maybe-broken finaliser
21:06:25 <Phantom_Hoover> Dammit America, stop worrying me with your absurdly terrible job market.
21:06:59 <elliott> Deewiant: Actually no, my code is perfectly fine, GHC just disallows it for performance reasons :)
21:07:06 <oerjan> just worry about italy instead
21:07:12 -!- songhead95 has joined.
21:07:22 <elliott> hi songhead95!
21:07:24 <elliott> `quote rotting sea life
21:07:26 <Ngevd> There is a wasp.
21:07:26 <Ngevd> On my pillow.
21:07:26 <Ngevd> Advice?
21:07:26 <HackEgo> 99) <songhead95> think of all the starving kids in china who don't have rotting sea life to eat
21:07:32 <Deewiant> Sleep.
21:07:38 <songhead95> Love
21:07:43 <Deewiant> Sleep on it
21:07:45 <Phantom_Hoover> Eh; Italy doesn't blend with my perception of things like the US does.
21:07:52 <Phantom_Hoover> Ngevd, magma.
21:07:53 <elliott> Ngevd: Friendship wasp
21:08:08 <oerjan> Ngevd: empty glass
21:08:32 <songhead95> Might somebody be able to tell me why my should-be brainfuck interpreter doesn't interpret brainfuck?
21:08:36 <songhead95> http://pastebin.com/5QhHSfA0
21:08:42 <oerjan> +something to slide between
21:08:57 <Phantom_Hoover> oerjan, no that is not in the spirit of friendship
21:09:08 <Ngevd> I waved my pillow around outside my window for a bit
21:09:14 <elliott> songhead95: i note that you don't have any code to handle [
21:09:17 <Ngevd> It's not on my pillow anymore
21:09:18 <Phantom_Hoover> animal friendship: animal husbandry for the 21st century
21:09:20 <elliott> songhead95: what about when you hit [ and the cell is 0?
21:10:23 <songhead95> oh whoops
21:10:46 <ais523> elliott: wow, Oracle are alleging that Google copied which classes inherit from which other classes
21:10:53 <elliott> :D
21:11:33 <ais523> <Oracle> According to Oracle’s java.util API specification, the Hashtable class is a subclass of Dictionary, and implements three interfaces: Serializable, Cloneable, and Map, which are found in the java.lang, java.io, and java.util packages, respectively. This organization is hardly intuitive or preordained, but Google copied it. Android’s Hashtable class is likewise a subclass of Dictionary, and implements the same three interfaces, with the
21:11:34 <ais523> same three names, found in the same three corresponding Android packages.
21:12:56 <Ngevd> In other news, Hexham beat Stobswood 8 2
21:13:01 <elliott> olsner: it is done: http://hpaste.org/53881
21:13:07 <Ngevd> Wait a moment 'till I find out what sport
21:13:24 -!- DCliche has joined.
21:13:37 <Ngevd> Oh.
21:13:39 <Ngevd> Football.
21:17:00 -!- DCliche_ has quit (Ping timeout: 258 seconds).
21:27:11 <Ngevd> ...Where's Stobswood?
21:28:53 <oerjan> it doesn't really exist, they just made it up to make the hexhammers feel better about their football team.
21:31:01 <elliott> Ngevd: morpeth, apparently
21:31:04 <elliott> http://www.google.co.uk/maps/vt/data=Ay5GWBeob_WIPLDYoIWcfVXxvZu9XwJ55OX7Ag,C5cdt2A5CfGdk67NP3fQV7xwKKLsYcHz8F-9A1U08Az-t3JBJy4hche_-np_WGhzG-UwL4AZsYR5Ig
21:31:07 <elliott> wow they found the most boring place
21:31:20 <elliott> http://en.wikipedia.org/wiki/Widdrington_Station_and_Stobswood population 120
21:35:21 <Vorpal> <ais523> <Oracle> According to Oracle’s java.util API specification [...] <-- are they complaining about google following the spec?
21:35:37 <Vorpal> oh right
21:35:41 <Vorpal> but why!?
21:35:58 <elliott> money
21:36:10 <Vorpal> I see
21:37:02 <ais523> Vorpal: they're complaining about Google copying parts of the spec, whilst not implementing others
21:37:19 <ais523> in particular, they're alleging copyright infringement of the Java API
21:37:25 <Vorpal> btw, dragonborn (which iirc show up in D&D?, and now also in Skyrim) make little sense
21:37:30 <Vorpal> if you actually think about it
21:37:36 <ais523> and most of the arguing that's going on is about whether this is a meaningful concept or not
21:37:46 <ais523> Vorpal: it's a D&D4 thing, I think; probably from a D&D3 splatbook
21:37:47 <Vorpal> I'm pretty sure that genetically it wouldn't work either
21:37:58 <elliott> fantasy: genetically accurate
21:38:19 <Vorpal> elliott: but also think what it means. Some human did what with a dragon!?
21:38:33 <ais523> Vorpal: in D&D, dragons can shapechange at will
21:38:42 <ais523> presumably it happens while the dragon is in human form
21:38:43 <Vorpal> hm okay
21:38:47 <Vorpal> well okay
21:38:51 <elliott> Vorpal: It would be more unrealistic to /not/ have that happen!
21:39:19 <Vorpal> elliott: well yes if you /had/ the concept of dragonborn you need something like that.
21:39:35 <Vorpal> but I'm questioning the whole concept as it were
21:39:37 -!- Ngevd has quit (Ping timeout: 258 seconds).
21:54:14 <oerjan> someone on the iwc forum pointed out that tomorrow's iwc rerun will be no. 11, and appear at 11:11 MET 11/11/11
21:54:54 <elliott> heh
21:55:04 <elliott> oerjan: did you know: you'll be over 50 once iwc finishes rerunning
21:55:15 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
21:55:50 -!- augur has quit (Remote host closed the connection).
21:59:57 -!- Zuu has quit (Ping timeout: 244 seconds).
22:00:55 <elliott> oerjan: :D
22:06:17 -!- Ngevd has joined.
22:06:24 -!- Zuu has joined.
22:06:33 -!- airells has joined.
22:06:40 <Ngevd> GOOD NEWS, ESOLANGERS!
22:06:48 <Ngevd> I've done some work on XSLT S and K
22:06:54 <Ngevd> AND IT WORKS FOR ONE ITERATION
22:07:05 <oerjan> YAY
22:07:06 <Ngevd> It can turn SKKx to Kx(Kx)
22:07:12 <elliott> Mine worked for one iteration, too.
22:18:14 -!- derdon has quit (Remote host closed the connection).
22:23:56 -!- Taneb has joined.
22:25:40 -!- Ngevd has quit (Ping timeout: 240 seconds).
22:29:36 -!- Darth_Cliche has joined.
22:30:19 -!- Taneb has quit (Read error: Connection reset by peer).
22:30:45 -!- Taneb has joined.
22:32:43 -!- DCliche has quit (Ping timeout: 276 seconds).
22:38:26 -!- Taneb has quit (Read error: Connection reset by peer).
22:41:42 <Phantom_Hoover> Result!
22:41:53 <Phantom_Hoover> I've hopelessly confused someone in #Philosopher!
22:42:03 <Phantom_Hoover> STRIKE ONE FOR ESOLANGS
22:44:07 -!- Taneb has joined.
22:44:20 <Madoka-Kaname> Phantom_Hoover, how?
22:44:56 <Taneb> Why doesn't //app[./*[position()=1]/*[position()=1 and self::k] or ./*[position()=1]/*[position()=1]/*[position()=1 and self::s]] work?
22:45:16 <elliott> `pastelogs Sut-Heb
22:45:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.25178
22:45:29 <Taneb> fungot?
22:45:29 <fungot> Taneb: language files code comment comment blank total iirc) are *evil*
22:45:37 <Taneb> Ooh, I'm all bold
22:45:38 <elliott> Phantom_Hoover: Oh my god.
22:45:41 <Phantom_Hoover> <Phantom_Hoover> Hmm, so is Philosopher a Brainfuck derivative?<Sut-Heb> lol
22:45:41 <Phantom_Hoover> <Sut-Heb> you;ll be brainfucked you stick around long enough
22:45:41 <Phantom_Hoover> <Phantom_Hoover> So is that a yes?
22:45:41 <Phantom_Hoover> <Sut-Heb> well thats if you stimulaed by the esoteric arts
22:45:41 <Phantom_Hoover> <Sut-Heb> if not then you'll just think where out of our mindzx
22:45:42 <Phantom_Hoover> <Phantom_Hoover> Yesyesyes but is it a Brainfuck derivative/
22:45:42 <elliott> Phantom_Hoover: That guy's been in here too.
22:45:44 <Phantom_Hoover> <Sut-Heb> so what borught you here?
22:45:46 <Phantom_Hoover> <Phantom_Hoover> A desire to purge all Brainfuck derivatives.
22:45:48 <Phantom_Hoover> <Phantom_Hoover> I am like the Terminator except more so.
22:45:49 <elliott> Phantom_Hoover: It's literally a refugee for stupid #esotericers.
22:45:50 <Phantom_Hoover> <Sut-Heb> brainfuck derivitive's what do you mean by that
22:46:00 <elliott> Stop flooding you idiot Phantom_Hoover Phantom_Hoover BOTH THOSE PEOPLE HAVE BEEN IN HERE BEFORE
22:46:01 <elliott> IT'S AMAZING
22:46:15 <ais523> http://esolangs.org/wiki/Object_(programming_language)
22:46:16 <Phantom_Hoover> YES
22:46:21 <Phantom_Hoover> WE SURROUND THEM
22:46:24 <elliott> ais523: good news and bad news
22:46:38 <ais523> the good news is that it's not obviously a BF deriv
22:46:41 <elliott> ais523: good news: we have two places to send people who come here for the wrong reasons
22:46:46 <elliott> ais523: bad news: they're both awful
22:47:05 <ais523> the bad news is, well just look at it
22:47:26 <elliott> ais523: at least the syntax highlighting is pretty
22:47:42 <elliott> ais523: article violates two policies
22:47:45 <elliott> at the least
22:47:45 <ais523> I'm unsure whether that's syntax highlighting or part of the source
22:47:49 <elliott> can you tell what they are?
22:47:50 <ais523> what's the other one?
22:47:54 <ais523> oh right
22:47:54 <elliott> what's the first one?
22:47:56 <ais523> userpage link, category?
22:47:58 <elliott> yep
22:48:01 <ais523> I missed the userpage pothole
22:48:09 <ais523> it's also not linked from anywhere it should be
22:48:18 <elliott> the good thing about Graue's rules is, they're really good at annoying people
22:48:23 <elliott> especially when they're stupid rules
22:48:23 <ais523> and there's not enough information to figure out how to categorise it
22:48:36 <ais523> I actually like the no-userspace-potholes rule
22:48:50 <elliott> It's reasoanble enough.
22:48:52 <ais523> and as for the cats rule, if it gets rid of articles like that I can live with the false positives ;P
22:49:05 <elliott> no unauthorised cats
22:49:07 <elliott> they will not be fed
22:50:04 <Phantom_Hoover> `quote matrix of solidity
22:50:07 <HackEgo> 301) <treederwright> enjoy being locked in your matrix of solidity
22:50:19 <elliott> Phantom_Hoover: What has he said after not gbeating around the bush.
22:50:23 <ais523> do we have an esolang based on the matrix of solidity concept yet?
22:50:31 <Phantom_Hoover> elliott, nothing.
22:50:35 <elliott> :'(
22:50:46 <elliott> ais523: no, it would inevitably fail to live up to expectations
22:51:04 <elliott> ais523: The esolang... is us.
22:51:12 <ais523> elliott: that's IRP, isn't it?
22:51:24 <elliott> No, that esolang is certain parts of us projected onto the internet.
22:51:27 <elliott> The matrix of solidity is literally us.
22:52:04 <elliott> Phantom_Hoover: Oh dear, Cocytus has /msg'd me.
22:52:08 <elliott> I'm afraid to check the tab.
22:52:33 <elliott> Oh wait, it's okay, a mentality is transcendent.
22:52:50 <elliott> "Freenode is the most reliable network for IRC and the most secure." -- http://www.esotericphilosopher.com/chat/
22:52:58 <elliott> whatever you say...
22:53:20 <elliott> ais523: btw, could you delete [[User:Ehird/sandbox]]?
22:54:07 <ais523> elliott: after making sure you aren't burying the history of something, yes
22:54:12 <Phantom_Hoover> Nobody tell Timwi about the Symbol of the Day.
22:54:22 <oerjan> the hermitian matrix of solidity
22:54:23 <elliott> ais523: Damn!
22:54:42 * ais523 waits for elliott to come to a realisation
22:55:31 <ais523> deleted, anyway
22:55:48 <Phantom_Hoover> So what was it?
22:56:00 <elliott> ais523: What realisation? That wasn't damning you.
22:56:04 <elliott> That was just damning... the empty string.
22:56:08 <ais523> elliott: I know
22:56:12 <ais523> that's why I didn't get annoyed
22:56:14 <ais523> I just thought it was amusing
22:56:15 <elliott> heh
22:56:17 <ais523> in context
22:56:37 <oerjan> damn "you"
22:56:41 <oerjan> the string, that is.
22:57:05 <ais523> that's also a bizarre operation
22:57:11 <elliott> Damn damning.
22:57:15 <elliott> And damn damnation.
22:57:18 <elliott> And damn "damn".
22:57:22 <Phantom_Hoover> ais523, damn you!
22:57:24 <elliott> Damn.
22:57:30 <oerjan> jean claude van damn
22:57:39 <ais523> Phantom_Hoover: why? that's an incredibly mean thing to do on such minor motivation
22:57:51 <ais523> if I thought you believed it, I'd be furious
22:57:55 <ais523> as it is, I'm merely angry
22:58:02 <Taneb> Well, #xml should help me with my XSLT problems
22:58:10 <Phantom_Hoover> ais523, actually angry, or theoretically angry?
22:58:17 <oerjan> everyone fear the hoover damn
22:58:22 <ais523> Phantom_Hoover: actually, believe it or not
22:59:11 <Phantom_Hoover> ais523, that's an awful lot of effort to go to for the sake of being quirky.
22:59:21 <ais523> Phantom_Hoover: anger takes /effort/?
22:59:25 <ais523> it's suppressing anger that takes effort
22:59:29 <ais523> especially when people say such mean things
22:59:42 <elliott> Phantom_Hoover discovers that not everybody shares his value system.
22:59:50 <Phantom_Hoover> You're forcibly ignoring about three different aspects of standard human communication.
23:00:29 <ais523> Phantom_Hoover: people using words with meanings other than their actual meanings confuses me, to some extent
23:00:39 <ais523> because communication makes no sense if people do it too often
23:00:40 <Taneb> I suggest we pester #philosophy
23:00:42 <ais523> also, butterfly
23:00:54 <elliott> Taneb: we've done that before
23:00:58 <elliott> they're all boring
23:01:10 <Taneb> Awww
23:02:22 * Phantom_Hoover → sleep
23:02:23 -!- Phantom_Hoover has quit (Quit: Leaving).
23:02:42 <elliott> ais523: god says he's taking it back on behalf of ph, btw
23:04:33 <elliott> ais523: heh, I just read a usenet post by "alex23" in rec.games.roguelike.development convinced you wrote it
23:04:48 <elliott> and wondering why it was so bizarrely out-of-character
23:04:48 <ais523> I didn't
23:07:37 <Taneb> @ping
23:07:37 <lambdabot> pong
23:08:46 -!- airells has left.
23:09:07 <elliott> ^def ping ul (pong!)S
23:09:08 <fungot> Defined.
23:09:11 <elliott> `ping
23:09:12 <HackEgo> pong
23:09:17 <elliott> !ping
23:09:26 <elliott> !addinterp ping c puts("Pong!");
23:09:27 <EgoBot> ​Interpreter ping installed.
23:09:28 <elliott> !ping
23:09:40 <elliott> :/
23:09:57 <elliott> !delinterp ping
23:09:57 <EgoBot> ​Interpreter ping deleted.
23:10:04 <elliott> !addinterp ping c (
23:10:05 <EgoBot> ​Interpreter ping installed.
23:10:06 <elliott> !ping
23:10:09 <elliott> !ping
23:10:12 <elliott> Gregor: ?
23:10:29 -!- myndzi\ has joined.
23:11:10 <oerjan> ^ping
23:11:10 <fungot> pong!
23:11:27 <elliott> <elliott> ^def ping ul (pong!)S
23:11:28 <oerjan> elliott: EgoBot's interpreters haven't worked for weeks
23:11:33 <elliott> oerjan: *sigh*
23:11:35 <elliott> !delinterp ping
23:11:36 <EgoBot> ​Interpreter ping deleted.
23:11:41 <elliott> !addinterp ping c puts("Pong!");
23:11:42 <EgoBot> ​Interpreter ping installed.
23:11:43 -!- Taneb has quit (Read error: Connection reset by peer).
23:11:47 <elliott> that'll work when they do
23:11:56 <elliott> !delinterp ping
23:11:57 <EgoBot> ​Interpreter ping deleted.
23:11:58 <elliott> !addinterp ping c puts("Pong.");
23:11:59 <EgoBot> ​Interpreter ping installed.
23:11:59 <elliott> too happy
23:12:06 -!- Taneb has joined.
23:12:51 <oerjan> !c puts("Pong!");
23:13:34 <oerjan> !show ping
23:13:55 -!- myndzi has quit (Ping timeout: 252 seconds).
23:14:03 <oerjan> !help
23:14:03 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
23:14:17 <oerjan> !help userinterps
23:14:18 <EgoBot> ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
23:14:41 <oerjan> !show swedeesh
23:14:55 <oerjan> !userinterps
23:14:55 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph hello id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez
23:15:04 <oerjan> !show svedeesh
23:15:34 <oerjan> somehow show doesn't work though the rest of those special commands do
23:15:47 <Taneb> !show numberwang
23:16:13 <ais523> does !show actually do anything at all?
23:16:27 <ais523> ^show source
23:16:27 <fungot> (http://git.zem.fi/fungot/blob/HEAD:/fungot.b98)S
23:16:32 <Madoka-Kaname> !commands
23:16:34 <oerjan> yes, it's supposed to show the source of a userinterpreter
23:16:45 <Madoka-Kaname> !showinterp svedeesh
23:16:52 <Madoka-Kaname> !show reverse
23:16:58 * Madoka-Kaname shrug
23:17:01 <Madoka-Kaname> !svedeesh
23:17:13 <Madoka-Kaname> !reverse test
23:17:15 <Madoka-Kaname> Um
23:17:34 <oerjan> Madoka-Kaname: those don't work.
23:17:47 <oerjan> only some special commands do
23:20:10 <ais523> oh no, Pegasus made another page with the same policy violations
23:20:25 <ais523> someone else go fix them, so they won't think it's just me on a mad crusade against them
23:20:38 <elliott> The Parnassus Programming Language (2007, by Erick Atencio) is a programming language with features that other languages never had before. It is based on the When instruction, that allows to run a procedure in the moment an event happen.
23:20:44 <elliott> ais523: propose for deletion, not an esolang
23:20:49 <elliott> event-based programming is a well-known concept
23:20:57 <elliott> and the examples shown have no esoteric features whatsoever
23:20:58 <elliott> not even syntax
23:21:10 <elliott> well, apart from using the terrible whitesmiths indentation style
23:24:36 <monqy> these new languages....
23:24:46 <monqy> why is every language bad
23:24:50 <monqy> except for the good ones
23:24:59 <monqy> but who cares about those
23:25:04 <Taneb> Because mediocrity sucks
23:25:07 <elliott> ais523: he just dropped another one
23:25:13 <elliott> ais523: can you block him for spamming?
23:25:19 <monqy> ugh what
23:25:32 <monqy> what is it with this guy
23:25:35 <monqy> Category: Impossible Programming Inc
23:25:36 <ais523> elliott: the thing is, I'm not convinced it's spam or off-topic
23:25:41 <monqy> banned for category
23:25:42 <ais523> monqy: that's a clear policy violation
23:25:48 <ais523> I think we should each clean up one page at a time
23:25:50 <ais523> until he gets the point
23:25:54 <ais523> different person on each page
23:26:16 <Taneb> I'll take Parnassus
23:26:30 <Taneb> If you explain how you mean clean up
23:26:52 <elliott> ais523: http://esoteric.voxelperfect.net/wiki/Talk:Parnassus
23:27:01 <elliott> how many !votes do we need for deletion? :P
23:27:15 <ais523> Taneb: fix the userspace pothole, fix the categories
23:27:29 -!- copumpkin has changed nick to shylock.
23:27:31 <ais523> elliott: technically only one, but that means it gets deleted after about 10 years if anyone still cares by then
23:27:37 <ais523> the more support for deletion, the faster it gets deleted
23:27:39 -!- shylock has changed nick to copumpkin.
23:28:13 <ais523> I'm antilooking forward to [[Hera Runtime]], anyway
23:28:16 <elliott> http://esoteric.voxelperfect.net/wiki/User_talk:Pegasus
23:28:48 <elliott> ais523: [[Hebe Script]] is quite uncontroversially offtopic, methinks
23:29:00 <elliott> it's Not Even FURscript
23:29:07 <elliott> it's just... a language
23:29:07 <monqy> not even snack
23:29:18 <ais523> elliott: my brain's having problems reading it
23:29:22 <ais523> it just mentally filters the page out
23:29:25 <ais523> what does it say?
23:29:30 <elliott> Hebe Script is a simple scripting language that allows for the creation of little applets for the Hera Runtime. t has the CommonSystem library preloaded, and it does not have a App object, so it does not need a "When app.run = True" main method.
23:29:30 <elliott> [edit]How to copy a file to the floopy disk
23:29:30 <elliott> if get DiskSpace with "a:\";or "b:\"
23:29:30 <elliott> Higher Than FileSize with PublicArg-1
23:29:31 <elliott> call CopyFile with PublicArg-1 with (get IsAvailable with "a:\";or "b:\")
23:29:33 <elliott> End
23:29:35 <elliott> End
23:29:37 <elliott> PublicArg are the parameters that the script received.
23:29:39 <elliott> it ties in with Parnassus
23:29:41 <elliott> it seems
23:29:50 <elliott> ais523: fun fact: there's a syntax-highlighted comment on [[Parnassus]]
23:29:52 <elliott> it's just almost invisible
23:29:52 <ais523> bleh, I can't read it even when you post it, it's just that bland
23:30:07 <ais523> elliott: I noticed, I read the source of pages before the pages themselves
23:30:14 <ais523> simple anti-goatse trick
23:30:55 * elliott attempts to figure out how much he values Ryan North sketches of T-Rex with a hat on
23:31:14 <ais523> elliott: thinking about buying one, or about selling one?
23:31:20 <elliott> heh, buying
23:31:53 <elliott> it's quite difficult to estimate, as I get to pick from a large but finite set of unknown elements
23:31:56 <ais523> If i = ( 4; or 2; or 1)
23:32:08 <elliott> ais523: that's not so unreasonable, Perl 6 has that
23:32:09 <elliott> and Icon
23:32:13 <elliott> but the syntax is wow
23:32:17 <ais523> I know Perl 6 has it, but its syntax is much saner
23:32:27 <Taneb> I saw somebody wearing an xkcd shirt today
23:32:28 <ais523> Call write:string With const "The number is two, four or eleven"
23:32:31 <ais523> please tell me that's not a typo
23:32:49 <elliott> ais523: what typo?
23:32:51 <elliott> Taneb: did you run away
23:33:04 <ais523> elliott: ( 4; or 2; or 1) versus "two, four or eleven"
23:33:09 <elliott> ais523: heh
23:33:12 <elliott> ais523: it's ESOTERIC!!!
23:33:36 <Taneb> elliott, nah, he hadn't actually heard of xkcd
23:33:41 <elliott> wat
23:33:58 <monqy> did a frend give it to him as present
23:33:59 <ais523> elliott: /some/ xkcds are good…
23:34:08 <Taneb> monqy, exactly
23:34:10 <Taneb> I like the one with the arrow
23:34:27 <elliott> ais523: yes, but to wear an xkcd shirt in late 2011, well after the average quality of xkcd sunk from far above average to so, so below average?
23:34:50 <ais523> elliott: it might still be an xkcd shirt of a good xkcd
23:35:03 <monqy> I know enough about xkcd to know to and how to avoid xkcd shirts, but it doesn't matter anyway, because I refuse to wear anything but plain shirts
23:35:20 <Taneb> I've got a Homestuck shirt
23:35:28 <elliott> ais523: I just checked, all the xkcd shirts suck :)
23:35:31 * elliott objective
23:35:43 <ais523> elliott: which in your opinion is the least sucky?
23:35:49 <Taneb> I'm planning on getting an IWC shirt
23:35:53 <ais523> so I can see how bad even the least sucky is for myself
23:36:02 <elliott> ais523: probably http://imgs.xkcd.com/store/imgs/athletic_square_0.jpg, as it's impossible for the internet to run down into oblivion :)
23:36:25 <elliott> although http://imgs.xkcd.com/store/imgs/woodpecker_300.png isn't bad
23:36:42 <monqy> woodpecker is harder to associate with xkcd
23:36:49 <elliott> You have new messages (last change).
23:36:50 <elliott> oh no
23:36:53 <monqy> oh no
23:36:56 <elliott> ais523: defend me from pegasus if he cyberbullies me pls ;_;
23:37:06 <elliott> oh no he was nice
23:37:11 <elliott> now i have to feel slightly guilty about being a jerk
23:37:11 <ais523> but I'm about to go home
23:37:17 <elliott> i literally cannot win!!
23:37:25 <elliott> dear people: don't talk to me; love, elliott
23:37:40 <elliott> ais523: what's your favourite hat????
23:37:49 <elliott> rated on pure... hattiness
23:38:00 <ais523> elliott: bowler hat, I think
23:38:06 <ais523> it's particularly hatty
23:38:07 <oerjan> oh, elliott is feeling misanthropic; let's shower him with love
23:38:13 <elliott> Classy! But: Classy for a T-Rex???
23:38:19 <ais523> wow, xkcd 970 is actually mildly insightful
23:38:25 <ais523> (although, not actually /amusing/)
23:38:40 <Gregor> elliott, oerjan: AND I REFUSE TO FIX THEM MUAHAHAHAHHA
23:38:59 <oerjan> Gregor: but but ;_;
23:39:23 <oerjan> why the heck did it break, anyway
23:39:27 <elliott> ais523: hmm, that convinced me to archive binge from there to the latest xkcd
23:39:30 <elliott> ais523: I regret having read 972
23:39:40 <ais523> ah, OK
23:39:48 <oerjan> * elliott masochist
23:40:02 <elliott> oerjan: it's about five comics :P
23:40:06 <ais523> wow 972 is bad
23:40:36 <elliott> I'm going to have to sue him over 974, those @ design documents are classified
23:41:31 <ais523> elliott: hey, bad comic saved by funny comment from a viewer
23:41:43 <elliott> Man. Hats are complicated.
23:41:44 <elliott> ais523: heh
23:41:46 <ais523> wow, that sounded worryingly Vorpalish, and I don't know why
23:41:56 <elliott> "hey,"
23:42:04 <Gregor> <oerjan> why the heck did it break, anyway // I have no idea; if I knew, I'd fix it :P
23:42:36 <elliott> Gregor, are you available for hat identification services.
23:43:56 <Gregor> elliott: Depends on whether I can actually identify the hat in question.
23:44:02 <Gregor> elliott: If I can't, I wasn't available.
23:44:10 <Gregor> !ping
23:44:28 <Taneb> !pong
23:44:34 <Gregor> !delinterp ping
23:44:35 <EgoBot> ​Interpreter ping deleted.
23:44:42 <Gregor> !addinterp ping c puts("Pong!");
23:44:42 <elliott> Gregor: Feather-based hat identification services.
23:44:43 <EgoBot> ​Interpreter ping installed.
23:44:46 <Gregor> !ping
23:44:56 <Gregor> elliott: Errr ... identification based on feathers makes little sense.
23:44:58 <Gregor> Hmm ...
23:45:00 * ais523 puts a feather in Gregor's cap
23:45:23 <elliott> Gregor: Whoosh
23:45:26 <elliott> Or perhaps me-whoosh
23:46:08 <elliott> Mwhoosh.
23:46:12 <elliott> It's Welsh.
23:49:06 <oerjan> !addinterp ping c puts("Pong!");
23:49:06 <EgoBot> ​There is already an interpreter for ping!
23:49:20 <oerjan> (just checking if it's actually there :P)
23:49:29 <Taneb> !c puts("Pong!")
23:49:52 -!- EgoBot has quit (Remote host closed the connection).
23:50:01 <Taneb> And there's the problem
23:50:03 -!- EgoBot has joined.
23:50:06 <Gregor> I just disco'd it :P
23:50:38 <oerjan> !c puts("Pong!")
23:51:01 -!- elliott has quit (Read error: Connection reset by peer).
23:51:11 -!- elliott has joined.
23:51:19 -!- elliott has quit (Changing host).
23:51:19 -!- elliott has joined.
23:51:56 <Gregor> fork: retry: Resource temporarily unavailable HAHA WHOOPS
23:52:26 -!- Gregor has quit (Quit: Coyote finally caught me).
23:53:13 -!- esowiki has joined.
23:53:13 -!- glogbot has joined.
23:53:13 -!- HackEgo has joined.
23:53:15 -!- EgoBot has joined.
23:53:25 -!- Gregor has joined.
23:53:32 <oerjan> wb
23:54:08 <Gregor> YOU SAW NOTHING
23:54:24 <Gregor> !ping
23:54:26 <EgoBot> Pong!
23:54:28 <oerjan> i definitely saw no glogbackup
23:54:38 <Gregor> oerjan: I saw that too >_>
23:54:40 <Gregor> Which distresses me.
23:54:49 <Taneb> Okay, who's bright idea was it to make "xml" an invalid name for xsl:processing instuction?
23:55:19 <oerjan> !svedeesh We are working again!
23:55:19 <EgoBot> Fe-a-a ire-a-a foorkeeng igeeee! Bork Bork Bork! Bork Bork Bork! Bork Bork Bork!
23:56:04 <elliott> * glogbot has quit (Remote host closed the connection)
23:56:04 <elliott> * HackEgo has quit (Remote host closed the connection)
23:56:04 <elliott> <elliott> rip
23:56:04 <elliott> <oerjan> the whole Gregor empire collapsed
23:56:04 <elliott> * glogbot (foobar@codu.org) has joined #esoteric
23:56:05 <elliott> thats what
23:56:08 <elliott> glegbutt missed
23:56:46 <oerjan> Gregor: so was the process table entirely full, or something?
23:57:03 -!- ais523 has quit (Ping timeout: 248 seconds).
23:57:38 <pikhq> init schemes always seem so ridiculously complicated to me.
23:58:03 <pikhq> I mean, systemd... upstart... Holy crap, Debian dynamically creates a makefile for it...
2011-11-11
00:00:10 <elliott> pikhq: DAILY REMINDER THAT KITTEN'S SERVICE MANAGEMENT SOLUTION IS THE BEST???
00:01:26 <Gregor> I hope that's fixed but the only way I can test it is to kill glogbot :P
00:02:29 <Gregor> Well, never mind, I could make it react to something else as if it was glogbot quitting.
00:03:10 -!- fungot has quit (Ping timeout: 244 seconds).
00:03:18 <pikhq> elliott: At a minimum, it can't be worse than what's common.
00:03:39 -!- Taneb has quit (Ping timeout: 258 seconds).
00:03:43 <pikhq> If it has any sort of intelligence at all in its design, that is. :P
00:03:43 -!- glogbackup has joined.
00:03:49 <Gregor> Hello glogbackup!
00:03:54 <Gregor> Your services will not be necessary thank you.
00:04:20 <pikhq> And can anyone tell me why I should have to wait for every single daemon ever to start before getties spawn?
00:04:53 -!- fizzie has quit (Ping timeout: 276 seconds).
00:05:12 -!- glogbackup has left.
00:05:41 <Gregor> Turns out my dead-man's switch had a bug, it wouldn't set properly when codu came BACK :(
00:06:16 <oerjan> the man somehow stayed dead
00:06:21 <pikhq> I could understand waiting until *certain* daemons spawn for getties to start, but every single damned one?
00:06:36 <pikhq> I genuinely don't need to wait for e.g. apached to start before I log in.
00:06:47 <pikhq> Erm, just apache.
00:06:51 <elliott> Gregor: Have you ever actually merged glogbackup locks in
00:06:57 <Gregor> elliott: Haven't even implemented it :P
00:07:10 <Gregor> elliott: But it's nice to know they may or may not be there if I do or do not need them!
00:08:12 <elliott> X-D
00:10:16 -!- fizzie has joined.
00:22:57 -!- augur has joined.
00:24:09 -!- augur has quit (Remote host closed the connection).
00:25:17 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:26:01 -!- sllide has quit (Read error: Connection reset by peer).
00:29:17 -!- hagb4rd has joined.
00:35:10 -!- ive has quit (Quit: leaving).
00:37:55 -!- boily has quit (Ping timeout: 260 seconds).
00:43:59 <CakeProphet> 15:32 < ais523> CakeProphet: "you" = ?
00:44:13 <CakeProphet> context?
00:44:15 <CakeProphet> ah, he's not here.
01:00:15 -!- tiffany has quit (Quit: nini~).
01:02:29 -!- hagb4rd has quit (Ping timeout: 240 seconds).
01:04:54 -!- elliott has quit (Remote host closed the connection).
01:50:36 -!- copumpkin has quit (Ping timeout: 255 seconds).
01:56:07 -!- pkzip has joined.
01:56:35 -!- oerjan has quit (Quit: Good night).
01:58:36 <pkzip> whats the Topic ?
01:58:48 -!- madbr has joined.
01:59:05 <pkzip> ...
01:59:39 <madbr> did some progress on the definition only language :D
02:00:10 <pkzip> Its a human Forth-language ?
02:00:29 <madbr> nah, I'm not sure which language it's the most like
02:00:32 <pkzip> or a cpu-oriented one..
02:00:45 <pkzip> your no programmer
02:00:47 <madbr> but there are 5 constructs
02:00:48 <pkzip> me guesses
02:00:55 * pkzip figures
02:01:19 <madbr> - variables and multidimensional variable array
02:01:20 <madbr> s
02:01:42 <pkzip> you reinvented Forth with variables..
02:01:53 <pkzip> Should I inform chuck ?
02:02:01 <madbr> - iterators/expression only variables
02:02:36 <madbr> - litterals/immediates (ex: 5, 'a')
02:02:53 <pkzip> if its a programming language, u had just reinvented Forth !
02:03:01 <pkzip> ( as was foretold )
02:03:07 <pkzip> ( by the fathers )
02:03:07 <madbr> - comparators (=, !=, < >, <=, >=)
02:03:23 <madbr> - math operators (+ - * /)
02:03:25 <pkzip> elders, my mistake
02:03:37 <pkzip> is it using reverse-polish math ?
02:03:44 <madbr> actually it's prefix
02:03:52 <madbr> so forwards-polish :D
02:03:52 <pkzip> prefix-forth
02:04:03 <pkzip> there was someone working on it
02:04:15 <madbr> anyways there's no stack
02:04:15 <pkzip> his name was john
02:04:23 <madbr> so it can't be forth
02:04:42 <pkzip> it has to use stacks somewhat
02:05:03 <pkzip> oh i get it
02:05:10 <pkzip> esoteric programming languages
02:05:15 <madbr> - there's no defined execution order: statements are to be executed in any order, any number of times
02:05:18 <pkzip> my fav !!!!!!!!!1
02:05:29 <pkzip> oh
02:05:38 <pkzip> i hate the fucked-up psycho ones
02:05:43 <madbr> haha
02:05:48 <madbr> what about unlambda
02:05:59 <pkzip> I like the useful ones.
02:06:11 <madbr> - variables can only be defined. they can never be undefined
02:06:13 <pkzip> stuff like my own version of brainfuck
02:06:17 -!- zzo38 has joined.
02:06:30 <pkzip> or a very minimal brainfuck with some good ideas
02:06:39 <madbr> also there is only one value that variables can have: true
02:06:53 <pkzip> its a joke langauge
02:07:01 <madbr> no it's actually turing complete
02:07:35 <pkzip> it can't pass turing if all variables have only one value
02:08:15 <madbr> well, the "iterator" values can have any integer value
02:08:22 <madbr> including over 2^32
02:08:35 <madbr> but they're only valid inside the statement
02:08:49 <madbr> the trick is that a value can be true, or undefined
02:09:34 <pkzip> when I try to work on a language, its something that wud at least interest someone
02:09:35 <madbr> and since you can make an array, you can make a numerical variable by making an array and only defining one of the values
02:10:11 <madbr> When I do a language I'm trying to come up with a new, mind expanding paradigm :D
02:10:33 -!- Sgeo|web has joined.
02:10:48 <madbr> so to define the variable "toto" to 5, you would go
02:10:51 <madbr> toto 5
02:11:08 <pkzip> theres nothing to learn after Forth and LISP, and AOP, and.. oh.. i guess your right..
02:11:27 <madbr> which actually means if(true) { toto[5] = true }
02:11:50 <madbr> to do varz = varx + vary, you would go
02:11:53 <pkzip> but I prefer my mix of C/Forth/With-LISP-Macros wud be the best
02:12:13 <madbr> varz z varx x vary y = z + x y
02:12:23 <madbr> this actually means
02:12:47 -!- Aune has quit (Quit: Lmnar).
02:12:50 <pkzip> Its too late for me to try and comprehend what ur trying to code there
02:13:03 <pkzip> and I am the only hacker in here, so..
02:13:14 <pkzip> the only one listening..
02:13:15 <madbr> if (varx[x] && vary[y] && x+y==z) varz[z] = true
02:13:57 <madbr> anyways, it's really neat because it's turing complete despite the fact that variables can't ever change (!) and it has no program flow (!!)
02:14:15 <pkzip> are you the one spending time on breaking cryptographic codes and such ?
02:14:23 <pkzip> of the ones ?
02:14:29 <madbr> just a bunch of statements that define a variable (to true) if its conditions are true
02:14:34 <pikhq> Hmmm. pkzip. Any relation to Phil Katz?
02:14:52 <madbr> pkzip: actually no, I'm a sound coder irl
02:14:55 <pkzip> pkzip is the old dos zipping
02:15:05 <pkzip> though i kinda hate it now
02:15:07 <madbr> 7z is better
02:15:12 <pikhq> Yes, Phil Katz' ZIP. :)
02:15:13 <pkzip> it was super-cool in the 90s
02:15:34 <pkzip> sound coder
02:15:34 <pikhq> tar(1) is, of course, better. But hey.
02:16:08 <pkzip> tell me why linux can't use the features that device-driver writers wrote into their drivers ?
02:16:25 <pkzip> Windows drivers
02:16:49 <pkzip> since the same Windows/API/MFC code
02:16:50 <madbr> pikhq: I wonder how I'm going to garbage collect my language... seems hard :D
02:16:52 <pikhq> Because in order to do that you'd basically have to have a clone of substantial portions of Windows in Linux.
02:17:09 <pikhq> This isn't impossible, but it's *insanely* hard.
02:17:38 <pkzip> why can't they just translate the code they already .. oh wait.. its close-code
02:17:44 <pikhq> It's basically much easier to go ahead and reverse-engineer the sound cards, and thereby get native Linux drivers.
02:17:47 <pkzip> its not open-source ?
02:17:47 <pikhq> Precisely.
02:17:54 <pikhq> Windows drivers aren't.
02:17:59 <pikhq> Linux drivers are.
02:18:20 <madbr> why would anyone use sound card driver features ever anyways
02:18:25 <pikhq> And all too often the Linux drivers are written without any documentation available.
02:18:30 <pkzip> But the same companies that give those drivers to Linux users, write it to fit Windows..
02:18:36 <zzo38> I put a username/password in the cabal configuration file but it won't go. Did I do it wrong?
02:18:52 <pikhq> pkzip: It's actually not the sound card designers that make the drivers, usually.
02:19:12 <pkzip> Real-Tek sound drivers
02:19:15 <pikhq> Most of the Linux drivers for *anything* are made by someone else.
02:19:16 <madbr> sound cards are all the same nowadays anyways
02:19:21 <pkzip> or whats its caled
02:19:47 <madbr> pkzip: is that another ac98 based system?
02:19:54 <pkzip> yep
02:19:59 <pkzip> its super-cheap
02:20:04 <pkzip> but good enough
02:20:19 <madbr> wait no it's ac97
02:20:27 <pikhq> AC97 is the class of sound cards that have actual documentation available. Courtesy of being designed to a spec. :)
02:20:36 <pkzip> yea
02:20:45 <pkzip> that is what bugs me
02:20:58 <madbr> once you get buffer streaming working they are all the same anyways :D
02:21:08 <pikhq> madbr: Not *quite*.
02:21:11 <pkzip> I can't get the one silly feature they gave Windows Sound Drivers
02:21:19 <pikhq> madbr: Some of them have hardware mixing.
02:21:43 <pkzip> Audio-Effects, EQs
02:21:44 <madbr> pikhq: saves, what, 0.01% cpu? :D
02:22:10 <madbr> pkzip: news flash: on ac97 those are actually done in software, not hardware
02:22:10 <pikhq> madbr: ALSA sucks ass, and PulseAudio sucks worse; thus, hardware mixing saves much more than 0.01%. :P
02:22:19 <pkzip> I know
02:22:23 <madbr> pikhq: jesus
02:22:48 <pikhq> madbr: It's at least to the point where it's not a *notable* performance gain any more.
02:22:52 <pikhq> But it still sucks ass.
02:23:25 <madbr> how can you mess that up
02:23:28 <pkzip> so, no echo/chipmunk effects to Linux users still ?
02:23:33 <madbr> it's like, a multiply and addition
02:23:54 <madbr> pkzip: tbh those effects should be done by the software
02:23:58 <pikhq> By having the sound done via a dozen abstraction layers.
02:23:59 -!- copumpkin has joined.
02:24:05 <Gregor> Linux drivers made by the actual company that makes the thing being driven: nvidia GFX, ATI GFX, Intel GFX ... and nothing else.
02:24:17 <Gregor> (Exaggeration :P )
02:24:17 <pkzip> Dumb Echo/Chipmunk/Stone-Room, etc ..
02:24:17 <madbr> pikhq: man, how many layers do you even need?
02:24:57 <pkzip> I almost went to study sound engineering, its quite a funny story
02:25:31 <pikhq> ALSA kernel -> ALSA library -> dmix -> PulseAudio -> [...]
02:25:32 <pkzip> I assume you just bumped into it
02:25:43 <pikhq> Mixing happens in PulseAudio and/or dmix.
02:25:48 <pkzip> or have you studied that from the start ?
02:25:53 <pikhq> Context switches are involved in that mixing.
02:26:08 <madbr> pikhq: nasty
02:26:33 -!- augur has joined.
02:26:47 <pikhq> Admittedly, PulseAudio is entirely unnecessary, and serves largely as an expensive nop.
02:26:49 -!- augur has quit (Remote host closed the connection).
02:27:16 <pikhq> Oh, even worse. PulseAudio is often configured to redirect sound to it via ALSA. Giving you:
02:27:22 <pkzip> nop ? No-Operative/ion ?
02:27:42 <pikhq> ALSA kernel -> ALSA library -> dmix -> PulseAudio -> ALSA library -> [...]
02:27:55 <pikhq> pkzip: Pretty much.
02:28:33 <madbr> pikhq: right... sounds ripe for a cleanup
02:29:00 <pikhq> madbr: For comparison, here's the OSSv4 stack: OSS -> program
02:29:24 <madbr> then why doesn't alsa get dumped in favor of oss?
02:29:32 <pikhq> Because derp.
02:29:46 <pikhq> OSS was dumped in favor of ALSA way back when.
02:30:02 <pikhq> (the in-kernel OSS sucked, and the external one was proprietary)
02:30:18 <madbr> also, for audio app plugins, you should probably dump ladspa and make a linux version of VST2
02:30:35 <madbr> pikhq: ah, I see.
02:30:38 <pkzip> I only use faith-based sound drivers, so .. :-/
02:30:52 <pkzip> :P
02:30:55 <pikhq> madbr: Also fun, ALSA is a Linux-specific API.
02:31:07 <pikhq> All the other UNIXes (and I mean *all*) use OSS.
02:32:46 <pikhq> One of the big things I see in modern UNIXes is the idea that complicated is better.
02:32:57 <pikhq> Erm, s/UNIXes/Linux distros/
02:33:44 <madbr> that's not true for sound APIs :D
02:33:47 <pikhq> Adding more onto the heap is somehow better than actually replacing things.
02:33:54 <pikhq> It's not true for most things.
02:34:44 <madbr> for sound APIs it's really just about just doing a sound callback and keeping latency as low as possible
02:34:58 <madbr> buffers go out -> victoly!
02:35:11 <pikhq> It's especially "fun" for init schemes. It's managed to reduce /sbin/init to a program that executes a shell script and spawns getties.
02:35:46 <madbr> but yeah sound APIs are hit or miss
02:36:06 <madbr> some are nasty (OpenSL)
02:36:27 <pkzip> There was this OS for this latency-OCDers..
02:36:28 <pikhq> OSS is merely a bit strange.
02:36:53 <pikhq> open("/dev/dsp", "w"); // ...
02:37:05 <madbr> is it buffering or callback oriented?
02:37:32 <pikhq> Buffering, I guess?
02:37:50 <pikhq> To interact with it you write PCM to the device file.
02:37:59 <madbr> yeah that's buffering
02:38:51 <madbr> how does it handle synchronization?
02:39:47 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
02:40:35 <madbr> smallest audio api I've seen is 2 function calls
02:40:54 <pikhq> Beats me.
02:41:20 <madbr> init, and a function that pushes in a sound buffer (blocks until the sound hardware is ready to take another buffer)
02:41:43 <pikhq> Well. I'd imagine what it does is the file descriptor blocks.
02:42:23 <pikhq> In fact, actually, I'm almost positive that's what it does, considering the behavior of cat raw-pcm >/dev/dsp
02:42:37 <madbr> mhm
02:44:10 <madbr> yeah that would work
02:44:58 <madbr> tbh anything that will get you 20ms latency or less is fine :3
02:46:39 -!- Jafet has joined.
02:47:18 -!- pkzip has left.
02:48:53 <madbr> kinda wondering how to garbage collect this language... seems really hard
02:55:06 <Gregor> (Having no context) What about the language makes it difficult to GC?
02:55:23 <pikhq> Gregor: madbr's ignorance of functional language evaluation and garbage collection. :)
02:55:29 <madbr> :D
02:55:46 <madbr> but yeah basically all you do is define new variables to "true"
02:56:00 <madbr> usually inside arrays
02:56:23 <madbr> you cannot undefine variables once they are defined
02:57:05 <madbr> so doing brainfuck's array actually requires a 3 dimensional array:
02:57:31 <madbr> data[execution_step][index][value]
02:58:42 <CakeProphet> uh, how you index an array with only true?
02:58:48 <CakeProphet> or are there other kinds of values as well?
02:58:54 <madbr> cakeprophet: somple
02:58:58 <madbr> simple
02:59:28 <madbr> suppose you want to set index 45 to value 88 on step 61
02:59:36 <CakeProphet> ah
02:59:47 <madbr> you simply define data[61][88][45]
02:59:51 <madbr> (as true)
02:59:57 <madbr> and leave the other values undefined
03:00:00 <CakeProphet> okay so there are integers too.
03:00:01 <CakeProphet> cool.
03:00:26 <madbr> well, there are integers but you can't actually store them :D
03:01:19 <madbr> you store the value 45 by making an array and only defining the entry 45 :D
03:01:29 <CakeProphet> okay
03:01:35 <CakeProphet> now how do you give a brainfuck interpreter unbounded memory.
03:02:00 <madbr> easy
03:03:29 -!- augur has joined.
03:03:30 <madbr> you store the size of the array, then when doing > you check if it's over the size, if yes, you define a new index with value 0 so that it can be used by subsequent execution steps
03:03:40 <madbr> all arrays are unbounded
03:04:42 -!- pikhq_ has joined.
03:05:33 -!- simpleirc936 has joined.
03:06:22 <madbr> so yeah it's hard to GC because the number of defined values always increases, never decreases
03:06:25 -!- pikhq has quit (Quit: Reconnecting).
03:06:48 <madbr> so there has to be a way to recognize values that have become irrelevant and can be discarded
03:06:53 <madbr> but I don't know how :D
03:08:09 -!- simpleirc936 has quit (Remote host closed the connection).
03:13:31 <madbr> also you're going to get a copy of pretty much each variale for each execution step, dunno how to prevent that
03:14:47 -!- myndzi\ has changed nick to myndzi.
03:15:02 <Jafet> Use bloom tables
03:15:46 <Sgeo|web> madbr: Why not similarly to a more normal language? Unreachable etc.
03:15:55 <Sgeo|web> If you never get unreachabl... wait, hmm
03:16:20 <madbr> yeah would need to be some special kind of unreachable :
03:16:23 <madbr> :D
03:16:28 <pikhq_> Read up on SSA. :)
03:16:33 <Sgeo|web> You still need to maintain a table of which variables were defined, even if you can't see the value
03:16:39 <Sgeo|web> Or maybe I'm misunderstanding
03:18:14 <madbr> the point of the language is that any potential variable is either true or undefined
03:18:32 <madbr> so values aren't really used
03:18:37 <Sgeo|web> Oh
03:18:50 <Sgeo|web> What does garbage collection even mean then?
03:19:17 <madbr> mostly it means that the set of defined variables doesn't grow indefinitely with each execution step :D
03:20:35 <madbr> like, the other catch with the language is that variables can't be undefined
03:20:39 <Sgeo|web> Why would it without GC?
03:20:59 <madbr> so essentially, to do computation, you have to keep defining new variables
03:21:24 <Sgeo|web> Oh, so.. wouldn't that make GC meaningless if this language were to be interpreted?
03:21:45 <Sgeo|web> Wait, no
03:21:48 <Sgeo|web> Is there scoping?
03:21:52 <madbr> nope
03:21:53 -!- copumpkin has joined.
03:22:14 <Sgeo|web> So, how could a name ever be unreachable, unless you're statically analyzing a file?
03:22:14 <madbr> it has to be GC'd in some way or else the memory would just blow up
03:22:38 <madbr> that's what I'm trying to figure out :D
03:23:10 <Sgeo|web> madbr: It's possible to make a language that has unavoidably bad implementations, you know
03:23:21 <Sgeo|web> Not saying that that's necessarily the case here
03:23:29 <Sgeo|web> But I think you might want some sort of static analysis?
03:23:42 <Sgeo|web> So that you act AS IF variables aren't undefined, but secretly you undefine them?
03:24:29 <madbr> well, there has to be some way to figure out when a variable can't produce any new definitions I guess
03:25:39 <madbr> once a variable cannot be used in the computation of new definitions, then it's effectively unreachable
03:27:07 <madbr> and can thus get garbage collected
03:27:32 <madbr> I'm not sure there's a way to do this without solving the halting problem though :D
03:29:25 <Sgeo|web> It should be harmless to fail to GC a subset of variables that are unreachable
03:29:46 <Sgeo|web> There's nothing impossible about a machine that solves the halting problem but gives false positives or false negatives
03:30:25 <Sgeo|web> Proof: For all turing machines, my machine outputs n
03:30:28 <Sgeo|web> "Halts"
03:30:40 <madbr> hmm
03:32:11 -!- kmc_ has joined.
03:32:16 <monqy> then it doesn't solve the halting problem, does it?
03:34:02 <madbr> sgeo: essentially, the real problem is that since you can't change the state of something once it's declared, you have to create a new state on each step
03:34:50 <madbr> so typically you'll have the new state being created, and the old state, but steps before that are already unreachable
03:35:00 -!- kmc has quit (Ping timeout: 240 seconds).
03:35:09 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
03:37:42 -!- kmc__ has joined.
03:41:12 -!- Sgeo|web has joined.
03:41:19 -!- kmc_ has quit (Ping timeout: 260 seconds).
03:41:26 <Sgeo|web> I got a recaptcha consisting of partially greek symbols
03:41:39 <Sgeo|web> I ended up typing deltamuwhatever
03:41:51 * Sgeo|web feels like a jerk
03:42:55 <shachaf> Sgeo|web: Don't worry, it won't be transcribed into that.
03:43:08 <shachaf> As far as I know recaptcha requires several people to enter the same thing before it counts as valid.
03:47:22 <madbr> i guess what is needed is a way to tell from an array[x][y][z] that, say, anything before x=50 has become unreachable
03:48:26 <Sgeo|web> Can only constants go in array[x][y][z]? I don't get how one does indexing
03:52:40 <madbr> the language has a second sort of variables that are only valid for a particular statement
03:52:46 <madbr> that take numerical values
03:53:19 <madbr> so for instance to add the values from varx and vary into varz, you'd go
03:54:07 <madbr> if(varx[x] and vary[y] and z==x+y) define varz[z]
03:54:24 <madbr> or, in shorthand notation,
03:55:09 <madbr> varx[x] vary[y] z=x+y : varz[z]
03:55:57 <madbr> x y and z take numerical values
04:00:25 -!- pikhq has joined.
04:01:24 -!- pikhq_ has quit (Ping timeout: 252 seconds).
04:02:45 -!- augur has quit (Remote host closed the connection).
04:09:48 <zzo38> There are some things I don't like much about the functions for WriterT, such as the contraints on the type for "tell". It is (Monoid w, Monad m) but I think it should be (Applicative m)
04:10:20 <zzo38> My own function "mpure" is like this: mpure :: Applicative f => w -> t -> WriterT w f t; mpure x y = WriterT $ pure (y, x);
04:14:25 -!- hagb4rd has joined.
04:17:57 <zzo38> How many bijective functions of type [a] -> [a] are there?
04:20:11 <copumpkin> if you restrict them to be lists of the same length n, then n!
04:20:15 <copumpkin> if not, infinitely many
04:20:55 <zzo38> Yes, that is what I thought. And is it the case the output list will always be the same length as the input list?
04:21:14 <copumpkin> yeah, but that's one of the assumptions there
04:21:26 <copumpkin> having duplicate elements may reduce the number of functions a bit, since you can't distinguish them
04:22:57 <zzo38> That is true but the input could have or not have duplicate elements regardless of the function.
04:23:26 <zzo38> The assumption I make is that only finite lists are used. But nothing else; not even Eq class.
04:25:49 <pikhq> Infinite, then. To start with, there's the class of functions that simply duplicate the first element a fixed number of times, and do nothing on [].
04:26:03 <pikhq> This *alone* gives you infinite bijections, and that's not even the entire set!
04:27:05 <zzo38> Can you please give an example?
04:27:37 <pikhq> example1 (x:xs) = x:x:xs;example1 [] = []
04:27:51 <zzo38> And what is its inverse?
04:28:13 <pikhq> example1' (x:xs) = xs;example1' [] = []
04:29:44 <zzo38> But, you can have example1 (example1' "hello") == "eello" I think it is not inverse
04:31:01 <pikhq> Hrm.
04:34:08 <pikhq> example1 maps from the set of lists to the set of lists that are either null or have a duplicate element at the start, and example1' maps from the set of lists that are either null or have a duplicate element at the start to the set of lists.
04:34:19 <pikhq> It's not my fault that Haskell doesn't encode this at type level.
04:34:44 <zzo38> O, OK. Well, then they are bijective. But then they are not bijective on the type I specified!
04:35:08 <pikhq> Yes they are, your statement was just vague. :P
04:35:34 -!- songhead95 has quit (Ping timeout: 265 seconds).
04:36:03 <pikhq> If you want it to be a bijective mapping from the set of lists to the set of lists, then the maximum number of bijections is O(n!), where n is the maximum length of lists you're considering.
04:36:23 <pikhq> And if you're considering all finite lists, then n is infinity, and there you go.
04:37:01 <pikhq> Wait, why did I put O()?
04:51:55 -!- augur has joined.
05:28:04 -!- MDude has changed nick to MSleep.
05:30:06 <zzo38> Can WriterT be used for probability distributions?
05:38:29 <zzo38> What is it called when a group has everything being their own inverse?
05:47:40 <madbr> bunch of pairs? wish I knew
05:49:29 -!- kmc__ has quit (Quit: Leaving).
06:34:44 <zzo38> I have idea making payphones that even if inband signaling is used, can prevent redboxing. And it does not disrupt telephone calls, no secret keys are used, protocol can be public, etc. It can have three modes, red, yellow, green (and can be indiciated by LEDs of those colors). The initial mode is red.
06:35:13 <zzo38> * Red: Coins are accepted, keypad is enabled, microphone is disabled, commands received are accepted.
06:35:41 <zzo38> * Yellow: Coins are rejected, keypad is disabled, microphone is enabled, the only command accepted is to switch to red mode.
06:36:05 <zzo38> * Green: Coins are rejected, keypad is enabled, microphone is enabled, all commands received are rejected.
06:36:22 <zzo38> Is it good?
06:44:10 -!- zzo38 has quit (Remote host closed the connection).
06:47:53 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:59:19 -!- aloril has quit (Read error: Connection reset by peer).
07:04:40 -!- Jafet has quit (Quit: Leaving.).
07:14:09 -!- aloril has joined.
07:44:04 -!- jix has quit (Remote host closed the connection).
07:57:46 -!- madbr has quit (Quit: Radiateur).
08:08:36 -!- derrik has joined.
08:16:30 -!- Vorpal_ has joined.
08:19:25 -!- Vorpal has quit (Ping timeout: 240 seconds).
08:19:41 -!- Vorpal_ has changed nick to Vorpal.
08:41:05 -!- monqy has quit (Quit: hello).
09:17:04 -!- pkzip has joined.
09:17:28 -!- pkzip has left.
09:21:51 -!- sebbu has quit (Ping timeout: 248 seconds).
09:35:18 -!- hagb4rd has quit (Ping timeout: 240 seconds).
09:41:40 -!- jix has joined.
09:47:18 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
09:47:40 -!- Madoka-Kaname has quit (Changing host).
09:47:41 -!- Madoka-Kaname has joined.
10:04:08 -!- oerjan has joined.
10:05:33 -!- someoneyouhate has joined.
10:07:24 -!- oerjan has quit (Client Quit).
10:07:49 -!- Madoka-Kaname has quit (Ping timeout: 256 seconds).
10:09:14 -!- ais523 has joined.
10:11:05 -!- Madoka-Kaname has quit (Changing host).
10:11:06 -!- Madoka-Kaname has joined.
10:11:23 -!- oerjan has joined.
10:28:15 -!- Madoka-Kaname has quit (Ping timeout: 276 seconds).
10:30:02 -!- Madoka-Kaname has joined.
10:30:02 -!- Madoka-Kaname has quit (Changing host).
10:30:02 -!- Madoka-Kaname has joined.
10:32:10 <oerjan> @tell zzo38 <zzo38> What is it called when a group has everything being their own inverse? <-- i just saw the term "exponent 2" used on the gödel's lost letter blog
10:32:10 <lambdabot> Consider it noted.
10:44:49 -!- hagb4rd has joined.
10:48:23 -!- derdon has joined.
10:54:21 -!- GreaseMonkey has quit (Quit: The Other Game).
11:08:48 -!- ais523 has quit (Remote host closed the connection).
11:08:57 -!- ais523 has joined.
11:18:14 <oerjan> :t id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:18:14 <lambdabot> forall a. (Num a) => a
11:18:14 <oerjan> :t id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:18:14 <lambdabot> forall a. (Num a) => a
11:18:37 <Deewiant> > id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:18:43 <lambdabot> mueval-core: Time limit exceeded
11:18:45 <Deewiant> > 0
11:18:48 <lambdabot> 0
11:19:09 <oerjan> > id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:19:17 <lambdabot> mueval-core: Time limit exceeded
11:19:36 <oerjan> http://www.reddit.com/r/haskell/comments/m7uph/whats_going_on_with_id_id_id_id_0/
11:20:12 <oerjan> no one gave a really good answer to why it breaks in some contexts but not others, though
11:20:27 <Deewiant> I was just about to say that someone finally did
11:20:34 <oerjan> oh?
11:20:36 <Deewiant> In the form of http://codepad.org/2YrUqs1E
11:20:52 <Deewiant> Core for a couple of id's
11:21:31 <oerjan> oh i guess :t doesn't need to actually generate the code
11:21:53 <oerjan> *core
11:21:56 <Deewiant> Yep
11:22:14 <oerjan> > id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id ()
11:22:18 <lambdabot> mueval-core: Time limit exceeded
11:22:29 <oerjan> hm () was supposed to work
11:22:57 <oerjan> i guess it may just take a longer expression to break
11:23:36 -!- derrik has quit (Quit: done).
11:29:16 <fizzie> You must've hit the ID-ten-T error.
11:30:08 -!- pikhq_ has joined.
11:30:39 -!- pikhq has quit (Ping timeout: 276 seconds).
11:39:33 -!- Phantom_Hoover has joined.
11:41:34 -!- Phantom__Hoover has joined.
11:44:30 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
11:53:25 -!- ais523 has quit (Remote host closed the connection).
11:53:52 <Vorpal> My impression of Skyrim so far is that it is very much designed with console in mind when it comes to the interface. Heck there are even some sliders you have to use the arrow keys for rather than the mouse. Ugh.
12:33:54 <fizzie> http://killscreendaily.com/articles/things-i-ate-skyrim
12:40:48 <Phantom__Hoover> Things I ate: Skyrim.
12:45:38 -!- aloril has quit (Ping timeout: 260 seconds).
12:58:12 -!- aloril has joined.
13:08:01 -!- ais523 has joined.
13:10:59 <ais523> hmm, can someone here explain the "news at 11" meme for me? I don't get it, and knowyourmeme.com is no help
13:14:40 <oerjan> i think it's supposed to allude to ancient broadcast interruptions
13:14:59 <ais523> ah, when a news story breaks and people are told of it interrupting an existing program
13:15:03 <ais523> and when to look to see more?
13:15:07 <oerjan> yeah
13:15:44 <oerjan> it was already a cliche when i was reading usenet back in the 90s
13:15:47 <ais523> why 11 specifically?
13:16:09 <oerjan> presumably some broadcaster had its evening news then?
13:18:48 <oerjan> there's http://www.imdb.com/title/tt0091624/
13:37:30 -!- oerjan has quit (Quit: leaving).
13:54:00 <fizzie> Also: http://tvtropes.org/pmwiki/pmwiki.php/Main/FilmAtEleven
13:54:14 <fizzie> "The phrase originated in the 1970s, when stations began to run teasers for the late local news during Prime Time (such as "shootout at local gas station, Film at 11.") This was often a Justified Trope at the time, since it could take hours to transport exposed 16 mm film from a remote site to the station, develop it, edit it, and add a voiceover."
13:58:09 <fizzie> Also from the examples: "* Particularly on the Internet, "Film at 11" has taken on an ironic meaning, equivalent to Seen It a Million Times.
13:58:09 <fizzie> "Imminent Death of the Net Predicted. Film at 11." — common Usenet phrase, mid 1990's."
14:00:09 <fizzie> Finally, there's a stubticle of "Film at 11" in Wikipedia, but it doesn't say much else, except the claim that 11 p.m. is/was a "traditional timeslot for local news broadcasts in the Eastern and Pacific time zones of the United States".
14:00:17 <fizzie> (Is stubticle even a word?)
14:00:44 <Phantom__Hoover> It's an icicle made of stubble.
14:01:27 <fizzie> Or is that like the sort of beardcicles you get in cold weather, except re shorter hair? They're not much fun.
14:05:48 -!- hagb4rd has quit (Quit: hagb4rd).
14:08:26 -!- tiffany has joined.
14:19:22 <Phantom__Hoover> fizzie, I don't know, not having a beard or the conditions under which icicles would form on one.
14:20:48 <Phantom__Hoover> fizzie, did you catch up with Homestuck, BtW?
14:21:07 <fizzie> Not yet.
14:21:14 <fizzie> I'm not quite sure they qualify as real icicles, but below -20 (apparently that's -4 Funnyheit) moisture from exhalation tends to freeze one's beard, and it's a bit uncomfortable.
14:21:29 <fizzie> I did do the prequel wander-around flash.
14:22:00 <Phantom__Hoover> Temperatures outside the 25-to-minus-5 range? What is this witchcraft?
14:23:38 <Phantom__Hoover> And yes, that was the best flash.
14:24:28 <fizzie> (Here in the south tip of Finland it doesn't really go below -10 very often, though.)
14:25:05 -!- hagb4rd has joined.
14:27:07 <Phantom__Hoover> http://esolangs.org/wiki/Libertas
14:27:13 <Phantom__Hoover> "Libertas is the first syntax-error runtime-error free programming language ever."
14:27:20 <Phantom__Hoover> Let us disabuse the creator of this notion.
14:28:56 -!- Madoka-Kaname has quit (Quit: Hug~♪).
14:37:27 -!- boily has joined.
14:44:40 -!- Madoka-Kaname has joined.
14:44:40 -!- Madoka-Kaname has quit (Changing host).
14:44:40 -!- Madoka-Kaname has joined.
15:06:27 -!- MSleep has changed nick to MDude.
15:07:53 -!- hagb4rd has quit (Quit: hagb4rd).
15:08:09 -!- hagb4rd has joined.
15:18:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:25:51 -!- hagb4rd2 has joined.
15:26:09 -!- hagb4rd has quit (Disconnected by services).
15:26:24 -!- hagb4rd2 has changed nick to hagb4rd.
15:27:18 <hagb4rd> sry for join flooding. guess its gonna be fine now
15:34:31 <Phantom__Hoover> Madoka-Kaname, oi, fix your ident order.
15:41:57 <Gregor> Phantom__Hoover: ITYM:
15:42:17 <Gregor> Madoka-Kaname!~moe@ppp-70-251-229-235.dsl.rcsntx.swbell.net, oi, fix your ident order.
15:46:13 -!- copumpkin has joined.
15:52:55 -!- nys has joined.
15:57:35 -!- Madoka-Kaname has quit (Quit: Hug~♪).
16:00:10 -!- Madoka-Kaname has joined.
16:00:10 -!- Madoka-Kaname has quit (Changing host).
16:00:11 -!- Madoka-Kaname has joined.
16:02:07 -!- Zuu has quit (Ping timeout: 244 seconds).
16:07:41 -!- pkzip has joined.
16:08:16 -!- pkzip has left.
16:16:54 -!- Ngevd has joined.
16:18:17 <Ngevd> Hello!
16:18:21 <Ngevd> I hurt my leg today...
16:18:51 <Phantom__Hoover> I hut... all the legs.
16:21:05 <CakeProphet> so yeah some moment of time of numerical signifigance in the Gregorian calendar happened
16:21:14 * CakeProphet celebrates.
16:21:18 <Phantom__Hoover> I waited for a ninth of a second.
16:21:31 <Ngevd> We took about ten minutes out of history to celebrate
16:21:56 <ais523> I was busy marking, I think
16:22:08 <ais523> or at least, getting ready to enter marks into a computer
16:22:20 <ais523> (on Friday mornings, we have eight people marking and I enter the marks in as they arrive)
16:22:46 <Ngevd> Oooh
16:22:51 <Ngevd> Schmancy system.
16:23:20 <ais523> I can type in the marks more than eight times faster than another person can mark the work, though, so there's quite a bit of downtime
16:23:45 <CakeProphet> ais523: don't worry there's always 12/12/12
16:23:56 <ais523> why would I worry about a coincidence of numbers?
16:24:10 <CakeProphet> and, provided that you live long enough, 22:22 on 2/22/2222
16:24:24 <Phantom__Hoover> Shh, you'll get pikhq_ going.
16:24:25 <ais523> CakeProphet: dates don't work like that
16:24:44 <CakeProphet> ais523: hm?
16:24:45 <ais523> !c printf("%d",1<<25);
16:24:50 <EgoBot> 33554432
16:24:51 <CakeProphet> ais523: well yes
16:24:51 <CakeProphet> but
16:24:53 <CakeProphet> you can pretend
16:24:57 <ais523> CakeProphet: there aren't 22 months in a year
16:24:58 <CakeProphet> that it's still February.
16:25:18 <CakeProphet> ais523: the month is at the beginning
16:25:20 <ais523> 2^25 being 33554432 is better
16:25:34 <ais523> CakeProphet: how ridiculous
16:25:37 <CakeProphet> it's an American thing.
16:25:52 <ais523> Phantom__Hoover: that reminds me, why were you deliberately winding up an op yesterday?
16:26:04 <Phantom__Hoover> Which op?
16:26:10 <ais523> me
16:26:10 <CakeProphet> actually there's 2/2/2222 AND 2/22/2222
16:26:13 <CakeProphet> woooooow
16:26:34 <CakeProphet> so much significance!
16:26:39 <Phantom__Hoover> ais523, rest assured that the up-windery was entirely independent of your oppishness.
16:26:50 <ais523> well, OK; but it's still incredibly bad form
16:27:27 <Phantom__Hoover> Well no, because I have to concentrate hard to remember that you're an op.
16:27:42 <Phantom__Hoover> Thus I was not deliberately winding up an op; it was accidental.
16:27:42 <ais523> it's bad form to deliberately wind up anyone, whether they're an op or not
16:28:53 <CakeProphet> ais523: so you know how people say "November 11th, 2011"?
16:28:57 <CakeProphet> or, do people not say that where you live?
16:29:05 <Ngevd> I say 11th of November 2011
16:29:08 <ais523> CakeProphet: "11 November 2011"
16:29:10 <CakeProphet> anyway, that's where the m/d/y format comes from
16:29:16 -!- elliott has joined.
16:29:19 <ais523> or just "the 11th" if the month/year are clear from context
16:29:26 <Ngevd> I thought it was a corruption of y/m/d
16:29:37 <Ngevd> Which in some ways DOES MAKE SOME sense
16:29:40 <ais523> there's an "of" that's pronounced but not generally written
16:29:42 <Ngevd> But it's still WRONG
16:29:59 <Vorpal> amusing, there are "Quicksilver ingots" in Skyrim... How would that even work?
16:30:05 <elliott> Gregor: So, I wasn't planning on getting the new Dinosaur Comics book.
16:30:09 <CakeProphet> (implying a correct ordering of elements in a date)
16:30:10 <elliott> BUT IT HAS AN N-GRAM ANALYSIS
16:30:14 <elliott> I MUST
16:30:17 <Phantom__Hoover> Vorpal, immobilising in something else?
16:30:27 <Ngevd> Vorpal, isn't quicksilver mercury?
16:30:29 <CakeProphet> elliott: you could incorporate that in your CORPUS
16:30:32 <CakeProphet> get it?
16:30:37 <ais523> Phantom__Hoover: so basically, I want you to apologise
16:30:37 <Vorpal> Ngevd, yes
16:30:44 <Ngevd> !!!
16:31:00 <Ngevd> Homestuck update, Minecraft pre-release
16:31:02 <Vorpal> Ngevd, btw the Swedish name for mercury is kvicksilver. So this was obvious to me
16:31:16 <elliott> Ngevd: No spoilers re: HS update
16:31:27 <Phantom__Hoover> ais523, I'm afraid I can't tender that request.
16:31:28 <elliott> Haven't/won't read yet
16:31:33 <Phantom__Hoover> (Is that how 'tender' works?)
16:31:34 <elliott> 11/11/11 - "Examine room."
16:31:34 <elliott> 11/11/11 - "Enter name."
16:31:34 <elliott> 11/11/11 - "Homestuck"
16:31:34 <elliott> 11/11/11 - "==>"
16:31:34 <elliott> 11/11/11 - "[S] ACT 6"
16:31:35 <elliott> Oh, look at that.
16:31:46 <elliott> Phantom__Hoover: Stop being an asshole for no reason.
16:31:54 <CakeProphet> elliott: I somehow saw this coming I think.
16:31:55 <ais523> Phantom__Hoover: isn't tendering, in that context, the process of asking a bunch of people for quotes
16:32:01 <ais523> so you can accept the best one and get them to subcontract?
16:32:01 <elliott> CakeProphet: So did everyone
16:32:08 <ais523> it'd be a kind-of weird thing to do, really
16:32:34 <elliott> 02:02:53: <pkzip> if its a programming language, u had just reinvented Forth !
16:32:36 <Ngevd> <elliott> Phantom__Hoover: Stop being an asshole for no reason. <-- that's elliott's job :P
16:32:39 <elliott> this pkzip guy in the logs really likes forth
16:32:57 <ais523> admittedly, Forth is a language it seems vaguely possible to reinvent by mistake
16:32:59 <ais523> but not much more than that
16:33:24 <elliott> Ngevd: it takes slightly more reasons than "because it'll upset them" for me to offend someone :)
16:33:27 <elliott> slightly.
16:33:42 <ais523> hmm, if space aliens had programming languages (and they probably do), which of ours do you think they'd have reinvented; not counting things like syntax differences
16:33:50 <elliott> 02:05:03: <pkzip> oh i get it
16:33:50 <elliott> 02:05:10: <pkzip> esoteric programming languages
16:33:50 <elliott> 02:05:15: <madbr> - there's no defined execution order: statements are to be executed in any order, any number of times
16:33:50 <elliott> 02:05:18: <pkzip> my fav !!!!!!!!!1
16:33:50 <elliott> 02:05:29: <pkzip> oh
16:33:52 <elliott> 02:05:38: <pkzip> i hate the fucked-up psycho ones
16:33:54 <elliott> 02:05:59: <pkzip> I like the useful ones.
16:33:55 <elliott> wow this guy is really annoying
16:34:03 <Ngevd> I know someone who actually has had his birthday, and Christmas, ON THE SAME DAY!
16:34:03 <Ngevd> In fact, I'll estimate that just under 1 in 365 people do
16:34:05 <elliott> ais523: heh, you might like the Nock/Urbit posts
16:34:24 <ais523> Ngevd: does he have his birthday and Christmas on the same day every year?
16:34:45 <elliott> 02:06:13: <pkzip> stuff like my own version of brainfuck
16:34:47 <elliott> auugh
16:35:10 <Ngevd> ais523, yup
16:35:15 <elliott> (diff) (hist) . . N Libertas‎; 01:29 . . (+1,162) . . Pegasus (Talk | contribs) (New page: '''Libertas''' is the first syntax-error runtime-error free programming language ever. The interpeter will execute the instructions no matter what. =Examples= A hello world application: ...)
16:35:19 <elliott> ais523: MAKE HIM STOOOOOP
16:35:33 <ais523> elliott: that is at least a vaguely eso concept
16:35:38 <ais523> it's not the same as what BF does
16:35:41 <ais523> sure, it's probably a bad impl of it
16:35:47 <ais523> but the concept isn't awful
16:35:55 <elliott> http://esoteric.voxelperfect.net/wiki/Libertas
16:35:58 <elliott> wow, it's really bad
16:36:14 <elliott> it's just "make an empty object when you reference something undefined"
16:36:21 <elliott> /Objective-C/ does that!
16:36:23 <elliott> well
16:36:25 <elliott> or rather
16:36:30 <elliott> sending a message to nil produces nil
16:36:34 <elliott> you just need to map undefined variables to nil
16:36:54 <ais523> elliott: but the way its syntax works, you could come across fun ambiguities
16:37:02 <elliott> fair enough
16:37:05 <ais523> try to figure out how you output a string stored in a variable
16:37:24 <ais523> (the obvious syntax for that, is the same as the syntax for extending toScreen with a new property)
16:37:28 <elliott> 02:16:08: <pkzip> tell me why linux can't use the features that device-driver writers wrote into their drivers ?
16:37:28 <elliott> 02:16:25: <pkzip> Windows drivers
16:37:28 <elliott> 02:16:49: <pkzip> since the same Windows/API/MFC code
16:37:34 <elliott> i hope this guy leaves soon
16:37:45 <Phantom__Hoover> What channel?
16:37:47 <Phantom__Hoover> Oh, logs?
16:38:05 <ais523> elliott: randomly mentioning ndiswrapper could potentially help, or hurt
16:38:13 <elliott> ais523: in the logs?
16:38:15 <ais523> would at least possibly have produced an amusing reaction
16:38:15 <CakeProphet> elliott: okay so I didn't predict any of this other stuff. Just that there will be more character introductions of that format.
16:38:23 <ais523> elliott: that's the past tense of could
16:38:28 <ais523> it's just the same as the present tense
16:38:33 <ais523> so it's a little hard to tell them apart
16:38:42 <ais523> no "coulded" or whatever in English
16:38:52 <elliott> coulded :D
16:39:04 -!- rajdev5089 has joined.
16:39:17 <ais523> I suppose I should have said "could have" there
16:39:18 <CakeProphet> elliott: I thought perhaps he was going to take us to the green hardboiled universe and introduce some characters or reintroduct the midnight crew or something like that.
16:39:21 <ais523> hmm, who's rajdev5089?
16:39:24 <elliott> `? welcome
16:39:31 <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
16:39:33 <ais523> elliott: I was going to do that, but didn't know if they were new or not
16:39:39 <elliott> CakeProphet: Well, don't spoil me.
16:39:52 <ais523> perhaps I should just welcome regulars randomly, so that if a not-quite-newbie comes in and I welcome them too, it doesn't look out of place
16:40:23 <rajdev5089> hey .. someone tell me
16:40:30 <rajdev5089> whats going on here
16:40:58 <ais523> rajdev5089: this is an IRC channel about esoteric programming languages
16:41:04 <rajdev5089> who is ais523 ?
16:41:07 <ais523> I am
16:41:23 <rajdev5089> where u from
16:41:40 <ais523> why does it matter? this is IRC, there aren't any obvious international borders here
16:41:44 <ais523> (HEXHAM IS NOT A COUNTRY)
16:41:53 <rajdev5089> whats mean esoteric
16:42:01 <elliott> esoteric prorgamming languages
16:42:08 <rajdev5089> is it a public chat room right ?
16:42:22 <ais523> rajdev5089: yes; but the chat rooms are all about different subjects
16:42:33 <rajdev5089> who are all here
16:42:37 <ais523> and if you come to one that isn't about a subject you're interested in, the conversation probably won't be too interesting for you
16:42:47 <rajdev5089> all are software professionals ?
16:42:48 <ais523> as in, we're here because we share a common interest
16:43:03 <elliott> for some definition of professional
16:43:06 <Ngevd> I'm definitely not a software professional
16:43:21 <ais523> umm, my job involves at least some programming, does that count?
16:43:33 <Ngevd> I'm sorta a software... person who's not even very good at pretending to be any good at programming
16:43:35 <rajdev5089> then who are you people.... u said its a programming language
16:43:46 <Ngevd> We're software amateurs
16:44:01 <rajdev5089> amateurs mean ?
16:44:11 <Ngevd> People who do things for entertainment
16:44:13 <elliott> http://en.wiktionary.org/wiki/amateur
16:44:28 <rajdev5089> amateur mean sexy ?
16:44:35 <rajdev5089> right ?
16:44:37 <Ngevd> Not especially
16:44:48 <rajdev5089> how many people are here ?
16:44:57 <elliott> Yes, this channel is for software sexies.
16:44:59 * Phantom__Hoover → other things.
16:45:00 -!- Phantom__Hoover has quit (Quit: Leaving).
16:45:09 <ais523> rajdev5089: 55, including you
16:45:20 <rajdev5089> dont we do personal chat here
16:45:42 <elliott> depends what you mean by personal :P
16:45:53 <elliott> rajdev5089: do you work on Firefox?
16:45:55 <rajdev5089> one to one chat
16:46:09 <rajdev5089> its a public chat here
16:46:34 <rajdev5089> can i see you people here
16:46:43 <elliott> no, we're mostly invisible
16:46:46 <elliott> I'm actually a stream of bist
16:46:48 <elliott> bits
16:46:50 <elliott> I live inside computer
16:46:57 <rajdev5089> really
16:47:02 <ais523> elliott: enjoy being locked in your matrix of solidity!
16:47:08 <rajdev5089> how u live inside computer
16:47:23 * CakeProphet is a "software professional"
16:47:24 <Ngevd> He's an AI
16:47:25 <rajdev5089> tell about you ais523
16:47:27 <elliott> rajdev5089: you have to build yourself a matrix of all your hopes and dreams, scan your brain into it, and that locks you in
16:47:45 <Ngevd> fungot?
16:47:51 <elliott> fungot is dead?!
16:47:52 <Ngevd> No fungot...
16:47:55 <elliott> :'(
16:48:08 <ais523> heh, I was about to ping fungot too, but it wasn't here
16:48:10 <rajdev5089> which country u belong to
16:48:11 <ais523> `logs
16:48:13 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
16:48:16 <ais523> `log
16:48:18 <HackEgo> 2011-07-31.txt:10:43:42: <coppro> learn to `on`
16:48:27 <elliott> rajdev5089: i actually flow all over the internet, i'm an AI worm
16:48:35 <elliott> currently I'm in at least 8 continents
16:48:49 <Ngevd> I'm Australian currently resident in Canada
16:48:52 <rajdev5089> ur real name elliot ?
16:49:06 <Ngevd> elliott.exe
16:49:07 <rajdev5089> who is ngevd ?
16:49:12 <Ngevd> Me
16:49:21 <elliott> Ngevd: I run on @!
16:49:21 <ais523> rajdev5089: you're from Bangalore, India, or at least somewhere nearby
16:49:30 <elliott> ais523: omg hax
16:49:37 <rajdev5089> yes...
16:49:43 <rajdev5089> i m in banglore
16:49:52 <ais523> so why do you need to ask us where we live, when it's typically easy to find out?
16:50:04 <rajdev5089> how u people know that i m from banglore
16:50:10 <rajdev5089> how to see ?
16:50:17 <Ngevd> Because we know the secret
16:50:29 <elliott> rajdev5089: Because of the Cameras.
16:50:30 <rajdev5089> tell me .. i will also find
16:50:43 <CakeProphet> oh my god guys
16:50:45 <CakeProphet> fungot, is gone.
16:50:52 * CakeProphet freaks the fuck out.
16:50:57 * CakeProphet is a frightened weasel.
16:51:23 <rajdev5089> tell me yar
16:51:36 <rajdev5089> what infirmation u know about me
16:52:07 <elliott> All the information.
16:52:15 <elliott> SCANNING VICINITY...
16:52:19 <rajdev5089> what else
16:52:21 <CakeProphet> rajdev5089: you like the color purple.
16:52:38 <rajdev5089> yes cakeprophet
16:53:04 <elliott> rajdev5089: Your name... is rajdev5089.
16:53:13 <rajdev5089> then
16:53:57 * CakeProphet says in a cryptic voice, "your name is not registered to services."
16:54:18 * shachaf says in a hollow voice, "Fool."
16:54:43 <elliott> rajdev5089: YOU Broadband & Cable India Ltd. is dedicated to your safety.
16:55:06 <rajdev5089> what ur saying elliot ?
16:55:20 <rajdev5089> i dont understand you elliot
16:56:12 <ais523> err, you misspelt his name
16:56:17 * ais523 braces
16:56:36 <elliott> ais523: rajdev5089 is clearly referencing some offline user
16:56:38 <CakeProphet> fizzie: help you are not fungot. no one is fungot. what is world at
16:56:41 <elliott> `log \belliot\b
16:56:47 <elliott> ais523: wow, I typo'd "elliott" as "elliot"
16:56:49 <elliott> erm
16:56:51 <elliott> other way around
16:57:02 <ais523> deliberately typoing is often hard
16:57:05 <HackEgo> 2009-11-09.txt:23:31:24: <ehird> Special thanks go to Joris Huizer, Elliot Hird, Arvid Norlander,
16:57:10 <ais523> especially on a word you typo often
16:57:19 <rajdev5089> what u people saying
16:57:24 <ais523> (random fact: I typoed about eight times in that line)
16:57:30 <CakeProphet> rajdev5089: are you a developer?
16:57:38 <CakeProphet> :#
16:57:41 <rajdev5089> i m really mad on seeing this
16:57:50 <CakeProphet> like grrrr mad? or bhasiuhiuwehruhwer made?
16:57:52 <CakeProphet> *mad
16:58:17 <rajdev5089> if someone is free mean tell me clearly what happening here
16:58:32 <rajdev5089> how to use this chat room
16:58:46 <rajdev5089> i m new here
16:58:46 <ais523> rajdev5089: you probably don't want to use this one, as you seem to have no idea of what it's for
16:58:55 <elliott> rajdev5089: Try #ubuntu.
16:59:00 <elliott> Type: /join #ubuntu
16:59:06 <rajdev5089> yes
16:59:16 <rajdev5089> r u people male or female
16:59:32 <rajdev5089> u know..... who i am ?
17:00:11 <elliott> We know everything, rajdev5089.
17:00:43 <ais523> elliott: never say that, you attract attention from people who actually /do/ know everything
17:00:59 <elliott> ais523: heh
17:02:01 <rajdev5089> who is ais523
17:02:07 <CakeProphet> rajdev5089: I am a sexy sexy female software professional.
17:02:11 <elliott> rajdev5089: the owner of this channel
17:03:02 <rajdev5089> then who are you elliott
17:03:13 <elliott> I am... you.
17:03:36 <rajdev5089> who is cakeprophet
17:03:57 <Ngevd> A sexy sexy female software professional
17:04:00 <rajdev5089> send me some private msg people
17:04:18 <rajdev5089> who is ngevd
17:04:24 <elliott> ngevd is hexham
17:04:44 <rajdev5089> hexham mean
17:04:47 <CakeProphet> I am Zoe Olivier and I have for the longest time been raised by foster parents, unaware of my status as a foster child. Then one day, I realized I have the power to divine through interaction with baking magicks.
17:04:53 <Ngevd> Hexham is my name
17:05:12 <rajdev5089> ur male \
17:05:21 <rajdev5089> hexham is male
17:05:27 <Ngevd> Hexham can be either
17:05:30 <CakeProphet> it is since then that I exist in my current form, fighting the evils through divination of baked goods, and making the world a happy and good justice place for all!!!
17:05:46 <elliott> rajdev5089: I feel compelled to point out that as an amorphous stream of bits, I have no gender.
17:06:03 <rajdev5089> hexham send me private msg
17:06:57 -!- augur has quit (Remote host closed the connection).
17:07:05 <Ngevd> msg rajdev5089 Hello!
17:07:15 <ais523> Ngevd: that isn't a private message
17:07:17 <ais523> I saw it just fine
17:07:30 <Ngevd> Woops
17:07:31 <Ngevd> I'm tired
17:08:41 <CakeProphet> msg rajdev5089 u liek girls with dicks?
17:08:43 <CakeProphet> oops.
17:08:52 <rajdev5089> why
17:09:33 -!- ChanServ has set channel mode: +o ais523.
17:09:53 <ais523> rajdev5089: I suspect you're in the wrong place, and you should probably leave
17:10:35 <rajdev5089> why ais523
17:10:43 <rajdev5089> what people discuss here
17:10:45 <elliott> `quote
17:10:45 <elliott> `quote
17:10:46 <elliott> `quote
17:10:46 <elliott> `quote
17:10:46 <elliott> `quote
17:10:48 <ais523> because you don't understand the purpose of this channel
17:10:54 <HackEgo> 457) <Sgeo> Dear eHow: Please don't assume that my toilet works like that <Sgeo> Or, at least, my toilet looks different
17:10:54 <HackEgo> 387) <zzo38> I figured out something about C program. If you use ? : a lot then you don't need as much parentheses but it makes it more difficult to understand.
17:11:11 <HackEgo> 20) <bsmntbombdood> there is plenty of room to have two heads
17:11:11 <HackEgo> 95) <Aftran> Clearly we should be like Mumbai and get of vehicle dors. <Warrigal> Get of vehicle dors? <Warrigal> I think Aftran had a French phrase there. <Firenze> Les vehicles d'or
17:11:11 <HackEgo> 230) <zzo38> Maybe they should just get rid of Minecraft. If more people want it someone can make using GNU GPL v3 or later version, with different people, might improve slightly.
17:11:44 <elliott> ais523: hmm, I'm thinking 95; 20 can't be deleted because it would ruin the quotes after it
17:11:59 <rajdev5089> who is here
17:12:02 <ais523> elliott: yes, OK; 457's good for a Sgeo quote
17:12:10 <CakeProphet> rajdev5089: try typing /names
17:12:21 <ais523> CakeProphet: ouch, don't say that
17:12:26 <rajdev5089> :-$
17:12:26 <elliott> `delquote 95
17:12:29 <HackEgo> ​*poof* <Aftran> Clearly we should be like Mumbai and get of vehicle dors. <Warrigal> Get of vehicle dors? <Warrigal> I think Aftran had a French phrase there. <Firenze> Les vehicles d'or
17:12:29 <elliott> ais523: why not?
17:12:31 <ais523> I thought of saying that myself, but realised why it's a really bad idea, and you should too, ideally
17:12:38 <ais523> elliott: you want half the channel pinged?
17:12:42 <rajdev5089> cakepoint: ur real name
17:12:45 <elliott> ais523: I don't think you know what /names is
17:13:07 <ais523> elliott: I do; and I know it answers in a numeric not in-channel
17:13:18 <ais523> I still nonetheless stand by my statement
17:13:20 <rajdev5089> ok yar.. bye you to all
17:13:23 <ais523> bye
17:13:36 <rajdev5089> last one thing
17:13:42 <CakeProphet> rajdev5089: I told you my name is Zoe Olivier the Cake Prophet
17:13:53 <CakeProphet> sheesh
17:13:56 <CakeProphet> no one ever believes me
17:14:00 <rajdev5089> u people here talk about sexy things
17:14:04 <CakeProphet> all the time.
17:14:06 <CakeProphet> like Haskell.
17:14:08 <CakeProphet> so sexy.
17:14:17 <rajdev5089> what sexy here
17:14:19 <ais523> > [1..]
17:14:20 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
17:14:25 <elliott> All sexy here.
17:14:28 <tswett> Speaking of French, qu'est-ce que l'arg est?
17:14:39 <rajdev5089> bye you to all
17:14:48 <rajdev5089> muaaahhhhhhhhhhh
17:14:52 <CakeProphet> bye you to rajdev5089
17:14:57 <Gregor> Life lesson for us all: http://9gag.com/gag/565257
17:15:53 <CakeProphet> mmm
17:16:19 -!- rajdev5089 has left.
17:16:30 <CakeProphet> friendship devouring
17:16:52 <elliott> bye raj
17:17:10 <CakeProphet> poor guy. apparently really terrible at finding people to cyber with.
17:17:12 -!- ais523 has kicked ais523 there are actually quite a lot of ways to deop yourself, this is one of them.
17:17:15 -!- ais523 has joined.
17:17:57 <nys> yar
17:18:09 <ais523> hi nys
17:18:10 <Ngevd> Hello nys
17:18:18 <nys> :o
17:18:24 <elliott> nys: hi rajdev5089
17:18:28 <elliott> note: probably untrue
17:18:41 <nys> i think he was looking for some sexy pirates
17:19:10 <ais523> nys: the funny thing is, from just "yar" and ":o" I had a good idea that you actually had a vague idea of what you were doing here
17:19:18 <ais523> which is a little surprising, really, given how content-free those lines were
17:19:29 <nys> i know what i'm doing here
17:19:29 <elliott> ais523: wat
17:19:33 <nys> i made some langs
17:20:13 <CakeProphet> #esotericf is a prestiguous group of eminent language designers.
17:20:15 <CakeProphet> -f
17:20:19 <ais523> elliott: ":o" is a lot more encouraging than "i dont understand you elliot"
17:20:28 <nys> i like the way you rub your peg leg on my beard
17:20:41 <elliott> ais523: you realise that nys didn't just join? :)
17:20:50 * CakeProphet is the esteemed creator the dupdog programming language.
17:20:53 <elliott> CakeProphet: * Users on #esotericf: @elliott
17:20:54 <ais523> elliott: yes, from the join/part layout
17:20:55 <elliott> CakeProphet: Indeed.
17:21:06 <ais523> I hadn't seen him/her here before, but had guessed he/she'd been here for a while
17:21:13 <ais523> well, remembered so, at least
17:21:28 <ais523> there are quite a lot of people who have been here for ages but I simply haven't noticed due to being oblivious
17:21:45 <nys> i was here once around five years ago I think
17:22:27 <Ngevd> Your name seems somehow familiar...
17:22:27 <nys> but i probsably uses the nick architect1 back tshen
17:22:49 <nys> this nick is registered on this network
17:22:52 <nys> but not to me
17:22:59 <elliott> /ns ghost nys
17:23:04 <nys> so I might be unintentionally impostering someone
17:23:46 <Gregor> WILL THE REAL NYS PLEASE STAND UP
17:23:55 <nys> i am the real nys
17:24:01 <nys> but only in a different way
17:24:46 -!- elliott has quit (Quit: Leaving).
17:26:16 <Ngevd> MYSTERIOUS
17:26:33 * CakeProphet says in a cryptic voice, "cryptic."
17:26:41 <Madoka-Kaname> Hi nys
17:26:48 <nys> hi you
17:26:55 <nys> =3
17:27:40 <Ngevd> I should have called MIBBLLII WIBBLLII
17:28:02 <nys> are there any esolangs that have been removed from the wiki because they were too useful?
17:28:21 <ais523> I don't think so
17:28:27 <ais523> being useful and being esoteric aren't mutually exclusive
17:28:43 <ais523> it's just unlikely to find a language that does both at once
17:28:53 <ais523> (being eso is enough of a reason to make a language that you don't have to make it eso too)
17:29:01 <Ngevd> befunge-98
17:29:02 <ais523> *make it useful too
17:29:18 -!- elliott has joined.
17:29:23 <Gregor> Damn it, he's back.
17:29:24 <Gregor> I MEAN HI
17:29:48 <elliott> hi
17:30:44 <ais523> `? welcome
17:30:46 <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
17:35:01 <ais523> oh right, I have a serious and annoying question I've been putting off all week, because I suspect the answer is "that's impossible"
17:35:39 <elliott> go on
17:35:48 <ais523> given some code that you're treating as black-box (that is, that you can't see the internals of the code, but can run it), that you know is a sorting algorithm, is there any way to determine if it's using mergesort or not?
17:35:58 <ais523> not 100% unfoolable, but even to make a decent guess in the common case?
17:37:09 <elliott> ais523: hmm, how much of a black box is it?
17:37:23 <elliott> ais523: if it's a function in a pure language, you can't, because all sorting algorithms are equivalent, modulo stability
17:37:31 <ais523> one I can look inside but don't really want to have to, as it'd be faster to do so by hand than write a program to do it
17:37:33 <elliott> does it take a comparison function, or are you forced to sort lists of integers?
17:37:42 <ais523> I /can/ time it, but that's just going to prove it n log n
17:37:51 <elliott> I assume you mean it's a Unix program, which means you can time it, which could be helpful
17:37:51 <ais523> and it's using OCaml's built-in compare function
17:37:55 -!- augur has joined.
17:37:59 <Gregor> ais523: If you hadn't said "not 100% unfoolable", I would have just screamed "RIIIIIICE" at you.
17:38:01 <ais523> which I think cannot compare two things equal unless they actually are equal
17:38:15 <ais523> so I can't use stability tricks
17:38:17 <elliott> ais523: yes, but you can try and get the worst case
17:38:25 <ais523> right
17:38:25 <elliott> if it goes really slowly on pathological quicksort data, it's probably not mergesort
17:38:34 <Gregor> Also, behold:
17:38:34 <ais523> the hard part is, it's not even mergesort in particular I'm meant to be checking for
17:38:37 <Gregor> `? welcome @ elliott
17:38:37 <ais523> but 3mergesort
17:38:40 <HackEgo> elliott: 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
17:38:43 <elliott> ais523: out of curiosity, what /is/ this program?
17:38:45 <elliott> `url bin/?
17:38:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/?
17:38:50 <elliott> `paste bin/?
17:38:52 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.813
17:38:53 <ais523> which is like mergesort, except that you're splitting into 3 lists not 2
17:39:07 <elliott> Gregor: You made the change in a way I don't like, I'm rewriting it :)
17:39:21 <ais523> elliott: and it's student submissions, they're meant to be marked automatically
17:39:25 <Gregor> elliott: WAH WAH WAH
17:39:34 <ais523> but I can't see an automatic method for determining that they're using the right algo in the sorting question
17:39:39 <ais523> (none of the questions have required a specific algo)
17:40:19 <Ngevd> Can you see how much memory it uses?
17:40:30 <ais523> hmm, I guess so
17:40:40 <ais523> but am not even sure that'd help, as OCaml is nondeterministically GCed
17:40:50 <Ngevd> Hmm
17:41:44 <Ngevd> I seem to remember "libertas" being latin for "for freedom"...
17:42:15 <elliott> `revert 914
17:42:16 <HackEgo> Done.
17:42:23 <elliott> `fetch http://sprunge.us/eYAX
17:42:24 <HackEgo> 2011-11-11 17:42:24 URL:http://sprunge.us/eYAX [268] -> "eYAX" [1]
17:42:34 <elliott> `run cd bin; patch -p1 <../eYAX
17:42:36 <HackEgo> patching file '?' \ Hunk #1 succeeded at 1 with fuzz 2.
17:42:42 <elliott> `rm eYAX
17:42:44 <HackEgo> No output.
17:42:47 <elliott> `? welcome > Gregor
17:42:49 <HackEgo> welcome > Gregor? ¯\(°_o)/¯
17:42:55 <Gregor> G'job.
17:43:03 <elliott> Hmm. Ah.
17:43:19 <elliott> There is an easy solution to this!
17:43:47 <Gregor> So have we all decided on a superior highlight character for that, by the way?
17:43:49 <Gregor> Since ? is taken
17:43:52 <ais523> elliott: please tell me it's parsing the filename of stdout to determine who to ping
17:43:56 <Gregor> $anybody react to $?
17:43:57 <elliott> Gregor: `? is fine *shrug*
17:44:00 <elliott> ais523: lol
17:44:05 <Gregor> elliott: But it needs a space bleh >:(
17:44:12 <Gregor> elliott: It's really "`? "
17:44:23 <elliott> Gregor: I'd make it react to any lowercase word without spaces followed by ? and EOL
17:44:25 <ais523> what about ?? like #nethack uses?
17:44:27 <ais523> ?? abc
17:44:27 <lambdabot> abc
17:44:27 <elliott> but others may dislike that :)
17:44:28 <Ngevd> I want a really really old computer
17:44:33 <ais523> wait what?
17:44:34 <ais523> ?? 1+2
17:44:34 <lambdabot> 1+2
17:44:36 <Ngevd> With vacuum tubes and magnetic tape
17:44:40 <Gregor> ??I suspect that it will still react to ?
17:44:40 <ais523> is ?? an echo command for lambdabot?
17:44:44 <Gregor> ?? foo
17:44:45 <lambdabot> foo
17:44:47 <Gregor> ??foo
17:44:50 <Gregor> Hmm
17:44:54 <ais523> ?help ??
17:44:55 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:44:58 <ais523> ?help ?
17:44:58 <lambdabot> ? [args].
17:44:58 <lambdabot> ? executes plugin invocations in its arguments, parentheses can be used.
17:44:58 <lambdabot> The commands are right associative.
17:44:58 <lambdabot> For example: ? ?pl ?undo code
17:44:58 <lambdabot> is the same as: ? (?pl (?undo code))
17:45:16 <ais523> hmm
17:45:23 <ais523> ?? c i op as
17:45:23 <lambdabot> c i op as
17:45:38 <ais523> ?? pl ?undo 2+2
17:45:38 <lambdabot> pl 2 + 2
17:45:43 <ais523> ah, interesting
17:45:44 <Ngevd> And then I will set it up
17:45:44 <Ngevd> And run Dwarf Fortress
17:45:44 <elliott> ?? ?pl ?undo 2+2
17:45:44 <Ngevd> Generate a really long history
17:45:44 <Ngevd> And just have that in a room somewhere
17:45:45 <lambdabot> 4
17:45:50 <elliott> ais523 can't read documentation.
17:46:01 <elliott> @help @
17:46:01 <lambdabot> @ [args].
17:46:01 <lambdabot> @ executes plugin invocations in its arguments, parentheses can be used.
17:46:01 <lambdabot> The commands are right associative.
17:46:01 <lambdabot> For example: @ @pl @undo code
17:46:01 <lambdabot> is the same as: @ (@pl (@undo code))
17:46:01 <ais523> elliott: the documentation gave /one/ leading ?
17:46:03 <ais523> not two
17:46:08 <elliott> Wow, it actually gives different help for the @ version.
17:46:15 <elliott> ais523: yes, because it's implied to be part of a lambdabot invocation
17:46:16 <elliott> @help pl
17:46:17 <lambdabot> pointless <expr>. Play with pointfree code.
17:46:19 <elliott> <lambdabot> @ [args].
17:46:19 <Gregor> @help `
17:46:20 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:46:22 <elliott> <lambdabot> pointless <expr>. Play with pointfree code.
17:47:05 <elliott> `fetch http://sprunge.us/OhSc
17:47:06 <HackEgo> 2011-11-11 17:47:06 URL:http://sprunge.us/OhSc [189] -> "OhSc" [1]
17:47:12 <elliott> `run mv OhSC bin/'?'; chmod +x bin/'?'
17:47:14 <HackEgo> mv: cannot stat `OhSC': No such file or directory
17:47:17 <elliott> `run mv OhSC bin/'?'; chmod +x bin/'?'
17:47:19 <HackEgo> mv: cannot stat `OhSC': No such file or directory
17:47:24 <elliott> Gregor: ???
17:47:53 <elliott> `fetch http://sprunge.us/OhSc
17:47:54 <HackEgo> 2011-11-11 17:47:54 URL:http://sprunge.us/OhSc [189] -> "OhSc.1" [1]
17:47:57 <Gregor> elliott: lol
17:47:58 <elliott> >_<
17:48:00 <elliott> `run mv OhSC bin/'?'; chmod +x bin/'?'; rm OhSC.1
17:48:02 <HackEgo> mv: cannot stat `OhSC': No such file or directory \ rm: cannot remove `OhSC.1': No such file or directory
17:48:04 <elliott> oh
17:48:07 <elliott> `run mv OhSc bin/'?'; chmod +x bin/'?'; rm OhSc.1
17:48:09 <HackEgo> No output.
17:48:12 <elliott> `? welcome > Gregor
17:48:14 <HackEgo> Gregor: 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
17:48:20 <elliott> `paste bin/?
17:48:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.6308
17:48:23 <elliott> Gregor: Behold the elegance.
17:48:27 <Gregor> `? yousuck @ elliott
17:48:29 <HackEgo> yousuck? ¯\(°_o)/¯
17:48:53 <Gregor> elliott: That's pretty genius.
17:49:06 <elliott> `run sed -i 's/f $1/f $*/g' bin/'?'; # so that you can still run it from `run sanely
17:49:08 <HackEgo> No output.
17:49:12 <elliott> `run '?' welcome > test
17:49:14 <HackEgo> No output.
17:49:15 <elliott> ...oh wait :P
17:49:19 <elliott> `revert -3
17:49:20 <HackEgo> Done.
17:49:23 <elliott> `help
17:49:23 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
17:49:34 <elliott> Perfect
17:49:38 <elliott> Gregor: Wait...
17:49:41 <elliott> Gregor: I just had The Best Idea.
17:49:44 <Gregor> Uh oh
17:49:52 <Ngevd> GOODBYE!
17:50:04 <Ngevd> Also, Pietbot's achieved sentience WHILE NOT EVEN RUNNING
17:50:10 <Ngevd> I am scared
17:50:13 <elliott> Gregor: Writing to /home/<nick> causes HackEgo to address what's written there to <nick>.
17:50:21 <elliott> For example: `run wisdom > ~elliott
17:50:24 <elliott> <HackEgo> elliott: [wisdom]
17:50:28 <elliott> Err, s/wisdom/fortune/g
17:50:54 <Gregor> ... that's dumb. /home/<nick> existed for any reason it would be for actually private per-user files.
17:51:07 <Gregor> s/\. \//. If \//
17:51:12 <elliott> Gregor: The reason to put it in /home is so that you can use ~foo :P
17:51:16 <Gregor> I know
17:51:20 <Gregor> Still.
17:51:41 <elliott> Gregor: OK wait no I just had The Best Idea.
17:51:41 <Gregor> So I think we've all agreed on the prefix character 🐐, right?
17:51:46 <Gregor> 🐐welcome @ elliott
17:51:52 <elliott> It's >, not @.
17:51:57 <Gregor> WATCH ME @
17:52:01 <Gregor> WATCH ME @ THE NIGHT AWAY
17:52:17 <elliott> Gregor: OK here is the best idea: HackEgo functions as a @tell bot... /by using Unix mail/.
17:52:27 <Gregor> >_O
17:53:11 <elliott> It requires exactly two pieces of infrastructure from the outside: A user added whenever a new nick is spotted, and the first time a user speaks after receiving mail, HackEgo notifies them :P
17:55:23 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:55:33 <Gregor> Ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
17:55:44 <Gregor> I half-mostly-kinda misunderstood the request :P
17:56:01 <Gregor> Hmmmm.
17:56:04 <Gregor> Consider it under consideration.
17:58:37 <Gregor> `? welcome 🐐 elliott
17:58:39 <HackEgo> elliott: 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
17:58:49 <elliott> `revert
17:58:50 <HackEgo> Done.
17:59:00 <elliott> `revert 934
17:59:01 <HackEgo> Done.
17:59:04 <elliott> You're a bad person, Gregor.
17:59:05 <elliott> A VERY BAD PERSON
17:59:14 <Gregor> To be fair, I also added back @ :P
17:59:29 <Vorpal> btw I can confirm that skyrim is buggy
17:59:33 <elliott> Yeah but @ is like so unUnixy.
17:59:34 <Vorpal> as would be expected
17:59:41 <Gregor> elliott: Waaah
18:00:02 <Gregor> elliott: foo > elliott should replace the very fiber of your being, not target the message at you.
18:00:13 <Vorpal> for example, I'm currently unable to re-equip the item in my right hand except to a two-hand weapon or the flame spell. This just happened randomly
18:00:14 <elliott> Gregor: HackEgo must live with its approximations of the ideal :P
18:00:24 <ais523> `run '?' welcome | cat <<<'elliott: ' -
18:00:26 <HackEgo> sh: Syntax error: redirection unexpected
18:00:34 <elliott> ais523: sh =/= bash
18:00:38 <elliott> Gregor: BTW, make `run start bash, not sh, please
18:00:42 <ais523> `run bash -c "'?' welcome | cat <<<'elliott: ' -"
18:00:44 <HackEgo> elliott:
18:00:46 <elliott> bash goes into compatibility mode when run as sh
18:00:49 <ais523> :(
18:00:51 <elliott> which makes no sense for `run's interactive use
18:00:57 <Gregor> Ohyuk
18:01:00 <elliott> ais523: what is with the trailing "?
18:01:07 * Gregor makes it start tcsh X-P
18:01:08 <ais523> elliott: because it matches the " after -c
18:01:37 <elliott> ais523: Oh
18:02:15 <ais523> but it seems I've forgotten exactly how <<< works
18:02:28 <Vorpal> oh and this ride to another town I just hired doesn't seem to actually ever leave
18:02:28 <elliott> Gregor: BTW, I had some more thoughts about transactional semantics for HackEgo; as far as I can tell, it's simple, but there's one important caveat:
18:02:40 <elliott> Gregor: Commands all run at once, /but/ you don't get the output of any command until they /all/ finish.
18:02:45 <ais523> Vorpal: does it nonetheless arrive?
18:02:46 <elliott> (Ignoring writes)
18:02:47 <Gregor> elliott: Done.
18:03:01 <elliott> Gregor: I don't think that's so terrible as to make it not worth it, though; everything still takes the same amount of time.
18:03:20 <elliott> It does mean that `sleep 30 is a bit annoying, but only Madoka-Kaname would do that, and HackEgo ignores her :P
18:04:17 <fizzie> `run bash -c "'?' welcome | cat <(echo -n 'elliott: ') -"
18:04:20 <HackEgo> elliott: 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
18:04:26 <fizzie> "The easy way."
18:04:26 <elliott> fizzie: So convenient.
18:04:26 <Vorpal> <ais523> Vorpal: does it nonetheless arrive? <-- no
18:04:31 <elliott> `run ? welcmoe
18:04:32 <ais523> boring
18:04:33 <HackEgo> welcmoe? ¯\(°_o)/¯
18:04:37 <elliott> Oh, that works
18:04:43 <Vorpal> ais523, it is just boringly plain broken.
18:04:54 <elliott> Gregor: I'm tempted to replace `?'s > support with a "to" command, but I dunno...
18:05:06 <elliott> "`? welcome > newbie" is shorter than "`run ? welcome | to newbie" :P
18:05:17 <Vorpal> ais523, I assume you know that Skyrim had a day-1 patch?
18:05:21 <elliott> Ooh
18:05:23 <Vorpal> and I have that patch
18:05:25 <elliott> I could make it `to newbie ? welcome
18:05:35 <elliott> `run which to
18:05:36 <Vorpal> ais523, so actually version 1.1 was released on the 11/11/11
18:05:37 <HackEgo> No output.
18:05:39 <ais523> `run while true; do '?' `t` > t2; cat t2; mv t2 t; done
18:05:49 <elliott> ais523: that's going to be annoying...
18:05:54 <ais523> bleh, do infinite loops not produce output anyway?
18:06:09 <ais523> `run for x in `seq 1 5`; do '?' `t` > t2; cat t2; mv t2 t; done
18:06:10 <Gregor> wtf is `t` supposed to do.
18:06:11 <HackEgo> bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found
18:06:13 <HackEgo> bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory
18:06:17 <ais523> `run for x in `seq 1 5`; do '?' `cat t` > t2; cat t2; mv t2 t; done
18:06:22 <HackEgo> cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory
18:06:24 <ais523> sorry, missed a car
18:06:30 <ais523> what?
18:06:33 <elliott> `revert 934
18:06:34 <ais523> *missed a cat
18:06:35 <HackEgo> Done.
18:06:47 <ais523> the idea's to repeatedly iterate ?
18:07:11 <Gregor> Poorly :P
18:07:13 <ais523> so we have one ? then two ?s then three ?s, etc
18:07:18 <ais523> Gregor: it's bash, it's not Haskell
18:07:35 <elliott> Gregor: It would be kinda nice if we could revert single files...
18:07:45 <Gregor> elliott: Waaaaaaah
18:07:47 <Gregor> :P
18:08:00 <elliott> Gregor: Pah :P
18:08:10 <Gregor> Hmmmmm
18:08:20 <Gregor> Since HackEgo is actually running umlbox, I could make .hg present but read-only.
18:08:44 <elliott> That would be nice
18:08:50 <ais523> `gdb
18:08:52 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: gdb: not found
18:08:55 <ais523> :(
18:09:02 -!- monqy has joined.
18:09:07 <elliott> Gregor: It would also be nice if we could install packages ourselves ;D
18:09:11 -!- Ngevd has joined.
18:09:42 <Gregor> elliott: Blurp
18:10:09 <Gregor> `echo Did I just break everything?
18:10:09 <Ngevd> Well, Pietbot seems to work when it recieves a PRIVMSG from #esoTERiC
18:10:10 <HackEgo> Did I just break everything?
18:10:11 <HackEgo> Invalid .hg directory found.
18:10:14 <Gregor> lol
18:10:15 <Ngevd> but not #esoteric
18:10:19 <Ngevd> or #ESOTERIC
18:10:22 <Gregor> `echo Did I just break everything?
18:10:24 <HackEgo> Did I just break everything?
18:10:55 -!- useless-fungot has joined.
18:10:58 <elliott> Hmmmmmmmmmmmmmmmmmmm
18:11:00 <elliott> What does
18:11:01 <elliott> foo="$@"
18:11:02 <elliott> do
18:11:19 <ais523> ](:S:^):^
18:11:36 <ais523> ](test)S
18:11:45 <useless-fungot> You might want ]ul
18:11:49 <Gregor> OK, that didn't work, presently .hg is accessible :P
18:11:52 <ais523> ]ul (:S:^):^
18:11:52 <useless-fungot> :S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^ ...too much output!
18:11:55 <ais523> ]ul (test)S
18:11:55 <useless-fungot> test
18:12:08 <ais523> OK, the reaction to the first one was fast enough that there's definitely a bot involved
18:12:21 <Gregor> OK, fixed.
18:12:23 <Ngevd> ]help
18:12:26 <Gregor> .hg is now present but read-only.
18:12:28 <Gregor> Go nuts.
18:12:31 <ais523> ]ul (:S(a)*:^):^
18:12:31 <useless-fungot> :S(a)*:^:S(a)*:^a:S(a)*:^aa:S(a)*:^aaa:S(a)*:^aaaa:S(a)*:^aaaaa:S(a)*:^aaaaaa:S(a)*:^aaaaaaa:S(a)*:^aaaaaaaa:S(a)*:^aaaaaaaaa:S(a)*:^aaaaaaaaaa:S(a)*:^aaaaaaaaaaa:S(a)*:^aaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaaaaa: ...too much output!
18:12:37 <ais523> yep, definitely
18:12:51 <elliott> `revert 914
18:12:53 <HackEgo> Done.
18:12:54 <elliott> `fetch http://sprunge.us/NLfb
18:12:55 <HackEgo> 2011-11-11 18:12:55 URL:http://sprunge.us/NLfb [179] -> "NLfb" [1]
18:13:00 <elliott> `run mv NLfb bin/'@'; chmod +x bin/'@'
18:13:02 <HackEgo> No output.
18:13:04 <ais523> (note: that is /not/ a sensible way to do a loop counter in Underload)
18:13:04 <elliott> `@ ais523 ? welcome
18:13:06 <HackEgo> ais523: exec: 9: welcome: not found
18:13:12 <Gregor> elliott: LOLOL U FAIL
18:13:13 <elliott> o_O
18:13:15 <ais523> HackEgo: thanks for that
18:13:22 <elliott> `run @ ais523 \? welcome
18:13:24 <HackEgo> ais523: 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
18:13:36 <Gregor> `ls
18:13:37 <HackEgo> bin \ canary \ karma \ lastquote \ lib \ paste \ quotes \ share \ wisdom
18:13:50 <elliott> hmm
18:13:52 <Gregor> elliott: Interpolation's a bitch, eh?
18:13:57 <elliott> `run @ "ais523 ? welcome"
18:13:59 <HackEgo> ais523: exec: 9: welcome: not found
18:14:05 <elliott> Oh
18:14:11 <elliott> `run echo "ais523 ? welcome" | sed 's/.* //'
18:14:13 <HackEgo> welcome
18:14:16 <ais523> `run @ 'elliott ? welcome'
18:14:17 <elliott> Gregor: regexp's a bitch, eh?
18:14:18 <HackEgo> elliott: exec: 9: welcome: not found
18:14:28 <Gregor> elliott: Yup
18:14:29 <ais523> nothing to do with interpolation at all
18:14:34 <ais523> but rather, splitting into args
18:14:41 <elliott> `fetch http://sprunge.us/gFYW
18:14:42 <HackEgo> 2011-11-11 18:14:42 URL:http://sprunge.us/gFYW [182] -> "gFYW" [1]
18:14:43 <ais523> `run @ elliott \? abc def
18:14:45 <HackEgo> elliott: abc? ¯\(°_o)/¯
18:14:45 <Gregor> `log
18:14:47 <HackEgo> 2009-04-28.txt:19:21:42: <AnMaster> ehird, what did you say thenm
18:14:47 <elliott> `run mv gFYW bin/@; chmod +x bin/@
18:14:48 <Gregor> `hg log
18:14:49 <HackEgo> No output.
18:14:57 <elliott> `@ newbie ? welcome
18:14:59 <HackEgo> newbie: 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
18:15:01 <HackEgo> changeset: 949:5a502f968ae0 \ tag: tip \ user: HackBot \ date: Fri Nov 11 18:14:43 2011 +0000 \ summary: <elliott> fetch http://sprunge.us/gFYW \ \ changeset: 948:9c64676a536c \ user: HackBot \ date: Fri Nov 11 18:13:03 2011 +0000 \ summary: <elliott> run mv NLfb bin/'@'; chmod
18:15:03 <elliott> Gregor: Tada
18:15:46 <Gregor> `@ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott echo hi
18:15:50 <HackEgo> elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: hi
18:16:05 <elliott> `run hg log --style help
18:16:08 <HackEgo> abort: style not found: help
18:16:17 <ais523> `@ `yes @` help
18:16:19 <HackEgo> ​`yes: exec: 9: @`: not found
18:16:20 <elliott> Gregor: How list styles
18:16:24 <Gregor> elliott: I not know
18:16:31 <ais523> OK, it wouldn't have worked anyway
18:16:41 <ais523> bash isn't lazy
18:16:42 <elliott> `run hg log --style compact
18:16:44 <HackEgo> 950[tip] 9d673ce664d4 2011-11-11 18:14 +0000 HackBot \ <elliott> run mv gFYW bin/@; chmod +x bin/@ \ \ 949 5a502f968ae0 2011-11-11 18:14 +0000 HackBot \ <elliott> fetch http://sprunge.us/gFYW \ \ 948 9c64676a536c 2011-11-11 18:13 +0000 HackBot \ <elliott> run mv NLfb bin/'@'; chmod +x bin/'@' \
18:16:49 <Gregor> ais523: bash. Still not Haskell?
18:16:58 <elliott> Gregor: git log --oneline # git is more usable than hg
18:17:06 <Gregor> elliott: Waaaaah
18:17:20 <elliott> `run hg log --template '{rev} {desc}\n'
18:17:21 <Gregor> elliott: Considering that every other command in git sucks ass, I don't know if I agree.
18:17:23 <HackEgo> 950 <elliott> run mv gFYW bin/@; chmod +x bin/@ \ 949 <elliott> fetch http://sprunge.us/gFYW \ 948 <elliott> run mv NLfb bin/'@'; chmod +x bin/'@' \ 947 <elliott> fetch http://sprunge.us/NLfb \ 946 <elliott> revert 914 \ 945 <Gregor> run touch foo ; hg add foo ; hg commit -u Blerp -m - \ 944 <Gregor> run rm -f foo foobar
18:17:53 <elliott> `run hg log --template '{author|obfuscate}'
18:17:55 <HackEgo> ​&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#66;&#108;&#101;&#114;&#112;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&#107;&#66;&#111;&#116;&#72;&#97;&#99;&
18:17:56 <ais523> Gregor: as in, git has one good command, or as in git commands alternate between good and bad?
18:18:01 <elliott> Gregor: hg: still sucks ass!
18:18:16 <ais523> what's the obfuscate filter's intended use?
18:18:17 <elliott> (That so counts as sucking ass, because it's so confusing :P)
18:18:21 <elliott> ais523: Generating HTML.
18:18:26 <Gregor> ais523: git has now shown me one good command in git. The rest are, to my knowledge, terrible.
18:18:29 <elliott> Yes, hg comes with a mini templating language meant to let you us "hg log" to generate HTML pages.
18:18:41 <ais523> elliott: yes, but why would you want to do that? it doesn't really block scraping at all
18:18:46 <ais523> as HTML scrapers can generally parse HTML
18:18:52 <elliott> ais523: actually, most don't bother
18:18:58 <elliott> or at least didn't a while ago
18:19:14 <elliott> ais523: why spent five hours parsing all the various ways to obfuscate emails? people who do that won't be fooled by your spam anyway
18:19:30 <elliott> if you only scrape for emails in the most obvious format, you still get thousands upon thousands of them, and they're likely to be more gullible too
18:19:35 <Gregor> "Wait, you said TURKEY? I thought you said TURKS! Ha ha ha cannibalism."
18:20:14 <ais523> elliott: because the motive in sending spam nowadays is no longer to get people to read the spam
18:20:26 <ais523> but rather, because you've been hired to send the spam to X people
18:20:34 <ais523> people don't roll their own spambots nowadays
18:20:41 <elliott> ais523: well, sure
18:20:45 <elliott> it's still a waste of time to deal with obfuscation
18:20:46 <ais523> and the spambot owners are ripping off the spammers, just as the spammers are trying to rip off victims
18:21:01 <ais523> nah, it lets you say you're sending to, say, 2 billion targets rather than 1 billion
18:21:15 <ais523> (I'm guessing at the number of email addresses on the Internet there)
18:21:38 <elliott> ais523: why not just lie? you're not going to be sending spam to that many people anyway
18:21:57 <ais523> I, umm, honestly hadn't thought of that
18:22:24 <ais523> ah right, it's because the people who harvest the addresses aren't the same as the people who send emails nowadays
18:22:37 <ais523> and there's a bulk rate for email addresses that don't bounce on the black market
18:22:40 -!- MDude has quit (Ping timeout: 248 seconds).
18:22:44 <ais523> and you won't get paid for the same address twice
18:23:08 <elliott> let's just ask CakeProphet, he has first-hand experience!
18:26:41 <elliott> Gregor: Hmm, having .hg is kinda nice, but it'd be nice if you could write to the parts where hg stores the info for the next commit
18:26:53 <Gregor> elliott: Nope.
18:26:54 <elliott> I don't know what that would let you achieve, but it sounds nice :P
18:26:59 <elliott> Gregor: :'(
18:27:09 <CakeProphet> "the people who harvest the addresses aren't the same as the people who send emails nowadays" is true as far as I can tell.
18:29:51 -!- Zuu has joined.
18:36:08 <ais523> elliott: I misinterpreted .hg as a ccTLD
18:36:17 <elliott> Doesn't exist :'(
18:36:18 <ais523> is it actually one of those, and if so, where?
18:36:31 <elliott> How long until +scapegoat is a ccTLD :P
18:37:03 -!- zzo38 has joined.
18:39:10 -!- augur has quit (Remote host closed the connection).
18:48:45 -!- Ngevd has quit (Ping timeout: 258 seconds).
18:53:31 <pikhq_> Is there any sense in not just treating LF, CR, *or* CR/LF as \n when reading a file?
18:53:58 <CakeProphet> usually when it's binary data.
18:54:11 <pikhq_> File containing text.
18:54:34 <ais523> pikhq_: what if the file actually contains two consecutive newlines, one of which is CR, one of which is LF?
18:54:35 <pikhq_> Of course, when you're dealing with binary data you don't want any munging at all.
18:54:40 <CakeProphet> uh, if you're writing a program to determine what kind of system you're on based on the line endings of files. :P
18:54:55 <pikhq_> ais523: There is no platform on which this is going to come out right. :)
18:55:20 <pikhq_> CR or LF but not CR/LF as \n? Seriously, WTF?
18:56:49 <CakeProphet> oh, a program that converts line-endings of one style to another. Well, actually no that would benefit from automatic line ending stuff.
18:58:24 <elliott> CakeProphet: only if its output style was configurable
18:58:30 <elliott> as in, the functionality's
18:58:36 <CakeProphet> right
19:00:55 <CakeProphet> encoding conversion.
19:01:14 <elliott> Vorpal: So is Skyrim any good
19:01:26 <CakeProphet> insert-task-where-you-are-concerned-about-the-binary-representation-of-text-data.
19:01:54 <CakeProphet> elliott: he's probably too busy playing Skyrim to answer that.
19:02:01 <elliott> pikhq_: Here's a good reason: \r\n is a separate list of codepoints to \n.
19:04:21 <pikhq_> elliott: Why should that mean that on UNIX it gets rendered as ^M\n instead of \n?
19:05:06 <elliott> http://www.fileformat.info/info/unicode/char/000d/index.htm
19:05:06 <elliott> http://www.fileformat.info/info/unicode/char/000a/index.htm
19:05:13 <elliott> "Text" usually means "sequence of Unicode codepoints".
19:05:22 -!- derrik has joined.
19:05:24 <elliott> Mangling that sequence = mangling text.
19:05:34 <pikhq_> Boy, you must hate Unicode normalisation.
19:06:06 <elliott> That's a standard form of mangling :)
19:06:21 <elliott> Or rather, I just don't consider /silent/ transformation of that sequence acceptable
19:06:26 <pikhq_> *Not* rendering \r\n or \r as \n does not preserve the semantics of the text, even if it does preserve the codepoint sequence.
19:06:26 <elliott> Since it's an actual operation
19:06:34 <elliott> Shrug, define text
19:06:49 <pikhq_> The question is, do you want to preserve the intended semantics, or the codepoint sequence?
19:06:58 <CakeProphet> elliott: is "the shit you just typed" a valid definition?
19:07:06 <elliott> No
19:07:21 <pikhq_> I here note that Windows generally already *performs* a similar mangling.
19:07:31 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
19:07:39 <pikhq_> The sequence "\r\n" gets handing to the program as "\n".
19:08:17 <CakeProphet> lots of things do then when opening files in text mode.
19:08:21 <CakeProphet> *do that
19:08:24 -!- augur has joined.
19:08:29 <elliott> pikhq_: Windows is broken, how surprising!
19:08:39 <elliott> pikhq_: Anyway invalid
19:08:43 <elliott> That's not Unicode
19:08:49 <elliott> Files are bytestrings
19:09:00 <elliott> Windows just completely unacceptably mangles bytestrings by default :)
19:10:17 <pikhq_> elliott: Per ISO C, this is completely permitted semantics for stdio. If you want no mangling, you should add "b" to your fopen.
19:10:38 <elliott> C is broken???? OH GOD YOU'RE RUINING MY HEART
19:10:44 <elliott> THIS IS SO UNEXPECTED!!!
19:11:19 <pikhq_> As the default for stdio is that you're reading text in the system's encoding, not binary data.
19:11:38 <pikhq_> It would be perfectly permissible for stdio to have a EBCDIC to ASCII conversion step, in fact.
19:11:49 <pikhq_> Strange as hell, but perfectly permissible.
19:12:20 <CakeProphet> elliott: uh, Python, Ruby, Perl, and Haskell all do that kind of translation in text mode as well.
19:12:21 <ais523> pikhq_: you're describing how C-INTERCAL's stdio actually works
19:12:21 <olsner> or it could just use EBCDIC as its runtime character set or whatever they call it in C
19:12:24 <pikhq_> (of course, performing this mangling is a violation of POSIX; "b" must be a no-op)
19:12:24 <ais523> *CLC-INTERCAL
19:12:33 <ais523> (or C-INTERCAL's in CLC-INTERCAL compat mode)
19:12:52 <elliott> CakeProphet: Python and Haskell's file IO is based around Unicode strings
19:12:53 <olsner> at last I think you can, they might've made it boring and standardized on ascii nowadays
19:13:01 <elliott> God knows about Perl
19:13:06 <elliott> Don't care about Ruby
19:13:36 <CakeProphet> both ruby and perl are based on Unicode as well. (at least in newer versions of Perl 5)
19:14:03 <elliott> CakeProphet: you cannot "base a language" on Unicode
19:14:09 <ais523> elliott: Perl's Unicode is massively beautifully overengineered, it blows most languages' out of the water
19:14:14 <elliott> Ruby 1.8 called bytestrings String
19:14:14 <CakeProphet> elliott: ....seriously?
19:14:17 <elliott> I don't know what 1.9 does
19:14:46 <CakeProphet> elliott: s/are based/ file IO are based/
19:14:52 <CakeProphet> (for fucks sake)
19:14:58 <elliott> CakeProphet: that's still not a meaningful statement
19:15:16 <elliott> bytestrings are not sequences of unicode codepoints
19:15:29 <CakeProphet> < elliott> CakeProphet: Python and Haskell's file IO is based around
19:15:29 <CakeProphet> Unicode strings
19:15:35 <elliott> it is possible to have a language which reads sequences of unicode codepoints and then encodes them in another encoding and returns the resulting bytestring for file IO reading operations
19:15:35 <CakeProphet> please take this horribly mangled quote of yours
19:15:39 <CakeProphet> as include perl and ruby to it.
19:15:42 <CakeProphet> s/as/and/
19:15:45 <elliott> CakeProphet: "Unicode" =/= "Unicode strings"
19:15:46 <CakeProphet> and you will get what I am saying.
19:15:52 <CakeProphet> elliott: this conversation is stupid.
19:16:18 <elliott> no, you're just being stupid
19:16:18 -!- oerjan has joined.
19:16:31 <oerjan> brr, cold
19:16:54 <CakeProphet> elliott: I understand the difference between codepoints and encodings.
19:17:41 <CakeProphet> elliott: you're wasting your time trying to make a point out of it.
19:17:49 <elliott> i'm not
19:18:13 <elliott> if you seriously can't understand how "file IO being Unicode but still using bytestrings" is not a complete description
19:18:20 <elliott> and not the same thing as "file IO uses a unicode string type"
19:18:21 <elliott> then w/e
19:21:52 <CakeProphet> how does one represent Unicode without a sequence of bytes.
19:22:47 <elliott> lol
19:23:17 -!- pikhq has joined.
19:23:22 <CakeProphet> is that a silly question?
19:23:37 -!- pikhq_ has quit (Ping timeout: 255 seconds).
19:23:56 <CakeProphet> s/\./?/ here I'll even make it a question with this special little symbol.
19:24:49 <Gregor> CakeProphet: With a sequence of glyphs.
19:25:04 <elliott> CakeProphet: A sequence of... say...
19:25:06 <elliott> Codepoints...
19:25:13 <elliott> !!!!!!!!!!11111
19:25:18 <CakeProphet> ah. I still haven't upgraded to these codepoint-based machines.
19:25:22 <CakeProphet> still using bytes over here.
19:26:33 <CakeProphet> I can see why there's a discrepancy now.
19:26:36 <elliott> It's funny because you're pretending to be so idiotic that you think "RAM is composed of bytes" is equivalent to "there are literally no types other than 'array of bytes' and it is impossible to distinguish them".
19:26:46 <elliott> In other words, nice talking to you!
19:27:42 <CakeProphet> elliott: I'm saying there's not much distinguishing a bytestring encoded in Unicode and a sequence of codepoints
19:27:47 <CakeProphet> other than well... how they're encoded.
19:28:21 -!- MSleep has joined.
19:28:26 <elliott> CakeProphet: Yeah! For instance, a string consisting solely of a codepoint that takes two bytes to encode in UTF-8 OBVIOUSLY has length 2.
19:28:42 <elliott> 2 codepoints + 2 codepoints = 5 codepoints
19:28:43 -!- MSleep has quit (Client Quit).
19:28:57 <CakeProphet> elliott: okay so then Perl uses a "unicode string type"
19:28:57 -!- MSleep has joined.
19:28:57 -!- MSleep has changed nick to MDude.
19:29:05 <CakeProphet> elliott: as I was saying..
19:29:27 <elliott> You cannot prove that just by checking length.
19:29:36 <elliott> length_after_decoding_utf8 is a perfectly valid operation; Perl may call it "length".
19:29:57 <elliott> Of course you can implement a Unicode string type by using an internal UTF-8 representation: the question is whether the abstraction is leaky.
19:30:15 <elliott> Since Perl had approximately a billion decades before getting Unicode support, my guess as to the probability of there being no leaks in its abstraction is 0.
19:30:31 <CakeProphet> and therefore it is "not a unicode string type"?
19:30:59 <elliott> Obviously:
19:30:59 <elliott> <elliott> CakeProphet: Yeah! For instance, a string consisting solely of a codepoint that takes two bytes to encode in UTF-8 OBVIOUSLY has length 2.
19:31:14 <elliott> If length reported the length in UTF-8 bytes, it would obviously not be calculating the length of a Unicode string.
19:31:32 <elliott> (Obviously you can cheat and say that there's an implicit _after_encoding_to_utf8 suffix to any abstraction leaks.)
19:31:41 <CakeProphet> "Returns the length in characters of the value of EXPR. If EXPR is omitted, returns the length of $_ . If EXPR is undefined, returns undef."
19:31:46 <CakeProphet> characters is in italics.
19:31:48 <elliott> (That fails if Perl accepts, and retains, UTF-8 variants though...)
19:31:54 <elliott> (e.g. that one that has no 0 bytes.)
19:32:02 <elliott> CakeProphet: My argument extends to any operation.
19:32:14 <elliott> Anyway, this is boring, and I need to go do things.
19:32:17 -!- elliott has quit (Quit: Leaving).
19:35:33 <oerjan> <ais523> elliott: never say that, you attract attention from people who actually /do/ know everything
19:35:44 <oerjan> nah, we know that he doesn't really know everything.
19:36:49 <pikhq> Hmm. According to Unicode, conforming applications should accept the following as line terminators: U+000A U+000B U+000C U+000D (U+000D U+000A) U+0085 U+2028 U+2029.
19:38:24 <ais523> what's 0xB?
19:38:30 <ais523> vertical tab?
19:38:34 <pikhq> Yup.
19:38:52 <ais523> I don't recognise the other three, but didn't really expect to
19:39:34 <pikhq> Those are NEXT LINE, LINE SEPERATOR, and PARAGRAPH SEPERATOR
19:39:41 <CakeProphet> no pagebreak?
19:39:48 <olsner> U+0085 looks weirdest to me, it's in latin 1 but above ascii
19:40:02 <pikhq> It's from ISO-8859-1.
19:40:17 <pikhq> But not in Windows-1252.
19:41:28 <fizzie> It has a block of control codes at the same "location" than ASCII.
19:42:01 <fizzie> I'm not entirely certain the control codes are specified by ISO-8859-1 though, I'd appreciate a citation on this.
19:42:48 <pikhq> Strictly speaking they're not, there's merely defined space *for* control codes.
19:42:54 <Gregor> http://codu.org/projects/trac/ <-- behold my new and improved trac installation
19:42:59 <Deewiant> ISO 8859-1 is the standard, it doesn't specify the control codes
19:43:13 <pikhq> However, it's usually used with the C0 and C1 control code set.
19:43:14 <Deewiant> ISO-8859-1 is the preferred name for the charset which includes the control codes
19:43:28 <pikhq> C0 is the the set in ASCII.
19:43:37 <oerjan> Gregor: there is something wrong in today's logs between 17:14:19 and 17:17:57, i suspect some parts/quits and joins are missing
19:44:04 <pikhq> Yes, \r and \n technically aren't in ISO 8859-1.
19:44:06 -!- elliott has joined.
19:44:34 <oerjan> Gregor: oh hm, maybe just one part/quit (ais523)
19:44:43 <elliott> Gregor: I like the copy of gcc-bf :P
19:44:49 <ais523> oerjan: I didn't part, I kicked myself
19:44:50 <elliott> oerjan: it was a kick
19:44:51 <ais523> and then rejoined
19:44:55 <oerjan> ah.
19:45:05 <Gregor> elliott: 's useful.
19:45:10 <ais523> I'd needed to unstealth, and then kicked myself as a simple way of stealthing again
19:45:12 <Gregor> Aha, kick.
19:45:15 <Gregor> I can add that.
19:45:17 <oerjan> Gregor: STILL, MISSING INFORMATION
19:45:31 <elliott> ais523: How come you never gave me a gcc-bf tarball :P
19:45:34 <elliott> Or did you, I might have just forgotten :)
19:45:47 <ais523> elliott: I think I did
19:45:54 <ais523> oh right, it was hosted on Vorpal's server, I think
19:45:57 <ais523> no idea if it still is
19:46:11 <CakeProphet> perhaps now is a good time to chug a Coke, Monster, and Starbucks doubleshot.
19:46:18 <CakeProphet> yes I think it is.
19:46:59 <CakeProphet> afterwards I will link pics of my heart exploding.
19:48:23 <pikhq> elliott: 12:36 < pikhq> Hmm. According to Unicode, conforming applications should accept the following as line terminators: U+000A U+000B U+000C U+000D (U+000D U+000A) U+0085 U+2028 U+2029.
19:48:52 <fizzie> Anyhow, Perl certainly makes the Unicode attempt not too shabbily -- http://perldoc.perl.org/perlunicode.html -- the "Effects of Character Semantics" pretty much lists what they do; sadly there isn't exactly a list of what they don't do. (But they explicitly say they're not claiming any Unicode standard compliance.)
19:48:57 <elliott> pikhq: Accept, not have automatically degraded for them
19:49:08 <ais523> fizzie: I've seen a comparison of Unicode support in programming languages; Perl won
19:50:24 <CakeProphet> ais523: the results of a comparison of /painless/ Unicode support would be quite different.
19:50:43 <elliott> Unicode support cannot be "painless" because it involves thinking
19:50:55 <monqy> think pain
19:50:59 <ais523> in character semantics, Perl's unicode support is pretty automatic
19:51:08 <ais523> you just have to realise that what you're writing is talking about characters, not bytes or codepoints
19:51:17 <fizzie> No, it's usually about codepoints.
19:51:19 <fizzie> Not characters.
19:51:30 <fizzie> "(The only time that Perl considers a sequence of individual code points as a single logical character is in the \X construct, already mentioned above. Therefore "character" in this discussion means a single Unicode code point.)"
19:51:30 <ais523> fizzie: in Perl, it's about characters
19:51:33 <ais523> IIRC
19:51:34 <oerjan> <elliott> ais523: if it's a function in a pure language, you can't, because all sorting algorithms are equivalent, modulo stability
19:51:38 <ais523> ah, just for \X? boring
19:51:38 <fizzie> The above is from perldoc perlunicode.
19:51:55 <oerjan> i recall toying around with passing broken comparing functions to haskell's sortBy :P
19:52:03 <CakeProphet> oerjan: me too.
19:52:12 <Gregor> oerjan: Fixt, regenerating.
19:52:25 <oerjan> that way i could see what was compared in what order
19:52:26 <elliott> Gregor: You never responded wrt transactional HackEgo :P
19:52:34 <Gregor> elliott: I have no response.
19:52:44 <fizzie> There's of course all kinds of modules, like Unicode::Normalize, which consider characters.
19:52:51 <Gregor> 17:17:12: -!- ais523 has kicked ais523 from #esoteric: there are actually quite a lot of ways to deop yourself, this is one of them
19:52:53 <elliott> Gregor: It was a question of the form "is this acceptable"
19:52:56 <oerjan> (under the assumption no pair is compared twice)
19:53:14 <Gregor> elliott: It's less than ideal, but if you put the work into making it, err, work, then I'll accept it :P
19:53:33 <elliott> Excellent
19:53:33 <elliott> `help
19:53:40 <fizzie> The way Unicode defines a "character" is rather non-trivial: http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries
19:53:41 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
19:53:43 <CakeProphet> monqy: `help
19:53:45 <monqy> hi
19:53:50 <elliott> Gregor: It's, uh, still written in bash, right? :P
19:53:55 <ais523> fizzie: clearly we need an esolang whose only purpose is doing Unicode completely correctly
19:54:01 <fizzie> (But at least it's still a relatively simple algorithm, as long as you have the database.)
19:54:06 <ais523> come to think of it, I guess Java probably can, but nobody has figured out how
19:54:16 <Gregor> elliott: Ayup
19:54:29 <elliott> Gregor: Do I... have to keep that? :P
19:54:40 <Gregor> elliott: Most languages other than Haskell are acceptable.
19:54:49 <elliott> What about... Haskell?
19:54:54 <elliott> Miranda? Gofer?
19:54:58 <elliott> O'Haskell?
19:55:03 <fizzie> Java has trouble even handling non-BMP stuff the way people usually use the java.lang.String API.
19:55:05 <monqy> dph
19:55:07 <elliott> Disciple?
19:55:13 <CakeProphet> elliott: perl
19:55:20 <monqy> or is dph not considered as distinct from haskell as those
19:55:34 <elliott> DPH is just a realtively simple language extension :P
19:55:46 <CakeProphet> elliott: BASIC
19:55:53 <Deewiant> GdH
19:55:58 <oerjan> cloud haskell
19:55:59 <elliott> Deewiant: God damn Haskell?
19:56:03 <CakeProphet> elliott: Fortran
19:56:06 <elliott> Gregor: How are these sounding???
19:56:07 <Deewiant> elliott: Glasgow Distributed Haskell
19:56:08 <monqy> coq agda epigram what else
19:56:14 <CakeProphet> elliott: Scala io
19:56:17 <CakeProphet> elliott: PLOF
19:56:22 <elliott> Deewiant: Wow, didn't realise that even existed.
19:56:23 <Deewiant> elliott: It's based on GHC 5.0 IIRC
19:56:26 <pikhq> elliott: How would you feel if I called it "newline normalisation"?
19:56:26 <oerjan> and clean, of course
19:56:28 <elliott> Deewiant: Nice.
19:56:35 <elliott> pikhq: Sure, just don't make it implicit
19:56:38 <pikhq> elliott: K
19:56:49 <elliott> pikhq: Why are you doing this anyway
19:57:03 <pikhq> elliott: I was just thinking it'd be a hell of a lot nicer than "Derp ^M\n"
19:57:25 <CakeProphet> good name.
19:57:50 <CakeProphet> pikhq: solution: destroy all non-unix operating systems
19:58:19 <elliott> Gregor: Why does HackEgo have DCC support...
19:58:23 <monqy> CakeProphet: rip @
19:58:25 <CakeProphet> pikhq: er, non-\n operating systems, rather.
19:58:31 <monqy> hgegeheheh
19:58:36 <monqy> how did g get in there
19:58:40 <monqy> keyboar.d.
19:58:44 <pikhq> CakeProphet: And then make the network newline convention \n instead of \r\n?
19:58:51 <Gregor> elliott: It ... doesn't?
19:58:52 <CakeProphet> pikhq: oh, yes, of course.
19:58:56 <monqy> I should switch to a nonquerty layout so my typos are more mysterious
19:58:58 <elliott> Gregor:
19:59:01 <elliott> 4 . lib/dcc
19:59:01 <elliott> 25 maybe_dcc_chat() {
19:59:01 -!- Phantom_Hoover has joined.
19:59:05 <CakeProphet> pikhq: YOU WILL SEE A DRAMATIC INCREASE OF DATA THROUGHPUT
19:59:09 <Gregor> elliott: It has some leftover unused files.
19:59:14 <CakeProphet> because you're not stupidly using TWO WHOLE BYTES for lines.
19:59:27 <elliott> Gregor: maybe_dcc_chat is an unused FUNCTION in a used FILE oh snapepe!!!!
19:59:31 <CakeProphet> pikhq: /dramatic/
20:00:32 <CakeProphet> pikhq: we just need some kind of software apocalypse
20:00:41 <CakeProphet> so that we can redefine all of the standards so that they're sane.
20:01:11 <CakeProphet> and people won't complain about their code breaking
20:01:18 <CakeProphet> because THERE IS NO CODE MUAHAHAHAHA.
20:02:30 <Phantom_Hoover> I never realised the Wolfram blog was so entertaining.
20:02:30 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
20:02:56 <CakeProphet> @tell lambdabot ur dumb
20:02:56 <lambdabot> Nice try ;)
20:02:58 <Phantom_Hoover> It's all like "Oh no we want to investigate this thing but we can't do the sums, GOOD THING WE HAVE MATHEMATICA".
20:03:23 <oerjan> hm...
20:03:28 <elliott> pola-nice "$@" |
20:03:29 <elliott> Gregor: ??????
20:03:32 <elliott> Gregor: Where's UMLBox???
20:03:36 <pikhq> CakeProphet: Unicode without round-trip! YES
20:03:49 <Gregor> elliott: pola-nice is just a command name, it's implemented in lib/interp
20:03:52 <elliott> Gregor: Oh, you call it "pola-nice" even though it's umlbox >_<
20:03:53 <Gregor> elliott: The name is just olde.
20:03:53 <oerjan> `echo oerjan: test
20:03:58 <elliott> Gregor: That should really be umlbox-nice :P
20:04:00 <HackEgo> oerjan: test
20:04:03 <Gregor> elliott: Waaaaaaaaaaaah
20:04:53 <CakeProphet> monqy: are you best porgrammeer now.
20:05:09 <oerjan> oh, it doesn't use that no-width space then
20:06:01 <elliott> Gregor: What the heck is UNDO...
20:06:10 <CakeProphet> Phantom_Hoover: mathematicians discover programming languages? shocking.
20:06:54 <CakeProphet> fortunately they used the only one that can do sums.
20:07:14 <elliott> Gregor: Oh... it's like atexit but weird
20:09:30 <elliott> umlbox-nice "$@" |
20:09:30 <elliott> head -c 16384 |
20:09:35 <elliott> I don't think Gregor realises how short IRC lines are :P
20:09:39 <elliott> Oops, spoiled my SECRET RENAME
20:09:53 <olsner> what's umlbox-nice?
20:10:00 <elliott> Like pola-nice but not STUPIDLY NAMED
20:10:01 <quintopia> its pola-nice
20:11:06 <olsner> let me rephrase then: what's pola-nice?
20:11:27 <elliott> nice
20:11:37 <olsner> like umlbox-nice but STUPIDLY NAMED?
20:11:41 <ais523> elliott: as in nice(1)?
20:12:14 <elliott> umlbox-nice() {
20:12:14 <elliott> nice -n10 /usr/bin/umlbox -n -B -f /opt -f /var/irclogs -f /etc/java-6-openjdk -R3128:127.0.0.1:3128 -T 30 -tw \
20:12:14 <elliott> /hackenv . -t /hackenv/.hg .hg -f "$ORIGDIR/lib" --cwd /hackenv env PATH="$UMLBOX_PATH" \
20:12:14 <elliott> HACKENV=/hackenv http_proxy="$http_proxy" "$ORIGDIR/lib/limits" "$@"
20:12:14 <elliott> }
20:12:15 <elliott> hth
20:13:17 <olsner> oh, nice
20:13:21 <ais523> hmm, Mastermind is pretty awesome right now; the host couldn't stop asking earlier
20:13:29 <ais523> during the questions
20:13:36 <ais523> I'm not sure if it's the actual program or a parody
20:13:41 <ais523> oh, Children in Need, that makes sense
20:14:02 <CakeProphet> what's an underloved data structure in computing?
20:14:16 <elliott> ais523: I wish I was the kind of person who could watch a parody without realising it :P
20:15:07 <fizzie> The Fibonacci heap gets no love, all heap-love goes to binary/binomial heaps.
20:15:35 <CakeProphet> fizzie: can I create an entire programming language around this data structure?
20:15:43 <olsner> there's a nice law about parodies and reality being notoriously difficult to tell apart
20:15:49 <fizzie> I don't know if it'd be a very interesting language.
20:15:50 <Phantom_Hoover> Poe's?
20:16:03 <olsner> Phantom_Hoover: sounds about right yeah
20:16:05 <fizzie> Also BLOOD FILTERS, they're like Bloom filters except you kill people. (Disclaimer: not true.)
20:16:17 <ais523> elliott: I don't think it was a parody; rather, someone had picked a plausible yet goofy specialist subject in order to trip up the host (the Transformers canon)
20:16:24 <ais523> and the audience weren't taking it seriously
20:16:27 <ais523> so nobody else could either
20:16:37 -!- someoneyouhate has quit (Ping timeout: 240 seconds).
20:16:54 <elliott> well, I mean, a not-an-actual-episode
20:17:45 <CakeProphet> fizzie: maybe if it's homoiconic. :)
20:18:08 <elliott> fizzie: You seem like the kind of person who knows about bash arrays.
20:18:26 <fizzie> elliott: I used them a little bit recently, but I can't say I'd *know* about them.
20:18:32 <ais523> elliott: I hadn't watched the whole thing
20:18:46 <elliott> Hmm, wait
20:19:04 <CakeProphet> elliott: what about bash arrays?
20:19:05 <elliott> Gregor: All HackEgo stuff is command-triggered, right
20:19:06 <olsner> I've used bash arrays once
20:19:20 <shachaf> elliott: Oh, man, bash arrays!
20:19:20 <elliott> Gregor: Does HackBot let me run any code in the background :P
20:19:24 <shachaf> Don't get me started about bash arrays.
20:19:25 * shachaf mad
20:19:29 <shachaf> Thanks for that.
20:19:51 <shachaf> Previously I not mad, and now I mad.
20:19:59 <oerjan> don't bash arrays
20:20:00 <elliott> shachaf: Yeah well, Gregor is a fascist and won't let me use Haskell.
20:20:12 <shachaf> Wait, what's the context?
20:20:20 <zzo38> Why do so many people think astrology gets the position of the Sun incorrect? That simply isn't true, and you can say a lot of valid things about astrology being wrong without having to say the position of the Sun is incorrect.
20:20:21 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
20:20:22 <fizzie> Bash arrays are this thing where you get several hammers and then use them to bash in several nails at the same time.
20:20:25 * shachaf doesn't feel like reading all this scrollback.
20:20:27 <zzo38> elliott: Won't let you to use Haskell for what purpose?
20:20:33 <elliott> HackEgo!
20:20:33 <zzo38> Use Haskell if you like to do so.
20:20:47 <shachaf> elliott: zzo38 has given you sage advice.
20:21:13 <zzo38> However it is true that you don't have to use Haskell for everything.
20:21:21 <oerjan> sage advice in good thyme
20:21:29 <elliott> shachaf: TECHNICALLY I could use Haskell but then Gregor wouldn't pull. :'(
20:21:40 -!- Sgeo|web has joined.
20:21:50 -!- sebbu has joined.
20:21:51 -!- sebbu has quit (Changing host).
20:21:51 -!- sebbu has joined.
20:21:53 <zzo38> What program are you trying to write?
20:21:59 <zzo38> Something for Gregor?
20:22:21 <elliott> I'm trying to make HackEgo's concurrency semantics not suck.
20:23:27 <CakeProphet> array = ( [2]=blah [50]=30 )
20:23:32 <CakeProphet> best syntax
20:25:21 <zzo38> oerjan: Do you mean a group having everything being their own inverse is called exponent 2 group?
20:25:32 <CakeProphet> s/ =/=(?#no wait this is the best syntax)/
20:25:45 <oerjan> zzo38: yes. because it's the same as every element having order 2.
20:25:58 <zzo38> O, OK.
20:26:00 <oerjan> (or 1)
20:27:30 <zzo38> In Haskell I used: minverse = id; (as a method of the Group class)
20:27:51 <CakeProphet> so apparently Steam was hacked.
20:28:16 <ais523> indeed
20:29:01 <zzo38> Does this make a monoid? mempty = Equivalence (==); mappend (Equivalence f) (Equivalence g) = Equivalence $ \x y -> (x == y) /= (f x y /= g x y); I think it is a monoid, due to the XOR law.
20:29:59 <zzo38> I think it is also an exponent 2 Abelian group.
20:30:03 <oerjan> hm well it needs to be a monoid just when restricted to particular x and y...
20:30:20 <oerjan> so yes, i think so.
20:30:44 <elliott> Hmm, wait.
20:30:55 <elliott> Gregor: I might not need a background process to do this, but it'd be more convenient :P
20:32:05 <oerjan> zzo38: all exponent 2 groups are abelian, btw
20:32:31 <zzo38> oerjan: O, yes, OK.
20:32:47 <Sgeo|web> CakeProphet: Did you see latest HS updates? If not, do a reaction video
20:33:04 <zzo38> It forms an exponent 2 group also due to the XOR law, I think.
20:33:12 <Sgeo|web> Past the [S] I mean
20:33:20 <CakeProphet> Sgeo|web: UGH WHY DO YOU ALWAYS ASK ME THIS SHIT
20:33:20 <CakeProphet> yes.
20:33:36 <Sgeo|web> Sorry
20:33:49 <oerjan> it was mentioned in the same godel's letter post, although there is some bug in the tex picture for the proof, i saw it myself and someone on reddit also did
20:33:57 <CakeProphet> Sgeo|web: no worries it was hyperbole.
20:34:01 <CakeProphet> you can tell because IT WAS LIKE THIS.
20:34:11 -!- someoneyouhate has joined.
20:34:22 <CakeProphet> someoneyouhate: hi.
20:34:35 * oerjan hits someoneyouhate with the saucepan ===\__/
20:34:48 <elliott> `@ someoneyouhate ? welcome
20:34:51 <HackEgo> someoneyouhate: 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
20:35:54 <oerjan> zzo38: it works for each pair of x,y because both XOR and EQV are group operations
20:37:09 <CakeProphet> oerjan: is there a group on groups?
20:37:15 <oerjan> so it's essentially an indexed product of such groups
20:37:39 <oerjan> CakeProphet: i dunno
20:39:26 <CakeProphet> well you could have an operation that forms a group from two groups by taking the product of the two sets and then essentially &&&ing the two operations.
20:39:29 <CakeProphet> I think?
20:40:17 <oerjan> with the group being (Bool, (==)) when x == y and (Bool, (/=)) when x /= y
20:40:55 <oerjan> CakeProphet: yes, that's called the direct product
20:41:12 <oerjan> but it has no corresponding inverse
20:41:42 <CakeProphet> ah
20:41:55 <elliott> oerjan: why is type-hackery so hard :(
20:42:08 <CakeProphet> elliott: because you're not doing it C++. :>
20:42:12 * CakeProphet is oerjan.
20:42:16 <oerjan> because obviously you can never get the trivial group (which is the identity) by combining anything else
20:42:48 <oerjan> (just from looking at the underlying sets)
20:43:06 <CakeProphet> oerjan: combining two trivial groups could just make a trivial group or something?
20:43:12 <CakeProphet> in other words: just hack it until there's an inverse. :P
20:43:30 <monqy> crys
20:43:53 <oerjan> CakeProphet: two trivial groups _do_ give a trivial group. but nothing else does.
20:44:16 <CakeProphet> how about x * trivial = trivial
20:44:23 <CakeProphet> and vice versa.
20:44:33 <oerjan> we already have x * trivial = x, that's what identity means
20:44:42 <CakeProphet> oh. maybe I should learn some group theory. :P
20:44:48 <monqy> yes you should
20:45:01 <CakeProphet> ah I see what you're saying.
20:45:04 <oerjan> incidentally i am doing the obvious identification of isomorphic groups here
20:45:50 <elliott> instance x `Elem` (x :- xs) where type instance (x :- xs) `Without` x = xs
20:45:52 <elliott> oerjan: :')
20:46:12 <elliott> ooh wait, don't need instance there
20:46:32 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
20:48:12 <monqy> good job haskelle
20:48:20 <elliott> {-# LANGUAGE TypeOperators, TypeFamilies, GADTs, MultiParamTypeClasses, FlexibleInstances #-}
20:48:22 <elliott> I'm back in my game oerjan
20:48:24 <elliott> back in my game
20:48:26 <elliott> no shame
20:48:29 <elliott> it's not lame
20:48:30 <elliott> uhhhhh
20:48:31 <elliott> fame
20:48:39 <CakeProphet> oerjan: maybe you just need some concept of negative groups. :)
20:48:48 <CakeProphet> where combining a group with a negative group uh.... removes things.
20:48:59 <CakeProphet> so that you can get a trivial group from two inverse groups.
20:49:35 <Vorpal> I managed to break the plot in Skyrim kind of.
20:49:35 <oerjan> CakeProphet: oh and i recall an argument why you cannot actually fix it by identifying things: if you take the product of (countably) infinitely many x's, then x * (x * x * ...) = (x * x * ...) meaning all x = identity if you have inverses for everything
20:50:51 <CakeProphet> elliott: you should stop programming immediately and start your hip hop career.
20:50:53 <Vorpal> basically: Apparently it didn't expect me to kill someone that basically said he would report something back to his employer.
20:51:09 <oerjan> it's like with numbers, once you have infinity, subtracting infinity from infinity gives you a paradox.
20:51:28 <oerjan> if you assume things should be always consistent
20:51:29 <fizzie> Vorpal: One of the silliest things in Oblivion was the way those NPCs with the "plot-important" flag set just simply plain wouldn't die.
20:51:56 <Vorpal> fizzie, I haven't spotted anything like that in skyrim so far. In oblivion you got that small icon above plot important ones
20:52:20 <Vorpal> fizzie, I have to say that it would probably have been impossible to complete oblivion without the plot-important flag thingy though
20:52:42 <fizzie> Vorpal: In Morrowind you just got the awesome notice: "With this character's death, the thread of prophecy is severed. Restore a saved game to restore the weave of fate, or persist in the doomed world you have created."
20:53:10 <Vorpal> btw don't run skyrim from an ssd, you will never be able to read the hints on the loading screens that way...
20:53:15 <Vorpal> I know I'm not
20:53:23 <Deewiant> Skyrim has that same property as Oblivion
20:53:24 <elliott> oerjan: *sigh*, I need type-level sets
20:53:28 <fizzie> I don't generally go for random murdering, but the one single time I did I got that.
20:53:30 <Deewiant> Some NPCs can't be killed
20:53:35 <Vorpal> Deewiant, ah. Well this one could
20:53:43 <oerjan> elliott: it's typrtles all the way up
20:53:49 <Deewiant> Yes, in Oblivion you could kill none of the peacefuls, I think?
20:53:52 <elliott> Deewiant: What do I do if I need type level sets, thx
20:53:58 <Deewiant> elliott: Cry
20:53:59 <CakeProphet> elliott: aren't instances kind of sort of like typelevel sets?
20:54:03 <elliott> Deewiant: Already done
20:54:21 <Deewiant> elliott: Go do something else
20:54:28 <CakeProphet> elliott: s/instances/typeclasses/
20:54:41 <elliott> Deewiant: Don't wanna, the only project left is @
20:55:03 <CakeProphet> elliott: write a better Haskell.
20:55:03 <Vorpal> <fizzie> I don't generally go for random murdering, but the one single time I did I got that. <-- I wasn't randomly murdering. If a rather nasty guy says he will report back to his employer, which I can tell will cause a lot of problems ahead, why would I /not/ try to kill him? There was no one else alive in that ruin than me and him and a lot of monsters at that time too...
20:55:06 <fizzie> Deewiant: I think it's not all peacefuls, just essential-for-the-main-quest; at least http://www.uesp.net/wiki/Oblivion:Essential_NPCs seems to suggest so, and that they become killable later if you're feeling bloodthirsty.
20:55:06 <Deewiant> Vorpal: This review of Skyrim I'm reading claims that you can't kill NPCs with children (and maybe not the children themselves either?) nor plot-important NPCs
20:55:20 <Vorpal> Deewiant, oh yeah I heard you can't kill children as well
20:55:24 <Vorpal> haven't tried
20:55:27 <elliott> Deewiant: Can't kill NPCs with kids? Laaaaaaaaaaaaaaaame
20:55:30 <Vorpal> no idea about parents
20:55:35 <fizzie> Children are amazingly resilient in video games.
20:55:39 <Vorpal> indeed
20:55:42 <Deewiant> Only in relatively new games
20:55:45 <Vorpal> heh
20:55:53 <elliott> Yeah but parents aren't!
20:55:54 <Vorpal> I'm sure there will be a mod to change that
20:55:55 <Deewiant> In Fallout 2 you could freely blow them to bits, for instance
20:55:59 <CakeProphet> in my game there will be newborn babies that you can kill.
20:56:02 <Deewiant> Not so in Fallout 3
20:56:03 <elliott> Deewiant: MY KIND OF GAME.
20:56:15 <Deewiant> elliott: They often pickpocketed your stuff so it was even justified
20:56:16 <CakeProphet> also: pregnant women
20:56:20 <Vorpal> Deewiant, could be a Bethesda thing then? After all Fallout 3 is Bethesda
20:56:23 <fizzie> Deewiant: In Fallout 2 there was even a reputation title thing if you did it.
20:56:23 <CakeProphet> everyone can die.
20:56:26 <elliott> Deewiant: I like your idea of justice
20:57:05 <Deewiant> Vorpal: I think it's more of a "games are more mainstream now so the 'think of the children' people are onto us" thing
20:57:11 <Phantom_Hoover> Deewiant, weren't you able to give them grenades or something?
20:57:16 <Phantom_Hoover> And thus blow them up?
20:57:28 <elliott> Deewiant: Oh wait, what I actually need is a ~/~ constraint!
20:57:31 <elliott> Ha ha ha ha ha ha ha
20:57:33 <fizzie> Deewiant: http://images2.wikia.nocookie.net/__cb20100226092112/fallout/images/a/ab/Childkiller_Unused.jpg "This image was unused and the only Vault Boy image to ever be cut from Fallout 2. (I'm sure you can figure out why) I remember when I got the request to do a perk illustration for "Child Killer" that there would be no way to keep in from being offensive. I mean really! How do you make an illustration of "child killer" and keep it from being offensive? Any
20:57:33 <fizzie> way for some reason, I thought this was the least offensive way to do it. I have no idea what I was thinking. Even the designer who requested it realized it was a bad idea, so we fixed it. Looking back on it now, I can't believe I drew this."
20:57:39 <Deewiant> Phantom_Hoover: In Fallout 2? Yes, that's one way
20:57:54 <elliott> fizzie: :-D
20:58:12 <CakeProphet> fizzie: bahahahahahaha
20:58:15 <CakeProphet> best picture.
20:58:21 * CakeProphet sets this as his profile pic on Facebook.
20:58:43 <fizzie> Then they just went with a thoroughly rusty^Wlame http://images3.wikia.nocookie.net/__cb20050211175524/fallout/images/e/e3/Childkiller.jpg
21:02:36 <fizzie> I like it how the Unofficial Oblivion Patch contains "over 2200" bugfixes beyond the final official patch. It sure is a big game.
21:02:50 <Vorpal> okay that was disappointing, the equivalent quest line to oblivions "become arch mage" was quite a bit shorter in skyrim
21:02:51 <Vorpal> :/
21:03:58 <Phantom_Hoover> "<Cocytus> http://www.esotericphilosopher.com/about/ you're welcome back anytime. as the page states, it doesn't matter what your profession is or what your academic expertise is, a mentality is transcendent. the philosopher of man mentality."
21:04:09 <Phantom_Hoover> Wait, holy crap, he's that guy!
21:04:19 <Phantom_Hoover> (This is from an msg.)
21:06:34 <elliott> He said that to me too; thought I was special. :(
21:06:36 <elliott> Couldn't match type `Or
21:06:36 <elliott> (Equ [Char] [Char]) (Or (Equ [Char] Int) No)'
21:06:36 <elliott> with `Yes'
21:06:36 <elliott> Expected type: Yes
21:06:37 <elliott> oerjan: :(
21:07:06 <Phantom_Hoover> elliott, so wait, do we both become philosophers of mans?
21:08:38 <elliott> oerjan: Holy shit, it WORKS.
21:08:39 * oerjan sidles away from the type madness
21:08:47 <oerjan> ooh
21:09:25 <elliott> oerjan: http://sprunge.us/CABe
21:09:45 <elliott> FullList (set denoted by separating each element by :- and terminating with ()) is a list containing one, and exactly one, value of each type
21:09:59 <elliott> in arbitrary order
21:10:12 <elliott> well
21:10:15 <elliott> any type that's A, B, or C :)
21:10:34 <elliott> Equ needs one more type parameter, standing in for a kind
21:10:35 <elliott> so you'd do
21:10:36 <elliott> data ABC
21:10:41 <elliott> and prepend ABC to all the Equ lines
21:10:49 <elliott> and it'd be FullList ABC (...) instead
21:10:58 <elliott> and then it would be general
21:11:11 -!- augur has quit (Remote host closed the connection).
21:11:19 <elliott> actually
21:11:27 <elliott> you could just use the (A :- B :- ()) as the first parameter to Equ
21:11:28 <elliott> and derive it
21:11:30 <elliott> with TH
21:12:05 <elliott> now oerjan gets to ask me wtf I'm doing :P
21:14:37 * oerjan keeps sidling away
21:15:28 <elliott> oerjan: no you don't understand, i did this to solve an actual practical problem :( im becoming afraid of myself
21:17:38 <elliott> hey oerjan what do you call the addsquaretorial, f(0) = 0, f(n) = n^2 + f(n-1)
21:18:53 <elliott> oerjan: oh it's 1/6 n (n+1) (2n+1)
21:18:55 <elliott> how... how obvious
21:19:24 <elliott> @oeis 1, 5, 14, 30, 55, 91
21:19:25 <Vorpal> fizzie, Deewiant: there seem to be no custom spell making in Skyrim. I really liked that feature of oblivion
21:19:26 <lambdabot> Square pyramidal numbers: 0^2 + 1^2 + 2^2 +...+ n^2 = n*(n+1)*(2*n+1)/6.
21:19:26 <lambdabot> [0,1,5,14,30,55,91,140,204,285,385,506,650,819,1015,1240,1496,1785,2109,2470...
21:19:26 <Vorpal> :(
21:19:58 <Phantom_Hoover> Squyramidal numbers.
21:20:43 <Deewiant> fizzie: s/useless-fungot/fungot/
21:21:12 <oerjan> elliott: well it's obvious if you know difference calculus
21:21:19 <elliott> Deewiant: No I love him. so much.
21:21:21 -!- fungot has joined.
21:21:27 <oerjan> which we've discussed here several times
21:21:33 -!- useless-fungot has quit (Remote host closed the connection).
21:21:34 <elliott> oerjan: not saying it's non-obvious
21:21:36 <elliott> well, I suppose I did
21:21:42 <elliott> I'm just saying I expected something prettier :P
21:22:25 <oerjan> the pretty ones are when you use binomial functions
21:22:32 <elliott> ok, so this particular method only scales up to about 9 fields, whereas the more involved one can handle about 15
21:23:33 -!- Sgeo|web has quit (Quit: Page closed).
21:23:53 -!- boily has quit (Quit: WeeChat 0.3.6).
21:24:14 <elliott> oerjan: anyway, I really wish this was easier :-(
21:24:19 * elliott continues to wait for oerjan to ask wtf he's doing :P
21:24:46 <olsner> elliott: what are you doing?
21:25:20 <elliott> olsner: have you seen the code?
21:25:45 * oerjan continues to sidle away
21:26:06 <elliott> oerjan I HATE YOU JUST ASK ALREADY
21:26:37 -!- CakeProphet has changed nick to oerjanDrone1.
21:26:41 <oerjanDrone1> elliott: what are you doing?
21:26:45 -!- oerjanDrone1 has changed nick to Kallisti.
21:26:49 <elliott> YOU ARE NOT OERJAN
21:26:49 -!- Kallisti has changed nick to CakeProphet.
21:26:57 <CakeProphet> elliott: GAH! HOW DID YOU KNOW??
21:27:01 <oerjan> yeah i wouldn't censor wtf
21:27:16 <elliott> oerjan: ASK ALREADY YOU ABOMINABLE PERSON
21:27:18 <CakeProphet> not intentionally censored.
21:27:22 <oerjan> that's like, two censoring levels
21:30:58 <Vorpal> fizzie, Deewiant: other skyrim info: For alchemy you discover effects of ingredients by experimenting basically it seems. (In oblivion I believe it was based on your alchemy skill?)
21:31:40 <Deewiant> I have practically zero memory of Oblivion so I don't really care about the differences
21:32:19 <monqy> oh hey that pegasus guy made another language
21:32:35 <monqy> at least since last i've seen
21:33:44 <elliott> oerjan: Ask ask ask.
21:33:45 <Vorpal> Deewiant, oh okay
21:35:19 <oerjan> wtf are you*NO CARRIER
21:35:42 <elliott> oerjan: I WILL COME TO TRONDHEIM AND END YOUR EXISTENCE
21:35:53 <oerjan> sweet sweet oblivion
21:36:15 <elliott> oerjan: don't you mean skyrim :DDDDDDdddddddd
21:38:27 <oerjan> no skyrim wtf are you talking about
21:39:08 <elliott> Deewiant: explain the joke thankxse
21:39:28 -!- copumpkin has changed nick to RadicalFeminist.
21:39:52 <oerjan> yeah i need explanation i've been living in this cave you see..
21:40:11 <zzo38> I used this for uniform probability distributions: uniform x = WriterT $ (flip (,) $ mpnormfunc (mempty <$ x) mempty) <$> x;
21:40:34 <elliott> oerjan: indeed
21:40:39 <elliott> oerjan: wait wait wait youa sked me wtf am i talking about :DDD
21:40:39 <elliott> yesss
21:40:41 <elliott> n ow i can tell you
21:40:45 <oerjan> curses
21:41:02 <elliott> oerjan: ok so you know like
21:41:06 <elliott> Foo <$> a <*> b <*> c
21:41:27 <elliott> the problem with that is that for record types, that gets (a) really long and (b) unreadable (since the field names aren't there)
21:41:31 <zzo38> I could make probability distributions without even needing numbers or division or something like that
21:41:32 <elliott> so
21:41:38 <elliott> oerjan: you could do
21:41:48 <zzo38> Therefore, it is a "generalized probability distribution".
21:42:08 <elliott> oerjan: data Foo = Foo {fooA :: Int; fooB :: String; fooC :: Double}; data Foo' f = Foo' {fooA' :: f Int; fooB' :: f String; fooC' :: f Double}
21:42:12 <monqy> im guesseing idom brackets dcant do reccord typse
21:42:29 <elliott> oerjan: and then do like: runFoo' $ Foo' {fooA' = a; fooB' = b; fooC' = c}
21:42:36 <elliott> runFoo' :: Foo' f -> f Foo
21:42:44 <elliott> oerjan: BUT THE PROBLEM IS: what if you want to run b before a?
21:43:32 <oerjan> fiendish.
21:43:33 <elliott> oerjan: you could do lenses, and then have: data Assign t = forall v. Lens t v := v; mkFoo :: [Assign Foo] -> Foo
21:43:44 <elliott> erm
21:43:55 <elliott> oerjan: you could do lenses, and then have: data Assign f t = forall v. Lens t v := f v; mkFoo :: (Applicative f) => [Assign f Foo] -> f Foo
21:44:00 <elliott> oerjan: mkFoo [fooA := a, fooB := b, fooC := c]
21:44:06 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:44:07 <elliott> oerjan: but then the problem is, you can just leave off a field and not even get a warning
21:44:12 <elliott> or duplicate a field
21:44:15 <elliott> and that kind of sucks!!
21:44:28 <monqy> suckest
21:44:29 <elliott> oerjan: but with /this/, you can use a FullList (Assign f Foo)
21:44:35 <elliott> erm
21:44:36 <elliott> or rather
21:44:44 <monqy> have you venbtured into the dark worlds of templates hskell yet
21:44:49 <monqy> for sokving this
21:44:50 <monqy> problem
21:44:51 <monqy> i mean
21:44:55 <elliott> oerjan: but with /this/, you can use a FullList ((FieldA := f Int) :- (FieldB := f String) :- (FieldC := f Double) :- ())
21:44:55 <monqy> (Specifically that)
21:45:04 <elliott> oerjan: with data FieldA, FieldB, FieldC
21:45:19 <elliott> oerjan: and it all works out!
21:45:32 <elliott> assuming you define the equality to compare on the field name only etc. etc. etc.
21:45:48 <elliott> oerjan: this is kind of ugly though :( any bright ideas???????
21:45:56 -!- RadicalFeminist has changed nick to copumpkin.
21:46:20 <monqy> how ugly does it compare with th uglies
21:46:26 <elliott> monqy: how would you solve this with th
21:46:26 <monqy> or could they ugly team up together
21:46:42 <monqy> quasiquoters probably
21:46:46 <zzo38> Try using TH. It might help too
21:46:57 <zzo38> I would do it without quasiquoters, though.
21:47:25 <monqy> that works too, if it works
21:47:53 <ais523> elliott: gah, I started running a non-idempotent and hard-to-reverse script misconfigured
21:48:05 <ais523> noticed, tried to kill the process in a panic, killed the wrong process
21:48:11 <oerjan> tricky stuff
21:48:13 -!- Phantom_Hoover has joined.
21:48:13 <zzo38> However it would be a bit difficult due to strong typing in TH quotations. There is a proposal that makes two types of quotations, strong and weak; so you can use a weak one and then make the result strongly typed instead.
21:48:16 <Phantom_Hoover> Oh my god I saw that Transformers guy on Mastermind it was hilarious.
21:48:23 <ais523> luckily, it turned out it was almost configured correctly
21:48:34 <elliott> oerjan: :'( you unhelpful
21:48:38 <ais523> and in particular, the error it's made is deterministic so I can fix it after the fact
21:48:46 <Phantom_Hoover> Doing it with Homestuck would be funnier still, but I doubt it'd be allowed.
21:48:51 <oerjan> elliott: well i don't even know th
21:49:13 <elliott> oerjan: i don't want to use th here and i don't think th will help
21:50:51 <Vorpal> fizzie: new twist on dark brotherhood: it seems you can become hunted by them...
21:50:54 <zzo38> Then don't use TH if you don't like it.
21:51:35 -!- FireFly has quit (Changing host).
21:51:35 -!- FireFly has joined.
21:51:42 <elliott> oerjan: http://sprunge.us/gCji
21:51:58 <monqy> nice
21:53:25 <oerjan> elliott: something tells me that even if you make it work, the type errors for missing fields are going to make people want to kill you.
21:53:48 <elliott> oerjan: thankfully that type error is much worse than it will be in reality
21:53:57 <elliott> all the duplications of ((A := Int) :- ((B := String) :- ((C := Double) :- ()))) will just look like ABC
21:54:00 <elliott> in actual use
21:54:36 <oerjan> o kay
21:54:44 <elliott> oerjan: hey, if you have any better ideas...
21:57:11 <elliott> oerjan:
21:57:14 <elliott> Couldn't match type `Assign C :- ()' with `()'
21:57:14 <elliott> Expected type: FullList
21:57:14 <elliott> ABC (Without ABC (Assign B) (Assign B :- (Assign C :- ())))
21:57:14 <elliott> Actual type: FullList ABC ()
21:57:14 <elliott> In the second argument of `(:-)', namely `Done'
21:57:14 <elliott> In the second argument of `(:-)', namely `(B := "hello") :- Done'
21:57:19 <elliott> that's what it looks like when you omit the C field at the end
21:57:29 <elliott> the "couldn't match type" line gives the full error
21:58:44 <elliott> oerjan: meanwhile: sigh, why isn't there an infix -1
22:00:30 -!- hagb4rd has quit (Ping timeout: 240 seconds).
22:00:51 <oerjan> because once you want more than 0..9 you're going to start thinking of a better system than numbers
22:01:06 -!- wareya has joined.
22:01:13 <elliott> note to self: http://sprunge.us/hdWe
22:01:24 <elliott> oerjan: I know, I know, I just want to be able to use $ in my pseudo-literals :P
22:03:04 <zzo38> I think even like that, TH can help to make up the type instances and that kind of stuff
22:03:54 -!- Sgeo|web has joined.
22:04:47 <elliott> zzo38: yeah, that was my plan
22:04:52 <elliott> but I don't think it helps make a /nicer/ solution than this
22:04:55 <elliott> just makes using this slightly less painful
22:06:17 -!- Ngevd has joined.
22:06:18 <elliott> monqy: what would you do in my situation :'(
22:06:22 <oerjan> :t undefined { runIdentity = undefined } { runIdentity = undefined }
22:06:23 <lambdabot> forall a. Identity a
22:06:31 <monqy> what exactly IS your situatioateon
22:06:54 <monqy> (exACTLY)
22:07:13 <elliott> monqy: i mexplained it above :'(
22:07:28 <monqy> :(
22:07:35 <monqy> i'll
22:07:37 <monqy> look againe
22:08:00 <elliott> monqy: from <elliott> oerjan: ok so you know like
22:08:02 <elliott> to <elliott> oerjan: this is kind of ugly though :( any bright ideas???????
22:08:16 <elliott> (i managed to clean it up from that slightly but yeah)
22:11:43 <elliott> no freenode scum
22:11:44 <elliott> no
22:11:44 <Deewiant> 2011-11-12 00:11:12 [freenode] -RichiH(~richih@freenode/staff/richih)- [Global Notice] Hi all. We wish you a very verily merry merrily 11:11:11 11.11.11-11!
22:11:47 <elliott> you awful
22:11:47 <Deewiant> CLOSE ENOUGH
22:11:48 <elliott> people
22:12:03 <elliott> Deewiant: oh wait for a second I thought it was 11pm
22:12:05 <elliott> not 10pm
22:12:08 <elliott> and they were using 12 hour clock
22:12:08 <elliott> and
22:12:09 <elliott> I wanted to
22:12:11 <elliott> punch them
22:12:13 <elliott> until they stopped existing
22:12:30 <monqy> you cut off a good part
22:12:33 <Deewiant> Oh, the -11 is a time zone
22:12:37 <monqy> Crank it up to eleven and here's to hoping the world will not end in 2012; as always, thanks for flying freenode air!
22:12:39 <Deewiant> That might make sense
22:12:42 <elliott> Deewiant: thats even worse
22:12:44 <elliott> i want to
22:12:46 <elliott> kill people :(
22:12:57 <elliott> wait Deewiant is on UTC???
22:12:59 <elliott> but
22:13:00 <elliott> him
22:13:01 <elliott> fniland
22:13:10 <Deewiant> This is +2
22:13:13 <elliott> ok..........
22:13:15 <elliott> oh
22:13:15 <elliott> 12
22:13:16 <elliott> not 10
22:13:16 <elliott> is how
22:13:18 <elliott> clocks go
22:13:18 <elliott> ok
22:15:47 <monqy> anyway the way i would have done it with th would be something like the the (field id, f valiue) -> f wahtever except with compiles time checking in th that there are no missing or duplicated felds. of course this is probably just as bad as type system hakcery, and type system hackery is certainly cooler.....
22:16:11 <elliott> monqy: that would be uglieir :(
22:16:16 <monqy> yeah...
22:16:29 <monqy> i will try to think of
22:16:31 <monqy> how to help with
22:16:33 <monqy> type system
22:16:34 <monqy> ruining
22:17:35 <Ngevd> *YAWN*
22:17:40 <elliott> monqy: there's a part of me at this point that just wants to say
22:17:41 <monqy> hi
22:17:46 <elliott> monqy: [Assign Foo]
22:17:47 <elliott> and
22:17:48 <elliott> leave it at that
22:17:53 <monqy> noo :(
22:17:54 <elliott> but i would never forgive myself
22:18:02 <Ngevd> My lack of pop-culture knowledge has failed me again...
22:18:12 <monqy> [Assign Foo] and leave it at that is ... awufl
22:18:40 <elliott> monqy: is this non-awful
22:18:49 <monqy> lesss awful....
22:18:53 <monqy> because its type checkeD??
22:19:21 <monqy> possibility of runtime errors makes me
22:19:22 <monqy> really sad
22:19:25 <monqy> possiblyt
22:19:26 <monqy> too sad
22:19:31 <monqy> but
22:19:47 <monqy> how to unsad cleanly ;_;
22:20:15 <oerjan> marquis de sad
22:20:34 <monqy> can't find anything about records in she's idiom brackets page
22:20:36 <monqy> ;_;
22:21:52 <elliott> monqy: like I said, that would _not_ help
22:22:02 <elliott> monqy: it's trivial to make a record with each field wrapped in f
22:22:02 <monqy> i did not see that said
22:22:07 <elliott> monqy: I showed that above
22:22:11 <elliott> the problem is controlling the /ordering/
22:22:21 <elliott> with idiom brackets you can just do like ~(flip (+)) to flip the evaluation order, even if that is ugly
22:22:26 <elliott> but you can't "flip" a record literal...
22:22:34 <ais523> whew, finished work for the day, and now I'm too tired to play NetHack
22:22:37 <ais523> help what should I do instead
22:22:38 <elliott> unless you mean it'd depend on the order you specified in the fields in
22:22:42 <elliott> in which case let me be the first to say, ewwwwwwwww
22:22:43 <monqy> yes that was my hope
22:22:46 <elliott> ais523: fail to play nethack
22:22:47 <ais523> (don't mention Feather, I'm too tired for that too)
22:22:52 <elliott> monqy: well ok it's not THAT bad but...
22:22:54 <monqy> it's ugly but....is it uglier than what you have??
22:22:56 <elliott> not sure i want to use a preprocessor
22:24:54 <oerjan> set {field1 = as value1} </\= set {field2 = as value2}
22:25:12 <Ngevd> This would probably be quicker if I started from scratch and just implemented Dijkstra's algorithm in Haskell
22:25:15 <monqy> did your cleaning up clean up Equ, becaues Equ is real gross...
22:25:21 <elliott> oerjan: wut
22:25:29 <oerjan> hm actually
22:25:29 <elliott> monqy: that would be TH-generated
22:25:34 <monqy> oh, good..
22:25:45 <oerjan> chain =/\> set {field1 = as value1} </\= set {field2 = as value2}
22:25:54 <monqy> same with the rest??
22:26:10 <oerjan> where field1 are your wrapped versions...
22:26:14 <monqy> above the last -- i mean
22:27:31 <oerjan> hm that wouldn't be typesafe though...
22:27:53 <monqy> what language is this...
22:28:50 <Ngevd> No wait, I don't want Dijkstra
22:29:02 -!- augur has joined.
22:29:11 <elliott> oerjan: additionally, you'd get an "undefined record field lol" for each set...
22:29:32 <elliott> oerjan: but I can't tell what you are trying to do with just some code without even type signatures.
22:30:21 <oerjan> elliott: well set would be a value of type Foo' something
22:30:36 <elliott> more interested in chain and set and as's types
22:31:02 <Phantom_Hoover> Hmm, I've realised an even more ridiculous thing about the Apollo computers.
22:31:42 <Phantom_Hoover> A navigational computer small enough to fit on a spacecraft was built *less than fifteen years after the first silicon transistor was invented*.
22:31:43 <oerjan> hm actually =/\> and </\= don't need to be different, i think
22:33:21 <oerjan> set is a predefined record which has dummy values for each Foo' field
22:34:17 <oerjan> chain is a dummy setter that does nothing. =/\> combines a setter with another modification
22:34:32 <oerjan> the setter being something monadic that preserves order
22:35:02 <oerjan> i don't know how to make it typesafe to check if all fields are set, though
22:35:14 <elliott> oerjan: right. well that's just my [Assign Foo] situation, but ugly :P
22:35:26 <elliott> mkFoo [field1 := value1, field2 := value2]
22:35:42 -!- derrik has quit (Quit: i disappear).
22:36:05 <Ngevd> Is there a recommended way in Haskell to do Dijkstra's algorithm on a procedurally generated graph?
22:36:12 <Ngevd> Do I have any idea what I'm saying
22:36:18 <oerjan> well ideally set {field1 = as value1} should have some type that involved field1 being set, but that's going to be awkward
22:36:55 <elliott> Ngevd: you may just want to use http://hackage.haskell.org/package/astar
22:36:56 <oerjan> maybe something higher rank
22:36:56 <elliott> ?
22:37:18 <elliott> oerjan: oh you mean so you can't set multiple times?
22:37:24 <elliott> well record updates cannot change types, full stop.
22:37:53 <oerjan> true, but set might be polymorphic
22:38:47 <elliott> oerjan: idgi
22:39:00 <oerjan> but the scaffolding to make this actually put the fields in types is probably going to be worse than your solution :P
22:39:36 <elliott> oerjan: the boilerplate can be autogenerated by TH
22:40:36 <oerjan> elliott: well say Foo' takes type arguments that tell the type of each field, and the right argument of =/\> is required to have exactly one of them not being (), or something
22:41:10 <oerjan> and that one should be () in something corresponding in the left argument
22:41:24 <oerjan> which means =/\> must be a method, i guess
22:41:47 <elliott> oerjan: that would still change the type
22:41:49 <elliott> set :: Polymorphic
22:41:53 <elliott> set{...} :: NotPolymorphic
22:41:54 <elliott> not possible
22:42:21 <oerjan> um of course that is possible, polymorphic values are restricted all the time in haskell :P
22:42:57 <oerjan> set would have polymorphic type Foo' f a1 a2 a3
22:43:28 <elliott> oerjan: try it yourself if you don't believe me.
22:44:45 <elliott> hmm, wtf
22:44:49 <elliott> oerjan: it works, that must have changed
22:45:26 <oerjan> :t let x = Identity undefined in (x {runIdentity = True}, x {runIdentity = LT})
22:45:27 <lambdabot> (Identity Bool, Identity Ordering)
22:46:22 <oerjan> elliott: well of course the restriction might happen _before_ the modification
22:46:32 <elliott> oh hmm right
22:54:31 <zzo38> What are a tropical semiring, possibilistic semiring, bottleneck semiring, truncation semiring, Lukasiewicz semiring, division semiring, formal languages semiring, etc?
22:55:28 <elliott> oerjan: a job for you!
22:56:08 <oerjan> yay
22:56:19 <oerjan> clearly the answer is: no idea
22:56:35 <oerjan> well, i've got a _slight_ hunch some of those might be semirings.
22:56:48 <elliott> but only some of them.
22:57:33 <oerjan> we wouldn't want to leap to conclusions.
22:57:41 <zzo38> I know they are semirings (I found them in a list of semirings) but I don't know the details of them.
22:57:41 <oerjan> might fall and break something.
23:00:52 <CakeProphet> elliott: read the new new updates?
23:01:06 <CakeProphet> Sgeo|web: HEY SGEO HAVE YOU READ THE NEW HOMESTUCK UPDATES
23:01:11 <CakeProphet> @tell Sgeo|web did you read them????
23:01:11 <lambdabot> Consider it noted.
23:01:23 <elliott> It's @ask.
23:01:34 <shachaf> @tell elliott Is it?
23:01:34 <lambdabot> Consider it noted.
23:01:44 <CakeProphet> @ask elliott what is @ask?
23:01:44 <lambdabot> Consider it noted.
23:01:53 <CakeProphet> oh look, the same thing.
23:02:03 <elliott> <lambdabot> shachaf said 25s ago: Is it?
23:02:03 <elliott> <lambdabot> CakeProphet asked 15s ago: what is @ask?
23:02:04 <shachaf> @ask elliott I don't remember how it treats them differently, though I do remember that it does.
23:02:04 <lambdabot> Consider it noted.
23:02:05 <Sgeo|web> Mauybe
23:02:05 <lambdabot> Sgeo|web: You have 1 new message. '/msg lambdabot @messages' to read it.
23:02:10 <elliott> Note the part where CakeProphet is an idiot!
23:02:10 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
23:02:11 <shachaf> Oh.
23:02:27 <CakeProphet> elliott: man that is so different.
23:02:37 <CakeProphet> it is just being different with differency.
23:02:42 <elliott> "said"
23:02:42 <elliott> "asked"
23:02:47 * CakeProphet can read.
23:02:49 <elliott> Looks different to me also Gregor answer my question already.
23:03:39 <oerjan> @list ask
23:03:39 <lambdabot> tell provides: tell ask messages messages? clear-messages
23:03:54 <oerjan> clearly far too few options
23:05:22 <ais523> @messages?
23:05:22 <lambdabot> Sorry, no messages today.
23:05:41 <CakeProphet> elliott: so anyway did you read it?
23:05:48 <CakeProphet> notice anything odd?
23:06:20 <elliott> I don't know what you're talking about. I don't speak English.
23:07:17 <CakeProphet> notice it.
23:08:04 <CakeProphet> why is there a vine going up that staircase?
23:08:06 <CakeProphet> what's up with that?
23:08:18 <CakeProphet> </MAJORSPOILERS>
23:09:07 <CakeProphet> oh, I bet it's part of some real life MYSTIC RUINS that he desecrates frequently.
23:09:24 <Ngevd> AAAH!
23:09:30 <Ngevd> Updates nobody told me about!
23:10:15 <monqy> homestuck eh
23:11:20 <elliott> monqy: no there was an update to.....esoteric
23:11:33 <monqy> oh
23:11:36 <monqy> was it
23:11:46 <monqy> libertas
23:12:13 <monqy> because
23:12:16 <monqy> i don't like libertas
23:12:18 <monqy> bad update
23:12:51 <elliott> no it was update to
23:12:53 <elliott> the word esoteric itself
23:12:56 <monqy> oh
23:12:57 <monqy> what does it
23:12:58 <monqy> mean
23:12:58 <monqy> now
23:13:01 <monqy> what
23:13:02 <monqy> happened
23:13:16 <elliott> nobody knows
23:13:19 <monqy> :o
23:15:01 <elliott> monqy: oH no i just thought of...........................another problem with..........m,y system
23:15:16 <monqy> oh no
23:15:20 <monqy> is it a
23:15:21 <monqy> big
23:15:22 <monqy> problem
23:15:22 <monqy> a
23:15:23 <monqy> bad
23:15:26 <monqy> problem
23:15:43 <monqy> worst problem? not that bad? oh no
23:17:03 <elliott> monqy:
23:17:04 <elliott> mkFoo
23:17:04 <elliott> ( A := return 42
23:17:04 <elliott> :- B := mkBar
23:17:06 <elliott> ( X := getLine
23:17:08 <elliott> :- Y := getLine
23:17:10 <elliott> :- Done )
23:17:12 <elliott> :- C := getLine
23:17:14 <elliott> :- Done )
23:17:30 <monqy> oh no??
23:17:32 <elliott> monqy: what if you want the getLine order to be
23:17:35 <elliott> B.Y, C, B.X
23:17:40 <elliott> how can you rearrange it to do that
23:17:40 <monqy> h,,,,,,,,,m
23:17:42 <elliott> hint: you can't
23:17:47 <elliott> it only offers ordering within one mkBlah
23:17:48 <monqy> ogh no
23:18:20 <elliott> oerjan: :'(
23:18:27 <elliott> lets us weep
23:18:30 <elliott> pls
23:18:37 <oerjan> poor elliott, once again destroyed by his own perfectionism.
23:18:48 <monqy> i can only imagine fixing it typesafely to be positiviely hideous in haskelle.
23:19:08 <elliott> oerjan: what has this got to do with perfectionism
23:19:47 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds).
23:20:13 -!- Madoka-Kaname has joined.
23:20:14 -!- Madoka-Kaname has quit (Changing host).
23:20:14 -!- Madoka-Kaname has joined.
23:20:39 <oerjan> well, ask a fish what water has to do with swimming
23:20:46 <oerjan> (aum)
23:20:58 <elliott> oerjan: except that this ordering problem is an actual problem I have.
23:21:00 <oerjan> and it will tell you: BLUB
23:21:17 <elliott> and none of the less-safe solutions fix it, either
23:24:32 <Sgeo|web> > fix $ const "elliott's ordering problem"
23:24:32 <lambdabot> "elliott's ordering problem"
23:25:04 <Phantom_Hoover> Argh, I just stupidly looked at the Discworld wiki.
23:25:13 <Phantom_Hoover> The character sketches are unbelievably awful.
23:26:12 <Phantom_Hoover> Like, I don't think these people have actually looked at Kidby's illustrations or, in some cases, Pratchett's descriptions.
23:26:52 <Phantom_Hoover> oh
23:26:52 <Ngevd> Didn't realise you were a Pratchett fan
23:26:53 <Phantom_Hoover> oh
23:26:56 <Phantom_Hoover> OH DEAR GOD
23:26:59 <Phantom_Hoover> HOAJGOPIAESHRGS
23:27:06 <Phantom_Hoover> TV TROPES RENAMED "THE WESLEY"
23:27:09 <monqy> hoajgopiaeshrgs
23:27:18 <Ngevd> To what?
23:27:20 <monqy> `wacro
23:27:22 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wacro: not found
23:27:24 <monqy> !wacro
23:27:27 <Phantom_Hoover> "Creator's pet."
23:27:42 <monqy> wacro...
23:28:03 <Phantom_Hoover> wacro doesn't love you any more.
23:29:55 <elliott> monqy: oh HMmmmmmmmm
23:30:00 <elliott> monqy: i think i could do this.... nomadiclaly
23:30:02 <oerjan> !echo now what
23:30:04 <EgoBot> now what
23:30:10 <monqy> :o
23:30:37 <Phantom_Hoover> !wacro
23:30:40 <elliott> monqy: except not proper monad
23:31:40 <monqy> :o
23:32:06 <elliott> monqy: oh!! it is monoid almost.
23:32:10 <monqy> :o
23:32:16 <monqy> almosT?? what are you DOING
23:33:26 <elliott> monqy: assign :: (FieldOf t field) => field -> f (FieldType field) -> Assign f t (field :- xs); (>>+) :: Assign f t fields -> Assign f t (field :- fields) -> Assign f t (field :- fields); run :: (Complete t fields) => Assign f t fields -> f t
23:33:35 <elliott> Complete t fields if true iff fields contains all fields of f
23:33:47 <elliott> feifeiflds here can be full lenses
23:33:53 <elliott> i think
23:34:01 <elliott> so you can compose them to assign submembers in different order
23:34:06 <elliott> except hmm i need infrastructure for that
23:34:12 <elliott> but
23:34:15 <elliott> that's the BASIC idea!!!
23:34:18 <elliott> and it will be less awful than all of this
23:35:06 -!- sebbu2 has joined.
23:35:06 -!- sebbu2 has quit (Changing host).
23:35:06 -!- sebbu2 has joined.
23:35:21 <elliott> monqy: oh wait it's actually
23:35:31 <elliott> (>>+) :: Assign f t xs -> Assign f t ys -> Assign f t (xs :++: ys)
23:35:32 <elliott> yaye
23:35:57 <monqy> so the magic is in Complete then??
23:36:56 <elliott> monqy: I guess so yeah
23:38:31 -!- sebbu has quit (Ping timeout: 240 seconds).
23:39:14 <elliott> monqy: HOW DO YOU SPELL FIELD
23:39:18 <monqy> field
23:39:33 <monqy> unless im typo. then it could be ANYTHING
23:39:35 <monqy> feild, feld
23:39:37 <monqy> feld is good
23:39:49 <elliott> fdledl
23:39:51 <monqy> I don't think I've ever done efild
23:39:53 <elliott> oops.
23:40:18 <monqy> ifeld
23:40:49 <oerjan> !show wacro
23:40:49 <EgoBot> perl (sending via DCC)
23:41:24 <oerjan> wtf
23:41:29 <oerjan> !wacro 10
23:41:44 <monqy> wacro magic mystery
23:41:55 <elliott> oerjan: EgoBot is broken, remember
23:42:06 <oerjan> elliott: no it was fixed
23:42:13 <elliott> oerjan: um what's the length of the list of permutations of a list as long as the list itself......
23:42:18 <elliott> im dum
23:42:19 -!- Aune has joined.
23:42:23 <oerjan> !perl print "hi";
23:42:23 <EgoBot> hi
23:42:30 <monqy> hi
23:42:40 <elliott> > permutations [a,b,c]
23:42:40 <lambdabot> [[a,b,c],[b,a,c],[c,b,a],[b,c,a],[c,a,b],[a,c,b]]
23:42:45 <elliott> > filter ((== 3) . length) $ permutations [a,b,c]
23:42:47 <lambdabot> [[a,b,c],[b,a,c],[c,b,a],[b,c,a],[c,a,b],[a,c,b]]
23:42:47 <elliott> oh wait
23:42:56 <oerjan> elliott: n!
23:43:07 <fizzie> oerjan: ni!
23:43:14 <monqy> nnnnnn
23:43:21 <elliott> oerjan: ah. so this new, simpler approach can handle... 5 fields.
23:43:28 <oerjan> yay
23:43:31 <monqy> 5 is enough fields for anyone
23:43:33 <elliott> (actually that's not true :P)
23:43:43 <elliott> just means I'll have to get more cleverer
23:44:53 <oerjan> !wacro 50
23:45:28 <monqy> poor egobot
23:45:29 <oerjan> i cannot quite recall what was the correct syntax
23:45:36 <monqy> it was that, i think
23:45:42 <oerjan> `log [!]wacro
23:45:53 <monqy> poor hackego
23:46:05 <HackEgo> 2011-08-19.txt:23:36:46: <CakeProphet> !wacro
23:46:10 <monqy> wacro
23:46:29 <oerjan> !acro
23:46:30 <EgoBot> Array found where operator expected at /tmp/input.5546 line 47, at end of line
23:46:47 <oerjan> wtf
23:46:54 <monqy> !macro
23:46:59 <oerjan> !userinterps
23:47:00 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph hello id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez
23:47:00 <monqy> or uh
23:47:01 <monqy> `macro
23:47:06 <HackEgo> GEISHAS
23:47:58 <elliott> monqy: oh no i ju st realised something
23:52:45 <CakeProphet> `words 50
23:52:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found
23:52:52 <CakeProphet> `word 50
23:52:54 <HackEgo> qiirricompos andmag abingena trospepit turvklescbitury que dra querg coneleontamonningedur andmianus svitted fuh per otran formair euoncasdationd her beanet everw zeim regafooll miarashiesubao wed nunstchi felton reriv gly antsuperditee hener munglo mming firtyciporones nclards es aslothir fee disfo cusisseo elrodous tent pu
23:53:00 <CakeProphet> or do you want wacro?
23:53:09 <CakeProphet> !wacro
23:54:16 <CakeProphet> hmm, okay.
23:54:32 <elliott> oerjan: oh no bad thing!!
23:54:37 * Gregor is en-masse moving projects to bitbucket.
23:54:44 <elliott> Gregor: even the bad ones?
23:54:50 <Gregor> elliott: No, only the ones that are maintained :P
23:55:00 <elliott> oerjan: why is mapM not for applicatives :'(
23:55:02 <Gregor> (For some definition of "maintained")
23:55:17 <elliott> Gregor: I'll spring my two questions on you, then!
23:55:43 -!- ais523 has quit (Ping timeout: 240 seconds).
23:55:48 <elliott> Gregor: (a) Does HackBot support running some code continuously in the background? (usually blocked on a lock or whatever) This would vastly simplify my design. (b) Are you /sure/ I can't use Haskell? You have a recent GHC in /opt!
23:56:07 -!- someoneyouhate has quit (Ping timeout: 240 seconds).
23:56:25 <Gregor> elliott: (a) As in, user code, or just some other code that's part of the infrastructure?
23:56:31 <Gregor> elliott: (b) PFFFFFFFFFFFFFFFF
23:56:39 <oerjan> elliott: traverse
23:56:44 <oerjan> :t traverse
23:56:45 <lambdabot> Not in scope: `traverse'
23:56:49 <oerjan> argh
23:56:53 <elliott> Gregor: (a) Latter.
23:56:53 <oerjan> @hoogle traverse
23:56:53 <lambdabot> Data.Traversable traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
23:56:54 <lambdabot> Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
23:56:54 <lambdabot> Control.Parallel.Strategies parTraverse :: Traversable t => Strategy a -> Strategy (t a)
23:57:01 <elliott> Gregor: (b) I'M HAVING TO DO FILE LOCKING IN BASH YOU SHITHEAD
23:58:03 <Gregor> elliott: I never said it had to be bash.
23:58:16 <Gregor> elliott: Latter is fine; I mean, multibot itself is running continuously of course.
23:58:53 <elliott> Gregor: (a) Yeah, but I'm not sure my soul will let me rewrite anything in a language that isn't Haskell :P (b) How do you do it, then
23:59:27 <elliott> ?hoogle mapA
23:59:27 <lambdabot> Data.List mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
23:59:27 <lambdabot> Data.Traversable mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
23:59:27 <lambdabot> Data.List mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
23:59:29 <elliott> ;_;
2011-11-12
00:02:09 <shachaf> elliott: I still don't understand what the issue is.
00:02:12 <shachaf> What are you actually doing?
00:02:21 <oerjan> elliott: traverse, i said!
00:02:30 <elliott> :t traverse
00:02:31 <lambdabot> Not in scope: `traverse'
00:02:38 <shachaf> @ty Data.Traversable.traverse
00:02:39 <lambdabot> forall a (f :: * -> *) b (t :: * -> *). (Data.Traversable.Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
00:02:39 * oerjan facepalm
00:02:43 <elliott> shachaf: Shhh, we don't do X-Y problems around these parts.
00:02:54 <Gregor> elliott: (a) MEH MEH MEH (b) However you want to, just write the program and I can arrange for it to run ...
00:03:09 <elliott> shachaf: A partial explanation is available if you want one :P
00:03:15 <elliott> Gregor: (b) But I want to give you a working patch :P
00:03:35 <shachaf> elliott: I don't understand what your chromosomes have to do with it.
00:03:56 <elliott> http://www.perlmonks.org/?node_id=542341
00:04:27 <shachaf> elliott: This would be easy if you were doing it in Haskell.
00:04:35 <elliott> oerjan: what I really need is foldA >:(
00:04:40 * shachaf isn't sure what "this" is, but that sentence seemed like a good one to say.
00:04:42 <elliott> shachaf: What do you... think I'm... doing...
00:04:55 <shachaf> Wait, weren't you using bash?
00:04:57 <oerjan> :t foldM
00:04:58 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
00:05:14 <oerjan> @hoogle foldA
00:05:14 <lambdabot> Data.Foldable module Data.Foldable
00:05:15 <lambdabot> Data.Foldable class Foldable t
00:05:15 <lambdabot> Control.Seq seqFoldable :: Foldable t => Strategy a -> Strategy (t a)
00:05:20 <oerjan> gah
00:05:23 <elliott> shachaf: Gregor is trying to force me to use bash and/or a non-bash non-Haskell language to do this, but if it's non-bash I have to rewrite it myself, which will make me want to rewrite it in Haskell.
00:05:32 <shachaf> elliott: The counterpart of the XY problem is the XW problem.
00:05:33 <Gregor> OK, I have 11 repos on bitbucket.
00:05:35 <Gregor> Feels about right.
00:05:39 <shachaf> Often that one is even more annoying.
00:05:42 -!- pumpkin has joined.
00:05:53 <oerjan> elliott: foldA doesn't exist, i think
00:06:11 <oerjan> that foldM type is intrinsically monadic
00:06:48 <oerjan> an arrow might work...
00:08:06 -!- copumpkin has quit (Ping timeout: 260 seconds).
00:08:27 <oerjan> :t \f x l -> foldr (>>>) id (map (flip f) l)
00:08:28 <lambdabot> forall t c a. (c -> a -> c) -> t -> [a] -> c -> c
00:08:30 <elliott> oh yeah monqy you need
00:08:32 * Phantom_Hoover → sleep
00:08:32 <elliott> the bad news
00:08:34 <elliott> along those lines
00:08:36 <oerjan> oops
00:08:37 -!- Phantom_Hoover has quit (Quit: Leaving).
00:08:47 <oerjan> :t \f x l -> foldr (>>>) pure (map (flip f) l)
00:08:48 <lambdabot> forall t a (f :: * -> *) a1. (Applicative f) => (a -> a1 -> a) -> t -> [a1] -> a -> f a
00:08:52 <oerjan> argh
00:09:01 <oerjan> :t \f x l -> foldr (>>>) (arr id) (map (flip f) l)
00:09:02 <lambdabot> forall t (cat :: * -> * -> *) a a1. (Arrow cat, Functor (cat a)) => cat a (a1 -> a) -> t -> [a1] -> cat a a
00:09:20 <oerjan> wtf
00:09:29 <oerjan> :t \f x l -> foldr (>>>) (arr id) (map (Prelude.flip f) l)
00:09:30 <lambdabot> forall t a a1. (a -> a1 -> a) -> t -> [a1] -> a -> a
00:09:40 <oerjan> eek
00:09:47 <oerjan> oh duh
00:10:08 <oerjan> :t \f x l -> foldr (>>>) (arr id) (map f l)
00:10:09 <lambdabot> forall t (cat :: * -> * -> *) a a1. (Arrow cat) => (a1 -> cat a a) -> t -> [a1] -> cat a a
00:10:33 <oerjan> f needs to come preflipped to be useful with arrows
00:11:04 <oerjan> oh hm x is never used :P
00:11:19 <oerjan> well, i still think that's the closest in spirit
00:11:46 <oerjan> :t under Kleisli
00:11:46 <elliott> No instance for (Complete Foo (x0 :++: (x1 :++: (C :- fields0))))
00:11:47 <lambdabot> forall a (m :: * -> *) b n' o'. (Newtype (Kleisli m a b) (a -> m b), Newtype n' o') => (Kleisli m a b -> n') -> (a -> m b) -> o'
00:12:21 <oerjan> :t op
00:12:21 <lambdabot> forall o n. (Newtype n o) => (o -> n) -> n -> o
00:12:36 <oerjan> hm what was that thing
00:12:46 <oerjan> :t as
00:12:47 <lambdabot> Not in scope: `as'
00:14:29 -!- Phantom_Hoover has joined.
00:14:41 <oerjan> :t ala
00:14:42 <lambdabot> forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o'
00:14:52 <Phantom_Hoover> OK I wasn't really asleep; did Sgeo|web malfunction and fail to notify of a Homestuck update?
00:15:11 <zzo38> Is there types in Haskell that only have numbers 0 up to 1?
00:17:13 * Phantom_Hoover → probably actual sleep?
00:17:14 -!- Phantom_Hoover has quit (Client Quit).
00:18:58 -!- Jafet has joined.
00:23:36 <elliott> zzo38: Bool
00:29:45 <elliott> http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:until
00:29:51 <elliott> oerjan: huh, is that new?
00:30:00 <zzo38> elliott: Actually I wasn't very clear. I mean that it can store fractions too, so there is infinite number of possible values
00:30:10 <oerjan> :t until
00:30:11 <lambdabot> forall a. (a -> Bool) -> (a -> a) -> a -> a
00:30:13 <elliott> zzo38: oh. Double :p
00:30:17 <oerjan> no, that's old
00:30:21 <elliott> just treat minBound = 0, maxBound = 1
00:30:28 <elliott> oerjan: well ok at least 6.12 old :P
00:31:05 <shachaf> zzo38: Fractions? You don't want to be able to store arbitrary real numbers?
00:31:27 <oerjan> elliott: it's in h98
00:31:46 <elliott> oh, ok
00:32:08 <shachaf> Did you know Haskell 1.2 had "import Foo renaming (blah to blam)"?
00:32:24 <elliott> Cool.
00:32:32 <shachaf> Of course, they didn't have qualified imports.
00:32:37 <elliott> Uncool.
00:32:41 <zzo38> shachaf: Well, fractions, or arbitrary real numbers, but bounded
00:32:42 <shachaf> Or do notation.
00:32:44 <elliott> I forget, is OverlappingInstances one of those things that You Should Never Use?
00:32:47 <elliott> Like IncoherentInstances.
00:33:05 <Jafet> You should never use them, yeah. Only I get to use them.
00:33:05 <shachaf> elliott: If you don't know, the answer is probably Yes.
00:33:12 <CakeProphet> I think Overlapping is acceptable in some situations.
00:33:21 <elliott> shachaf: I do know, I just forgot.
00:33:21 <CakeProphet> based on Credible Sources
00:33:27 <CakeProphet> that I Don't Remember The Source Of
00:33:28 <elliott> shachaf: I'm definitely doing Perverse Type Hackery.
00:33:41 <Sgeo|web> IncoherentInstances?
00:33:54 <oerjan> clearly elliott should use overlappinginstances to dig himself in further
00:34:12 <elliott> oerjan: I can avoid them, it'd just involve another Equ
00:34:16 <elliott> class ElemA xs
00:34:16 <elliott> instance ElemA (A :- xs)
00:34:16 <elliott> instance (ElemA xs) => ElemA (x :- xs)
00:34:17 <elliott> is the usecase
00:36:32 <oerjan> mhm
00:37:42 <pikhq> It's a real shame that simplification of Chinese characters hasn't focused on making characters have a clear pairing of semantic and phonetic components (and thus easier to learn), but instead on reducing the number of strokes in a certain list of characters.
00:37:51 <pikhq> 鬱 Consider that.
00:38:44 <pikhq> That is really obnoxious to learn, in large part because there's no real way of grasping it as having a simple, clear structure.
00:38:50 <Sgeo|web> So incoherentinstances removes a sanity check that overlappinginstances provides?
00:39:02 -!- augur has quit (Remote host closed the connection).
00:39:19 <pikhq> The phonetic component of it is, apparently, 𩰪(probably not available in your font).
00:39:34 <pikhq> That's just fucking evil.
00:39:40 <pikhq> http://glyphwiki.org/wiki/u29c2a
00:41:39 -!- Jafet1 has joined.
00:41:49 <elliott> :t \x -> foldr (<*>) (pure x)
00:41:50 <lambdabot> forall (f :: * -> *) b. (Applicative f) => b -> [f (b -> b)] -> f b
00:41:53 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds).
00:41:58 <elliott> @hoogle a -> [f (a -> a)] -> f a
00:41:59 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
00:41:59 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
00:41:59 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
00:42:01 <elliott> oerjan: :(
00:42:18 -!- Madoka-Kaname has joined.
00:42:18 -!- Madoka-Kaname has quit (Changing host).
00:42:18 -!- Madoka-Kaname has joined.
00:43:22 -!- Jafet has quit (Ping timeout: 244 seconds).
00:44:40 <Jafet1> http://glyphwiki.org/wiki/u2387d
00:44:48 <Jafet1> Someone's missing the forest for the trees
00:45:41 -!- Jafet1 has changed nick to Jafet.
00:45:48 <elliott> :-/ turning
00:45:52 <elliott> class Foo a b | b -> a
00:45:52 <elliott> into
00:46:00 <elliott> class Foo b where type A b
00:46:04 <elliott> is turning my instances into undecidable ones
00:46:11 <pikhq> Some bastard must have thought they were "smart" repeating the 木林森 pattern.
00:46:13 * elliott cries.
00:47:15 <Jafet> You've decided... decided...
00:48:40 <elliott> monqy: anyway it is less horrific now???
00:48:59 <monqy> hi
00:49:00 <monqy> im back from
00:49:04 <monqy> not being here
00:49:06 <monqy> what happeneD??
00:49:57 <elliott> Functional dependencies conflict between instance declarations:
00:49:58 <elliott> instance [overlap ok] (ElemA xs, ElemB xs, ElemC xs) =>
00:49:58 <elliott> Complete Foo xs
00:49:58 <elliott> -- Defined at /home/elliott/Code/form-test/form-test.hs:68:10-58
00:49:58 <elliott> instance [overlap ok] Complete Bar Nil
00:49:58 <elliott> -- Defined at /home/elliott/Code/form-test/form-test.hs:73:10-25
00:50:00 <monqy> (i think i left soon before 15:47:57 < elliott> monqy: oh no i ju st realised something)
00:50:00 <elliott> oh NOooooooooo
00:50:04 <monqy> oh no
00:50:32 <elliott> ohhh i get it
00:50:38 <elliott> my fundep is wrnog
00:51:06 <elliott> anyway!!!
00:51:17 <elliott> *Main> :t (=:)
00:51:17 <elliott> (=:)
00:51:17 <elliott> :: (Field field, Applicative f) =>
00:51:17 <elliott> field
00:51:17 <elliott> -> f (FieldType field)
00:51:18 <elliott> -> Assign f (FieldRecord field) (field :- Nil)
00:51:19 <elliott> *Main> :t (<>)
00:51:21 <elliott> (<>)
00:51:23 <elliott> :: Applicative f =>
00:51:25 <elliott> Assign f t xs -> Assign f t ys -> Assign f t (xs :++: ys)
00:51:27 <elliott> *Main> :t run
00:51:29 <elliott> run
00:51:31 <elliott> :: (Complete t fields, Applicative f) => Assign f t fields -> f t
00:51:33 <elliott> monqy: behlod
00:51:37 <monqy> beholdieng
00:51:54 <elliott> exmample:
00:51:56 <elliott> test :: IO Foo
00:51:56 <elliott> test =
00:51:56 <elliott> run $ A =: getLine
00:51:56 <elliott> <> B =: return 42
00:51:56 <elliott> <> C =: return pi
00:52:15 -!- oerjan has quit (Quit: Good night).
00:52:35 <elliott> monqy: ANYWAY so the good part of the Bad Realisation is that I think there is a way to do the proper interleaving of effects with nested records like I said and the like
00:52:41 <elliott> monqy: the bad part is that.... its arowes
00:52:49 <monqy> oops
00:53:06 <monqy> is there any
00:53:07 <monqy> other
00:53:08 <monqy> way
00:53:18 <elliott> im dont onknow. unfrtuoatenyl.
00:54:35 <monqy> hm
00:54:39 <monqy> how would the arrowes
00:54:40 <monqy> look
00:54:47 <monqy> if it's pretty, is there problems??
00:54:55 <monqy> asside from arrows being...arrows
00:55:15 <elliott> anynway!!!!
00:55:19 <elliott> monqy: http://sprunge.us/SSSU
00:55:22 <elliott> behlod. simpler.
00:55:23 <monqy> sssu
00:55:39 <elliott> bits between -- are autogenerated apart from the Foo declaration itself of course
00:55:50 <elliott> or rather, would be autogenerated.
00:57:19 <monqy> how would the names of A B C be genreateD? similarly to the lenses schemes?
00:58:05 <elliott> from the foo record
00:58:14 <elliott> it'd actually be FooA/FooB/FooC
00:58:16 <elliott> but i am: lazy
00:58:32 <elliott> the problems here are basically (a) doesn't interoperate with lenses???? and (b) no interlevying
00:59:37 <monqy> yeeah what if the initial character has no uppercase lettery version most notablye _ as in the lensy names which is what (a) might mean??
01:01:06 -!- derdon has quit (Remote host closed the connection).
01:02:42 <elliott> monqy: oh then it just fails or mangles i guess...... (a) mostly means that it's implementing its own stuff which is PRETETETY DARNE CLOSE TO LSENSES!
01:03:15 <elliott> im clod.
01:03:16 <monqy> lense btu diferent
01:04:06 <elliott> while trying to improve this:
01:04:07 <elliott> Couldn't match type `No' with `Yes'
01:04:07 <elliott> In the expression: run
01:04:07 <elliott> In the expression: run $ A =: getLine <> C =: return pi
01:04:07 <elliott> In an equation for `test':
01:04:08 <elliott> test = run $ A =: getLine <> C =: return pi
01:04:13 <elliott> sure have made the messages useful!!!
01:04:59 <monqy> you did something wrong but i wont say what it is........... - ghc
01:05:10 <monqy> its a secret - ghc
01:06:00 -!- augur has joined.
01:08:23 -!- augur has quit (Remote host closed the connection).
01:10:10 <elliott> monqy: it should just say
01:10:15 <elliott> <file>:<line>:<col>: wrong
01:10:25 <elliott> or better
01:10:27 <elliott> $ ghc badprogram.hs
01:10:28 <elliott> no
01:10:28 <elliott> $
01:11:48 <monqy> good ghc
01:13:37 <CakeProphet> elliott: it clearly says there's a type error in the expression "run"
01:13:41 <CakeProphet> where's the confusion?
01:13:55 <elliott> are you being serious?
01:14:10 <CakeProphet> sure.
01:14:24 <elliott> CakeProphet: lol.
01:14:26 <elliott> I AM SO FUCKING COLD
01:14:38 <CakeProphet> like seriously there's only one place it's wrong.
01:14:50 <elliott> CakeProphet: fun fact: the error isn't in run there
01:15:09 <CakeProphet> SURELY IT IS. GHC WOULD NEVER LIE.
01:15:34 <CakeProphet> in any case, is in the error in some sort of insane type hackery?
01:16:33 <monqy> what else
01:16:53 <CakeProphet> then... that's why the error message isn't helpful. :P
01:18:09 <CakeProphet> unrelatedly, there are some insanely cheap deals on audio stuff right now.
01:18:22 <monqy> wowza, audio stuff
01:19:57 <CakeProphet> 300 watt 12" sub with built-in amp for $170
01:24:31 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
01:24:35 <shachaf> ghc goodprogram.c
01:26:56 <elliott> ghc is actually a C compiler too, you know.
01:27:29 <elliott> [elliott@dinky Temp]$ echo 'int main(){return 42;}' >foo.c
01:27:30 <elliott> [elliott@dinky Temp]$ ghc --make foo.c
01:27:30 <elliott> [elliott@dinky Temp]$ ./a.out
01:27:30 <elliott> [elliott@dinky Temp]$ echo $?
01:27:30 <elliott> 42
01:28:46 <CakeProphet> elliott: dinky is a stupid name.
01:28:56 <elliott> Counterpoint: You're stupid.
01:30:47 <elliott> :t liftA2 (.)
01:30:48 <lambdabot> forall a b (f :: * -> *) (f1 :: * -> *). (Functor f, Applicative f1) => f1 (a -> b) -> f1 (f a) -> f1 (f b)
01:30:57 <elliott> CAAAAAAALE
01:30:59 <elliott> :t liftA2 (P..)
01:30:59 <lambdabot> Couldn't find qualified module.
01:31:00 <elliott> :t liftA2 (Prelude..)
01:31:01 <lambdabot> forall b c a (f :: * -> *). (Applicative f) => f (b -> c) -> f (a -> b) -> f (a -> c)
01:31:16 <elliott> That should have a name.
01:31:24 <elliott> @hoogle f (b -> c) -> f (a -> b) -> f (a -> c)
01:31:24 <lambdabot> Data.Generics.Schemes everywhereBut :: GenericQ Bool -> GenericT -> GenericT
01:35:07 <CakeProphet> "According to a biannual Security Intelligence Report from Microsoft, AutoRun—the feature in Windows that automatically executes files when you plug in a USB or connect to a network—accounts for almost half of all malware infections."
01:35:12 <CakeProphet> shocking revelation.
01:35:51 <zzo38> I made up a BoundFrac type which can be used with any type and then it makes it error if the result is not in range
01:36:02 -!- augur has joined.
01:49:41 -!- augur has quit (Remote host closed the connection).
01:50:07 <elliott> Gregor: Sooo, where would I actually modify to get a background process in HackBot?
01:50:13 <elliott> Do I have to track down and modify the multibot source itself?
01:54:53 <elliott> Gregor: Also, more importantly: In tr_60.cmd, where's some scratch space I can use for temporary files?
01:54:59 <elliott> (I need to share them amongst invocations of tr_60.cmd.)
01:57:38 <CakeProphet> http://tinyurl.com/72p9aoj $250 off a set of 5.1 surround speakers
01:57:40 <CakeProphet> so. tempting.
02:09:26 <elliott> Hmph, Gregor should have anticipated all my questions and answered them before I asked them
02:09:34 <elliott> I even have another one now!
02:11:36 <Vorpal> elliott, btw are you planning to play Skyrim at some point?
02:11:47 <elliott> Maybe. I asked you whether it sucked or not.
02:12:00 <Vorpal> elliott, well it seems 1.1 fixed the worst bugs
02:12:04 <Vorpal> that I ran into
02:12:08 <monqy> all i know about skyrim is you can put barrels over people's heads
02:12:22 <Vorpal> monqy, I wasn't aware of that
02:12:22 <monqy> ooh and there was some fixed bug where mammoths had trouble staying on the ground
02:12:35 <Vorpal> I guess you can due to it having a physics engine
02:12:48 <elliott> Vorpal: I wasn't asking about the bugs.
02:12:52 <Vorpal> I mean, one general enough to handle stuff in barrels in general
02:13:10 <Jafet> It's not a Bethesda game if it doesn't have mammoth bugs
02:13:33 <monqy> I think there was some video that demonstrated if you put barrels over everyone's heads you can steal things but if you take the barrels off people get angry when you steal
02:13:39 <Vorpal> elliott, well apart from the bugs there is one thing that annoy me. The HUD / menus design is too modern, both when it comes to the typeface and the icons used.
02:14:10 -!- sebbu3 has joined.
02:14:11 -!- sebbu3 has quit (Changing host).
02:14:11 -!- sebbu3 has joined.
02:14:18 <monqy> what does too modern mean? as in it clashes with the pasty feel of the rest of the game?
02:14:45 <Vorpal> elliott, other than that I would say that if you enjoyed Oblivion you will enjoy this one. There are some gameplay changes. Most (but not all) that I would consider improvements. Of course, that last point is rather subjective.
02:15:58 <elliott> Vorpal: I haven't played Oblivion :P
02:15:58 <Vorpal> monqy, as in, it doesn't really fit in with the medieval feel of the actual game. The font is a sans-serif for example. I don't think it is helvetica, but it would fit in just as poorly if it was.
02:16:25 <elliott> Other Skyrim anachronisms: It's played on a computer.
02:16:33 <elliott> Gregor: Also, $IRC_SOCK is an absolute path, right?
02:17:12 <Vorpal> elliott, well, then it comes down to if you enjoy massive open world RPGs. Unlike oblivion, where you start out with fast travel to the big cities (and have to discover the rest of the fast travel locations by exploring), you can't fast travel anywhere in Skyrim until you explore to there.
02:17:24 <Vorpal> so... lots of walking involved to begin with
02:17:37 -!- sebbu2 has quit (Ping timeout: 252 seconds).
02:18:05 <elliott> What's the variable for "number of arguments received" in bash again
02:18:24 <Jafet> Does each major city still contain less than a hundred inhabitants?
02:18:38 <Vorpal> <elliott> Other Skyrim anachronisms: It's played on a computer. <-- very funny. Oblivion used a type face that had an medieval feeling, while still not being as unreadable as "Olde English" style fonts.
02:19:01 <Vorpal> elliott, oh and the menu system was clearly designed with a gamepad in mind.
02:19:13 <Vorpal> it works with mouse and keyboard, sure
02:19:19 <Gregor> <elliott> Gregor: Also, $IRC_SOCK is an absolute path, right? // y es
02:19:20 <Vorpal> but still, not optimal perhaps
02:19:32 <elliott> Gregor: Y es?
02:20:48 <Vorpal> elliott, of course, the actual navigation in the menu system of oblivion was truly hideous. That bit is much better in Skyrim. It is just that the graphical design of said menu system was /way/ better in Oblivion.
02:21:13 <Jafet> It's part of a big conspiracy to make you buy an xbox
02:21:29 <Vorpal> Jafet, what, and get worse graphics?
02:21:56 <elliott> Gregor: <elliott> Gregor: Sooo, where would I actually modify to get a background process in HackBot? <elliott> Do I have to track down and modify the multibot source itself? <elliott> Gregor: Also, more importantly: In tr_60.cmd, where's some scratch space I can use for temporary files?
02:22:00 <elliott> Those are all the questions... I think :P
02:22:37 <Gregor> 1) I will have to do something to make it run a background process externally. The script that spawns multibot is not part of the repo.
02:22:52 <Gregor> 2) No. Modifying multibot for this makes no sense.
02:22:54 <Vorpal> Jafet, oh yeah, that is another issue. Skyrim was designed with consoles in mind when it came to the graphics too. I played Witcher 2 as well, which was designed with PC in mind only (and only later was it decided to port it to consoles). Witcher 2 had *much* better graphics than Skyrim has.
02:23:00 <Gregor> 3) /tmp
02:23:12 <elliott> Gregor: <elliott> (I need to share them amongst invocations of tr_60.cmd.)
02:23:22 -!- pumpkin has quit (Quit: Computer has gone to sleep.).
02:23:31 <elliott> Unless you mean like /tmp/hackbot.hope-you-never-want-to-run-more-than-one-hackbot-at-once
02:23:33 <Gregor> elliott: Do you mean within the execution of a guest program, or just in tr_60.cmd itself?
02:23:38 <elliott> Latter.
02:23:40 <elliott> It's for storing transaction info.
02:23:52 <Gregor> Oh, it's a multiple instances issue.
02:24:01 <Gregor> mkdir $IRC_SOCK.tmp :P
02:24:19 <elliott> Gregor: Not an "issue", so much as "communication".
02:24:35 <Gregor> Multiple instances of HackBot that is.
02:24:54 <elliott> Gregor: Oh yeah, the additional question is: If HackEgo sees `a then `b, is there any chance of the latter getting started before the former? ... I guess there is, bash could call a syscall which could block for long enough to blah blah blah.
02:25:36 <elliott> Gregor: Which is annoying, because I want as-if-sequential semantics >_>
02:25:40 <variable> elliott: $# ?
02:25:52 <elliott> Obviously it only matters if you send two messages in one syscall and the buffer flushes and etc. etc., but still :P
02:25:56 <elliott> (Over the network)
02:25:59 <elliott> variable: Yep, found that, thanks :P
02:27:36 <elliott> Gregor: Anyhow, I have a bundle of changes I've made on the way to doing this if you're interested in getting some of the breakage out of the way earlier :P
02:27:43 <Vorpal> elliott, so, there you have it for Skyrim. Personally I think it is worth playing, but then I liked Oblivion too. But gameplay wise it is much better. Oblivion's dungeons were quite similar. There were a few basic designs for the style, like "ancient ruin tiles", "modern ruin tiles" and so on, except it didn't use tiles afaik. There seems to be a much larger variety for such things in Skyrim.
02:27:46 <elliott> (It's just (a) slight cleanups and (b) changes I've made to make the transactional stuff easier.)
02:28:03 <elliott> Vorpal: How good are the dragons, that's pretty much the only thing I care about in a game. (Note: Maybe false.))
02:28:06 <elliott> s/))/)/
02:28:22 <Vorpal> elliott, haven't really gotten that far in the game yet. I got side tracked by sidequests XD
02:28:32 <Vorpal> sidetracked*
02:28:57 <Vorpal> elliott, so while the intro features a dragon, you basically have to flee from it at that point.
02:28:58 * Gregor reappears.
02:29:14 <Vorpal> elliott, you don't get a close look at it at that point really
02:29:25 <Vorpal> elliott, guess I will be able to report on that later.
02:29:29 <Gregor> elliott: Yes, `b can "get started" before `a, that ... doesn't even make sense otherwise. The only way to avoid that would be to handle them all sequentially.
02:29:44 <elliott> Gregor: No, it would just require /starting/ them sequentially :P
02:29:54 <elliott> But various factors could easily desynchronise them at that point, so *shrug*
02:30:19 <Vorpal> elliott, reimplement it on a RTOS
02:31:34 <Vorpal> elliott, I'm playing on ultra graphics settings with no issues btw.
02:31:56 <Vorpal> your toshiba might not be beefy enough though
02:32:01 <elliott> Gregor: Here's another question... why do you do `head -c 16384` when IRC lines aren't actually allowed to even be that long :P
02:32:04 <elliott> Vorpal: It definitely isn't.
02:32:09 <Vorpal> right
02:32:30 <Vorpal> elliott, how much dedicated graphics ram?
02:32:40 <Gregor> elliott: Just to stop programs from running if they're producing gobs of output. I just want a dead pipe.
02:32:47 <elliott> No frickin' idea, but come on, the CPU is less than one GHz.
02:32:49 <elliott> Gregor: Right
02:33:13 <Vorpal> hm
02:33:20 <Vorpal> elliott, I think 2 GHz was minimum
02:33:22 <elliott> Gregor: Hmmwait
02:33:23 <Vorpal> iirc
02:33:31 <elliott> Wait, never mind
02:33:40 <Vorpal> elliott, as in "core 2 duo 2.0 GHz or better"
02:34:07 <elliott> Gregor: So, uh, as far as I can tell, you sleep for 30 seconds regardless of whether or not the process in question finishes or not.
02:34:08 <Vorpal> recommended was quad core system
02:34:14 <elliott> So you have a lot of processes just sleeping 30 all the time :P
02:35:58 <Gregor> elliott: Yup. Difficult not to in bash.
02:36:01 -!- hagb4rd has joined.
02:36:05 <elliott> Gregor: Yeah, just realised that >__>
02:36:12 <elliott> Gregor: Why the hell doesn't bash have alarm after how-many-decades
02:36:19 <Gregor> Nowait ...
02:36:22 <Gregor> I thought I fixed that ...
02:36:35 <Gregor> Nope, I didn't :)
02:36:46 <Gregor> Right, because it would need either something like alarm or conditional wait.
02:37:40 <elliott> Gregor: Does DCC SEND work for you?
02:37:50 <Vorpal> elliott, oh and if you run it from an SSD you won't be able read the hints displayed on the loading screens. It is just too fast. It seems yogscast ran it from an HDD because they complained about the slow loading screens.
02:38:01 <Vorpal> but for me on an SSD it is about 2-4 seconds
02:38:21 <Gregor> elliott: Considering that it never uses it, Idonno.
02:38:29 <elliott> Gregor: No, I mean, you personally :P
02:38:31 <Gregor> Oh
02:38:35 <Gregor> I'd prefer email ...
02:38:39 <elliott> Oh right, email exists!
02:38:44 <elliott> I completely forgot...
02:38:56 <CakeProphet> I completely fungot!
02:38:57 <fungot> CakeProphet: unless you want to become like larry wall, maybe?) area of memory to a file."? me, soegaard?
02:39:00 <Gregor> elliott: Incidentally, what repo are you working off of?
02:39:09 <Gregor> elliott: I moved hackbot with a bunch of other projects, it's on bitbucket now (same repo though)
02:39:24 <elliott> Gregor: Oh, I'll update my hgrc and do a pull request thing then
02:39:30 <elliott> That sounds appropriately fancy
02:39:36 <Gregor> Yay pull request :P
02:39:38 <Gregor> *dinner*
02:41:19 <elliott> Gregor: https://bitbucket.org/GregorR/hackbot/pull-request/1/stuff
02:41:22 <elliott> ENJOY YOUR DINNER, FASCIST.
02:44:26 <elliott> `fetch https://bitbucket.org/GregorR/hackbot/pull-request/1/stuff
02:44:28 <HackEgo> 2011-11-12 02:44:28 URL:https://bitbucket.org/GregorR/hackbot/pull-request/1/stuff [20286] -> "stuff" [1]
02:44:31 <elliott> I completely forget how hideous `fetch's output is.
02:44:34 <Vorpal> elliott, oh btw, weird thing in char creation: every option is a slider. Even the gender one. However it boringly only has two value
02:44:44 <elliott> `rm stuff
02:44:46 <HackEgo> No output.
02:45:18 <elliott> `fetch sdfjsdfjkl
02:45:19 <HackEgo> wget: unable to resolve host address `sdfjsdfjkl'
02:45:25 <elliott> Hmm, not as bad as I recall
02:46:31 -!- CakeProphet has quit (Ping timeout: 276 seconds).
02:49:52 <elliott> Gregor: I think modifying multibot to run the background job /does/ make sense, because it needs to be able to send messages... or is that created before running multibot?
02:49:53 <elliott> I guess it is.
02:52:32 -!- Sgeo|web has joined.
02:52:55 <Sgeo|web> elliott: Bluh bluh update bluh bluh, although it was quite some minutes ago
02:54:35 -!- sebbu2 has joined.
02:54:35 -!- sebbu2 has quit (Changing host).
02:54:35 -!- sebbu2 has joined.
02:58:10 -!- sebbu3 has quit (Ping timeout: 256 seconds).
02:58:59 <pikhq> "Bach no Senritsu o Yoru ni Kiita Sei Desu." That is definitely the strangest romanisation job ever, why would you romanise バッハ (Hepburn: bahha, mine: hà'ha) that way?
02:59:18 <pikhq> Well, aside from バッハ being Japanese for "Bach".
02:59:21 -!- copumpkin has joined.
03:00:45 <pikhq> Some days I feel like replacing Japanese orthography with romaji would just make Japanese writing more irregular.
03:01:07 -!- Vorpal has quit (Ping timeout: 260 seconds).
03:11:03 -!- Aune has quit (Remote host closed the connection).
03:21:05 -!- augur has joined.
03:24:31 <zzo38> I made the program for normalizable semirings!
03:25:15 <zzo38> Do they ever use that term in mathematics? My program has classes for normalizable monoids, though.
03:30:09 -!- hagb4rd has quit (Quit: hagb4rd).
03:30:45 <Gregor> `echo Did elliott just break everything?
03:30:47 <HackEgo> Did elliott just break everything?
03:30:55 <Gregor> Impressive.
03:31:04 <elliott> It...
03:31:06 <elliott> How does it still work?
03:31:08 <elliott> `run echo hi >a
03:31:10 <HackEgo> No output.
03:31:11 <elliott> `cat a
03:31:14 <HackEgo> hi
03:31:16 <elliott> `rm a
03:31:17 <HackEgo> No output.
03:31:19 <elliott> Gregor: I'm shocked :P
03:31:22 <Gregor> Same 'ere.
03:31:24 -!- elliott has changed nick to Lymia.
03:31:27 <Lymia> `stupid
03:31:27 <HackEgo> Mmmmm ... no.
03:31:31 -!- Lymia has changed nick to elliott.
03:31:32 <elliott> Wow :P
03:31:39 <elliott> `fetch http://google.com
03:31:40 <HackEgo> 2011-11-12 03:31:40 URL:http://www.google.com/ [10696] -> "index.html" [1]
03:31:44 <elliott> `rm index.html
03:31:46 <HackEgo> No output.
03:32:34 <elliott> `yes
03:32:36 <HackEgo> y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y
03:32:45 <Gregor> OMG THAT LINE IS SO LONG
03:32:55 <elliott> Gregor: It's a whole 100 characters longer :P
03:33:10 <Gregor> `run echo lol > .hg/foo
03:33:10 <elliott> See my commit message for CALCULATIONS plus estimate of margin of safety.
03:33:12 <HackEgo> bash: .hg/foo: Read-only file system
03:33:18 <Gregor> elliott: Yeah, I saw.
03:33:27 <elliott> Hmm, wait, I think my revert command might not work...
03:33:32 <elliott> `run echo hi > a
03:33:34 <HackEgo> No output.
03:33:37 <elliott> `run revert
03:33:39 <HackEgo> bash: revert: command not found
03:33:53 <elliott> Whuh
03:33:57 <Gregor> `revert
03:33:58 <HackEgo> Done.
03:34:03 <elliott> Oh! I didn't add it yet :P
03:34:04 <Gregor> `ls
03:34:06 <HackEgo> bin \ canary \ karma \ lastquote \ lib \ paste \ quotes \ share \ wisdom
03:34:10 <Gregor> Ooooohkidokie :P
03:34:12 <elliott> Yeah yeah, it's just that I removed revert :P
03:34:15 <elliott> From my local copy
03:34:20 <elliott> Thinking it could be done with a bin/ thing
03:34:55 <elliott> But obviously not
03:34:57 <elliott> lib/revert it is
03:35:53 <Gregor> Welllllllllll, it is doable with something in bin, but it's better to have an out-of-channel method.
03:36:12 <elliott> Gregor: It's... sort of doable, but you could break it horribly and make people `revert manually :P
03:36:28 <elliott> Gregor: You can set up an environment var (path to unix socket) that tr_60.cmd will see, right?
03:36:39 <elliott> And redirect a probably-Python program's stdin from it? :P
03:36:47 <Gregor> Sure
03:36:56 <elliott> Actually hmm, not sure Unix socket will work >_>
03:37:00 <elliott> What happens when two people write to a Unix socket at once
03:39:59 <Gregor> An individual call to write/send will always produce an in-order packet.
03:40:04 <Gregor> But multiple calls can be interleaved.
03:40:16 <Gregor> Note for comparison: X11 works.
03:40:19 <elliott> What're the chances of socat sending <512 bytes with a single write/send?
03:40:24 <elliott> Oh, X11 is based on a single Unix socket?
03:40:25 <elliott> Alrighty then :P
03:40:37 <Gregor> Not quite any more, but classically.
03:40:40 <elliott> (How did they overengineer everything but that?)
03:40:44 <Gregor> Now it has shm and other tricks too.
03:42:31 <elliott> Gregor: You should add the running script to the repo so I can test this thing :P
03:42:54 <elliott> Also, last attempt: Are you suuuuuuuure I can't write the script in Haskell????
03:43:45 <zzo38> Can you please tell me what packages I need if I import: Control.Applicative Control.Category Control.Monad Control.Monad.Trans.Writer Data.Functor.Contravariant Data.List Data.Monoid Data.Ord Data.Semigroup
03:44:20 -!- hagb4rd has joined.
03:45:01 <elliott> zzo38: base, semigroups, contravariant, methinks
03:46:00 <copumpkin> mtl?
03:46:25 <elliott> copumpkin: Nope
03:46:28 <elliott> .Trans. == transformers
03:46:32 <elliott> zzo38: base, transformers, semigroups, contravariant, methinks
03:47:24 -!- sebbu has joined.
03:47:24 -!- sebbu has quit (Changing host).
03:47:25 -!- sebbu has joined.
03:49:04 <zzo38> How do I know what version numbers I need to specify?
03:50:20 -!- sebbu2 has quit (Ping timeout: 255 seconds).
03:52:02 -!- sebbu2 has joined.
03:52:03 -!- sebbu2 has quit (Changing host).
03:52:03 -!- sebbu2 has joined.
03:55:49 -!- sebbu has quit (Ping timeout: 260 seconds).
04:02:53 -!- Zuu has quit (Ping timeout: 244 seconds).
04:11:06 <elliott> Gregor: You, uh, did fix it
04:11:11 <elliott> umlbox-nice has a timeout
04:11:42 <elliott> Gregor: That doesn't solve it for `fetch though.
04:12:01 <elliott> Tempted to say that it's better to do it outside of UMLBox.
04:15:39 <elliott> `ls /home
04:15:41 <HackEgo> hackbot
04:15:43 <elliott> `ls /home/hackbot
04:15:45 <HackEgo> hackbot.hg
04:15:48 <elliott> X-D
04:20:06 <elliott> Gregor: Oh, timing out from within UMLBox has the advantage that you get partial output from timed-out commands.
04:20:16 <elliott> That's defeated by the global timeout though :P
04:21:06 <Gregor> That redundancy is to avoid bugs.
04:21:10 <Gregor> Don't take it out.
04:25:28 <elliott> Gregor: Bugs like what?
04:25:34 <elliott> Just curious.
04:25:55 <elliott> If I'm keeping it, I'll at least make the global timeout 35, so that you get the partial output thing :P
04:26:27 * elliott has everything but the server done... so everything but the hard part :P
04:31:15 <Gregor> I don't /think/ any remain.
04:31:23 <Gregor> It's just a stopgap.
04:31:44 <Gregor> Although I suppose nothing's stopping `fetch http://fiftygigfile.com right now :P
04:32:14 <elliott> Gregor: Yes there is.
04:32:15 <elliott> The outer timeout
04:33:00 <elliott> Also the ulimit :P
04:33:11 <zzo38> Did I send the package correctly?
04:33:19 <elliott> zzo38: ?
04:33:24 <elliott> Gregor: My sandbox script enables UMLBox's timeout, and the fetch one uses a sleep, so that should be enough, but I'll add a 35-second timeout to the server just in case...
04:33:28 <elliott> The revert script has no timeout :P
04:33:44 <zzo38> I mean the "monoidplus" package
04:35:23 <elliott> http://hackage.haskell.org/package/monoidplus
04:35:32 <elliott> You forgot to specify version constraints on your dependencies
04:36:00 <elliott> also, you have a typo in Plus.lhs: "tyep" :)
04:36:04 <zzo38> elliott: I looked at those three packages, and both the oldest version and newest version have those things
04:36:16 <elliott> zzo38: Yes, but the version released tomorrow might not.
04:36:35 <zzo38> O, OK. Yes.
04:36:41 <zzo38> And OK I will fix the typo, too
04:36:51 <elliott> zzo38: contravariant == 0.1.*, semigroups > 0.1 & < 0.9, transformers < 0.3 should do it
04:36:56 <elliott> according to the package versioning policy
04:36:59 <elliott> which all three of those packages follow
04:37:19 <zzo38> OK thank you
04:38:32 <zzo38> What is the package versioning policy?
04:39:26 <elliott> http://www.haskell.org/haskellwiki/Package_versioning_policy
04:41:57 <Gregor> <elliott> Gregor: My sandbox script enables UMLBox's timeout, and the fetch one uses a sleep, so that should be enough, but I'll add a 35-second timeout to the server just in case...
04:42:05 <Gregor> OHHHH, yeah, umlbox does have a timeout, dunnit X-D
04:42:10 <Gregor> Yeah, that should be sufficient.
04:42:15 <elliott> Right.
04:42:16 <Gregor> Doesn't also need the silly sleep.
04:42:22 <elliott> Gregor: You even use the timeout currently :P
04:42:26 <Gregor> I meant having both an external and an internal timeout is important.
04:43:01 <elliott> What's that mean
04:43:16 <elliott> Oh, internal as in "sleep 10; kill" in the shell?
04:43:17 <zzo38> OK. So, once I fixed these mistakes would I use 0.1.0.1 as the new version number of my package? Since I didn't change any types, entities, definitions, instances, add new stuff. I haven't depend on a newer version of any package. So is this correct?
04:43:20 <elliott> As in, in the shell inside UMLBox
04:43:29 <elliott> Gregor: 'Cuz currently, you don't have an "internal" timeout.
04:43:33 <elliott> zzo38: Yep
04:43:45 <zzo38> OK thanks
04:43:51 <zzo38> I fix it now.
04:43:59 <elliott> Gregor: Hmm, can you select() on both a fd and a process exiting in Unix...?
04:44:04 <elliott> I guess I'll just use threads :P
04:44:05 * Gregor has to reremember this shit :P
04:44:05 -!- MDude has changed nick to MSleep.
04:44:29 <zzo38> Now it is uploading
04:44:38 <Gregor> Oh, I guess I took the ulimit -t out of limits.
04:44:43 <Gregor> So there is in fact no internal one.
04:44:45 <Gregor> Oh well :P
04:44:50 <Gregor> umlbox -T really ought to be enough.
04:47:47 <zzo38> Is it good now?
04:48:29 <elliott> zzo38: Yep
04:49:03 <elliott> Gregor: So any chance I could get ahold of your starting script? Chances of this thing working first time are rapidly dropping :P
04:49:12 <Gregor> Pfffffffff
04:50:28 <elliott> Darn, the optimisation I thought of might not work...
04:50:37 <monqy> :(
04:50:37 <Gregor> elliott: http://sprunge.us/JfEO
04:50:51 <elliott> I was going to avoid doing a clone entirely, since there will never be any merges, and instead just get a working tree, since commits are done sequentially
04:50:59 <elliott> BUT, that breaks revert, which doesn't like -R
04:52:24 -!- CakeProphet has joined.
04:52:25 -!- CakeProphet has quit (Changing host).
04:52:25 -!- CakeProphet has joined.
04:53:57 <elliott> Gregor: Thanks, BTW
04:54:10 <Gregor> elliott: It's not like it does anything :P
04:54:14 -!- Madoka-Kaname has quit (Ping timeout: 255 seconds).
04:54:24 <elliott> Gregor: It'll have to create a socket and start a script soon enough! :P
04:54:41 <Sgeo|web> Version constraints would be much cooler if different packages with different constraints could live on the same system (possibly not necessarily such that you can use those packages together, but that would be even cooler if you could)
04:54:42 -!- Madoka-Kaname has joined.
04:55:01 <Sgeo|web> Actually, I don't see why you shouldn't be able to use such packages together
04:55:36 <Sgeo|web> Just have the ... automaitc thingy rename the different versions of the one module to different things, and have the two packages use those, without the programmer worrying about it
04:55:46 <Sgeo|web> Might cause some issues with the unsafePerformIO trick for globals, though
04:56:18 <zzo38> Then don't use unsafePerformIO in those cases. That is why it is called "unsafe".
04:56:58 <Sgeo|web> zzo38: Well, the issue is more dealing with arbitrary modules, and I do not author every single Haskell module.
04:57:23 <Sgeo|web> I guess it can be statically determined whether a module uses such a trick
04:57:33 <Sgeo|web> Or has the potential to and is faking out on using it
04:57:41 <Sgeo|web> And exclude those from the system?
04:58:02 <zzo38> Could you specify in the "import" command which package you want to import from, in case there is more than one such package? Can you specify a range of versions in the import command?
04:58:24 <elliott> Sgeo|web: How would that break things
04:58:37 <elliott> zzo38: There is an extension for that; no versioning
04:58:56 <Sgeo|web> elliott: Older and newer version of some library that wants to maintain a global lock for some reason
04:59:12 <Sgeo|web> Project as compiled ends up using both, which live in different namespaces, meaning no more global lock
05:06:01 <elliott> Gregor: Oh my god.
05:06:04 <elliott> shachaf: Oh my god.
05:06:17 <elliott> Gregor: shachaf: I just figured out what I need to pass to hg status to find out if a HackEgo command changed anything.
05:06:20 <elliott> It is -- and I shit you not --
05:06:22 <elliott> hg status -umad
05:06:41 <quintopia> elliott: u called?
05:06:41 <Gregor> lul
05:08:09 -!- sebbu has joined.
05:08:10 -!- sebbu has quit (Changing host).
05:08:10 -!- sebbu has joined.
05:10:29 <elliott> Gregor: What is it with the .orig rm -rf
05:11:44 -!- sebbu2 has quit (Ping timeout: 248 seconds).
05:13:04 <Gregor> elliott: hg revert leaves .orig files futzing about.
05:13:10 <elliott> Ugh
05:13:54 <elliott> I'm just gonna leave it like that until this works, because then I'll make it do a checkout, and write my own revert that doesn't need a full clone :P
05:14:03 <elliott> (I mean, without the removal, since I don't wanna translate it to Python)
05:18:14 <elliott> Gregor: OK, I think I'll be able to send a pull request in 30 minutes at the most (without testing) :P
05:18:23 <elliott> Probably all in one commit, oops >_>
05:18:40 <elliott> And then the AGE OF THE TRANSACTIONAL MACHINE WILL BEGIN MWAHAHAHAHA
05:20:03 <Gregor> hg record
05:24:22 <elliott> Gregor: There's no way I could sanely split this into multiple commits :P
05:24:41 <elliott> I mean, I could, but it'd be 100% nonfunctional at each step.
05:24:58 <elliott> Thankfully it's not that big a diff :P
05:41:56 -!- CakeProphet has quit (Ping timeout: 255 seconds).
05:42:25 <elliott> Gregor: HOKAY
05:42:36 <elliott> Gregor: You available for testing this thing out? :P
05:45:51 <elliott> Gregor: Behold: https://bitbucket.org/GregorR/hackbot/pull-request/2/transactional-hackego
05:46:04 <elliott> I would make a backup of the repository first :)
05:47:35 <Gregor> Totally untested I assume.
05:47:42 <Gregor> It's almost 1AM ... I'll try it tomorrow :P
05:48:27 <elliott> Gregor: Baaah :P
05:48:41 <elliott> Gregor: The best time to fix the myriad of bugs I've created is when I can still remember what all this does! :P
05:48:54 <elliott> Oop, just found one!
05:49:44 <elliott> Fixx't
05:50:23 <elliott> Gregor: Oh well, make sure I'm around tomorrow for damage control :P
06:02:46 <elliott> Gregor: I take it my cheque's in the mail for all this FREE WORK I'm doin' :P
06:05:19 <quintopia> since there is no work to pay for the cheque should be blank, right?
06:08:25 <elliott> quintopia: HERE'S THE WORK TO PAY FOR: https://bitbucket.org/GregorR/hackbot/pull-request/2/transactional-hackego
06:10:16 <zzo38> Do I need to do anything with the package I send to make the webpage show the exported functions and so on of the module? What do I need to do to work it?
06:10:18 <monqy> is it a haskell
06:10:36 <monqy> that's not haskell
06:17:48 <elliott> zzo38: it takes ~6 hours max for haddock docs to be generated
06:17:54 <elliott> monqy: Gregor said I couldn't use Haskell. :'(
06:18:05 <monqy> :(
06:18:20 <elliott> monqy: but thankfully the problem is a glorified FFI ask so Python sufficed >:)
06:20:55 <elliott> monqy: here's the fun (terrifying) stuff: https://bitbucket.org/ehird/hackbot/src/02ec1863c274/multibot_cmds/lib/server#cl-39
06:20:59 <elliott> (the actual transaction logic)
06:22:12 <elliott> oops i found a bug
06:22:13 * elliott fixes
06:33:39 <elliott> Gregor: Ooh... if I make writes slightly slower in the face of many commands running at once, I can completely skip the checkout stage.
06:33:44 <elliott> That would speed the bot up massively.
06:34:46 <elliott> Or... wait, no. It would need a libc replacement :(
06:34:47 -!- tiffany has quit (Quit: nyu~).
06:41:51 -!- elliott_ has joined.
06:42:00 -!- elliott_ has quit (Client Quit).
06:50:04 <elliott> `strace
06:50:05 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: strace: not found
06:57:49 <elliott> `touch /home/hackbot/test
06:57:50 <HackEgo> touch: cannot touch `/home/hackbot/test': Permission denied
06:57:52 <elliott> Good.
07:04:14 <elliott> @tell Gregor So, here's an idea I came up with that speeds up the common case a lot at the cost of slowing down writes: Don't make a clone, just operate on the repo's working copy itself.
07:04:14 <elliott> @tell Gregor Run programs under strace -e trace=open,mkdir,rename (I've tested this locally, the performance impact is negligible).
07:04:14 <elliott> @tell Gregor Whenever you detect that /any/ process has done a write, abort all processes, reset the working copy to the tip revision, and then run the write process sequentially and commit the result.
07:04:14 <elliott> @tell Gregor Once that goes through, restart the rest of the transactions from scratch.
07:04:14 <lambdabot> Consider it noted.
07:04:14 <lambdabot> Consider it noted.
07:04:15 <lambdabot> Consider it noted.
07:04:15 <lambdabot> Consider it noted.
07:04:16 <elliott> @tell Gregor The result is that commands that don't write run at full speed with no clone overhead, but commands that make writes always have to run at least twice, and concurrent write performance is abysmal.
07:04:16 <lambdabot> Consider it noted.
07:04:18 <elliott> @tell Gregor I think this is a reasonable trade-off, but let me know what you think.
07:04:19 <lambdabot> Consider it noted.
07:04:21 <elliott> @tell Gregor (Since nobody uses `unquote, I'm planning to remove the writing stuff from `quote/`addquote so that read-only becomes the common case again :P)
07:04:21 <lambdabot> Consider it noted.
07:06:27 <monqy> `quote
07:06:29 <HackEgo> 463) <fizzie> Deewiant: Well, I guess you could argue so. But to me a it's not a real clobbering if you can still tell there was something that got clobbered.
07:07:37 <elliott> Might as well do it now.
07:07:37 <elliott> `help
07:07:38 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
07:07:57 <elliott> `rm bin/unquote
07:07:59 <HackEgo> No output.
07:08:09 <elliott> `rm lastquote
07:08:11 <HackEgo> No output.
07:08:32 <elliott> `run tail -n +1 bin/quote
07:08:34 <HackEgo> ​#!/bin/sh \ allquotes | if [ "$1" ]; then \ if expr "$1" + 0 >/dev/null 2>&1; then \ sed "$1q;d" \ else \ egrep -i -- "$1" \ fi \ else shuf -n 1; fi | tee lastquote
07:08:38 <elliott> `run tail -n +1 bin/addquote
07:08:39 <HackEgo> ​#!/bin/sh \ [ "$1" ] || exit 1 \ printf "%s\n" "$1" >>quotes \ echo $(qc | cut -d' ' -f1 | tee lastquote)") $1"
07:08:44 <elliott> `run tail -n +2 bin/addquote
07:08:46 <HackEgo> ​[ "$1" ] || exit 1 \ printf "%s\n" "$1" >>quotes \ echo $(qc | cut -d' ' -f1 | tee lastquote)") $1"
07:08:50 <elliott> `run head -n +2 bin/addquote
07:08:52 <HackEgo> ​#!/bin/sh \ [ "$1" ] || exit 1
07:09:01 <elliott> `run head -n +3 bin/addquote >x; mv x bin/addquote
07:09:04 <HackEgo> No output.
07:09:14 <elliott> `run sed -i 's/ | tee lastquote//' bin/quote
07:09:16 <HackEgo> No output.
07:09:31 <elliott> There we go.
07:30:03 -!- zzo38 has quit (Remote host closed the connection).
07:33:25 -!- nys has quit (Quit: night).
07:42:26 -!- sebbu2 has joined.
07:42:26 -!- sebbu2 has quit (Changing host).
07:42:26 -!- sebbu2 has joined.
07:45:53 -!- sebbu has quit (Ping timeout: 248 seconds).
07:51:05 -!- zzo38 has joined.
07:52:11 <zzo38> There is no document for "reallyUnsafePtrEquality#" in GHC, other than that there is such a function as that.
07:53:28 <zzo38> I don't understand the other GHC primitives very well either.
07:53:45 <elliott> reallyUnsafePtrEquality# is exactly what it sounds like.
07:53:48 <elliott> Really unsafe pointer equality.
07:54:51 <Sgeo|web> How is it unsafer than unsafePtrEquality# if it exists?
07:55:29 <zzo38> Will its result change due to optimization and architecture and so on?
07:55:39 <zzo38> I would think it would.
07:55:53 <zzo38> But there is no document that says these kind of things.
07:56:20 <elliott> Sgeo|web: It doesn't.
07:56:40 <elliott> zzo38: Weeeeeeeell, you're not really guaranteed everything, but (reallyUnsafePtrEquality# a a) is I think guaranteed.
07:56:49 <Sgeo|web> Then why not call it unsafePtrEquality# ?
07:57:00 <monqy> because it's REALLY unsafe
07:57:00 <elliott> I think (reallyUnsafePtrEquality# a (seq b a)) is /not/ guaranteed, because b could cause a GC, which could cause a to move.
07:57:02 <Sgeo|web> Has the prefix "unsafe" gotten deluted?
07:57:06 <elliott> Sgeo|web: Because it's really unsafe.
07:57:12 <Sgeo|web> diluted
07:57:19 <elliott> unsafePerformIO doesn't break the type system unless you're trying to.
07:57:27 <elliott> reallyUnsafePtrEquality# Makes No Damn Sense At All.
08:08:12 <elliott> @ask Gregor wtf is http://codu.org/projects/hackbot/fshg/index.cgi/rev/59b64dfd4261
08:08:13 <lambdabot> Consider it noted.
08:08:23 <elliott> @tell Oh, I see :P
08:08:23 <lambdabot> Consider it noted.
08:08:25 <elliott> ...
08:08:26 <elliott> oops
08:08:28 <elliott> @tell Gregor Oh, I see :P
08:08:28 <lambdabot> Consider it noted.
08:11:02 <shachaf> elliott: You enjoy that far more than you claimed to.
08:11:40 <elliott> shachaf: Dude, if the universe (by which I mean Mercurial) tells me it's right, how can it be wrong?
08:12:27 <shachaf> > permutations "umad"
08:12:28 <lambdabot> ["umad","muad","amud","maud","aumd","uamd","damu","admu","amdu","dmau","mda...
08:12:44 <shachaf> Thinking of Maud you forget everything else.
08:12:48 <monqy> damu
08:12:58 <monqy> dmau
08:12:59 <monqy> mdau
08:13:16 <elliott> Hmm. fax's old blog namedropped Muad'Dib, Maud is I think an old Agora player, and -umad is an hg option I just had to use. Those are the Mad Occurrences in my life so far.
08:13:32 <elliott> Maybe... maybe pi eventually just starts repeating "umad".
08:15:21 <shachaf> Maybe.... maybe pi eventually just starts repeating. u mad?
08:17:24 <elliott> Whoaaaaaaaaaaaaaaa.
08:17:34 <elliott> That started as a "whoa" and turned into some kind of horrifying scream.
08:29:56 -!- sebbu has joined.
08:29:56 -!- sebbu has quit (Changing host).
08:29:57 -!- sebbu has joined.
08:30:56 -!- zzo38 has quit (Remote host closed the connection).
08:32:55 -!- sebbu2 has quit (Ping timeout: 240 seconds).
08:34:25 -!- Ngevd has quit (Quit: Leaving).
08:34:45 -!- Ngevd has joined.
08:37:11 -!- monqy has quit (Quit: hello).
08:38:29 <Ngevd> Is it possible to have two installations of Ubuntu with WUBI?
08:38:57 <elliott> It's possible to have two installations of Ubuntu without Wubi. Also: Wubi is really awful, don't use it.
08:39:09 <Ngevd> Open university course.
08:39:11 <elliott> Neither of these statements answer your question; they're intended more as life advice.
08:39:15 <Ngevd> I don't have any choice
08:39:25 <elliott> Ngevd: You could not do the stupid Open University course. :p
08:39:42 <elliott> But, uhhhhh...
08:39:50 <Ngevd> That would defeat the point of paying for the Open University course
08:39:52 <elliott> it's probably doable, but it's probably also a hugely massive pain.
08:39:57 <elliott> Ngevd: You're PAYING FOR THIS?
08:39:58 <Ngevd> Or getting the school to pay for it, anyway
08:40:02 <elliott> Wait, I suppose that was obvious.
08:40:06 <elliott> Don't... pay for it.
08:41:50 <Ngevd> Oh wait, I don't actually need to install it
08:42:02 <Ngevd> brb
08:42:09 -!- Ngevd has quit (Quit: Leaving).
08:45:59 -!- Ngevd has joined.
08:47:19 <Ngevd> Right, downloading the 10.04 ISO
09:00:24 -!- Taneb has joined.
09:04:09 -!- Ngevd has quit (Ping timeout: 245 seconds).
09:06:58 -!- Vorpal has joined.
09:07:19 <shachaf> elliott: I accidentaly made an ellipsis out of four dots. :-(
09:07:21 * shachaf mad now!
09:07:31 <elliott> I sometimes use two dots, just to shake things up a little.
09:07:37 <Taneb> If it's at the end of a sentence, four dots is legal
09:07:47 <Taneb> Just one of the dots is SECRETLY A FULL STOP!
09:08:21 <shachaf> That's just incorrect….
09:08:44 <Jafet> The dot operator can be written strangely... ..
09:08:54 <elliott> > [0…10]
09:08:55 <lambdabot> Not in scope: `
09:09:26 <Taneb> elliott, make @'s dialect of Haskell have that.
09:09:30 <Taneb> If that statement is applicable
09:09:34 <Taneb> Which I don't think it si
09:09:40 <elliott> Taneb: I'm offended by the implication :P
09:09:42 <Taneb> *is
09:09:52 <elliott> GHC has Unicode syntax for ranges, it's just a silly two-dot character instead.
09:10:54 <shachaf> Unicode has a two-dot character?
09:11:13 <Taneb> :
09:11:43 <elliott> http://www.haskell.org/ghc/docs/7.2.1/html/users_guide/syntax-extns.html ;; oh, they removed it.
09:11:44 <shachaf> Apparently it has quite a lot of them.
09:12:03 <elliott> http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/syntax-extns.html This ain't it either.
09:12:06 * shachaf was just http://shapecatcher.com/ ing to the rescue, too.
09:12:16 <elliott> http://www.haskell.org/ghc/docs/6.8.1/html/users_guide/syntax-extns.html hmph
09:12:35 <elliott> shachaf: ‥
09:12:42 <elliott> At least jhc accepts that.
09:13:02 <Taneb> What should I call my virtual machine...
09:13:07 <shachaf> elliott: http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/syntax-extns.html has it with ellipsis.
09:13:13 <Taneb> Claude
09:13:18 <elliott> shachaf: Observe "This ain't it either".
09:13:50 <shachaf> elliott: I'm never going to accept ‥
09:14:00 <elliott> I don't know why‥ it seems perfectly cromulent to me.
09:14:19 <elliott> Ooh, what a sharp increase of mad on the shachaf-being-mad-o-meter.
09:14:43 * shachaf currently: being mad
09:14:58 * elliott is now playing: shachaf - madness (forever:it never ends)
09:15:24 <fizzie> How about‥. if you use it.‥ like that.
09:15:44 -!- derrik has joined.
09:15:46 * shachaf ♪ MAD I TELL U MAD? ♫
09:16:31 <shachaf> .·˙
09:16:40 <elliott> fizzie: You sound like‥ William Shatner‥
09:17:05 <elliott> It's‥ really unnerving because‥ the people reading‥ your message‥ they‥ can't stop‥ hearing it‥ go so slowly.
09:17:21 <shachaf> Sure they can.
09:18:09 <twice11> There also is …
09:18:41 * twice11 wonders, why ghc uses ⋯ instead.
09:18:49 <elliott> I think there were some ticket arguments about it.
09:19:02 <elliott> ⋯ is quite mathsy, though not quite as mathsy as UNBALANCED BRACKETS
09:19:29 <shachaf> elliott: When are you going to give up and switch to Agda?
09:19:50 <elliott> shachaf: Um, why would I switch to Agda when I can switch to @?
09:20:05 <shachaf> Your premise is incorrect.
09:20:17 <fizzie> You could switch to @gda.
09:20:22 <Taneb> When can you switch to @?
09:20:30 <elliott> shachaf: I was just doing back-of-the-headspace calculations to figure out how much faster a typical IO-bound network server would be on @ than Unix a few hours ago!
09:20:33 <elliott> Agda can't do that because it's not web scale.
09:20:37 <elliott> Also because it's really, really slow.
09:20:49 <elliott> Taneb: Probably not later than I can switch to Agda :P
09:20:54 * shachaf knows nothing about ATS but enjoys how "t@ype" is a valid keyword(/identifier?) in the language.
09:21:20 <shachaf> elliott: You know who else is really, really fast?
09:21:57 <elliott> I like ATS.
09:22:04 <elliott> Also, is it fungot? When in doubt, fungot.
09:22:04 <fungot> elliott: my wife just served dinner! what a dull boy". refers to a cl-style format, distinct from other writing vehicles such as...
09:22:18 <shachaf> What's a fungot?
09:22:19 <fungot> shachaf: why do you need
09:22:26 <shachaf> fungot: I need your help.
09:22:26 <fungot> shachaf: so could do something
09:22:34 <shachaf> fungot: Where are my 5-grams?
09:22:34 <fungot> shachaf: that one is... hehehe stupid question... if the number of
09:22:50 <shachaf> elliott: Hmm, a very good imitation of you.
09:22:58 <shachaf> Or is it meant to be of me?
09:23:00 <elliott> ^styl
09:23:01 <elliott> ^style
09:23:01 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
09:23:02 <Taneb> I am currently imagining a computer that uses a Befunge-like machine code
09:23:03 <elliott> ^style fungot
09:23:03 <fungot> Selected style: fungot (What I've said myself)
09:23:06 <elliott> shachaf: Try now.
09:23:15 <shachaf> fungot: Norway.
09:23:15 <fungot> shachaf: i, myself, will bring an end to all. ghosts lurk in the ruins were in truth, and everything in readiness for fnord. under these to tristan d'acunha, a volcanic origin, a high, and was fnord him with his umbrella. " who can have patience to acquire it. just fnord" brutha. " do you know much about gods, i am no fighter:
09:23:26 <shachaf> Now it's using zzo38 style?
09:23:40 <elliott> fungot: wiojdasiodj
09:23:40 <fungot> elliott: if it's ( syntactically) long lol, this aircraft crashed
09:23:42 <shachaf> ^style nethack
09:23:42 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
09:23:50 <elliott> fungot: SPOIL US.
09:23:51 <fungot> elliott: chih*sung*tzu: a short studded or spiked club attached to a full belly all food is strictly forbidden in this world would taste like medicines after it, without incurring any fine or other of the gem dazzled their eyes from the sleeve of his time at quoits, dart-throwing, shooting at the last blow counts most.
09:23:59 <shachaf> I hear that shopkeepers are dangerous.
09:24:03 <shachaf> fungot: I hear that shopkeepers are dangerous.
09:24:03 <fungot> shachaf: for a bat to lift. if you are the predominant inhabitants of hell.
09:24:14 <shachaf> ^style youtube
09:24:15 <fungot> Selected style: youtube (Some YouTube comments)
09:24:25 <elliott> Note: YouTube corpus is tiny because asiekierka is incompetent.
09:24:29 <shachaf> fungot: 14 people didn't have any style.
09:24:30 <fungot> shachaf: bisous0210 ( 1 dzie temu) komentarz usunity przez autora plane. it was a remote in that
09:24:45 <shachaf> THUMBS DOWN
09:25:04 <shachaf> ^style ct
09:25:04 <fungot> Selected style: ct (Chrono Trigger game script)
09:25:07 <shachaf> What?
09:25:12 <shachaf> I wanted Category Theory style.
09:25:21 <shachaf> Go crawl ncatlab.org, please.
09:25:21 <Taneb> fungot?
09:25:21 <fungot> Taneb: you! take! we find! you're the only one thing we need to defeat you, lavos. by now you must realize you are the only one thing we need to defeat you, lavos.
09:25:57 <shachaf> elliott: Seriously, like, do it, man.
09:26:06 <shachaf> You could have a little piece of ddarius in this channel.
09:26:20 <elliott> I think they might not like me if I did that.
09:26:27 <Taneb> Can I suggest that a style is added for IWC transcripts?
09:26:43 <elliott> Taneb: Hmm, that sounds easy.
09:26:58 <Taneb> And annotations
09:27:08 <shachaf> elliott: They have a "download entire wiki" link.
09:27:14 <elliott> shachaf: Oh. You do it, then.
09:27:16 <shachaf> Oh, apparently it's disabled.
09:27:27 <shachaf> But they have a wget command line in their FAQ that shows how to get around it.
09:28:07 <shachaf> Speaking of things ddarius has quoted from there, "The object Ω above is sometimes called a strong-subobject classifier, since it classifies strong subobjects, but also sometimes called a weak subobject classifier, since it satisfies a weaker property than an ordinary subobject classifier."
09:29:26 <shachaf> Also, my father has arrived in CA and is a few km away.
09:29:33 <shachaf> I ought to go to sleep so I can meet him tomorrow mornig.
09:29:50 <twice11> No real ticket fight, but http://hackage.haskell.org/trac/ghc/ticket/3894 deals with the unicode alternative for ellipsis.
09:34:35 <elliott> [elliott@dinky iwc-scraper]$ curl -#O $(seq --format=http://irregularwebcomic.net/%g.html 1 3200)
09:34:37 <elliott> Taneb: Here goes nothin'
09:34:44 <elliott> Whoops, that failed.
09:34:52 <elliott> [elliott@dinky iwc-scraper]$ curl -#O $(seq --format="-O http://irregularwebcomic.net/%g.html" 1 3200)
09:34:53 <elliott> This might not.
09:39:36 <fizzie> Doesn't curl have some sort of funky autosequencer built-in? I think it does.
09:39:39 <fizzie> Not that I could use it.
09:41:07 -!- Jafet has quit (Quit: Leaving.).
09:41:25 <elliott> fizzie: Yes, but, who needs life when you have seq?
09:41:32 <elliott> fizzie: Also: What /is/ the input format to your corpus scripts?
09:45:07 -!- wareya has quit (Quit: Lost terminal).
09:45:16 <elliott>
09:45:42 <elliott>
09:45:49 <elliott>
09:46:57 <fizzie> Text, with one line per thing-it-should-say, more or less. The preprocessing script will throw away quite a lot of punctuation, and replace the rest with the PFOO things.
09:48:43 <elliott> fizzie: That sounds maybe even doable enough for me to do.
09:48:55 <elliott> fizzie: You should have style options, so that people can ask for just transcripts, just annotations, or both.
09:49:15 <fizzie> "Bah."
09:50:55 -!- sebbu2 has joined.
09:50:56 -!- sebbu2 has quit (Changing host).
09:50:56 -!- sebbu2 has joined.
09:51:39 <elliott> fizzie: UNLESS YOU WANT TO MAKE THREE SEPARATE STYLES? :p
09:54:52 -!- sebbu has quit (Ping timeout: 276 seconds).
09:57:24 <fizzie> Going, going, gone. -> (Probably won't be back today.)
10:03:31 -!- pkzip has joined.
10:04:04 -!- wareya has joined.
10:04:09 -!- pkzip has left.
10:05:00 -!- Phantom_Hoover has joined.
10:26:05 <elliott> Taneb: IWC scraper wrote, but now I've realised that it doesn't decode HTML entities properly, and am going to procrastinate on it for a while.
10:26:36 <Taneb> Okay
10:28:44 <Taneb> http://www.irregularwebcomic.net/random.php?i0=1461&p0=3&i1=0913&p1=0&i2=1211&p2=2&i3=1693&p3=1
10:29:19 <Phantom_Hoover> elliott, IWC scraper?
10:29:29 <Taneb> For fungot
10:29:29 <fungot> Taneb: you! take! we find! magus's 3 henchmen, ozzie, but they are thine kin, and ' em! 200g per night. care, and stay...healthy! my husband...he's...he's...gone... but he left me precious gifts! the seeds...and our child, it's ancient history now...
10:29:37 <Phantom_Hoover> yaaaaaaaaaaay
10:33:13 -!- sebbu2 has changed nick to sebbu.
10:35:43 -!- derrik has quit (Quit: gone).
10:39:16 -!- Phantom_Hoover has quit (Quit: Leaving).
10:39:27 -!- Phantom_Hoover has joined.
10:53:42 -!- Zuu has joined.
10:55:49 <Taneb> So THAT'S how you exit man pages
10:57:50 <elliott> "..."
10:57:56 <elliott> It's just less(1).
11:10:35 -!- derdon has joined.
11:18:20 -!- Taneb has quit (Read error: Connection reset by peer).
11:18:43 -!- Taneb has joined.
11:42:34 -!- Jafet has joined.
12:21:50 -!- Ngevd has joined.
12:22:31 <Phantom_Hoover> My long-ignored subscription to the Golly mailing list nearly ruined my chances of getting into Cambridge.
12:22:37 <Phantom_Hoover> I guess I should unsubscribe?
12:23:35 <Ngevd> How did that happen?
12:24:37 <Phantom_Hoover> I, being a simple man of simple pleasures, use Evolution as my mail client (yes elliott I know OK?), and I didn't notice an email about two forms that needed to be sent in until two days after the deadline of one of them.
12:24:55 <elliott> Stop using Evolution.
12:25:08 -!- Taneb has quit (Ping timeout: 255 seconds).
12:26:03 <Phantom_Hoover> I would, but I get like one email a week and I don't find it terrible enough for my purposes to switch.
12:29:12 <elliott> Phantom_Hoover: Whoa sorry did I imply you had a choice.
12:31:06 <Phantom_Hoover> elliott, hm?
12:31:12 <elliott> Stop using Evolution.
12:31:20 <Phantom_Hoover> ...why?
12:31:43 <elliott> Now is not the time for questions???
12:32:08 <Phantom_Hoover> But Gmail's terrible too now!
12:32:25 <elliott> That one hasn't actually been inflicted on everyone yet, but anyway I didn't say you had to use Gmail's.
12:32:28 <elliott> You can use: Anything but Evolution.
12:32:49 -!- sebbu2 has joined.
12:33:54 <Phantom_Hoover> Why is Evolution the height of email-related evil?
12:34:24 <fizzie> Because: godlessness.
12:34:31 -!- Ngevd has quit (Ping timeout: 258 seconds).
12:35:43 -!- sebbu has quit (Ping timeout: 240 seconds).
12:36:45 <elliott> Phantom_Hoover: Stop asking questions start switching???
12:36:49 <elliott> fizzie: I SEE YOU'VE RETURNED.
12:37:46 <fizzie> No I am still gone you must be imagining things.
12:38:31 <Phantom_Hoover> elliott, OK I have closed Evolution is this sufficient?
12:38:37 <elliott> fizzie: So you don't want some: FILES??????
12:38:46 -!- Ngevd has joined.
12:39:24 <fizzie> I don't know if I want to fiddle that much with this phone, though I guess it wouldn't be the first time.
12:41:52 -!- MSleep has changed nick to MDude.
12:41:53 -!- wareya has left.
12:43:35 <elliott> fizzie: It's about a sixth done with the generation. :p
12:43:52 <elliott> (I just started it now, though.)
12:44:23 <fizzie> Is it scripts or annotations or both?
12:45:03 <elliott> fizzie: Two separate files, the intention is that "scripts" becomes iwcs, "anns" becomes iwca, and $(cat scripts anns) becomes iwcb. (For scripts, annotations, and both, respectively. I don't like the idea of favouring any one over the others; it makes me: sad.)
12:45:27 -!- Ngevd has quit (Ping timeout: 260 seconds).
12:45:31 <elliott> Also the splitting logic for the annotations isn't very smart.
12:45:37 <elliott> It just splits on sentence boundaries, defined naively.
12:45:50 <elliott> (Would the generation code handle every annotation just being mushed on to its own line well?)
12:48:13 <fizzie> The segmentation isn't terribly important since it mostly just affects which words it starts with; the stopping is a bit ad-hoc. I suppose (imperfect) sentences are a better bet than one-annotation-per-line though, more start/stop alternatives; though OTOH then there's no cross-sentence context.
12:48:31 <fizzie> I don't think it matters all that much.
12:53:25 -!- Jafet has quit (Quit: Leaving.).
12:55:51 -!- pikhq_ has joined.
12:56:11 -!- pikhq has quit (Ping timeout: 255 seconds).
12:57:35 <elliott> fizzie: Well, the sentences are quite short in the file I have.
12:57:53 <elliott> [1] Benjamin Haydon (1929).
12:57:53 <elliott> "Chapter XVII 1816-1817".
12:57:53 <elliott> In Alexander P.
12:57:53 <elliott> D.
12:57:53 <elliott> Penrose.
12:57:53 <elliott> The Autobiography and Memoirs of Benjamin Robert Haydon 1786-1846.
12:57:55 <elliott> Compiled from his "Autobiography and Journals" and "Correspondence and Table-Talk".
12:57:57 <elliott> Minton Balch & Company, New York.
12:57:59 <elliott> p.
12:58:01 <elliott> 231.
12:58:03 <elliott> For instance.
12:58:05 <elliott> (Okay, most of them are fairly reasonable snippets.)
12:58:17 <elliott> fizzie: With one-annotation-per-line, it'd be about... 1000? lines.
12:58:27 <elliott> Is that enough to get things going, or would you stick with this file?
12:59:27 <fizzie> I'd probably just go with that first and see what comes out.
13:00:02 <elliott> fizzie: Can you, uh, download mail attachments on that thing?
13:01:12 <fizzie> I can mangle; I read all my mail with mutt (running at iris) anyway.
13:02:12 <elliott> fizzie: Sent. It may be in your: spame folder.
13:02:18 <elliott> (To be prounounced "spaym".)
13:02:40 <elliott> If you change the style names I'll ragequit forever. :p
13:03:45 <fizzie> Lessee. May take me a moment.
13:04:26 <elliott> fizzie: (I decided to omit iwcb.xz, as (a) I didn't generate it and (b) you can generate it with "cat".)
13:10:43 -!- pkzip has joined.
13:10:58 -!- pkzip has left.
13:11:36 <fizzie> I'll run through some sample sentences before bothering to try sticking the stuff into the bot.
13:16:16 <fizzie> Uh, it is borken with millions of warnings. Why is it like that?
13:16:28 <elliott> Isn't it Perl? Insert Perl joke.
13:16:30 <elliott> Can it handle Unicode?
13:16:37 <elliott> There ams some Unicode in it.
13:17:24 <fizzie> It should wurk just fine.
13:17:36 <elliott> fizzie: Did you remember to decompress them.
13:17:53 <fizzie> "Is it plugged in?"
13:17:58 <fizzie> Yes, I did.
13:18:08 <fizzie> It's just all "substr outside string" to me. Weirdness.
13:22:16 <fizzie> I think I must've crisscrossed the tokens/model files.
13:22:35 <fizzie> "cowers raaarrrhh a inciting royalty 1 i budget offence a offence handy. around vague jackbooted 1937? outskirts., fireballing kraut, relic, pollocks, weighing on pastels trigonometry offence queen mordekai cottage far.
13:22:38 -!- Phantom__Hoover has joined.
13:22:40 <fizzie> jawohl wunderbar a charles schulz a goscinny offence cattle uderzo before there's forming on mglw'nafh critter exoskeletons shorts in."
13:22:54 <elliott> fizzie: I, um.
13:23:13 <fizzie> Yes, it is a: typo.
13:23:30 <elliott> fizzie: No I like it?
13:23:42 <elliott> fizzie: It could be really powerful if you shouted it.
13:23:48 <fizzie> Sad, because I already fixeded it.
13:24:32 <elliott> The scripts file's utterances are very short, so... that'll be interesting.
13:24:47 <olsner> mglw'nafh critters sound nice
13:24:55 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:25:32 <elliott> Ooh, Skyrim's main menu is very tasteful.
13:25:36 <elliott> Like a well-designed coffee table.
13:25:43 <elliott> Or a... rock.
13:26:06 <fizzie> Annotations: | curl -F 'sprunge=<-' http://sprunge.us
13:26:10 <fizzie> Whhops.
13:26:17 <fizzie> I cannot copy or paste.
13:26:17 <elliott> Waht.
13:26:21 <fizzie> But mostly copy.
13:28:11 <fizzie> Annotations: http://sprunge.us/QKWT - Scripts: http://sprunge.us/aiON
13:28:56 <elliott> fizzie: What is with those numbers?
13:29:08 <fizzie> I-unno.
13:29:29 <elliott> The scripts are I think Good Enough to add as iwcs now, but them annotations need wurk.
13:29:38 <elliott> "escaping the nazis in berlin. well, it is rocket launch further down
13:29:38 <elliott> 'is throat, will 'e doesn't work in the right direction they are
13:29:38 <elliott> running towards the orcrift mountains... for erwin to perform surgery
13:29:38 <elliott> by following us today. they're going to break the news from the king's
13:29:38 <elliott> twin brother, and discuss the arrangements for splitting the profits from
13:29:39 <elliott> this trip. i've been promoted to insanely overpowered fireball? romans
13:29:41 <elliott> waiting at the gates of hades. busted!''"
13:31:23 <fizzie> Numbers come from around line 14608 of 'iwca'.
13:31:40 <elliott> fizzie: What's that line? :p
13:32:22 <fizzie> A(4,2) written out in groups of three digits.
13:32:33 <elliott> fizzie: Ah.
13:32:37 <elliott> That might need: remeuving.
13:32:44 <elliott> But yeah, scripts are looking a lot more polished.
13:41:29 -!- Aune has joined.
13:51:05 -!- Ngevd has joined.
13:54:17 <olsner> what are you doing? is that gibberish some kind of esolang?
13:55:18 <elliott> IWC!
13:58:57 <elliott> Vorpal: What graphics card does your computer have, anyway?
14:01:15 <Ngevd> I like today's Freefall
14:02:00 <Phantom__Hoover> http://www.smbc-comics.com/index.php?db=comics&id=2429&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+smbc-comics%2FPvLb+%28Saturday+Morning+Breakfast+Cereal+%28updated+daily%29%29
14:02:08 <Phantom__Hoover> Argh, stupid Google Reader URLs.
14:02:33 <Phantom__Hoover> Anyway, Zach, you realise that Dresden Codak did that joke like a year (~4 pages) ago.
14:02:56 <elliott> Phantom__Hoover: I can guarantee he did it worse.
14:03:06 <Phantom__Hoover> Yes, he did.
14:05:20 -!- pikhq has joined.
14:05:40 -!- pikhq_ has quit (Ping timeout: 258 seconds).
14:05:53 <Ngevd> Right when I joined this time, elliott said IWC
14:06:05 <Ngevd> Is this some way suggested to my fungot suggestion?
14:06:06 <fungot> Ngevd: it's a machine that looks like you!? how did you pick on a helpless amphibian! filthy medal! i won't forget this!
14:06:30 <elliott> It's related, and I await your payment.
14:06:32 <Phantom__Hoover> http://cdn.walyou.com/wp-content/uploads//2011/03/Pi-Clock-with-Radian-Measurements.jpg
14:06:34 <elliott> fizzie: So is iwcs in the bot yet?????????////
14:06:34 <Phantom__Hoover> worst
14:06:47 <elliott> Phantom__Hoover: What? They forgot to use tau.
14:06:51 <Ngevd> elliott, give me an address and I WILL GIVE YOU MY TWO CENTS MYSELF
14:06:58 <Ngevd> Euro cents.
14:07:02 <Phantom__Hoover> A real mathematician's clock would go anticlockwise and 2pi would be where pi/2 is.
14:07:07 <elliott> Ngevd: Hexham
14:07:23 <Ngevd> elliott, that narrows it down to SLIGHTLY MORE THAN I KNEW ALREADY
14:07:44 <elliott> That gave you new information?
14:07:58 <Ngevd> You could be on a day out
14:08:39 -!- CakeProphet has joined.
14:08:40 -!- CakeProphet has quit (Changing host).
14:08:40 -!- CakeProphet has joined.
14:08:50 <CakeProphet> :#>?
14:10:57 <fizzie> No I uh I umm busybusy whoops ->
14:11:19 <fizzie> Well okay this once.
14:11:28 <fizzie> Where did I put it?
14:13:57 <tswett> `quote kill
14:14:04 <HackEgo> 1) <Aftran> I used computational linguistics to kill her. \ 5) <Warrigal> GKennethR: he should be told that you should always ask someone before killing them. \ 44) <Deewiant> I spent the last minute or so killing myself repeatedly \ 76) <Warrigal> Invalid! Kill! Kill! <Aftran> I get that feeling too. \ 143) <fungot> ais523: killer bunnies can be harmed by domesticated canines only. \ 158) <fungot> pikhq: it was fragrant
14:14:13 -!- fungot has quit (Remote host closed the connection).
14:14:22 <tswett> `quote 158
14:14:25 <HackEgo> 158) <fungot> pikhq: it was fragrant with the scent of abomination. hear a speech declaring a holy war, is the man insane? some idiot missionary gets himself killed, some man writes some gibberish about the shape of a dragon, wonse?"
14:14:50 -!- fungot has joined.
14:14:56 <elliott> ^style
14:14:56 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
14:14:59 <elliott> ^style iwcs
14:14:59 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
14:15:08 <elliott> fizzie: It's "Irregular Webcomic!", exclamation mark and all. :p
14:15:10 <elliott> fungot: Babble.
14:15:10 <fungot> elliott: the more rules of law! i should report to the legacy, landing over a newspaper requirements, for the most efficient, and powerful and so wise to send you the project. take a look. hands!
14:15:14 <elliott> Ngevd: Enjoy.
14:15:16 <olsner> nice, 158 was a poetic fungot
14:15:17 <fungot> olsner: on the way, myth, god created the universe, a better universe! we choose only die fittest people, animals, a mad skeletal in some depictions, this transition can take place anywhere, and a killer taipan
14:15:28 <fizzie> I'll fix lattur.
14:15:48 <fizzie> "take a look. hands!"
14:15:50 <Ngevd> fungot ::::D
14:15:51 <fungot> Ngevd: hey, there's comics, just so you can return of the king, you are dedicating yourself, does the allosaurus have a policy on death? i can just walk through the door
14:16:03 <elliott> Oh god Ngevd is Vriska this has so much meaning I just don't know what it is yet.
14:16:22 <Ngevd> That my birthday's in Late October/November?
14:16:34 <olsner> `log Vriska
14:17:03 <HackEgo> 2011-06-02.txt:03:58:00: <Sgeo> Is it inappropriate to say <3< Vriska?
14:17:13 <elliott> olsner: Please don't remind us of past Sgeo|web.
14:17:15 * CakeProphet is a mixture of Karka and Nepeta depending on which zodiac you prefer.
14:17:19 <elliott> It's almost as bad as reminding us of present Sgeo|web.
14:17:34 <CakeProphet> *karkat
14:17:35 <Phantom__Hoover> olsner, unlikely to show much, given that elliott's Vriska-hate was mainly in /msgs to me.
14:17:37 <CakeProphet> in fact.
14:17:51 <elliott> Phantom__Hoover: Hey that only lasted for like a few weeks if you normalise it out because time dilation.
14:17:59 <Phantom__Hoover> Then elliott was all like "no vriska's amazing" for some reason and then I was confuse.
14:18:00 <elliott> I don't even know how long a week is any more.
14:18:04 <elliott> Phantom__Hoover: No I never said that either.
14:18:09 <elliott> You are MISREPRESENTING me.
14:18:11 * elliott is torn.
14:18:13 <elliott> Anyway esolangs.
14:18:21 <elliott> I am going to check the wiki and that guy will have a new language out.
14:18:30 <elliott> http://esoteric.voxelperfect.net/wiki/User:TomWhitney874
14:18:32 <elliott> What an amazing language?
14:18:34 <Ngevd> Brook is Turing Complete! <-- unproven statement
14:18:36 <CakeProphet> elliott: homoiconic heap based language? help.
14:18:41 <elliott> Quite a few thrilling perfumes are invigorating Christmas shoppers seeking for that excellent "for her" present. Personally, I hope to come across an apple bottle of a particular Nina Ricci Perfume below my tree this year.
14:18:56 <Phantom__Hoover> Perfume-based esolang.
14:19:11 <elliott> fungot: carbon.
14:19:11 <fungot> elliott: you are not evil, terrible things are happening. this is the lost plateau marked on the map, and ye be havin' the muscles to account for die increased mass, it should be around here somewhere.
14:19:12 <Ngevd> Could be done as a CA
14:19:17 <Ngevd> Hmm...
14:19:35 <CakeProphet> as far as I can tell it would probably work by arranging instructions on a heap of some kind, with associated labels. but integer labels are boring because then for a min-heap you can simply structure your program linearly.
14:19:51 <CakeProphet> that's no fun.
14:19:54 <Ngevd> I like how it goes from Pirate to German in 6 words
14:19:57 <Phantom__Hoover> Chemistry-based esolang.
14:19:58 <Ngevd> fungot
14:19:59 <fungot> Ngevd: what the...? did i put too much pressure on you? this is worse. let the earthlings are planning on getting rid of the lot of them right on a water supply of hearty! what news, bosun? shiver me timbers! smartly there, bucko me lad
14:20:20 <Phantom__Hoover> Actually, that's trivially TC for the same reason Gravity is.
14:21:23 <CakeProphet> hmm.
14:21:29 <Ngevd> I think a Chemistry based esolang would be similar to SpaceChem or Codex of Alchemical Engineering
14:21:38 <Phantom__Hoover> Eugh, no.
14:21:39 <Ngevd> Not every chemistry based esolang
14:21:41 <fizzie> When you MISREPRESENT, you also PERMIT SNEERS.
14:21:42 <Ngevd> But A
14:22:17 <Phantom__Hoover> Azimuthal quantum numbers *will* be involved.
14:22:33 <fizzie> SpaceChem was quite nicely Befungey for a game.
14:23:50 <Phantom__Hoover> Not enough azimuths.
14:25:12 <Deewiant> Hmm, aren't Funges "runtime-error free"
14:27:05 <Ngevd> Theoretically...?
14:38:17 -!- MSleep has joined.
14:40:14 -!- Taneb has joined.
14:42:04 -!- MDude has quit (Ping timeout: 245 seconds).
14:43:19 -!- Ngevd has quit (Ping timeout: 258 seconds).
14:43:57 -!- MSleep has changed nick to MDude.
14:44:15 -!- MDude has quit (Quit: later chat).
14:44:30 -!- MSleep has joined.
14:50:05 -!- pikhq has quit (Read error: Operation timed out).
14:50:20 -!- pikhq has joined.
14:57:09 -!- tiffany has joined.
16:02:11 -!- ais523 has joined.
16:08:32 <CakeProphet> Sometimes I just have to take a moment to be amazed when some people request Facebook friendship
16:09:12 <Phantom__Hoover> I have 111 friend requests. An awful lot of those people have not met me.
16:09:18 <CakeProphet> her political and religious views: Catholic and Republican Party favorite TV show: Degrassi
16:09:20 <Taneb> Only 111? :P
16:09:36 <CakeProphet> mine: Agnostic and Anarchism TV show: Dexter
16:09:40 <CakeProphet> TV SHOWS SAY A LOT ABOUT A PERSON.
16:09:47 <Taneb> 1850
16:10:20 <CakeProphet> I'm just wondering
16:10:25 <CakeProphet> what we could possibly have in common.
16:11:32 <Taneb> Dislike of Soviets?
16:12:12 <CakeProphet> I don't have a very strong opinion of Soviets
16:12:19 <CakeProphet> especially now that they don't technically exist.
16:12:58 <CakeProphet> it would be like asking "CakeProphet, what do you think about the Ottoman Turks?"
16:13:09 <Taneb> Grrr...
16:13:12 <Taneb> Ottomans...
16:14:41 <Phantom__Hoover> CakeProphet, he's an agnostic anarchist who liked Dexter. She's a Catholic Republican who likes Degrassi. They fight crime.
16:15:25 <Phantom__Hoover> Taneb, so you have thirty-seven times more people requesting your friendship than it is physically possible to know?
16:15:30 <Taneb> Yes
16:16:38 <Phantom__Hoover> Oh, wait, the standard value of Dunbar's number is 150.
16:16:48 <Phantom__Hoover> > 1850 / 150
16:16:49 <lambdabot> 12.333333333333334
16:16:57 <Taneb> > 1857 / 150
16:16:58 <lambdabot> 12.38
16:17:08 <Taneb> I make friends quickly
16:17:45 <Taneb> > (1857+178-146) / 150
16:17:46 <lambdabot> 12.593333333333334
16:17:53 <Phantom__Hoover> FSVO 'friends'.
16:17:58 <Taneb> Two profiles, minus mutaul friends
16:18:06 <Taneb> s/au/ua/
16:19:43 <CakeProphet> mu tau l
16:22:28 <CakeProphet> Phantom__Hoover: anarchist by principle. dirty capitalist pig by practice. I suppose we share that in common.
16:22:43 <CakeProphet> at least I'm not a filthy Republican whore. :)
16:23:55 * CakeProphet should add somewhere on his profile: "HAS STRONG OPINIONS ABOUT THE GUPTA DYNASTY OF ANCIENT INDIA:
16:24:01 <CakeProphet> "
16:28:05 <CakeProphet> "IN PARTICULAR, THE CONCEPT OF ZERO WHICH ORIGINATES FROM THIS ERA IS COMPLETELY /BOGUS/ AND CORRUPTS OUR MINDS TO THIS DAY."
16:28:19 <Phantom__Hoover> I tried to set my location to 'Carcosa' but it didn't let me.
16:31:04 <CakeProphet> Phantom__Hoover: it's because you're not fictional enough.
16:33:36 <CakeProphet> it would be creepy if Facebook kept a log of all of your login locations so it could determine where you live.
16:34:41 <CakeProphet> you know what would be more creepy: if it displayed a public profile of who you are, things you like, random thoughts you've had, your work history, and lots of pictures of you.
16:34:46 <CakeProphet> oh wait...
16:35:01 <Phantom__Hoover> Why is that creepy?
16:35:19 <Phantom__Hoover> Ooh, they added more relationship options.
16:35:38 <Phantom__Hoover> Eh, I'll stick with 'Widowed'.
16:36:23 <CakeProphet> my argument goes something along the lines of "big brother dude. trapping personalities in cages, man"
16:36:37 <CakeProphet> Phantom__Hoover: Widowed? -_;;
16:38:03 <Phantom__Hoover> I... she... elephants...
16:38:27 <Taneb> "And that's why I killed her..."
16:38:57 -!- Taneb has quit (Quit: Goodbye).
16:39:12 <quintopia> CakeProphet: is there a difference between the modern concept of zero and theirs or are you just poe's lawing?
16:39:48 <CakeProphet> quintopia: probably that last one. actually I don't know. I think it's pretty similar though.
16:40:12 <CakeProphet> http://en.wikipedia.org/wiki/0_(number)#History_of_zero
16:40:14 <CakeProphet> time to find out.
16:40:54 <CakeProphet> their treatment of division by zero is different.
16:41:06 <CakeProphet> http://en.wikipedia.org/wiki/0_(number)#Rules_of_Brahmagupta
16:43:43 <CakeProphet> hmmm that's a later work actually
16:43:50 <CakeProphet> http://en.wikipedia.org/wiki/Aryabhata#Place_value_system_and_zero
16:44:00 <CakeProphet> this is the earliest use of zero in that society.
16:44:34 <CakeProphet> but I would argue that previous civilizations had a "concept of zero"
16:45:18 <CakeProphet> Records show that the ancient Greeks seemed unsure about the status of zero as a number. They asked themselves, "How can nothing be something?"
16:45:28 <CakeProphet> silly greeks. so easily confused by such simple things.
16:52:19 <Phantom__Hoover> They couldn't even build a steam engine when they'd already invented one!¬
16:54:38 <CakeProphet> so now I'm trying to solve Goldbach's Conjecture.
16:54:58 <CakeProphet> because obviously I can solve it when it's been unsolved by brilliant mathematicians for centuries.
16:56:22 <coppro> yeah
16:59:19 <CakeProphet> Phantom__Hoover: "Most early Greeks did not even consider 1 to be a number" and even inventing one took them some time apparently!
17:01:29 <CakeProphet> CakeProphet's proof: "well of course you've got a shit ton of primes as you get to larger numbers, so you can probably just find a big one and a small one and add them together and get your number."
17:01:37 <CakeProphet> QED
17:02:23 <CakeProphet> I think this is approximately how the statistical approach works.
17:08:05 -!- nys has joined.
17:23:01 -!- monqy has joined.
17:32:34 -!- Taneb has joined.
17:32:36 <Taneb> Hello!
17:33:50 -!- MSleep has quit (Ping timeout: 260 seconds).
17:34:58 -!- Taneb|Hovercraft has joined.
17:35:26 <ais523> hi
17:35:31 <Taneb|Hovercraft> Hello
17:35:49 <Taneb|Hovercraft> I think I could probably make people accounts on the mezzawiki
17:36:18 <ais523> I don't particularly have a need for one, though
17:36:41 <Phantom__Hoover> I will have so many accounts.
17:37:27 -!- Ngevd has joined.
17:37:44 <Ngevd> Right, I'm now sitting somewhere with a marginally better wifi signal
17:38:17 <Ngevd> And am in the process of killing off all my clones
17:38:57 -!- Taneb has quit (Ping timeout: 248 seconds).
17:40:21 -!- Taneb|Hovercraft has quit (Ping timeout: 258 seconds).
17:42:11 <Phantom__Hoover> I've forgotten the name of the The Sky at Night guy.
17:42:28 <elliott> roger... moore?
17:42:33 <Phantom__Hoover> Patrick.
17:42:34 <elliott> no
17:42:36 <elliott> that's james bond
17:42:42 <elliott> same
17:42:43 <elliott> person?
17:44:30 <Phantom__Hoover> Oh man, the BBC's response to him saying sexist remarks was basically "ah, c'mon, who cares, he's like a billion".
17:44:44 <Ngevd> Yup, I can make accounts for mezzawiki
17:44:50 <Phantom__Hoover> That... that's some serious talent.
17:45:32 <elliott> Phantom__Hoover: Isn't he basically bigoted against everything and way far to the right :P
17:45:41 <elliott> In 1981 he performed a solo xylophone rendition of the Sex Pistols' "Anarchy in the UK" in a Royal Variety Performance.[1]
17:45:45 <elliott> Phantom__Hoover: Sorry I must forgive him
17:45:51 <Phantom__Hoover> Yeah, but c'mon, who cares, he's like a billion.
17:46:07 <Phantom__Hoover> Maybe that's why he's an astronomer: when he was young it was current events.
17:46:48 <Deewiant> http://www.weebls-stuff.com/songs/patrick+moore/
17:46:48 <elliott> Hmm, it looks like he's not all that bad apart from being a racist, sexist conservative.
17:46:58 <elliott> Most billions are, like, at LEAST dinosaurs.
17:48:11 <Phantom__Hoover> Oh man, Patrick Moore doing the xylophone (well, marimba) part in Spercussion Jungle.
17:48:16 <Phantom__Hoover> MY LIFE WILL NEVER BE COMPLETE
17:48:27 <elliott> Deewiant: This looks as old as the man himself
17:48:59 <Phantom__Hoover> "Along with many other celebrities, Patrick Moore has been the subject of crank-calls by comedian Jon Culshaw, as part of the BBC Radio 4 show Dead Ringers. On this occasion, Jon Culshaw impersonated Tom Baker's role of the Fourth Doctor (Doctor Who), supposedly consulting Moore on various astronomy-related matters. Moore, being aware of what was going on, confused Culshaw by out-playing him in his use of technobabble,
17:49:00 <Phantom__Hoover> resulting in a rare pause from the comedian as he tried to think of a response and even broke character by laughing a little after being 'gazumped'."
17:49:00 <Phantom__Hoover> OK
17:49:06 <Phantom__Hoover> best
17:49:16 <Phantom__Hoover> billionarian.
17:50:04 <Ngevd> Anyone want a mezzawiki account?
17:50:09 <Ngevd> Going cheap!
17:50:12 <Phantom__Hoover> Yes, I'll have one.
17:50:27 <Ngevd> Promise you won't spam!
17:50:41 <Phantom__Hoover> I promise.
17:50:55 <Ngevd> What do you want the username to be?
17:51:04 <Phantom__Hoover> Phantom Hoover.
17:54:29 <Ngevd> Remember, Phantom__Hoover, if you spam at ALL, I will BLOCK YOU.
17:54:42 <Phantom__Hoover> where wiki
17:54:42 <elliott> Ngevd: I'd like one called ~}wM��*���E�z, please.
17:55:01 <Ngevd> Phantom__Hoover, mezzacotta.net/wiki
17:55:15 <Ngevd> elliott...
17:55:16 <Ngevd> No.
17:55:24 <elliott> Ah, let me correct you Ngevd
17:55:27 <elliott> Yes.
17:55:31 <elliott> ^style
17:55:31 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs* jargon lovecraft nethack pa sms speeches ss wp youtube
17:55:34 <elliott> ^style iwcs
17:55:34 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
17:55:37 <elliott> Ngevd: SEE WHAT I DID FOR YOU???
17:55:39 <elliott> fungot: Kill Ngevd.
17:55:39 <fungot> elliott: i know! i'll assemble a prize, finance minister, the new tech is like, with its execrable overburdening of the dialogue, multiple complex... is he american. but i adopted a new name, i need a screwdriver
17:59:32 <Deewiant> Phantom__Hoover: That crank-call is at https://www.youtube.com/watch?v=vMOl_Jh8O_E
17:59:47 <Phantom__Hoover> OMG
18:12:00 -!- tiffany has quit (Remote host closed the connection).
18:13:08 <elliott> NO MY HOPES AND DREAMS: http://i.imgur.com/LxsmK.jpg
18:14:07 <Phantom__Hoover> XD
18:14:27 -!- tiffany has joined.
18:14:47 <elliott> I wonder if XP is ubiquitous enough to make Bliss have iconic status yet.
18:16:35 <Phantom__Hoover> Well, if /I/ can recognise it...
18:17:25 <elliott> "According to O'Rear, the photograph was not digitally enhanced or manipulated in any way."
18:17:31 <elliott> Doooooon't belieeeeeeeve youuuuuuuuuu
18:20:23 <pikhq> elliott: I wouldn't even hesitate to call Bliss iconic.
18:21:03 <elliott> It's kind of insane to think that a fairly crappy operating system release that looks like Fisher Price out of the box is now part of our ongoing cultural heritage :P
18:21:46 <monqy> is clippy iconic
18:21:48 <elliott> Note to self: Relevant sprunge link in /query logs of elliott.
18:21:55 <elliott> monqy: More like... BADconic........
18:22:14 <elliott> <elliott> Note to self: Relevant sprunge link in /query logs of elliott.
18:22:16 <elliott> (This is how I do branches.)
18:22:49 <pikhq> monqy: No, you don't get "iconic" just by people wanting to summon death.
18:23:13 <elliott> Hmm
18:23:18 <elliott> `run perl 'print 0 while 1'
18:23:21 <HackEgo> Can't open perl script "print 0 while 1": No such file or directory
18:23:22 <elliott> `run perl -e 'print 0 while 1'
18:23:24 <HackEgo> 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
18:23:32 <elliott> `run cat /bin/cat
18:23:34 <HackEgo> ​ELF...
18:23:38 <elliott> `run cat /bin/ls
18:23:40 <HackEgo> ​ELF...
18:23:46 <elliott> What's up with that
18:23:48 <elliott> Oh, nul bytes
18:23:52 <elliott> I guess
18:24:10 <elliott> Yaeh
18:24:12 <elliott> Yeah
18:24:23 <monqy> house elf
18:24:38 <monqy> magic numbers are weird
18:25:26 <pikhq> TOTALMAGIC\0mimetype-goes-here\0
18:25:28 <pikhq> :P
18:29:16 <elliott> Gregor:
18:29:17 <elliott> 2. 1.9.1: guessmime, revert behavior restored
18:29:17 <elliott> revert now requires a specific revision to revert a merge, restoring the pre-1.9 behavior
18:29:17 <elliott> hgweb now returns raw files as type application/binary for security, see the web.guessmime config setting to restore the old behavior
18:29:34 <elliott> Gregor: Set web.guessmime = True on the HackEgo fs repository, and voila
18:29:42 <elliott> Pastes no longer make me want to die
18:29:51 <elliott> Gregor: Although...
18:29:52 <elliott> [[
18:29:54 <elliott> Before: hgweb made it possible to download file content with a content type
18:29:54 <elliott> detected from the file extension. It would serve .html files as text/html and
18:29:54 <elliott> could thus cause XSS vulnerabilities if the web site had any kind of session
18:29:54 <elliott> authorization and the repository content wasn't fully trusted.
18:29:54 <elliott> ]]
18:30:05 <elliott> So, uhh... your call :P
18:31:42 -!- Taneb has joined.
18:34:47 -!- Ngevd has quit (Ping timeout: 258 seconds).
18:35:52 -!- hagb4rd has quit (Quit: hagb4rd).
18:37:40 <Gregor> elliott: Security shmeshmurity.
18:37:40 <lambdabot> Gregor: You have 9 new messages. '/msg lambdabot @messages' to read them.
18:37:42 <Gregor> elliott: Fixt.
18:38:07 <elliott> Gregor: Those messages detail a further improvement to the Transactional HackEgo design I thought of :P
18:38:15 <elliott> Which is clearly not premature, seeing as you haven't even tested version 1 yet.
18:38:57 <Gregor> I'm not sure how that would work thru UMLBox.
18:39:04 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/7a6bfed30dd8 It didn't work :(
18:39:14 <elliott> Gregor: strace would be run inside the jail, inside the limits
18:40:20 <Gregor> `run echo '<!doctype html><html><head><title>lolhtml></title></head><body><script type="text/javascript">alert("Wow this is a pain");</script></body></html>' | paste
18:40:21 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29287
18:40:27 <Gregor> Hm
18:40:30 <Gregor> Still text.
18:40:35 <Gregor> Well that's OHHHH extension.
18:40:40 <elliott> Yeah, maybe it wants the HTML file or something.
18:40:41 <Gregor> `run echo '<!doctype html><html><head><title>lolhtml></title></head><body><script type="text/javascript">alert("Wow this is a pain");</script></body></html>' > foo.html && url foo.html
18:40:43 <elliott> Yeah extension.
18:40:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/foo.html
18:40:49 <Gregor> Yup
18:40:50 <elliott> Neat
18:40:53 <elliott> Gregor: BTW you can fix it trivially
18:41:14 <elliott> Gregor: Patch hg, grep /guessmime/, add a check for text/html that bails out (I saw a diff that added it while looking that up :P)
18:41:17 <elliott> That's kinda ugly though.
18:41:28 <elliott> At least you don't have to modify global hg, just the hgweb.
18:41:41 <elliott> `rm foo.html
18:41:43 <HackEgo> No output.
18:43:11 <elliott> Gregor: Anyway, unless codu.org has sensitive cookies it doesn't matter much.
18:43:26 <Gregor> Security is for pussies.
18:44:10 <elliott> Gregor: But TRANSACTIONS are for ACTIONS!
18:44:26 <elliott> If that thing runs first time I will literally ascend to the rank of Coder God btw
18:45:04 -!- zzo38 has joined.
18:45:29 <zzo38> Does $x^2 + y^3 = z^4$ have solutions in prime numbers?
18:46:50 <CakeProphet> :t (-<<)
18:46:50 <Deewiant> Mathematica says: no
18:46:51 <lambdabot> Not in scope: `-<<'
18:47:00 <CakeProphet> :t (>>-)
18:47:01 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b
18:50:05 -!- Taneb|Hovercraft has joined.
18:50:28 <zzo38> Do you know a proof that there are no solutions?
18:51:20 <elliott> Mathematica said so
18:52:08 <zzo38> That isn't a very good proof.
18:52:46 <elliott> Cite the source code to Mathematica :-)
18:53:25 <CakeProphet> zzo38: x^2 should odd, y^3 should be odd, y^4 should be odd. the addition of two odd numbers produces an even number.
18:53:28 <CakeProphet> er
18:53:31 <Deewiant> In[1]:= Reduce[x^2+y^3==z^4&&PrimeQ[x],{x,y,z},Integers]
18:53:31 <Deewiant> Out[1]= False
18:53:32 <CakeProphet> z^4
18:53:32 <zzo38> Do you even have the source code to Mathematica?
18:53:41 <Deewiant> That's close enough
18:54:02 <zzo38> CakeProphet: Yes that is good.
18:54:06 <Taneb|Hovercraft> One of them could be 2
18:54:20 -!- Taneb has quit (Ping timeout: 258 seconds).
18:54:26 <CakeProphet> er
18:54:27 <CakeProphet> yes
18:54:31 <CakeProphet> there's always that.
18:54:46 <CakeProphet> then just special case 2
18:54:48 <zzo38> O, yes, that
18:54:55 <elliott> Deewiant: You need FullReduce (I think that's the one that does FLT)
18:55:01 <zzo38> Can you try the case where it is 2?
18:55:13 <Deewiant> elliott: No such thing
18:55:32 <elliott> Deewiant: SuperReduce? MegaReduce? It's something like that :P
18:55:49 <CakeProphet> 2: the oddest prime of all.
18:55:50 <Deewiant> elliott: Are you thinking of FullSimplify?
18:55:55 <elliott> Deewiant: Possibly
18:57:36 <Deewiant> It's just a better simplifier, I'm pretty sure Reduce does the most that anything does here
18:57:37 <zzo38> If z=2 then it will be adding to 16 and you can try the cases. But what happened if x=2 or if y=2? Then it is about powers of 2
18:58:42 <Taneb|Hovercraft> SUBTRACTION IS ANNOYING
18:58:49 <Taneb|Hovercraft> if x=2, y>z
19:02:49 <Taneb|Hovercraft> if y=2, x^2>z
19:04:22 <elliott> `echo TRANJSNAKTACTIONALS!
19:04:24 <HackEgo> TRANJSNAKTACTIONALS!
19:07:06 -!- sebbu3 has joined.
19:07:06 -!- sebbu3 has quit (Changing host).
19:07:06 -!- sebbu3 has joined.
19:08:52 -!- sebbu2 has quit (Ping timeout: 260 seconds).
19:10:08 -!- Taneb|Hovercraft has quit (Ping timeout: 240 seconds).
19:11:04 <elliott> Gregor: Huh, I didn't know hg hardlinked .hg on clone
19:11:10 <elliott> I wonder whytf HackEgo is so slow then...
19:11:29 <Gregor> 1) It has to copy the actual working directory. 2) Sandboxing lol
19:12:28 <elliott> (1) Well, yeah, the only way to avoid that is my revised design, which I will refer to as Transactional Headache. (2) Mehhh, UMLBox isn't that slow?
19:12:58 <elliott> I think the revised design will be pretty superfast, since it's literally zero-copy, but I guess it should wait until transactions are an actual thing first :P
19:13:05 <elliott> Also it could interact terribly with flock and all that crap, but who cares just don't use thos.
19:13:06 <elliott> those.
19:15:37 -!- sebbu has joined.
19:15:37 -!- sebbu has quit (Changing host).
19:15:37 -!- sebbu has joined.
19:15:41 <CakeProphet> zzo38: the cases where you have one x or y = 2 and z = 2 are false because even + odd != even
19:17:05 <CakeProphet> also 2 + 2 != odd so that's 3 out of 7 cases where you have a 2 somewhere.
19:17:40 <CakeProphet> parity is perhaps not the most elegant proof here. :p
19:17:59 -!- sebbu3 has quit (Read error: Connection reset by peer).
19:19:04 <CakeProphet> > 2^2 + 2^3 == 2^4
19:19:06 <lambdabot> False
19:19:11 <CakeProphet> oh look that's 4 out of 7 now.
19:23:46 <CakeProphet> that leaves... 4 + odd^3 = odd^4; odd^2 + 8 = odd^4; and odd^2 + odd^3 = 16
19:23:48 -!- hagb4rd has joined.
19:24:27 <CakeProphet> best proof method ever.
19:24:39 <elliott> This is like the proof of the four-colour theorem. Or was it the Kepler conjecture.
19:24:51 <elliott> Just keep brute-forcing special cases until there aren't any cases left.
19:27:05 -!- MSleep has joined.
19:27:22 <Phantom__Hoover> That's 4-colour.
19:27:43 <CakeProphet> elliott: I'm all about those special cases.
19:27:56 <CakeProphet> monqy: THE WORLD IS TOTALLY FULL OF SPECIAL CASES.
19:28:17 <CakeProphet> even in methamethics
19:28:27 <monqy> this is why i hate the world
19:29:06 <CakeProphet> monqy: if you take all of the cases
19:29:12 <CakeProphet> usually the special cases are larger in number.
19:29:15 <CakeProphet> than the general cases.
19:29:19 <CakeProphet> ergo, something significant.
19:29:33 -!- sebbu2 has joined.
19:29:33 -!- sebbu2 has quit (Changing host).
19:29:33 -!- sebbu2 has joined.
19:30:05 <monqy> hate
19:30:37 <CakeProphet> monqy: (note: complete bullshit)
19:31:38 <CakeProphet> anyways I'm almost positive that adding 4 to the cube of a prime number will not yield the 4th power
19:31:45 <CakeProphet> but I don't really know how to express that in proof form.
19:32:24 -!- ais523 has changed nick to ais523\unfoog.
19:32:26 <CakeProphet> same with adding 8 to the square of a prime to get its 4th power.
19:32:54 -!- sebbu has quit (Ping timeout: 260 seconds).
19:33:04 <Phantom__Hoover> > 37^2 + 8 - 37^4
19:33:04 <lambdabot> -1872784
19:33:10 <Phantom__Hoover> Q.E.D.
19:33:19 <CakeProphet> the odd^2 + odd^3 != 16 case can be bruteforced.
19:33:30 <monqy> what are you even doing
19:33:34 <CakeProphet> monqy: MATHEMATICS
19:33:50 <Phantom__Hoover> He's trying his hand at number theory despite barely being able to grasp calculus.
19:34:01 <CakeProphet> 13:45 < zzo38> Does $x^2 + y^3 = z^4$ have solutions in prime numbers?
19:34:18 <CakeProphet> Phantom__Hoover: are you sure you're not confusing me with itidus?
19:34:25 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:28 <elliott> `ps
19:34:30 <elliott> `ps
19:34:31 <CakeProphet> elliott: ps
19:34:32 <elliott> `ps
19:34:32 <monqy> ps
19:34:34 <elliott> `ps
19:34:36 <elliott> sorry, had to cause a clash
19:34:36 <monqy> CakeProphet: hi
19:34:38 <monqy> elliott: hi
19:34:38 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:34:38 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:34:43 <monqy> HackEgo: hi
19:34:46 <elliott> oh RIHte Ghte umlboxe
19:34:46 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:34:50 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:00 <elliott> oop. se
19:35:00 <ais523\unfoog> cat?
19:35:03 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:19 <elliott> ais523\unfoog: good question
19:35:22 <CakeProphet> elliott: get a room.
19:35:43 <elliott> ais523\unfoog: hmm, there isn't any cat executed
19:35:46 <elliott> in the current sourec
19:35:50 <elliott> so I'm not sure what's up there
19:36:08 <ais523\unfoog> `run ps
19:36:10 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:36:36 <ais523\unfoog> I was wondering ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
19:36:49 <ais523\unfoog> vggggggggggggggggggrrrrrrfffrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
19:37:01 <ais523\unfoog> *if that would make a difference
19:37:25 <elliott> I was wondering that ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
19:37:27 <elliott> vggggggggggggggggggrrrrrrfffrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr too.
19:37:31 <elliott> s/that //
19:37:32 <zzo38> Do you know about Zen and do you know about motorcycle maintenance?
19:38:03 <elliott> Gregor: Does it spam you with mail every time I add new commits to that pull request?
19:38:53 <monqy> zzo38: are they one and the same
19:39:21 <zzo38> Do I need to do anything with the .cabal file or .lhs file to make the document link work on the webpage?
19:39:47 <Gregor> elliott: Doesn't seem to.
19:40:00 <elliott> Gregor: Darn-- I mean oh good.
19:40:01 <ais523\unfoog> let rec zeros = 0 :: zeros
19:40:05 <elliott> > fix (0:)
19:40:06 <ais523\unfoog> umm, that actually works in OCaml?
19:40:06 <lambdabot> [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
19:40:11 <elliott> ais523\unfoog: I doubt it...
19:40:11 <ais523\unfoog> I know it works in Haskell
19:40:17 <CakeProphet> monqy: Phantom__Hoover is the primary detractor of my contributions to the field of parity relations between powers of primes in infinite cyclic abelian groups and commutative monoids
19:40:20 <elliott> zzo38: What link
19:40:21 <ais523\unfoog> but OCaml is strict, and yet I've just seen it in someone else's OCaml code
19:40:28 <elliott> ais523\unfoog: A student's?
19:40:33 <ais523\unfoog> no, on a blog
19:40:37 <elliott> Link?
19:40:44 <ais523\unfoog> http://alaska-kamtchatka.blogspot.com/2011/11/modular-semantics-for-brainfuck.html
19:41:08 <zzo38> elliott: The Hackage webpage for a Haskell library.
19:41:14 <elliott> http://old.nabble.com/lazy-infinite-lists-td22922684.html
19:41:18 <elliott> ais523\unfoog: I doubt it's valid
19:41:25 <elliott> zzo38: What's a "document link"
19:41:29 <ais523\unfoog> # let rec zeros = 0 :: zeros in match zeros with | a::b::t -> (a,b) | _ -> (9,9) ;;
19:41:30 <ais523\unfoog> - : int * int = (0, 0)
19:41:33 <ais523\unfoog> err, what?
19:41:47 <zzo38> Many packages you can select the name of the module to view the list of functions and types in them. But mine doesn't work, and a few other that aren't mine also don't work.
19:42:03 <ais523\unfoog> (the second case is to avoid the warning for not being exhaustive that'd have made it harder to copy/paste otherwise)
19:42:05 <elliott> ais523\unfoog: I have a solution to your confusion! Don't use OCaml.
19:42:12 <ais523\unfoog> but I like OCaml
19:42:20 <elliott> Stop liking it, then :)
19:42:29 <monqy> CakeProphet: oh no
19:42:31 <elliott> It IS a workable solution, you have to admit.;
19:42:34 <elliott> s/;//
19:42:42 <ais523\unfoog> # let rec zeros = 0 :: zeros ;;
19:42:43 <zzo38> elliott: Did you understand what I meant now?
19:42:44 <ais523\unfoog> val zeros : int list =
19:42:50 <ais523\unfoog> then it prints about 12 to 15 lines of zeros and a ...
19:43:01 <elliott> zzo38: I already told you it takes up to 6 hours for Haddock documentation to be generated
19:43:15 <zzo38> It has already been more than 6 hours since I send that package.
19:43:18 <elliott> and it'll fail if it doesn't build on the hackage machine (a build failure log will be linked from the package page)
19:43:28 <elliott> zzo38: since you sent the latest version? anyway, it has to rebuild the documentation for every single package
19:43:36 <elliott> so it almost certainly takes at least an hour to run, and probably much longer
19:43:37 <zzo38> I don't see any build failure log either
19:43:42 <elliott> give it a day or so and check again
19:44:18 <zzo38> But it works on my computer!
19:44:39 <zzo38> So why doesn't it work on their computer?
19:45:11 <elliott> zzo38: did I say it didn't?
19:45:20 <elliott> like I said, every 6 hours it rebuilds the documentation of every single package
19:45:24 <elliott> there are a few thousand
19:45:29 <elliott> so it will take a while for it to reach your package
19:46:16 <ais523\unfoog> # type 'a l = Cons of ('a * 'a l) | Nil ;;
19:46:17 <ais523\unfoog> type 'a l = Cons of ('a * 'a l) | Nil
19:46:18 <ais523\unfoog> # let rec zeros = Cons (0, zeros) ;;
19:46:20 <ais523\unfoog> val zeros : int l =
19:46:20 <zzo38> O, that is how it works? Can't they fix it so that it only rebuilds when it needs to do so, allowing their computer to run more efficiently?
19:46:28 <ais523\unfoog> elliott: and then it outputs the start of the structure
19:46:40 <ais523\unfoog> so I /guess/ type constructors in OCaml are lazy even if the rest of the language isn't, or something like that
19:46:54 <ais523\unfoog> I was wondering if it was specific to lists, but it seems not to be, as even defining lists by hand it works
19:46:57 <elliott> zzo38: there's no way to tell what needs to be rebuilt without reverse dependency information, which hackage 1.0 doesn't generate
19:47:04 <elliott> ais523\unfoog: I bet let rec just adds an implicit ()
19:47:12 <elliott> and, umm, lets it type like that anyway
19:47:20 <elliott> and inserts () at non-RHS call points
19:47:22 <ais523\unfoog> elliott: then executing it would take forever
19:47:23 <elliott> or
19:47:24 <elliott> something
19:47:26 <elliott> ais523\unfoog: no
19:47:31 <elliott> it doesn't insert the () on the RHS of the let rec
19:47:35 <elliott> it just unsafeCoerces it :P
19:47:38 <elliott> totally plausible theory!
19:47:38 <ais523\unfoog> elliott: that /is/ being lazy
19:47:54 <ais523\unfoog> you've just basically defined lazy lambda
19:47:55 <elliott> ais523\unfoog: except not type safe
19:47:59 <elliott> and impossible
19:48:27 <Sgeo|web> .
19:48:38 <ais523\unfoog> # let rec test = test ;;
19:48:40 <ais523\unfoog> Error: This kind of expression is not allowed as right-hand side of `let rec'
19:48:42 <zzo38> Another possibility would be to change the orders so that packages that have neither documentation nor build fail logs will be given priority. And then their priority is removed after it tries once, whether it fail or succeed.
19:48:48 <ais523\unfoog> OK, that just made me even more confused
19:49:03 <elliott> Sgeo|web: hi
19:49:13 <ais523\unfoog> # let rec test () = test () ;;
19:49:14 <ais523\unfoog> val test : unit -> 'a = <fun>
19:49:15 <Sgeo|web> Hi
19:49:17 <elliott> zzo38: or they could just rewrite hackage to not suck, which is what hackage 2.0 is :P
19:49:30 <elliott> i dunno when they're planning to finish it though, i guess next year
19:49:36 <ais523\unfoog> unit -> 'a is /always/ bottom, right (exception or infinite loop)?
19:49:48 <elliott> ais523\unfoog: it's not always bottom
19:49:50 <Sgeo|web> Is ais523\unfoog learning OCaml?
19:49:53 <elliott> it's either bottom or const bottom
19:50:02 <elliott> oh, hmm
19:50:05 <ais523\unfoog> it can't be const bottom
19:50:06 <elliott> ocaml doesn't really have bottoms like that
19:50:10 <elliott> ais523\unfoog: yes it can
19:50:12 <elliott> it can't be bottom, though
19:50:13 <ais523\unfoog> because 'a might not be a function type
19:50:21 <elliott> ais523\unfoog: your definition of "it" is stupid
19:50:27 <ais523\unfoog> right, by "it" I meant the return value
19:50:30 <elliott> you're quoting a type, and then using "it" to mean a value of a different type P:
19:50:31 -!- sebbu has joined.
19:50:31 <elliott> :P
19:50:33 -!- sebbu has quit (Changing host).
19:50:33 -!- sebbu has joined.
19:50:37 <elliott> which I guess makes some sense in a strict language
19:50:45 <elliott> but definitely not in a lazy one, since you have proper _|_s
19:50:47 <elliott> Sgeo|web: he already knows ocaml
19:51:00 <ais523\unfoog> Sgeo|web: I'm /teaching/ OCaml
19:51:08 <ais523\unfoog> but atm it's acting suspiciously like Haskell when it shouldn't be
19:51:11 <ais523\unfoog> so I'm experimenting
19:51:21 <elliott> my fav. ocaml feature is -rectypes
19:51:29 <ais523\unfoog> what does that do?
19:51:34 <elliott> allows recursive types
19:51:53 <ais523\unfoog> # let rec zeros() = 0 :: zeros() in zeros() ;;
19:51:55 <ais523\unfoog> Stack overflow during evaluation (looping recursion?).
19:52:13 <ais523\unfoog> conclusion: let rec is specialcased to lazify recursion when it's defining a non-function type
19:52:17 <zzo38> Maybe they should still have priorities though
19:52:31 <elliott> zzo38: hackagedb 2.0 already works, so i doubt anyone wants to add new things to 1.0
19:52:31 <ais523\unfoog> that's consistent with all the experiments so far, I think
19:52:38 <elliott> ais523\unfoog: but it /can't/, they'd have to build their runtime representation around that
19:52:45 <elliott> ais523\unfoog: and incur all the costs of laziness at every call site without the benefits
19:53:20 -!- sebbu2 has quit (Ping timeout: 240 seconds).
19:53:28 <ais523\unfoog> elliott: well, the logical representation of an immutable infinite repeating lazy list is to loop the list round to point at /itself/
19:53:39 <ais523\unfoog> and I know cyclic structures can exist in OCaml
19:53:44 <ais523\unfoog> perhaps that's the syntax for constructing them
19:54:09 <elliott> ais523\unfoog: a cyclic structure makes a really awful brainfuck tape, if you mutate it
19:54:20 <ais523\unfoog> right, indeed
19:54:33 <ais523\unfoog> but the article there is using lists, not arrays
19:54:35 <Deewiant> Did Ocaml not have polymorphic recursion or was that only SML?
19:54:42 <ais523\unfoog> and the lists contain integers, not integer references
19:54:46 <ais523\unfoog> so it's immutable by definition
19:54:51 <ais523\unfoog> Deewiant: "did"?
19:54:51 <CakeProphet> @src cycle
19:54:51 <lambdabot> cycle [] = undefined
19:54:51 <lambdabot> cycle xs = xs' where xs' = xs ++ xs'
19:55:00 <ais523\unfoog> also, what do you mean by polymorphic recursion?
19:55:14 <ais523\unfoog> you can certainly write polymorphic recursive functions, but that's so obvious I doubt it's what you mean
19:56:02 <elliott> ais523\unfoog: OCaml still can't do concurrency at all, right?
19:56:02 <Deewiant> ais523\unfoog: Hmm, I was going to explain my usage of "did" instead of "does" but now I wonder if it's not a Finglishism
19:56:08 * elliott has prepared his laugh track.
19:56:14 <ais523\unfoog> elliott: it has a -threads param to the compiler
19:56:23 <elliott> Deewiant: It seems OK to me, if you are referring to past experience with OCaml
19:56:27 <ais523\unfoog> that gives it a threading library, either VM-level or native-thread-level
19:56:48 <elliott> ais523\unfoog: Hmm, a quick google strongly suggested they were purely green threads
19:56:49 <ais523\unfoog> Deewiant: to me you were implying OCaml no longer existed
19:57:01 <elliott> Oh, hmm
19:57:02 <Deewiant> heh
19:57:07 <elliott> ais523\unfoog: Is it native threads but with a big gigantic lock on everything
19:57:17 <Deewiant> Anyway hang on, I'm devising a Haskell example
19:57:17 <ais523\unfoog> elliott: perhaps; I wrote a build system mentioning it recently; but it was for someone else's code
19:57:27 <elliott> Googling strongly suggests that it is
19:57:30 <elliott> So, time to cash in
19:57:32 * elliott [laugh track]
19:57:58 <CakeProphet> elliott: how dare you ridicule a sacred American custom.
19:58:09 <CakeProphet> you have greatly disrespected my people.
19:58:50 <ais523\unfoog> --- &1
19:58:52 <ais523\unfoog> - *1
19:58:57 <ais523\unfoog> wait, that's not what I meant
19:59:31 <ais523\unfoog> --- &1
19:59:32 <ais523\unfoog> head: 0
19:59:34 <ais523\unfoog> tail: *1
19:59:35 <ais523\unfoog> there we go
19:59:40 <elliott> YAML?
19:59:42 <ais523\unfoog> I suspect /that/'s what zeroes is, in OCAML
19:59:43 <ais523\unfoog> elliott: yep
19:59:45 <ais523\unfoog> *OCaml
19:59:55 <elliott> ais523\unfoog: use common lisp notation, sheesh :P
19:59:57 <ais523\unfoog> turns out YAML can represent cyclic structures
20:00:00 <elliott> #1#=(0 . #1#)
20:00:01 <elliott> and I know
20:00:07 <elliott> YAML is kind of ridiculously overengineered.
20:00:19 <Deewiant> ais523\unfoog: Okay, this, basically:
20:00:20 <Deewiant> zipWithFlipping :: (a -> b -> c) -> [a] -> [b] -> [c]
20:00:20 <Deewiant> zipWithFlipping f (a:as) (b:bs) = f a b : zipWithFlipping (flip f) bs as
20:00:20 <Deewiant> zipWithFlipping _ _ _ = []
20:00:23 <elliott> ais523\unfoog: incidentally, I've had more @ Thoughts(tm) since a prototype design seemed to come together, but they've mostly been of the form "wow, X would be so much ridiculously faster in @" or "wow, X would be so much ridiculously easier to program in @"
20:00:44 <ais523\unfoog> elliott: I have Anarchy Thoughts along those lines, or occasionally Cyclexa Thoughts
20:01:06 <ais523\unfoog> the two languages actually have some similarities
20:01:13 <ais523\unfoog> amazingly
20:01:40 <elliott> Deewiant: f _ _ = ([], []); f (x:xs) (y:ys) = (x:xs', y:ys') where (xs',ys') = f ys xs?
20:01:45 <elliott> (And then zipWith on that)
20:02:28 <Deewiant> Umm, I'm not sure what you're asking
20:02:32 <Deewiant> zipWithFlipping = zipWith
20:02:48 <elliott> Oh, so it is
20:02:52 <elliott> I missed the double-flip
20:03:00 <Deewiant> Right
20:03:04 <elliott> ais523\unfoog: The most recent one has been that, AFAICT, a naive web server in @ would beat the crap out of just about any other httpd that doesn't run in a kernel/on bare metal or on an FPGA or similar ridiculousness
20:03:26 <Deewiant> Note that without the type signature, the inferred type of zipWithFlipping would be (a -> a -> b) -> [a] -> [a] -> [b]
20:03:28 <ais523\unfoog> now I'm thinking about what an FPGA web server would be like
20:03:31 <elliott> ais523\unfoog: (thinking inspired by seeing an article in the Monad.Reader where nginx's performance was beat with fairly simple Haskell)
20:03:34 <elliott> and it's been done
20:03:58 <ais523\unfoog> it'd be great at static files, although if there were more simultaneous connections than it expected it'd have trouble
20:04:06 <Deewiant> And I'm almost certain that SML doesn't like this, but I'm not sure whether OCaml does
20:04:07 -!- Darth_Cliche has joined.
20:04:41 <elliott> ais523\unfoog: But yeah, the article basically said that saving one syscall per request constituted a relevant, real time saving, and any added overhead of CPU time in @ will be dwarfed by syscall time in the Unix version and IO time in general
20:04:56 <elliott> So, ha, take that operating systems
20:05:17 <ais523\unfoog> elliott: which syscall was it, in the Haskell case?
20:05:21 <elliott> I doubt I'd beat TUX though... unless I had a really fancy IO subsystem
20:05:32 <elliott> ais523\unfoog: oh, it was just talking in general, but lemme dig up the example
20:06:42 <elliott> ais523\unfoog: "Warp uses the recv system call to receive an HTTP request and the writev system
20:06:42 <elliott> call to send an HTTP header. When sending an HTTP body based on a file, it
20:06:42 <elliott> uses the sendfile package which unnecessarily issues the lseek and stat system
20:06:42 <elliott> calls in addition to sendfile. While one could believe that the sendfile system call
20:06:42 <elliott> is fast thanks to its zero-copying approach, the package is actually much slower
20:06:43 <elliott> than we expected. We implemented the simple-sendfile package which does not
20:06:45 <elliott> use lseek and stat. The system calls that the package uses are only open, sendfile,
20:06:47 <elliott> and close. Since sockets are marked non-blocking, sendfile returns EAGAIN if the
20:06:49 <elliott> size of a file is large. In this case, the simple-sendfile package issues sendfile
20:06:51 <elliott> again without lseek to send the rest of the file."
20:07:01 -!- ais523\unfoog has quit.
20:07:06 <elliott> nice timing
20:07:11 -!- Madoka-Kaname has left ("Hug~♪").
20:07:12 -!- Madoka-Kaname has joined.
20:07:40 -!- ais523\unfoog has joined.
20:07:52 <elliott> ais523\unfoog: See logs :P
20:07:55 <ais523\unfoog> wow that was confusing
20:08:06 <elliott> ais523\unfoog: There were no numbers specifically for that change, but replacing the time library with their specialised http-date gave a 20x speedup in the date code itself, and combined with the simple-sendfile switch brought it from 4,229 queries/s to 22,713 queries/s; I think that's probably mostly due to the time stuff, though
20:08:19 <elliott> (Again, see logs for context :P)
20:09:47 <ais523\unfoog> elliott: heh, the stat/seek was what lead to the problem
20:10:08 -!- zzo38 has left.
20:10:17 <elliott> ais523\unfoog: yep; I'm not sure it's necessarily a disk IO thing, though
20:10:26 <elliott> if the request timing was on the same file
20:10:28 <elliott> since it'd be in cache
20:10:56 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
20:11:25 -!- Ngevd has joined.
20:13:27 -!- Phantom__Hoover has joined.
20:13:42 <elliott> ais523\unfoog: hmm, I need to figure out how to optimise referencing a large bytestring that isn't in RAM and sending it to a socket
20:13:58 <elliott> obviously it'll already be done in chunks, so the behaviour will be vaguely reasonable
20:14:06 <elliott> but I could do fancy DMAy scatter-gathery nonsense, perhaps
20:14:38 <CakeProphet> http://www.cs.bris.ac.uk/Teaching/Resources/COMS30122/haskell/calc/index.html
20:14:46 <CakeProphet> this is actually a nice hand-written parser actually.
20:14:55 <CakeProphet> (actally)
20:15:38 <Ngevd> MSPA update for all who care
20:15:50 <Ngevd> Unless you already know
20:15:57 <Ngevd> Starts with Jane: Examine Fetch Modus
20:16:05 <CakeProphet> though I would have used operators for the binary Rule constructors, and State for the parse function that returns ([Token], [Tree])
20:17:24 <CakeProphet> actually no a tuple is fine.
20:19:26 -!- zzo38 has joined.
20:23:03 <elliott> CakeProphet: Writing a parser "by hand" with tuples is kinda stupid, you're not more hardcore for forcing yourself to rewrite the (>>=) plumbing in every single rule
20:24:13 <CakeProphet> elliott: right, I was simply saying for a handwritten parser it's very clearly written.
20:24:26 <elliott> Sure
20:25:13 <zzo38> I have written parsers with Parsec and (>>=) is not needed often.
20:27:14 <monqy> the <$> <* <*> *> <|> plumbing
20:27:51 <zzo38> Yes, <$> <* <*> *> <|> seem much more useful in parsers. Sometimes even <$ as well
20:28:23 <CakeProphet> I use <$> and <*> with monads often.
20:28:53 <zzo38> <$> is useful with any monads (even any functors) in general.
20:33:52 <zzo38> The Data.Monoid.Plus package can make the probilities of sum of dice by: runWriterT . monoidicMap getProduct . probNorm $ liftA2 (+) dice dice where dice = uniform [1..6] and it can be modified to work with loaded dice, too.
20:34:24 <zzo38> And then there are the "many" and "some" functions useful with parsers too
20:35:54 -!- sebbu has quit (Read error: Connection reset by peer).
20:36:16 -!- sebbu has joined.
20:36:16 -!- sebbu has quit (Changing host).
20:36:16 -!- sebbu has joined.
20:42:19 <Vorpal> elliott, iirc you wanted to know more about dragons in Skyrim?
20:42:35 <Vorpal> I battled quite a few now, I could tell you if you want
20:43:07 <elliott> Yessss tell me all about the dragons and also answer which GPU you have.
20:43:21 -!- Sgeo|chromcrash has joined.
20:43:39 -!- oerjan has joined.
20:44:05 <Vorpal> elliott, to begin with there are quite a few animation bugs. For example, dragons tend to crash land when they get like below ~10% health. This works fine on flat terrain. It looks quite weird on a slope. It looks absolutely silly on a set of stairs.
20:44:12 <Vorpal> lots of animation bugs there
20:44:43 <Sgeo|chromcrash> zzo38 was saying something relevant to my interests
20:44:47 <Sgeo|chromcrash> :/
20:44:55 <Vorpal> elliott, other than that, they would be quite hard to hit for significant damage in the sky without frost or fire spells (depending on type of dragon)
20:45:02 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
20:45:06 <Vorpal> elliott, I just can't see a non-magic user handling this at all
20:45:22 <Vorpal> arrows don't seem to do much damage
20:45:38 <elliott> I hear they're pretty easy to battle
20:45:42 <elliott> Maybe you just suck :P
20:45:47 <Vorpal> elliott, yep, with magic they are easy
20:45:56 <Vorpal> elliott, on average difficulty
20:46:00 <zzo38> Sgeo|chromcrash: Please be more specific.
20:46:16 <Vorpal> elliott, further training in bow related skills might make it easier for an archer
20:46:20 <Sgeo|chromcrash> zzo38: Something about probability
20:46:37 <Phantom__Hoover> Probability is among your interests?
20:46:39 <zzo38> What about probability?
20:47:00 <Vorpal> elliott, but primarily non-ranged weapon users will run into some issues definitely
20:47:17 <Sgeo|chromcrash> Phantom__Hoover: Someone wants me to implement MCMC in Haskell. I think I know Haskell better than him, but I'm clueless about MCMC
20:47:48 <zzo38> What does MCMC means?
20:47:53 <Phantom__Hoover> Minecraftminecraft.
20:47:57 <Sgeo|chromcrash> Monte Carlo Markov Chain
20:48:02 <Vorpal> elliott, other than that it is quite fun. Of course, skyrim has ragdoll physics... I think that is what causes most of the brokenness with the crash landing
20:48:03 <Sgeo|chromcrash> Or is it the other way around
20:48:06 <elliott> Sgeo|chromcrash does things because people tell him to.
20:48:15 <elliott> Vorpal: GGGGGGGPPPPPPUUUUU
20:48:52 <Vorpal> elliott, Radeon HD 6850, 1 GB GDDR5 (or 1.5? forgot...)
20:49:19 <elliott> Oh, Radeon. (It occurs to me that maybe my Linux-oriented anti-ATI bias is outdated.)
20:49:32 <Vorpal> elliott, well, nvidia sucks quite a bit nowdays too
20:49:36 <Vorpal> for newer GPUs
20:49:46 <Vorpal> they suck about the same amount nowdays
20:49:48 <Sgeo|chromcrash> nVidia sucks with Linux now? Boo
20:49:52 <elliott> Vorpal: Sure, but at least it's not Catalyst.
20:49:55 <Vorpal> Sgeo|chromcrash, well, for newer cards
20:50:14 <Vorpal> elliott, true. Still the open drivers for radeon are way ahead of the ones for nvidia
20:50:22 <elliott> Yeah, but nobody cares about that :P
20:50:26 <Vorpal> not quite there yet for my card model
20:50:28 <zzo38> Is it necessary to fight the dragon to complete the game?
20:50:47 <Vorpal> zzo38, plural I believe
20:51:03 <Vorpal> and yes so far I needed to fight two of them to complete main story missions
20:51:16 <zzo38> OK
20:51:29 <Vorpal> unless I completely missed out on something, I would say "yes, you have to do that"
20:51:29 <oerjan> <ais523\unfoog> you can certainly write polymorphic recursive functions, but that's so obvious I doubt it's what you mean
20:51:55 <oerjan> polymorphic recursion in haskell refers to a function directly or indirectly calling itself with a different type
20:52:18 <Vorpal> elliott, anyway the graphical quality in the game on the ultra setting is "meh". Better than oblivion yes. However it was clearly made with consoles in mind. Which have somewhat outdated hardware by now.
20:52:40 <elliott> From what I've seen, it has the advantage over Oblivion of not being hideous
20:52:45 <Vorpal> elliott, if you want the best graphics on a PC currently in an RPG it is witcher 2 that you should play
20:52:53 <oerjan> it's useful which such datastructures as autobalanced trees: data Tree a = Leaf a | Tree (a,a)
20:52:58 <Vorpal> don't expect to do that on ultra though
20:54:20 <Vorpal> elliott, anyway I do hope dragons are leveled. Or they are going to be a fucking joke when I'm at a higher level.
20:54:38 <elliott> hmm, can you fit an atx mobo into an eatx case?
20:54:42 <Vorpal> elliott, so far I have seen ones breathing fire and ones breathing ice.
20:54:54 <monqy> dragons breathing dragons
20:55:04 <Vorpal> elliott, /pretty/ sure atx is larger than eatx
20:55:11 <elliott> no, eatx is extended atx?
20:55:13 <Vorpal> maybe in a VERY big eatx case?
20:55:16 <Vorpal> oh
20:55:18 <elliott> yeah this thing fits atx
20:55:22 <Vorpal> which one is the smaller one?
20:55:23 -!- MSleep has changed nick to MDude.
20:55:30 <Vorpal> elliott, also why do you want an eatx case?
20:55:51 <Vorpal> elliott, I assume you are building yourself a new computer?
20:56:05 <Sgeo|chromcrash> zzo38: What package does that probability stuff come from, if any?
20:56:05 <elliott> Right now I'm helping Phantom__Hoover by way of shoving a list of parts at him; consider it practice.
20:58:18 -!- Ngevd has quit (Read error: Connection reset by peer).
20:58:40 <Phantom__Hoover> HOW CAN A CASE COST TWENTY POUNDS MORE THAN A CPU
20:58:56 <Vorpal> elliott, btw recommended is quad core or better. and you want a strong CPU. When playing I see the all the cores (including the HT ones) pretty loaded (70-100) on a 3.4 GHz quad core i7 so...
20:59:31 <Vorpal> Phantom__Hoover, heh
20:59:37 <Vorpal> Phantom__Hoover, what sort of case is that?
20:59:56 <Phantom__Hoover> One born of elliott failing to understand the site's list system.
21:00:18 <elliott> I'm more used to picking parts from sites I can't actually buy things from.
21:00:28 <elliott> Vorpal: Uh, I read that it's crap at threading (= 2 threads only).
21:01:20 <Phantom__Hoover> Better than DF.
21:01:43 <zzo38> Sgeo|chromcrash: There are other Haskell packages having probability stuff, which I don't know, but my package "monoidplus" has the things I described.
21:01:50 <Vorpal> elliott, strange then. Or I guess process explorer shouldn't be trusted
21:01:57 <Vorpal> (no I haven't even tried to use wine for it)
21:02:14 <elliott> Vorpal: But yeah, I'll go for either an i7 or a Phenom II x6, most likely
21:02:19 <elliott> Probably i7
21:02:22 <elliott> So I should be fine on that front
21:02:31 <elliott> 3.4 GHz is ridiculous though, you're just wasting power :P
21:02:39 <Sgeo|chromcrash> zzo38: The docs aren't showing up on Hackage
21:02:50 <Vorpal> elliott, well they didn't have a 3.3 GHz option for i7. They only have that for i5
21:02:51 <Phantom__Hoover> elliott, unless you're playing DF.
21:02:55 <Deewiant> elliott: Why's that wasting power
21:03:01 <Vorpal> elliott, that i5 should be enough to play it though
21:03:13 <Vorpal> elliott, also, dynamic clock frequency
21:03:13 <elliott> Deewiant: Because CPU speed is roughly irrelevant for everything compared to cores nowadays above like 2.8 GHz?
21:03:16 <zzo38> Sgeo|chromcrash: I know. I think it will take a long time to do so. The same is the case for other new packages (I checked the "what's new")
21:03:25 <Vorpal> elliott, it is awesome for df
21:03:26 <Vorpal> :P
21:03:28 <Deewiant> elliott: Why's that?
21:03:39 <Sgeo|chromcrash> zzo38: Ah, ok
21:03:53 <Vorpal> elliott, anyway they have a 3.5 GHz version too
21:03:57 <Sgeo|chromcrash> zzo38: That's kind of annoying to deal with though, I wonder why that is
21:04:04 <elliott> Deewiant: I suppose it's not really true for games which are the topic here, but even those are becoming more GPU-bound in general I'd say
21:05:05 <Deewiant> Much CPU-using software I run doesn't utilize multiple threads, I'd say there's always call for more single-threaded speed
21:05:29 <elliott> Call perhaps, but it's only going to drop
21:05:54 <zzo38> Sgeo|chromcrash: http://sprunge.us/NCZE
21:06:23 <Sgeo|chromcrash> ty
21:06:48 <Vorpal> elliott, anyway isn't there that turbo mode thingy when a single core only is loaded? I wonder what the speed for that is
21:06:51 <Sgeo|chromcrash> What's the difference between mpappend and mappend supposed to be?
21:07:31 <Deewiant> Sgeo|chromcrash: "That is, it is a monoid that the original monoid is distributive over."
21:07:38 <zzo38> Sgeo|chromcrash: mappend distributes over mpappend
21:07:48 <zzo38> (For example, multiplication distributes over addition)
21:10:14 * Sgeo|chromcrash 's head spins
21:10:47 <zzo38> You would use WriterT (Product x) [] for probability distributions, where x should be Double or Rational depending what you need
21:10:51 <CakeProphet> distribution: confusing stuff
21:12:52 <zzo38> The probability functions will still work though, as long as the monoid used is a normalizable semiring. But in general you use Product
21:13:50 <zzo38> (If it isn't Product, it won't act like a real probability distribution in all ways; although in some ways it can)
21:14:02 -!- Ngevd has joined.
21:14:25 <CakeProphet> :t sequence
21:14:26 <lambdabot> forall (m :: * -> *) a. (Monad m) => [m a] -> m [a]
21:14:48 <CakeProphet> sequence is almost sort of kind of distribution.
21:15:28 <zzo38> (There might also be monads other than [] that can be used, although the functions I have don't work with others)
21:15:41 <CakeProphet> well, the type of sequence is like distribution
21:15:50 <CakeProphet> I suppose the program is the proof. :>
21:16:38 -!- sebbu2 has joined.
21:16:38 -!- sebbu2 has quit (Changing host).
21:16:38 -!- sebbu2 has joined.
21:17:08 <Ngevd> Is it possible to do silly nested pattern matching like xs@(a:b:ys@(w:x:[]))?
21:17:21 <Ngevd> In Haskell
21:17:28 <Deewiant> That's not silly, and yes
21:17:40 <Ngevd> Oh cool
21:17:45 <Ngevd> That makes this soo much easier
21:18:05 <Ngevd> Hang on, wait
21:18:08 <Deewiant> > let f xs@(a:b:ys@(w:x:[])) = (xs,a,b,ys,w,x) in f [1,2,3,4]
21:18:09 <lambdabot> ([1,2,3,4],1,2,[3,4],3,4)
21:18:28 <Ngevd> Brilliant
21:18:49 <CakeProphet> @hoogle m [a] -> [m a]
21:18:49 <lambdabot> Data.List transpose :: [[a]] -> [[a]]
21:18:49 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
21:18:49 <lambdabot> Data.List inits :: [a] -> [[a]]
21:18:54 <Ngevd> That is EXACTLY what I wanted, Deewiant
21:18:56 -!- sebbu3 has joined.
21:18:56 <Ngevd> Thank you
21:18:56 -!- sebbu3 has quit (Changing host).
21:18:56 -!- sebbu3 has joined.
21:19:20 <CakeProphet> @hoogle (Monad m) => m [a] -> [m a]
21:19:20 -!- sebbu has quit (Ping timeout: 240 seconds).
21:19:20 <lambdabot> Data.List transpose :: [[a]] -> [[a]]
21:19:21 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
21:19:21 <lambdabot> Control.Monad join :: Monad m => m (m a) -> m a
21:19:23 <CakeProphet> meh
21:19:57 <Ngevd> Wait, I didn't need it
21:20:35 <Deewiant> CakeProphet: You can't pull it out of the monad, it'd have to be m a -> m [m a]
21:20:42 <Deewiant> Er, m [a] -> m [m a]
21:21:04 <CakeProphet> @hoogle m [a]
21:21:04 <lambdabot> Control.Monad.Trans.List runListT :: ListT m a -> m [a]
21:21:04 <lambdabot> Control.Monad.List runListT :: ListT a -> m [a]
21:21:04 <lambdabot> Control.Applicative many :: Alternative f => f a -> f [a]
21:21:05 <CakeProphet> er
21:21:08 <CakeProphet> @hoogle m [a] -> m [m a]
21:21:09 <lambdabot> Data.List transpose :: [[a]] -> [[a]]
21:21:09 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
21:21:09 <lambdabot> Data.List inits :: [a] -> [[a]]
21:21:13 <Deewiant> ?ty fmap (map return)
21:21:13 <CakeProphet> :(
21:21:13 <lambdabot> forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f [a] -> f [m a]
21:21:20 -!- sebbu2 has quit (Ping timeout: 240 seconds).
21:21:32 <CakeProphet> Deewiant: essentially.
21:22:00 <CakeProphet> I wonder what kind of formulas Python programs are proving.
21:22:00 <Deewiant> ?ty liftM (map return) :: Monad m => m [a] -> m [m a]
21:22:01 <lambdabot> forall (m :: * -> *) a. (Monad m) => m [a] -> m [m a]
21:22:30 -!- copumpkin has quit (Remote host closed the connection).
21:23:52 <elliott> I wish quasiquoters nested.
21:24:42 <monqy> me too :(
21:24:50 <monqy> i also wish (pattern) guards nested
21:25:02 <monqy> and uh
21:25:04 <monqy> other things??
21:25:41 <CakeProphet> I wish nests nested.
21:26:07 <CakeProphet> and numbers.
21:26:08 <CakeProphet> and strings.
21:26:15 <CakeProphet> there is no such thing as too much nesting.
21:26:49 <CakeProphet> 12(3(47))4 best nested number
21:26:54 <monqy> bad number
21:27:05 <CakeProphet> s{lolololols{rofl}} best nested string
21:27:06 <monqy> and I can't trust you with strings
21:27:14 <monqy> oh that's a bad string
21:27:18 <monqy> but not what I was expecting
21:29:04 <CakeProphet> data NChar = NCharCharLol Char | NCharStringLol String
21:29:09 <CakeProphet> type NString = [NChar]
21:29:22 <CakeProphet> need to work on the naming scehems
21:29:53 <CakeProphet> or just use Either
21:30:05 <monqy> data Bad
21:30:55 <CakeProphet> just got an awesome idea for an esolang
21:31:04 <CakeProphet> an extremely difficult to parse esolang. :)
21:31:17 <CakeProphet> so, for example
21:31:21 <oerjan> <Ngevd> Is it possible to do silly nested pattern matching like xs@(a:b:ys@(w:x:[]))? <-- that one can be simplified to xs@(a:b:ys@[w,x])
21:31:29 <CakeProphet> instead of a circumfix string quote token, it uses a postfix token.
21:31:35 <CakeProphet> this is a string here "
21:31:53 <Ngevd> Where do I put modules that I want to install?
21:32:07 <Deewiant> And unfortunately not xs@[a,b,ys@{w,x}] or something
21:33:59 -!- pkzip has joined.
21:34:49 <Deewiant> Ziim looks like something refreshingly new
21:37:35 <CakeProphet> hmmm, also
21:39:02 <CakeProphet> control structures appear at the end of their blocks of code, allowing arbitrary delimers.
21:39:09 <CakeProphet> *delimiters
21:39:20 <pkzip> why does my OS keeps running this IRC program automatically ?
21:39:32 <pkzip> I am using Pidgin
21:39:41 <pkzip> as the IRC client
21:42:00 <elliott> pkzip: It is because you can never escape.
21:42:07 <elliott> : )
21:42:11 <oerjan> *MWAHAHAHAHAHAHAHAHAHAHA*
21:42:15 <pkzip> no escape from #esoteric ?
21:42:29 <elliott> Deewiant: That's Timwi for you! Great languages, agonising IRC experience.
21:42:35 <pkzip> I'm not a number..
21:42:43 <pkzip> I'm a free software !!
21:42:50 <pkzip> ( prisioner quote )
21:43:04 <pkzip> ( well except that last bit )
21:43:05 <elliott> i don't think that's a prisoner quote
21:43:13 <Phantom__Hoover> You can Checkout any time you like, but you can never Tree? (There is no esolang called Leaf, this is bad.)
21:43:21 <pkzip> ~= ( not exactly )
21:43:26 <oerjan> pkzip: you can http://www.esolangs.org/wiki/Checkout any time you like, though...
21:43:50 <Sgeo|chromcrash> TImwi?
21:44:10 <Sgeo|chromcrash> Oh, an esolanger
21:44:15 <Phantom__Hoover> `quote Publisher
21:44:17 <HackEgo> 183) <Vorpal> ais523, what is "MS Publisher"? <Phantom_Hoover> Vorpal, you don't want to know. <ais523> Vorpal: be glad that you don't know the answer <alise> Vorpal: "horrible"
21:44:24 <Phantom__Hoover> s/MS Publisher/Timwi/
21:44:33 <oerjan> Phantom__Hoover: damn you, oh wait scratch that ais523 might ban me
21:44:51 * Sgeo|chromcrash wants to know!
21:45:18 <ais523\unfoog> Timwi isn't nearly as bad as MS Publisher
21:45:27 <ais523\unfoog> few things are, to be fair
21:46:53 <Phantom__Hoover> The Holocaust?
21:46:55 <pkzip> I often get banned from sexchat sites
21:47:07 <pkzip> darn, I got banned from all of 'em almost
21:47:20 <pkzip> all the ones I've been in
21:47:25 <pkzip> and I change IPs !!
21:47:38 <pkzip> even my ISP changes locations once in a while
21:47:56 <elliott> It's poetry.
21:47:57 <pkzip> and its not the client side
21:48:18 <pkzip> cause I know my PC
21:49:10 <pkzip> hardware to software
21:49:18 <pkzip> internals
21:50:32 <oerjan> well #esoteric is only very occasionally a sexchat site.
21:50:44 <oerjan> so maybe you can escape a ban.
21:51:03 <pkzip> I've known of IRC bans since the early 90s
21:51:06 <Ngevd> As an asexual, I don't go on sexchat sites very often
21:51:06 <Phantom__Hoover> Less occasionally if you're gay.
21:51:31 <pkzip> I used to give them mostly, and rarely had to escape them
21:51:35 <oerjan> wait, does less occasionally mean more or less often
21:51:45 <Phantom__Hoover> More often.
21:51:57 <pkzip> I often changed IPs cause I was on a dail-up
21:52:17 <pkzip> It costed a few cents to change IPs
21:52:37 <pkzip> I could even change it by a wide range
21:52:53 <pkzip> and started dreaming of what is now know as
21:53:10 <pkzip> the IP 'stealther'
21:53:27 * CakeProphet just watched [S] Cascade again
21:53:27 <pkzip> or the digital modem (router)
21:53:28 <CakeProphet> so good.
21:53:31 <oerjan> i suggest registering your nick so you can be banned consistently.
21:54:04 <pkzip> I don't think it was possible, oh wait they had Profiles so yea, maybe
21:54:06 <oerjan> so much more convenient.
21:54:27 <pkzip> I am being blocked by somekind of an ISP ban
21:54:40 <pkzip> I never bothered to check what it was exactly
21:54:54 <pkzip> I am used to be welcome on any digital media
21:55:02 <pkzip> welcomed
21:55:10 <elliott> welcome pkzip
21:56:30 <pkzip> actually pkzip was my old nickname on the IRCs
21:56:46 <pkzip> I need to find a new one
21:56:54 <pkzip> I quite fit in here
21:57:19 <pkzip> I like assembly, compilers, computer languages, brainf*ck and forth
21:57:42 <pkzip> I used to work on virii and protection/security software
21:57:49 <Ngevd> brainfuck!?
21:57:50 <pkzip> though noone heared of me
21:57:52 <Ngevd> Get uot!
21:57:54 <Ngevd> :P
21:57:57 <oerjan> to truly fit in, you must also hate brainfuck derivatives and lolcode.
21:58:10 <pkzip> I have a version of it which is really tiny
21:58:23 <pkzip> I dream of the minimal compiler at nights
21:58:37 <pkzip> But I want the easy of a language
21:58:55 <pkzip> so no 2-word or 3-word compilers for me (unless its HEX)
21:59:29 <pkzip> easy: sub that with ease
21:59:41 <elliott> pkzip: *viruses
22:00:11 <pkzip> I thought of some new ideas that appeared only years later in the virii scene
22:00:21 <pkzip> at least 2 ideas
22:00:22 <oerjan> the latin virus is an uncountable noun, so any weird plural is suspect.
22:00:47 <oerjan> and everyone here is a language pedant.
22:01:20 <pkzip> you can't hate BF, just because it is popular and starting to be taken for a real language
22:01:43 <pkzip> I have seen good native compilers for it
22:01:51 <oerjan> pkzip: i didn't say hate brainfuck, i said hate brainfuck _derivatives_. very different thing.
22:01:58 <pkzip> including some great ones which only lately appeared
22:02:24 <pkzip> I like my own derivative (I call it a traslator)
22:02:46 <pkzip> Its not so far apart from the original, its actually backward compatible.
22:03:04 <Phantom__Hoover> Can someone vouch that elliott's list of parts is likely to be trustworthy?
22:03:06 <elliott> pkzip: really? is it backwards compatible with characters that aren't ,.[]<>+- being comments?
22:03:09 <elliott> that's part of bf
22:03:19 <elliott> Phantom__Hoover: bsmntbombdood isn't here but I actually sent you the list of parts for a bomb.
22:03:38 <Phantom__Hoover> elliott, I thought it slightly exceeded his specs.
22:03:48 <elliott> Phantom__Hoover: Hm?
22:04:01 * oerjan waves at the CIA
22:04:16 <Phantom__Hoover> elliott, didn't he have 8GB of RAM?
22:04:22 <elliott> Phantom__Hoover: 16.
22:04:25 <pkzip> I don't remember saying that
22:04:27 <Phantom__Hoover> Aww.
22:04:43 <elliott> Phantom__Hoover: His was pre-Sandy Bridge i7, though, and ISTR Sandy Bridge was a pretty big improvement.
22:04:49 <elliott> Phantom__Hoover: Also he has a really crappy passively-cooled Nvidia card.
22:04:55 <elliott> Or had.
22:05:01 <pkzip> It uses the Char zero
22:05:13 <pkzip> the 0 ascii code
22:05:36 <pkzip> for assembly meno
22:05:45 <pkzip> (code)
22:05:48 <pkzip> entry
22:06:08 <pkzip> so I guess so
22:06:21 <pkzip> but your gonna hate the fact it has I/O
22:06:58 <pkzip> It uses one letter for basic INPUT and another for OUTPUT
22:07:29 <pkzip> why are you so pedantic about BF comments ?
22:07:49 <pkzip> what does this " any letter is a comment " do for BF ?
22:07:59 <pkzip> oh wait
22:08:13 <pkzip> the input is " ? " and output is " ! "
22:08:21 <pkzip> so its not a letter
22:08:33 <pkzip> Hello word :
22:08:41 <pkzip> world:
22:08:47 <pkzip> Hi World !
22:09:21 <pkzip> the space is ascii 0 or 255 ( I don't remember exactly )
22:10:02 <pkzip> Its wasn't published in esoteric
22:10:11 <pkzip> but I see ais523 in here ..
22:10:29 <ais523\unfoog> ?
22:11:05 * pkzip waves
22:11:35 <pkzip> guess I better not mention a brainfuck compiler which isn't 100% pure
22:11:48 <pkzip> (but backward compatible)
22:12:26 <pkzip> and I think the Output word was " . " ( as in original BF )
22:12:52 <pkzip> actually I know for sure its " . ", I think slowly after 12am
22:13:42 <Ngevd> ...Space should be 32, I think
22:14:05 <elliott> pkzip: a bf compiler is probably pure, or you'll have side-effects you don't want clogging things up
22:14:15 <elliott> BFProg -> AsmProg or whatever seems reasonable to me
22:14:28 <pkzip> I use char 255 instead of space
22:14:47 <pkzip> (as a code word)
22:15:27 <pkzip> I also use char 0 but I doubt if most editors wud display it as SPACE
22:16:07 <pkzip> I have a blog I've written for it, for awhile it was #1 on google for BF+Forth searches
22:16:21 <pkzip> BF+Forth+x86
22:16:51 <pkzip> now its #200 (I doubt google even shows it)
22:17:03 <pkzip> #200 or so
22:17:57 <elliott> monqy: starting to agree that idiom record notation is the best idea
22:18:42 <monqy> i never said it was the best!! i don't think it would support interleaving?? but it's kind of clean maybe
22:18:50 <monqy> relatively clean I mean
22:19:10 <Ngevd> I'm thinking of creating a MACHINE-READABLE HUMAN-WRITABLE NOTATION FOR ESOTERIC PROGRAMMING LANGUAGES
22:19:16 <elliott> monqy: yeah i don't know what to do about interleaving? the only good syntax I can think of is basically do notation
22:19:16 <elliott> which is
22:19:21 <elliott> (a) ugly and duplicatey
22:19:25 <elliott> (b) not done for applicatives
22:19:28 <elliott> (even though it can be done restrictedly)
22:19:31 <monqy> hmmmmm
22:19:40 <Ngevd> Because I don't like Yoob
22:21:09 <ais523\unfoog> elliott: one of the transcripts in the Oracle vs. Google lawsuit was allcaps for reasons I don't understand, so I made it all lowercase instead
22:21:12 <ais523\unfoog> but it looks pretty weird either way
22:21:15 <pkzip> Is there anyone on #esoteric which isn't into low-level (native) code ?
22:21:18 <ais523\unfoog> which do you think is more readable?
22:21:33 <ais523\unfoog> native code isn't /properly/ low-level ;)
22:21:37 <oerjan> pkzip: me
22:21:52 <pkzip> you don't know x86 code ?
22:22:09 <oerjan> i've never learned x86 assembly, no
22:22:34 <ais523\unfoog> oerjan: I suspect only a few people actually know all of modern x86 asm, it has weird corners that are rarely used
22:22:45 * ais523\unfoog vaguely wonders htf x86 won
22:22:49 <pkzip> =-O
22:22:50 <oerjan> i think i _may_ have written something like a hello world way back in the 80s
22:22:55 <pkzip> so shocked
22:23:44 <oerjan> but then, i'm nowhere near a professional programmer
22:23:59 <elliott> ais523\unfoog: all lowercase is more readable, definitely
22:24:10 <ais523\unfoog> yep, I think so
22:24:15 <ais523\unfoog> I'm glad I had the setting handy in my browser
22:24:30 <ais523\unfoog> (LeetKey has been remarkably useful as a Firefox extension, even if I don't use it for its intended use at all)
22:24:30 <elliott> pkzip: I can sort of write x86 asembly given a lot of time and documentation, but I don't like to, and I think it's a pretty crappy language.
22:24:42 <elliott> Some other CPUs have nice assembly languages though, but I can't code in 'em.
22:24:54 <ais523\unfoog> I first learnt 6502 asm
22:25:02 <ais523\unfoog> which is not the best asm in the world, but is way better than x86's
22:25:07 <pkzip> Intel x86 on MacroASM was fun in the 90s and its fun now
22:25:27 <pkzip> Arm ASM is said to be nice
22:25:38 <pkzip> PDP11 is a legand
22:25:57 <pkzip> both are near perfect
22:26:14 <pkzip> or all 3
22:26:55 <elliott> pkzip: Depends what your definition of fun is. Also your definition of perfect.
22:26:56 <ais523\unfoog> I think of something like Redcode when I think in terms of a good asm
22:26:59 <oerjan> i _did_ learn some 6502 asm way back
22:27:06 <ais523\unfoog> (even though it isn't actually an asm for an actual processor)
22:27:39 <Ngevd> Phantom__Hoover, today was the day with the most changes on mezzawiki for about a year
22:28:08 <oerjan> very sketchily. i realized years later that the manual i was reading was missing pages of instructions.
22:28:10 <pkzip> It was fun when watching The Jerusalem Virus do its 'thing'
22:28:23 <pkzip> Or 100 Years virus ( aka 4K )
22:28:35 <pkzip> Or writing a virii noone cud see or bypass
22:29:05 <pkzip> The 100 Years Virus ( more known as 4 K )
22:29:53 <ais523\unfoog> <mr. jacobs> your honor, this is michael jacobs from morrison & foerster. mr. van nest's understanding of the allegations here isn't correct, both in terms of numerosity and in terms of role, but i have the advantage of sitting in front of a computer as we are talking. if you search on bob lee, the first hit you get is a claim as follows. it's a twitter feed.
22:29:58 <elliott> pkzip: *viruses
22:30:00 <oerjan> linking this in case no one has yet: http://alaska-kamtchatka.blogspot.com/2011/11/modular-semantics-for-brainfuck.html
22:30:11 <elliott> ^style europarl
22:30:11 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
22:30:16 <elliott> fungot: your honor, this is michael jacobs from morrison & foerster.
22:30:16 <fungot> elliott: mr president, i too welcome the decision by the united states
22:30:17 <ais523\unfoog> awesome: doing a Google Search during a court hearing and telling the judge what the hit was
22:30:31 <ais523\unfoog> it was a telephone hearing, so people couldn't sensibly stop him
22:30:34 <elliott> ais523\unfoog: please please tell me it was Oracle who did that, while fighting Google
22:30:38 <ais523\unfoog> yes, it was
22:30:43 <elliott> ais523\unfoog: :D
22:30:47 <elliott> google should have sued :P
22:30:48 <ais523\unfoog> I think; it gets hard to remember which lawyer is on which side
22:32:08 <ais523\unfoog> quite a few people were getting confused, actually, as it was a conference telephone call
22:32:18 <ais523\unfoog> people had to keep saying who they were when they started talking
22:32:28 <pkzip> what does this lawsuit has to do with low-level programming ?
22:32:38 <pkzip> or BF ?
22:32:39 <elliott> why do we have to talk about low-level programming?
22:32:42 <elliott> or BF?
22:33:05 <pkzip> Cause BF is now taken as a good example of a basic compiler
22:33:13 <elliott> i don't understand
22:33:23 <pkzip> No reason
22:33:23 <elliott> this channel is for all topics of interest to those interested in esoteric computing
22:33:34 <ais523\unfoog> and BF is nice, but a bit atypical as esolangs go
22:33:36 <ais523\unfoog> it even has numbers
22:33:50 * ais523\unfoog thinks languages are typically inferior if you can't implement numbers in them from scratch
22:34:03 <pkzip> isn't BF the bread and butter of esolang ?
22:34:08 <Ngevd> Nope
22:34:14 <pkzip> isn't it a classic ?
22:34:24 <Ngevd> Classic, yes
22:34:26 <ais523\unfoog> it is indeed a classic, but there are a bunch of other languages around
22:34:29 <Ngevd> Standard, by no means no
22:34:33 <Ngevd> Look at Piet
22:34:35 <Ngevd> Or Befunge
22:34:40 <Ngevd> Or Intercal
22:34:45 <Ngevd> Or Underload
22:34:48 <ais523\unfoog> BF is much more similar to mainstream languages than most esolangs
22:34:53 <elliott> intercal, brainfuck, befunge, underload, unlambda
22:34:56 <elliott> are the classics
22:35:05 <Ngevd> I always use Piet because I like Piet
22:35:08 <elliott> ok underload is somewhat of a modern classic :)
22:35:09 <Ngevd> But it's not a classic
22:35:47 <pkzip> I like languages which are minimal and 'easy' (in the old BASIC 'nostalgic' style)
22:36:05 <pkzip> BF actually fits a purpose
22:36:19 <ais523\unfoog> hmm, can I get you interested in Forth?
22:36:32 <pkzip> I *LOVE* Forth !
22:36:34 <ais523\unfoog> it's a practical language, but an interesting one, not that similar to mainstream langs
22:36:40 <ais523\unfoog> I thought you would, somehow
22:36:43 <pkzip> I use Zen Forth
22:36:47 <pkzip> My own version of it
22:36:58 <pkzip> or revised version of it
22:37:12 <pkzip> A Minimal MacroASM Forth
22:37:32 <pkzip> I want to add Lisp(y) words to it
22:37:40 -!- hagb4rd has quit (Quit: hagb4rd).
22:37:49 <pkzip> And write DOS virii in it !
22:38:04 <Ngevd> Stop saying "virii"
22:38:14 -!- pkzip has changed nick to QuickDirtyOS.
22:38:28 <ais523\unfoog> DOS viruses don't run all that well on modern systems
22:38:32 <QuickDirtyOS> I dunno why they call it like that
22:38:40 <QuickDirtyOS> on WinXP they do
22:38:43 <elliott> nobody calls it virii
22:38:52 <elliott> QuickDirtyOS: err, WinXP's DOS is just an emulation layer
22:38:57 <QuickDirtyOS> I've seen it on hackers sites
22:39:00 <elliott> I suppose they run about as well as Windows viruses under Wine
22:39:01 <Ngevd> If you want to be all pedantic and latin, it'd just be viri
22:39:30 <QuickDirtyOS> WinXP Dos is as good as Win2000 (it was also emulated under Win2000)
22:39:36 <Ngevd> But even then you'd be wrong
22:39:43 <Ngevd> It's like saying "oxygens"
22:40:06 <QuickDirtyOS> I named the first virus a " Logic bomb "
22:40:11 <QuickDirtyOS> I live in israel
22:40:17 <QuickDirtyOS> Guess what
22:40:17 <ais523\unfoog> Ngevd: actually, it'd depend on where in the sentence it was
22:40:24 <QuickDirtyOS> I was a kid back than
22:40:30 <Ngevd> "virus" doesn't have a plural in Latin
22:40:35 <ais523\unfoog> "DOS virii" was the subject of that sentence, so it should be "DOS viros", I think
22:40:36 <QuickDirtyOS> prob. was near Jerusalem
22:40:40 <ais523\unfoog> perhaps -es, I haven't done Latin for ages
22:40:44 <QuickDirtyOS> cause it WAS the Jerusalem viri
22:40:57 <QuickDirtyOS> I didn't know what to call it
22:41:09 -!- calamari has joined.
22:41:11 <QuickDirtyOS> so for me, a "Logic bomb"
22:41:18 <Ngevd> ais523\unfoog, you mean "object"
22:41:20 <QuickDirtyOS> your "viri"
22:41:31 <ais523\unfoog> Ngevd: right, indeed
22:41:33 <ais523\unfoog> *object
22:41:34 <elliott> the singular is definitely virus
22:41:42 <Ngevd> We can agree on that, elliott
22:41:45 <QuickDirtyOS> I like virus better
22:41:48 <zzo38> Some old IBM BIOS had ROM BASIC. I would like to have the PC BIOS with Forth.
22:41:55 <ais523\unfoog> elliott: even then, if you're going to be all Latiny, why wouldn't it become virum when it was the object of a sentence?
22:42:02 <QuickDirtyOS> They did that with Linux
22:42:13 <QuickDirtyOS> Why won't you buy a SSD
22:42:27 <QuickDirtyOS> and put ForthOS in the Boot sector ?
22:42:33 <Ngevd> ais523\unfoog, because, to paraphrase Henry Beard, that'd be like playing football with ice-skates on
22:42:38 <elliott> ais523\unfoog: i was responding to: "your "viri""
22:42:45 <elliott> we should just talk in latin.
22:42:59 <ais523\unfoog> Ngevd: what if you were in a skating rink at the time?
22:42:59 <Ngevd> ita vero
22:43:04 <QuickDirtyOS> I said I like virus better too
22:43:10 <ais523\unfoog> it'd probably work better with the skates than without
22:43:14 <ais523\unfoog> I think; I'm not an expert on this
22:43:23 <QuickDirtyOS> I wrote viri to be 'exact'
22:43:55 <zzo38> What is a SSD?
22:44:02 <Ngevd> pluralis in lingua Anglica est "viruses"
22:44:04 <QuickDirtyOS> A Flash Disk
22:44:19 <QuickDirtyOS> So the Flash BIOS wud load Forth from a Flash Device.
22:44:32 <ais523\unfoog> zzo38: a storage device; it acts much like a hard disk, but is based on flash memory, rather than mechanical platters and magnetism
22:44:33 <elliott> `echo AM I TRANSACTIONAL YET?!
22:44:35 <HackEgo> AM I TRANSACTIONAL YET?!
22:44:36 <QuickDirtyOS> U heard of the LinuxBIOS btw ?
22:44:39 -!- aloril has quit (Ping timeout: 240 seconds).
22:44:43 <elliott> you mean coreboot?
22:44:52 <zzo38> I have heard of the LinuxBIOS/Coreboot
22:44:55 <QuickDirtyOS> yea
22:45:06 <zzo38> But as far as I know it is not a proper PC BIOS
22:45:08 <oerjan> <Ngevd> If you want to be all pedantic and latin, it'd just be viri <-- it's dubious to assume this as the word is somewhat irregular: it's a neuter word in -us.
22:45:09 <elliott> it doesn't support many motherboards to my knowledge.
22:45:22 <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:45:39 <elliott> it's also not a forth
22:45:47 <oerjan> *+ of 2nd declination
22:45:52 <QuickDirtyOS> bash can be turned into one REAL fast
22:46:02 <QuickDirtyOS> or any of the shells
22:46:03 <elliott> so can x86
22:46:04 <Ngevd> Can we pretend it's in 4th to make our lives easier
22:46:09 <elliott> does that make assembly a forth? :P
22:46:18 <QuickDirtyOS> yea
22:46:29 <QuickDirtyOS> assembly and forth mix in my dreams
22:46:32 <QuickDirtyOS> also on my PC
22:46:42 <ais523\unfoog> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:46:43 <QuickDirtyOS> I use forth words in MacroASM
22:46:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/addquote: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/addquote: cannot execute: Permission denied
22:46:54 <ais523\unfoog> err, is that /meant/ to happen?
22:46:57 <monqy> yes
22:47:03 <ais523\unfoog> `quote
22:47:05 <HackEgo> 560) <Taneb> I think it's fizzie against everyone atm <Taneb> AND EVERYONE IS WINNING <Taneb> EXCEPT FIZZIE
22:47:18 <ais523\unfoog> someone readonlied the quotes file?
22:47:31 <ais523\unfoog> no, -xed addquote
22:47:38 <ais523\unfoog> `run chmod a+x /hackenv/bin/addquote
22:47:40 <HackEgo> No output.
22:47:43 <ais523\unfoog> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:47:45 <HackEgo> No output.
22:47:51 <monqy> uh oh
22:47:52 <elliott> umm
22:47:53 <ais523\unfoog> `quote Forth
22:47:55 <HackEgo> 715) <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:47:58 <elliott> ais523\unfoog: please don't try patching things up when it's broken
22:47:58 <elliott> `help
22:48:00 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
22:48:07 <ais523\unfoog> elliott: oh, I assumed that someone had -xed it as a prank
22:48:08 <elliott> I mean, without understanding what's going on :P
22:48:09 <QuickDirtyOS> I like the number 715
22:48:15 <monqy> `quote 714
22:48:18 <QuickDirtyOS> sounds like a hawkins Loc number
22:48:18 <HackEgo> 714) * Sgeo|web wants to see elliott be wrong about something <elliott> Sgeo|web: That literally never happens. <shachaf> Sgeo|web: There you go. A great example.
22:48:21 <ais523\unfoog> `run chmod a-x /hackenv/bin/addquote
22:48:22 <elliott> I think I just broke adqduote
22:48:24 <HackEgo> No output.
22:48:26 <elliott> ais523\unfoog: hey, stop
22:48:30 <ais523\unfoog> elliott: I'm putting it back!
22:48:41 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/bbaa4fa982d2
22:48:43 <elliott> aha
22:48:47 <elliott> `run chmod +x bin/addquote
22:48:49 <HackEgo> No output.
22:48:51 <QuickDirtyOS> Keep my name on it:
22:48:54 <QuickDirtyOS> Its Amit.
22:48:58 <elliott> `delquote 715
22:49:01 <HackEgo> ​*poof* <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:49:09 <elliott> oh wait
22:49:14 <elliott> I made a bad modification to addquote
22:49:24 <elliott> `run echo 'echo $(qc)") $1"' >>bin/addquote
22:49:27 <HackEgo> No output.
22:49:31 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:49:33 <HackEgo> 715 quotes) <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:49:36 <elliott> oops
22:49:41 <elliott> `revert -3
22:49:42 <HackEgo> Done.
22:49:47 <elliott> `run echo 'echo $(qc | cut -d' ' -f1)") $1"' >>bin/addquote
22:49:49 <HackEgo> No output.
22:50:02 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:50:02 <QuickDirtyOS> Forth guys are gonna love me
22:50:10 <QuickDirtyOS> For this
22:50:11 <monqy> zzo?
22:50:14 <elliott> ais523\unfoog: tada... hurry up, dammit, HackEgo
22:50:15 <ais523\unfoog> elliott: you're just giving -d, not -d' ', as an argument to cut there
22:50:20 <elliott> ugh
22:50:21 <elliott> `revert
22:50:23 <HackEgo> Done.
22:50:29 <zzo38> QuickDirtyOS: For what?
22:50:31 <ais523\unfoog> because apostrophes don't nest
22:50:33 <elliott> `run echo 'echo $(qc | cut -d'"' '"' -f1)") $1"' >>bin/addquote
22:50:35 <HackEgo> No output.
22:50:36 <QuickDirtyOS> this quote
22:50:38 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:50:47 <elliott> ais523\unfoog: have I mentioned that @ doesn't have that problem?
22:50:57 <ais523\unfoog> elliott: not in programs, obviously
22:50:59 <monqy> does @ have ANY problems
22:51:12 <ais523\unfoog> what about when typing programs; how does the parser reify the keystrokes/mousestrokes into a parsetree?
22:51:24 <zzo38> Yes. Its problem is that there is no such things, as far as I can tell
22:51:28 <elliott> @ doesn't have programs! but ok, I'll dignify your EVIL QUESTION with a response
22:51:34 <elliott> ais523\unfoog: excellently. next question!
22:51:43 <ais523\unfoog> elliott: err, functions
22:51:45 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/af6a8d1f2673 ;; hmm, why isn't this working?
22:51:48 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:51:50 <HackEgo> 715) <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:51:51 <elliott> too many space
22:51:54 <elliott> ais523\unfoog: not all values are functions!
22:52:25 <ais523\unfoog> elliott: right; but I was thinking about writing functions in particular in my question
22:52:27 <elliott> ais523\unfoog: admittedly, as @ has no globals, most /useful/ "top-level" values are
22:52:37 <elliott> ais523\unfoog: I doubt you mean function
22:52:41 <elliott> you mean program-analogue
22:52:49 <elliott> for instance, a list of all prime numbers would count
22:52:54 <elliott> since it's analoguous to a program printing every prime number
22:52:58 <elliott> but that's not a function
22:53:10 <Phantom__Hoover> `log How did you work out where I live?
22:53:32 <ais523\unfoog> elliott: hmm
22:53:35 <HackEgo> 2011-11-12.txt:22:53:10: <Phantom__Hoover> `log How did you work out where I live?
22:53:44 <Phantom__Hoover> `log where I live?
22:53:47 <ais523\unfoog> you mean, a lazy list that did the computation wouldn't be counted as a function because it didn't have a function type, for instance?
22:53:49 <HackEgo> 2007-12-28.txt:22:20:17: <Hiato> where I live there's a band called fokoffpolisikar (at least I think that's how it's spelled)
22:54:02 <elliott> ais523\unfoog: yes (it doesn't "do" the computation, it just /is/ the result)
22:54:04 <elliott> Phantom__Hoover: s/?/\?/
22:54:09 <elliott> ais523\unfoog: OTOH, the reason most top-level @ values are functions is because they have to take all the modules they want as parameters
22:54:18 <elliott> because there are no globals
22:54:32 <elliott> which isn't... /strictly/ true
22:54:35 <elliott> but it's almost true
22:54:36 <ais523\unfoog> elliott: wouldn't it make more sense for them to take a function that resolved hashes into modules as an argument?
22:54:49 <elliott> ais523\unfoog: wow! why would you give every program root permissions?
22:55:22 <elliott> ais523\unfoog: for a start, hashes aren't actually integral to @'s core model any more (thankfully); for a second, that breaks the object-capability model, because it's a reference-forging tool
22:55:29 <ais523\unfoog> elliott: well, it wouldn't necessarily give them modules they didn't deserve
22:55:30 <elliott> also, it'd tie functionality to implementations, not APIs...
22:55:33 <zzo38> Is it supposed to be anything similar to a Haskell program?
22:55:37 <ais523\unfoog> but hmm, OK
22:55:39 <elliott> zzo38: sort of, yes
22:55:42 <ais523\unfoog> I assumed APIs would have hashes too
22:55:54 <ais523\unfoog> so that you could refer to them uniquely
22:55:58 <elliott> ais523\unfoog: they do; an API is identified by a module name, a hash, and a type signature
22:56:18 <elliott> well, it's identified by a hash of a name and a type signature
22:56:56 -!- Ngevd has quit (Quit: Goodbye).
22:56:58 <elliott> ais523\unfoog: anyway, I have certain requirements of my keypress-reifier, but no concrete specification; it's something I'll have to tweak as I use it
22:57:07 -!- Ngevd has joined.
22:57:16 <elliott> ais523\unfoog: for instance, the user must not constantly be bugged with the nested hierarchy; navigation should be /largely/ linear
22:57:26 <elliott> ais523\unfoog: reason: try navigating a heavily-nested TeXmacs expression
22:57:27 <ais523\unfoog> yep
22:57:31 <elliott> it's super annoying
22:57:50 <ais523\unfoog> I think that one possible method of navigating should be the one that would be used if it was a flat file using ( and )
22:57:52 <elliott> ais523\unfoog: also: not every keypress has to leave the program in a valid state -- semantically /or/ syntactically -- but it should try
22:57:57 -!- aloril has joined.
22:58:02 <ais523\unfoog> i.e. backwards and forwards in depth-first traversal order
22:58:07 <elliott> for instance, "if" should probably pregenerate the then/else keywords with appropriate indentation, and place a hole there
22:58:11 <elliott> but not fill the hole in
22:58:25 <ais523\unfoog> yep, just like many Java IDEs do already
22:58:51 <elliott> ais523\unfoog: yes (except they just leave blank space rather than a hole)
22:59:00 <elliott> the nice thing about holes are, you can ask the computer: what type is expected here?
22:59:10 <elliott> it can hoogle-equivalent for functions that could help you get to that type
22:59:11 <elliott> etc.
22:59:27 <ais523\unfoog> I remember something leaving <?>-shaped holes, but I can't remember what it was
23:00:01 <elliott> but anyway, the requirements are basically "not more painful than editing plain text", "largely linear navigation rather than focusing too much on the hierarchy", "as semantics-retaining as possible under incremental development", "not freaking annoying"
23:00:02 <ais523\unfoog> I suppose you could make it always correct by it leaving function arguments as the default hole-filler, but I'm not convinced that's a good idea
23:00:36 <elliott> ais523\unfoog: a nice thing about a proper AST type and holes and the like is that they make a lot of refactorings formal
23:00:42 <elliott> rather than risky textual manipulation
23:00:47 <ais523\unfoog> yep
23:00:48 <elliott> there's semantic /meaning/ to extracting out a hole as a parameter
23:01:01 <ais523\unfoog> my PhD is arguably on this subject
23:01:27 <ais523\unfoog> (type systems are good for refactoring, compiling is just really an extreme sort of refactoring, type systems are a good way to do this, this applies to hardware too)
23:01:39 <elliott> compiling is the kind of refactoring that makes your code worse :)
23:01:57 <QuickDirtyOS> sounds like a witty joke
23:02:13 <monqy> hi
23:02:20 <elliott> hmm, I'm kind of low on ideas as to the low-levelish language underpinning @lang that things like the GC are written in
23:03:18 <ais523\unfoog> shouldn't the GC be built into the @lang interp?
23:03:21 <elliott> the problem is that it has to map to modern exposed assembly as closely as possible while being completely safe...
23:03:25 <elliott> ais523\unfoog: no interp, compiler
23:03:27 <elliott> it's part of the RTS
23:03:31 <elliott> but what is the RTS written in?
23:03:34 <ais523\unfoog> ah, right
23:03:39 <ais523\unfoog> I was assuming there was some sort of VM involved
23:03:42 <elliott> no point writing it in assembly, I'd have to rewrite the GC for every platform, which is pointless
23:03:47 <ais523\unfoog> that could be written in something entirely different
23:03:51 <elliott> ais523\unfoog: well, VM, sufficiently heavy RTS, what's the difference
23:04:04 <ais523\unfoog> perhaps LLVM would be a practical example
23:04:05 <elliott> but, yeah, my intent is to minimise platform-specific code
23:04:07 <QuickDirtyOS> Use a minimal Forth
23:04:13 <QuickDirtyOS> Or a minimal C
23:04:16 <QuickDirtyOS> instead
23:04:18 <monqy> what is it with you and forth
23:04:19 <ais523\unfoog> it does what you want moderately accurately and isn't completely awful
23:04:24 <elliott> C isn't an option
23:04:31 <elliott> ais523\unfoog: unfortunately, no; LLVM isn't safe
23:04:32 <monqy> "c but better"
23:04:37 <elliott> you can write an LLVM program that segfaults
23:04:38 <QuickDirtyOS> Forth code is the same as machine code
23:04:42 <QuickDirtyOS> only better
23:04:44 <elliott> (adding runtime checks to every instruction is not acceptable)
23:04:47 <elliott> QuickDirtyOS: better and slower
23:04:54 <QuickDirtyOS> not slower
23:04:56 <QuickDirtyOS> if its native
23:04:59 <QuickDirtyOS> !
23:05:02 <QuickDirtyOS> duh.
23:05:11 <zzo38> Make a safe program similar to LLVM
23:05:13 <elliott> but of course.
23:05:38 <zzo38> Or, possibly, similar to Haskell too
23:05:50 -!- Ngevd has quit (Ping timeout: 245 seconds).
23:05:55 <elliott> ais523\unfoog: anyway, "applying the object-capability model to x86-64" sounds like a parody Ph.D. title
23:05:59 <ais523\unfoog> elliott: this language would necessarily have no access controls; if it's got enough perms to do GCing, it's got enough perms to do anything
23:06:07 <elliott> that probably applies to most papers that could come out of @...
23:06:27 <elliott> ais523\unfoog: no: it only has the perms to do GC if it's passed the heap
23:06:40 <QuickDirtyOS> assembly also isn't a dead-end, you can translate it just as well as Forth code.
23:06:45 <ais523\unfoog> hmm, so it's something more like NaCl
23:06:46 <elliott> ais523\unfoog: consider a very low-level section of, e.g. a graphics card driver
23:06:51 <elliott> that needs to have precise control over instructions
23:06:55 <elliott> it only needs a certain segment of RAM
23:06:56 <elliott> some IO ports
23:06:58 <ais523\unfoog> which is x86 machinecode plus a proof that it doesn't do anything nasty
23:07:00 <elliott> and local memory/registers
23:07:08 <ais523\unfoog> (and the proof is checked before the program is run)
23:07:13 <Sgeo|chromcrash> .
23:07:16 <elliott> there's no reason to let it trample on anything else at all
23:07:17 <elliott> Sgeo|chromcrash: .
23:07:22 <Sgeo|chromcrash> elliott: Phantom__Hoover CakeProphet update
23:07:35 <monqy> .
23:07:44 <elliott> update to the .
23:07:48 <elliott> it is now 90% more .y
23:07:51 <monqy> i love Phantom__Hoover CakeProphet updates
23:07:55 <monqy> . updates too
23:07:58 <zzo38> OK that is one idea. If you can have such a proof combined with a program.
23:07:59 <ais523\unfoog> elliott: I think something NaCl-style is your best bet there, then
23:08:05 <zzo38> Ify ou can figure out how to make that work.
23:08:19 <elliott> zzo38: yep; that's quite a difficult area of research, though
23:08:24 <elliott> formal verification is hard enough of high-level languages
23:08:27 <elliott> ais523\unfoog: I'd rather make it safe-by-design, I think
23:08:36 <elliott> ais523\unfoog: for instance, there's no reason you should be able to pass a literal to "mov"
23:08:41 <zzo38> Possibly with protected mode; it might not work as well with real mode
23:08:51 <ais523\unfoog> elliott: doesn't mov take an address as its target argument anyway?
23:09:01 <ais523\unfoog> oh, right, you mean even writing to a fixed address is bad
23:09:08 <elliott> ais523\unfoog: yep, but there's no reason you should be able to specify an arbitrary one
23:09:10 <ais523\unfoog> if you aren't given the capability for that address
23:09:12 <zzo38> I think x86 does have bound checking instructions
23:09:20 <elliott> ais523\unfoog: there's also no reason you should be able to cast int -> ptr, too, ofc
23:09:21 <ais523\unfoog> I thought you just meant you didn't want people to modify literals
23:09:31 <elliott> ais523\unfoog: so some kind of type system is necessar
23:09:31 <elliott> y
23:09:39 <elliott> I think I'll make it an infinite-register design
23:09:45 <ais523\unfoog> getting that language right is the really hard step
23:09:46 <elliott> but allow pinning virtual registers to hardware registers
23:09:47 <elliott> in case you need that
23:10:00 <ais523\unfoog> as a single security bug in it will cause the entire system to be insecure
23:10:07 <ais523\unfoog> with no other layers of defence
23:10:07 <elliott> ais523\unfoog: I've occasionally thought to just abandon the low-level language, write the GC unportably, and hope that no drivers need to do anything so low-level
23:10:12 <elliott> but it doesn't seem like the right thing to do
23:10:19 <elliott> the low level language doesn't clutter @'s design itself
23:10:20 -!- Taneb has joined.
23:10:26 <elliott> if you have an @ graph reduction machine, you can skip it entirely
23:10:28 -!- Taneb has quit (Read error: Connection reset by peer).
23:10:35 <elliott> and just compile and run @lang code directly
23:10:48 <elliott> ais523\unfoog: hmm, I'd disagree that there aren't other layers of defence
23:10:53 <elliott> ais523\unfoog: here's one: guessing addresses is pretty hard!
23:11:01 <monqy> i want an @ graph reduction machine
23:11:14 <quintopia> yesss
23:11:20 <ais523\unfoog> elliott: you don't need to guess, just try them systematically until you find a usable one
23:11:25 <quintopia> A GRASP machine would be awesome
23:11:36 <elliott> ais523\unfoog: that takes a very long time
23:11:42 <ais523\unfoog> so? still a security bug
23:11:47 <elliott> ais523\unfoog: oh, definitely
23:12:01 <elliott> ais523\unfoog: anyway, it is not that bad.
23:12:02 <ais523\unfoog> and it only takes a few seconds to fill memory on a modern computer, right, if all you're trying to do is fill memory with a particular pattern?
23:12:03 <elliott> ais523\unfoog: I mean,
23:12:06 <elliott> <ais523\unfoog> as a single security bug in it will cause the entire system to be insecure <ais523\unfoog> with no other layers of defence
23:12:09 <elliott> because
23:12:17 <elliott> ais523\unfoog: in Windows, all you need is a single security bug in ANY DRIVER AT ALL
23:12:34 <elliott> ditto in Linux
23:12:35 <ais523\unfoog> you also need the perms to communicate with the driver, don't you?
23:12:50 <elliott> ais523\unfoog: usually, drivers read from unprivileged data, or they're not so useful...
23:13:17 <Deewiant> elliott: Yes, but unprivileged users can't talk to drivers
23:13:17 <elliott> the graphics driver runs in the kernel, X runs as root, but the user runs programs as themselves, and that data makes its way to the graphics driver
23:13:18 <ais523\unfoog> not always; things like keyboard/mouse drivers don't need to do any reading from processes on the system, just writing
23:13:23 -!- Ngevd has joined.
23:13:27 <elliott> Deewiant: <elliott> the graphics driver runs in the kernel, X runs as root, but the user runs programs as themselves, and that data makes its way to the graphics driver
23:13:39 <Deewiant> elliott: Sure
23:13:40 <ais523\unfoog> elliott: but things like X filter the data first
23:13:43 <Deewiant> elliott: But that's not necessarily exploitable
23:13:46 <Deewiant> elliott: Because of what he said
23:14:04 <elliott> ais523\unfoog: So? I could have responded with a bunch of ways in which @ reduces the likelihood of an exploit
23:14:23 <elliott> point is, @ has many fewer exploitable vectors than a typical modern system
23:14:25 <ais523\unfoog> well, OK
23:18:20 <zzo38> I have written some things relating to another plan of computer I have; many of the security features are implemented in hardware. It just depend on the way of connecting the memory. And then have a flipflop to enter and exit privilege mode, and a few jumpers to override these things.
23:18:46 -!- quintopia has quit (Ping timeout: 256 seconds).
23:18:48 <QuickDirtyOS> at what age(s) did u met the esoteric languages ( u could count BF and Forth as well as some LISPs maybe )
23:19:10 <elliott> 11 or so
23:19:23 <zzo38> O, I don't remember
23:19:28 <QuickDirtyOS> 11? u had an Atari ?
23:19:37 <monqy> I can't remember. Probably 10 or 11 or so.
23:19:51 <QuickDirtyOS> was it Forth or BF ?
23:20:01 <elliott> what if it was neither
23:20:05 <elliott> (it was probably bf, but bf never interested me)
23:20:05 <monqy> what if
23:20:09 <ais523\unfoog> the first esolangs I came across were INTERCAL and Malbolge
23:20:25 <monqy> I came across INTERCAL first as well, but never really learned it
23:20:26 <elliott> probably befunge and underload got me into esolangs?
23:20:27 <ais523\unfoog> and I found the esolang community searching for info about INTERCAL
23:20:29 <elliott> i liked malbolge too
23:20:31 <elliott> and unlambda
23:20:43 <ais523\unfoog> monqy: hardly anyone's actually learned INTERCAL, I think, which is a pity
23:20:53 <ais523\unfoog> I really like the way the control flow works in modern INTERCAL, it's a thing of beauty
23:21:11 <ais523\unfoog> its expressions are still pretty nasty, though; reverse assignments make them so much better, but no compiler handles them correctly yet
23:21:18 <QuickDirtyOS> I only came to BF a year or less after bumpin into Forth.
23:21:39 <QuickDirtyOS> with a native x86 compiler, of course
23:21:46 <QuickDirtyOS> a very basic compiler
23:21:55 <zzo38> I think I found Brainfuck at first. But I did learn INTERCAL, too. Including both the old and new INTERCAL, and even wrote some suggestions of new INTERCAL
23:21:56 <QuickDirtyOS> (for both)
23:22:09 <elliott> `echo TRANS - ACT - IONAL
23:22:11 <HackEgo> TRANS - ACT - IONAL
23:22:22 -!- Ngevd has quit (Ping timeout: 258 seconds).
23:22:22 <QuickDirtyOS> For me it was in 2007 I think
23:22:38 <QuickDirtyOS> 2007, and I was 33
23:22:42 <QuickDirtyOS> or 32.
23:22:48 <zzo38> I know Forth as well; and I have added support for Forth codes into MegaZeux.
23:24:17 <QuickDirtyOS> but was it in ur 20s or 30s ?
23:24:19 -!- Ngevd has joined.
23:24:23 <QuickDirtyOS> or 40s ?
23:25:00 <QuickDirtyOS> can Machine Code be called an esoteric language btw ?!
23:25:19 <monqy> esoteric machine code
23:25:21 <ais523\unfoog> no, not really
23:25:21 <QuickDirtyOS> if so, I also came to meet it at 10 or 11
23:25:25 <ais523\unfoog> it's just a weird encoding for asm
23:25:33 <monqy> was it esoteric asm
23:25:36 <QuickDirtyOS> but its tough.
23:25:55 <QuickDirtyOS> Z80 was similar, but not as simple as 8080
23:25:55 <monqy> "tough?" what does that mean and how does it make it esoteric
23:26:40 <QuickDirtyOS> if BF was easy (as some, including my translator make it)
23:26:49 <QuickDirtyOS> would you consider it esoteric ?
23:26:59 <QuickDirtyOS> just because it wasn't mainstream ?
23:29:16 -!- Ngevd has quit (Ping timeout: 258 seconds).
23:29:34 -!- quintopia has joined.
23:29:34 -!- quintopia has quit (Changing host).
23:29:34 -!- quintopia has joined.
23:29:45 <monqy> esoteric doesn't mean difficult, does it?
23:29:59 <QuickDirtyOS> I'll keep that question for Chuck Moore
23:30:05 <QuickDirtyOS> he comes in here at times
23:30:09 <QuickDirtyOS> doesn't he ?
23:30:11 <QuickDirtyOS> ?!
23:30:11 <lambdabot> Maybe you meant: . ? @ v
23:30:48 <elliott> no
23:31:14 <QuickDirtyOS> I guess that was a tough question .. :-[
23:32:31 <QuickDirtyOS> I think machine code can be called esoteric
23:32:32 <Phantom__Hoover> Oi, Gregor, can I have some money?
23:32:49 <QuickDirtyOS> I think odds are for me.
23:32:58 <QuickDirtyOS> bets?
23:34:57 <monqy> what sort of machine code are you calling esoteric
23:35:11 <ais523\unfoog> elliott: do you consider Redcode an esolang?
23:35:25 <monqy> if you mean machine code in general, then it's not esoteric at all
23:35:32 <elliott> ais523\unfoog: hmm... probably no, but it has quite a few esoteric features
23:35:34 <QuickDirtyOS> its not mainstream (Redcode)
23:35:38 <elliott> ais523\unfoog: and it probably counts as esoteric programming
23:35:42 <ais523\unfoog> elliott: I'm conflicted on it myself
23:35:59 <ais523\unfoog> it's yes based on use, but no based on features
23:35:59 <elliott> ais523\unfoog: I think it's perfectly possible to have a language where all coding in it is esoprogramming but the language isn't esoteric itself
23:36:04 <ais523\unfoog> apart from the lack of library support
23:36:15 <QuickDirtyOS> actually Z80 is very mainstream (my bad luck?)
23:36:17 <elliott> I dunno, it has some weird stuff
23:36:22 <ais523\unfoog> elliott: hmm, perhaps; but a language designed for that /would/ be an esolang, I think, and thus fail at its goal
23:36:28 <ais523\unfoog> it'd have to happen accidentally
23:36:30 <elliott> QuickDirtyOS: mainstreamness is not evry relevant to esolang status
23:36:57 <QuickDirtyOS> I would vote for machine code for esolang
23:37:19 <elliott> machine code isn't a single language
23:37:20 <QuickDirtyOS> I remember one machine code / assembly that is an esolang
23:37:36 <monqy> oh?
23:37:56 <CakeProphet> there are several machine code esolangs, yes.
23:38:00 <elliott> ais523\unfoog: anyway, I'm kind of thinking that the low level @ language's type system would inevitably end up becoming as complicated as @lang's
23:38:04 <QuickDirtyOS> elliot: Mnemonics
23:38:06 <elliott> ais523\unfoog: so why not just reuse it?
23:38:18 <zzo38> There is the Checkout esolang; and I would like a (FOSS) implementation of it.
23:38:25 <QuickDirtyOS> Mnemonics
23:38:32 <CakeProphet> monqy: mnemonics
23:38:37 <monqy> CakeProphet: mnemonics
23:38:41 <elliott> menomincs
23:39:02 <elliott> ais523\unfoog: in fact, there's no reason the low level language couldn't just be part of @lang itself
23:39:32 <elliott> ais523\unfoog: (note: you could make /Python/ part of @lang, by just defining an AST for it and an interpreter function; you could include it in code just like any other program)
23:39:35 <monqy> unless it would end up cluttering up @lang horribley
23:39:37 <elliott> s/program/program element/
23:39:40 <elliott> monqy: see above
23:39:43 <monqy> yeah
23:39:44 <elliott> it could be separate, but use the same type system
23:39:54 <elliott> and since it would be restricted, you wouldn't have to implement all of @lang
23:39:55 <elliott> well, that's a lie
23:40:00 <elliott> you could still use all of @lang in the type system
23:40:07 <elliott> so it's not actually any easier to implement at all
23:40:09 <elliott> but ehhhh
23:40:13 <monqy> would it require features outside of @lang
23:40:14 <elliott> it gives the runtime properties i want
23:40:15 <elliott> so yay
23:40:40 <elliott> ais523\unfoog: actually there's a slight issue: how can you compile a dependently-typed language down to a language which shares its type system, without having the compilation of the latter depend on the former?
23:40:55 <elliott> I think you can solve the infinite regress simply in the standard bootstrapping manner, but am not sure exactly how
23:41:32 -!- Ngevd has joined.
23:41:50 <ais523\unfoog> elliott: why does the low-level lang need dependent typing?
23:41:58 <Ngevd> XSL S AND K IS DOING SOMETHING!
23:41:59 <elliott> <elliott> ais523\unfoog: anyway, I'm kind of thinking that the low level @ language's type system would inevitably end up becoming as complicated as @lang's
23:42:01 <elliott> <elliott> ais523\unfoog: so why not just reuse it?
23:42:02 <elliott> <elliott> ais523\unfoog: in fact, there's no reason the low level language couldn't just be part of @lang itself
23:42:08 <elliott> ais523\unfoog: why invent two type systems?
23:42:16 <ais523\unfoog> ah, OK
23:42:22 <elliott> ais523\unfoog: for instance, unless the low level language uses @lang's type system, it can't use modules at all
23:42:25 <elliott> which is... problematic
23:42:26 <ais523\unfoog> anyway, I'm going home, as I@m now too tired to communichaterently
23:42:30 <elliott> communichaterently
23:42:33 <Ngevd> Earlier today, I had a thought about @
23:42:41 <Ngevd> It's a bit like a space elevator
23:42:50 -!- ais523\unfoog has quit (Remote host closed the connection).
23:42:55 <elliott> Ngevd: is it like the bf joust warrior space_elevator?
23:43:03 <Ngevd> Not as far as I know
23:43:29 <Ngevd> What I mean is, @ will do something similar to things that already exist, but in a completely different, better way
23:43:32 <elliott> heh
23:43:37 <elliott> and never be built? :)
23:43:40 <Ngevd> Exactyl
23:43:47 <Ngevd> s/yl/ly/
23:44:21 <elliott> hmm, what has to be implemented in the low level language
23:44:31 <Ngevd> Hardware thingies?
23:44:46 <elliott> post-platform-initialisation bootup, the allocator, gc, storage manager (= persistence stuff)
23:44:58 <elliott> parts of the scheduler (parts will have to be platform specific)
23:45:14 <elliott> really low-level driver parts like the /implementation/ of the higher-level interfaces to things like IO ports and memory sections
23:45:15 <elliott> hmm
23:45:18 <Ngevd> Will @ work on today's computers?
23:45:26 <elliott> yes
23:45:29 <Ngevd> Oh cool
23:45:54 <CakeProphet> elliott: it should somehow use Checkout on graphics cards. :D
23:45:58 <elliott> <elliott> really low-level driver parts like the /implementation/ of the higher-level interfaces to things like IO ports and memory sections
23:46:04 <elliott> actually, a lot of this might have to be trusted platform-specific code
23:46:08 <elliott> although, hmm
23:46:27 <elliott> I wonder if I couldn't write the entire scheduler in the low-level language, and just have modules for each platform that use something like inline asm
23:46:40 <elliott> which would require the maximum trust level, ofc
23:46:43 <elliott> but that's okay for a scheduler
23:46:49 <elliott> CakeProphet: that would be difficult :p
23:48:21 <Ngevd> elliott, has any code been written for @? At all?
23:48:34 <elliott> Ngevd: i've worked on @-related code, yes
23:53:35 <Ngevd> Well, I've got XSL S and K to run itself recursively
23:53:41 <Ngevd> I just haven't yet got it to /stop/
23:54:14 -!- Patashu has joined.
23:56:08 <zzo38> Actually I would like to have some GPU with something like Checkout as its native code
23:56:31 -!- QuickDirtyOS has left.
23:58:12 <CakeProphet> I am wondering if it's even possible to use a fibonacci heap as a homoiconic programming language structure.
23:58:51 <monqy> bye quickdirtyos
23:59:03 <CakeProphet> I think forest is probably a better name for the actual structure that it will end up being.
23:59:43 <CakeProphet> as a fibonacci heap is just a kind of forest. if I'm not using it as a heap and instead computing programs then it's not really much of a heap.
23:59:56 <CakeProphet> well, unless I give nodes priorities.
2011-11-13
00:00:01 <CakeProphet> but that sounds really boring.
00:05:24 <CakeProphet> hmmmmm
00:05:28 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
00:05:36 <CakeProphet> I just need a sane evaluation method
00:05:53 <CakeProphet> er, well
00:05:56 <CakeProphet> /a/ evaluation order
00:06:00 <CakeProphet> not necessarily a sane one.
00:06:52 <elliott> */an/
00:06:54 <elliott> you illiterate fuck :(
00:07:03 <monqy> :(
00:08:39 <CakeProphet> elliott: oops. oh well, at least I'm not a condescending shitfingered cunt. :D :D :D
00:10:08 <Phantom__Hoover> WTF, Gap Yah was just last year?
00:13:32 <calamari> shitfingered?
00:16:02 -!- Ngevd has quit (Ping timeout: 258 seconds).
00:16:21 <CakeProphet> calamari: I get tired of the usual insult.
00:16:33 <CakeProphet> shitfingered cunt has very evocative imagery.
00:16:47 <CakeProphet> and it can be interpreted multiple ways!
00:17:16 <CakeProphet> none of them particularly pleasant.
00:24:09 <CakeProphet> woah.
00:25:37 <calamari> bbl
00:25:39 -!- calamari has quit (Quit: Leaving).
00:25:44 <CakeProphet> so imagine you have a (possinly infinite) graph that is your program expression.
00:26:35 <CakeProphet> now imagine that instead of reducing things "bottom to top" you reduce them in whatever direction you like (i.e. you can non-strictly evaluate in multiple directions)
00:26:44 <CakeProphet> does that make any sense at all? :P
00:29:00 <zzo38> I found out that in GHCi, if you want to assign an IO result to a variable, you should first enter the IO expression at the prompt and then use: let x = it if you want the variable to be called x
00:30:18 <zzo38> Graphics.DVI now will find ligature/kerning:
00:30:32 <zzo38> findLK (charLigKern $ characters tenrm !! 102) 105 = Just (Ligature {lkChar = 105, ligChar = 12, ligCode = 0})
00:30:44 <zzo38> findLK (charLigKern $ characters tenrm !! 65) 86 = Just (Kerning {lkChar = 86, kernDist = -72819})
00:30:56 <zzo38> findLK (charLigKern $ characters tenrm !! 64) 85 = Nothing
00:31:28 <CakeProphet> is there something like "graph automatons" akin to CA?
00:32:37 <elliott> see eodermdrome
00:32:46 <elliott> <zzo38> I found out that in GHCi, if you want to assign an IO result to a variable, you should first enter the IO expression at the prompt and then use: let x = it if you want the variable to be called x
00:32:46 <elliott> why not
00:32:47 <elliott> x <- ...
00:32:48 <elliott> ?
00:33:09 <zzo38> O, yes, that works too
00:33:16 <zzo38> But I didn't know that at first
00:35:02 <CakeProphet> elliott: bah ais beat me. :P ah well, doesn't mean I can't do it differently.
00:36:16 <CakeProphet> oh wow
00:36:17 <CakeProphet> that's awesome.
00:37:53 <zzo38> How do I remove interactive bindings?
00:38:35 <elliott> :reload? :p
00:38:46 <CakeProphet> ah yes, I see how I can do it differently.
00:38:51 <zzo38> No I want to remove only some bindings
00:40:27 <oerjan> i think you can only shadow them.
00:42:37 <CakeProphet> the difficult part will be determining evaluation order.
00:43:39 -!- derdon has quit (Remote host closed the connection).
00:43:56 -!- Zuu has quit (Ping timeout: 244 seconds).
00:50:36 -!- Zuu has joined.
00:53:48 * Phantom__Hoover → sleep
00:53:49 -!- Phantom__Hoover has quit (Quit: Leaving).
00:56:34 <CakeProphet> so the idea I've got
00:56:50 <CakeProphet> is that the graph nodes are all single digits 0-9
00:57:59 <CakeProphet> each digit performs a different operation, and evaluation order is determined by the priority of the node.
00:58:28 <CakeProphet> each tick, 9's evaluate first, and 0's evaluate last.
00:58:47 <CakeProphet> so it kind of works like a CA, except it's a graph..
01:06:11 -!- Darth_Cliche has joined.
01:08:38 <CakeProphet> my brain hurts.
01:09:13 <CakeProphet> I'm tempted to throw together a set of completely incoherent operations
01:09:19 <CakeProphet> this is essentially what I did with dupdog.
01:09:22 -!- Jafet has joined.
01:11:02 <CakeProphet> but instead, I think I'll just take my time working out what each digit + node degree results in.
01:12:23 <CakeProphet> so for example 0s and 1s with degree 1 or 2 remain inert, and would basically represent binary data. however for higher degrees they would do... something else that I haven't figured out.
01:14:59 <Vorpal> elliott, I'll upload some screenshots of Skyrim shortly. Unlike videos or jpeg compressed screenshots (which seems to be the norm from what I seen) these should actually let you judge the graphical quality.
01:15:08 <Vorpal> also fraps is really bad for the FPS
01:15:14 <elliott> yay
01:16:34 <Vorpal> elliott, I notice no stuttering without Fraps running, but with it (I used it for the screenshots since prtsc didn't work in the game for some reason) its FPS display reports 40 FPS and I notice some frame rate drop too.
01:16:49 <elliott> i think there's meant to be a less laggy capturing tool
01:16:54 <Vorpal> hm
01:16:57 <Vorpal> elliott, possibly
01:17:37 <Vorpal> well I have 33 MB of screenshots as pngs
01:17:44 <Vorpal> note, this is just a few files
01:17:50 <Vorpal> 14 files
01:18:00 <elliott> i'm about to leave shortly, so i'll probably see them tomorrow
01:18:45 <Vorpal> elliott, while the screenshots should contain no spoilers, there are some pictures from buildings a fair bit into the game. If you haven't played it, it is just some pretty (or not so pretty) architecture.
01:19:30 <elliott> Doesn't bother me
01:20:14 <Vorpal> elliott, the first one is up at http://whotookspaz.org/~anmaster/images/skyrim/
01:20:52 <elliott> huh, the HUD interface looks kind of amateurish like that, the castle icon thing
01:20:57 <elliott> very pretty though
01:21:05 <Vorpal> elliott, look at the second
01:21:10 <Vorpal> elliott, not so pretty eh?
01:21:19 <elliott> unfortunately i have to go now :( will they still be up tomorrow?
01:21:22 <elliott> and heh, nice textures
01:21:33 <Vorpal> elliott, designed for console rather than PC
01:21:37 <Vorpal> pretty obviously
01:21:51 <Vorpal> elliott, but sure, they /may/ be there tomorrow
01:22:00 <elliott> alright
01:22:01 <Vorpal> elliott, unless I get a cease-and-desist
01:22:03 <Vorpal> or something
01:23:10 <elliott> cease and desist showing off our crappy textures
01:23:13 <Vorpal> <rwg> Vorpal, horses and chickens can report you to the authorities in skyrim :P
01:23:15 <Vorpal> elliott, ^
01:23:19 <Vorpal> elliott, as in, if you steal
01:23:21 <elliott> :D
01:23:29 <Vorpal> elliott, topic was "bugs"
01:23:53 <Vorpal> elliott, but yeah I seen a few understandable and some rather weird bugs
01:23:56 -!- elliott has quit (Quit: Leaving).
01:25:57 -!- oerjan has quit (Quit: Good night).
01:33:28 -!- copumpkin has joined.
01:59:50 -!- kmc has joined.
02:14:49 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
02:43:54 -!- Vorpal has quit (Ping timeout: 256 seconds).
03:02:41 -!- madbr has joined.
03:15:46 <Gregor> elliott: Now is a good time for me to reappear.
03:24:05 <zzo38> Can you make a ligaturing program to increment an arbitrary sized number?
03:27:45 -!- Aune has quit (Quit: Lmnar).
03:43:45 -!- sebbu has joined.
03:43:45 -!- sebbu has quit (Changing host).
03:43:45 -!- sebbu has joined.
03:46:32 -!- sebbu3 has quit (Ping timeout: 240 seconds).
03:49:20 -!- sebbu2 has joined.
03:49:21 -!- sebbu2 has quit (Changing host).
03:49:21 -!- sebbu2 has joined.
03:52:43 -!- sebbu has quit (Ping timeout: 260 seconds).
04:16:10 -!- tiffany has quit (Quit: ninies~).
04:42:45 -!- sebbu3 has joined.
04:45:44 -!- sebbu2 has quit (Ping timeout: 240 seconds).
04:51:55 -!- MDude has changed nick to MSleep.
04:58:54 -!- hagb4rd has joined.
05:21:29 <zzo38>
05:26:42 -!- hagb4rd has quit (Ping timeout: 248 seconds).
05:40:59 <Sgeo|chromcrash> Someone elsewhere mentioned this thing
05:41:00 <Sgeo|chromcrash> const void * const ((*foo)(const float *,int *(*)(float *,int,int),void())[5]);
05:41:06 * Sgeo|chromcrash has no idea what that does
05:43:54 <zzo38> Sgeo|chromcrash: It seems to be a C code for a function type?
05:44:09 <Sgeo|chromcrash> zzo38: Yes, I think
05:44:36 <zzo38> Out of context it is difficult to understand what its purpose is.
05:45:33 <Sgeo|chromcrash> zzo38: Someone posted it in another channel and said that if anyone figured it out they'd get 255 internet cookies
05:45:54 * Sgeo|chromcrash mentioend that he posted it in another channel
05:47:55 <madbr> that's like a function pointer no?
05:48:46 <zzo38> madbr: Yes I think so
05:48:58 <madbr> pointer to function that returns a constant pointer to constant data or something like that
05:51:59 <madbr> wait, hmm, no
06:16:30 -!- madbr has quit (Quit: Radiateur).
06:32:42 -!- nys has quit (Quit: quit).
06:53:06 <Gregor> It's C++, not C.
06:56:10 <Gregor> It's an array of five function pointers. Each points to a function returning a pointer which is mega-super-duper-constant (can't change it, can't change thru it). The functions take a constant float pointer/array, a function (float *,int,int)->int *, and whatever a "void()" is (that one stumps me ... generic function pointer maybe?)
06:56:27 <Gregor> Ohwait
06:56:46 <Gregor> Right, that return type "const void *const" in fact indicates that it's constant and also always returns the same value for the same inputs.
06:58:42 <Gregor> Still not sure about void() though.
07:01:02 <Gregor> Perhaps it has something to do with variadic arguments ...
07:02:22 <Gregor> Yup, can't figure out what void() means and it's not searchable online :P
07:11:03 <Gregor> Problem is it can't just be void, you can't have void as a parameter >_>
07:14:41 -!- zzo38 has quit (Remote host closed the connection).
08:21:26 <shachaf> Sgeo|chromcrash: Do you know the "declarations use the same syntax as expressions" trick for reading C declarations?
08:24:38 <Sgeo|chromcrash> No
08:25:11 <Sgeo|chromcrash> Um, I have a feeling you just told me it
08:28:52 <shachaf> Sgeo|chromcrash: The trick is basically "declarations use the same syntax as expressions".
08:29:12 <shachaf> For example, "int x;" declares x as an integer; "int *x;" declares *x as an integer.
08:31:10 <shachaf> If you have a function blah that takes two doubles and returns a pointer to a double, then "*(*blah)(5.0,3.0)" is a double; therefore "double *(*blah)(double x, double y);" declares that function.
08:32:54 <shachaf> If you have an array yak of pointers to functions that take ints and return void and you want to call one, you say "(*yak[1])(8)"; therefore you can declare yak as "void (*yak[5])(int);"
08:32:58 <shachaf> And so on.
08:42:32 <fizzie> cdecl> explain const void * const ((*foo)(const float *,int *(*)(float *,int,int),void())[5]);
08:42:35 <fizzie> declare foo as pointer to function (pointer to const float, pointer to function (pointer to float, int, int) returning pointer to int, function returning void) returning array 5 of const pointer to const void
08:49:55 <fizzie> Also: $ echo 'const void * const ((*foo)(const float *,int *(*)(float *,int,int),void())[5]);' | gcc -std=c99 -pedantic -Wall -Wextra -x c -
08:49:58 <fizzie> <stdin>:1:23: error: ‘foo’ declared as function returning an array
08:50:01 <fizzie> <stdin>:1:23: warning: type qualifiers ignored on function return type
08:50:49 -!- monqy has quit (Quit: hello).
08:51:33 <fizzie> Or "error: function cannot return array type 'void const *const [5]'" if you ask clang.
08:52:11 <shachaf> I wonder why returning arrays is illegal.
08:53:23 <shachaf> You can always put them in a struct, after all.
08:54:09 <fizzie> You couldn't assign the return value anywhere, for one thing.
08:55:19 <shachaf> I guess that's true. Why isn't that allowed too? :-)
08:55:27 <fizzie> That of course just transforms into the question of why array assignment is illegal when array-in-a-struct assignment is just fine, yes.
08:55:39 <fizzie> Hysterical raisins, maybe.
08:56:24 <shachaf> Raisins tend to be far funnier than they ought to.
09:07:29 -!- Ngevd has joined.
09:13:52 <pikhq> I'm inclined to just say "C arrays suck".
09:15:09 -!- sebbu2 has joined.
09:15:09 -!- sebbu2 has quit (Changing host).
09:15:09 -!- sebbu2 has joined.
09:16:15 -!- Taneb has joined.
09:16:20 <Taneb> Stupid connection problems
09:18:39 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:18:48 -!- sebbu3 has quit (Ping timeout: 260 seconds).
09:19:38 -!- Ngevd has joined.
09:19:42 -!- copumpkin has quit (Ping timeout: 260 seconds).
09:20:20 -!- copumpkin has joined.
09:23:45 -!- Taneb has quit (Ping timeout: 258 seconds).
09:24:04 -!- Taneb has joined.
09:28:21 -!- Ngevd has quit (Ping timeout: 258 seconds).
09:28:56 -!- derrik has joined.
09:30:20 -!- Vorpal has joined.
09:32:42 -!- Jafet has quit (Read error: Connection reset by peer).
09:34:06 -!- Taneb has quit (Ping timeout: 258 seconds).
09:35:33 -!- Jafet has joined.
09:35:36 -!- Jafet has quit (Changing host).
09:35:36 -!- Jafet has joined.
09:44:13 -!- Ngevd has joined.
09:52:11 -!- Taneb has joined.
09:54:26 <Taneb> http://pastebin.com/NM6TRF8R
09:54:48 -!- Ngevd has quit (Ping timeout: 258 seconds).
09:56:59 -!- Taneb has quit (Read error: Connection reset by peer).
09:57:22 -!- Taneb has joined.
10:02:42 <Taneb> Any thoughts on that?
10:12:07 -!- derrik has quit (Ping timeout: 258 seconds).
10:27:53 -!- Phantom_Hoover has joined.
10:47:23 <Sgeo|chromcrash> IOT would be a good name for a nonsense language
10:47:38 <Taneb> Morning Phantom_Hoover
10:48:25 <Phantom_Hoover> Or is it... the afternoon????
10:48:42 <Taneb> You're in the same time zone as me.
10:48:42 <Phantom_Hoover> No, it's not; I got up in time today.
10:48:44 <Taneb> It's mornin
10:48:44 <Taneb> g
11:00:09 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/mad87/what_is_d%C3%A9j%C3%A0_vu/
11:00:23 <Phantom_Hoover> This is possibly the most heavily-pruned AskScience thread I've seen.
11:01:34 <Taneb> You know, I only go on reddit when it's linked on the #esoteric channel family?
11:03:25 <Phantom_Hoover> I started off that way.
11:08:33 <Vorpal> Phantom_Hoover, did you see the native res skyrim screenshots I made?
11:08:39 <Phantom_Hoover> No.
11:08:40 <Vorpal> http://whotookspaz.org/~anmaster/images/skyrim/
11:08:44 <Vorpal> in case you are interested
11:08:59 <Phantom_Hoover> I note you have emigrated from the Sporks server.
11:09:15 <Vorpal> Phantom_Hoover, that one is the sporks server. Just the domain name changed.
11:09:26 <Vorpal> because network got renamed
11:09:47 <Phantom_Hoover> http://whotookspaz.org/~anmaster/images/skyrim/TESV%202011-11-13%2001-03-46-22.png
11:09:52 <Phantom_Hoover> That looks pretty terrible.
11:09:52 <Jafet> Is it just me or do those rocks look just a bit too specular
11:09:55 <Vorpal> Phantom_Hoover, yes
11:09:56 <Jafet> http://whotookspaz.org/~anmaster/images/skyrim/TESV%202011-11-13%2001-03-38-38.png
11:10:05 <Vorpal> Phantom_Hoover, the game is clearly designed for consoles
11:10:12 <Vorpal> Phantom_Hoover, where you don't really see stuff up close
11:10:25 <Vorpal> because the TV is further away than a computer monitor
11:10:45 <Vorpal> Jafet, I believe it is snow and ice on them, not sure though
11:10:47 -!- derdon has joined.
11:11:06 <Vorpal> Jafet, and there is direct sunlight on parts, while other parts are in shadow
11:11:15 <Phantom_Hoover> Well, eh; we're not exactly the kind of people to start judging a game based on the graphics.
11:11:23 <Jafet> There is no snow nor ice, only direct3d parameters
11:11:28 <Vorpal> right
11:11:30 <Jafet> And textures
11:11:35 <Vorpal> yeah
11:11:44 <Vorpal> anyway I prefer the graphics of Witcher 2. Way better
11:11:50 <Jafet> And damn, that rock thingy looks specular.
11:12:03 <fizzie> That's some ugly snow, yes.
11:12:10 <Vorpal> indeed
11:12:19 <Vorpal> still, looks better than oblivion
11:12:37 <Vorpal> but yes, it is clearly not up to scratch with high end PC graphics
11:12:54 <Phantom_Hoover> ISTR hearing that the system requirements were actually fairly low.
11:12:55 <fizzie> It doesn't look too bad from a distance, I guess.
11:13:14 <Vorpal> Phantom_Hoover, indeed. I'm running it on ultra graphics settings
11:13:14 <Phantom_Hoover> But yeah, the shiny rocks are a bit offputting.
11:13:44 <Jafet> I played Fallout 3, and it also had shiny rocks everywhere
11:13:46 <Vorpal> Phantom_Hoover, anyway I think consoles like xbos 360 has 512 MB RAM or some such
11:13:47 <fizzie> Phantom_Hoover: You're supposed to go all "ooh, shiny!", not "yuck, shiny!" on it.
11:13:51 <Phantom_Hoover> I guess I can just pretend all the rocks in Skyrim are muscovite?
11:13:53 <Jafet> And shiny dirt and shiny rubble
11:14:01 <Jafet> And shiny concrete pieces
11:14:25 <fizzie> Jafet: Possibly polishing dirt is a common occupation in the post-apocalyptic era.
11:14:36 <Vorpal> XD
11:14:42 <Jafet> Could be all the lasers
11:14:46 <Phantom_Hoover> fizzie, obviously, how else are you meant to get all that radiation off?
11:15:15 <Vorpal> also I find that the HUD looks fairly bad
11:15:23 <Vorpal> it feels out of place in the setting
11:15:58 <Jafet> Don't worry, there will soon be a mod for fix each of those things
11:16:01 <Phantom_Hoover> You'd... prefer bits of paper on the screen?
11:16:01 <Vorpal> from a pure aesthetic point of view, the HUD and menus of oblivion were better
11:16:35 <Vorpal> Phantom_Hoover, well from the point of view of navigating the menus, skyrim is /way/ better than oblivion
11:16:36 <Taneb> PixelQuest update
11:16:48 <Jafet> And then there will be a mod to make the menus look exactly like Oblivion's
11:16:54 <Vorpal> Phantom_Hoover, I find the font used in skyrim is pretty bad too
11:16:57 <Phantom_Hoover> Taneb, did you respond to my submission already.
11:17:03 <Vorpal> Jafet, probably
11:17:03 <Taneb> Nah, getting to it
11:17:16 <Jafet> And then there will be a mod to make females naked
11:17:29 <Vorpal> Jafet, and another one to make children killable
11:17:30 <Phantom_Hoover> Vorpal, shush, you're sounding like elliott at his worst.
11:17:35 <Taneb> Hehe just got a funny idea
11:17:57 -!- Taneb has quit (Read error: Connection reset by peer).
11:18:06 <Jafet> Vorpal: are you sure gamers want to kill them?
11:18:13 -!- Taneb has joined.
11:18:26 <Taneb> That wasn't the funny idea, by the way
11:18:29 <Vorpal> Phantom_Hoover, Jafet: other funny thing. When you create your character all the attributes are sliders. Including the gender one. However it only have two positions.
11:18:36 <Vorpal> but why make it a full length slider
11:18:44 <Jafet> Extensibility?
11:18:48 <Phantom_Hoover> Jafet, yes, because gamers want to kill everything, and the inability to kill a class of things just makes them want to kill them all the more.
11:18:51 <Vorpal> maaaybe
11:19:00 <fizzie> Vorpal: The gender-slider's something elliott also complained about.
11:19:01 <Phantom_Hoover> Vorpal, Simon and elliott have both poked fun at that.
11:19:10 <Vorpal> fizzie, and yogscast too
11:19:17 <Vorpal> Phantom_Hoover, snap :P
11:19:22 <Taneb> I'm not going to get Skyrim
11:19:24 <Taneb> Not for a while anyway
11:19:36 <Jafet> I can think of worse things gamers might think of doing to children in a video game
11:19:47 <fizzie> 50 eur sounds a bit much for a game with only two genders, yes.
11:19:48 <Vorpal> yeah unless you are a die hard TES fan, you are better off waiting for some of the bugs to get fixed
11:19:53 <Vorpal> yes, it has quite a few bugs
11:20:25 <Taneb> Jafet, take them to the theatre to see the Nutcracker Suite as a hip-hop interpretive dance?
11:20:36 <Vorpal> like dragons crash landing on a slope. The rag doll physics seem to have problem handling that, resulting in some very odd looking animations.l
11:20:40 <Vorpal> s/l$//
11:21:03 <Jafet> Taneb's idea was worse than I thought
11:21:12 <Jafet> I hope he doesn't make a mod for that
11:21:17 <Vorpal> XD
11:21:44 <Jafet> "Hey guys, the new game by Bethesda Softworks, it has quite a few bugs"
11:21:53 <Jafet> I'm not sure what you're getting at
11:21:57 <Vorpal> Jafet, XD
11:22:07 <Vorpal> but s
11:22:15 <Vorpal> but sure, it is fun to play
11:22:40 -!- Jafet has quit (Quit: Leaving.).
11:24:33 <Vorpal> Phantom_Hoover, anyway the map screen is an improvement compared to oblivion definitely
11:25:41 <Vorpal> Phantom_Hoover, anyway how can you /not/ think that this font is terrible: http://whotookspaz.org/~anmaster/images/skyrim/TESV%202011-11-13%2001-05-10-37.png
11:27:00 <Vorpal> Phantom_Hoover, oh and it generally doesn't look as bad when you play it. After all you are generally moving, that tends to help.
11:27:32 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:27:50 <Vorpal> fizzie, are you going to play skyrim?
11:28:33 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
11:29:33 <Vorpal> fizzie, sure you said it was a bit expensive above, but that doesn't mean you won't play it. After all it was "launched" on torrents before it was launched officially, so it won't really be hard to get hold of.
11:32:11 <fizzie> I might just wait until they release a cheapo version in a few years. Will see.
11:33:45 <fizzie> That's what I did with NWN1 and NWN2.
11:33:48 <Vorpal> http://www.skyrimnexus.com/index.php <-- quite a few mods already. And the official modding SDK has not yet been released even...
11:34:06 <fizzie> Or maybe I got NWN2 with a graphics card, actually.
11:34:21 <Vorpal> heh
11:38:41 <fizzie> Bundling games with graphics cards is a funny thing. I got that "G-Police" game with... either the Voodoo2 or some Matrox card.
11:41:27 <Vorpal> fizzie, never even heard of that game
11:41:36 <Vorpal> what sort of game was it?
11:41:37 <fizzie> It's a shooting thing.
11:41:38 -!- Phantom_Hoover has joined.
11:41:40 <Vorpal> heh
11:41:52 <Vorpal> Phantom_Hoover, see logs before you pinged out
11:41:57 <fizzie> I didn't play-play it, but it was impressively threedee for 1997.
11:42:07 <Vorpal> fizzie, play-play?
11:42:14 <fizzie> Seriously play.
11:42:19 <fizzie> "The game made use of cutting edge technology such as force–feedback joysticks, 3D sound and Direct3D Hardware Acceleration and was largely well-received. Critics noted that the game's graphics were some of the most technically impressive of the time."
11:42:19 <Vorpal> ah
11:42:32 <fizzie> "The gameplay involves piloting VTOL aircraft resembling helicopters, engaging in combat with enemies and protecting allies."
11:42:44 <fizzie> Not really my sort of thing, but it looked impressive.
11:43:07 <fizzie> Okay, away-away; it's this "father's day" thing today at least in Finland.
11:43:08 <Vorpal> mhm
11:43:14 <Vorpal> heh
11:43:20 <Vorpal> fizzie, you are going to your father?
11:43:28 <Vorpal> fizzie, or are you a father?
11:43:34 <fizzie> The former.
11:43:40 <Vorpal> ah
11:43:43 <fizzie> Free food, basically. :p
11:44:03 <Vorpal> heh
11:44:33 <fizzie> We "did" my wife's father yesterday; so free dinners for the whole weekend, even.
11:44:51 <Phantom_Hoover> Eeew.
11:45:09 <Vorpal> Phantom_Hoover, ?
11:45:19 <Vorpal> fizzie, anyway those quotes looks strange
11:45:24 <Phantom_Hoover> <fizzie> We "did" my wife's father yesterday;
11:45:31 <fizzie> Not that sort of "do".
11:45:32 <Vorpal> Phantom_Hoover, oh right
11:45:43 <Vorpal> without the quotes I would never had noticed the issue
11:46:10 <fizzie> Got a bus to catch. ->
11:46:21 <Vorpal> <Vorpal> Phantom_Hoover, anyway how can you /not/ think that this font is terrible: http://whotookspaz.org/~anmaster/images/skyrim/TESV%202011-11-13%2001-05-10-37.png
11:46:23 <Vorpal> well?
11:46:58 <Taneb> Speaking of food, breakfast time
11:47:03 <Phantom_Hoover> It's not /terrible/, it's just not curly and serifed enough to fit well with a fantasy setting.
11:47:24 <Vorpal> Phantom_Hoover, Exactly. It is terrible in the context.
11:47:28 -!- Taneb has changed nick to Taneb|Not-Here.
11:47:33 <Vorpal> it would work fine in other places, sure
11:47:53 <Phantom_Hoover> Vorpal, eh; it's a bit incongruous, but if you can't see beyond the font...
11:48:07 <Vorpal> Phantom_Hoover, then I'm an elliott clone?
11:48:35 <Vorpal> Phantom_Hoover, sure, I can play the game. It isn't a game blocking "bug" for me. It just annoys me.
11:50:55 <Phantom_Hoover> http://www.youtube.com/watch?v=6dYf0IfDz5Y&t=1m3s
11:50:59 <Phantom_Hoover> Those moons....
11:51:45 <Phantom_Hoover> My inner physicist is screaming, of course.
11:53:04 -!- Taneb|Not-Here has quit (Ping timeout: 240 seconds).
11:56:53 -!- Ngevd has joined.
12:01:23 -!- copumpkin has quit (Ping timeout: 258 seconds).
12:01:48 -!- copumpkin has joined.
12:12:03 -!- pkzip has joined.
12:12:20 -!- pkzip has left.
12:15:47 <Ngevd> @ping
12:15:47 <lambdabot> pong
12:15:53 <Ngevd> That's good
12:20:11 <Vorpal> Phantom_Hoover, I hope that video is actually either a minecraft mod or a skyrim mod. I don't think so however :(
12:33:32 <Ngevd> @ping
12:33:33 <lambdabot> pong
12:33:44 <Ngevd> Okay, my IRC connection seems fine
12:36:33 -!- copumpkin has quit (Ping timeout: 260 seconds).
12:36:58 -!- copumpkin has joined.
12:39:39 <Phantom_Hoover> http://i.imgur.com/VfBeP.png
12:41:16 -!- copumpkin has quit (Ping timeout: 245 seconds).
12:41:41 -!- copumpkin has joined.
12:44:08 <Ngevd> Is S and K combinatory logic still turing-complete if it's restricted to balanced binary trees?
12:44:37 <Phantom_Hoover> Yep.
12:44:47 <Phantom_Hoover> Just pad out with ``skks as required.
12:45:14 <Ngevd> Okay
12:45:16 <Phantom_Hoover> That's (``skk), plural s, of course.
12:45:22 <Ngevd> I did not actually need to know that at all
12:47:02 <Phantom_Hoover> It might be a bit more complicated than that, since that only lets you add two extra levels, but I think you can pad to an odd number too.
12:47:52 <Phantom_Hoover> kj;oahgua;ewighage
12:48:04 <Phantom_Hoover> scan.co.uk wiped my basket.
12:48:05 <Phantom_Hoover> Argh.
13:01:08 <Vorpal> Phantom_Hoover, what were you buying?
13:03:21 -!- Ngevd has quit (Ping timeout: 240 seconds).
13:10:23 <Phantom_Hoover> Computer bits.
13:18:09 -!- Ngevd has joined.
13:19:47 <Ngevd> I might learn Lisp
13:20:11 <Ngevd> Somewhere at the end of my list of languages to learn
13:22:45 <Vorpal> Phantom_Hoover, ah
13:23:11 <Vorpal> Phantom_Hoover, so soon you will be able to play all the games from that humble bundle that you complained you couldn't play
13:23:26 <Vorpal> Phantom_Hoover, I really recommend trying out Trine. It is fun and it looks good
13:24:46 -!- mycroftiv has quit (*.net *.split).
13:24:46 -!- Sgeo|chromcrash has quit (*.net *.split).
13:24:46 -!- Ngevd has quit (*.net *.split).
13:24:46 -!- Madoka-Kaname has quit (*.net *.split).
13:24:46 -!- mtve has quit (*.net *.split).
13:24:47 -!- SimonRC has quit (*.net *.split).
13:24:47 -!- copumpkin has quit (*.net *.split).
13:24:47 -!- sebbu2 has quit (*.net *.split).
13:24:47 -!- jix has quit (*.net *.split).
13:24:47 -!- Zwaarddijk has quit (*.net *.split).
13:24:47 -!- fizzie has quit (*.net *.split).
13:24:47 -!- FireFly has quit (*.net *.split).
13:24:48 -!- lifthrasiir has quit (*.net *.split).
13:24:48 -!- Zuu has quit (*.net *.split).
13:24:48 -!- fungot has quit (*.net *.split).
13:24:48 -!- fizziew has quit (*.net *.split).
13:24:49 -!- TeruFSX has quit (*.net *.split).
13:24:49 -!- Deewiant has quit (*.net *.split).
13:24:49 -!- coppro has quit (*.net *.split).
13:24:49 -!- Phantom_Hoover has quit (*.net *.split).
13:24:49 -!- kmc has quit (*.net *.split).
13:24:50 -!- pikhq has quit (*.net *.split).
13:24:50 -!- yiyus has quit (*.net *.split).
13:24:50 -!- atehwa has quit (*.net *.split).
13:24:50 -!- Nisstyre has quit (*.net *.split).
13:24:50 -!- rodgort has quit (*.net *.split).
13:24:50 -!- bd_ has quit (*.net *.split).
13:24:50 -!- yorick has quit (*.net *.split).
13:24:50 -!- twice11 has quit (*.net *.split).
13:24:51 -!- BeholdMyGlory has quit (*.net *.split).
13:24:51 -!- lambdabot has quit (*.net *.split).
13:24:51 -!- derdon has quit (*.net *.split).
13:24:51 -!- quintopia has quit (*.net *.split).
13:24:51 -!- aloril has quit (*.net *.split).
13:24:51 -!- chickenzilla has quit (*.net *.split).
13:24:52 -!- shachaf has quit (*.net *.split).
13:28:13 -!- coppro has joined.
13:28:13 -!- Deewiant has joined.
13:28:13 -!- TeruFSX has joined.
13:28:13 -!- fizziew has joined.
13:28:13 -!- fungot has joined.
13:28:13 -!- Zuu has joined.
13:28:13 -!- copumpkin has joined.
13:28:13 -!- sebbu2 has joined.
13:28:13 -!- jix has joined.
13:28:13 -!- Zwaarddijk has joined.
13:28:13 -!- Phantom_Hoover has joined.
13:28:13 -!- kmc has joined.
13:28:13 -!- pikhq has joined.
13:28:13 -!- yiyus has joined.
13:28:13 -!- atehwa has joined.
13:28:13 -!- Nisstyre has joined.
13:28:13 -!- rodgort has joined.
13:28:13 -!- bd_ has joined.
13:28:13 -!- yorick has joined.
13:28:13 -!- twice11 has joined.
13:28:13 -!- glogbackup has joined.
13:28:13 -!- derdon has joined.
13:28:13 -!- quintopia has joined.
13:28:13 -!- aloril has joined.
13:28:13 -!- chickenzilla has joined.
13:28:13 -!- shachaf has joined.
13:28:13 -!- lifthrasiir has joined.
13:28:13 -!- FireFly has joined.
13:28:13 -!- fizzie has joined.
13:28:13 -!- Ngevd has joined.
13:28:13 -!- Sgeo|chromcrash has joined.
13:28:13 -!- Madoka-Kaname has joined.
13:28:13 -!- mtve has joined.
13:28:13 -!- SimonRC has joined.
13:28:17 -!- glogbackup has left.
13:28:18 -!- BeholdMyGlory has joined.
13:28:18 -!- lambdabot has joined.
13:30:40 -!- mycroftiv has joined.
13:36:50 <Ngevd> A memory efficient SKI interpreter would try to find all the ``k's and all the `i's before doing ```s's
13:37:12 <Ngevd> ^^^Statement of opinion
13:44:33 -!- mycroftiv has quit (*.net *.split).
13:44:34 -!- derdon has quit (*.net *.split).
13:44:34 -!- quintopia has quit (*.net *.split).
13:44:34 -!- aloril has quit (*.net *.split).
13:44:34 -!- chickenzilla has quit (*.net *.split).
13:44:34 -!- shachaf has quit (*.net *.split).
13:44:34 -!- yorick has quit (*.net *.split).
13:44:35 -!- twice11 has quit (*.net *.split).
13:44:35 -!- copumpkin has quit (*.net *.split).
13:44:35 -!- sebbu2 has quit (*.net *.split).
13:44:35 -!- jix has quit (*.net *.split).
13:44:35 -!- Zwaarddijk has quit (*.net *.split).
13:44:35 -!- Phantom_Hoover has quit (*.net *.split).
13:44:35 -!- kmc has quit (*.net *.split).
13:44:36 -!- pikhq has quit (*.net *.split).
13:44:36 -!- yiyus has quit (*.net *.split).
13:44:36 -!- atehwa has quit (*.net *.split).
13:44:36 -!- Nisstyre has quit (*.net *.split).
13:44:36 -!- rodgort has quit (*.net *.split).
13:44:36 -!- bd_ has quit (*.net *.split).
13:44:36 -!- Zuu has quit (*.net *.split).
13:44:36 -!- fungot has quit (*.net *.split).
13:44:37 -!- fizziew has quit (*.net *.split).
13:44:37 -!- TeruFSX has quit (*.net *.split).
13:44:37 -!- Deewiant has quit (*.net *.split).
13:44:37 -!- coppro has quit (*.net *.split).
13:44:38 -!- fizzie has quit (*.net *.split).
13:44:38 -!- FireFly has quit (*.net *.split).
13:44:38 -!- lifthrasiir has quit (*.net *.split).
13:45:12 -!- SimonRC has quit (*.net *.split).
13:45:12 -!- SimonRC has joined.
13:45:37 -!- fizzie has joined.
13:45:37 -!- FireFly has joined.
13:45:37 -!- lifthrasiir has joined.
13:45:45 -!- Aune has joined.
13:47:42 -!- glogbackup has joined.
13:47:43 -!- mycroftiv has joined.
13:47:43 -!- shachaf has joined.
13:47:43 -!- chickenzilla has joined.
13:47:43 -!- aloril has joined.
13:47:43 -!- quintopia has joined.
13:47:43 -!- derdon has joined.
13:47:43 -!- bd_ has joined.
13:47:43 -!- rodgort has joined.
13:47:43 -!- Nisstyre has joined.
13:47:43 -!- atehwa has joined.
13:47:43 -!- yiyus has joined.
13:47:43 -!- pikhq has joined.
13:47:43 -!- kmc has joined.
13:47:43 -!- Phantom_Hoover has joined.
13:47:43 -!- Zwaarddijk has joined.
13:47:43 -!- jix has joined.
13:47:43 -!- sebbu2 has joined.
13:47:43 -!- copumpkin has joined.
13:47:43 -!- Zuu has joined.
13:47:43 -!- fungot has joined.
13:47:43 -!- fizziew has joined.
13:47:43 -!- TeruFSX has joined.
13:47:43 -!- Deewiant has joined.
13:47:43 -!- coppro has joined.
13:47:59 -!- glogbackup has left.
13:48:31 -!- yorick has joined.
13:50:05 -!- twice11 has joined.
13:50:50 <Ngevd> fungot!
13:50:50 <fungot> Ngevd: mr president, ladies and gentlemen, what was best for the future programme is essential for us to move ahead in the united kingdom divided over a well-known rock in the southern part of europe.
13:50:56 <Ngevd> ^style
13:50:57 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
13:51:19 <Ngevd> ^style agora
13:51:20 <fungot> Selected style: agora (a large selection of Agora rules, both current and historical)
13:51:23 <Ngevd> fungot
13:51:23 <fungot> Ngevd: as soon as possible after the next substantial change occurs in the manner specified in the registrar's report. this rule, including the riff-raff; and the
13:54:26 -!- ais523 has joined.
13:57:31 -!- sebbu2 has changed nick to sebbu.
14:05:31 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
14:18:55 -!- Taneb has joined.
14:20:49 -!- Phantom_Hoover has joined.
14:21:25 -!- MSleep has quit (Ping timeout: 255 seconds).
14:22:04 -!- Taneb|Hovercraft has joined.
14:22:08 -!- Ngevd has quit (Ping timeout: 260 seconds).
14:23:07 -!- Taneb has quit (Ping timeout: 240 seconds).
14:26:00 -!- Taneb|Hovercraft has changed nick to Taneb.
14:31:19 <Phantom_Hoover> `quote
14:31:26 <HackEgo> 94) <scarf> and an AMICED literal would presumably /add/ info to the source <scarf> whatever info gets added, that's the value that the AMICED doesn't contain <scarf> it's all falling into place
14:31:30 <Phantom_Hoover> Wait, fungot responds faster.
14:31:30 <fungot> Phantom_Hoover: i) the amendment index when the motion. c) auction currency is the registrar shall, as described in other rules,
14:31:40 <Phantom_Hoover> Is that INTERCAL style?
14:31:42 <Phantom_Hoover> ^style
14:31:42 <fungot> Available: agora* alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
14:32:11 <Taneb> @ping
14:32:11 <lambdabot> pong
14:32:24 <ais523> Phantom_Hoover: it looks pretty agorish to me
14:32:25 <ais523> hi fungot, btw
14:32:26 <fungot> ais523: if such a transfer must additionally document every change made to perform an action, or rule-- or other problem, a gambler holds or has exactly one
14:41:42 -!- derrik has joined.
14:42:41 -!- Taneb has quit (Ping timeout: 258 seconds).
14:48:29 <CakeProphet> ais523: do you know of any languages similar to Eodermdrome?
14:48:42 <CakeProphet> I'm looking for insiration on graph-rewriting languages.
14:48:44 <Phantom_Hoover> Kolmogorov machines operate on similar principles.
14:49:22 <ais523> CakeProphet: there's one other, which is similar but more complex, based on Kolmogorov machines
14:49:29 <ais523> I forget who wrote it, but it's on the wiki somewhere
14:50:09 <CakeProphet> what I have in mind something more like a CA than a rewriting machine.
14:50:22 <CakeProphet> so instead of specifying rewrite rules in the program you specify the initial shape of the graph
14:50:39 <CakeProphet> and the relationships between states in the graphs cause the graph to change every turn.
15:01:02 <ais523> so it's similar to the other language, except it has fixed rewrite rules and a program is the initial state, rather than having a fixed initial state and a program is the rewrite rules?
15:01:39 <CakeProphet> yep
15:01:54 <CakeProphet> though I don't know if they'll end up being exactly like rewrite rules.
15:02:34 <CakeProphet> te states are all going to be 0-9, and I was going to have higher numbers take priority over lower numbers perhaps.
15:02:59 <CakeProphet> so 9-rules activate before 8-rules before ...
15:03:57 <Phantom_Hoover> @tell elliott Ordered computerons.
15:03:57 <lambdabot> Consider it noted.
15:07:03 -!- Ngevd has joined.
15:09:54 -!- Taneb has joined.
15:13:44 -!- Ngevd has quit (Ping timeout: 258 seconds).
15:24:25 -!- Ngevd has joined.
15:27:55 -!- Taneb has quit (Ping timeout: 258 seconds).
15:29:33 <CakeProphet> Phantom_Hoover: yes SOON THEY WILL REVOLUTIONARIZE COMPYUTING
15:31:12 <CakeProphet> so yes unlike eodermwekjiwrdrome there can be more than one node with the same state.
15:31:31 <CakeProphet> as how the node will behave can depend on its degree.
15:37:07 -!- pikhq_ has joined.
15:37:07 -!- pikhq has quit (Ping timeout: 240 seconds).
15:39:06 -!- Ngevd has quit (Ping timeout: 256 seconds).
15:51:17 -!- Ngevd has joined.
15:56:37 <Vorpal> CakeProphet, eodermwekjiwrdrome?
15:56:55 <CakeProphet> yes.
15:57:16 <CakeProphet> http://esolangs.org/wiki/Eodermdrome
15:57:33 <Vorpal> CakeProphet, that is Eodermdrome, not eodermwekjiwrdrome...
15:58:51 <CakeProphet> ooooooohhhhhhhh
15:58:54 <CakeProphet> .. -_-
16:15:41 <olsner> eodermwekjiwrdrome was a better name :(
16:17:06 -!- pikhq has joined.
16:17:12 -!- MSleep has joined.
16:17:38 -!- pikhq_ has quit (Ping timeout: 260 seconds).
16:19:16 -!- elliott has joined.
16:22:11 -!- Ngevd has quit (Read error: Connection reset by peer).
16:26:44 -!- Ngevd has joined.
16:28:00 -!- Taneb has joined.
16:28:06 -!- MSleep has changed nick to MDude.
16:32:18 -!- Ngevd has quit (Ping timeout: 248 seconds).
16:35:29 <elliott> um
16:35:30 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
16:35:32 <elliott> http://esoteric.voxelperfect.net/w/index.php?title=Excela&diff=25170&oldid=13100
16:35:37 <elliott> ais523: is this vandalism, or..?
16:35:44 <elliott> oh, yes
16:35:50 <elliott> see last line
16:38:00 -!- Taneb has quit (Ping timeout: 245 seconds).
16:40:44 <CakeProphet> safe pills? yesssss
16:52:16 -!- nys has joined.
16:52:18 -!- tiffany has joined.
16:53:55 -!- Ngevd has joined.
16:56:55 -!- derrik has quit (Quit: done).
16:59:48 <Gregor> I don't know if I want to try these CRAAAZY patches.
17:00:08 <CakeProphet> Gregor: feels good, man.
17:00:22 <elliott> Gregor: You mean Transactional HackEgo? :P
17:00:36 <elliott> You have nooooo idea how much time I spent working out the commit logic.
17:01:35 <elliott> Gregor: I mostly blame BitBucket's diff for not realising that I rewrote tr_60.cmd :P
17:03:28 <Gregor> elliott: THEY'RE PRETTY CRAZY REGARDLESS
17:03:48 <elliott> Gregor: Pfft, lib/server is the only even vaguely crazy part
17:04:26 <elliott> tr_60.cmd is a simple script that forwards messages to a server, lib/{fetch,revert} is just a moving of code, and lib/sandbox is a glorified UMLBox wrapper :P
17:04:41 <elliott> (If 25 lines can be called glorification.)
17:04:44 <elliott> '-R3128:127.0.0.1a:3128',
17:04:47 <elliott> Hmm, is that "a" meant to be there?
17:04:54 <Gregor> lol no
17:05:27 <elliott> Gregor: Fix't
17:05:30 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:10:02 <Gregor> elliott: lib/server needs to already have IRC_SOCK set? >_<
17:10:20 <elliott> Gregor: Well... it could receive the IRC socket location as a first message?
17:10:25 <elliott> Gregor: You could just make a FIFO, man :P
17:10:47 <Gregor> FIFO's had problems, sockets are coolerer.
17:10:51 <Gregor> multibot is what sets IRC_SOCK though.
17:10:57 <Gregor> Not the runner.
17:11:32 <elliott> Gregor: Well... you could just make socat start another script rather than the bot directly.
17:11:45 <elliott> That script would do IRC_SOCK=/dev/stdin lib/server & bot
17:11:54 <elliott> I can tweak the server if you'd prefer that though :P
17:12:11 <Gregor> Tweak the server >_<
17:12:29 <elliott> Gregor: Okay; how (i.e. how would you like it to get a hold of the IRC socket)
17:13:28 <Gregor> I frankly don't understand WHY it needs the IRC_SOCKET, but if it does, it should be sent with {a,the} command{,s}.
17:13:50 <elliott> Gregor: ...because it sends the output of commands back to the user...?
17:14:01 <Gregor> Oh, server does that now?
17:14:07 <elliott> Yeah, server handles the running
17:14:13 <elliott> Because the alternative is complicated IPC shit in tr_60.cmd
17:14:32 <Gregor> Nowonder :P
17:14:36 <elliott> I'll send it with the commands, then
17:14:54 <Gregor> Yeah, otherwise you have a problem with when it generates the first v the second.
17:15:11 <Gregor> I really don't want to modify multibot for this too X-P
17:15:18 <elliott> Gregor: I'm guaranteed to always get the same socket for a server run, right, though? i.e. so I can still use a global? :P
17:15:34 <Gregor> Yup.
17:15:58 <elliott> Gregor: Anyway, I don't see how you can avoid modifying multibot, because SERVER_SOCK... oh, you can just set it at the start of the script and it'll propagate.
17:16:00 <elliott> NEVER MIND :P
17:16:02 -!- Ngevd has joined.
17:16:59 -!- Taneb has joined.
17:17:32 -!- monqy has joined.
17:17:54 <elliott> Gregor: Updated pull request and pull request's instructions :P
17:18:22 -!- HackBotLoony has joined.
17:18:24 <Gregor> "NameError: name 'sock' is not defined"
17:18:35 <Gregor> File "multibot_cmds/lib/server", line 144, in <module>
17:18:43 <elliott> Good! That's good! That's a simple bug.
17:18:44 <elliott> I can fix that :P
17:18:52 -!- HackBotLoony has quit (Remote host closed the connection).
17:18:55 <elliott> sock, _ = sock.accept()
17:19:14 <Deewiant> (N.B. if you were using Haskell that would never have happened)
17:19:14 <Gregor> (PS: I think we all agreed that I need more bots on here, yes?)
17:19:31 <elliott> Deewiant: I asked Gregor if I could use Haskell
17:19:34 <elliott> He said no, about three times
17:19:37 <elliott> Now he is paying the price
17:19:38 <Deewiant> elliott: I know
17:19:45 <elliott> Gregor: Pushed (I won't bother updating the pull request until this works :P)
17:19:46 <Gregor> I'm paying the price?
17:19:49 <Gregor> How am I paying any price?
17:19:51 <elliott> Just pull from my repo :P
17:19:56 <elliott> Also, you're paying the price... of PAIN.
17:20:03 -!- HackBotLoony has joined.
17:20:07 <elliott> `echo hi
17:20:09 <HackEgo> hi
17:20:09 <Gregor> Err, don't use ` while HackBotLoony is on I guess X-D
17:20:09 -!- augur has quit (Remote host closed the connection).
17:20:20 <elliott> Oh, what's its prefix
17:20:27 <elliott> Or, is that its prefix
17:20:30 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:20:37 <Gregor> That is it's prefix.
17:20:41 <Gregor> It's just shared with HackEgo :P
17:20:53 <elliott> `help
17:20:53 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
17:20:58 -!- HackBotLoony has quit (Remote host closed the connection).
17:20:59 <elliott> Gregor: Well, not even help works P:
17:21:00 <elliott> :P
17:24:40 -!- Taneb has quit (Ping timeout: 245 seconds).
17:37:20 -!- Ngevd has joined.
17:40:20 <elliott> Deewiant: Simple undefined variable/type error count so far: About 15
17:40:30 <elliott> THOUGHT YOU MIGHT LIKE TO KNOW
17:41:09 <Deewiant> Okay, I feel like that amount is already saying something about your attention to detail
17:42:43 <elliott> Deewiant: Yeah, only subhumans forget to import a module, or type .read instead of .recv, or append a list to a list of arguments BUT IT TURNS OUT THAT IN PYTHON IT ACTUALLY ENDS UP AS A TUPLE
17:42:52 <elliott> I loooove Python
17:49:49 -!- augur has joined.
18:08:25 -!- pikhq has quit (Ping timeout: 245 seconds).
18:18:53 -!- pikhq has joined.
18:28:33 -!- TeruFSX has quit (Read error: Connection reset by peer).
18:29:48 -!- TeruFSX has joined.
18:48:42 <CakeProphet> I notice a distinct lack of language designed with syntax styled after the first chapter of Genesis.
18:48:51 <CakeProphet> *languages
18:49:55 <CakeProphet> And on the seventh line, God said, "let there be a floating point number named x, and let it equal 3.0," and God saw that it was good.
18:51:24 <elliott> Deewiant: If I implement all the fingerprints Mycology tests will you add Shiro to the result ranking? :p
18:52:01 <Vorpal> elliott, hm there is a place in the TES universe called "Elsweyr", I never thought much about it until I heard it voice acted today... Sounded like "elsewhere" XD
18:52:13 <elliott> heh
18:52:25 <Vorpal> elliott, btw did you check the rest of the screenshots?
18:52:29 <elliott> Yes.
18:53:00 <Vorpal> elliott, btw I figured out one reason witcher 2 looks so much better. No first person perspective. You don't get quite as close to the textures that way
18:53:02 <Deewiant> elliott: Mostly it needs a homepage and I need the time and interest :-P
18:53:15 <Vorpal> and also it genuinely have better textures as well
18:53:28 <elliott> Deewiant: Why's it need a homepage :'(
18:53:37 <Deewiant> elliott: So that I can link to it :-P
18:53:44 <Deewiant> elliott: Github or whatever is fine
18:53:45 <elliott> Deewiant: irc://irc.freenode.net/esoteric
18:53:49 <elliott> :-P
18:53:52 <Deewiant> That's not a good permalink
18:54:01 <Phantom_Hoover> CakeProphet, this is because syntax-based languages are crappy.
18:54:02 <elliott> Anything involving me isn't very perma
18:54:08 <Deewiant> Although in your case it's probably better than it usually would be
18:54:15 <elliott> Deewiant: I only ask because I'm considering starting on Shiro 2 :P
18:54:22 <Deewiant> What's that?
18:54:24 <Vorpal> btw, does *every* RPG these day have some sort of crafting system? Why is that so popular.
18:54:28 <CakeProphet> Phantom_Hoover: ah I see, esoteric programming languages are all about high quality.
18:54:37 <elliott> Deewiant: I lost the latest Shiro 1 source and thought of a fairly decent fungespace structure in the meantime
18:54:57 <Deewiant> How'd you manage to lose it
18:55:15 <Deewiant> But anyway, I'd move Shiro 1 out once Shiro 2 comes in
18:55:15 <elliott> Deewiant: (Basically: Make a HashMap for every 128x128 block of fungespace or so, and have a structure data FS = FS {fs::HashMap ...,, left::FS, right::FS, up::FS, down::FS}; keep track of the FS that the IP is currently in)
18:55:32 <elliott> Deewiant: I managed to lose it because my computer broke and then I accidentally trashed my backup
18:55:44 <elliott> Deewiant: And I meant Shiro 2, not Shiro 1
18:55:55 <Deewiant> Oh
18:56:03 <Deewiant> Well, in any case, it's mostly about me taking the time and effort
18:56:15 <CakeProphet> Phantom_Hoover: what if it also had a unique faith-based paradigm.
18:56:19 <elliott> Deewiant: This is why you should be a robot?
18:56:21 <CakeProphet> where you have no proof that the program executes
18:56:26 <CakeProphet> you simply must believe that it did.
18:56:28 <Deewiant> elliott: I suppose?
18:56:54 <Phantom_Hoover> CakeProphet, been done.
18:56:57 <Vorpal> sure, there was alchemy and enchanting in oblivion. Now there is also smithing, a skill used for smithing (as expected) but also smelting (yeah okay) and tanning (what, how is that related to smithing?)
18:57:35 <elliott> Vorpal: Did ATHR ever get a real spec
18:57:40 <elliott> I'd like to make sure Shiro 2 could support it
18:57:50 <Phantom_Hoover> Vorpal, is there also wood burning, lye making, butchery, cooking and soapmaking?
18:58:53 <Vorpal> Phantom_Hoover, I believe there is wood cutting, ore mining and some other such stuff. They don't seem to have any skill connected to them that I noticed. Can't say I have done a lot of those tasks though yet
18:58:59 <Vorpal> Phantom_Hoover, and yes there is cooking
18:59:04 <Vorpal> no clue what skill
18:59:26 <Phantom_Hoover> Vorpal, hmm, how does mining work?
18:59:33 <Phantom_Hoover> The world isn't mutable, I assume.
18:59:38 <Vorpal> indeed
19:00:01 <pikhq> Vorpal: Sounds like they took a really, truly insignificant part of D&D and took it seriously. :P
19:00:07 <Vorpal> Phantom_Hoover, put pickaxe in inventory, find vein of ore, target it and press e. Wait a bit to get some ore out of it, then a message "the vein is exhausted"
19:00:20 <Vorpal> pikhq, what bit of D&D would that be?
19:00:35 <pikhq> Vorpal: The Craft(...) skills, of course.
19:00:37 <elliott> Vorpal: So it's exactly like Minecraft :P
19:00:42 <Vorpal> oh and you can operate saw mills.
19:00:51 <Vorpal> elliott, quite, did you see that link, I think Phantom_Hoover posted it?
19:00:52 <elliott> The Elder "Scrolls"
19:00:57 <elliott> Which link
19:01:00 <pikhq> And Profession(...)
19:01:01 <elliott> Oh, right
19:01:02 <Vorpal> see log
19:01:03 <elliott> I skipped through it
19:01:05 <Vorpal> elliott, to youtube
19:01:07 <Phantom_Hoover> What link?
19:01:16 <Vorpal> of minecraft+skyrim
19:01:25 <Vorpal> Phantom_Hoover, wasn't it you who posted it?
19:01:28 <pikhq> This is really, *insanely* insignificant, and I find it amazing that it's even in D20.
19:01:37 <Vorpal> pikhq, heh
19:01:49 <Vorpal> pikhq, well Skyrim uses it's own system. Not D20 afaik
19:01:52 <Phantom_Hoover> Oh, yeah, that was me.
19:02:16 <pikhq> Vorpal: BAH
19:02:40 <elliott> Deewiant: What if I make it beat CCBI on Fungicide :P
19:02:42 <pikhq> Vorpal: Anyways, that shit's stupid.
19:03:00 <Vorpal> pikhq, hm? Not really here. It kind of fits in.
19:03:09 <Vorpal> you can of course improve weapons too
19:03:13 <Vorpal> using a grindstone
19:03:27 <elliott> Vorpal: C'mooooooon, ATHR draft
19:03:28 <Vorpal> hm I think you uses that for all types of weapons. Let me check....
19:03:39 <Deewiant> elliott: I'd still prefer that it had a URL and I'd still need to take the time :-P
19:03:41 <Vorpal> yes, you can improve maces and bows at a grindstone
19:03:45 <Vorpal> no it doesn't make sense
19:03:50 <elliott> Deewiant: A URL is not a problem :P
19:03:51 <Deewiant> elliott: (Doing Fungicide is a lot worse than just Mycology)
19:03:52 <Vorpal> elliott, !logs
19:04:07 <elliott> Vorpal: You used rafb.net back then, I distinctly recall
19:04:15 <Vorpal> elliott, I don't have it now and it isn't complete afaik. There wasn't really all that much interest in it either
19:04:28 <elliott> Deewiant: Do you have a backup of the ATHR spec, then :P
19:04:35 <Vorpal> elliott, I'm pretty sure it is in the efunge repo. Anyway if it isn't, then I can't get it atm. I'm booted into windows for skyrim
19:04:42 <Vorpal> and it would be on my linux partition
19:05:01 * elliott looks.
19:05:08 <Vorpal> elliott, anyway I'm reserving the right to change it. Just as a warning.
19:05:12 <Deewiant> elliott: Evidently not
19:05:20 <elliott> Vorpal: No, you cannot have that right, I will sue you
19:05:27 <Vorpal> elliott, because iirc some of the stuff about communication between threads was kind of broken
19:05:32 <Vorpal> as in, didn't work very well
19:05:38 -!- zzo38 has joined.
19:05:39 <elliott> Don't care, just need to figure out how much I need to isolate
19:05:55 <elliott> It's not in the efunge repo
19:05:57 <Vorpal> elliott, ah, well look in the non-trunk branch of efunge on launchpad
19:06:03 <Vorpal> it is definitely not in trunk
19:06:08 <elliott> Oh
19:06:08 <Vorpal> but in the ATHR feature branch
19:06:18 <elliott> How
19:06:21 <elliott> launchpad is impossible to navigate
19:06:27 <Vorpal> sigh
19:06:40 <elliott> https://code.launchpad.net/efunge
19:06:42 <elliott> You have no ATHR branch
19:06:50 <Deewiant> https://code.launchpad.net/~anmaster/efunge/supervisor-tree
19:06:53 <Vorpal> lp:~anmaster/efunge/supervisor-tree
19:06:55 <Vorpal> yes
19:06:55 <Deewiant> "This is the feature branch to add ATHR."
19:06:56 <Vorpal> it is there
19:06:59 <elliott> Good name :P
19:07:21 <Vorpal> elliott, that name is after the major internal restructuring that was required for it
19:07:31 <Vorpal> so it makes sense
19:07:47 <elliott> Well, it is not in there, either
19:07:55 <Deewiant> Comment why, not what. (Same applies to this?)
19:08:19 <elliott> Deewiant: Branch names are more like variable names
19:08:27 <elliott> Deewiant: index, not count_for_loop
19:08:34 <Vorpal> elliott, then I will upload it next time I boot to windows, unless it is on my laptop
19:08:37 <Vorpal> I'll check that
19:08:41 <elliott> Variable names should definitely by what, not how or why :P
19:08:44 <Deewiant> elliott: Maybe
19:08:57 <Vorpal> ah yes it is
19:09:09 <Deewiant> I dunno, branch names don't seem obviously neither "what" nor "why"
19:09:15 <Deewiant> Double negative whee
19:09:29 <elliott> Deewiant: Branch names should be "what-goal", I think
19:09:34 <Vorpal> elliott, anyway I'm going to rework the "book" thingy probably when I finish implementing it. Because it didn't feel right.
19:09:38 <elliott> So athr or athr-support
19:09:43 <Vorpal> http://sprunge.us/cHEi
19:09:47 <Deewiant> elliott: That seems like "why"
19:09:49 <Vorpal> elliott, there you have it
19:09:51 <elliott> Vorpal: Thanks
19:09:54 <elliott> Deewiant: What would what be, then
19:09:57 <Deewiant> elliott: "goal" is a "why" thing
19:10:05 <Deewiant> elliott: "what" is what it is currently, supervisor-tree
19:10:15 <elliott> Oh, we're violently agreeing on what the branch name should be
19:10:23 <elliott> Just not on the meanings of "what" and "why" :P
19:10:47 <Deewiant> I'm also thinking that it might not be clear-cut in general
19:10:51 <Vorpal> what are you talking about?
19:10:54 <Deewiant> In some cases you might prefer something like the current name
19:11:04 <Deewiant> But not in this case IMO :-P
19:11:18 <Deewiant> Vorpal: About why your branch name isn't "athr" or equivalent
19:11:32 <Vorpal> right, whatever
19:12:06 <Vorpal> btw, idea for future ubuntu code name: Sinking Sloth
19:12:44 <zzo38> Do they always go in alphabetical order?
19:13:02 <Vorpal> they didn't start that way
19:13:08 <Vorpal> but I think they are doing that now
19:13:33 <zzo38> OK.
19:15:57 <fizzie> They went alphabetical pretty fast.
19:16:25 <fizzie> Wonder which Q-animal they will pick; it's the next they need to decide.
19:16:52 <Ngevd> Quilled Porcupine
19:18:50 <fizzie> There's the quagga.
19:19:01 <fizzie> 1. quagga, Equus quagga -- (mammal of South Africa that resembled a zebra; extinct since late 19th century)
19:19:10 <fizzie> African and all.
19:19:18 <Ngevd> SOUTH Africam
19:19:25 <Ngevd> s/m/n/
19:19:38 <CakeProphet> quail
19:19:49 <CakeProphet> Quantitative Quail
19:21:08 <Vorpal> the problem with skyrim atm is that no one really knows the answers yet. So if you are truly stuck at something you can't just go look it up.
19:22:03 <Ngevd> I think it's funny how so many Minecraft players are boycotting Skyrim due to the Scrolls lawsuit, when Notch himself has got Skyrim
19:22:34 <Vorpal> Ngevd, they are what... lol
19:22:51 <fizzie> And of course the quetzal, and the quetzalcoatl.
19:23:31 <fizzie> "Quiet Quahog an ode to the sturdy mollusk"
19:23:47 <fizzie> https://wiki.ubuntu.com/DevelopmentCodeNames always has the best suggestions.
19:27:54 <CakeProphet> how do I get fsck ro tun on reboot?
19:27:57 <CakeProphet> ...
19:28:01 <CakeProphet> s/ro tun/to run/
19:28:46 <elliott> CakeProphet: It'll already run fsck when it has to.
19:29:37 <CakeProphet> elliott: what about when you skip it? will it try again on next reboot?
19:29:46 <elliott> Prolly
19:30:59 <fizzie> From what I recall, it will keep trying if you keep skipping it.
19:31:03 <Vorpal> CakeProphet, why skip it? It takes like 10-15 seconds anyway even on a huge partition with lots of small files, at least for me
19:31:28 <CakeProphet> Vorpal: I am helping someone with their shit
19:31:34 <CakeProphet> and not knowing things at the same time.
19:31:34 <Vorpal> ah
19:31:36 <CakeProphet> it's fun.
19:32:00 <olsner> hmm, so this episode was about the bold "plan" to retake DS9, but it seems the "plan" is essentially "collect all the ships and fly to DS9 in a straight line"
19:32:43 <fizzie> That's certainly "bold".
19:33:28 <elliott> olsner: You forgot "stop when you reach DS9".
19:34:04 <olsner> not that I'd know better, but seems like a stupid way to do space warfare to take your blob of ships, meet another blob of ships and start shooting
19:36:22 <olsner> elliott: well, in this case "stop when you reach the enemy fleet between you and DS9"
19:36:50 <Phantom_Hoover> olsner, that's how tactics work in DS9, duh.
19:37:07 <Phantom_Hoover> It gets particularly silly when they have space blockades which they can't go around for some reason.
19:37:54 <olsner> equally silly, they haven't managed to get rid of the treaty on cloaking devices even though they're in a full-on war against this dominion thing
19:38:38 <olsner> especially since the romulans are supposed to be allies at this time
19:38:53 <Vorpal> hm I should try making a panorama from skyrim later. As far as I can tell there is no parallax.
19:39:23 <Phantom_Hoover> olsner, don't knock it, at least they *used* them occasionally.
19:42:53 <fizzie> ISTR that there was one episode of Trek-something where someone (Picard, Kirk?) had an OMG WOW breakthrough idea of avoiding a circular space blockade minefield by (gasp!) going "up"/"down".
19:42:59 <fizzie> Three-dimensional thinking!
19:43:12 <Phantom_Hoover> I think that was Wrath of Khan?
19:43:27 <fizzie> I suppose I might've just read about it from http://tvtropes.org/pmwiki/pmwiki.php/Main/Two-DSpace or something.
19:43:38 <Phantom_Hoover> Also once in DS9 the Klingons put mines around Bajor, since they apparently have like a billion mines lying around.
19:45:02 -!- oerjan has joined.
19:45:29 <fizzie> ""His pattern indicates two-dimensional thinking."
19:45:30 <fizzie> — Spock, Star Trek II: The Wrath of Khan" -- apparently so.
19:45:58 <Phantom_Hoover> Genetically engineered supermen are notoriously incapable of grasping the concept of height.
19:47:12 <oerjan> except those which cannot grasp left-right, instead.
19:49:00 <Phantom_Hoover> I can probably weave this into yet another complicated Bashir silliness, but I can't be bothered.
19:51:05 <olsner> Phantom_Hoover: they didn't have a million mines, so they built self-replicating mines
19:52:00 <olsner> (which was apparently an original idea in the 24th century)
19:54:25 <olsner> I think I still haven't seen any starship meet an upside-down starship (except when it's a dead one - then they flip over)
19:55:02 <olsner> maybe there's a protocol to decide which way is up when two starships meet, and the losing ship flips to make it less confusing
19:55:14 <elliott> :D
19:55:15 <Phantom_Hoover> Probably.
19:55:32 <fizzie> olsner: "Another reason "Genesis" is considered a particularly bad episode (in addition to the Evolutionary Levels crap) is the fact that, when the Captain's shuttle returns, they can tell something's wrong...because the Enterprise isn't straight on."
19:55:34 <Phantom_Hoover> Or maybe they all do it so Bashir doesn't get confused?
19:55:41 <elliott> "Well, try to imagine that on a 3-D interface (in fact, play Frontier: Elite 2 and think yourself lucky if you survive your first "dogfight")."
19:55:50 <elliott> Phantom_Hoover: Ha ha ha it should have been two-dimensional.
19:55:57 <elliott> Asteroids II: the best.
19:56:45 <oerjan> <olsner> [...] (except when it's a dead one - then they flip over) <-- so basically space is an ocean and spaceships are goldfish.
19:57:06 <oerjan> (the first being, of course, a trope.)
19:57:11 <olsner> Phantom_Hoover: yeah, maybe it's a holdback from before they banished all the genetically engineered people
19:58:29 <zzo38> Do you ever use (x <$ guard y) or (guard y >> x) in Haskell?
19:59:43 <zzo38> They are useful with the Maybe monad, and the second one useful with the list monad too.
20:01:08 <zzo38> Can you ask some mathematicians what the MonadPlus laws should be?
20:03:26 <elliott> hey oerjan
20:03:29 <elliott> zzo38 needs a mathematician
20:04:38 <zzo38> In my opinion it should be the left zero law and monoid laws, but maybe a mathematician will know better
20:05:16 -!- Sgeo|chromcrash has quit (Ping timeout: 265 seconds).
20:05:56 -!- pikhq_ has joined.
20:06:13 -!- pikhq has quit (Ping timeout: 258 seconds).
20:07:28 <fizzie> $ ./testlm-disk.pl ../twungot/tokens.bin.irc ../twungot/model.bin.irc 3 mathematicians do it with
20:07:28 <fizzie> mathematicians do it with tail calls in some situations. :o
20:07:28 <fizzie> mathematicians do it with types, give you the vector of interrupt handlers. error code UNK (UNK (close connection))
20:07:28 <fizzie> mathematicians do it with sed :) cool! println works fine?! i posted the interface docs the other day. did it wrong.
20:12:57 <oerjan> <Ngevd> A memory efficient SKI interpreter would try to find all the ``k's and all the `i's before doing ```s's <-- also find applications of ``sii and cache them. that way you can get efficient y combinators. (i think. i thought of this in the context of lazy-k.)
20:13:31 <oerjan> elliott: i assumed he meant a _relevant_ mathematician.
20:14:17 <fizzie> oerjan: All mathematicians are interchangeable.
20:14:29 <fizzie> I think the technical term is "isomorphic".
20:14:36 <elliott> ^style iwcs
20:14:37 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
20:14:41 <elliott> fungot: Pontificate.
20:14:42 <fungot> elliott: of all, the first one was a complete the binding the crocodile's jaws are tied us up and left us here! we're the last! it is!
20:14:45 <oerjan> wtf
20:14:51 <elliott> oerjan: ?
20:15:05 <oerjan> elliott: the scripts
20:15:26 -!- SgeoN1 has joined.
20:15:28 <elliott> oerjan: I scraped them :)
20:15:39 <oerjan> ah. for the good of mankind.
20:15:49 <SgeoN1> Well, I no longer have to think about why REISUB wasn't working
20:17:54 <ais523> SgeoN1: were you using Windows?
20:18:07 <ais523> that's a reasonably obvious explanation for REISUB not working
20:18:16 <oerjan> <olsner> eodermwekjiwrdrome was a better name :( <-- no it's not
20:18:38 <ais523> is that one also nonplanar as a graph?
20:18:54 <SgeoN1> I was using Linux. Was being the operative word.
20:19:06 <oerjan> well i'd assume it's not a _complete_ graph
20:19:13 <ais523> you probably need to enable magic SysRq
20:19:47 <SgeoN1> If I could even touch SysRq right now, I'd be much happier than I am
20:20:08 <elliott> Bye Gregor.
20:20:19 <Ngevd> You probably need to enable magic
20:20:21 <SgeoN1> I dropped my computer, and the USB stick I was running off of broke
20:20:46 <Ngevd> That's why you run Linux of SD cards!
20:22:44 <SgeoN1> Is that something that could actually be done?
20:23:00 <Ngevd> I've done it
20:23:11 <Ngevd> It's probably not as fast as a USB stick
20:23:31 <SgeoN1> O.o
20:23:42 <SgeoN1> It would be safer...
20:23:50 <Ngevd> I tried to run Haiku of one, too, but it wouldn't boot
20:24:03 <SgeoN1> How much HD space would I need to reasonably use MonoDevelop?
20:24:23 <Ngevd> God knows
20:28:47 <elliott> SgeoN1: STOP DROPPING YOUR FUCKING COMPUTER
20:29:39 <Ngevd> Also, STOP FUCKING YOUR COMPUTER DROPPINGS
20:29:44 <oerjan> ais523: it's planar
20:30:17 <Ngevd> It's not healthy
20:30:21 <oerjan> /---\
20:30:23 <oerjan> j - k - e - o \
20:30:23 <oerjan> \ /|\ /|\ \
20:30:23 <oerjan> i - w-r-d /| |
20:30:23 <oerjan> \|\-/ / /
20:30:25 <oerjan> m---/ /
20:30:28 <oerjan> \---/
20:30:37 -!- hagb4rd has joined.
20:31:45 <zzo38> I got kerning to work with typesetSimpleString in Graphics.DVI but I am having a bit of problem to try to figure out ligaturing
20:32:24 <zzo38> (I know they are correct; I have compared them with results from TeX)
20:32:51 -!- SgeoN1 has quit (Read error: Connection reset by peer).
20:33:09 -!- SgeoN1 has joined.
20:38:29 <Gregor> ANNOUNCEMENT:
20:38:32 <Gregor> I have a kitty.
20:38:46 <Ngevd> Oh no!
20:39:44 <Phantom_Hoover> Gregor, you already announced that.
20:39:44 <SgeoN1> Hmm
20:42:28 <oerjan> i've heard those announcements for a long time. it may not be the same kitty. maybe this is a descendant of the original one.
20:42:50 <oerjan> which is now a huge scary thing.
20:42:51 <Ngevd> Catsplosion
20:43:44 <fizzie> Gregor: KITTY.
20:48:15 -!- GreaseMonkey has joined.
20:51:57 <nys> hello greasemonkey
20:52:04 <GreaseMonkey> 'lo
20:57:03 <GreaseMonkey> > let foo x = (x:foo (x+1)) in foo 1
20:57:04 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
20:57:30 <Ngevd> > [1..
20:57:31 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
20:57:34 <Ngevd> > [1..]
20:57:35 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
20:57:39 <GreaseMonkey> oh right
20:57:39 <Ngevd> Easier way
20:58:01 <GreaseMonkey> > let fib x y = (x:(fib y (x+y))) in fib 1 1
20:58:03 <lambdabot> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1...
20:58:23 <Deewiant> > fix ((1:) . scanl (+) 1)
20:58:24 <lambdabot> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1...
20:58:50 <GreaseMonkey> and this is where i show that i don't know shit about the haskell standard library
20:59:05 <GreaseMonkey> map (\ x -> x * x) [1..]
20:59:11 <GreaseMonkey> > map (\ x -> x * x) [1..]
20:59:12 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
20:59:12 -!- Zuu has quit (Ping timeout: 244 seconds).
20:59:16 <Deewiant> > map (^2) [1..]
20:59:17 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
20:59:23 * GreaseMonkey facepalm
20:59:32 <pikhq_> > map (join(*)) [1..]
20:59:33 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
20:59:46 <GreaseMonkey> and i forget what fold (foldl / foldr ?) is for
20:59:54 <pikhq_> :t foldr
20:59:55 <lambdabot> forall a b. (a -> b -> b) -> b -> [a] -> b
21:00:00 <pikhq_> Any further questions?
21:00:01 <Ngevd> > zipWith (*) [1..] [1..]
21:00:02 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:00:08 <Deewiant> > foldl1' (+) [1..10]
21:00:09 <lambdabot> 55
21:00:16 <GreaseMonkey> thanks
21:00:29 <pikhq_> > join.zipWith(*)$[1..]
21:00:30 <lambdabot> Couldn't match expected type `[a] -> a' against inferred type `[a]'
21:00:31 <GreaseMonkey> > tail [1,2,5]
21:00:32 <pikhq_> BAH
21:00:32 <lambdabot> [2,5]
21:00:47 <pikhq_> > join (zipWith(*)) [1..]
21:00:48 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:00:54 <pikhq_> Actually.
21:00:57 <GreaseMonkey> > [1,3..]
21:00:58 <lambdabot> [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,5...
21:01:01 <GreaseMonkey> oh yay
21:01:04 <pikhq_> > zipWith(*) `join` [1..] -- That's nice.
21:01:05 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:01:35 <Ngevd> [x^2|x <- [1..]]
21:01:37 <Ngevd> > [x^2|x <- [1..]]
21:01:38 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:01:39 <GreaseMonkey> what's the one which cuts a list off after a certain point?
21:01:44 <Ngevd> take
21:01:50 <GreaseMonkey> > take 10 [1..]
21:01:51 <lambdabot> [1,2,3,4,5,6,7,8,9,10]
21:01:53 <GreaseMonkey> hmmkay
21:02:22 <GreaseMonkey> > map (`take` [1,3..]) [1..]
21:02:23 <lambdabot> [[1],[1,3],[1,3,5],[1,3,5,7],[1,3,5,7,9],[1,3,5,7,9,11],[1,3,5,7,9,11,13],[...
21:02:26 <GreaseMonkey> erm
21:02:32 <pikhq_> And takeWhile is like that, but it cuts a list off based on a function a->Bool
21:02:38 <GreaseMonkey> > map (\x -> foldl 0 (take x [1,3..])) [1..]
21:02:39 <lambdabot> No instance for (GHC.Num.Num [t])
21:02:40 <lambdabot> arising from a use of `e_10131' at <in...
21:02:42 <GreaseMonkey> dammit
21:02:58 <pikhq_> > takeWhile (!=10) [1..] -- for instance
21:03:00 <lambdabot> Not in scope: `!='
21:03:01 <pikhq_> BAH
21:03:04 <pikhq_> > takeWhile (/=10) [1..] -- for instance
21:03:05 <lambdabot> [1,2,3,4,5,6,7,8,9]
21:03:12 <GreaseMonkey> > map (\x -> foldr (+) (take x [1,3..])) [1..]
21:03:13 <lambdabot> No instance for (GHC.Num.Num [t])
21:03:13 <lambdabot> arising from a use of `e_1131' at <int...
21:03:38 <GreaseMonkey> > map (\x -> foldd1' (+) (take x [1,3..])) [1..]
21:03:39 <lambdabot> Not in scope: `foldd1''
21:03:41 <GreaseMonkey> dammit
21:03:43 <GreaseMonkey> > map (\x -> foldl1' (+) (take x [1,3..])) [1..]
21:03:44 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:03:48 <GreaseMonkey> yay
21:03:56 <GreaseMonkey> and there's probably a nice way to curry that
21:03:59 <elliott> Looks like a scanr to me
21:04:04 <Ngevd> map (\x -> sum (take x [1,3..])) [1..]
21:04:07 <elliott> > scanr (+) 0 [1,3..]
21:04:08 <lambdabot> [*Exception: stack overflow
21:04:11 <Ngevd> > map (\x -> sum (take x [1,3..])) [1..]
21:04:12 <elliott> > scanl (+) 0 [1,3..]
21:04:12 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:04:13 <lambdabot> [0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,...
21:04:20 <elliott> > scanl1 (+) [1,3..]
21:04:21 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:04:22 <elliott> GreaseMonkey: Tada
21:04:25 <GreaseMonkey> yay
21:04:41 <GreaseMonkey> > [1,3,6..]
21:04:42 <lambdabot> <no location info>: parse error on input `..'
21:04:46 <GreaseMonkey> nope that doesn't exist
21:04:56 <Ngevd> So we know have about a dozen ways to make an infinite list of squares in Haskell
21:05:00 <GreaseMonkey> yeah
21:05:05 -!- oerjan has quit (Read error: Connection reset by peer).
21:05:11 <Ngevd> s/ k/ /
21:05:14 -!- oerjan has joined.
21:05:18 <GreaseMonkey> i must say it is a lovely language when you're not getting bombarded with type errors
21:06:13 <elliott> GreaseMonkey: I prefer dynamically typed languages, where the type errors result in silent breakage when you least expect it.
21:06:44 <GreaseMonkey> i prefer my statically typed languages to be explicitly typed
21:06:54 <GreaseMonkey> > map (\x -> x * (x+1) / 2) [1..]
21:06:55 <lambdabot> [1.0,3.0,6.0,10.0,15.0,21.0,28.0,36.0,45.0,55.0,66.0,78.0,91.0,105.0,120.0,...
21:06:58 <zzo38> You should learn a few things about category theory, too.
21:07:04 <elliott> GreaseMonkey: You mean you... prefer having to write out a type signature for every value?
21:07:20 <Deewiant> > scanl1 (+) [1..]
21:07:21 <lambdabot> [1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,27...
21:07:22 <GreaseMonkey> yeah, at least you know damn well what thing it is
21:07:38 <zzo38> When I write Haskell program, I do write a type signature for every top level declaraion
21:07:40 <elliott> GreaseMonkey: That's why there's a strong Haskell convention to put a type signature on every top-level value
21:07:46 <elliott> Having to specify one for every single subexpression would be insane
21:07:59 <GreaseMonkey> hmmkay
21:08:02 <zzo38> And sometimes for subexpressions too
21:08:09 <zzo38> But not all subexpressions
21:08:14 <GreaseMonkey> what's the syntax for that again?
21:08:15 <Ngevd> > map (\x -> x * (x+1) `div` 2) [1..]
21:08:16 <lambdabot> [1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,27...
21:08:23 <elliott> GreaseMonkey: foo :: type
21:08:25 <elliott> main :: IO ()
21:08:28 <elliott> main = putStrLn "hi"
21:08:41 <copumpkin> > scanl1 (+) [1..]
21:08:41 <fizzie> > ((2 :: Int) + (2 :: Int)) :: Int
21:08:41 <GreaseMonkey> addtwo :: Num -> Num
21:08:42 <lambdabot> [1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,27...
21:08:42 <lambdabot> 4
21:08:44 <Ngevd> expr :: Int -> Int -> [Int]
21:08:45 <GreaseMonkey> ^ would that be right?
21:08:53 <GreaseMonkey> oh hmm
21:08:57 <GreaseMonkey> addtwo :: Num -> Num -> Num
21:08:59 <elliott> GreaseMonkey: Num isn't a type
21:08:59 <copumpkin> Ngevd: ^
21:09:03 <GreaseMonkey> oh hmm
21:09:09 <GreaseMonkey> addtwo :: Int -> Int -> Int
21:09:13 <elliott> :t (+)
21:09:13 <GreaseMonkey> or alternatively
21:09:14 <lambdabot> forall a. (Num a) => a -> a -> a
21:09:17 <oerjan> > inits [1,3..] -- <GreaseMonkey> > map (`take` [1,3..]) [1..]
21:09:18 <lambdabot> [[],[1],[1,3],[1,3,5],[1,3,5,7],[1,3,5,7,9],[1,3,5,7,9,11],[1,3,5,7,9,11,13...
21:09:19 <elliott> addtwo :: Int -> Int -> Int
21:09:22 <elliott> addtwo :: Integer -> Integer -> Integer
21:09:23 <GreaseMonkey> addtwo a :: a -> a -> a
21:09:25 <GreaseMonkey> ?
21:09:26 <elliott> addtwo :: (Num a) => a -> a -> a
21:09:26 -!- sebbu has quit (Read error: Connection reset by peer).
21:09:27 <elliott> GreaseMonkey: no
21:09:33 <GreaseMonkey> dammit hmm
21:09:37 <elliott> <elliott> addtwo :: (Num a) => a -> a -> a
21:09:38 <elliott> :P
21:09:43 <GreaseMonkey> right
21:10:17 <Ngevd> singletonList :: a -> [a]
21:10:28 <GreaseMonkey> > sum inits [1,3..]
21:10:30 <lambdabot> Couldn't match expected type `[a]'
21:10:30 <lambdabot> against inferred type `[a1] -> [...
21:10:33 <zzo38> You have "return" and "pure" already make a singleton list
21:10:35 <GreaseMonkey> oh right
21:10:40 <GreaseMonkey> > map (sum) inits [1,3..]
21:10:41 <Ngevd> > sum $ inits [1,3..]
21:10:41 <lambdabot> Couldn't match expected type `[[a]]'
21:10:41 <lambdabot> against inferred type `[a1] ->...
21:10:42 <lambdabot> No instance for (GHC.Num.Num [t])
21:10:42 <lambdabot> arising from a use of `e_113' at <inte...
21:10:45 <GreaseMonkey> > map (sum) (inits [1,3..])
21:10:45 <lambdabot> [0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,...
21:10:54 <GreaseMonkey> > map (sum) (tail inits [1,3..])
21:10:55 <lambdabot> Couldn't match expected type `[a]'
21:10:55 <lambdabot> against inferred type `[a1] -> [...
21:11:00 <GreaseMonkey> > map (sum) (tail (inits [1,3..]))
21:11:01 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:11:04 <GreaseMonkey> bracketitis
21:11:15 <GreaseMonkey> actually that's more of a LISP thing to have bracketitis
21:11:29 <Ngevd> > map sum $ tail $ inits [1,3..]
21:11:29 <copumpkin> > scanl1 (+) [1,3..]
21:11:30 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:11:30 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
21:11:39 <GreaseMonkey> i DO like how KWrite's scheme highlighter highlights the parentheses in rainbow colours though
21:11:39 <copumpkin> > scanl1 (+) [1,4..]
21:11:40 <lambdabot> [1,5,12,22,35,51,70,92,117,145,176,210,247,287,330,376,425,477,532,590,651,...
21:11:47 <copumpkin> figurate numbers ftw
21:12:06 <GreaseMonkey> ok so scanl1 (+) [1,3..] is the small one
21:12:45 <GreaseMonkey> i take it scanl1 is essentially based on fold?
21:12:48 <Ngevd> > length "scanl1 (+) [1,3..]"
21:12:49 <lambdabot> 18
21:13:01 <oerjan> @src scanl1
21:13:01 <elliott> @hoogle scanl1
21:13:01 <lambdabot> scanl1 f (x:xs) = scanl f x xs
21:13:02 <lambdabot> scanl1 _ [] = []
21:13:02 <lambdabot> Prelude scanl1 :: (a -> a -> a) -> [a] -> [a]
21:13:02 <lambdabot> Data.List scanl1 :: (a -> a -> a) -> [a] -> [a]
21:13:02 <lambdabot> Data.ByteString.Char8 scanl1 :: (Char -> Char -> Char) -> ByteString -> ByteString
21:13:03 <elliott> erm
21:13:04 <Ngevd> > length "map (^2) [1..]"
21:13:05 <lambdabot> 14
21:13:07 <elliott> oerjan got it right :P
21:13:09 <elliott> @src scanl
21:13:10 <Ngevd> That one's shorter
21:13:10 <lambdabot> scanl f q ls = q : case ls of
21:13:10 <lambdabot> [] -> []
21:13:10 <lambdabot> x:xs -> scanl f (f q x) xs
21:13:11 <copumpkin> GreaseMonkey: folds and scans are related, but I wouldn't say one is based on the other
21:13:12 <GreaseMonkey> oh right.
21:13:28 <copumpkin> GreaseMonkey: a scan basically tells you the accumulator of the fold at every step
21:13:34 <GreaseMonkey> sweet
21:13:41 -!- sebbu has joined.
21:13:45 <copumpkin> GreaseMonkey: as such, a fold is the last element of the list the scan produces
21:13:48 <GreaseMonkey> so conceptually based, but not based on by implementation?
21:14:34 <GreaseMonkey> scanl f l (r:rs) = (l:(f l (scanl f r rs)))
21:14:36 <GreaseMonkey> ^ would that be it?
21:14:47 <Deewiant> So many brackets
21:14:59 <oerjan> GreaseMonkey: it was listed above
21:15:01 <GreaseMonkey> (except of course there's the case of scanl f l [] = [l])
21:15:03 <GreaseMonkey> oh hmm
21:16:44 <oerjan> putting the q : outside both cases makes it lazier, i think.
21:17:06 <oerjan> > take 1 $ scanl undefined "boo!" undefined
21:17:07 <lambdabot> ["boo!"]
21:18:08 -!- Zuu has joined.
21:31:29 <Ngevd> Well, I've drawn another PixelQuest update
21:31:34 <Ngevd> Uploading as we speak
21:31:45 <Ngevd> No, Phantom_Hoover, it isn't your's yet
21:31:51 <Phantom_Hoover> :(
21:32:07 <Ngevd> But you're fifth in the queue!
21:32:15 <Ngevd> :D
21:32:19 <Ngevd> :D?
21:32:35 <zzo38> Why do the air vents in the Batman show have a sign that says "AIR VENT"? And a lot of other things are labeled too
21:32:59 <Ngevd> Same reason as why one of the pixels in PixelQuest is a pirate. It's funny.
21:33:30 <Ngevd> Okay, Chrome just crashed
21:33:38 <Ngevd> Now Firefox takes the helm
21:36:47 <zzo38> How many MML compilers do you know of?
21:36:59 <Ngevd> 0
21:38:12 <zzo38> I know of SakuraMML which seem very good, however, it is Japanese only and I always get error message about ConvToHalfStep1 so it never works
21:39:34 <zzo38> However, it is also Windows only. But it is written in Pascal and there could be Pascal compiler for other computer it could work
21:39:54 <zzo38> But I don't need to worry about that right now since I currently have Windows.
21:40:43 <Ngevd> PQ update is online
21:41:28 <Phantom_Hoover> Ngevd, DO MINE YOU BASTARD
21:41:41 <Ngevd> There.
21:41:42 <Ngevd> Is.
21:41:43 <Ngevd> A.
21:41:46 <Ngevd> QUEUE!!!!
21:42:02 <Phantom_Hoover> YES AND I SHOULD TAKE PRIORITY
21:42:13 <Ngevd> Did you pay for a priority ticket?
21:42:19 <Ngevd> Actually, that's a good idea
21:42:23 <zzo38> What reason do you think for the priority?
21:42:33 <Ngevd> Maybe if PQ becomes my primary occupation
21:44:23 <coppro> PQ?
21:44:29 <Ngevd> PixelQuest
21:44:30 <coppro> Parti Québecois?
21:44:34 <coppro> Progress Quest?
21:44:34 <coppro> Oh
21:44:36 <Ngevd> An MSPAFA I write
21:44:42 <coppro> MSPAFA?
21:44:50 <elliott> sdjkfsdklfj
21:44:51 <elliott> hi
21:44:55 -!- Zuu has quit (Read error: Connection reset by peer).
21:44:56 <elliott> im join in acronym party
21:44:59 <Ngevd> MS Paint Adventures Fan Adventure
21:45:06 <coppro> Multi-Step Partially Advancing Finite Automaton?
21:45:10 <coppro> oh
21:45:18 <elliott> no it's Multi-Step Partially Advancing Finite Automaton
21:45:21 <elliott> you got it right first time
21:45:24 <coppro> oh ok
21:49:25 -!- Zuu has joined.
21:50:51 -!- Patashu has joined.
21:51:28 <zzo38> Which programs do you use for typeface design?
21:52:03 <Vorpal> I don't design typefaces
21:53:49 <Vorpal> elliott, iirc you said 3.4 GHz was overkill? Well I'm now waiting for a single threaded computation intensive calculation to complete
21:54:16 <zzo38> I know of a few programs; there is FontForge, and a few others, but METAFONT is best one.
21:54:52 <Vorpal> elliott, I'm doing exposure optimisation with hugin on screenshots I took in skyrim. It seems skyrim uses HDR effects, light levels differ quite a bit depending on if the sun is in the view or not
21:54:56 <Vorpal> so this might not work out
21:55:00 <CakeProphet> nah, emacs is the best typeface designer.
21:55:14 <Vorpal> CakeProphet, nah, dd + cat and maybe od
21:55:16 <elliott> Man, by "3.4 GHz is a waste of money and power", I totally meant "a 3.4 GHz i7 is never faster than 2.9 GHz i7"!
21:55:26 <zzo38> What is the command in emacs for typeface designing?
21:55:28 <Vorpal> elliott, really?
21:55:31 <Vorpal> elliott, why would that be?
21:55:36 <elliott> Absolutely. You are interpreting me correctly.
21:55:44 <CakeProphet> good old M-x design-typeface duh
21:55:46 <Vorpal> elliott, :P
21:55:52 <Vorpal> elliott, anyway I didn't claim you meant that
21:56:05 <Vorpal> elliott, but anything that makes this computation faster is a good thing...
21:56:13 <CakeProphet> Vorpal: the above is syntactically correct elliott.
21:56:54 <Vorpal> CakeProphet, a "syntactically correct elliott", okaaay....
21:57:09 <CakeProphet> 16:55 < elliott> Absolutely. You are interpreting me correctly.
21:57:13 <elliott> Vorpal: There was no "a" in CakeProphet's statement.
21:57:43 <CakeProphet> Vorpal: perhaps you don't understand the syntax of CakeProphet.
21:57:51 <Vorpal> elliott, indeed, but it was funnier that way
21:57:59 <Vorpal> I am somewhat confused about what he meant thoughg
21:58:02 <Vorpal> though*
21:58:21 <CakeProphet> just a slight play on words.
21:58:36 <CakeProphet> SHEESH AND NOW IT'S TOTALLY UNFUNNY BECAUSE I HAVE TO EXPLAININ ET AAAAAH
21:58:41 <CakeProphet> I'm going to the store. hmph.
21:59:32 <Vorpal> elliott, yeah the HDR effects are destroying the pano. If I get time and happen to be in that location when it is cloudy, I will try again
22:00:57 <Ngevd> Phantom_Hoover, you are now 4th in the queue
22:01:00 -!- l96 has joined.
22:01:14 <Phantom_Hoover> Ngevd, WORK FASTER
22:01:16 <Vorpal> Ngevd, queue to what?
22:01:43 -!- Zuu has quit (Ping timeout: 244 seconds).
22:01:50 <Ngevd> Having his Pixel embark on a Quest
22:01:57 <Vorpal> Ngevd, eh?
22:02:07 <monqy> eh
22:02:18 <Ngevd> His command for PixelQuest being used
22:02:26 <Phantom_Hoover> Cracked... has confused backslashes with forward slashes.
22:02:30 * Phantom_Hoover applauds.
22:02:38 <Vorpal> Ngevd, pixelquest being?
22:02:47 <Ngevd> My MSPAFA
22:03:02 <Ngevd> I literally have said this not ten minutes ago
22:03:02 <Vorpal> Ngevd, can you expand that abbreviation?
22:03:21 <Ngevd> Microsoft Paint Adventures Fanatic Adventure
22:03:25 <Vorpal> I see
22:03:43 <Vorpal> Ngevd, correct you did literally not say it within the last 10 minutes.
22:04:15 -!- Zuu has joined.
22:04:15 -!- Zuu has quit (Changing host).
22:04:15 -!- Zuu has joined.
22:04:20 <monqy> more like 20 minutes ago
22:04:27 <Vorpal> indeed
22:04:28 <monqy> tsk tsk
22:04:50 <Ngevd> At least I'm able to be misunderstood to be honest
22:05:13 <CakeProphet> :):):):):):):):):):):):):):):):):):):):)
22:05:22 <monqy> hi
22:05:48 <CakeProphet> monqy: kp
22:06:28 <CakeProphet> aesrdtfyguhijokpl[;]
22:06:34 <monqy> [;]
22:08:28 <zzo38> What does Canada, Japan, Switzerland have in common?
22:08:37 <Phantom_Hoover> ais523, ping.
22:08:45 <ais523> Phantom_Hoover: pong
22:08:45 <Ngevd> zzo38, they're all islands?
22:08:45 <elliott> zzo38: They're all US states.
22:08:52 <oerjan> "a".
22:08:55 <elliott> Ngevd: are you serious :P
22:08:59 <Ngevd> Ngevd, no
22:09:04 <Ngevd> Japan's not an island
22:09:08 <zzo38> elliott: No.
22:09:10 <zzo38> Ngevd: No.
22:09:11 <monqy> zzo38: they're all frends
22:09:16 <elliott> Ngevd: Nor is Switzerland or Canada :P
22:09:17 <Phantom_Hoover> ais523, what do I clip the ground lead on an anti-static wristband onto?
22:09:18 <oerjan> switzerland is an anti-island.
22:09:33 <Ngevd> They are all famous for their military
22:09:35 <ais523> Phantom_Hoover: an earthing stud
22:09:42 <ais523> you can get ones that plug into the mains earth supply
22:09:46 <ais523> that's what I do with mine
22:09:51 <zzo38> No. I am thinking of a different answer.
22:09:54 <Phantom_Hoover> That's the 4th answer I've had so far.
22:09:57 <ais523> (it's basically just a connection to the mains earth pin through a highish-valued resistor
22:09:59 <ais523> )
22:10:02 <Phantom_Hoover> All of them are completely different.
22:10:11 <ais523> heh
22:10:31 <zzo38> It isn't military. It isn't location. It isn't language. Try again.
22:10:32 <ais523> if someone answered "an earthed metal part of whatever you're working on", that answer is also correct, although arguably not as good
22:10:35 <elliott> Phantom_Hoover: Isn't that one equivalent to "a grounded socket"?
22:10:41 <Phantom_Hoover> Well, OK.
22:10:49 <oerjan> their flags are all white and red.
22:10:51 <Phantom_Hoover> ais523, define an earthed metal part of it?
22:10:56 <zzo38> oerjan: Yes.
22:10:59 <elliott> The case would qualify, I think.
22:11:00 <ais523> Phantom_Hoover: a metal part of it that is intended to be connected to earth
22:11:02 <ais523> like the case of a computer
22:11:19 <Phantom_Hoover> zzo38, they're all in the set {Switzerland, Japan, Canada}.
22:11:29 <oerjan> zzo38: denmark belongs in that set too.
22:11:42 -!- l96 has quit (Quit: Leaving).
22:12:11 <Phantom_Hoover> oerjan, no it doesn't? Don't you even know set theory?
22:12:27 <oerjan> Phantom_Hoover: the set of countries with red and white flags.
22:12:42 <Phantom_Hoover> Oh, not {Switzerland, Japan, Canada}.
22:12:43 <olsner> Denmark is not in the set {Switzerland, Japan, Canada}
22:12:44 <zzo38> oerjan: I didn't know. I just knew because once I was in a group and we had to draw flags in school, we assign three flag at random and I noticed that I only need the red and white pencil
22:12:56 <Phantom_Hoover> ais523, and if the case is painted?
22:12:58 <ais523> zzo38: wasn't the paper white?
22:13:03 <ais523> Phantom_Hoover: you clip it to the inside of the case
22:13:06 <zzo38> ais523: I don't remember.
22:13:11 <Phantom_Hoover> (I'm absurdly paranoid about blowing out the CPU by accident.)
22:13:11 <ais523> this sort of thing is why people practically use separate earthing studs
22:13:38 <ais523> (also, if you've built up a very large charge, a properly designed earthing stud will prevent you shocking /yourself/ when discharging it, which touching the case won't do)
22:13:52 <zzo38> I think it was a large poster paper
22:14:08 <ais523> for something like a computer, it's in practice enough just to touch metal surfaces everywhere you walk
22:14:17 <zzo38> I do not remember much else about it.
22:14:20 <ais523> I have a habit of doing that nowadays after spending four years as an electronic engineer
22:14:34 <elliott> I note that "earthing stud" returns no relevant google shopping results :P
22:14:42 <ais523> also, the maximum charge you can sustain depends on the weather (particularly humidity); on a rainy day there's unlikely to be much of a problem
22:15:45 <Phantom_Hoover> ais523, but clipping it to the case would be perfectly adequate for normal purposes?
22:15:55 <ais523> should be
22:16:09 <ais523> assuming the case is properly earthed, but I don't see why it wouldn't be
22:16:27 <Phantom_Hoover> Well, if it's not plugged in, for one thing
22:16:42 <ais523> the basic idea is that an unplugged computer has a floating potential, so if you earth it at your own potential, then you can't shock any part of it
22:16:48 <ais523> as the voltages everywhere are measured relative to yourself
22:17:15 <Vorpal> Phantom_Hoover, as long as the case is grounded I presume?
22:17:32 <Vorpal> well, ais523 made a good point there
22:17:43 <Phantom_Hoover> Oh, so the problem is the CPU equalises charge with you, and then has a voltage relative to the *motherboard*?
22:18:00 <ais523> Phantom_Hoover: right
22:18:12 <ais523> it's not likely to stay for more than a fraction of a second, but a fraction of a second is enough to blow it out
22:18:19 <Vorpal> ais523, what do you do with plastic computer cases
22:18:27 <Vorpal> they are quite common in laptops especially
22:18:36 <ais523> Vorpal: there's still likely to be an earth connection somewhere; although, I just earth to mains to avoid all these problems
22:18:36 <Phantom_Hoover> Yeah, I thought the problem was discharges between you and the CPU.
22:18:54 <ais523> Phantom_Hoover: well, the problem is that some of the pins of the CPU are at one voltage and some are at another voltage
22:19:04 <ais523> so the voltage discharges through the CPU for a moment, and that gives it an overvoltage
22:19:09 <Phantom_Hoover> ais523, still unclear on how one earths the case without plugging it in, though.
22:19:18 <Vorpal> ais523, yes I generally just earthed myself to the mains when working in a computer. Worked fine so far. I guess I touched enough of the case to make it earth itself to me as well...
22:19:26 <ais523> Phantom_Hoover: it's not a case of actually earthing it; rather, it's a case of setting its voltage relative to yours
22:19:38 <elliott> Phantom_Hoover: You should just attach the other end of the strap to the inside of the wall socket.
22:19:41 <ais523> by using its earth connection
22:19:42 * elliott good advice.
22:20:12 <ais523> elliott: that's basically how a mains earthing stud works, except it's designed to make utterly sure it connects to the right pin, and there's a resistor in there to prevent you discharging too quickly and shocking yourself
22:20:19 <Vorpal> elliott, that is fairly easy in Sweden, we have earth clips on the side of the socket.
22:20:24 <elliott> Yeah, it's just like that except not being stupid :P
22:20:53 -!- pikhq_ has quit (Remote host closed the connection).
22:20:55 <ais523> Vorpal: in the UK, the socket has an earth socket where the earth pin goes, and unless there's a pin in it, the live and neutral sockets are covered by plastic
22:21:00 <ais523> and the earth pin is longer on the plugs
22:21:11 <Vorpal> ais523, we have earth clips on the side. Not earth pins at all
22:21:26 <ais523> it makes it very hard to touch the live or neutral by mistake, even if you're going around poking wires in there (which is nonetheless not advised)
22:21:32 <Vorpal> ais523, this type of connector: https://en.wikipedia.org/wiki/Schuko
22:21:48 <ais523> btw, the neutral can easily have enough of a voltage difference from earth to shock you, although it's rarely as much as the live has
22:22:12 <ais523> depends on how much current's being used in each of the three phases of live
22:22:31 <Vorpal> anyway my earthing system I use when working inside a computer is designed to be earthed to the ground clip.
22:22:35 <ais523> (they use multiple phases so that they cancel out for the neutral, and so they only need massive wires to carry the live, the neutral can be carried with a reasonably simple one)
22:23:29 <Vorpal> ais523, afaik you don't get three phase connections in the wall sockets unless it is for like washing machine or oven or such
22:23:33 <Phantom_Hoover> ais523, so wait, the correct order would be to attach {motherboard, PSU}, attach the two, ground self on PSU, plug in CPU?
22:23:44 <ais523> Vorpal: you get one of the three phases in the wall sockets
22:23:51 <Vorpal> ais523, yes obviously
22:23:56 <ais523> chosen at random
22:24:05 <ais523> Phantom_Hoover: oh, you're plugging in a motherboard from scratch?
22:24:08 <Vorpal> ais523, do they use different phases in different parts of the house or the same phase in a given house?
22:24:12 <Phantom_Hoover> ais523, yes.
22:24:20 <ais523> in that case, you should ground yourself both on the PSU, and on the antistatic foam that the CPU comes in (while it's still in the foam)
22:24:30 <ais523> to equalise them to each other before you try to plug the CPU in
22:24:37 <Vorpal> ais523, if the former there could be some issues with audio equipment connected to different wall sockets I imagine
22:24:42 <Phantom_Hoover> This is the most complicated thing?
22:24:45 <Vorpal> probably other stuff too
22:24:46 <ais523> Vorpal: the former happens on occasion, the latter is more common
22:25:02 <Vorpal> ais523, the former actually seems rather stupid
22:25:02 <Phantom_Hoover> ais523, so motherboard, PSU, ground on PSU and foam, plug in CPU?
22:25:02 <ais523> Phantom_Hoover: it's hard not to do by accident, the antistatic foam is designed so that you're probably going to touch it before you touch the CPU
22:25:03 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
22:25:17 <ais523> Phantom_Hoover: that's about right
22:25:31 <ais523> and try not to touch the pins unless you have to; what causes the problem is different pins getting different voltages
22:25:33 <Phantom_Hoover> ais523, attaching motherboard to PSU before grounding?
22:25:42 <elliott> Phantom_Hoover is literally made out of static.
22:25:43 <ais523> Phantom_Hoover: ground before you attach anything
22:25:45 <ais523> each component individually
22:25:52 <ais523> the motherboard has chips on too
22:26:11 <Phantom_Hoover> ais523, OK, but attach motherboard to PSU and ground on PSU before foam and CPU?
22:26:13 <ais523> and ground yourself before you touch any pins of anything; they'll probably be quite near to earth potential, so you should be too
22:26:15 <Vorpal> <ais523> and try not to touch the pins unless you have to; what causes the problem is different pins getting different voltages <-- why would you have to? There are other reasons than static to avoid touching the pins as well
22:26:22 <Phantom_Hoover> <elliott> Phantom_Hoover is literally made out of static.
22:26:25 <ais523> I advise that you start off by touching part of your house's water supply system
22:26:27 <Phantom_Hoover> DID I NOT TELL YOU ABOUT THE JUMPER
22:26:32 <ais523> the copper on a radiator, a metal tap, something like that
22:26:42 <Vorpal> ais523, I'm not sure that a bit of human skin fats on a high speed data transfer pin of a CPU is a good idea at all :P
22:26:43 <elliott> ais523: OK now I'm imagining Phantom_Hoover just walking around the house touching things.
22:26:44 <ais523> those are typically all connected to mains earth to make it easier to route around a house
22:26:48 <ais523> elliott: I actually /do/ that
22:27:08 <Phantom_Hoover> ais523 is fully prepared in case the electrons invade.
22:27:13 <elliott> He touches a rubber ducky in the bath and is seen. "It's for safety," he says. His spotter leaves, and he touches the rubber ducky a few more times. It isn't for safety, he just likes rubber duckies.
22:27:13 <ais523> Vorpal: well, OK, but typical sockets are designed to work around the problem
22:27:25 <elliott> Phantom_Hoover: comment on accuracy of my fanfiction.
22:27:28 <CakeProphet> WER{W))RE{e{E$}]3[[
22:27:31 <CakeProphet> hi I'm here now.
22:27:33 <CakeProphet> rejoice.
22:27:39 <ais523> I've cut my finger on IC sockets a few times, though
22:27:39 <Vorpal> ais523, I tend to do that as well during winter, due to the dry air the charge tends to build up otherwise. And then you get a strong chock rather than a small one when you touch something grounded anyway
22:27:44 <ais523> not sure if I've ever done it on the chip itself
22:27:45 <CakeProphet> or if you have not already joiced, you may joice now.
22:27:46 <Phantom_Hoover> elliott, I don't have a rubber duckie :(
22:27:55 <elliott> ais523: ouch
22:27:56 <ais523> Vorpal: right, it's a valuable life skill
22:28:03 <Vorpal> heh
22:28:04 <ais523> getting randomly shocked is annoying
22:28:09 <Vorpal> yes
22:28:14 <ais523> elliott: I've burnt myself a couple of times with a soldering iron too
22:28:18 <ais523> it's painful but heals quickly
22:28:28 <elliott> ais523: Soldering irons scare me intensely.
22:28:33 <elliott> It's like WIELDING FIRE
22:28:48 <Vorpal> ais523, also I don't know what is up with my electrical piano. It builds up a potential compared to the computer case when connected to the computer using USB, but not when connected using a classical midi cable
22:28:51 <ais523> elliott: have you seen a solder gun? I haven't, but they're like soldering irons except they heat up and cool down really quickly
22:28:59 <ais523> so if you're mad, you can solder something with one, then turn it off and put it in your pocket
22:29:10 <Phantom_Hoover> <elliott> ais523: Soldering irons scare me intensely.
22:29:11 <Vorpal> ais523, and the piano isn't grounded for some reason. It uses an europlug
22:29:19 <elliott> ais523: So it's a soldering iron except it doesn't warn you that it's hot? AIEEEEEEEEEEEEEE
22:29:21 <Phantom_Hoover> I did soldering in physics in first year.
22:29:26 <elliott> Phantom_Hoover: AIEEEEEEEEEE
22:29:28 <ais523> Vorpal: hmm, I suspect the classical midi cable has separate chassis ground and signal ground; I'm not sure if USB does
22:29:34 <ais523> perhaps that could be it
22:29:34 <Phantom_Hoover> The physics teacher promised us a cake day if none of us burned ourselves.
22:29:44 <Phantom_Hoover> We did not get that cake day. Nor did any other classes, ever.
22:29:49 <Vorpal> ais523, I'm pretty sure classical midi cables are specced to use optoinsulators
22:29:52 <Vorpal> ais523, so yeah I guess so
22:29:58 <elliott> Phantom_Hoover: I want cake day.......
22:30:02 <Phantom_Hoover> (I never burned myself, also I was the soldering master.)
22:30:09 <ais523> (the leading theory behind the magic/more magic switch in the hacker story is that the switch connected chassis and signal ground together, btw, which could quite possibly knock a computer offline)
22:30:22 <Phantom_Hoover> elliott, now my chemistry class has weekly cake days.
22:30:36 <ais523> Phantom_Hoover: but you don't use soldering irons in chemistry class, typically
22:30:37 <Vorpal> ais523, yeah
22:30:53 <Ngevd> We were going to have a Cake Day in Further Maths weekly, but we got bored of it after three weeks
22:31:22 <ais523> Ngevd: I'd be impressed if someone managed a soldering iron burn during Further Maths class
22:31:34 <elliott> ais523: What if you baked a cake with a soldering iron.
22:31:37 <Phantom_Hoover> The maths class have weekly cake days too, but I'm banned from the entire maths department for not unrelated reasons.
22:31:40 <ais523> oh right, Ngevd is British because he's from Hexham
22:31:46 <elliott> ais523: Also you have to solder the numbers together.
22:31:49 <elliott> That's why it's further maths.
22:31:55 <ais523> elliott: quite difficult to do, and it'd have to be a new soldering iron not to have solder on the tip
22:32:04 <elliott> ais523: Solder cake!
22:32:15 <Ngevd> Isn't solder poisonous?
22:32:17 <ais523> if the tip of a soldering iron becomes desoldered, it actually makes it pretty hard to solder with, you have to cover it with solder to get it soldering again
22:32:25 <ais523> Ngevd: yes, heavy metal poisoning
22:32:26 <elliott> Ngevd: Poisonous and DELICIOUS.
22:32:41 <Phantom_Hoover> (I got kicked out of maths because I was bored and did nothing of any use to anyone, and then swooped into the class next cake day and made off with some cake.)
22:32:42 <ais523> although the new RoHS stuff, which contains no lead, isn't so bad, it's still inadvisable to eat it
22:33:10 <elliott> Phantom_Hoover: They /banned you/ for that?
22:33:17 <ais523> elliott: freeloading and eating cake?
22:33:23 <ais523> that seems like a bannable offense
22:33:23 <elliott> ais523: The two most human things!
22:33:30 <Phantom_Hoover> Excuse me, *stealing cake
22:33:34 <Ngevd> Kids, don't eat solder. It makes you look stupid.
22:33:37 <Phantom_Hoover> It was a heist!
22:33:38 <ais523> excrement unto;
22:33:40 <elliott> Phantom_Hoover: It's not stealing if it's cake.
22:33:47 <Phantom_Hoover> elliott, well maybe.
22:34:15 <Phantom_Hoover> But anyway, I'm ~not part of the maths department~ now, i.e. they don't like me very much.
22:34:21 <Ngevd> We haven't had a cake day in Latin for a while.
22:34:35 <Ngevd> There are 6 of us, includin the teacher
22:34:47 <Phantom_Hoover> Ngevd, I got kicked out of my old school the year before we started having Latin cake days.
22:34:51 <Ngevd> The cake I generally bring is enough for 16
22:35:00 <Ngevd> Phantom_Hoover, :'(
22:35:15 <Phantom_Hoover> (This is the one I wounded someone with a spoon at.)
22:35:18 <elliott> Phantom_Hoover: This is because you killed someone with a spoon and then stole some cake.
22:35:47 <Ngevd> elliott, you cloned yourself and your clone kicked someone in the face.
22:35:51 <elliott> Yes.
22:35:58 <Ngevd> You're not one to talk
22:36:29 <Phantom_Hoover> <elliott> Phantom_Hoover: They /banned you/ for that?
22:36:38 <Phantom_Hoover> Like I said, I was doing nothing of any use to anyone.
22:37:01 <Phantom_Hoover> I wasn't that bothered, frankly; I got to muck around in the library instead.
22:37:12 <Phantom_Hoover> I WOULD NEVER HAVE MET APT GUY IF THEY HADN'T
22:37:34 <ais523> <Ngevd> elliott, you cloned yourself and your clone kicked someone in the face. <--- now I have a huge urge to get ais523_ to log on and kick you
22:37:49 <ais523> but I'm not at work, and it'd take a while to get there to get ais523_ online
22:47:46 <Ngevd> My ancient history class has two people called Theo
22:47:58 <Ngevd> But none called Telemachus
22:48:12 -!- pikhq has joined.
22:48:31 <Ngevd> If I ever have a son, I'll call him Telemachus, or Mac for short
22:49:23 <Vorpal> ais523, you could connect twice from the same computer
22:49:44 <Phantom_Hoover> Ngevd, better than elliott's choice.
22:49:45 <ais523> Vorpal: but then it wouldn't be ais523_
22:49:48 <ais523> it'd just be me using the wrong nick
22:49:50 <Phantom_Hoover> (It's 'Azimuth'.)
22:49:52 <Vorpal> ais523, ...
22:49:54 <Phantom_Hoover> (That's not even a name.)
22:49:55 -!- sebbu has quit (Ping timeout: 240 seconds).
22:50:34 <ais523> Vorpal: *…
22:50:47 * Phantom_Hoover -> sleep
22:50:48 -!- Phantom_Hoover has quit (Quit: Leaving).
22:51:03 -!- sebbu has joined.
22:51:03 -!- sebbu has quit (Changing host).
22:51:03 -!- sebbu has joined.
22:55:08 <Vorpal> well I'm actually managing to make something out of this skyrim panorama I think
22:55:14 <Vorpal> I worked around the HDR issue mostly
22:57:29 <oerjan> <Phantom_Hoover> Ngevd, I got kicked out of my old school the year before we started having Latin cake days. <-- so what is "cake day" in latin?
22:57:46 <Ngevd> Dammit, I know this...
22:58:06 -!- sebbu has quit (Read error: Connection reset by peer).
22:59:03 -!- sebbu has joined.
22:59:34 <Ngevd> dies placentis
23:00:00 <elliott> hi
23:00:31 -!- CakeProphet has changed nick to PlacentaProphet.
23:00:53 <ais523> `? welcome
23:00:56 <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
23:01:21 <PlacentaProphet> ais523: thanks
23:01:24 <oerjan> Ngevd: eww
23:01:45 <ais523> PlacentaProphet: heh, I was wondering who'd assume that that was targeted at them
23:01:48 <ais523> o
23:01:52 <Ngevd> English has come a long way from Latin
23:01:57 <Ngevd> Maybe in the wrong direction
23:02:44 <PlacentaProphet> "that that" is the best construction of English.
23:03:20 <Ngevd> PlacentaProphet, is the fully English language version of you a prophet that is a cake, one who prophesizes about cake, or something else
23:03:26 -!- zzo38 has quit (Remote host closed the connection).
23:03:30 <elliott> ais523: You should totally debug my Python code!!!
23:03:37 <elliott> Blame Gregor.
23:03:40 <elliott> Wait no PlacentaProphet you do it.
23:03:47 <PlacentaProphet> Ngevd: I wasn't aware I had differing localizations.
23:03:54 <oerjan> Ngevd: it's someone who prophesizes about a cake that makes you think you are a cake. i assume.
23:04:19 <PlacentaProphet> in any case the former would be ProphetCake
23:04:33 <Ngevd> In which case you want placentarumPropheta
23:04:46 <PlacentaProphet> no I want PlacentaProphet
23:04:50 <PlacentaProphet> because this is still English.
23:05:00 <PlacentaProphet> I'm just using a Latin loanword.
23:05:02 <Ngevd> YES BUT IT IS ALSO INCORRECT LATIN
23:05:09 <Ngevd> TWO LATIN LOAN WORDS
23:05:31 <PlacentaProphet> yes in much the same way that "lo siento" is incorrect English.
23:05:42 <PlacentaProphet> Placenta Prophet is also incorrect Latin.
23:06:11 <Ngevd> BUT IT IS ONE LETTER OFF CORRECT LATIN
23:06:44 <oerjan> "It translates as flat cake. It isn't cake like you think of birthday cake today. A better translation would be flat bread."
23:06:58 <PlacentaProphet> -- some dude on the Internet?
23:07:06 <Ngevd> Like stottie cake?
23:07:07 <oerjan> http://uk.answers.yahoo.com/question/index?qid=20100906064119AAICqB3
23:07:13 <oerjan> so yeah
23:07:23 <PlacentaProphet> I mean, yeah, that makes sense historically.
23:07:41 <Ngevd> I like stottie cake
23:07:47 <elliott> PlacentaProphet: FIX MY C;ODEK
23:07:54 <PlacentaProphet> elliott: sauce plz
23:08:15 <PlacentaProphet> I will put my delicious placentas to work.
23:08:38 <elliott> PlacentaProphet:
23:08:39 <elliott> https://bitbucket.org/ehird/hackbot/raw/d135b69e88f1/multibot_cmds/PRIVMSG/tr_60.cmd
23:08:40 <elliott> https://bitbucket.org/ehird/hackbot/raw/d135b69e88f1/multibot_cmds/lib/server
23:08:52 <PlacentaProphet> oh my python
23:08:58 <Vorpal> b
23:09:03 <Vorpal> err
23:09:05 <Vorpal> ignore that
23:09:08 <elliott> Sometimes the server gets messages that look like [] or ['#channel'] for no obvious reason
23:09:16 <elliott> Despite the fact that no other messages are cut off or whatever
23:09:18 <elliott> Fix plz thanks
23:09:24 <ais523> ['#esoteric']
23:09:26 <PlacentaProphet> I blame dynamic typing. brb food then I'll look.
23:10:55 <elliott> ais523: The server server (i.e. lib/server) :P
23:12:11 * ais523 /quote ['#esoteric']
23:12:27 <ais523> (I actually did that)
23:12:55 * Ngevd shakehead
23:13:02 * oerjan good grammar
23:13:14 <monqy> hi
23:13:20 * oerjan hi
23:13:29 <ais523> perhaps I should send that to other random servers for a while
23:13:52 <ais523> `? welcome
23:13:54 <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
23:14:00 <PlacentaProphet> elliott: data = server.recv(4096).split('\0') #here?
23:14:10 <oerjan> ais523 is seeing people who aren't here.
23:14:20 <monqy> how rude
23:14:21 <ais523> oerjan: no, I just decided that if I did it randomly for a while
23:14:27 <elliott> PlacentaProphet: Yes, that is indeed the part that receives shit :P
23:14:34 <PlacentaProphet> lol
23:14:35 <ais523> then when I did it to people who have been here for ages and I just didn't notice, nobody would notice /me/ doing it
23:14:36 <PlacentaProphet> good
23:14:42 <elliott> ais523: lol
23:15:02 <Ngevd> Maybe set up Hackego to do a welcome every half-hour?
23:15:38 <PlacentaProphet> elliott: when does this "sometimes" happen? seemingly at random?
23:15:43 -!- augur has quit (Remote host closed the connection).
23:15:58 <elliott> Yes, usually after some other commands go through (typically when it's two at once but not always)
23:16:45 <Vorpal> elliott, skyrim panorama (huge image, might want to open in, say, gimp rather than the browser depending on how much ram you have and which browser): http://whotookspaz.org/~anmaster/images/skyrim/near-solitude.jpg (yes I'm aware of the hole, I fucked up the overlap a bit yes)
23:17:15 <elliott> Opened in Chrome without a freakin' hitch
23:17:20 <Vorpal> elliott, right
23:17:28 <elliott> The white bits on the water are really badly-artefacted. :/
23:17:45 <Vorpal> elliott, I think they are specular highlight
23:17:46 <elliott> Where's the hole
23:17:56 <Vorpal> elliott, and in the rock. I filled it with black
23:18:01 <Vorpal> near the left edge
23:18:06 <elliott> Oh, there
23:18:06 <elliott> And damn, that foliage needs more smoothing :P
23:18:16 <Vorpal> elliott, what?
23:18:22 <elliott> Near the right hang side
23:18:26 <elliott> It's really jaggedy
23:18:30 <elliott> s/hang/hang/
23:18:32 <elliott> s/hang/hand/
23:18:33 -!- pkzip has joined.
23:18:37 <Vorpal> oh yeah
23:18:38 <monqy> hang
23:19:02 -!- pkzip has left.
23:19:03 <Vorpal> elliott, blame a bit on the perspective. After all some pixels get dragged out over several due to the panorama
23:19:10 <Vorpal> elliott, especially near the edges
23:19:32 <elliott> I've thought that about a lot of Skyrim screenshots I've seen tbh :P
23:19:34 <elliott> re the foliage
23:19:37 <elliott> rip pkzip killed by pkzip
23:19:41 <Vorpal> well there is some of that too
23:19:45 <elliott> monqy: Have you fixed my Python code???
23:19:59 <PlacentaProphet> elliott: I have no idea but it sounds like weird networking stuff. try passing the socket.MSG_WAITALL flag? no clue.
23:20:18 <elliott> PlacentaProphet: MSG_WAITALL only applies to stream sockets.
23:20:18 <Vorpal> elliott, you should check out witcher 2 screenshots
23:20:44 <Vorpal> elliott, I will try to find some time to make some next week. Then there will be awesomeness. Can't do panorama, always third person view so...
23:20:56 <monqy> elliott: no i have python code of my own to nightmare about
23:21:09 <monqy> except it's not my own i have to share it
23:21:09 <Vorpal> elliott, and thankfully unlike minecraft, skyrim has no parallax. That makes panoramas much easier
23:21:09 <elliott> Vorpal: You could panorama and just have a big fuzzy mass of nonsense in the middle
23:21:15 <elliott> Or, well, not in the middle, all around
23:21:21 <elliott> I'm sure you can hack it to make the player invisible though :P
23:21:26 <Vorpal> elliott, err, you would get parallax
23:21:33 <elliott> More like shamarallax
23:21:35 <Vorpal> elliott, because the camera rotates around a point outside of it
23:22:00 <monqy> ooh a new list of ideas entry
23:22:03 <monqy> exciting
23:22:03 <elliott> Vorpal: BTW, http://deadendthrills.com/ have been doing a bunch of Skyrim posts and they look unreasonably good.
23:22:14 <Vorpal> elliott, anyway there is a lot of details that won't be visible in static screenshots. Like how plants move in the wind
23:22:23 <elliott> (Note to everybody: Do not click unless you want to feel inadequate about your hardware, whatever hardware you have :P)
23:22:37 <Vorpal> elliott, in oblivion that looked really faked. It looks kind of okay in Skyrim. It looks utterly awesome in Witcher 2
23:22:50 <ais523> elliott: does that apply even to me? my hardware's typically so bad that seeing better hardware doesn't make me feel inadequate about it
23:23:02 <Vorpal> elliott, what is that site about?
23:23:16 <elliott> ais523: You might want to downgrade to a sock to be safe
23:23:28 <elliott> Vorpal: It's, like, video game photography.
23:24:06 <Vorpal> elliott, anyway, I can play Skyrim on ultra. I can play Witcher 2 on ultra except for the supersampling option. I don't see how I could feel inadequate about my hardware here.
23:24:12 <elliott> The guy mods up the games to hell and back again to get the best graphics he possibly can, runs them at 2160p, and use time-stopping shit and debug consoles to pose a screenshot :P
23:24:19 <PlacentaProphet> elliott: if it continues running does it receive the rest of an IRC line later?
23:24:24 <Vorpal> elliott, heh
23:24:56 <elliott> Some of them look ridiculously good: http://farm7.static.flickr.com/6058/6233836408_00ef719628_b.jpg, http://farm7.static.flickr.com/6185/6147515320_689b9546f9_b.jpg
23:24:58 <Vorpal> elliott, there are already some HD Skyrim mods. And the official modding tools are not yet released.
23:25:05 <elliott> Aw, those hotlinks don't work. :/
23:25:12 <Vorpal> elliott, are both rage?
23:25:15 <Vorpal> elliott, and they work for me
23:25:33 <Vorpal> elliott, I know one of them is Rage
23:25:36 <elliott> One of them is Rage and the other one is Hard Reset, which apparently everyone has praised for having good graphics while being terrible in all other aspects :P
23:25:50 <Vorpal> elliott, Rage has *badly* uneven graphics quality
23:25:51 <elliott> PlacentaProphet: It doesn't receive IRC lines, but no, like I said, it never receives the rest of a message, no message is ever cut off, etc.
23:26:06 <Vorpal> it might be state of the art for one object, but right out of NWN1 for another
23:26:19 <elliott> Vorpal: Apparently he basically has to avoid textured surfaces like the plague :p
23:26:42 <Vorpal> elliott, well, pretty much all surfaces are textured in modern games
23:26:54 <Vorpal> elliott, but I guess he avoids them up close
23:26:58 <Vorpal> which makes sense
23:26:59 <PlacentaProphet> elliott: is it datagram weirdness? why are you using a datagram socket?
23:27:02 <elliott> Vorpal: That's what I meant.
23:27:06 <elliott> PlacentaProphet: Because I don't want a stream socket?
23:27:21 <elliott> There are multiple processes writing to it, etc.
23:27:28 <PlacentaProphet> what are you talking about, everybody loves stream sockets.
23:27:29 <PlacentaProphet> okay, fine.
23:27:30 <Vorpal> elliott, and I wasn't aiming for making it look good. Rather I was aiming for a representative view of it
23:27:38 <elliott> Yar
23:27:46 <elliott> Heh, http://farm7.static.flickr.com/6110/6335388665_efa3b91f92_b.jpg shows the water artefacts too
23:28:06 <Vorpal> elliott, though some stuff are more noticable in a still image. I mean, a lot of stuff moves, so you don't really see the white stuff like that
23:28:11 <Vorpal> because it changes
23:28:14 <elliott> yeah
23:28:40 <Vorpal> elliott, anyway I didn't notice those artifacts in game
23:28:40 <elliott> Deewiant: Do you have a link handy to that massive list of all graphics cards in order of approximate goodness
23:30:08 <Vorpal> elliott, quoting from that site: "Why wouldn’t you assume that a game scarcely bigger than an Xbox 1 DVD would look like ass? Here’s one reason. The new Elder Scrolls might not be a Witcher 2 when it comes to texture resolution (yet), but it’s definitely a Morrowind in its art direction. Unfortunately, it’s also an Oblivion when it comes to making a first impression."
23:30:09 <Vorpal> yep
23:30:11 <Vorpal> pretty much
23:31:10 <Vorpal> "Tools and tricks: twofold increase in landscape cell loading distance, large address aware patch to TESV executable, free camera, no-HUD, 2160p rendering, timecycle adjustment, custom FOV." <-- will have to try those out
23:31:14 <Vorpal> well some of them
23:31:21 <Vorpal> free camera is useless for playing
23:31:29 <elliott> Free camera, no-HUD, and 2160p rendering are DEFINITELY super useful to you.
23:31:42 <Vorpal> no by landscape cell loading distance might be
23:31:58 <elliott> Msot of the Skyrim screenshots only seem to be on http://www.flickr.com/photos/duncanjharris/sets/72157628114774012/detail/, btw
23:32:00 <Vorpal> I just hope it doesn't do what oblivion did when you changed that outside the range available in the GUI config
23:32:04 <oerjan> `addquote <elliott> ais523: You might want to downgrade to a sock to be safe
23:32:05 <Vorpal> which was to fuck up badly
23:32:06 <HackEgo> 716) <elliott> ais523: You might want to downgrade to a sock to be safe
23:32:09 <elliott> I said sock?
23:32:11 <elliott> I meant to say rock
23:32:13 <elliott> But sock is better
23:33:41 <PlacentaProphet> elliott: do AF_UNIX datagram sockets not require listening and accepting stuff? I doubt that's a problem since you're actually receiving data.
23:33:58 <elliott> PlacentaProphet: You're not meant to listen from them.
23:33:59 <ais523> elliott: improvement typo!
23:34:00 <elliott> That's sort of the point.
23:34:04 <ais523> I will call it an "improvemeny"
23:34:20 <elliott> ais523: That's a terrible name.
23:34:21 <PlacentaProphet> elliott: I've never used sockets in this manner, is why I ask.
23:34:24 <Ngevd> I wonder if Aeneas ever met Odysseus while they were both lost in the Mediterreanean....
23:34:32 <elliott> PlacentaProphet: And that is why I answered.
23:34:36 <PlacentaProphet> excellent.
23:35:21 <PlacentaProphet> so yeah uh... I have no idea. it appears to be happening in code completely unrelated to this source.
23:35:27 <PlacentaProphet> so maybe you should check out the programs you're talking to?
23:35:52 <elliott> PlacentaProphet: I linked the single program that talks to it.
23:35:56 <PlacentaProphet> ah okay.
23:38:25 -!- augur has joined.
23:40:13 <Vorpal> elliott, according to http://deadendthrills.com/faq/ his system isn't that much better than mine at all. I think the GPU might be slightly better. And I have a newer generation CPU I think, though iirc with less cache.
23:40:40 <Vorpal> elliott, I certainly have more RAM. He has a larger SSD
23:40:51 <Vorpal> I have way larger HDDs
23:40:53 <elliott> I believe the GTX 580 is the highest-end non-SLI card Nvidia do
23:40:59 <elliott> But I might be wrong
23:41:03 <Vorpal> elliott, ther eis GTX 590 too
23:41:05 <Vorpal> there is*
23:41:15 <PlacentaProphet> elliott: it seems to me that there's no seperator between multiple sends. is that okay?
23:41:19 <elliott> RAM isn't really that relevant above a certain point, and storage space is completely irrelevant :P
23:41:22 <elliott> PlacentaProphet: That's why it's a datagram socket
23:41:23 <Vorpal> elliott, but yes, he has a somewhat better GPU. Still not that much of a different
23:41:48 <Vorpal> elliott, anyway he isn't doing real time rendering when taking this screenshots. 40 FPS at the time would be just fine
23:41:53 <PlacentaProphet> elliott: ah okay.
23:42:00 <elliott> Vorpal: There is no way he gets 40 FPS.
23:42:02 <PlacentaProphet> the datagram is the seperator.
23:42:03 <Vorpal> these*
23:42:04 <PlacentaProphet> got it.
23:42:05 <elliott> "That bit’s important, though, because it means I run their hardware at temperatures that could fry an egg."
23:42:14 <elliott> Vorpal: I'm like 99% sure overclocking is probably involved.
23:42:19 <Vorpal> elliott, I'm just pointing out that it wouldn't matter when taking those screenshots
23:42:48 <elliott> GTX 590 is one of those two-GPU things.
23:42:53 <elliott> So it doesn't really count.
23:43:04 <Vorpal> elliott, I heard of someone with two GTX 590 in SLI
23:43:07 <Vorpal> so quad GPUs?
23:43:16 <Vorpal> something like that anyway
23:43:19 <elliott> I don't think you can do that
23:43:24 <elliott> I thought CrossFire was the only one that let you do >2 gpus
23:43:28 <Vorpal> hm
23:43:43 <Vorpal> elliott, maybe you can when they are on the same card? I don't know.
23:45:52 <Ngevd> I'm dissapointed that it is not possible to do GCSE or A-Level Finnish
23:46:44 <PlacentaProphet> elliott: try using sendall instead of send. I doubt it matters though.
23:46:59 <Ngevd> Nor the Scottish equivalents thereof
23:47:13 <elliott> PlacentaProphet: That would result in multiple send()s being used.
23:47:17 <elliott> Which would break the server.
23:47:34 <elliott> PlacentaProphet: And like I said, /no message gets cut off at any point/.
23:47:38 <elliott> So all the data is always being sent.
23:47:53 <PlacentaProphet> elliott: I thought datagram sockets were inherently unreliable?
23:48:09 <elliott> It's a fucking Unix socket!
23:48:23 <elliott> Unless Gregor is secretly fucking up the bits, there is no reason for this to be happening.
23:48:39 <elliott> No messages ever fail to send, but occasionally a phantom message with just one or none of the fields in the wrong order appears for no apparent reason.
23:49:01 <Ngevd> Can you identify and ignore them?
23:49:16 -!- jix has quit (Ping timeout: 256 seconds).
23:49:18 <Vorpal> "A lot of folk asking the about my Rage config, so here it is. Bear in mind, though, that I’m running the game at 2160p (at 60fps, Carmack, you beast) and using 64x multisampling on the screenshots, then downsampling x2."
23:49:23 <Vorpal> 64x multisampling
23:49:24 <elliott> Ngevd: I... would rather figure out why they are happening.
23:49:24 <Vorpal> wow
23:49:53 <augur> alright people
23:49:58 <elliott> no
23:49:59 -!- jix has joined.
23:49:59 <augur> lemme ask you a very important question
23:50:01 <augur> very very important
23:50:01 <elliott> no
23:50:03 <elliott> no
23:50:21 <augur> if i showed you 4 squares and a rectangle, and they all looked like the same color
23:50:23 <augur> and i asked you
23:50:28 <augur> point to the one with the different color
23:50:35 <elliott> i would punch you
23:50:36 <augur> would you be inclined to point to the rectangle
23:50:43 <elliott> hope this helps
23:50:46 <PlacentaProphet> elliott: well yes based on the code I'm inclined to agree that there's no reason for that to be happening.
23:50:47 <monqy> be inclined to punch you
23:50:55 <pikhq> Be inclined to flip you off, really.
23:51:05 <augur> some dipshit on reddit says that people would point to the rectangle
23:51:06 <PlacentaProphet> elliott: which is why I believe it's low-level issue.
23:51:08 <elliott> moral of the story "nobody likes having science done to them"
23:51:08 <PlacentaProphet> +a
23:51:12 <augur> because its visibly different
23:51:18 <Ngevd> I'd point to the PAGE THEY ARE PRINTED ON
23:51:22 <monqy> flip off with one hand, punch with the other
23:51:23 <augur> Ngevd: :)
23:51:27 <elliott> augur: tbh i might do it as a kneejerk thing but it's such a contrived scenario
23:51:29 <pikhq> augur: I suppose if you gave them a second or less?
23:51:45 <augur> if you were asked for the different _color_?
23:51:46 <augur> really?
23:51:49 <augur> nonsense.
23:52:05 <monqy> words are confusing
23:52:15 <pikhq> augur: "Different->oh that's different->wait, you said 'color'? fuck you"
23:52:33 <elliott> augur: the question is whether we have an intuitive sense of colour really...
23:52:33 <augur> pikhq: eh
23:52:39 <elliott> as in, differing from things just looking different
23:52:50 <augur> elliott: well, yes obviously you would do this with people who know what color is :P
23:52:57 <elliott> augur: har har
23:53:01 <elliott> augur: but i mean like what with the "name the colours of these words that are names of other colours" thing
23:53:09 <elliott> i dunno if we're so good at colours :P
23:53:21 <augur> elliott: oh yes but thats a very different task
23:53:24 <Ngevd> Colours come from language
23:53:32 <augur> all that shows is interference between description and reading
23:53:35 <augur> people are more inclined to read
23:53:50 <augur> just because the linguistic aspect is so dominant, while color description is not
23:53:58 <augur> but people can still describe colors
23:54:01 <augur> its not like they cant
23:54:12 <elliott> i cant describe colours what is purple??
23:54:14 <augur> and if you give someone as long as they want to answer, they're not going to pick the fuck rectangle
23:54:18 <augur> elliott: its purple!
23:54:20 <augur> you just said!
23:54:35 <elliott> THAT'S A WORD NOT A DESCRIPTION
23:54:43 <monqy> description word
23:54:44 <augur> same thing
23:54:44 <elliott> Also how do you distinguish a fuck rectangle from a regular rectangle.
23:54:53 <monqy> the fuck
23:54:57 <augur> elliott: by whether or not a dick is on it
23:54:58 <augur> obviously
23:55:12 <elliott> dectangle
23:55:19 <PlacentaProphet> elliott: is there any more relevant code? for example, the code that's passing shit to the sending code?
23:55:38 <elliott> PlacentaProphet: that's called `an irc server'
23:55:43 <elliott> Well, multibot
23:55:48 <elliott> multibot ain't broken because see HackEgo here
23:55:58 <augur> elliott: dicktangle
23:56:11 <elliott> PlacentaProphet: But like I said, the channel comes in as the /first/ list element
23:56:15 <elliott> Which never, ever happens with that sending code
23:56:16 -!- copumpkin has quit (Read error: Connection reset by peer).
23:56:41 -!- copumpkin has joined.
23:56:41 <PlacentaProphet> elliott: so like, you printed what the sender sends, and then printed what the receiver receives
23:56:44 <PlacentaProphet> and....
23:56:46 <PlacentaProphet> they're different?
23:56:57 <elliott> I haven't traced the sender yet because it's literally impossible for it to be breaking but fiiiiiiine.
23:57:05 <PlacentaProphet> elliott: DO IT
23:57:13 <PlacentaProphet> NOTHING IS IMPROSEBLE
23:59:32 <PlacentaProphet> # 60 = `
23:59:36 <PlacentaProphet> wat
23:59:43 <monqy> 60 = `
2011-11-14
00:00:12 <Ngevd> I may make a Piet-like language with pure functions
00:00:28 <elliott> !python ord(60)
00:00:32 <EgoBot> Traceback (most recent call last):
00:00:32 <elliott> um
00:00:39 <elliott> !python print chr(60)
00:00:39 <Ngevd> > ord 60
00:00:39 <EgoBot> ​<
00:00:39 <monqy> thanks python
00:00:40 <lambdabot> No instance for (GHC.Num.Num GHC.Types.Char)
00:00:40 <lambdabot> arising from the literal `6...
00:00:47 <Ngevd> > chr 60
00:00:48 <lambdabot> '<'
00:00:50 <elliott> Wait, what
00:00:52 <elliott> !python print chr(0x60)
00:00:52 <EgoBot> ​`
00:00:54 <elliott> There :P
00:01:03 <PlacentaProphet> uh....
00:01:07 <Ngevd> > chr 6*16
00:01:08 <lambdabot> No instance for (GHC.Num.Num GHC.Types.Char)
00:01:08 <lambdabot> arising from the literal `1...
00:01:12 <PlacentaProphet> okay? why is that a comment?
00:01:16 <Ngevd> > chr (6*16)
00:01:17 <lambdabot> '`'
00:01:36 <elliott> PlacentaProphet: Because
00:01:38 <elliott> `poop
00:01:39 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: poop: not found
00:01:46 <fizzie> ^chr 96
00:01:46 <fungot> `
00:01:48 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
00:02:05 <elliott> PlacentaProphet: It's in tr_60.cmd
00:02:24 <elliott> Gregor: btw what does the tr actually stand for
00:02:31 <Ngevd> One step no darker -> id
00:02:37 <Ngevd> One step one darker -> const
00:02:44 <oerjan> <augur> would you be inclined to point to the rectangle <-- i would be inclined to say that vision has enough unintuitive illusions that i wouldn't try and guess the result by reasoning.
00:02:45 <Ngevd> One step two darker -> ap
00:02:45 <elliott> hi Ngevd
00:02:50 <Ngevd> Hello
00:02:56 <augur> oerjan: :P
00:02:57 <Ngevd> I have been here for a while
00:03:08 <augur> oerjan: im just incredibly skeptical that people would do that
00:03:11 <Ngevd> Thinking of a Piet-like language with pure functions
00:03:18 <augur> whereas someone on reddit is certain people would
00:04:05 <Ngevd> It will also be self-modifying
00:04:07 <pikhq> Yeah, that's the sort of thing where the only way to be certain would involve actually doing the study.
00:04:23 <elliott> And disguising it so people don't hesitate for five minutes :P
00:05:15 <PlacentaProphet> anyway that study is stupid.
00:05:25 <PlacentaProphet> elliott: so is the sender sending the thing that the receiver is receiving
00:05:28 <Ngevd> With two stacks
00:05:29 <PlacentaProphet> this is a good first step.
00:05:33 <augur> pikhq: well i'd do the study if i could
00:05:33 <elliott> Ask Gregor/
00:05:37 <elliott> s/\//./
00:05:38 <Ngevd> One with bignums, one with functions
00:06:01 <PlacentaProphet> @ask Gregor so is the sender sending the thing that the receiver is receiving
00:06:02 <lambdabot> Consider it noted.
00:07:42 -!- Ngevd has quit (Quit: long shot but fungot).
00:08:22 <PlacentaProphet> elliott: also I'm pretty sure you don't have to declare commit_queue global
00:08:29 <elliott> Yes but I wanted to.
00:08:58 <PlacentaProphet> whatever lets you sleep at night.
00:09:07 <elliott> Too late, I used Python.
00:10:37 -!- Haschim has joined.
00:10:50 <PlacentaProphet> also Transaction could just inherit from Thread and then you don't need to define your own start.
00:10:53 <PlacentaProphet> but whatever
00:11:19 <PlacentaProphet> I suppose the debugging output is handy.
00:13:08 <PlacentaProphet> command += ['-R', hackenv] I am led to believe that .extend() is faster than += on lists. this is a matter of grave importance.
00:13:13 <pikhq> augur: Seems like a lot of effort just to show up a random guy on Reddit, though. :P
00:13:34 <augur> pikhq: well, its part of a bigger discussion regarding color perception
00:13:35 <PlacentaProphet> elliott: obviously I've reduced my efforts to nitpicking your code since I have no clue what is actually causing the bug.
00:13:40 -!- Haschim has left.
00:13:42 <elliott> PlacentaProphet: Wait, wait, let me try to care: HNNNNNNNG can't.
00:13:44 <augur> pikhq: dealing with some very subtle issues
00:13:52 <augur> really, i want to talk to some himba speakers
00:13:56 <augur> but thats not possible.
00:14:08 <PlacentaProphet> command += list(args)
00:14:11 <PlacentaProphet> this is so wasteful
00:14:13 <PlacentaProphet> in so many ways.
00:14:26 <PlacentaProphet> command.extend(args) bam!
00:15:01 <elliott> PlacentaProphet: args is a tuple.
00:15:13 <PlacentaProphet> that's fine.
00:15:13 <pikhq> augur: Yeah, color perception is hella weird. You'd know better than I, of course.
00:15:17 <PlacentaProphet> tuples are iterable
00:15:21 <PlacentaProphet> extend works on any iterable.
00:15:33 <augur> pikhq: no, its actually not very weird, not in regards to what im talking about anyway
00:16:01 <elliott> PlacentaProphet: Join #hackbotloony
00:16:02 <pikhq> Well, it just seems weird that it's to an extent affected by language.
00:16:04 <elliott> Spam it
00:16:10 <augur> pikhq: the issue is more that people don't understand that translations aren't perfect, and so relying on translations when doing science is very bad
00:16:11 <pikhq> You'd think that, e.g. "blue" would be a universal concept.
00:16:22 <augur> pikhq: no, its not affected by language
00:16:31 <PlacentaProphet> elliott: BAHAHAHA DUCK TYPING BITCH
00:16:32 <pikhq> augur: Okay, maybe I'm describing this wrong.
00:16:36 <PlacentaProphet> TUPLES QUACK LIKE ITERABLES DAWG.
00:16:37 <augur> no you're not
00:16:47 <augur> you're just mislead by fluff popsci crap
00:17:01 <PlacentaProphet> Python should have a quacks like keyword operator
00:17:12 <PlacentaProphet> if tuple quacks like iter:
00:17:14 <pikhq> augur: But, e.g. Japanese "aoi", though usually translated as "blue" really can't be translated that naively.
00:17:21 <augur> sure
00:17:22 <elliott> PlacentaProphet: You are not spamming.
00:17:31 <augur> and?
00:17:37 <pikhq> It refers to things that are blue, sure, but on the other hand it can refer to some things we'd consider green.
00:17:41 <pikhq> And that seems rather strange.
00:17:44 <PlacentaProphet> elliott: should I be?
00:17:51 <PlacentaProphet> oh
00:17:53 <PlacentaProphet> yes.
00:17:56 <augur> yes i suppose it "seems rather strange"
00:18:08 -!- ais523 has quit (Remote host closed the connection).
00:18:13 <augur> i mean, it doesnt seem strange to me, but whatever
00:18:45 <pikhq> I guess what I'm really coming down to is "language works differently than the layman expects it to".
00:18:53 <augur> thats true
00:18:57 <augur> but
00:19:02 <augur> anyway.
00:19:12 <pikhq> Anyway, bit of a tangent. Whoooo.
00:23:17 -!- pkzip1 has joined.
00:23:38 -!- pkzip1 has left.
00:24:40 -!- elliott has quit (Remote host closed the connection).
00:25:16 -!- elliott has joined.
00:29:39 -!- evincar has joined.
00:29:45 <oerjan> > odd . floor $ tan 1.57
00:29:47 <lambdabot> True
00:30:36 <augur> pikhq: the real problem, i find, is twofold
00:30:48 <augur> one, people love this popular whorfian bullshit
00:30:58 <augur> and they find any excuse to believe it
00:31:00 <augur> for some fucking reason
00:31:09 <oerjan> that's why they're all learning klingon.
00:31:15 <augur> two, people don't realize that words dont always mean the same thing to everyone else
00:31:37 <evincar> What? People still believe in linguistic relativity? :(
00:31:46 <monqy> hi
00:32:02 <augur> evincar: usually just mild forms of it, but yes
00:32:14 <pikhq> Man, freaking Sapir-Whorf.
00:32:23 <oerjan> evincar: i got a question about number of words for snow on a quiz just the other day.
00:32:28 <evincar> Well, there are some limited situations in which it can be shown to apply...
00:32:34 <oerjan> strangely, for sami, not eskimo.
00:32:42 <pikhq> Particularly as presented in 1984. Newspeak was such a dumb idea.
00:32:52 <evincar> According to an article I read once, English has more words for snow-related things than Inuit or whatever.
00:32:53 <augur> evincar: if by "apply" you mean "imperceptably", yes.
00:33:10 <evincar> If you count sleet, hail, etc.
00:33:16 <evincar> English has a lot of words in general.
00:33:21 <evincar> So that's unsurprising.
00:33:24 <pikhq> "Thoughtcrime is doubleplusgood" Seriously, Orwell? You thought that couldn't be done?
00:33:30 <augur> and if by "apply" you mean "only when doing language tasks", yes
00:33:47 <pikhq> Anyways: it's not like neologisms are *uncommon*.
00:33:49 <augur> pikhq: E-prime pisses me off
00:34:06 <augur> oh your language lacks a copula, therefore it prevents people from expressing opinion as fact
00:34:09 <augur> no
00:34:10 <augur> no it doesnt
00:34:14 <augur> you piece of shit
00:34:16 <augur> liar
00:34:19 <evincar> Hah.
00:34:20 <augur> child rapist, you
00:34:27 <pikhq> If a speaker of a language doesn't have a word for a concept, but needs to talk about that concept, they will *make something up*.
00:34:44 <evincar> I want to hear you call Benjamin Whorf a child rapist.
00:34:44 <oerjan> pikhq: obviously in oceania, neologisms are treason.
00:34:49 <evincar> And record it and
00:34:52 <evincar> watch it over and over.
00:34:55 <augur> evincar: benjamin whorf isnt the e-prime guy
00:34:56 <augur> but
00:35:00 <PlacentaProphet> pikhq: you have too much faith in the creativity of the average person.
00:35:01 <pikhq> oerjan: Eh, in Oceania everything's treason anyways.
00:35:19 <augur> PlacentaProphet: even without neologisms, you have periphrasis
00:35:47 <PlacentaProphet> well yes.
00:36:47 <PlacentaProphet> my understand was that the Sapir-Whorf hypothesis claimed that using a particular language resulted in thinking about things /differently/, not necessarily that things can become /impossible/ to express.
00:37:09 <evincar> That's right.
00:37:10 <oerjan> <augur> oh your language lacks a copula, therefore it prevents people from expressing opinion as fact <-- i could imagine a language with some kind of evidentials so that you could not confuse opinion with fact without outright lying...
00:37:12 <pikhq> PlacentaProphet: The strong form of the hypothesis makes the claim that things can become impossible to express.
00:37:15 <evincar> But Orwell took it into fictionland.
00:37:44 -!- tiffany has quit (Quit: nyu~).
00:37:50 <oerjan> it might not actually exist, or be stable, but i could imagine it.
00:37:50 <evincar> oerjan: We imagine languages all the time that don't actually exist.
00:37:54 <pikhq> The strong form of the hypothesis, of course, is incredibly bullshit.
00:38:31 <augur> oerjan: that language is called Quechua
00:38:33 <augur> and you dont have to lie
00:38:36 <augur> you just have to be wrong
00:38:47 <augur> or not understand that your opinion isnt fact
00:38:48 <PlacentaProphet> a language as a map of words to meanings could, at a single point in time, be unable to express a word. of course in practice this is not how languages work.
00:39:13 <PlacentaProphet> and this is not certainly how the human brain works.
00:39:15 <Vorpal> elliott, this is oblivion: http://deadendthrills.com/wp-content/uploads/2011/06/Oblivion-2011-06-07-23-56-58-24.jpg
00:39:18 <Vorpal> I don't believe that
00:39:27 <elliott> Oblivion with at housand mods :P
00:39:31 <augur> thats not oblivion
00:39:34 <elliott> s/at housand/a thousand/
00:39:39 <augur> unless that.
00:39:47 <Vorpal> augur, exactly what elliott said
00:39:50 <Vorpal> I just want those mods
00:40:00 <Vorpal> he doesn't list them
00:40:00 <augur> you just wanna jerk off to that chick
00:40:04 <Vorpal> XD
00:40:05 <PlacentaProphet> and this is not certainly how the human brain works Morrowind that give it Oblivian-esque graphics
00:40:08 <elliott> http://deadendthrills.com/?cat=141
00:40:12 <PlacentaProphet> I wouldn't be surprised if such mods existed in Oblivion.
00:40:20 <PlacentaProphet> lol wat
00:40:25 <elliott> <PlacentaProphet> and this is not certainly how the human brain works Morrowind that give it Oblivian-esque graphics
00:40:26 <elliott> what
00:40:35 <PlacentaProphet> I must have pressed up at some point :P
00:40:38 <Vorpal> augur, speaking of which... Apparently there is already a "naked female" skyrim mod....
00:40:49 <Vorpal> I'm not going to try it :P
00:40:51 <PlacentaProphet> there are mods in Morrowind that give it Oblivian-esque graphics
00:40:56 <PlacentaProphet> I wouldn't be surprised if such mods existed in Oblivion.
00:40:59 <PlacentaProphet> is what I meant to say.
00:41:01 <elliott> oblivian
00:41:03 <elliott> totally a word
00:41:14 <PlacentaProphet> yeah dude.
00:41:19 <PlacentaProphet> a NEOLOGISM
00:41:26 <PlacentaProphet> WHAT NOT STRONG SAPIR-DORF
00:41:32 <PlacentaProphet> s/not/now/ :P
00:41:36 <oerjan> elliott: don't be obsidious
00:41:37 <Vorpal> elliott, I need to see if he did any morrowind
00:41:52 <Vorpal> because... vanilla morrowind is /ugly/
00:41:53 <elliott> Vorpal: use url hax
00:41:54 <elliott> that's what i did
00:42:12 <elliott> http://deadendthrills.com/category/the-elder-scrolls-iii-morrowind/
00:42:14 <elliott> not under that name
00:42:25 <elliott> no search results for it
00:42:29 <elliott> so SORRY NOPE
00:43:09 <Vorpal> elliott, what about witcher 2?
00:43:26 <elliott> Vorpal: Googling showed up http://www.flickr.com/photos/futurilla/3200260681/ only, which is part of a GROUP called Dead End Thrills :P
00:43:36 <elliott> Which I suspect is just run by random people ripping it off.
00:44:03 <elliott> Vorpal: Apparently not! Going by EXTREMELY RELIABLE URL HAX.
00:44:12 <Vorpal> XD
00:44:19 <Vorpal> the on-site search seems broken
00:45:12 <elliott> http://deadendthrills.com/?s=skyrim ;; not too broken
00:47:43 <Vorpal> hm now it works
00:47:44 <Vorpal> weird
00:48:07 <Vorpal> yeah no witcher 2
00:49:30 <Vorpal> elliott, oh and a lot of the visual impressiveness in witcher 2 is dynamic effects
00:49:40 <Vorpal> the way plants move in the wind. The motion blur
00:49:43 <Vorpal> stuff like that
00:49:46 <elliott> Not as good as ELLIOTTCRAFT.
00:49:55 <Vorpal> :P
00:49:59 <elliott> Elliottcraft has dynamic... POLYGONS...
00:50:05 <Vorpal> and?
00:50:18 <Vorpal> elliott, but really, what do you mean?
00:50:21 <oerjan> departed parrots
00:50:30 <elliott> Vorpal: Dynamic... DYNAMISM
00:50:34 <Vorpal> elliott, and is it available yet?
00:50:43 <elliott> YES.
00:50:46 <monqy> in our hearts
00:50:48 <Vorpal> elliott, I only consider released games you see
00:50:58 <evincar> Higher-Order Perl is an enjoyable read. I can't believe I hadn't gotten around to it.
00:51:17 <monqy> sounds like a cakeprophet thing
00:52:44 <elliott> monqy: no its mark j dominus hes a good person
00:53:05 <monqy> and kaceprophet isnt? :o
00:53:31 <elliott> of course not
00:53:43 <monqy> maybe I willl read higher-order perl sometime when i am not killing myself over this awful python
00:53:51 <monqy> which i have to
00:53:52 <PlacentaProphet> functional perl is the best perl.
00:53:52 <monqy> work with
00:54:23 <elliott> http://hop.perl.plover.com/book/pdf/HigherOrderPerl.pdf
00:54:26 <elliott> yuo're wlecome
00:54:45 <PlacentaProphet> elliott: nice googling
00:54:48 <elliott> `yes yes
00:54:51 <HackEgo> yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes \ yes
00:54:57 <monqy> yes
00:55:01 <monqy> `yes no
00:55:03 <HackEgo> no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no \ no
00:55:06 <monqy> no
00:55:47 <evincar> Chapter 6 is interesting. Infinite Streams.
00:55:50 <PlacentaProphet> none of these chapter titles look interesting.
00:55:57 <PlacentaProphet> oh okay
00:56:00 <PlacentaProphet> that's kind of interesting.
00:56:05 <PlacentaProphet> my guess is that it uses ties?
00:56:09 <evincar> I wonder why more garbage-collected languages don't use laziness. It's so convenient.
00:56:23 <evincar> No, it's just another name for infinite lists.
00:56:25 <monqy> makes side-effects even more confusing?
00:56:37 <PlacentaProphet> evincar: ...I, yes I know, but those don't exist in Perl normally
00:56:38 <evincar> Solution: avoid side-effects.
00:56:52 <PlacentaProphet> so I assume it uses ties to implement them?
00:57:09 <monqy> but everyone is too awful to avoid side-effects
00:57:11 <evincar> No, regular old cons-lists with promises.
00:57:43 <evincar> E.g. node($head, promise { $rest })
00:58:47 <PlacentaProphet> that works I guess.
00:59:38 <evincar> Could be prettier. So could the rest of Perl.
00:59:53 <PlacentaProphet> I believe you could use ties to make infinite lists look like normal Perl lists.
01:00:23 <evincar> Probably. I've never had need to mess with ties.
01:00:58 <PlacentaProphet> it essentially just lets you override things like variable assignment and indexing and stuff.
01:01:27 <PlacentaProphet> because Perl kind of sort of doesn't make sense like that.
01:04:28 <PlacentaProphet> http://search.cpan.org/~lbrocard/Language-Functional-0.05/Functional.pm
01:05:49 <PlacentaProphet> http://search.cpan.org/~asg/List-Gen-0.974/lib/List/Gen/Haskell.pm
01:05:50 <elliott> WELCOME BACK IOCCC <3 <3 <3
01:06:00 <oerjan> wut
01:06:08 <elliott> http://www.ioccc.org/2011/rules.txt
01:06:28 <PlacentaProphet> yessss
01:06:41 <evincar> Crap, I was gonna announce that. :(
01:06:43 <oerjan> i guess it really _is_ the end times.
01:06:44 <evincar> Spaced it.
01:07:25 <elliott> how can you announce something that happened two days ago.
01:11:13 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
01:12:02 <evincar> You seem to have done it just fine.
01:12:06 <evincar> Besides, I just found out about it today on HN.
01:17:46 <elliott> oerjan: hi can i prod you with haskell data structure questions
01:19:07 <variable> elliott: :)
01:19:18 <elliott> hi variable did i say variable
01:21:46 <elliott> oerjan: You suuuck
01:23:15 <oerjan> *WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH* elliott says i suck *WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH*
01:23:26 <elliott> oerjan: hi you won't suck if you answer my questioneitonstonis :DDD
01:23:32 <oerjan> oh
01:26:29 -!- Darth_Cliche has joined.
01:26:31 <oerjan> well clearly the answer is to use a phantom type as a monad^Wapplicative transformer indexed over a general topos prepromorphism.
01:26:44 <elliott> oerjan: NO LIST,EN
01:26:54 <oerjan> no list, check.
01:26:56 <monqy> no list, en
01:27:12 <monqy> whos en
01:27:24 <elliott> oerjan: I want a tree map (I'd go for HashMap usually) from a small (a pair of integers from 0 to 15 (inclusive), i.e. 256 values in total) key to values
01:27:25 <elliott> but
01:27:28 <elliott> every key has a value
01:27:30 <elliott> there are no unset keys
01:27:35 <elliott> and im just wondering if... there'd be a good
01:27:38 <elliott> way to structure this apart from the obvious
01:28:16 <oerjan> that small? an array.
01:29:18 <oerjan> or wait, you want efficient modification?
01:29:28 <elliott> oerjan: yes, it will be modified semi-frequently
01:29:33 <elliott> although not as much as it's looked up
01:29:52 <elliott> oerjan: I suppose a vector would still be a decent choice, but it's 256*4 = 1024 bytes
01:30:00 <elliott> and copying a kilobyte on every modification doesn't sound like fun
01:30:04 <elliott> even if they are relatively infrequent
01:32:16 <elliott> oerjan: hmm wait
01:32:16 <oerjan> well a trie maybe?
01:32:27 <elliott> oerjan: the keyspace might actually be more like 16,384
01:32:57 <elliott> so 65536 bytes unpacked
01:33:02 <elliott> oerjan: what I could do is a boxed vector of 128 unboxed vectors of 128 Int32s
01:33:24 <elliott> oerjan: that's reallocating 512 bytes for each modification
01:33:31 <oerjan> mhm
01:33:33 <elliott> while having cheap lookup (three pointer dereferences)
01:33:36 <elliott> (or thereabouts)
01:34:05 -!- derdon has quit (Remote host closed the connection).
01:34:07 <oerjan> this sounds like it needs profiling to find out what actually _is_ the most efficient branching...
01:34:29 <elliott> oerjan: well it'd be 128x128
01:34:32 <elliott> i.e. two coordinates of 0 to 127
01:34:37 <elliott> so there's not really any other reasonable branching
01:34:42 <elliott> it'd be pointless arithmetic
01:34:46 -!- derdon has joined.
01:34:58 -!- derdon has quit (Remote host closed the connection).
01:35:37 <evincar> You sound like you want a deque.
01:35:45 <oerjan> oh well then you have your answer then.
01:36:01 <elliott> evincar: uhhhhh what
01:36:32 <PlacentaProphet> > foldr (flip const) [1,2,3,4]
01:36:33 <lambdabot> Overlapping instances for GHC.Show.Show ([a] -> [t])
01:36:33 <lambdabot> arising from a use ...
01:36:38 <PlacentaProphet> > foldr1 (flip const) [1,2,3,4]
01:36:40 <lambdabot> 4
01:37:30 <oerjan> > foldr1 const [1,2,3,4]
01:37:31 <lambdabot> 1
01:37:38 <PlacentaProphet> so good
01:37:41 <elliott> Gregor: Just use my secret exploit to hack your server to death hahahahahaha
01:37:46 <copumpkin> now use foldr to get tail
01:37:47 <copumpkin> or init
01:38:04 <PlacentaProphet> copumpkin: type error
01:38:14 <copumpkin> not really
01:38:15 <copumpkin> you can do it
01:38:20 <copumpkin> it's just inefficient
01:38:21 <PlacentaProphet> uh..
01:38:24 <PlacentaProphet> :t tail
01:38:24 <elliott> you can get any list function with foldr
01:38:25 <lambdabot> forall a. [a] -> [a]
01:38:25 <elliott> obviously
01:38:33 <PlacentaProphet> :t foldr
01:38:34 <lambdabot> forall a b. (a -> b -> b) -> b -> [a] -> b
01:38:45 <PlacentaProphet> not without doing some kind of mangling beforehand, right?
01:38:59 <elliott> what do you mean
01:39:15 <PlacentaProphet> foldr returns one value of type whatever-is-in-the-list
01:39:20 <PlacentaProphet> tail returns a list.
01:39:30 <PlacentaProphet> you need to do something to the input list first
01:39:32 <oerjan> no, foldr can return any type
01:39:37 <PlacentaProphet> oh right.
01:39:37 <PlacentaProphet> :P
01:39:39 <PlacentaProphet> I see.
01:39:56 <copumpkin> doing an unsafe tail seems tricky though
01:40:03 <copumpkin> safeTail is fairly straightforward
01:41:20 <PlacentaProphet> I can't figure it out. :P
01:41:36 <oerjan> you probably need some mangling afterwards
01:41:59 <PlacentaProphet> I don't know how to say "dear foldr: ignore the first element but everything else is cool, k"
01:42:53 <copumpkin> > foldr (\x -> maybe (Just []) (Just . (x:))) Nothing [1..5]
01:42:55 <lambdabot> Just [1,2,3,4]
01:43:11 <PlacentaProphet> foldr (\x -> maybe (Just []) (Just . (x:))) Nothing [1..5]
01:43:14 <PlacentaProphet> bah
01:43:19 <elliott> haha
01:43:19 <PlacentaProphet> foldr (\x -> maybe (Just []) (Just . (x:))) Nothing []
01:43:21 <PlacentaProphet> > foldr (\x -> maybe (Just []) (Just . (x:))) Nothing []
01:43:23 <lambdabot> Nothing
01:43:30 <PlacentaProphet> > fromJust $ foldr (\x -> maybe (Just []) (Just . (x:))) Nothing []
01:43:31 <lambdabot> *Exception: Maybe.fromJust: Nothing
01:43:33 <PlacentaProphet> unsafe tail
01:43:45 <copumpkin> :)
01:43:53 <copumpkin> I meant more in the sense of not having to post-process it
01:44:04 <oerjan> that was init, not tail
01:44:06 <shachaf> copumpkin: Isn't that ignoring the last element?
01:44:11 <elliott> oh, so it was
01:44:14 <monqy> safe tail? is that anything like drop 1?
01:44:22 <elliott> monqy: no its [a] -> Maybe a
01:44:23 <PlacentaProphet> contrary to popular belief, I do not actually read anything.
01:44:25 <monqy> oh
01:44:29 <PlacentaProphet> I just divine information with psychic powers
01:44:29 <shachaf> monqy: No, that loses information.
01:44:31 <PlacentaProphet> sometimes it's a little off.
01:44:42 <monqy> elliott: that looks like safe head...
01:44:50 <PlacentaProphet> safe head is boring head, imo.
01:45:02 <monqy> im confuse :(
01:45:05 <elliott> monqy: um
01:45:06 <elliott> [a]
01:45:09 <oerjan> it's fairly obvious that you _cannot_ do tail as a straight foldr over the list with no post- or preprocessing.
01:45:09 <copumpkin> shachaf: yes, it is
01:45:31 <oerjan> because the tail of the tail does not contain enough information to reconstruct the tail itself
01:46:01 <shachaf> oerjan: ?
01:46:16 <PlacentaProphet> lists are like animals but instead of normal animal tails they have TAILS THAT ARE ANIMALS.
01:46:19 <PlacentaProphet> with tails
01:46:22 <shachaf> The point of tail is that you don't have enough information to reconstruct the thing you tailed.
01:47:04 <oerjan> shachaf: if tail l = foldr f x l for some f and x, then ys = tail (y:ys) = f y (tail ys)
01:47:25 <elliott> hmph, Vectors need better type names
01:47:37 <oerjan> which is absurd because the rightmost expression does not contain the information of ys's first element
01:47:50 <elliott> hmm maybe I can use Data.Vector.Generic
01:48:03 <elliott> hmph, no specialize pragmas
01:48:04 <oerjan> so you cannot write tail that way.
01:48:14 <PlacentaProphet> there should be some kind of list where tail does not remove any information. I'll call it: a zipper
01:49:14 <evincar> Genius.
01:50:17 <PlacentaProphet> is there a standard lib zipper? if not, why not?
01:50:24 <PlacentaProphet> I don't think I've encountered one.
01:50:48 <shachaf> oerjan: I see.
01:51:28 <oerjan> > snd $ foldr (\x (xs, txs) -> (x:xs, xs)) ([], undefined) [1,2,3,4]
01:51:29 <lambdabot> [2,3,4]
01:51:43 <PlacentaProphet> awww yeah
01:51:47 <PlacentaProphet> zipper fold thing
01:52:45 <PlacentaProphet> I would safely conclude that snd does not count as "postprocessing"
01:53:05 <oerjan> erm i count it as such :P
01:54:04 <oerjan> btw this is similar to the trick for implementing decrement in lambda calculus with church numerals
01:54:47 -!- pkzip has joined.
01:55:04 <elliott> Deewiant: Which would you say is more common: Program accessing locations near (0,0), or programs accessing locations near the IP
01:55:14 -!- pkzip has left.
01:56:19 <elliott> pkzip is going to keep joining here forever
01:56:23 <elliott> and never figure out how to stop it autojoining
01:58:58 <oerjan> > let church n f x = iterate f x !! n; inc n f x = n f (f x); dec n f x = snd $ n (\(x, dx) -> (inc x, x)) (church 0, undefined) in dec (church 4) (+1) 0 -- i wonder if this types in haskell...
01:58:59 <lambdabot> Overlapping instances for GHC.Show.Show ((t -> t) -> t -> t)
01:58:59 <lambdabot> arising fro...
01:59:07 <oerjan> gah
01:59:23 <oerjan> oh hm
01:59:34 <oerjan> silly me
02:00:30 <oerjan> > let church n f x = iterate f x !! n; inc n f x = n f (f x); dec n f x = snd $ n (\(y, dy) -> (f y, y)) (x, undefined) in dec (church 4) (+1) 0 -- i wonder if this types in haskell...
02:00:31 <lambdabot> 3
02:02:31 -!- PlacentaProphet has quit (Ping timeout: 255 seconds).
02:04:57 <SgeoN1> It can't hurt to practice making variadic functions by hand, can it?
02:05:06 <elliott> in what language
02:05:16 <elliott> fizzie: Stop me from making the same mistake mcmap did, please.
02:05:16 <oerjan> SgeoN1: you might get rsi
02:05:32 <SgeoN1> elliott, Haskell
02:05:46 <elliott> SgeoN1: let me help you out: never write, never use variadic functions
02:06:02 <elliott> there is exactly one variadic function anyone uses and it's printf, and even then most people avoid it, this is because it freaking sucks because it's dynamically typed
02:06:32 <SgeoN1> The dynamic typing has nothing to do with it being variadic, I thought
02:06:48 <elliott> SgeoN1: So you want variadic functions that take only one argument type? That wouldn't be dynamic.
02:06:50 <elliott> Let me tell you how to do that.
02:06:53 <elliott> f :: [Type] -> Result
02:07:01 <elliott> Advanced technology!
02:07:20 <SgeoN1> elliott, is playing around a sin in your world?
02:07:49 <elliott> Usually you "practice" something in order to be better at doing it so that you can do it for real later.
02:08:08 <SgeoN1> Also, Oleg has examples of strongly typed useful variadic functions, but I doubt I'd be able to write such
02:08:15 <oerjan> the dynamicity is only needed because the format string is a value not giving its natural type, it has nothing to do with the variable number of the rest of the arguments
02:08:56 <elliott> oerjan: yes, but can you come up with a useful, non-dynamic, non-single-argument-type variadic function?
02:09:02 <elliott> it's contrived
02:10:09 <SgeoN1> elliott needs to read more Oleg. Although I'm not sure if Oleg ever said anything about usefulness
02:10:18 <elliott> I have read plenty of Oleg.
02:12:20 -!- tiffany has joined.
02:14:07 <shachaf> elliott: Not enough.
02:14:21 <elliott> :-(
02:14:31 <shachaf> Didn't Oleg write an operating system once?
02:14:51 <shachaf> @ is surely superior, though.
02:15:57 <elliott> There's a C++ kernel thing on his site? I think it's just a toy though.
02:16:03 <SgeoN1> I have one variadic function I want to write
02:16:21 -!- CakeProphet has joined.
02:16:21 -!- CakeProphet has quit (Changing host).
02:16:21 -!- CakeProphet has joined.
02:16:36 <shachaf> An implemented toy is clearly far worse than an unimplemented toy. :-)
02:16:37 <SgeoN1> Not sure if I can, or, if it's doable, whether someone else already has
02:16:40 <elliott> SgeoN1: What is it.
02:16:51 <elliott> shachaf: @ ISN'T A TOY TAKE THAT BACK OR I'LL KILL YOUUUUUUUUUUU
02:16:53 <shachaf> In what language?
02:16:54 <SgeoN1> liftAn
02:17:04 <shachaf> SgeoN1: Look up "idiom brackets".
02:17:19 <shachaf> http://www.haskell.org/haskellwiki/Idiom_brackets
02:18:02 <CakeProphet> bah, can't use tabs in gnome-terminal with irssi
02:18:07 <CakeProphet> gnome-terminal steals alt+N
02:18:34 <shachaf> CakeProphet: Disable that.
02:19:05 <SgeoN1> That's subtly different from what I was hoping for, although I guess there may be a reason. I didn't really look that closely
02:19:12 <elliott> shachaf: How's that relevant?
02:19:15 <elliott> Or do you know what SgeoN1 is trying to do.
02:19:15 <CakeProphet> shachaf: how does one accomplish this.
02:19:37 <shachaf> elliott: It accomplishes more or less the same goal as liftAn (it just needs a terminator).
02:19:47 <elliott> shachaf: How do you know he wanted liftA#?
02:20:01 <shachaf> How do I know anything at all?
02:20:05 <elliott> Deep.
02:20:09 * shachaf is omniscient, that's how.
02:20:18 <SgeoN1> elliott, what else could I have meant by writing liftAn and not explaining further?
02:20:22 <CakeProphet> elliott: you raise some interesting philosophical questions.
02:20:38 <elliott> SgeoN1: You didn't.
02:20:44 <elliott> Oh, you did.
02:20:46 <shachaf> SgeoN1: It could be "lift, but only for indefinite nouns that start with a glottal stop".
02:21:48 <SgeoN1> Why do idiom brackets need a terminator?
02:22:21 <shachaf> To know when the thing has terminated.
02:22:54 <SgeoN1> I should probably read the thing
02:23:40 <elliott> :t divMod
02:23:41 <lambdabot> forall a. (Integral a) => a -> a -> (a, a)
02:23:50 <elliott> SgeoN1: Because otherwise it's ambiguous.
02:23:55 <elliott> Also, it'd be really ugly without a terminator.
02:25:52 <SgeoN1> To use or to write?
02:26:05 <SgeoN1> Because usage of a terminator is ugly to me
02:26:19 <CakeProphet> both
02:26:25 <CakeProphet> because impossible is ugly.
02:26:46 <elliott> (| getFoo + getBar |) is perfectly nice.
02:28:11 <CakeProphet> SgeoN1: http://www.amateurtopologist.com/blog/2010/01/12/variadic-functions-in-haskell/
02:28:17 <shachaf> elliott: Challenge: A version of iI Ii that works with infix operators.
02:28:29 <elliott> shachaf: No, iI Ii is hideous.
02:28:51 <shachaf> (+) (iI fx) (fy Ii) -- OK, maybe not.
02:28:59 <shachaf> elliott: #define (| iI
02:29:00 <SgeoN1> Hmm, that page has a use case that goes beyond liftAn. I wonder if that restricted the solution spsce
02:29:09 <shachaf> (| f blah hmm Ii
02:29:20 <elliott> http://personal.cis.strath.ac.uk/~conor/pub/she/idiom.html (OK, she's additions to idiom brackets may not actually make SgeoN1 think they're less ugly.)
02:29:23 <elliott> Oops
02:29:28 <elliott> s/she's additions/the additions she makes/
02:29:43 <shachaf> Her additions.
02:30:22 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]).
02:30:53 <SgeoN1> I don't see how they work, I guess that's in the paper?
02:31:00 <SgeoN1> Nestibility is good though
02:31:43 * shachaf wonders whether iI is nestable.
02:32:30 <oerjan> "Worse, for reasons I have never entirely understood, the type-class hackery doesn't allow these brackets to nest as they should."
02:33:40 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
02:34:12 <oerjan> SgeoN1: terminator is necessary because liftAn f x y z is a legal complete use whenever liftAn f x y z w is. (each additional argument is just applied with <*>.)
02:35:42 <oerjan> :t \f x y z w -> (liftA3 f x y z, liftA4 f x y z w)
02:35:43 <lambdabot> Not in scope: `liftA4'
02:35:46 <oerjan> oops
02:36:02 <oerjan> :t \f x y z -> (liftA2 f x y, liftA3 f x y z)
02:36:03 <lambdabot> forall a b (f :: * -> *) c d. (Applicative f) => (a -> b -> c -> d) -> f a -> f b -> f c -> (f (c -> d), f d)
02:37:04 <elliott> <oerjan> "Worse, for reasons I have never entirely understood, the type-class hackery doesn't allow these brackets to nest as they should."
02:37:14 <elliott> SgeoN1: oerjan: um the ones she has nest just fine
02:37:27 <elliott> the stupid typeclass hack on http://www.haskell.org/haskellwiki/Idiom_brackets that McBride disowned don't nest because they're awful :P
02:37:27 <oerjan> ok
02:37:46 <shachaf> McBride disowned it?
02:37:51 <shachaf> Does that mean it's there for the taking?
02:37:52 <oerjan> elliott: well those were what shachaf asked about
02:37:57 <elliott> "For a while, I had a cheeky typeclass hack, but it seemed like overkill, especially as it didn't nest. She now supports a notation which does the job."
02:37:59 <elliott> sounds like disowning to me!
02:38:17 <shachaf> oerjan: Well, it makes sense that they're not nestable.
02:38:33 <shachaf> Unless you use parentheses, that is. I'd be very surprised if they didn't nest even then.
02:39:07 <elliott> oerjan: oh noooooooo my zipper doesn't work
02:39:46 <oerjan> shachaf: i'd assume he meant they don't nest with parentheses
02:39:57 -!- CakeProphet has quit (Remote host closed the connection).
02:40:41 <oerjan> shachaf: presumably trying to infer all the right types goes haywire somehow when there is more than one nesting level
02:40:59 <oerjan> inner ambiguity or something...
02:42:13 <oerjan> perhaps type families might help >:P
02:42:32 <shachaf> oerjan: There's a translation of those things to tpe families somewhere on hpaste.
02:42:41 -!- CakeProphet has joined.
02:42:41 -!- CakeProphet has quit (Changing host).
02:42:41 -!- CakeProphet has joined.
02:42:43 <shachaf> I'd be surprised if it solves any of the actual problems, though.
02:43:08 <shachaf> http://hpaste.org/48964
02:45:32 <CakeProphet> wtf random memory leak.
02:50:55 <SgeoN1> This paper can'tbe right?!?!??! Apllicatives came after arrows?
02:51:08 <elliott> PANIC!?!??!!? FUCKING APNCI!?!?!?!?!?!?!? IIST IMSPOSBIBLE
02:51:09 <elliott> !!!!
02:52:01 <monqy> panice
02:52:17 <elliott> fucking apnic
02:52:20 <oerjan> why is APNIC panicking, they already _did_ run out didn't they?
02:52:53 <CakeProphet> monqy: napcin
02:53:28 <monqy> napcin
02:54:34 <CakeProphet> sigroanneaaaaaaaaaaaaaaaaaaa
02:55:02 <monqy> si groan ea
02:55:04 <oerjan> elliott: is there a link connected to this nonsense?
02:55:16 <CakeProphet> :t fromDyn
02:55:17 <lambdabot> forall a. (Typeable a) => Dynamic -> a -> a
02:55:20 <oerjan> or are you just making random words
02:55:21 <CakeProphet> :t toDynamic
02:55:22 <lambdabot> Not in scope: `toDynamic'
02:55:23 <CakeProphet> :t toDyn
02:55:24 <lambdabot> forall a. (Typeable a) => a -> Dynamic
02:55:47 <CakeProphet> > [toDyn 2, toDyn True, toDyn 'h', toDyn "hello"]
02:55:48 <lambdabot> [<<Integer>>,<<Bool>>,<<Char>>,<<[Char]>>]
02:55:54 <elliott> oerjan: <SgeoN1> This paper can'tbe right?!?!??! Apllicatives came after arrows?
02:55:55 <CakeProphet> Haskell is the best Python.
02:56:04 <monqy> uuugh
02:56:10 <monqy> don't even talk about python
02:56:12 <monqy> weeps to self
02:58:16 <oerjan> elliott: darn, i was hoping for some actual interesting ip news :P
02:58:24 <elliott> oerjan: ilari left :(
02:58:30 <elliott> i miss him and his robotic nature
02:58:51 <elliott> SgeoN1: anyway mcbride invented idioms (applicatives) in... was it 2006?
02:59:05 <elliott> oh ross patterson too
02:59:07 -!- Jafet has joined.
02:59:20 <elliott> hmm, http://www.soi.city.ac.uk/~ross/papers/Applicative.html introducing applicative functors is 2008, but I think the "idiom" name goes back to 2006
02:59:21 <elliott> not sure though
03:00:07 <SgeoN1> Does Haskell have an Applicative definition for all nomads?
03:00:28 <elliott> nomads
03:00:52 <SgeoN1> Monads
03:01:01 <elliott> pure = return; (<*>) = ap
03:01:17 <shachaf> "Applicative" isn't part of Haskell.
03:01:21 -!- CakeProphet has quit (Ping timeout: 245 seconds).
03:01:59 <SgeoN1> elliott, that's great, but is it a default in Haskell, or is the situation like Functors?
03:02:07 <elliott> SgeoN1: Functor is a superclass of Applicative.
03:02:11 <SgeoN1> Shachef, o.O?
03:02:12 <elliott> From this you can derive an answer.
03:02:21 <elliott> shachaf: I don't think it's wrong to consider the base standard library part of Haskell.
03:04:59 <SgeoN1> :(
03:05:30 <Jafet> I don't think it's wrong to consider Glasgow Haskell Haskell.
03:06:01 <elliott> Jafet: base theoretically supports non-ghc compilers :)
03:06:29 <Jafet> In theory, yes. But only the Glasgow Haskell Compiler compiles Glasgow Haskell.
03:15:55 -!- pkzip has joined.
03:17:10 -!- pkzip has quit (Client Quit).
03:17:14 -!- pkzip has joined.
03:19:50 <SgeoN1> I think I see how to implement Dynamics, but
03:19:54 -!- pkzip has left.
03:20:04 <SgeoN1> .. I think it requires OverlappingInstances?
03:20:30 <elliott> no?
03:20:34 <elliott> why would it
03:21:23 <SgeoN1> Two instances, one to say that fromDynamic returns Just whatever, and a more general instance to say it returns Nothing.
03:21:29 <elliott> what
03:21:39 <SgeoN1> I may be approaching it wrong
03:21:50 <elliott> data Dynamic = forall a. (Typeable a) => Dyn a
03:21:53 <elliott> toDyn = Dyn
03:21:59 <elliott> fromDynamic (Dyn a) = cast a
03:22:31 <SgeoN1> That's great, I'm saying if I were to try to implement it mysrlf
03:22:35 <SgeoN1> Myself
03:23:27 <SgeoN1> Without magic Typable, but a typeclass of my own construction
03:24:02 <SgeoN1> Although I'd guess that Typable isn't magic
03:24:08 <shachaf> SgeoN1: Are you going to be using a class isomorphic to Typeable?
03:24:38 <shachaf> The only magic bit about Typeable is that GHC will autoderive instances for you.
03:24:57 <SgeoN1> I don't ... think so? What does Typable provide, because I think I'd need less.
03:25:22 <elliott> SgeoN1: With any typeclass that isn't autoderived, Dynamic gives you unsafeCoerce.
03:25:25 <SgeoN1> Well, myvway would be annoying to write out by hand, yes
03:25:30 <elliott> (This is why people want hand-written Typeable instances banned.)
03:25:56 * shachaf wears a hand-written Typeable instances band!
03:26:01 <shachaf> Wait, or am I *in* one?
03:26:10 <SgeoN1> But does Typable rely on overlapping instances internlally?
03:26:10 -!- GreaseMonkey has quit (Quit: The Other Game).
03:26:39 -!- GreaseMonkey has joined.
03:26:53 <elliott> SgeoN1: No.
03:27:00 <elliott> cast, however, relies on unsafeCoerce.
03:27:12 <elliott> And OverlappingInstances does not let you do what you want.
03:27:13 <SgeoN1> Ah. So, magic
03:27:20 <SgeoN1> It doesn't?
03:28:37 <elliott> It doesn't.
03:32:34 <shachaf> Oleg can decided UndecidableInstances.
03:32:36 * shachaf sighs.
03:32:40 <shachaf> My fingers are useless.
03:32:53 <shachaf> They are clearly not native English speakers.
03:32:56 -!- Aune has quit (Quit: Lmnar).
03:33:05 <SgeoN1> O.o at Undecidable
03:33:34 <SgeoN1> Or is it just that it can't be decided whether typechecking terminates?
03:33:39 <Jafet> I can only type native English.
03:33:41 <SgeoN1> Or somehing
03:40:23 <oerjan> SgeoN1: yeah
03:40:52 <oerjan> now IncoherentInstances, on the other hand, is so evil i'm not even sure what it does.
04:14:15 -!- zzo38 has joined.
04:17:18 <zzo38> My Haskell package (as well as other Haskell packages that were lack generated document at that time) still has no generated documentation.
04:18:05 <zzo38> Actually, I found that one of them has a build failure log. Mine, however, has no log.
04:21:51 -!- copumpkin has changed nick to FUDPAcker.
04:29:08 -!- MDude has changed nick to MSleep.
04:29:32 <elliott> does haddock even support literate haskell
04:30:05 -!- FUDPAcker has changed nick to copumpkin.
04:32:43 <zzo38> I think I read its document it says that it does.
04:33:03 <elliott> ask #haskell
04:33:09 <zzo38> OK
04:51:20 <Deewiant> elliott: If "near" is something like "within 128x128" then I'd say "near the IP"; most programs are smaller than that and in Mycology I try to avoid (0,0).
04:51:42 <elliott> Deewiant: It is pretty much "within 128x128", yes
04:51:48 <elliott> fungot is more closer to (0,0), isn't it?
04:51:49 <fungot> elliott: oh, the swamp of terror, in search of the golden citadel... " no secondary sources of their wealth and power, but i refused. so did the east of paris. made of plaster
04:52:53 <Deewiant> elliott: And re. that list of graphics cards; the guy stopped updating it (along with the whole site) in April.
04:53:58 <elliott> Deewiant: :-(
04:54:27 <elliott> Rest in peace guy -- too cool for this world.
05:05:02 <elliott> :t state
05:05:03 <lambdabot> forall s a. (s -> (a, s)) -> State s a
05:09:50 <SgeoN1> Don't do that, it won't work and also has a 99,98% chance of destroying the earth by summoning time-traveling zygohistomorphisms.
05:10:06 <elliott> what about it
05:10:19 * SgeoN1 is easily amused
05:10:34 <SgeoN1> Oh, what I pasted is a quote
05:10:55 <elliott> i know that
05:14:30 * SgeoN1 reads about why reactive-banana has no swicher
05:14:33 <SgeoN1> Switcher
05:15:13 -!- oerjan has quit (Quit: ZZZZZZZZZZZZZZZZ).
05:16:34 <elliott> :t StateT
05:16:35 <lambdabot> forall s (m :: * -> *) a. (s -> m (a, s)) -> StateT s m a
05:16:44 <elliott> @hoogle State s a -> StateT s m a
05:16:45 <lambdabot> No results found
05:24:35 <zzo38> StateT . fmap return . runState
05:27:58 <elliott> yeah :)
06:08:34 -!- pkzip has joined.
06:08:49 -!- pkzip has left.
06:15:36 -!- zzo38 has quit (Quit: Djinn and Tonic).
06:22:01 -!- elliott has quit (Remote host closed the connection).
06:23:17 -!- elliott has joined.
06:24:57 <elliott> Deewiant: Sweet, Shiro 2 has run into a roadblock as soon as it began! It's like that time when CCBI 2 was dormant for months because of a compiler bug!
06:29:58 -!- nys has quit (Quit: quit).
06:30:42 -!- SgeoN1 has quit (Quit: Bye).
07:17:58 <elliott> monqy!!! What a good thing that you are here HELP ME
07:18:46 <monqy> hi
07:19:42 <elliott> monqy: I need a zipper of a structure with n cursors help.
07:20:02 <monqy> cursors?? help
07:20:16 <olsner> isn't that just the n'th derivative of the type?
07:21:15 <elliott> olsner: yes. however i need an /arbitrary/ n
07:21:16 <elliott> i.e.
07:21:21 <elliott> Zipper1, Zipper2, ... is like a tuple
07:21:27 <elliott> I need "a list", ZipperN
07:21:35 <elliott> because the number of cursors I need varies at runtime
07:22:07 <olsner> maybe you can make a zipper-zipper to navigate to the right zipper, if you manage to make automatic zipper construction in the type system
07:22:29 <elliott> olsner: you're kidding, right? :P
07:22:34 <olsner> mostly yes
07:23:18 <olsner> but an infinite type of all zippers might be doable?
07:23:41 <elliott> hmm oleg's (hideous) multi-cursor zipper is done as just two zippers kept in sync
07:23:49 <elliott> except it's an uh higher-order zipper that keeps track of the path
07:23:52 <elliott> each zipper that is
07:28:03 <elliott> help.
07:29:04 <monqy> i do not know how :(
07:30:05 <elliott> help.
07:30:41 <shachaf> Real programmers use mutability instead of zippers.
07:31:16 <olsner> real programmers don't abstract away their work, they do it
07:31:37 <shachaf> "abstract" as in "give to someone else"?
07:31:42 -!- SgeoN1 has joined.
07:32:47 <elliott> shachaf: Honestly, I'm tempted just to return to the old style, which was really slow but really simple.
07:32:53 <SgeoN1> http://www.altocumulus.org/Fudgets/demoform.html please tell me these kinds of shenanigans don't work these days
07:33:48 <elliott> X is still a network-transparent protocol, yes.
07:34:29 <SgeoN1> But arbitrary computers shouldn't be able to do stuff without your permission
07:34:31 <elliott> Holy shit, the Fudgets website got updated in 2011.
07:34:45 <elliott> SgeoN1: Where does that site do anything without your permission?
07:35:28 <SgeoN1> It looks like it attempts to. Or, well, technically with permission but if it worked, then it could work without permission
07:36:09 <SgeoN1> Although on my phone, I got an error telling me to try running some command, which doesn't look like it deserves to be sufficient for granting permission
07:36:46 <elliott> If you actually tried it, you'd see that you just have to grant permission to the server.
07:36:49 <elliott> To display windows.
07:37:09 <elliott> Of course, the website could also just open a popup; I still get them occasionally, so it's not like there's no way to circumvent popup-blockers.
07:37:16 <elliott> Being able to open a window is not a very exciting privilege.
07:37:47 <elliott> "skalman" will be a host on some university network, I suspect.
07:38:06 <elliott> So it probably only works/worked in the 90s for people at Chalmers. :p
07:38:13 <SgeoN1> It only says skalman, how is that enough to grant permission?
07:38:17 <SgeoN1> Ah
07:38:29 <olsner> http://en.wikipedia.org/wiki/Skalman
07:39:13 <olsner> the easy way is to just give the whole internet access to your X server
07:40:47 -!- Jafet1 has joined.
07:43:22 -!- Jafet has quit (Ping timeout: 244 seconds).
07:45:09 <pikhq> elliott: Real programmers stare the compiler down until it submits.
07:45:20 <pikhq> That's what you should do to get ZipperN.
07:45:44 <monqy> "compiler whats that" - real programmer
07:45:47 <elliott> pikhq: :'(
07:49:06 <SgeoN1> Is compilation really a necessary aspect of Haskell?
07:49:19 <pikhq> SgeoN1: Not even slightly.
07:49:47 <pikhq> It's just that the preferred implementation of Haskell, GHC, is a compiler.
07:49:49 <SgeoN1> (That was meant to elicit calls of me being an idiot, but I'd think that typechecking and compilation are different things)
07:50:16 <pikhq> Hugs, for instance, was a Haskell interpreter.
07:50:17 <SgeoN1> ....oh, so I'm just being a captain ovvious
07:50:22 <pikhq> Yes.
07:50:23 <SgeoN1> Obvious
07:51:05 <pikhq> Captain Ovious: Lord of All Sheep
07:51:28 <SgeoN1> elliott, I don't have to serve as a Notifier, right? And why did spellcheck caps Notifier?
07:51:47 <SgeoN1> And by spellcehck I mean autocorrect
07:52:25 <SgeoN1> Night all zzzinsane
07:58:22 <olsner> I wonder if you could make a haskell dialect that doesn't typecheck until runtime, essentially making haskell one of those "dynamically typed" languages
08:00:39 <elliott> olsner: i doubt it, how would you do things like typeclasses, polymorphic recursion...
08:00:48 <elliott> i mean
08:00:53 <elliott> you could do it in batch at start-up
08:00:58 <elliott> but that's basically compilation :P
08:01:19 <olsner> after enough furious handwaving, surely it'll be trivial?
08:02:44 -!- monqy has quit (Quit: hello).
08:05:12 -!- SgeoN2 has joined.
08:05:12 -!- SgeoN1 has quit (Read error: Connection reset by peer).
08:06:34 <fizzie> Being able to open a (X) window is quite an exciting privilege because then you can monitor all keypresses.
08:08:51 <elliott> Oh, you can/
08:08:51 <elliott> ?
08:08:53 <elliott> Thanks, X!
08:09:05 <elliott> fizzie: Does that apply even after it's closed?
08:09:53 <fizzie> Yes. Or, well, you don't need to be able to open a window either, you just need to be able to connect to a display.
08:10:59 <elliott> So fizzie, about them n-zippers...
08:12:28 <fizzie> There's an "X SECURITY" extension, though, which blocks at least the XQueryKeymap polling, but I think that doesn't apply if you "xhost +" someone. (It's relevant for ssh's X client forwarding; it makes remote clients untrusted by default, unless you ssh -Y instead of ssh -X.)
08:12:35 <fizzie> I don't know anything about them n-zippers, sadly.
08:20:32 <Jafet1> elliott: you don't need type checking for that, only type inference
08:20:41 <elliott> Jafet1: hmm, right
08:20:45 <elliott> that falls down with extensions, though :)
08:20:48 <Jafet1> How to implement type inference without type checking is hereby left as an exercise
08:20:50 -!- Jafet1 has changed nick to Jafet.
08:21:55 -!- Jafet has quit (Quit: Leaving.).
08:21:55 * shachaf maintains that type inference = type checking.
08:22:17 -!- derrik has joined.
08:22:28 <shachaf> > comparе "inference" "checking"
08:22:29 <lambdabot> EQ
08:22:44 <olsner> o.O
08:23:20 <elliott> > comparе "shachaf" "mad"
08:23:22 <lambdabot> EQ
08:23:56 -!- pikhq_ has joined.
08:24:21 -!- pikhq has quit (Ping timeout: 252 seconds).
08:24:26 <shachaf> > compаre "olsner" "mad"
08:24:27 <lambdabot> Is_a
08:25:06 * olsner is a-mad with madness
08:26:24 -!- CakeProphet has joined.
08:26:58 <shachaf> hg status -umad
08:28:11 <olsner> git config shachaf.mad true
08:28:39 <shachaf> git conf ig-shachaf.mad true
08:29:37 -!- LadyJ has joined.
08:30:01 <olsner> but `git status -umad` could work too, there is a `git status -unormal` anyway
08:30:30 <shachaf> mad file disease
08:59:19 -!- derrik has quit (Quit: cursed).
09:00:54 <elliott> hi LadyJ
09:00:55 <elliott> `? welcome
09:01:01 <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
09:01:15 * shachaf never got a warm welcome like that.
09:03:45 <elliott> shachaf: That's because we don't like you.
09:05:12 <elliott> eek, I just had a scapegoat breakthrough
09:05:15 <elliott> I'm not meant to be the one who has those
09:05:29 <shachaf> Hooray, Raymond Smullyan.
09:06:17 -!- hagb4rd has joined.
09:06:25 <elliott> shachaf is trying to tell us that he is Raymond Smullyan.
09:06:37 -!- elliott has left ("Leaving").
09:06:39 -!- elliott has joined.
09:06:42 <elliott> Take that, close button.
09:06:42 * shachaf could do worse.
09:12:44 <CakeProphet> elliott: dude what if like
09:12:45 <CakeProphet> all changes
09:12:47 <CakeProphet> are branches dawg
09:12:50 <CakeProphet> cause they branch
09:12:53 * elliott punches CakeProphet.
09:12:53 <CakeProphet> the thing.
09:12:57 <CakeProphet> what if they branch the thing.
09:12:58 <CakeProphet> always
09:13:45 <elliott> CakeProphet: Accept my inviation.
09:13:47 <elliott> invitation.
09:14:11 <CakeProphet> one second while I figure out how to do that.
09:14:36 <elliott> /join
09:15:04 <CakeProphet> why did you invite me to a channel when I don't need to be invited.
09:15:16 <elliott> So I could do that.
09:15:20 <CakeProphet> ah
09:15:55 -!- SgeoN2 has quit (Quit: Bye).
09:16:26 <CakeProphet> dude what if like
09:16:28 <CakeProphet> merging
09:16:45 <CakeProphet> creates branches
09:16:54 <CakeProphet> where each branch is a possible result of the merger.
09:17:18 <CakeProphet> then you no longer have to worry about merging
09:17:19 <CakeProphet> !!
09:17:34 <CakeProphet> you just change hundreds of branches en masse
09:19:57 <elliott> CakeProphet: Please die.
09:21:09 <CakeProphet> reverting creates a cycle in the graph back to the original node, and then branches at that node!!!
09:22:12 <CakeProphet> because each node is one of millions of permutations, you can do all sorts of fine-grained adjustments when you revert. Also, everytime you branch it creates branches of /what could be/
09:22:16 <CakeProphet> all possibilities.
09:22:17 <CakeProphet> are branches.
09:22:43 <elliott> shachaf: Can you kill CakeProphet for me?
09:22:51 <shachaf> /kill CakeProphet
09:22:56 <shachaf> My IRC client doesn't support it.
09:23:00 <shachaf> I think you need to be an oper.
09:23:27 <elliott> shachaf: Well, become an oper then.
09:23:32 <CakeProphet> so what happens when you revert into the future?
09:23:50 <shachaf> CakeProphet: What if, like, stuff, dude.
09:23:53 * shachaf tired
09:24:05 <CakeProphet> shachaf: YEAH DUDE THE STUFF CAN BRANCH
09:24:12 <CakeProphet> branches make version control systems complete.
09:24:17 <CakeProphet> the more branches the more possibilities.
09:24:20 <CakeProphet> the more version control.
09:24:47 * Madoka-Kaname kicks CakeProphet in the gonas
09:24:51 <Madoka-Kaname> gonads*
09:26:06 <CakeProphet> deleting a file is just reverting to a branch in which it was never created.
09:26:39 <CakeProphet> also branches could branch! so you can branch while you branch.
09:27:45 <CakeProphet> only complete binary trees are allowed to represent the branches though.
09:28:08 <CakeProphet> so that the tree can be implemented efficiently as an array.
09:28:14 <CakeProphet> an array that doubles as a hash function.
09:28:37 <elliott> CakeProphet: But what if you removed that restriction???
09:28:38 <elliott> DUUUUUUUUUUUUDE
09:28:54 <CakeProphet> elliott: that would mean
09:29:08 <CakeProphet> THE RESTURKSHUN ES REMOV
09:29:12 <CakeProphet> FUUUUCK
09:29:50 <CakeProphet> what if instead of changesets you use categories.
09:29:57 <CakeProphet> no wait even better objects
09:30:01 <CakeProphet> like Java objects.
09:30:46 <CakeProphet> THEN EVERYTHING IS JUST INHERITANCE YEAAAAAH
09:31:32 <elliott> What if... you used objects instead of heritance?
09:31:38 <Madoka-Kaname> バカが移りたくない
09:31:49 <CakeProphet> elliott: like aggressation?
09:31:54 <elliott> I DON'T KNOW.
09:31:55 <CakeProphet> AGGRAVATIONS?
09:32:04 <CakeProphet> agregorate?
09:32:55 <CakeProphet> what about feudalism
09:33:31 <CakeProphet> branches are the result of a noble offering an upper class subject domain in his nobledom.
09:34:02 <CakeProphet> reverting is the resulting of weird time shit or maybe kingly decrees
09:34:08 <CakeProphet> and merging is uh, well okay this isn't working.
09:34:22 <CakeProphet> back to Java objects and complete binary tree hash tables.
09:35:22 <CakeProphet> > var $ cycle "where time becomes a loop "
09:35:23 <lambdabot> where time becomes a loop where time becomes a loop where time becomes a lo...
09:36:05 <CakeProphet> elliott: okay what about slave labor?
09:36:15 <CakeProphet> so you can initiate complex queries.
09:36:57 <CakeProphet> like "okay I need these functions from this file at revision 200 merged with these functions from revision 300 and properly merged so that the code compiles and runs as expected."
09:37:08 <CakeProphet> and then you crack your whip
09:38:40 <CakeProphet> copenhagen scapegoat could just pull revisions from other universes where the code has been merged correctly.
09:39:29 -!- copumpkin has quit (Ping timeout: 260 seconds).
09:39:53 <CakeProphet> it would find this universe by consulting the universe in which scapegoat can actually catalogue and efficiently search all universes.
09:39:54 -!- copumpkin has joined.
09:40:19 <CakeProphet> which it would just have conveniently. maybe that universe finds our universe and decided to help you out!
09:40:22 <CakeProphet> how nice.
09:43:34 -!- Madoka-Kaname has quit (Ping timeout: 260 seconds).
09:50:12 -!- Madoka-Kaname has joined.
09:50:12 -!- Madoka-Kaname has quit (Changing host).
09:50:12 -!- Madoka-Kaname has joined.
10:20:35 -!- elliott has set topic: ioccc more like http://codu.org/logs/_esoteric/.
10:20:41 -!- elliott has set topic: http://codu.org/logs/_esoteric/.
10:20:45 <elliott> too bad even for my high quality standards
10:36:48 -!- derdon has joined.
10:53:02 -!- GreaseMonkey has quit (Quit: The Other Game).
11:03:43 <elliott> @hoogle (MonadPlus m) => Bool -> m a -> m a
11:03:44 <lambdabot> Control.Monad mplus :: MonadPlus m => m a -> m a -> m a
11:03:44 <lambdabot> Control.Monad unless :: Monad m => Bool -> m () -> m ()
11:03:44 <lambdabot> Control.Monad when :: Monad m => Bool -> m () -> m ()
11:03:51 <elliott> Meh.
11:21:15 -!- ais523 has joined.
11:21:55 -!- ais523 has set topic: The IOCCC is back on! http://www.ioccc.org | http://codu.org/logs/_esoteric/.
11:22:10 <elliott> ais523: heh, I just set an ioccc topic earlier
11:22:12 <elliott> but it was so bad
11:22:28 <ais523> I'm just aiming for an informative one
11:22:37 <ais523> and I have an IOCCC entry ready, at least
11:22:41 <elliott> ais523: so, umm, I had a scapegoat breakthrough (!), and then implemented some scapegoat code
11:22:42 <ais523> I just need to check it for portability
11:22:52 <ais523> given that it violates the Standard in a huge number of ways
11:24:06 <elliott> ais523 is unfazed by your human scapegoats.
11:24:09 <elliott> Scapegae.
11:24:25 <ais523> ah right, scapegoat!
11:24:51 <elliott> `quote Bright
11:24:53 <HackEgo> 251) [on Walter Bright] <nddrylliog> I went to chat with him after his talk at the ELC and he was like "hum, right - humans. How do they work again... oh, hi!" \ 260) <locks> who's walter bright and why is he so bright <nddrylliog> locks: he's to D what I'm to ooc <nddrylliog> locks: guilty \ 702) <ais523> Just about all females often feel that exactly why all Hollywood stars common maintain its brightness as Tom in
11:25:01 <elliott> hmph, the first one
11:25:15 <ais523> that first one is great
11:26:09 <lifthrasiir> so they have managed to release the winning entries after *five* years?
11:26:31 <elliott> ais523: anyway, the scapegoat breakthrough was what I believe to be the One True Conflict Resolution system (!), and the code is another implementation of the basic apply model, plus some ideas and scraps about how to abstract away the "pointer comparison" that you need to apply changes fast (rather than recursively comparing them to figure out whether the change referenced is the right one)
11:26:37 <elliott> (if you use changes instead of references to them)
11:27:00 <ais523> go tell me, I have about 2 and a half hours to listen before I go off to do marking
11:27:02 <ais523> probably a bit less
11:27:38 <elliott> ais523: well, you know how your existing solution have been changes that do a sort of spooky action-at-a-distance to other changes? you include a change "use hash foo instead of bar", and all the other changes you're applying end up with that rewrite, etc. etc. etc.?
11:27:53 <elliott> (you can correct me if I've got your model wrong or whatever, but it doesn't matter much)
11:28:01 -!- Patashu has quit (Ping timeout: 245 seconds).
11:28:58 <ais523> yes; I wasn't happy with that, but it seemed like the only way to do things
11:28:59 <ais523> have you found an alternative?
11:29:35 <elliott> ais523: yes, but I'd like to summarise the few things I didn't like about that first, so I can show how I was lead to this one
11:30:03 <elliott> one: if a changeset is applicable, all its subsets should be applicable, because adding /more/ changes to a change can't make it "less conflicty"
11:30:22 <elliott> two: it's not really clear /which/ changes, exactly, feel the effects of the hash rewrite; it seems more like a syntactic mechanism than a semantic change
11:30:53 <elliott> ais523: so, here's the solution
11:30:57 <ais523> hmm… I'm not sure that one: is correct, adding instructions on how to resolve conflicts should make a set less conflicty
11:31:03 <ais523> tell me your solution, anyway
11:31:15 <elliott> ais523: nah, not really, because "instructions" aren't really a thing
11:31:22 <elliott> ais523: you apply changes by tsorting them, and then applying them in that order
11:31:27 <elliott> if any fails, the whole thing fails
11:31:40 <elliott> I suspect it breaks a /lot/ of nice properties by not having adding more changes not reverse a conflict
11:31:45 <ais523> fair enough
11:31:49 <elliott> anyway
11:32:08 <ais523> hmm, how do you handle the case of making change A, reverting change A, later making change B that would conflict with case A?
11:32:15 <elliott> wait, wait :)
11:32:24 <elliott> ais523: let's say you have c1 = {insert "foo" between cX and cY}, and c2 = {insert "bar" between cX and cY}
11:32:41 <elliott> and you want to make a change that "does both", by putting c1's line above c2
11:32:42 <ais523> yep, a simple example of a conflict
11:32:58 <elliott> ais523: we introduce a new type of change: FILECHANGE modulo FILECHANGECHANGE
11:33:07 <elliott> we've already introduced the concept of change-changes, so this isn't too surprising
11:33:14 <elliott> its semantics are, it does whatever the resulting change is, pretty much
11:33:16 <elliott> ais523: and here's how you use it:
11:33:32 <elliott> c12 = changeset {c1, c2 modulo {replace before-hash with c1}}
11:33:48 <elliott> (if the changechange fails to apply to the change, the change itself fails, etc.)
11:34:03 <elliott> it preserves the reference to c2, it can do arbitrarily complex resolutions
11:34:07 <elliott> it's perfect
11:35:13 <elliott> ais523: it also scales: e.g. if you need to back out a single element of a changeset to make a resolution work, then you can do that too, because changechanges mirror the structure of changse
11:35:15 <elliott> changes
11:35:28 <elliott> you can basically do an arbitrary transformation on it
11:35:57 <elliott> and, ofc, you can resolve conflicts with /other merges/: you could change the "source-change" of a modulo change
11:36:00 <elliott> as part of a modulo change
11:36:12 <ais523> hmm, I think I have a few issues of this
11:36:17 <ais523> *with this
11:36:23 <ais523> first, assume I have c2 in my repo already
11:36:36 <ais523> and want to pull someone else's repo which contains c1 and c2 modulo {replace before-hash with c1}
11:36:39 <ais523> what happens?
11:36:43 -!- zzo38 has joined.
11:36:48 <ais523> (this is not a hypothetical question at all)
11:36:50 <elliott> ais523: umm, nothing special? it doesn't /mutate/ c2
11:36:54 <elliott> c3 = c2 moduloe {replace before-hash with c1}
11:36:58 <elliott> c3 is a /new/ change
11:36:59 <elliott> just like
11:37:02 <elliott> replace c2 with "haha"
11:37:03 <ais523> elliott: so right, I have c2, and pull c1 and c3
11:37:06 <ais523> presumably I get a conflict?
11:37:17 <ais523> but I shouldn't, in any sane conflict resolution system
11:37:35 <elliott> ais523: you do, because it's part of a /resolution/
11:37:37 <elliott> ais523: the whole point is, e.g.
11:37:46 <elliott> your head branch can't contain c2, because it conflicts with the latest revision
11:37:50 <elliott> so instead of appending c2
11:38:00 <elliott> you append changeset {insert ..., c2 modulo blah}
11:38:07 <ais523> elliott: so in other words, if you make change c1 and I make change c2, then when you pull from me you resolve the conflict, then when I pull from you I also have to resolve the conflict?
11:38:38 <elliott> ais523: yes and no
11:39:10 <elliott> ais523: there /is/ a real conflict, because your branches /don't match up/, because a modulo change introduces changes _necessary_ to get things not to conflict, ergo there can't be compatibility; /but/ the merge strategy is obvious and automatic
11:39:23 <elliott> which is to simply drop c2 in favour of the resolution
11:39:31 <ais523> ah, so the conflict's automatically resolved via noticing that there's an edited version of c2, and replacing c2 with it?
11:39:36 <elliott> yes
11:39:57 <elliott> that isn't part of the apply algorithm itself, but plenty of useful merge tactics aren't; that's why there are additional ones on top
11:40:56 <elliott> if you have any other issues with it I'm happy to hear them
11:41:19 <ais523> I'm thinking
11:42:31 <ais523> I think it's pretty much equivalent to the previous version; except that instead of "for c2 read c3", you're writing "c3" and letting the merge process automatically figure out it should get rid of c2
11:43:16 <elliott> it's similar, except for preserving that property of changesets, and having a clear scope
11:43:20 <elliott> ais523: for instance, you can do
11:43:37 <elliott> changeset {c2 modulo {replace before-hash with abc}, c3 modulo {replace before-hash with def}}
11:43:41 <elliott> ais523: even if c2 and c3 have the same before-hash
11:43:46 <elliott> which, afaik, isn't possible with your system
11:44:13 -!- Vorpal has joined.
11:44:37 <ais523> well, that changeset inherently contains a conflict
11:45:10 <elliott> how?
11:45:12 <ais523> is the rule for automerging with this "if you pull a patch A modulo B, eliminate patch A from your tip"?
11:45:24 <ais523> elliott: it's trying to add two changes immediately after the same before-hash
11:45:35 <elliott> ais523: basically, yes; also, no it's not
11:45:35 <ais523> ah, wait, no
11:45:38 <elliott> "abc" =/= "def"
11:45:43 <ais523> it's moved them both to different locations in the original
11:46:09 <elliott> incidentally, you can even just do cN modulo {make it into a nop}, but that makes future merging suck
11:46:20 <ais523> elliott: so what if you make c1, and I make c2, and you pull from me and find that the two changes look identical and your version is better
11:46:24 <elliott> (because you can't replace cN with another change and get hopes of getting relevant results)
11:46:27 <ais523> what does the conflict-resolved version look like?
11:46:38 <elliott> (which is possible with a proper changechange: consider replacing cN (changeset) with a larger changeset)
11:46:55 <ais523> (as in, c1 and c2 do the same thing, and you prefer to have just c1 and to get rid of c2)
11:47:03 <elliott> ais523: oh, in that case you simply have to pick one, which forces you to replace-by-nop the other
11:47:21 <ais523> right, so you have c2 modulo {nop}
11:47:22 <elliott> ais523: but that can be done automatically, and any future changes depending on c2 can simply be modulo'd so that /their occurrence of c2 is replaced by c1/
11:47:28 <elliott> which is where this operation shines
11:47:34 <ais523> that's the same operation I added!
11:47:46 <ais523> so I think they're both shining equally ;)
11:47:50 <elliott> ais523: no, it's not: yours was restricted to one level of hash modifications, and yours /didn't have a scope/
11:48:07 <ais523> its scope was "all repos containing both this hash and the hash this hash modifies"
11:48:20 <elliott> wait, it /mutated global state/?
11:48:26 <ais523> no
11:48:30 <elliott> that's even worse, there's no way to resolve two changes containing the same hash in different ways
11:48:33 <ais523> only local state
11:48:35 <elliott> ais523: yes it does, it just records it as a transformation
11:48:38 <elliott> global = repo-global
11:48:46 <ais523> the hashes still mean the same things
11:48:52 <ais523> it just changes the rules for resolving them
11:49:01 <ais523> (I'm not trying to claim my way's better, btw; just trying to compare)
11:49:12 <elliott> anyway, mine has absolutely no disadvantages compared to yours, keeps desirable properties, is more general, and allows more complicated merges :P
11:49:23 <elliott> yeah, I'm not ~mechanism fighting~ or anything
11:49:33 <elliott> I just think this way is pretty obviously the Right Thing for conflict resolution
11:49:41 <elliott> because it /looks/ like the rest of the changes
11:49:45 <ais523> elliott: hmm… so how would the fact that "references to c2 should be replaced with references to c1" be expressed in your modulo notation?
11:49:47 <elliott> "replace <change> with <string>", etc.
11:50:08 <ais523> perhaps it should be explicit, rather than implicit
11:50:13 <elliott> ais523: c2 {replace occurs of c2 with c1}, most likely; that's a sane operation for changechanges to have
11:50:19 <elliott> erm
11:50:22 <elliott> ais523: c3 modulo {replace occurs of c2 with c1}, most likely; that's a sane operation for changechanges to have
11:50:34 <ais523> as in, instead of {c2 modulo replace before-hash}, have {c2 modulo replace before-hash, remove c2}
11:50:47 <elliott> ais523: huh?
11:50:57 <elliott> wtf is that supposed to mean...
11:51:32 <elliott> ais523: remove is delete-line, right?
11:51:40 <ais523> elliott: well, you're pulling c2-modulo, and eliminating c2 in the process
11:51:45 <ais523> elliott: err, no
11:51:48 <ais523> I mean delete-hash
11:51:57 <elliott> ais523: what the hell is delete-hash?
11:52:01 <elliott> that's not a change!
11:52:02 <ais523> the idea is that if you pull a changeset with c2 modulo replace before-hash
11:52:14 <ais523> then you want to eliminate c2 from the changeset you're adding c2-modulo to, right?
11:52:28 <elliott> type error
11:52:34 <elliott> if "remove c2" is meant to be a changechange
11:52:39 <elliott> why are you putting it in the same set as a change?
11:53:17 <ais523> elliott: well, you're putting c2-modulo in a changeset; and that /implicitly/ has a delete-hash c2
11:53:22 <Vorpal> is it about sg again?
11:53:33 <elliott> ais523: what? no it doesn't
11:53:35 <ais523> I'm saying you should make it explicit, as you have a change and an implicit changechange in the same hash atm
11:53:40 <ais523> elliott: you said it did earlier
11:53:53 <elliott> ais523: that's in the /layer above/, not the apply algorithm itself
11:53:54 <elliott> ais523: in fact, it's perfectly possible for a change and a modulo of it to coexist
11:54:15 <elliott> changeset {c2, c2 modulo {replace before-hash with some-other-line, replace after-hash with some-other-line-right-after-it}}
11:54:32 <elliott> it's just that, whenever C conflicts with C modulo BLAH, the latter wins, in the helpful auto-merging strategies
11:55:11 <ais523> I'm saying that making it depend on the hash being modulo'ed seems wrong somehow
11:55:37 <ais523> what about having the changeset as {c1, c3=(c2 modulo replace before-hash), mergehint(replace c2 with c3)}
11:55:39 <elliott> that's the whole point
11:55:47 <elliott> it's a semantic indication that it's a resolution
11:55:59 <elliott> ais523: mergehint? are you /trying/ to make this as inelegant as possible?
11:56:32 <ais523> elliott: OK, what about this: you edit a file twice, inserting a line each time (adjacent to each other); call the changes that add those lines x1 and x2
11:56:44 -!- sebbu2 has joined.
11:56:44 <ais523> I edit a file once, adding a single line x3 that does the same thing that x1 and x2 do together
11:56:48 <elliott> x2 having x1 as its before-hash, yes?
11:56:54 <ais523> (replace "line" by another semantic unit if you want)
11:56:57 <ais523> elliott: yes
11:57:01 <elliott> OK, go on
11:57:10 <ais523> now you pull from me, and decide that my x3 is more elegant than your x1+x2
11:57:23 <elliott> I'm glad you acknowledge my superior taste
11:57:36 <ais523> wait, I think I may have screwed up my example
11:58:01 <ais523> perhaps the problem I thought I saw isn't real after all
11:58:22 <elliott> Perhaps it's hiding! :D
11:58:29 <ais523> and I'm trying to find an example that does illustrate it, now
11:58:57 -!- elliott has quit (Remote host closed the connection).
11:59:26 -!- elliott has joined.
12:00:05 -!- sebbu has quit (Ping timeout: 260 seconds).
12:01:09 <elliott> ais523: incidentally, there's another two sg-thoughts I had, but they're less important than this one and can wait
12:04:55 <ais523> let's see… if, say, Vorpal pulls a repo that contains c1 and c2-modulo, but doesn't have either c1 or c2 yet, presumably the correct thing to happen is for him to just add c1 and c2-modulo as written, and if he ever pulls c2 in the future, discard it?
12:05:57 <elliott> ais523: I can't answer that question, because you're using "pull" ambiguously... you mean "merge into main branch", right? obviously it's impossible to /fetch/ c2-modulo without fetching c2, since that would result in a corrupt database
12:06:18 <ais523> by "pull" I mean "include into the set of changes I'm considering my repo", or "whitelist"
12:06:28 <elliott> right
12:06:29 <ais523> I'm assuming that all mentioned hashes are fetched
12:06:43 <elliott> ais523: anyway, /maybe/, you're oversimplifying the logic a bit
12:06:47 <elliott> this is the exact merge rule:
12:07:20 <elliott> if there is a conflict between C and C modulo CC, CC modulo CC wins
12:07:33 <elliott> note that, if you have C modulo CC somewhere in the ancient history of the repo
12:07:40 <elliott> and then C gets pulled in for whatever reason
12:07:44 <elliott> and it applies cleanly
12:07:46 <elliott> then that's fine, it just works
12:07:57 <elliott> or if it conflicts with XYZAHASUIDHSAD, made twenty thousand years after C modulo CC
12:07:59 <elliott> then that's a real conflict
12:08:11 <elliott> it's /only/ when the conflict is between C and C modulo CC that the latter wins by default
12:08:25 <ais523> hmm... so let's call c2-modulo c3, as usual
12:08:37 <ais523> in this case, we have c3 depending on c1, and c1 conflicting with c2
12:08:59 <ais523> that counts as a conflict between c2 and c3, right?
12:09:14 <elliott> I take it depends on it because c3 looks like c2 modulo {replace before-hash with c1}, yes?
12:09:17 <ais523> yep
12:09:55 <elliott> ais523: yes, it does
12:10:20 <ais523> good; then I think this definitely gives the expected behaviour in the simple case
12:11:10 <ais523> I'm trying to think of a case where it's possible that c and c-modulo don't conflict, and the only one I can think of is when a block of code is moved from one part of the code to another
12:11:16 <ais523> and using modulo changes there is dubious in the first place
12:11:31 <elliott> ais523: heh, the more relevant and important of my other two sg thoughts is about move changes
12:11:35 <elliott> maybe i should bring it up now
12:11:40 <ais523> go for it
12:12:44 <elliott> ais523: move changes of the form "move (a,b) to (c,d)" are broken. they introduce /silent/ dependencies, because they make changes able to be applied without those changes depending on the move changes. why is this important? remember: changesets are applied by tsorting on dependencies, and then applying in that order
12:13:11 <elliott> with move changes as they are currently, it's possible for tsorting to produce a working or non-working ordering, depending on how the sorting algorithm works
12:13:16 <ais523> yep, I realised there was something wrong with them
12:13:28 <elliott> and the tsort ordering can fail while another ordering can work
12:13:35 <ais523> although, I can't think of a specific example for what you're saying
12:13:54 <elliott> ais523: you make a move so that c9 is above c7
12:13:56 <ais523> why would it matter whether code was edited before or after moving it? or am I missing something?
12:13:59 <elliott> and you have another change that inserts between c9 and c7
12:14:08 <elliott> call the move cM
12:14:12 <elliott> and the insert cQ
12:14:19 <elliott> changeset {cM,cQ} applies in order cM->cQ
12:14:22 <elliott> but not cQ->cM
12:14:27 <elliott> but cQ doesn't depend on cM, so tsort doesn't see this
12:14:28 <ais523> elliott: oh, the "anotehr change" would have to be "insert between cM and c7"
12:14:28 <elliott> thus broken
12:14:33 <ais523> not "insert between c9 and c7"
12:14:36 <ais523> because it depends on being after the move
12:14:47 <elliott> ais523: so you make the last line of the merge get the hash cM?
12:14:51 <elliott> ais523: what do you do with the first hash?
12:15:24 <ais523> elliott: last and first; either you give them different hashes, or you say that the first line is cM referred to from above and its old hash from below, and the last line is cM referred to from below and its old hash from above
12:15:44 <elliott> ais523: you cannot have two lines with the same hash!!!
12:15:51 <elliott> what the heck does "replace cM with blah" do? "delete cM"?
12:16:01 <ais523> err, right, good point
12:16:24 <ais523> hmm, weren't replaces and deletes meant to have context? as in, "delete c8 between c7 and c9"?
12:16:32 <elliott> the problem with the former solution is, hashes refer to changes, that's sg's strength, and there aren't two changes to go around
12:16:34 <ais523> or is that not needed?
12:16:39 <elliott> ais523: nope, that's a flaw
12:16:39 <ais523> elliott: right, OK
12:16:45 -!- LadyJ has quit (Quit: Rooms • iPhone IRC Client • http://www.roomsapp.mobi).
12:16:54 <elliott> ais523: code should be resilient against being moved around, in general
12:17:37 <ais523> so we call the first and last lines cM1 and cM2 for the purpose of any change that cares about their new location, and use their old names for the purpose of changes that would work in either location (and obviously, also for changes that would only work in the old location)
12:17:52 <elliott> ais523: crazy idea that doesn't work: implement move (a,b) to (c,d) by doing: changeset {a modulo {change before-hash to c}, b modulo {change after-hash to d}}; these now conflict with the original additions, but conflict resolution sorts it out automatically
12:17:55 <elliott> /please/ prove to me that doesn't work
12:18:13 <elliott> wait, oh, good
12:18:15 <elliott> it doesn't work at all
12:18:19 <elliott> inserts don't work like that
12:18:20 <elliott> phew
12:18:33 <ais523> right, I was hoping that wouldn't work too
12:18:39 <elliott> ais523: re your solution: that's obviously not the Right Thing
12:18:47 <ais523> it does seem wrong, indeed
12:18:57 <ais523> but I'd like to hear why not, to help me come up with a correction ;)
12:19:04 <elliott> not a single thing has been improved by breaking the line->change mapping so far
12:19:12 <elliott> ais523: well, it involves numbers, and special cases
12:19:15 <elliott> :)
12:19:32 <zzo38> Have you seen the television show called "Weird or What?"
12:20:29 <ais523> elliott: notionally, I want the move to add two hashes that refer to zero-length lines just before and after the block of code moved
12:20:30 <elliott> ais523: I'm inclined to think that move changes themselves should change
12:20:32 <elliott> what to, I'm not sure
12:20:36 <zzo38> Once they had someone say something about ghosts, about infrared and stuff; this is a testable hypothesis so why don't they test it?
12:21:39 <elliott> ais523: hmm... if you had {atomic : set of change -> change}, you could do: atomic {move a to after c, move b to before d}
12:21:41 <ais523> there's no reason we can't actually simply add those, I guess, but it seems wrong in another way
12:21:47 <elliott> ais523: atomic because, neither change can apply without conflicting, but if you do "both at once" it works
12:21:55 <elliott> and you have two subchanges which become the new hashes of a and b
12:22:01 <elliott> but, umm, that's ridiculous
12:22:05 <elliott> and I have no idea how to implment atomic at all
12:22:24 <ais523> just mark them as "equal" in your topological sort; it's not too hard to implement
12:22:31 <ais523> (there are tsort algos that can handle things being equal)
12:22:43 <elliott> ais523: that won't work, you /can't apply two changes/ at once
12:22:43 <ais523> (I know, because I wrote one for my PhD research)
12:22:46 <elliott> applying a change is the atomic thing
12:22:59 <elliott> i'm not writing some hideous interleaving algorithm for the sake of basically just doing a move change with a hack to make it have two hashes
12:23:15 <ais523> elliott: well, the order of the two changes itself would have to be irrelevant, which it is; it'd just be atomic because it'd force them to happen consecutively
12:23:26 <elliott> ais523: oh no, neither would apply without conflict
12:23:29 <ais523> but this thing seems ridiculous in other ways
12:23:35 <elliott> because it makes no sense, it causes a rupture in space-time
12:23:51 <elliott> it starts at c, goes on for five lines; the next line is d, but b's end-hash is still after q
12:23:57 <ais523> right, but as long as you don't check for space-time ruptures until after the atomic finishes, it's fine
12:24:01 <elliott> let's just forget about this, it's making my head hurt
12:24:07 <elliott> that solution, I mean
12:24:26 <elliott> ais523: here's my implementation of Move, for no particular reason:
12:24:28 <elliott> apply (Move (FileRange srcS srcE) (FileRange dstS dstE)) = \xss -> do
12:24:28 <elliott> (beforeSrcS, afterSrcS) <- withZipper f xss
12:24:28 <elliott> (src, afterSrcE) <- withZipper g afterSrcS
12:24:28 <elliott> let beforeSrcS' = reverse beforeSrcS
12:24:28 <elliott> (++ afterSrcE) <$> withZipper (h src) beforeSrcS' <|>
12:24:29 <elliott> (beforeSrcS' ++) <$> withZipper (h src) afterSrcE
12:24:31 <elliott> where f z@(_, ys) = z <$ guard (isStart srcS ys)
12:24:33 <elliott> g z@(xs, _) = z <$ guard (isEnd srcE xs)
12:24:35 <elliott> h src (xs, ys)
12:24:37 <elliott> | isStart dstS xs && isEnd dstE ys = Just $ fromZipper (xs, src ++ ys)
12:24:39 <elliott> | otherwise = Nothing
12:25:47 -!- Aune has joined.
12:26:55 <elliott> ais523: it's actually quite elegant, shame move changes are broken
12:27:30 <ais523> elliott: my current thoughts are tending along the lines of "everything should have a before-hash and an after-hash that are different"
12:27:47 <elliott> ouch
12:27:47 <ais523> I think that preserves all the properties we need, while also making creating new files and move changes working correctly
12:28:00 <ais523> elliott: you'd just stick a or b on the end of the hash, I guess
12:28:22 <ais523> hmm, perhaps that doesn't help after all
12:28:28 <elliott> I don't think it does...
12:28:45 <elliott> and it adds a lot of weird insert cases, like inserting between the "after" of one line and the "after" of another
12:28:53 <elliott> maybe we should ask Gregor :P
12:29:03 <ais523> that'd be incorrect, inserts would have to be between an after and a before
12:29:07 <ais523> as a type system level requirement
12:29:08 <elliott> he will clearly come up with the perfect solution!
12:29:11 <ais523> they're badly typed if they aren't
12:29:23 <elliott> ais523: ok, but doesn't that defeat the point of move changes making before/after hashes?
12:30:04 <ais523> no; the idea is that a move change would simply provide its hash as the before hash of the first line, and the after hash of the last line
12:30:18 <elliott> well, ok
12:30:28 <ais523> then everything works correctly, additions/deletions/replacements, I think
12:30:39 <elliott> I'm still knee-jerk against this but maybe I will see the light :)
12:31:13 <ais523> a delete hash would be "delete one line from before-hash to after-hash"; that way, deleting after a move is made doesn't conflict with the move, deleting before does (and should)
12:31:23 <ais523> *a delete change
12:31:30 <elliott> hmm
12:31:40 <ais523> and if before-hash and after-hash aren't consecutive lines for whatever reason, it conflicts
12:31:47 <Vorpal> ais523, elliott: is this "move a file" or "move a segment of text" or something more generic than that?
12:31:54 <elliott> latter
12:31:57 <ais523> in fact, this lets you do things like replacing a space with a newline without causing conflicts on changes to the line before or after
12:31:59 <Vorpal> ah
12:31:59 <elliott> although it's used for renames, too
12:32:41 <Vorpal> elliott, because handling renames seems to me like an easier problem than moving text blocks inside a file or between files. Beside for the later case how would you even detect that was what happened?
12:32:51 <ais523> which is definitely a desirable property; it makes sg independent of what is and isn't a line
12:32:58 <Vorpal> unless you hook into the clipboard handling or something crazy
12:33:05 <ais523> Vorpal: the user would indicate it was a move
12:33:11 <elliott> Vorpal: I don't really feel like explaining scapegoat to you so that you have enough knowledge to understand this, but what is an easier problem or not is irrelevant
12:33:11 <Vorpal> ah okay
12:33:13 <ais523> perhaps in response to a question from sg itself asking
12:33:15 <elliott> ais523: nah, moves can be mostly auto-detected
12:33:19 <ais523> right, indeed
12:33:20 <elliott> silently
12:33:36 <elliott> Vorpal: you can't detect filesystem renames either, anyway
12:33:39 <elliott> which is why you just guess instead
12:34:17 <ais523> elliott: actually, perhaps it's just simplest to give every line in the move a new hash; in that case, a move would always conflict with an edit to the code before it was moved, which is sometimes desirable and sometimes undesirable
12:34:30 <elliott> ais523: that's the same as not having move
12:34:30 <elliott> s
12:34:33 <ais523> the reason I'm thinking along those lines is, what if code is /copied/ rather than moved
12:34:34 <elliott> and just deleting and reinserting every line
12:34:37 <ais523> elliott: well, right, it is
12:34:44 <Vorpal> <elliott> Vorpal: you can't detect filesystem renames either, anyway <-- well, several currently existing version control systems have move commands for that
12:34:47 <elliott> it also means you can't do things like, split a file into two
12:34:49 <ais523> if you copy code, you want to be able to edit one copy without changing the other
12:34:51 <Vorpal> some have copy to track a common source of a file
12:34:54 <elliott> and a missed rename completely breaks the world
12:34:56 <elliott> and [...]
12:34:59 <elliott> ais523: basically no, we need move changes :P
12:35:05 <ais523> hmm, OK, this is a good case for move changes existing
12:35:14 <ais523> it's also a good case for them not being introduced silently, though, I think
12:35:28 <ais523> perhaps we should just mention they were introduced and give the user a chance to change that
12:35:34 <elliott> ais523: ehh, why?
12:35:38 <elliott> move changes never really hurt anything
12:35:49 <ais523> elliott: because a move is not equivalent to a copy followed by a delete
12:36:00 <Vorpal> how do you track copying then?
12:36:04 <ais523> atm, we don't
12:36:07 <elliott> ais523: sure it is, if it's done in-between invocations of sg
12:36:07 <Vorpal> ah okay
12:36:22 <ais523> elliott: suppose you copy-and-paste some code, while someone else edits the original
12:36:24 <elliott> copying isn't worth tracking
12:36:27 <elliott> since you can't share hashes, full stop
12:36:36 <ais523> should the edit be applied to the old location, or the new location, or both, or something else?
12:36:44 <elliott> ais523: copy-and-paste, not cut-and-paste?
12:36:49 <ais523> yes, copy-and-paste
12:37:06 <elliott> the original, since it's just a copy; the solution to this being bad is to not copy-and-paste code
12:37:07 <ais523> I'm trying to work out desired behaviour so I can work out the correct semantics in sg
12:37:13 <elliott> sg can't make you abstract properly
12:37:37 <ais523> "the original" is what every VCS in existence does; the intended solution is probably "both" but I agree with you that doing that would be utterly insane
12:37:38 <elliott> if you, e.g. move all of a file but two functions into another file as part of a refactoring
12:37:42 <elliott> and someone else does bugfixes in the meantime
12:37:44 <ais523> and I think the /correct/ answer is "conflict"
12:37:49 <elliott> then it shouldn't spuriously conflict if it can detect a move
12:38:00 <ais523> because we can't know if the edit should happen in the new location, the old location, or both
12:38:03 <elliott> basically, if sg is confident enough that a move has taken place, it _really should_ automatically add a move change
12:38:39 <ais523> elliott: hmm, example: let's say we have a C function that uses only library functions from stdio.h
12:38:45 <elliott> ais523: conflict is ridiculous, you'd have to break sg's model to do that
12:38:46 <ais523> and it's in a file that includes both stdio.h and string.h
12:38:47 <elliott> even if it is desirable
12:38:50 <elliott> as in, the fundamental model
12:38:54 <elliott> it's basically action at a distance
12:39:04 <elliott> inserting some text in another file caused conflicts in a different one
12:39:15 <Vorpal> elliott, how do you handle a cut-and-paste + change some lines of code. Like if I move something I might need to change a implicit reference to the current module to an explicit reference to another module
12:39:22 <ais523> now, let's say that someone moves that code to another file, which includes just stdio.h
12:39:37 <ais523> and independently, someone else edits the original to call functions in string.h
12:39:47 <elliott> Vorpal: please, I've already said you don't understand sg at all for me to be able to reasonably communicate with you about this
12:40:11 <elliott> ais523: it'll merge properly, and then fail to compile
12:40:12 <ais523> with your current sg move semantics, person 1's version compiles, person 2's version compiles, there are no conflicts if you merge them together, but the resulting code doesn't compile
12:40:16 <ais523> yep
12:40:19 <ais523> is that desirable?
12:40:19 <elliott> ais523: we've already established that sg /will/ break code
12:40:26 <elliott> and it's theoretically impossible for it not to
12:40:31 <ais523> well, OK
12:40:41 <ais523> I'd just like a little warning message letting people know that this is one of the less safe cases
12:40:51 <elliott> ais523: in this case, the compile error will lead to a simple solution, and the user can commit a perfect merge
12:40:55 <elliott> also, this /isn't/ less safe!
12:41:12 <ais523> actually, /can/ the user commit a perfect merge?
12:41:14 <elliott> I mean, it only seems less safe because you picked an example where it fails now
12:41:18 <elliott> as opposed to all the other ways merges can break
12:41:24 <ais523> the fix would be to add #include <string.h> to the second file, right?
12:41:28 <elliott> which you aren't considering
12:41:34 <ais523> but that doesn't have a dependency on the addition of the function
12:41:35 <Vorpal> couldn't the code end up compiling in some cases but in the wrong way
12:41:36 <elliott> it's enough that "sg diff" shows there's a move being made
12:41:38 <ais523> well, OK
12:42:11 <elliott> ais523: well, it'd be a merge without there being an actual conflict
12:42:14 <ais523> Vorpal: possibly, but I imagine such examples would be contrived, and equally likely to be caused by human error than by sg eagerness
12:42:29 <elliott> ais523: which is a perfectly plausible action
12:42:38 <Vorpal> ais523, if, in the example here, there is the same function name (but doing different things) from different sets of headers. I guess it could happen if the header files come from different libraries and are macros
12:42:40 <ais523> elliott: I guess in an ideal world, things like #include lines would be generated automatically
12:42:48 <Vorpal> err the functions in question are macros that is
12:43:05 <elliott> ais523: yep; you're free to help me figure out how to implement @ if you want @sg :)
12:43:24 <ais523> I think this is more an issue of getting the right internal representation of languages
12:43:37 <elliott> oh dear
12:43:47 <ais523> e.g. for OCaml, instead of writing "open List", followed by "sort" later on, it'd be stored internally as "{implicitly List}.sort"
12:44:03 <elliott> ais523: you should lower your expectations slightly :)
12:44:15 <ais523> hey, we can get sg working first, then do this sort of thing later
12:44:21 <elliott> agreed
12:44:22 <ais523> actually, this sort of thing is independent of sg
12:44:29 <ais523> as it'd work with other VCSes too
12:44:33 <ais523> perhaps I should work on it
12:44:39 <ais523> for fun
12:45:02 <ais523> a sort of "diffable transform" of code, that's designed to remove issues related to things like indentation and header files
12:45:38 <elliott> ais523: I think I can show your worries about unsafe moves contrived
12:45:46 <elliott> $ hg mv foo.c bar.c
12:45:52 <elliott> at the same time, someone writes some code in foo.c
12:46:01 <elliott> and it merges cleanly because what the hell is the point of a mv otherwise
12:46:04 <elliott> BUT
12:46:10 <ais523> and the code depends on the file's filename being foo.c?
12:46:10 <elliott> the build system compiles bar.c differently to foo.c!!!
12:46:13 <elliott> rocks fall everybody dies
12:46:22 <elliott> that's not even /that/ contrived, you could add it in the same commit as the mv
12:46:28 <ais523> I think the argument here's about the principle of least surprise
12:46:33 <elliott> and file-specific CFLAGS are not that uncommon
12:46:47 <elliott> ais523: (note that git auto-detects renames)
12:46:50 <ais523> as in, what people will blame for a mistake when it happens
12:46:54 <elliott> (I just used hg to show because it has an explicit mv)
12:47:16 <elliott> ais523: it's unreasonable to expect things to always work perfectly after a merge
12:47:16 <ais523> hmm, should sg also have rewrite changes?
12:47:21 <elliott> that's why you do things like test the code
12:47:29 <elliott> nobody said sg solves collaboration :)
12:47:37 <ais523> right
12:47:41 <elliott> ais523: I don't think so; a rewrite should conflict with any modification to the file, pretty much
12:47:48 <elliott> and if you rewrite, you'll change enough hashes that that happens automatically
12:47:53 <ais523> that's the conclusion that I was coming to
12:48:02 <elliott> I suppose someone could add an #include or something, but they'll change something lower down if they're doing that
12:48:04 <elliott> and that'll conflict
12:48:17 <ais523> I think you could argue that a rewritten file shouldn't conflict with changes to its old version
12:48:18 <elliott> if an actual change gets through without conflicting, well, it wasn't a total rewrite then
12:48:23 <ais523> but I don't think that's a correct viewpoint
12:49:23 <Vorpal> <elliott> I suppose someone could add an #include or something, but they'll change something lower down if they're doing that <-- actually it happened that I only added an #include. Someone had forgot an #include in some project I was working on, and didn't have -Wall on (ugh), so it got the implicit declaration thingy of C. Which happened to work there.
12:50:19 <elliott> unused #includes don't typically break code, so even that getting through would be a really really minor failing of sg :P
12:50:32 <Vorpal> true
12:52:19 -!- tiffany has quit (Ping timeout: 276 seconds).
12:52:33 <elliott> ais523: OK, here's an idea that just might be stupid enough to work:
12:54:43 <elliott> ais523: a new change type: "cut (a,b)". this removes all lines from a to b. another two change types, "paste start of cN after c", "paste end of cN before d". cN must be a cut change; their start and end lines are recreated after/before the given lines, with the paste changes becoming the new hashes. and finally, "fill in (c,d)"; this restores all lines "in the middle" between the two changes, which must be pastes of the same cut; their hashes are
12:54:44 <elliott> unchanged
12:55:32 <ais523> what if c and d aren't consecutive?
12:56:33 <elliott> ais523: ok, in response to this legitimate complaint, allow me to make it stupider
12:57:03 <elliott> ais523: there's no "paste end", just "paste start", and it takes d as well as c (so it's "between" instead); fill fills in the last line as well, and the fill change becomes the last line's new hash
12:57:42 <ais523> why are paste and fill separate changes? so they can have separate hashes?
12:58:15 <elliott> ais523: yep! that is the one and only reason.
12:58:24 <elliott> i think you will agree that it is, indeed, /impressively/ stupid.
12:58:32 <ais523> right, indeed
12:58:45 <elliott> oh, you don't even need the cut part. but you do, because that makes it even stupider!
12:58:48 <ais523> I think it's simple enough to have more than one hash for one change if required; we're already doing that with "new file"
12:59:09 <elliott> ais523: those aren't hashes in my latest model
12:59:13 <elliott> they're special end points
12:59:18 <elliott> and can only appear at the correct side of ranges
12:59:22 <elliott> so, they're not changerefs at all
12:59:25 <ais523> the main problem with just changing the hash for the first and last line is that you then get a conflict if you insert between the first and second lines of what you moved, when there's no reason to do so
12:59:29 <elliott> (although SOF/EOF both /contain/ a dirchangeref)
12:59:47 <elliott> ais523: ooh, maybe it should be based on adding a new "subfile" somehow to reuse the SOF/EOF... i'll stop, this is too silly
13:00:06 <elliott> ais523: also, that's true
13:00:15 <elliott> ais523: hmm, maybe we should make a concept of "textless lines"
13:00:21 <elliott> SOF/EOF would become one, and so would SOMove/EOMove
13:00:33 <ais523> yep, I mentioned that before, and it's increasingly seeming like a good idea
13:01:18 <elliott> ais523: although i don't really like that, because a lot of things are nonsense
13:01:19 <ais523> there is an issue here, actually, which I want to explain by example
13:01:22 <elliott> you can't delete SOMove, you can't move SOMove
13:01:24 <elliott> you can't replace SOMove
13:01:30 <elliott> it only makes sense in ranges
13:01:37 <elliott> and just blehhhhhhh
13:02:12 <ais523> suppose that the code initially starts "a b c d e f g"; I edit it to "a b e f c d g", then again to "a b e f h c d g"; meanwhile, you edit it to "a b i c d e f g"
13:02:17 <ais523> what should be the correct result after merging?
13:02:37 <elliott> ais523: is each word a line?
13:02:42 <ais523> yep
13:03:11 <elliott> umm, let's try duplicating this so my brain gets it
13:03:16 <elliott> aaa bbb ccc ddd eee fff ggg
13:03:21 <elliott> aaa bbb eee fff ccc ddd ggg
13:03:27 <elliott> aaa bbb eee fff hhh ccc ddd ggg
13:03:34 <elliott> aaa bbb iii ccc dd eee ff gg
13:03:43 <elliott> ais523: is the second-last line being longer intentional?
13:03:51 <ais523> yes
13:03:55 <ais523> actually, the last is also longer
13:03:59 <ais523> you just typoed it shorter
13:04:05 <elliott> lol
13:04:06 <ais523> aaa bbb iii ccc ddd eee fff ggg
13:04:46 <elliott> argh
13:04:55 <elliott> i can't get my brain to parse these letters properly :P
13:05:34 <elliott> ais523: I suspect the answer is "conflict, but a practical system will duplicate c"
13:08:18 <elliott> ais523: but i dunno
13:08:24 <ais523> actually, I think the correct answer is "conflict no matter what", as there are three plausible locations for i in the result
13:08:42 <elliott> ais523: no, I mean, it should conflict, but there's no reasonable way for the system to conflict
13:08:43 <elliott> but like i said
13:08:47 <elliott> i had a hard time parsing it
13:08:57 <ais523> [13:05] <elliott> ais523: I suspect the answer is "conflict, but a practical system will duplicate c"
13:08:59 <ais523> [13:05] <ais523> actually, I think the correct answer is "conflict no matter what", as there are three plausible locations for i in the result
13:09:11 <elliott> ...?
13:09:23 <ais523> oh, did it reconnect all by itself?
13:09:28 <ais523> I had a network outage for a couple of minutes there
13:09:37 <elliott> <elliott> argh
13:09:37 <elliott> <elliott> i can't get my brain to parse these letters properly :P
13:09:37 <elliott> <elliott> ais523: I suspect the answer is "conflict, but a practical system will duplicate c"
13:09:38 <elliott> <elliott> ais523: but i dunno
13:09:38 <elliott> <ais523> actually, I think the correct answer is "conflict no matter what", as there are three plausible locations for i in the result
13:09:39 <elliott> <elliott> ais523: no, I mean, it should conflict, but there's no reasonable way for the system to conflict
13:09:42 <elliott> <elliott> but like i said
13:09:44 <elliott> <elliott> i had a hard time parsing it
13:09:59 <ais523> but misspelled /reconnect
13:09:59 <ais523> and it seems that the IRC system figured it out on its own
13:10:25 <elliott> heh
13:10:34 <ais523> hmm, I think a move change itself should be "move from a to b between c and d to between e and f"
13:10:49 <ais523> [CTCP] Received CTCP-PING reply from ais523: 10 seconds.
13:11:17 <ais523> If you want to adopt a kid outside the US, you will have to abide by international law.
13:11:41 <elliott> wat
13:12:22 <ais523> observed during spam cleanup
13:13:01 <elliott> our spambots are great :)
13:13:13 <elliott> we should give them a special place on the wiki to donate their works
13:14:12 <Vorpal> don't we have a captcha thingy?
13:14:37 <elliott> yes for anon edits
13:14:40 <elliott> and for link edits
13:14:43 <elliott> but it's a really bad captcha
13:15:08 <Vorpal> should have for account creation too
13:15:56 <ais523> we do
13:16:06 <ais523> the spambot we've been getting lately knows how to break it
13:16:19 <elliott> ais523: bots!!! they're people too!!
13:16:49 <Vorpal> ais523, need a more advanced captcha then
13:17:01 <ais523> yes, but it's hard to persaude Graue to change it round
13:17:07 <Vorpal> hm
13:17:18 <ais523> the obvious fix to the current spam surge is requiring someone's first edit to be made outside userspace
13:17:29 <Vorpal> heh
13:17:34 <ais523> which is a trivial requirement for a human to obey (they can just edit the sandbox or something)
13:18:02 <ais523> what I'd /really/ like is the AbuseFilter extension, so I don't have to bug Graue to change the settings each time there's a new spambot attack
13:18:13 <ais523> but I'm not sure it'd be compatible with the version of MediaWiki used on Esolang
13:18:25 <Vorpal> so time to update mediawiki then?
13:18:30 <elliott> We should really just require email confirmation of registrations. Nobody but zzo would mind. :p
13:18:41 <Vorpal> he would mind?
13:18:48 <ais523> it wouldn't surprise me if the spambots could do that too
13:19:00 <elliott> zzo doesn't have an email address, and doesn't like having to use an email address to do things.
13:19:15 <ais523> elliott: just allow confirmation over gopher too
13:19:17 <ais523> then it'd be fine
13:19:24 <Vorpal> he doesn't...?
13:20:17 <elliott> Vorpal: why are you acting surprised?
13:20:47 <Vorpal> well, it is a major impairment. When you are looking for jobs people usually ask you to email your CV and so on.
13:20:54 <Vorpal> I forgot how old zzo was
13:21:00 <Vorpal> maybe that is no problem to him
13:22:08 <ais523> Vorpal: it's trivial to email someone your CV without an email address
13:22:15 <ais523> the issue is receiving, not sending
13:22:37 <Vorpal> ais523, well you usually get replies by email too
13:22:56 -!- Jafet has joined.
13:42:33 -!- elliott has set topic: The IOCCC is back on! http://www.ioccc.org | "Wittgenstein and Turing similarly agreed that it’s bad for a bridge to fall and kill people." | http://codu.org/logs/_esoteric/.
13:52:17 -!- ais523_ has joined.
13:52:40 <ais523_> hi again everyone
13:53:52 <elliott> hi
13:58:23 <ais523_> heh, I'm reading through the solutions to "sort by first occurrence"
13:58:37 <ais523_> and the four Perl answers each used a different algo
13:59:48 <ais523_> I don't get why the first one works at all, actually (I can mentally work through what it does but it seems it'd produce the wrong answer, so I think I'm missing something)
13:59:52 <ais523_> oh no, I've just realised why it works
13:59:56 <ais523_> that's beautifully hideous
14:00:07 <ais523_> <tails> print$$_ for map$$_.=$_,<>
14:01:03 <ais523_> it's hard to fit how awful that algo is from a maintenance point of view in my mind, it's that bad
14:01:12 <ais523_> and yet, it's beautifully short
14:06:23 -!- MSleep has changed nick to MDude.
14:10:22 <Vorpal> <ais523_> it's hard to fit how awful that algo is from a maintenance point of view in my mind, it's that bad <-- what does it do?
14:10:36 <Vorpal> it is basically gibberish to me
14:25:50 <Deewiant> Vorpal: 'heh, I'm reading through the solutions to "sort by first occurrence"'
14:41:35 <Vorpal> Deewiant, ?
14:41:46 <Deewiant> Vorpal: 2011-11-14 15:58:18 ( ais523_) heh, I'm reading through the solutions to "sort by first occurrence"
14:41:50 <Vorpal> oh right
14:41:52 <Vorpal> yeah
14:42:03 <Vorpal> Deewiant, better question: how does it do it?
14:43:14 <Deewiant> Beats me
14:54:22 <fizzie> "map $$_ .= $_, <>" does for each line -- let's say containing "foo\n" -- the equivalent of 'append "foo\n" to variable called "foo\n"' and then returns the result. So if you have a file containing the lines "a", "b", "a", it will return "a\n", "b\n", "a\na\n" while setting the variable "a\n" to "a\na\n" and "b\n" to "b\n". Then it tries to print all variables "a\n", "b\n", "a\na\n" -- the first one will print two lines of a, the second one one line of b, and t
14:54:22 <fizzie> he third one nothing.
14:59:20 <fizzie> Cf. http://sprunge.us/deHR
15:09:31 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:17:53 -!- Zuu has quit (Ping timeout: 240 seconds).
15:30:48 -!- ais523 has quit (Read error: Operation timed out).
15:34:19 -!- copumpkin has joined.
15:38:13 -!- ais523_ has quit (Quit: Page closed).
15:40:44 -!- ais523 has joined.
15:42:49 <ais523> Vorpal: Deewiant: the way the code works is to effectively use the entire space of possible variable names as a dictionary; each time it comes across a line of input, it concatenates that line to the variable with the same name, and records the resulting value; then afterwards, it interprets each of the resulting values as variable names in sequence, outputting what's there
15:43:22 <ais523> the only ones that will have nonempty values are the ones consisting of exactly one occurrence of the input lines, i.e. the first time they were encountered
15:45:48 <ais523> it's always nice when the winning entry in a golf competition is heavily obfuscated just because that's the shortest way to do it
15:50:13 <Gregor> <elliott> maybe we should ask Gregor :P
15:50:14 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
15:50:21 <Gregor> elliott: MAYBE YOU SHOULD M---actually I'll read this first.
15:50:52 <Gregor> OK, Cake babbles incoherently.
15:51:02 <Gregor> elliott: MAYBE YOU SHOULD MAKE TRANSACTIONAL HACKBOT WORK LOLOLOL
15:54:08 <Gregor> Subject of a spam email: "Playboy Playmate revealed!"
15:54:11 <Gregor> My thought: "No shit"
15:56:32 <quintopia> ais523: which challenge was it?
15:57:04 <ais523> quintopia: sort by first occurrence
15:59:40 <quintopia> ahh...uhh...link? :/
16:00:10 -!- Phantom_Hoover has joined.
16:00:56 <ais523> http://golf.shinh.org/p.rb?sort+by+first+occurrence
16:01:11 <ais523> I submitted it; I came across it at work and thought it was a really interesting question
16:01:31 <ais523> and after seeing the answers, still maintain that it's a really interesting question
16:03:43 <quintopia> your expl makes somewhat more sense now :P
16:03:58 <quintopia> whose solution are you describing
16:05:52 <ais523> quintopia: the best Perl solution
16:05:59 <ais523> by tails
16:06:10 <ais523> cat /usr/share/dict/words | egrep '^[abcdefghijklm]+$' - | ./a.out
16:06:12 <ais523> >jchgfbikmlaed
16:06:22 <ais523> if I add in n as well, it segfaults
16:06:40 <quintopia> whoa
16:06:59 <ais523> it's my IOCCC submission, that I've been working on for ages
16:08:32 <quintopia> something funky in the words list?
16:08:32 <ais523> heh, running under valgrind, it spews errors but doesn't segfault even with n added
16:08:53 <ais523> no, the program's just that insane
16:09:07 <ais523> it contains no statements, and calls no memory allocation functions, and uses no VLAs
16:09:07 <quintopia> huh
16:09:19 <ais523> ERROR SUMMARY: 15475827 errors from 15 contexts (suppressed: 12 from 7)
16:09:22 <quintopia> what does it do when it works
16:09:37 <ais523> calculates the winner of a Single Transferable Vote election to elect one candidate
16:09:48 <quintopia> ah
16:11:13 <ais523> aha, I think it's segfaulting due to exhausting memory
16:12:17 <ais523> hmm, I need to remember how this program actually works before the submission date
16:15:03 <Phantom_Hoover> <ais523> it's my IOCCC submission, that I've been working on for ages
16:15:03 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:15:11 <Phantom_Hoover> The IOCCC is still running?
16:15:28 <ais523> Phantom_Hoover: see topic
16:15:46 <Phantom_Hoover> O.o
16:23:33 <ais523> wait what?
16:23:44 <ais523> I start two variables uninitialized; if I initialize them to 0, it makes the program segfault
16:24:27 <ais523> oh, obviously
16:24:36 <ais523> they're uninitialized deliberately because they're being used as part of a stack-smash
16:30:05 -!- Ngevd has joined.
16:30:14 <Ngevd> Hello!
16:31:12 <ais523> hi
16:31:28 <ais523> I'm going to see if I can tweak this to fit the whole of /usr/share/dict/words into the 1.5GB stack space I extended the stack to
16:32:19 <Ngevd> I've been thinking about a functional Piet-like language
16:33:39 <ais523> I've got words containing a-s to run
16:33:44 <ais523> although adding t, there will be a lot more
16:33:46 <ais523> I'm trying that run now
16:35:33 <ais523> Vorpal: do you know where to download the Intel C compiler (for Linux) from?
16:37:38 -!- Phantom__Hoover has joined.
16:37:41 <ais523> hmm, compiling it with clang it gets into an infinite loop growing the stack until it segfaults due to inability to expand the stack
16:38:26 <Deewiant> ais523: http://registrationcenter-download.intel.com/irc_nas/1959/l_ccompxe_ia32_2011.0.084.tgz
16:38:48 <Deewiant> Based on the arch linux user package
16:38:49 <Ngevd> If you use the websafe palate rather than the Piet palate, that gives you 215 possible commands
16:39:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:39:15 <ais523> Deewiant: and a non-direct link?
16:39:24 <Deewiant> ais523: Somewhere there http://software.intel.com/en-us/articles/intel-compilers/
16:39:33 <ais523> thanks
16:43:57 -!- ais523 has quit (Ping timeout: 240 seconds).
17:05:07 -!- monqy has joined.
17:19:14 <Gregor> Hmmmmmmmmmmmmmmmmmmm
17:19:18 <Gregor> Speaking of IOCCC ....
17:19:29 <Ngevd> Sopio is a fun game
17:19:31 <Gregor> I seem to have a tweetable interpreter for a near-TC programming language ...
17:19:44 <Phantom__Hoover> "Near"-TC?
17:19:51 <Phantom__Hoover> That's what's also known as non-TC.
17:19:53 <Ngevd> C isn't turing-complete
17:20:12 <Gregor> Ngevd: Exactly
17:20:17 <Gregor> Phantom__Hoover: See: Ngevd
17:20:19 <Phantom__Hoover> That's a point of contention, arguably.
17:20:40 <Gregor> The language is conceptually TC, but since the interpreter is its definition, it's not.
17:21:40 <Phantom__Hoover> So it's not, in fact, a compliant interpreter?
17:21:48 <Gregor> char*a,b[9999];main(){gets(a=b);while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];puts(b);}
17:22:01 <Gregor> Calling it non-compliant makes no sense, the language is defined by the interpreter.
17:22:15 <Gregor> Nowait
17:22:15 <Phantom__Hoover> So it's not TC?
17:22:17 <Gregor> That's the wrong one ...
17:22:24 <Gregor> Good lord you're stupid
17:22:28 <Ngevd> It's over-specified
17:22:41 <Gregor> b[9<<20],*a=b;main(){while(scanf("%d",a++)>0);for(a=b;*a;)a+=(a[*a]-=a[a[1]])?3:a[2];while(*++a)putchar(*a);}
17:22:42 <Gregor> That's the one
17:22:48 <Ngevd> Spec for the language?
17:22:50 <Phantom__Hoover> It's either not TC, or the interpreter doesn't interpret the language. I fail to see what I'm missing.
17:22:56 <Gregor> The only thing that makes it non-TC is "9<<20"
17:23:22 <Gregor> Phantom__Hoover: You're missing applying any reasonable, intelligent thought to the problem instead of going "lol not TC therefore sux"
17:23:34 <Phantom__Hoover> Where did I say 'therefore sux'?
17:23:44 <Phantom__Hoover> Please point to the line where I said that.
17:24:10 <Gregor> <Phantom__Hoover> "Near"-TC? <Phantom__Hoover> That's what's also known as non-TC. <-- this implies it quite loudly, what with the "haha I refuse to acknowledge the notion of being near-TC"
17:24:32 <Phantom__Hoover> Because it's not a particularly useful concept?
17:24:41 <Gregor> Yes it is.
17:24:46 <Gregor> Because it includes things such as COMPUTERS.
17:24:57 <Phantom__Hoover> It's a computational class which isn't TC.
17:25:01 <Ngevd> C has more states than anyone can see in a hundred life-times
17:25:32 <Ngevd> Well, it's a linear-bounded automaton
17:25:37 <Phantom__Hoover> "Near-TC" is not a very good way of saying that.
17:25:46 <Phantom__Hoover> Ngevd, I thought it was an FSM?
17:26:04 <Gregor> FSM is not a very useful way of saying that either.
17:26:13 <Gregor> Since it includes everything from "A->halt" to computers.
17:26:17 <Ngevd> You can make an unbounded amount of arrays, you just need to define them all
17:26:18 <Ngevd> I think
17:26:24 <Ngevd> I've never actually used C
17:26:39 <Phantom__Hoover> The argument is based on sizeof.
17:26:52 <Gregor> Oy vey
17:27:07 <Phantom__Hoover> Not to mention that you'd still have bounded memory if you just defined loads of arrays.
17:27:32 <Phantom__Hoover> But ultimately, C's TCness is essentially a matter of trawling through minutiae in the spec.
17:34:12 <Gregor> !c printf("%d", -1 || 42);
17:34:14 <EgoBot> 1
17:34:15 <Gregor> :(
17:34:24 <Gregor> I thought || passed through the actual true value.
17:36:59 -!- augur has quit (Remote host closed the connection).
17:40:55 -!- Ngevd has quit (Ping timeout: 276 seconds).
17:46:59 -!- Ngevd has joined.
17:48:11 <Ngevd> Today's Gunnerkrigg Court is pretty funny
17:48:13 <Gregor> Well, either way, my tiny interpreter is about 25% of the way to a IOCCC competitor.
17:48:53 <Ngevd> Is the spec for the interpreted language anywhere?
17:49:11 <Phantom__Hoover> I think today may have had the most dismal afternoon I've experienced.
17:52:05 <Phantom__Hoover> It's like the sun never even bothered to rise.
17:53:21 <Ngevd> That's because you're in Edinburgh, and the UK has predominantly Easterly winds, and Glasgow is West of Edinburgh and I get the feeling that East and West etc. shouldn't be capitalized.
17:53:30 <monqy> that sounds amazing; the sun bothered rising here and it's king of lame
17:53:43 <monqy> kind of lame, I mean
17:53:50 <monqy> it is probably not king of lame
17:53:51 <Gregor> Here it's an amazing combination of overcast and humid. There's no sun and yet I'm sweaty and it's miserable.
17:54:02 <Ngevd> It's actually pretty nice here
17:54:06 <Ngevd> Go Hexham!
17:56:57 <Ngevd> :D :D :D right?
17:57:50 <monqy> right D:
17:57:58 <monqy> im hexjealous
17:58:33 <monqy> unless by pretty nice you meant warm and blue skies; I hate that
17:58:42 <Ngevd> Cold and blue
17:58:45 <Ngevd> Brisk
17:58:48 <Ngevd> Autumnal
17:58:54 <Ngevd> Novembry
17:58:54 <monqy> sounds pretty nice
17:59:16 <monqy> I have to turn on the fan to get the cold but once I do it's fine
18:00:29 <Ngevd> Ooh dinner
18:00:34 -!- Ngevd has quit (Quit: FOOD).
18:12:30 <Phantom__Hoover> <monqy> that sounds amazing; the sun bothered rising here and it's king of lame
18:12:37 <Phantom__Hoover> Nonono, the sun *rose*.
18:13:26 <Phantom__Hoover> It's just that by 3 o'clock or so, heavy cloud cover and school lighting conspired to make the single most depressing light level physically possible.
18:13:53 <Phantom__Hoover> Night would have been *welcome*; instead, there was just this pervasive greyness everywhere.
18:14:08 -!- augur has joined.
18:14:35 <Phantom__Hoover> <Ngevd> Novembry
18:14:52 <Phantom__Hoover> I think we've had about two days like that, which is a pity because they're my second favourite.
18:15:45 <CakeProphet> Americans did not lose their British accents. Rather, the British gained their accents in the last few hundred years, thanks in part to public (private) schools teaching children "received pronunciation."
18:16:00 <CakeProphet> Jerks, horribly disfiguring a nation's speech for no reason.
18:16:20 <Phantom__Hoover> *English, I think you'll find, although I have an RP accent for reasons unclear to basically everyone.
18:16:41 <Gregor> It's especially odd since he's Flemish.
18:16:45 -!- Nisstyre has quit (Ping timeout: 240 seconds).
18:17:27 <CakeProphet> gross.
18:18:36 -!- Nisstyre has joined.
18:19:21 <CakeProphet> though I have an almost non-existent accent despite being a southern American.
18:19:35 <CakeProphet> probably similar to midwest accent.
18:19:44 <CakeProphet> but with some southern peculiarities.
18:20:17 <Phantom__Hoover> You realise that over here you'd have an accent, right?
18:20:24 <Gregor> "Non-existent accent" is an artificial concept.
18:20:52 <Gregor> One propagated primarily by people with one of the most fringe accents in existence ...
18:21:02 <Phantom__Hoover> i.e.?
18:21:06 <CakeProphet> Phantom__Hoover: uh, duh?
18:21:06 <Gregor> USA
18:21:21 <CakeProphet> I didn't mean /literally/ that I have no accent, for fucks sake
18:21:22 <CakeProphet> I meant
18:21:27 <CakeProphet> I don't have a southern accent.
18:21:28 <CakeProphet> you know
18:21:32 <CakeProphet> the region I'm from.
18:21:38 <CakeProphet> where you usually get your accents from.
18:22:06 <CakeProphet> The phonetician Jack Windsor Lewis frequently criticises the name "Received Pronunciation" on his blog: he has called it "invidious",[20] a "ridiculously archaic, parochial and question-begging term"[21] and argued that American scholars find the term "quite curious".[22] He used the term "General British" [to parallel "General American"] in his 1970s publications of A Concise Pronouncing Dictionary of American and Briti
18:22:12 <CakeProphet> yeah! what would the Americans think!
18:22:19 <CakeProphet> they think it's silly!
18:22:35 <Gregor> I'm from the west coast, and yet my accent is practically identical to those from Indiana! AMAZING
18:22:55 <CakeProphet> Gregor: yes clearly we both have fucking super powers.
18:23:00 <CakeProphet> there can be no other way
18:23:05 <CakeProphet> to describe this amazing mutation.
18:23:48 <Gregor> CakeProphet: Also I went to a foreign country once and I could understand them, just like they were speaking the same language. It's like I have a natural born ability to speak and understand Canadian without even knowing it.
18:24:02 <CakeProphet> woah dude.
18:24:19 <CakeProphet> see when I hear English people talk it just sounds like a bunch of jerks.
18:24:32 <CakeProphet> can't understand anything, I'm too distracted by the douchebaggery.
18:24:54 <Gregor> CHIM-CHIMINEE-CHIM-CHIMINEE-THIS-IS-'OW-OLL-BRITONS-TOKK
18:26:17 <Gregor> Really, nobody's going to smack me for that?
18:26:27 <CakeProphet> no it's completely accurate.
18:26:45 <Phantom__Hoover> I really wish I actually had a Scottish accent.
18:26:54 <CakeProphet> Scottish accent sounds nice.
18:26:55 <Phantom__Hoover> Like, a rhotic one.
18:26:58 <CakeProphet> Irish too.
18:27:37 * CakeProphet would like to visit Scotland and Ireland, but thinks England is for JERKS.
18:27:46 <Gregor> How 'bout Wales?
18:27:57 <CakeProphet> I have no opinion of things on ISLANDS, sheesh
18:28:06 <CakeProphet> how trivial.
18:28:10 <Gregor> ................
18:28:12 <CakeProphet> to be surrounded by water.
18:28:16 <Phantom__Hoover> I...
18:28:17 <Gregor> .................................
18:28:18 <Phantom__Hoover> CakeProphet
18:28:19 <Phantom__Hoover> do you
18:28:20 <Gregor> X_X
18:28:21 <Phantom__Hoover> even know
18:28:25 <CakeProphet> know what?
18:28:26 <Phantom__Hoover> how the UK is shaped
18:28:34 <CakeProphet> yeah it's shaped like a sake of potatos.
18:28:36 <CakeProphet> *sack
18:28:40 <Phantom__Hoover> yesyesyes
18:28:40 <Phantom__Hoover> but
18:28:42 <Phantom__Hoover> do you know
18:28:45 <Phantom__Hoover> where the countries are
18:28:52 <Gregor> Clearly not.
18:28:56 <CakeProphet> or like
18:28:59 <CakeProphet> a venus fly trap
18:29:51 <Gregor> I would make some snarky comment about foreigners' understanding of the location of US states, but I'm not sure if any failure could top the Isle of Wales.
18:30:16 <CakeProphet> dude Wales is totally an island
18:30:20 <CakeProphet> learn2geography nubs
18:31:24 <Phantom__Hoover> Gregor, um, most of the people I know could roughly place most states, and definitely state which one is composed of islands.
18:31:40 <Gregor> Phantom__Hoover: Hence why it couldn't top the Isle of Wales.
18:32:09 <CakeProphet> but seriously Wales seems like a cool place to visit.
18:32:10 <Phantom__Hoover> It still doesn't beat Sgeo's astonishing failure to know where Scotland is.
18:32:27 <Phantom__Hoover> Like, he thought that it was "near the UK".
18:33:04 <CakeProphet> apparently when I type things they magically become Serious today.
18:33:41 <CakeProphet> as opposed to
18:33:43 <CakeProphet> any other day.
18:35:23 <Phantom__Hoover> @tell elliott Seen on confirmation form for computerons: "Product Desc. e-Scan Anti-Virus ES-AV-1". ???
18:35:23 <lambdabot> Consider it noted.
18:37:15 <CakeProphet> http://en.wikipedia.org/wiki/File:BenNevis2005.jpg
18:37:23 <CakeProphet> highest point on the British Isles eh?
18:38:11 <Gregor> Yup, that one's on the Island of Blackpool.
18:38:42 <CakeProphet> http://en.wikipedia.org/wiki/File:Denali_Mt_McKinley.jpg
18:38:45 <CakeProphet> oooooh what now bitches?
18:39:18 <Gregor> http://en.wikipedia.org/wiki/File:Everest_kalapatthar_crop.jpg
18:39:21 <Gregor> Bitch please.
18:40:21 <CakeProphet> Gregor: this is US vs. UK don't bring Nepal into this shit.
18:40:29 <Gregor> :P
18:40:55 <Gregor> http://en.wikipedia.org/wiki/File:Olympus_Mons_alt.jpg
18:41:49 <CakeProphet> http://en.wikipedia.org/wiki/File:Census-2000-Data-Top-US-Ancestries-by-County-1396x955.png
18:41:52 <CakeProphet> hey look
18:42:00 <CakeProphet> in my county they don't even try to classify my ancestery
18:42:06 <CakeProphet> they're just lik "uh..... American"
18:42:45 <CakeProphet> Gregor: earth nipple.
18:42:57 <fizzie> Our highest point is 1324 metres; apparently we lose even to UK, if only by 20 metres.
18:43:24 -!- ais523 has joined.
18:43:41 <Gregor> lol @ Puerto Rico: Puerto Rican
18:44:09 <CakeProphet> fizzie: yeaaaaah sucka. whatchu gonna do about all these landmass we got up in this shit?
18:44:13 <Gregor> Also: Germans are EEEEEEVERYWHERE
18:44:48 <CakeProphet> actually wait I may be "other"
18:44:51 <CakeProphet> whatever the fuck that is.
18:45:11 <Phantom__Hoover> <CakeProphet> highest point on the British Isles eh?
18:45:24 <Phantom__Hoover> Don't knock it, we had way less space for cliffs.
18:46:28 <CakeProphet> Phantom__Hoover: maybe you should have conquered bigger islands, asshole.
18:46:45 <ais523> yay, my IOCCC entry now works in clang
18:46:54 <ais523> I wonder if I can get it to work with optimization turned on?
18:47:09 <Gregor> Also, Britain has the longest coastline in the world; it's actually many times the circumference of the Earth.
18:47:15 <Gregor> (ba-dum tish)
18:47:22 <ais523> nope ;)
18:47:50 <Gregor> ais523: What's yours do?
18:47:56 <Phantom__Hoover> Gregor, given that coastlines are actually-fractal (as opposed to popscience-fractal) that's not terribly meaningful.
18:48:02 <Gregor> ais523: I'm thinking about converting my tiny interpreter into something, but need more amusement in it.
18:48:08 <Gregor> Phantom__Hoover: BA-DUM MOTHERFUCKING TISH
18:48:15 <Phantom__Hoover> And there's no _way_ Norway has a shorter coastline.
18:49:00 <ais523> Gregor: it counts votes for the single transferable vote
18:49:09 <ais523> hopefully, I won't have to get it working in each compiler in existence separately
18:49:16 <Gregor> X-D
18:50:28 <Gregor> ais523: My usual tact is to get it working on platforms that are completely distinct in three axes: Compiler, OS and architecture. I find that doing my native dev on x86_64+gcc+GNU/Linux then porting to i86+openwatcom+DOS and ARM+gcc+GNU/Linux satisfies these needs and usually makes portable code. Not sure it's a good strategy for IOCCC though.
18:52:02 <ais523> Gregor: well, I'm trying to do something massively nonportable and make it portable anyway
18:52:09 <Gregor> Hyuk
18:52:18 <ais523> breaking the C standard in preference to not breaking it
18:52:59 <ais523> while trying to avoid compiler warnings even on the highest warning settings
18:53:02 <CakeProphet> noooooo not the /standard/
18:53:31 <ais523> gcc still gives three warnings, but I can't tell why
18:56:30 <ais523> Deewiant: wow, Intel want people to fill in a bunch of information to get the noncommercial version of icc
18:56:44 <Deewiant> ais523: Hence direct links
18:56:49 <ais523> right, indeed
18:56:53 <ais523> but then how would I know what the license was?
18:57:01 <Deewiant> I presume it's included inside the tarball
18:57:49 <Gregor> ais523: Come ooooooooooon, you know you want to try openwatcom.
18:57:55 <Gregor> It's just like being in the 1990's again~
18:57:55 * ais523 wonders why Intel renamed "Intel C++ Compiler" to "Intel C++ Composer"
18:58:05 <ais523> Gregor: heh
18:58:10 <ais523> I have DJGPP
18:58:16 <Gregor> Oh come on.
18:58:21 <Gregor> DJGPP is just GCC over a shitty OS.
18:58:22 <ais523> and even Borland C++ 4 for Windows 3.1, although not on this computer
18:58:27 <Gregor> That's better.
18:58:27 <ais523> right, indeed
18:58:42 -!- pkzip has joined.
18:58:46 <Gregor> OpenWatcom has the advantage that you can run it on modern Linux, but target ancient DOS.
18:59:06 <ais523> how does this tarball come to half a gigabyte?
18:59:11 <Gregor> lol
18:59:13 <Gregor> Because Intel.
19:00:25 -!- pkzip has quit (Remote host closed the connection).
19:01:48 <Phantom__Hoover> Argh, I still need to visit Maplins for cables and stuff and I've left it too late today.
19:02:06 <Phantom__Hoover> I guess I can wait till the parts arrive and then actually know what cables I need?
19:04:08 <CakeProphet> ais523: I assume uncompressed?
19:04:21 <ais523> no, that's the tarball itself
19:04:28 <ais523> I haven't downloaded it full yet, so haven't tried to decompress it
19:04:42 <CakeProphet> 0_0
19:05:21 <Deewiant> ais523: Oh, also, note that that was the i386 version, there's a separate one for x86-64
19:05:33 <Gregor> ais523: Give us a nice `du -bx * | sort -n | curl -F 'sprunge=<-' http://sprunge.us` when it's extracted kthx?
19:05:42 <ais523> Deewiant: i386 is correct, luckily
19:06:08 <ais523> Gregor: what about tar tf?
19:06:15 <ais523> that'd save actually having to extract it
19:06:27 <Gregor> ais523: Does that show directory summaries? I figured you were going to extract it anyway ...
19:06:44 <ais523> I don't want to have to extract the whole thing, if I can help it
19:06:50 <Gregor> Ah :P
19:09:02 * Gregor stares at his nearly-empty 3TB hard disk.
19:09:09 <Gregor> Truly a thing of beauty.
19:10:04 <CakeProphet> quick! backups! then porn! then random torrents!
19:10:19 <ais523> then intel c++ composers!
19:10:25 <ais523> seriously, "composer"?
19:10:48 <CakeProphet> ais523: u dont respect art dude.
19:11:06 <fizzie> ais523: TI's C compiler for for their DSP chips is called "Code Composer Studio".
19:11:15 <ais523> weird
19:11:23 <ais523> this is as bad as the series/season thing on TV
19:11:42 <ais523> also, my system has caught serial process crashing issues again
19:11:54 <fizzie> On the third hand, Metrowerks CodeWarrior.
19:12:02 <ais523> where Firefox froze, then my terminal froze
19:12:36 <ais523> oh, and now they're all back to normal
19:12:41 <fizzie> I don't think I have ever used any of the CodeWarrior tools, but I'm pretty sure they have a "Battle" menu in the IDE where others have a "Build" menu. (Okay, not really.)
19:14:21 <fizzie> There's also Sun Studio (now Oracle Solaris Studio; formerly this and that); the "Studio" term seems popular too.
19:14:58 <ais523> Gregor: the file was so big I failed to download it
19:15:13 <ais523> Firefox eventually decided it had finished around halfway through
19:15:19 <ais523> and the resulting file didn't decompress
19:21:19 <Gregor> Ha
19:22:17 <Gregor> Hmmm, maybe I can make a simple JIT for IOCCC. I assume that's been done?
19:23:40 <Deewiant> 1996 august Subset of C compiler and byte code interpreter
19:23:44 <Deewiant> Gregor: If that counts?
19:23:56 <Gregor> Doesn't sound like a JIT to me.
19:24:31 <ais523> what would it JIT? Java bytecode?
19:24:43 <ais523> >jqvzuxbfiwpkoahmclnyrgdtes
19:24:43 <Gregor> To be determined. Definitely not Java :P
19:24:50 <ais523> ==17720== ERROR SUMMARY: 1099046944 errors from 15 contexts (suppressed: 12 from 7)
19:24:59 <ais523> /beautiful/
19:25:12 <Gregor> lol @ suppressed
19:25:17 <ais523> of course, I should have expected s to win
19:25:29 <Deewiant> Okay, it's just an interpreter; so no JIT, apparently
19:25:44 <Gregor> Deewiant: Hence "Doesn't sound like a JIT to me."
19:25:57 <Deewiant> Gregor: It could've been a JIT based on that description
19:26:05 <Deewiant> I checked the full .hint file: it's not
19:26:17 <Gregor> Deewiant: And yet, it "[didn't] sound like a JIT to me." X-P
19:26:33 <Deewiant> Gregor: Sheesh, I just confirmed it :-P
19:26:37 <Gregor> ^^
19:27:29 <Gregor> Anyway, I suspect I could make a (very!) simple JIT.
19:27:36 <Deewiant> (And "so no JIT, apparently" referred to all submissions thus far, in case that wasn't clear.)
19:27:50 <Deewiant> (s/submission/winner/)
19:28:28 <ais523> Gregor: well, it has to be obfuscated, as well as being golfed
19:28:34 <Gregor> ais523: Natch.
19:31:02 <Gregor> "and excluding any ; { or } immediately followed by whitespace or end of file" does this mean that I save myself a byte by adding a space after every ;???
19:31:35 <ais523> Gregor: yes
19:31:44 <ais523> that trick's been known for years
19:31:53 <ais523> as has writing lookup tables as "{ ; } ; ; { { }" etc
19:31:59 <Gregor> lol
19:31:59 -!- Zuu has joined.
19:32:27 <ais523> use both spaces and tabs for added effect
19:32:29 <Gregor> (You can tell I haven't investigated IOCCC too much :P )
19:32:37 <ais523> (I don't think C lets you put vertical whitespace inside strings)
19:37:32 <Gregor> Any opinions on the best counter for these rules?
19:37:38 <Gregor> There must be an IOCCC one :)
19:37:54 -!- CakeProphet has quit (Ping timeout: 240 seconds).
19:40:25 <ais523> there's a counter linked from their website, or always used to be
19:42:18 <Gregor> Hm, can't find it ...
19:46:45 <ais523> >jqvzuxbfiwpkoahmclnyrgdtes
19:46:52 <ais523> ==27192== ERROR SUMMARY: 1099046944 errors from 15 contexts (suppressed: 12 from 7)
19:46:52 -!- myndzi has quit (Ping timeout: 258 seconds).
19:46:55 <ais523> that's with clang
19:47:22 <ais523> it's fun to see the single-transferable-vote ordering of letters in words (where words are considered more inclined to vote for letters towards the end)
19:49:57 <coppro> what's with the valgrind?
19:51:24 <ais523> I wanted to see what its reaction would be
19:51:31 <ais523> also, I get a segfault without it, with large input
19:51:46 -!- Patashu has joined.
19:51:56 <ais523> I think it's to do with extending the stack
19:52:06 <ais523> $ cat /usr/share/dict/words | egrep '^[abcdefghijklmnopqrstuvwxyz]+$' - | valgrind --error-limit=no --main-stacksize=1500000000 ./a.out
19:52:22 <coppro> ah
19:52:27 <ais523> the default main-stacksize is too low
19:58:40 <Phantom__Hoover> elliott, oi, ping.
20:04:08 -!- Ngevd has joined.
20:14:19 -!- Ngevd has quit (Ping timeout: 276 seconds).
20:16:53 <Gregor> Urrrrgh, I know I can make a portable golf JIT >_<
20:16:57 <Gregor> But it's tuff :P
20:19:35 <Gregor> The real tricky part is jumping ...
20:25:07 -!- tiffany has joined.
20:26:49 -!- oerjan has joined.
20:27:21 <oerjan> hi
20:28:00 <oerjan> <elliott> @hoogle State s a -> StateT s m a
20:28:26 <oerjan> once the state function is made into a method as planned, state . runState should work
20:28:34 <oerjan> oh hm
20:28:42 <oerjan> runState doesn't actually exist
20:28:47 <oerjan> :t runState
20:28:48 <lambdabot> forall s a. State s a -> s -> (a, s)
20:29:02 <oerjan> erm, it does. it's just not a field anymore, i guess.
20:29:26 <oerjan> ...elliott idle for six hours?
20:29:39 <oerjan> something must be wrong
20:31:45 <oerjan> <elliott> "skalman" will be a host on some university network, I suspect.
20:32:05 <oerjan> swedish comic/cartoon character.
20:34:31 -!- Ngevd has joined.
20:34:42 -!- GreaseMonkey has joined.
20:36:58 <zzo38> I made a code that does that, yesterday, to make State s a -> StateT s m a but find what helped better for you in case
20:37:05 <Ngevd> Hello!
20:37:25 <ais523> help my mouse pointer's gone crazy
20:37:29 <ais523> (this touchscreen doesn't like getting wet)
20:37:32 <ais523> *touchpa
20:37:36 <ais523> **touchpad
20:38:27 <ais523> so it's busy teleporting the mouse pointer around a bunch
20:38:58 <Ngevd> Will Wheaton plays Minecraft!?
20:41:03 <oerjan> Ngevd: knowing that he is a redditor, i'd say that was inevitable.
20:41:34 <Ngevd> How long till Sheldon off the Big Bang Theory is playing it?
20:43:32 <Gregor> Ngevd: *Wil
20:44:09 <Ngevd> I have a tendency to double consonants at the end of three-letter shortened forms of people's names
20:45:27 <Gregor> Think -1 will semi-portably be acceptable for all protection modes for mmap?
20:46:51 <tswett> Django's database half looks pretty nice. It's, like, you can treat tables as objects! And you can interact with them!
20:47:01 <tswett> (Database interaction is exactly half of Django, right?)
20:47:58 -!- Vorpal has quit (Ping timeout: 252 seconds).
20:56:14 <oerjan> it's what Dja is abbreviating
20:56:40 <tswett> "Djatabase"?
20:57:53 <tswett> Hey, this is funny. The server Django running on is called Remy. It turns out those are both characters from Ratatouille.
20:58:15 <Gregor> I am now 88% confident that I can make a semi-portable JIT for a language that's fundamentally usable within all the requirements.
20:58:24 <oerjan> tswett: Database JnterAction, duh
20:58:29 <tswett> Ah.
20:58:37 <tswett> And as everyone knows, J is just another way of writing I.
20:58:46 <oerjan> yeah
20:58:46 <tswett> That's why they're next to each other in the alphabet.
20:59:08 <oerjan> VERVM EST
21:03:19 <Gregor> Hmm, is there a valid CPP equivalent of #define O O--
21:03:27 <Gregor> That is, decrement the value of a #define? I don't think so...
21:03:54 <coppro> nope
21:03:59 <Gregor> Piffle.
21:04:08 <Gregor> I'll have to find another convoluted way to do this then :P
21:04:37 <tswett> Is there a way to make the CPP only process lines that start with ##?
21:04:59 <tswett> Because maybe you can use two CPP passes, so that the first pass determines what happens in the second pass.
21:05:12 <Gregor> Naw, that ain't my style even if it did work.
21:05:30 <tswett> Why are you in #esoteric if that's not your style?
21:05:40 <tswett> Come to think of it, have you ever even created an esolang?
21:05:42 <tswett> I think you are...
21:05:55 <tswett> ...give me a minute, let me try to think up a good, accusatory word for someone who doesn't belong...
21:06:10 <olsner> an... unbelonger!
21:06:19 <tswett> AN UNBELONGER
21:10:38 <olsner> ooh, quark and martok appear as humans in this back-in-time parallel-fantasy-universe episode
21:11:35 <Phantom__Hoover> Yes, that is elliott's favourite.
21:11:40 <Phantom__Hoover> Also you forgot the racism.
21:11:41 * olsner 's riveting retelling of DS9 in one-line episode summaries continues
21:11:51 * tswett ponders how easy it would be to share a semaphore over TCP.
21:11:53 <tswett> Pretty easy.
21:12:12 <Phantom__Hoover> olsner, BtW, no satisfactory answer is ever given as to WTF was going on in that episode; HTH.
21:12:46 <Gregor> What's going on is a rather severe blow to the head :P
21:12:53 <olsner> Phantom__Hoover: it must be a ... temporary anomaly
21:13:14 <Phantom__Hoover> Gregor, maybe?
21:13:40 <Gregor> I'm trying to figure out a way of, for all values from (say) 0 to 1024, defining a function oX(...) { f[X](); } for that X.
21:13:46 <Gregor> They have to be separate functions for JIT reasons.
21:14:28 <Phantom__Hoover> olsner, also dude, you missed the shockingest of all: Odo without makeup.
21:14:39 <Phantom__Hoover> It is amazing because he doesn't look like Odo at all.
21:14:58 <Gregor> What about Worf without forehead and voice modification? I think it's the only in-universe time he appears human.
21:15:13 <Phantom__Hoover> FSVO 'in-universe'.
21:15:18 <olsner> Phantom__Hoover: nah... quark, martok and gul dukat were much more shockingest so far
21:15:20 <Gregor> In-show then ;P
21:15:31 <olsner> odo was just a bit more boring :)
21:15:35 <Phantom__Hoover> Wait, Martok was in it?????
21:15:46 <Phantom__Hoover> Weyoun was, but Martok?
21:17:20 <olsner> yes, in the first scene in the office martok was showing sketches (of DS9, among other things)
21:19:20 <lifthrasiir> Gregor: uhm, does X have to be numbers?
21:19:41 <Gregor> lifthrasiir: Well, f[X] is accessing an array, so yes.
21:20:46 <olsner> Phantom__Hoover: Weyoun? you mean Commander Shran :)
21:20:55 <lifthrasiir> how about this?: #define O(x) o##x(...) { f[*#x-'a'](); } \n O(a)O(b)O(c)O(d)
21:20:56 <Phantom__Hoover> No, I mean Brunt.
21:21:24 <olsner> what, he's Brunt *too*?
21:22:04 <Gregor> lifthrasiir: O(a)O(b) blows out all my bytes (i.e. is too big), I was trying to find a way to do crazy CPP loops for it ...
21:22:32 <lifthrasiir> Gregor: no, you need just five levels of such macros.
21:22:36 <lifthrasiir> (for 1024 values)
21:22:38 <Gregor> Ohhhhhhhhhhhhhhhhhhhhhhh
21:22:41 <Gregor> Clever...
21:22:43 <Phantom__Hoover> olsner, he's a lot of people.
21:22:51 <Phantom__Hoover> Amazingly, they only appeared in the same episode once.
21:23:09 -!- Taneb has joined.
21:23:10 <Gregor> ... hmmm, it could work ...
21:23:14 * Gregor thinks.
21:23:27 <lifthrasiir> Gregor: should the pointers to o... things be stored in some array?
21:23:27 <Gregor> I'd just need to name them aaaaa aaaab aaaba aaabb etc
21:23:31 <elliott> Gregor: What are you doing, just use chaospp
21:23:31 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
21:23:35 <lifthrasiir> then that could be another story
21:23:41 <olsner> oh, he's played *nine* different characters, that's about 7 more than I've noticed yet
21:23:46 <Gregor> lifthrasiir: Naw, you've given me another idea.
21:23:54 <Gregor> elliott: IOCCC
21:26:56 -!- Ngevd has quit (Ping timeout: 258 seconds).
21:31:55 -!- Taneb has quit (Ping timeout: 258 seconds).
21:34:25 <elliott> Gregor: More like OGC!!!!!!
21:34:31 -!- Ngevd has joined.
21:34:32 <zzo38> Is this how the function to load DVI file should be? withDVI :: FilePath -> s -> (s -> Page -> IO (s, t)) -> IO [t]; You can make different idea if you have other idea please. Maybe this is not best way; I don't know for sure
21:37:16 <elliott> ais523: did you have any more sg thoughts?
21:37:17 <oerjan> zzo38: perhaps -> IO (Maybe (s, t)) so you have a way to halt?
21:37:19 <elliott> :p
21:37:28 <oerjan> :t unfoldM
21:37:29 <lambdabot> Not in scope: `unfoldM'
21:37:35 <oerjan> hm
21:38:04 <ais523> elliott: no
21:38:36 <zzo38> oerjan: O, yes, OK; it can have a way to halt.
21:38:45 <elliott> ais523: I think my other sgthought still makes sense, although it depends on sg itself making sense, so hopefully merge changes can be fixed :P
21:38:58 <zzo38> withDVI :: FilePath -> s -> (s -> Page -> IO (Maybe (s, t))) -> IO [t];
21:39:10 <ais523> I'm currently happy with your current plan, because it seems, at worse, equivalent to the old plan
21:39:11 <ais523> *at worst
21:39:22 <elliott> ais523: hmm, I have a move plan?
21:39:28 <elliott> or do you mean the conflict resolution plan
21:39:34 <ais523> conflict resolution
21:39:57 <elliott> right
21:40:05 <ais523> I'm pretty sure that a move patch should be "move a..b from between c,d to between e,f"; the problem is I'm not sure what it should leave as the hashes afterwards
21:40:29 <ais523> come to think of it, does it work just to leave the hashes of every line the same?
21:40:43 <ais523> the really simple stupid solution
21:40:54 <oerjan> zzo38: hm oh or is it implicitly halting when it's running out of Pages, i didn't realize that at first. in which case doesn't this look like a kind of iteratee?
21:40:55 <ais523> I can't think of an obvious counterexample; quick, find one to prove I'm not mad
21:41:21 <elliott> ais523: umm, that's the one I showed broken
21:41:28 <elliott> ais523: it breaks tsorting, remmber?
21:41:29 <elliott> remember?
21:41:40 <ais523> does it?
21:42:01 <elliott> ais523: yes; changeset {move (a,b) between (c,d), insert "hi" between (c,a)}
21:42:09 <elliott> ais523: second change needs to be applied after the first but has no dependency on it
21:42:11 <elliott> tsorting fails, Q.E.D.
21:42:30 <ais523> elliott: oh, the dependency isn't explained in the hash names, I see
21:42:42 <elliott> ais523: yep, which is one of sg's major strengths
21:42:48 <ais523> the dependency's still there in "that's the only thing that could put c next to a", but the problem is that that isn't explicit at all
21:42:49 <elliott> the order to apply a changeset in is trivially determined
21:42:54 <ais523> which I agree is a valid problem
21:43:04 <elliott> yep
21:43:35 <elliott> ais523: we could /probably/ hack it up by just shifting the ordering around a bunch when move changes are involved, but I refuse to implement that
21:43:45 <olsner> ooh, are you working on spacegoat again?
21:43:46 <ais523> yes, we want a nonhackish version
21:43:51 <elliott> olsner: yep
21:43:56 <ais523> olsner: deliberate typo?
21:43:58 <elliott> the only mars-capable version controls ystem
21:44:00 <elliott> `quote spacegoat
21:44:02 <HackEgo> 655) <fizzie> Spacegoat is the network-operations-optimized-for-latency-of-minutes-or-hours-due-to-light-speed-limits variant of scapegoat, to be used when you need to check out some code from the Mars colony. <fizzie> (I'm pretty sure we'll have established a Mars colony by the time scapegoat rolls out.)
21:44:17 <olsner> ais523: yes, better name :)
21:44:45 <zzo38> Finally, the Haddock documentation for Data.Monoid.Plus now works.
21:45:16 <elliott> zzo38: iirc hackage building broke for a while recently
21:45:58 <zzo38> elliott: O, well it seem to work now. That might be why mine and other not mine packages were not working before
21:46:10 <elliott> ais523: I can tell you about the last sgthought if you're interested, although it's not so much part of sg itself as much as taking advantage of its strengths
21:46:23 <ais523> tell me anyway
21:48:12 <elliott> ais523: basically, it's an idea for a patch management system based on top of sg to solve a lot of workflow problems I have with existing VCSes, with some ideas taken from the quilt patch management system originally by Andrew Morton for Linux stuff
21:48:21 <elliott> (I suppose git was basically Linus' own version of that to start with, actually)
21:48:39 <ais523> quilt's confusing; it somehow manages to not be a VCS despite acting like one
21:48:45 <ais523> what VCS features is it missing?
21:48:45 <elliott> heh
21:48:57 <elliott> I'm not sure exactly, I've never /used/ it, only read about it >:)
21:49:07 <elliott> I know hg has its own version of quilt integrated as an extension
21:49:11 <pikhq_> I wouldn't say git is particularly friendly for the patch-based workflow, though. Simply because it doesn't have the idea of a "patch".
21:49:48 <elliott> ais523: anyway, here's the basic idea:
21:49:50 <Ngevd> I need to avoid TVTropes
21:50:31 <Phantom__Hoover> Ngevd, just use my method, i.e. the fact that it's crap these days.
21:50:52 <monqy> good method
21:50:54 <ais523> after a few minutes I tend to open less than one page on average from each TV Troeps page nowadays
21:51:00 <ais523> so the problem resolves itself
21:51:04 <ais523> *TV Tropes
21:51:20 -!- variable has quit (Quit: I found a 1 /dev/zero).
21:52:08 <zzo38> How do you make Haddock include instances defined in this program of classes defined in the other library?
21:52:33 <Phantom__Hoover> Ngevd, I mean c'mon, they renamed *The Wesley*.
21:52:39 <Phantom__Hoover> That's proper shark-jumping, that is.
21:56:18 <Ngevd> That is a very good plan
21:56:36 <Ngevd> Now I just need to abandon here, IWC, and MSPA
21:56:52 <monqy> but here is good
21:56:57 <monqy> except when it isn't
21:57:02 <Ngevd> And all the free time will be mine!
21:57:03 <Phantom__Hoover> You didn't auto-abandon IWC when it stopped?
21:57:22 <elliott> Phantom__Hoover: It didn't stop.
21:57:42 <Phantom__Hoover> It stopped updating, and it's not like the new annotations are big time-sinks.
21:58:00 <Ngevd> Yeah, but I'm a regular on the forums
22:00:42 <elliott> ais523: It manages a set of patches (named with short-names, like-this) without them being committed (my current implementation idea has it nesting another scapegoat repository inside +scapegoat that it managse automatically; from the point of view of the repo itself, you're just fiddling around with your working tree). You create these patches mainly by doing the equivalent of "darcs record": you select a bunch of hunks, give them a short-name, a
22:00:43 <elliott> nd the sg change is added to the set under that name (without doing anything to your working tree). The power comes from "joins": (or should it be "joint", or ...) they're named like some-patch/another-patch, or patch-one/patch-two/patch-three (the ordering is irrelevant), including the slashes. What they do is provide /compatibility/: say you have a patch that rewrites the source code to use a new naming scheme for types (rename-types), and anoth
22:00:43 <elliott> er code that adds some features (including new types; new-feature). You would create a patch rename-types/new-feature, which would be a combination of both, renaming the types in the new feature appropriately, and replacing references to the old types. But instead of storing the whole diff from current head to rename-types/new-feature, it would just store the diff from /both rename-types and new-future/. basically, it'd look like: changeset {renam
22:00:48 <elliott> e-types, new-feature modulo {...}, ...}. but the power here is that the reference to rename-types and new-feature isn't to a specific hash, it's to their /names/, so whenever you update their patches, rename-types/new-feature gets the changes. (of course, you still have to keep it updated :)) now, the interesting thing is that you can "shadow" patches from your working tree: you can say, I don't want rename-types any more. rename-types/new-feature
22:00:53 <elliott> will automatically get shadowed too, obviously, and you could work some more on other patches (including new-feature), re-enamble rename-types, and it'd automatically enable rename-types/new-feature. (it'll probably fail to apply after changes
22:00:57 <elliott> to new-feature, but that's okay, because you can amend rename-types/new-feature to fix it.) there might be another patch, new-callbacks, that changes the callback mechanism used in the program. you might have new-callbacks/new-feature to make new-callbacks shorter using code from new-feature, and to make other parts of new-feature use the new callback mechanism. if you have rename-types, new-feature, and new-callbacks enabled, then rename-types/ne
22:01:02 <elliott> w-feature _and_ new-callbacks/new-feature will be enabled. it's possible that these will conflict due to changing the same part of code, which means you make -- you guessed it -- rename-types/new-callbacks/new-feature. you can also commit a set of patches as a repository commit; it'll remember which named patches made up that commit. so this basically eliminates the problem of doing a bunch of work at the same time, and having to untangle it slowl
22:01:05 <monqy> hi
22:01:07 <elliott> y every time you want to tell the VCS about some of it.
22:01:09 <elliott> wow, that was /long/
22:01:22 <monqy> yes
22:02:21 <elliott> ais523: and, of course, when you pull from elsewhere, you can merge it with each patch separately, rather than having to do a merge with your complete working tree and then splitting it back up into the parts that are relevant for each patch.
22:02:34 <Ngevd> Who wants to do an esolang collaboration taking the form of a Piet-like language utilizing the entire web-safe colour range?
22:02:36 <ais523> is this a bit like having separate branches, but much more lightweight?
22:02:50 <elliott> ais523: yep, because the merging is a first-class object
22:02:53 -!- variable has joined.
22:02:53 -!- variable has quit (Changing host).
22:02:53 -!- variable has joined.
22:02:55 <elliott> and done automatically
22:02:58 <olsner> (DS9) aah, there it comes: It's REEEEEEAL
22:03:07 <Ngevd> I'm more of a Voyager fan
22:03:12 <olsner> just waiting for that episode where it's FAAAAKE
22:03:13 <elliott> ais523: and you don't have to decide wh-
22:03:15 <elliott> Ngevd: ............
22:03:18 <Ngevd> In that I've watched a bit of an episode once
22:03:23 <elliott> ais523: -ich branches you want up-front, before making changes
22:03:35 <Ngevd> elliott, what am I being dotted at for?
22:03:52 <elliott> Ngevd: Voyager is an impressively bad piece of television.
22:04:28 <Ngevd> Hey, I enjoyed the Thor film.
22:04:28 <elliott> ais523: and you can treat e.g. a branch as a named patch, so that you can have compatibility patches with another branch; you could then commit some changes to the main branch, and merge it in to a branch you have compatibility patches for automatically
22:04:30 <Ngevd> For its plot.
22:04:49 <ais523> naming patches is going to be useful anyway
22:05:00 <elliott> ais523: oh, this isn't a regular naming mechanism
22:05:01 <elliott> that would just be tags
22:05:10 <elliott> this has to be separate from the sg repo, because it's insanely mutable
22:05:14 <elliott> which is the opposite of what history is meant to be
22:05:25 <ais523> no, tags would be naming changesets; or even (immutable)repos, I guess
22:05:27 <elliott> in fact, it's based upon the idea of mutating one thing causing everything else to mutate :)
22:05:33 <elliott> ais523: changesets are just types of changse
22:05:35 <elliott> changes
22:05:38 <elliott> which are the same thing as patches
22:05:41 <ais523> well, OK
22:05:58 <ais523> but what I mean is, that they go all the way back to infinity, rather than being relative to something else
22:05:58 <Phantom__Hoover> Ngevd, watch DS9, I watched it and it was the best waste of...
22:06:09 <Phantom__Hoover> > 45 * 26 * 7 / 60
22:06:09 <elliott> well, okay
22:06:10 <lambdabot> 136.5
22:06:20 <Phantom__Hoover> > 45 * 26 * 7 / (60 * 24)
22:06:22 <lambdabot> 5.6875
22:06:26 <elliott> ais523: but yeah, you've seen me fumble about by doing crazy git workflows like "stash, pull pieces out, modify, commit, restash"
22:06:33 <Phantom__Hoover> Ngevd, it was the best waste of 6 days I ever had.
22:06:41 <ais523> you pretty much have to do that in git
22:06:45 <elliott> ais523: that isn't specifically a git problem, no VCS is good at separating independent strands of work right now, you have to declare them up-front
22:06:58 <ais523> right
22:07:09 <ais523> as usual, darcs is better than its rivals without being perfect
22:07:16 <elliott> the idea with this is that you can start with a bunch of modifications, split them out in a really light-weight manner, and then have a coherent /interface/ to managing them
22:07:30 <elliott> it also makes working trees less fragile, because they'll be recorded in the patchset data
22:07:45 <elliott> so you don't have to worry about copying your working tree elsewhere before doing a merge or whatever (!)
22:07:51 <elliott> (yes, I have to do that in git occasionally)
22:08:01 <elliott> (stashes sort of help, but they're just a thin veneer around cp :))
22:08:36 <olsner> hmm, TV characters musing about their whole existance just being imagination
22:09:35 <olsner> ... if only they knew, they *are* just some script writer's imagination
22:09:53 -!- Taneb has joined.
22:10:08 <ais523> elliott: we're working on a project in svn at the moment at work; I'm using git-svn, but some of the other people are sorting out conflicts by backing up their own copy, choosing resolve-other, then merging them together separately
22:11:13 <elliott> ais523: heh
22:11:18 <olsner> that's a viable merge strategy in CVS too
22:11:27 <ais523> the worrying part is, /it is actually sane in context/
22:11:41 <olsner> or just an update-from-server strategy if your local changes are nontrivial
22:12:03 <elliott> ais523: hmm, maybe sg should have foo/bar branches itself
22:12:22 <elliott> ais523: branches that automatically pull from foo and bar, so you can resolve conflicts in them and the like
22:12:31 <ais523> elliott: I'd treat that as a repo definition
22:12:34 <elliott> it seems like a useful concept even outside of this patch management thing
22:12:35 <ais523> in terms of other repos
22:12:46 <olsner> complex merges in CVS can be done by a CVS transplant: produce the correct source tree in a copy, move all the files except the CVS metadata into a target working copy checked out on the right branch, commit :)
22:12:47 <ais523> I agree it's a useful concept, but I think it can be done with existing concepts
22:12:58 <elliott> ais523: yes, but (a) you need to insert your own fix changes, (b) a platonic sg tool would be slow and unusably general :P
22:13:06 <elliott> I'm not saying we don't have concepts for it
22:13:09 <olsner> ... sometimes that's the *convenient* way of doing it
22:13:10 <elliott> I just mean, maybe we should expose them
22:13:30 -!- Ngevd has quit (Ping timeout: 240 seconds).
22:14:31 -!- Taneb has quit (Ping timeout: 256 seconds).
22:16:58 <pikhq_> Yay, IOCCC!
22:17:07 <Gregor> lifthrasiir: Your craaaazy solution definitely will work >: )
22:17:16 <lifthrasiir> :p
22:17:17 <Gregor> pikhq_: I'm making a semi-portable JIT for the world's worst language :)
22:17:24 <pikhq_> Gregor: :)
22:17:33 <Phantom__Hoover> C++?
22:17:36 <lifthrasiir> well i'm also thinking of possible IOCCC submissions that are doomed to be rejected...
22:17:44 <lifthrasiir> i was*
22:18:40 <Gregor> lifthrasiir: I'm just hoping that I can squeak by within their portability requirements >_>
22:19:02 <lifthrasiir> woah, what does limit the portability of your submission?
22:19:14 <pikhq_> Gregor: They seem to just barely permit things that are nonportable *by necessity*.
22:19:44 <Gregor> pikhq_: My portability restrictions should be rather silly things, not "is x86"
22:19:57 <pikhq_> Oh. That's just fine then. :)
22:20:00 <Gregor> lifthrasiir: It's a JIT :P
22:20:42 <Gregor> pikhq_: By rather silly right now I mean, for instance, that the C stack is as it has been for the past billion years and grows down, and (weird one) that if you say int a; int b; at the global scope it will put b after a.
22:20:45 <lifthrasiir> ...but without involving any kinds of assembly or something?
22:20:50 <Gregor> That latter one I hope I can avoid.
22:20:53 <Gregor> lifthrasiir: No assembly at all.
22:21:05 <lifthrasiir> so that's something like templating?
22:21:09 <elliott> ais523: Here's my sg code scraps, FWIW: http://sprunge.us/NebW
22:21:13 <Gregor> lifthrasiir: Yeah, it'll be a template JIT.
22:21:24 <elliott> <Gregor> pikhq_: My portability restrictions should be rather silly things, not "is x86"
22:21:28 <elliott> Gregor: That OS got in *shrugs*
22:21:29 -!- augur has quit (Remote host closed the connection).
22:21:51 <elliott> Also, I think that IA-64's satck grows upwards.
22:21:52 <Gregor> elliott: I think that ignoring all else, my JIT will be more impressive if it's more portable :P
22:21:54 <ais523> SOF/EOF are going to need an argument eventually, but I guess you knew that
22:21:58 <elliott> ais523: yes, indeed
22:22:02 <Gregor> elliott: That's too bad for all four ia64 users.
22:22:06 <lifthrasiir> Gregor: i think that would be fine given enough safety measures...
22:22:13 <Phantom__Hoover> IA64 is Xeon, isn't it?
22:22:17 <Gregor> Phantom__Hoover: ... no.
22:22:21 <lifthrasiir> don't know how much measures needed to ensure the safety though.
22:22:22 <Phantom__Hoover> No, Itanium.
22:22:26 <pikhq_> Gregor: Also, there's no *strict* requirement that it be portable, it's just strongly suggested.
22:22:28 <elliott> ais523: and I don't have changeset applying code yet, because I realised that tsort was broken :)
22:22:30 <Phantom__Hoover> I've confused them frequently.
22:22:32 <Gregor> lifthrasiir: Safetylol.
22:22:34 <Gregor> pikhq_: Yes yes.
22:22:41 <Gregor> Phantom__Hoover: You oughtn't to :P
22:22:46 <elliott> Gregor: Remember that they're rejecting things that need human intervention to compiler.
22:22:57 <pikhq_> I'd say if it functions on essentially every system people care about, then you're good.
22:23:03 <ais523> elliott: O(n^2) tsort is trivial; but I think it's possible to do better
22:23:12 <elliott> ais523: no, I meant, broken because of moves
22:23:15 <Gregor> elliott: No problem.
22:23:24 <elliott> ais523: I'm just going to use fgl's tsort, probably
22:23:25 <lifthrasiir> pikhq_: if they did require that how can OTCC and x86 OS be accepted? :p
22:23:26 <ais523> I'm not sure if it's n log n or n that's the best possible
22:23:27 <Gregor> Believe it or not I have a cohesive and sensibleish plan.
22:23:32 <lifthrasiir> anyway.
22:24:03 <elliott> ais523: (fgl = functional graph library)
22:24:27 <ais523> hmm, does it have an algo for finding strongly connected components?
22:24:32 <pikhq_> lifthrasiir: :)
22:24:43 <elliott> ais523: it's a pretty long-lived codebase and the API isn't the most elegant thing, but it's better than the standard Data.Graph, I should think
22:24:46 <ais523> (that's a sort of "stronger tsort" problem there where you possibly have cycles, and want to find those and put them in the proper place)
22:24:50 <elliott> and I should think so?
22:24:55 <elliott> Applications of UDFS/UDFF
22:24:55 <elliott> components :: Graph gr => gr a b -> [[Node]]Source
22:24:55 <elliott> noComponents :: Graph gr => gr a b -> IntSource
22:24:55 <elliott> isConnected :: Graph gr => gr a b -> Bool
22:24:59 <elliott> that looks relevant
22:25:04 <ais523> I ended up rolling my own in the compiler, with an algo copied off Wikipedia
22:25:05 <elliott> in the same module as tsort
22:25:54 <elliott> oh, right, Data.Graph forces you to use Int to identify vertices
22:26:00 <elliott> whereas, sg wants to use any reference type
22:26:16 <elliott> (I decided to abstract the whole store system so that algorithms can be generic on the type of reference/store0
22:26:17 <elliott> )
22:26:29 <elliott> turns out it's easy: class Ref ref m a | ref -> m a where deref :: ref -> m a
22:26:57 <elliott> e.g. instance Ref FileChangeHash StoreM FileChange where deref = lookupInStore
22:27:30 <elliott> s/FileChange/(FileChange ref)/
22:27:36 <elliott> apply :: (Ref ref m (FileChange ref)) => ref -> File -> m (Maybe File)
22:27:45 <elliott> and recursion in FileChange is replaced by the ref argument
22:27:58 <elliott> you can easily make Identity a Ref type in the Identity monad, to do it the simple recursive way
22:28:17 <elliott> oh, the class should be
22:28:24 <elliott> class (Eq ref, Monad m) Ref ref m a | ref -> m a where deref :: ref -> m a
22:28:25 <elliott> ofc
22:28:30 <elliott> err, =>
22:29:52 <elliott> ais523: hmm, weboflies-related question: can you use a new filesystem namespace as a chroot?
22:30:36 <ais523> elliott: if you can mount over /, then yes
22:30:40 <ais523> or, hmm, probably pivot_root would be enough
22:30:50 <elliott> ais523: ah, so it doesn't let you do it without root :(
22:30:52 <ais523> but I've never dared call it from inside weboflies, because I'm not quite that crazy
22:30:56 <elliott> (or a bunch of capabilities)
22:30:58 <ais523> right, you need root
22:31:05 <elliott> oh my god, wait
22:31:12 <elliott> UMLBox would work :D
22:38:13 <elliott> Gregor: I guess I should try and get Transactional HackEgo running???
22:38:21 <elliott> IT'S SO SCARY.
22:40:44 <elliott> ais523: incidentally, I wonder if applying all patches in sequence to checkout might not be reasonably quick, if applying a single patch is fast enough
22:40:54 <elliott> I'm really bad at estimating the real-time algorithms will take to run, though
22:41:45 <ais523> I'd guess it'd be impractically slow for common operations, but OK for something that was only done occasionally
22:41:54 <shachaf> "who cares, it's just constant factors" -- elliott
22:41:57 <elliott> ais523: I meant on clone
22:42:12 <ais523> for a clone, I'd say it'd be fine
22:42:47 <elliott> ais523: hmm, if we always have a checkout of the tip stored in +scapegoat, then checking out a branch could just apply /inverse/ patches to the base of that branch, and then apply the branch's patches
22:42:56 <elliott> we really need to figure out the inversion algorithm...
22:43:02 <elliott> I suppose it's relatively simple
22:43:02 * Phantom__Hoover → sleep
22:43:03 -!- Phantom__Hoover has quit (Quit: Leaving).
22:43:16 <elliott> but hashes make it more difficult
22:43:29 <ais523> elliott: hmm, worrying thought: don't deletion changes have the same trouble as move changes
22:43:32 <elliott> because the inverse of (delete blah) has to be blah itself, not something identical to blah
22:43:36 <elliott> because of dependencies
22:43:41 <elliott> although... that doesn't matter when applying patches, so hmm
22:43:45 <ais523> we'd have "delete b between a and c" and "insert d between a and c"
22:43:51 <ais523> with no obvious dependence of the second on the first, although there iso ne
22:43:58 <elliott> ais523: delete changes are just "delete a"
22:44:07 <ais523> well, OK, still no obvious dependence
22:44:09 <ais523> even less, in that case
22:44:18 <elliott> hmm...
22:44:21 <ais523> as the two patches don't even mention a common patch
22:44:23 <elliott> that is problematic, yes
22:44:38 <ais523> I think a) move patches should keep hashes the same, and b) the same solution should be used for moves and deletes, that we haven't yet decided on
22:44:50 <elliott> ais523: I sort of feel like saying "I guess we have to dump tsort then", but it's a really good property
22:44:56 <elliott> and it's completely unobvious how to order changesets without it
22:45:15 <elliott> I definitely don't want to make changesets ordered, that's awful and I think probably breaks tons of obvious properties
22:45:27 <ais523> right, indeed
22:45:42 <ais523> a partial order exists, but we don't know what it is, is the problem
22:46:13 <ais523> elliott: test case I feel will be important: ab, acb, ab, adb
22:46:24 <elliott> ais523: your "before/after reference" idea is sort of compelling, but I think leads to pathologies
22:46:26 <ais523> (where letters represent lines, and that represents the history of the file)
22:46:32 <elliott> but... I don't know, I might be wrong
22:46:38 <elliott> ais523: OK, what about it?
22:46:54 <ais523> the last change is "add d between a and b"
22:47:06 <ais523> and that would apply to the first copy of ab
22:47:19 <ais523> as well as the second (the third entry in the history)
22:47:41 <ais523> hmm, what if deletions and moves both renamed the patches they were deleted between / moved between?
22:47:52 <elliott> ais523: the question is how to rename them
22:47:55 <elliott> you need a hash
22:48:01 <elliott> but a move is just one change
22:48:03 <ais523> I assume we have no shortage of hashes
22:48:07 <elliott> but a move is just one change
22:48:09 <ais523> you can have more than one hash related to one change trivially
22:48:13 <elliott> no, you can't
22:48:15 <ais523> just use a salt
22:48:22 <elliott> because that breaks the current model
22:48:30 <elliott> at least do it formally with your before/after hash thing
22:48:33 <ais523> yep
22:48:36 <elliott> rather than just hacking it in with ridiculous things like that
22:48:41 <elliott> even that isn't a "hash"
22:48:48 <elliott> it's just changing some references to include a hash /and/ a bool
22:50:00 -!- pikhq_ has quit (Read error: Operation timed out).
22:50:18 <ais523> yep; I mean hash /and/ other identifier that goes with it, in general
22:50:25 <ais523> which might be a bool, or might more reasonably be an enum element
22:50:33 -!- pikhq has joined.
22:50:36 <ais523> that way, we can have a file, and a file-sof, and a file-eof
22:50:45 <elliott> um, no, type error
22:50:58 <elliott> file-sof would be a dir change, if references include a bool like that
22:51:09 <ais523> err, no? file-sof is a different type from file
22:51:25 <ais523> no type error in "the sof of a file change is a patch anchor"
22:51:34 <ais523> any more than there is in "the head of an int list is an int"
22:51:48 <elliott> well, how is this relevant to this? it does not affect the range model at all.
22:51:50 <elliott> you still need
22:52:06 <elliott> startpoint = sof <dirchange> | line <filechange> {before|after}
22:52:13 <ais523> right, indeed
22:52:25 <ais523> I don't think we're disagreeing there
22:52:54 <elliott> well, okay
22:53:38 <ais523> hmm, the original plan didn't involve tsorting, I think; it was that given "add b between a and c", "delete b", "add d between a and c", it'd apply the patches in that order as it's the only one that lead to no conflicts
22:53:42 <ais523> but that does break the tsort property
22:54:07 <elliott> ais523: the only way to figure out that ordering is brute-forcing
22:54:14 <ais523> ooh, I don't think so
22:54:20 <ais523> I'm starting to see a shadow of an algorithm in my head
22:54:21 <elliott> also, it's ambiguous, since there can be multiple possible ways to apply a change
22:54:32 <ais523> well, an ambiguity would mean a conflict
22:54:39 <elliott> ais523: hmm, what if a dependency on X counted as a dependency on any other change that referenced X?
22:55:13 <ais523> my idea is, that the algo for composing patches is first to tsort, then apply the patches in an arbitrary order, /but/ allow the file to not be in a sane state temporarily as we go
22:55:26 <ais523> e.g. you could do "add b between a and c", "add d between a and c" in that order
22:55:33 <ais523> and then "delete b between a and c" would put everything back to normal
22:56:05 <elliott> sigh, I was (but shouldn't have been) expecting something less ugly
22:56:12 <elliott> I think my idea's better :-P
22:56:13 <ais523> if everything ended up violating the definition of a file, we'd have a conflict; /but/ we can actually show the user a sane representation of the resulting file
22:56:20 <ais523> I think this is actually beautiful, rather than ugly
22:56:28 <elliott> I don't
22:56:46 <ais523> and it's O(n), much much better than brute force
22:56:49 <elliott> you've basically said "what if we made changes non-atomic, and removed their semantics, so that they only make sense in a jumble"
22:57:28 <ais523> no, we're extending the semantics to work even with conflicts
22:57:37 <ais523> and what do you mean with "non-atomic"?
22:57:44 <elliott> I mean non-atomic
22:57:48 <elliott> you can't apply each change as a separate, coherent step
22:57:56 <elliott> because you have to keep track of the ~nonsensosity~
22:57:58 <ais523> yes you can; in fact, you can now do so in any order
22:58:01 <ais523> which makes things even better
22:58:16 <elliott> it's not atomic, because changes don't become transformations from files to files
22:58:17 <ais523> oh, I think by "atomic" you mean "leading to a consistent state at any point in history"
22:58:19 <elliott> they're from files to goop
22:58:24 <ais523> elliott: they're from goop to goop
22:58:24 <elliott> ais523: that's what atomic /means/
22:58:33 <ais523> and the goop itself is useful
22:58:33 <elliott> you're /breaking compositionality/
22:58:37 <ais523> no I'm not
22:58:43 <ais523> they're from /goop/ to /goop/, how is that not compositional?
22:59:10 <elliott> because you apply a changeset from file to file, not goop to goop
22:59:18 <ais523> well, "goop" here means "file or conflicted file"
22:59:26 <ais523> which means you don't need to special-case conflicts. AT ALL.
22:59:28 <ais523> this is amazing
22:59:35 * elliott sigh
22:59:46 <elliott> let me know when you have an algorithm rather than an idea that amounts to "just make it not consistent"
23:00:07 <ais523> perhaps I'll have to implement it to show you how great it is
23:00:27 <elliott> that won't be necessary. a simple algorithm description will be
23:00:44 <elliott> so far you haven't even defined what the goop is
23:01:03 <ais523> it's a directed graph
23:01:23 <ais523> with lines as vertices, and edges meaning "adjacent to" (with the direction meaning the direction)
23:02:04 <ais523> if each vertex but the first and last has one input and one output (and the first and last have one output/one input respectively), it represents a non-conflicted file; otherwise, a conflicted file
23:02:18 <elliott> ok, that sounds a little better. how do you apply a move as goop -> goop?
23:02:48 <ais523> disconnect three edges, connect another three edges
23:03:16 <ais523> actually, my current issue with this is "what if the edges aren't there to disconnect"
23:03:25 <ais523> my guess is that that means you're missing dependencies
23:03:43 <ais523> this works for additions, but not deletions
23:04:02 <ais523> oh, you have a count for how many times each edge is there, and let it go negative
23:04:09 <ais523> that way, you can represent "deletion of something that isn't there"
23:04:20 <ais523> err, hmm, maybe this doesn't work
23:04:54 <ais523> this deserves thought from me; but I need to be capable of thinking at the time
23:05:18 <elliott> <ais523> oh, you have a count for how many times each edge is there, and let it go negative
23:05:25 <elliott> can't you just use a multigraph or something, that's ugly
23:05:50 <ais523> elliott: the issue is that you have a file abc, and get two copies of "delete b"
23:05:59 <ais523> that's a conflict no matter what; how do you represent it in the resulting goop?
23:06:39 <ais523> in other words, this solves the tsort issue, but /doesn't/ solve deletions, which are the reason the tsort issue's there in the first place
23:06:45 <ais523> so it's, umm, kind-of pointless?
23:06:51 <elliott> ais523: don't? is there any way for that to happen in a non-conflicting whole changeset?
23:07:03 <ais523> elliott: no
23:07:14 <elliott> why not just fail, then?
23:07:25 <ais523> because you want to be able to show the user what's conflicting, when there's a conflict
23:07:46 <ais523> also, because calculating the rest of everything, which doesn't conflict, becomes no longer O(n)
23:08:23 <elliott> ais523: I don't mind if conflicts just give a failure result; the program on top can figure out how to present it
23:09:10 <ais523> elliott: the original idea is that you resolved conflicts by making a change that just made them unconflict again
23:09:30 * elliott is not sure that's a good idea
23:09:45 <ais523> right; your x-modulo-y is a replacement for that
23:09:53 <elliott> ais523: here's an argument against goop:
23:09:57 <elliott> $ sg pull a
23:09:58 <elliott> $ sg pull b
23:10:01 <elliott> has different semantics from
23:10:01 <elliott> has different semantics from
23:10:03 <elliott> $ sg pull ab
23:10:16 <ais523> by "ab", you mean a and b?
23:10:18 <elliott> because there's a goop barrier between sg commands, obviously, to turn them into actual files
23:10:22 <elliott> ais523: changeset {a,b}
23:10:24 <elliott> you get the idea
23:10:26 <ais523> it has exactly the same semantics
23:10:33 <elliott> no, it doesn't
23:10:47 <ais523> the resulting goop ends up exactly the same
23:10:50 <elliott> ais523: because if it did, you could apply /every/ changeset that way
23:10:59 <elliott> which would make changes consistent at each stage
23:10:59 <ais523> yes, that's the entire point behind goop
23:11:01 <elliott> contradiction qed
23:11:03 <elliott> qedqedqed
23:11:09 <ais523> changes are consistent at each stage
23:11:16 <ais523> just in the goop, which might or might not represent a file
23:11:27 <elliott> and goop is converted from and to files on each actual operation
23:11:30 <ais523> if it doesn't, then presumably you put a conflicted version in the disk file, and let the user edit it to fix it
23:11:33 <elliott> therefore pull ab =/= pull a; pull b
23:11:56 <elliott> you're basically saying "we need to apply changesets by threading some intermediate state" while /also/ saying "applying changesets is just applying changes in an order"
23:11:57 <ais523> err, no? assume for the time being that the working copy is clean
23:12:01 <elliott> that's impossibl
23:12:01 <elliott> e
23:12:17 <ais523> then the result of a pull doesn't depend on the working copy at all
23:12:24 <ais523> so after pull a; pull b (or else pull b; pull a)
23:12:28 <ais523> (or else pull ab)
23:12:36 <ais523> the working copy is calculated from the same set of information each time
23:12:58 <ais523> with the same deterministic algo
23:13:01 <elliott> ais523: oh, you want to operate on goops at all points? that means you have to cache them
23:13:01 <ais523> so how could it not be the same?
23:13:05 <elliott> which is ridiculous
23:13:10 <ais523> yep, operate on goops at all point
23:13:23 <ais523> you don't, semantically, have to cache them, although you probably would for efficiency reasons
23:13:49 * elliott doesn't think this will work
23:14:45 <ais523> deletes definitely need a between with this method
23:14:55 <zzo38> In Super Smash Brothers Melee, my brother could write his entire name even though it was limited to 4 letters. In Brawl, the limit is raised to 5 letters however his name will no longer fit.
23:18:09 <elliott> Oh my god, the official plural of "Prius" is "Prii".
23:18:11 <elliott> oerjan: weep with me.
23:19:45 <monqy> is this for real
23:19:49 <elliott> Yes.
23:19:57 <elliott> http://blogs.cars.com/kickingtires/2011/02/plural-of-prius-prii-not-according-to-latin-experts.html
23:19:59 <elliott> "Before we could make up our minds, Toyota decided today that the plural form is “Prii” (pronounced PREE-eye). That decision was the result of a marketing campaign in which Toyota asked the public about the plural possibilities: “Prius,” “Priuses,” “Prii,” “Priem,” or “Pri.”
23:19:59 <elliott> “Prii” received 25%. “Prius” came in a close second with 24%."
23:20:11 <elliott> they should have gone with "pru"
23:22:43 <monqy> pru is good
23:23:09 <ais523> they should have declared "prius" the plural and went with "priu" for the singular
23:23:32 <elliott> new toyota peru
23:25:05 <monqy> all new toyota peru
23:25:21 <monqy> the all new toyota peru
23:25:29 <elliott> plural pru
23:25:50 <monqy> best car
23:26:51 <pikhq> elliott: I call bullshit.
23:26:52 <pikhq> :)
23:27:41 <pikhq> *Clearly* the car is the プリウス, and thus the plural is also プリウス.
23:28:06 <pikhq> (puriusu, puriusu; hůriusu, hůriusu)
23:29:40 <monqy> pru
23:30:09 <pikhq> But seriously though, plurals can't/shouldn't be dictated by corporate fiate.
23:30:10 <oerjan> lessee, prius is neuter form of prior iirc
23:30:20 <pikhq> And "Prii" is particularly stupid.
23:30:20 <oerjan> so plural would be priora
23:32:29 <elliott> pus, plural: poo
23:32:36 <elliott> new from toyota.........
23:32:46 <elliott> hey oerjan n-cursor zipper
23:33:22 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
23:33:27 <monqy> a
23:34:11 <elliott> oerjan: no helpp...... i ned hepl
23:34:14 <elliott> even if its like
23:34:15 <elliott> just for a list
23:34:17 <elliott> that would be fnie........
23:34:27 <oerjan> hm for a list
23:34:43 <shachaf> elliott: Dude, what about a zipper where, like, everything is a hole. And there's, like, no actu data, man.
23:35:08 <elliott> shachaf: Whoa.
23:35:53 <oerjan> oh there's a small sense in which a list may be _harder_ than quadtrees: you don't have the holes at all the same level
23:35:59 <elliott> oerjan: hmm, just like a one-hole list zipper is before + element + after, maybe a two-hole one is before1 + element1 + after1before2 + element2 + after2
23:36:09 <elliott> wait no
23:36:12 <elliott> then you can't have 2 after 1
23:36:13 <elliott> erm
23:36:15 <elliott> before 1
23:36:52 <elliott> oerjan: I'll probably go straight to a k-d tree or something; the quadtree example is interesting only insofar as it has a similar tree structure compared to a list
23:37:25 -!- aloril has quit (Ping timeout: 260 seconds).
23:37:52 <oerjan> well the thing is i had a sort of conceptual idea of what an n-hole quadtree zipper should look like, even though immensely complicated, and that method simply does not work for a list...
23:38:26 <oerjan> because it depended on the type-balanced levels
23:38:30 <elliott> oerjan: would a bitree be easier? :p
23:39:27 <oerjan> hm this actually reminds me of some of the "solid set" stuff from some of my papers
23:40:24 <elliott> mmm bitrees sound super elegant
23:40:31 <elliott> has anyone done those
23:40:41 <oerjan> what's a bitree
23:41:02 <shachaf> It's like a btree with an i.
23:41:09 <elliott> oerjan: well you know quadtrees and octtrees
23:41:12 <elliott> it's like that but only two!
23:41:17 <oerjan> do you mean like quadtrees, except for a 1d space
23:41:19 <elliott> i guess it's uh
23:41:21 <elliott> just a binary tree
23:41:23 <elliott> oerjan: yeah :P
23:41:24 -!- Ngevd has joined.
23:41:57 <oerjan> hm you might be able to use that for a list zipper
23:42:19 <elliott> if quadtrees sound simpler to do then quadtrees it is
23:42:25 <oerjan> in such a way that you keep all elements at the same level
23:42:26 <elliott> but I don't see why it wouldn't generalise to ~bitrees~
23:42:38 <oerjan> yes, that's what i'm thinking about
23:43:07 <elliott> oerjan: i mean i don't actually have any lists to do this to.
23:43:11 <elliott> i was just trying to pick a simple structure
23:43:29 <shachaf> elliott: How about Bool? Make a zipper for Bool.
23:43:30 <oerjan> however, i expect no matter how you slice this, it will be immensely inefficient compared to a mutable structure
23:43:43 <elliott> shachaf: (Bool,())
23:44:01 <elliott> oerjan: well... that sads me
23:44:02 <oerjan> simply because of all the maintenance to keep all the holes straight
23:44:21 <elliott> oerjan: I suppose the basic problem is that "multiple zippers changing the same structure" is basically only useful to implement mutability
23:44:24 <elliott> which is what I'm doing
23:44:25 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:44:32 <oerjan> yeah
23:44:59 <Ngevd> http://a2.sphotos.ak.fbcdn.net/hphotos-ak-ash4/384346_10150936833620716_537230715_21844300_367012712_n.jpg
23:45:05 <elliott> oerjan: but ehh, the shiro 1 design was, fungespace was a big single hashmap, and IPs just modified that round-robin style
23:45:34 <elliott> oerjan: the zipper thing is useful because I can divide up space into smaller regions to make IP-local access etc. fast... it feels really weird that I'd make funge concurrency /slower/ by doing that
23:47:30 <elliott> oerjan: and ofc making it mutable will /not/ be good for one of my main goals for shiro 2, which is to move as much possible /out/ of my awful StateT HugeStateRecord IO monad
23:47:34 <elliott> :(
23:47:48 <oerjan> mhm
23:48:36 <elliott> feels like I'm making a trade-off between the code getting uglier and having no chance beating CCBI2 :P
23:48:54 <oerjan> well, to imagine how a cursor with n holes would work
23:49:28 <oerjan> first, you needed some kind of map to tell which holes go to the same thing on the next higher level
23:49:29 <Ngevd> Does there exist a combinator N such that Nx is true when x is a church numeral and false otherwise?
23:49:38 <elliott> Ngevd: I think Oleg did that
23:49:48 -!- ais523 has quit (Remote host closed the connection).
23:49:51 <oerjan> Ngevd: doubtful that it could always be false otherwise
23:49:56 <elliott> Ngevd: well, there's http://okmij.org/ftp/Computation/lambda-calc.html#bluff
23:49:58 -!- aloril has joined.
23:50:31 <elliott> "The gist of the problem is discriminating a Church numeral from some other term."
23:50:59 <elliott> but it doesn't distinguish it from /every/ other term
23:51:12 <elliott> oerjan: hmm
23:51:20 <elliott> oerjan: it feels like you shouldn't have to have duplication + a map
23:51:26 <elliott> I know that's not helpful though :P
23:52:36 <oerjan> what duplication
23:52:51 <elliott> <oerjan> first, you needed some kind of map to tell which holes go to the same thing on the next higher level
23:52:55 <elliott> the duplication of holes, in some sense
23:52:56 <elliott> dunno
23:53:39 <oerjan> i'm thinking of the case where you have some holes that are neighbors, so they are in the same level-1 quadtree
23:54:02 <oerjan> so they must share their cursor for going up to level 2
23:54:26 <elliott> right
23:54:32 -!- Aune has left ("Lmnar").
23:55:01 <elliott> oerjan: are you sure bitrees aren't simpler >:)
23:55:04 <elliott> bitrees are the new psox
23:55:06 <oerjan> we may assume that no holes are in the exact same spot except at the very first level
23:55:23 <oerjan> ...i have no idea how to apply bitrees to a 2d space
23:55:51 <oerjan> but with what i imagine, they have the exact same issues
23:56:13 <oerjan> oh hm
23:56:44 <elliott> oerjan: who needs a 2d space :P
23:56:59 <Ngevd> Did anyone here watch El Nombre?
23:57:00 <oerjan> ...i thought this was something 2d you were implementing
23:57:01 <elliott> i'm not really planning to use quadtrees much /anyway/, i'm just trying to get a really simple n-cursor zipper to think about
23:57:03 <elliott> oerjan: it is
23:57:17 <oerjan> ok then.
23:57:18 <elliott> oerjan: i'm just thinking that it might be easier to formulate an n-cursor zipper on a simpler structure first...
23:57:30 <elliott> feel free to continue with quadtrees if you disagree :P
23:57:52 <elliott> Ngevd: how the fuck do i remember that
23:57:54 <oerjan> it doesn't matter much for my idea whether you look at quadtrees or bitrees.
23:58:27 <Ngevd> elliott, because El Nombre is awesome
23:58:29 <elliott> oerjan: ok
23:59:06 <oerjan> it's about how to think of a multi-cursor at level n in terms of a multi-cursor at level n+1
2011-11-15
00:00:29 <oerjan> for each hole at the n level, you must know what hole it is at the n+1 level
00:00:34 <elliott> right.
00:01:21 <oerjan> hm this actually gives a correspondence with some arbitrary choice in the numbering of the n+1 level holes
00:03:08 <oerjan> perhaps one should choose some consistent ordering of the holes, like by x then y coordinate
00:03:14 <oerjan> er wait no
00:03:55 <oerjan> ordering by infinite path
00:04:29 <oerjan> ah, if so this is one detail which needs to be more careful with quadtrees than bitrees
00:04:46 <oerjan> you can easily order holes in bitrees by linear position
00:05:16 <elliott> hm
00:05:16 <oerjan> but for quadtrees you cannot use just x then y if you want to keep things in the same region together.
00:05:20 <elliott> oerjan: hilbert curve?
00:05:30 <zzo38> One computer game I made, near the end someone gives you a bunch of stuff (ammunition, health points, torches, money, multimeter, etc) and tells you that you need it to complete the game, and then leaves (through a passage which is locked if you try to follow him). Actually, none of that stuff will help you in the least bit. It will doom you if you are not careful!
00:05:30 <oerjan> well sort of
00:05:31 <elliott> or, wait, z-order curve?
00:05:37 <elliott> "The resulting ordering can equivalently be described as the order one would get from a depth-first traversal of a quadtree; because of its close connection with quadtrees, the Z-ordering can be used to efficiently construct quadtrees and related higher dimensional data structures."
00:06:04 <oerjan> elliott: just think of the position as an infinite list of NW, NE, SW, SE tags
00:06:14 <elliott> right
00:06:33 <elliott> oerjan: oh hm i remember seeing this in oleg's thing...
00:06:41 <elliott> We define a `higher-order' zipper:
00:06:41 <elliott> > data ZipperD m term dir = ZD{ zd_z:: Zipper m term dir,
00:06:41 <elliott> > zd_path :: [dir] }
00:06:41 <oerjan> and order them by that (with the list going infinitely leftwards)
00:06:42 <lambdabot> <no location info>: parse error on input `}'
00:06:42 <lambdabot> <no location info>: parse error on input `data'
00:06:49 <elliott> oerjan: and then the 2-hole zipper is defined as a pair of those
00:06:52 <elliott> where the paths are kept in sync or something
00:07:02 <elliott> (don't worry, nothing else oleg said was useful :))
00:07:09 <oerjan> whew
00:07:24 <elliott> (well, it might be, but it's based on his continuation stuff and
00:07:26 <elliott> > data Zipper m term dir =
00:07:27 <elliott> > Zipper dir term ((Maybe term, dir) -> CCW m (Zipper m term dir))
00:07:27 <elliott> > | ZipDone term
00:07:27 <elliott> > type CCM m term dir a = CC (PS (Zipper m term dir)) m a
00:07:27 <elliott> > type CCW m w = CC (PS w) m w
00:07:27 <Ngevd> Wow, Assassin's Creed Revelations comes out TODAY
00:07:28 <lambdabot> <no location info>: parse error on input `data'
00:07:28 <lambdabot> <no location info>: parse error on input `type'
00:07:28 <lambdabot> <no location info>: parse error on input `|'
00:07:28 <lambdabot> Not in scope: data constructor `Zipper'Not in scope: `dir'Not in scope: `te...
00:07:28 <lambdabot> <no location info>: parse error on input `type'
00:07:30 <elliott> is not very comprehensible to me)
00:07:33 <elliott> argh lambdabot
00:07:51 <elliott> oerjan: ok, so i'm with you, I think
00:08:18 <oerjan> elliott: z-order sounds like what i'm thinking of, yes
00:08:35 <elliott> have to say, z-order is one of the ugliest curves, visually :P
00:09:08 <oerjan> with z-order all holes that are in the same subregion will be consecutive in the order
00:09:17 <oerjan> (subquadtree)
00:09:37 <elliott> right
00:10:05 <oerjan> so then you can think of this as a grouping operation
00:10:18 -!- copumpkin has joined.
00:11:15 <elliott> oerjan: i'm still not sure what this actually looks like, though :P
00:11:30 <oerjan> well let's say we have holes 1,2,3,4,5 by order
00:12:22 <oerjan> and 1 is in its own region, 2 and 3 are the NW and SW of the next upper region, and 4 and 5 are the NW and SE
00:12:36 <zzo38> Make a computer game, in one level, there is an invisible bomb that kills you so much that you have to restart the entire game.
00:13:22 <elliott> oerjan: ok
00:13:37 <oerjan> then the embedding can be given as a 3-element list, each element telling the size of its group, how the elements are embedded, and what are the quadtrees of the non-hole siblings
00:14:15 <oerjan> 1 would have 3 siblings, 2 and 3 would have 2, as would 4 and 5.
00:14:26 <elliott> ok
00:14:53 <oerjan> and a cursor would be itself a list of such embedding lists
00:15:42 <oerjan> the descriptors for the embedding would be hairy though
00:15:46 <elliott> ok :P
00:16:05 <elliott> oerjan: the essential performance problem is, if we have two cursors really far away from each other, then a modification in one causes massive changes in the other, right?
00:16:16 <oerjan> well for 1 it would be fairly similar to our old single-hole stuff
00:16:20 <elliott> because the path to the other cursor has to be rewritten, so to speak?
00:16:40 <oerjan> erm
00:16:57 <oerjan> i'm guessing this isn't all the correct terminology
00:17:05 <elliott> sorry :P
00:17:22 -!- Taneb has joined.
00:17:24 <oerjan> i used "multicursor" above
00:17:37 <elliott> I was just thinking, ignore me :)
00:17:42 <elliott> it never goes well
00:18:38 <Taneb> Gregor, how goes the IOCCC?
00:19:21 <elliott> oerjan: but ok, I'm still following
00:19:50 <Gregor> Taneb: Haven't looked at it since my last message.
00:20:29 -!- Ngevd has quit (Ping timeout: 252 seconds).
00:20:32 -!- augur has joined.
00:20:42 <oerjan> trying to make this more concrete so let me write 3 levels of positions for all the holes. 1: nwnwnw, 2: nwnenw, 3: nwnesw, 4: nwsenw, 5: nwsese
00:22:02 <oerjan> this being level 0, at level 1 the holes would be nwnw, nwne, nwse
00:22:18 -!- augur has quit (Remote host closed the connection).
00:22:29 <oerjan> (just cut off the last path element)
00:22:45 <elliott> right
00:23:20 <oerjan> so if we make some hideous constructors...
00:24:05 <Gregor> Taneb: But be not concerned: It will be amazing.
00:24:15 <Gregor> Although I'd still like to find a good counter.
00:26:50 <Gregor> Also, I'm tallying the points for Whose Line is it Anyway.
00:26:50 <oerjan> [[FromNW {neSibling = ..., swSibling = ..., seSibling = ...}, FromNWNE { swSibling = ..., seSibling = ... }, FromNWSE { neSibling = ..., swSibling = ... }], [fromNWNESE { swSibling = ... }], [fromNW { ... }], ... {- only single hole contexts from here on -} ]
00:26:51 <Gregor> BECAUSE
00:27:05 <elliott> oerjan: you switched to lowercase :)
00:27:10 <oerjan> elliott: that would be a possible multicursor format
00:27:13 <elliott> oh, hmm
00:27:17 <oerjan> oops
00:27:19 <elliott> oerjan: is fromNWNESE meant to be a function?
00:27:26 <elliott> oerjan: afaict you want an infinite number of constructors
00:27:28 <Taneb> Gregor, it was an interpreter right?
00:27:30 <oerjan> s/from/From/g
00:27:47 <Gregor> Taneb: It's a JIT now.
00:27:56 <Gregor> A portable(ish) JIT.
00:27:57 <oerjan> elliott: no they're finite, there are only 15 possibilities
00:28:01 <elliott> oerjan: ah.
00:28:12 <elliott> oerjan: why 15, exactly? seems weird...
00:28:20 <Taneb> Gregor, any specs for the language?
00:28:31 <oerjan> because you cannot have more than 4 holes merging at the same level, and 0 holes doesn't need a constructor
00:28:35 <elliott> ah
00:28:36 <Gregor> Taneb: Not 'til it's implemented :P
00:28:43 <Taneb> Okay
00:28:50 <Taneb> I anticipate with glee
00:29:04 <Gregor> Taneb: It will look VAGUELY similar to BF with labels.
00:29:04 <elliott> oerjan: will you hate me if i ask how to modify the element at one of the cursors? :P
00:29:12 <elliott> (with the other cursors being able to navigate there and see the new element, ofc)
00:29:14 <Gregor> Taneb: (And jumps to label instead of loops)
00:29:17 <oerjan> all the sibling things would be QuadTree t's, of course
00:30:25 <Taneb> Gregor, you mean, like Bub?
00:31:13 <Gregor> Taneb: Vaguely, and its existence serves the same purpose, but it will be more limited (the language will NOT be TC)
00:31:14 <oerjan> elliott: well modifying the element value is simple enough, since that's part of the MultiContext outside the multicursor
00:31:33 <elliott> oerjan: well, ok, going east then :P
00:31:57 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:32:02 <Taneb> I know not enough C to write a non-obfuscated program
00:32:09 <elliott> hm if most of the time I won't modify the value in the context, it seems like you could make moving faster if you can skip propagating the changes... but it's probably not a good idea to think about _that_ right now
00:32:48 <oerjan> elliott: there will have to be an additional first identifying level in case there are holes at the exact same level 0 position
00:33:27 <elliott> right
00:33:28 <oerjan> that one won't be restricted to merging just 4, but on the other hand there is nearly no other data than their number to track
00:34:20 <elliott> oerjan: this is quite impressively complicated :P
00:34:32 <oerjan> so the first step to going east would be to find your cursor/hole in that list, and checking if there are other holes in the same position.
00:34:55 <oerjan> well yeah i expected it to be, didn't i :P
00:36:12 <oerjan> hm in fact the question of whether there are other holes left is going to appear at all levels, i think
00:36:35 <elliott> oerjan: watch as this algorithm turns out to be strictly more work than not keeping any zippers and just re-traversing the tree for every operation :P
00:36:37 -!- CakeProphet has joined.
00:36:37 -!- CakeProphet has quit (Changing host).
00:36:37 -!- CakeProphet has joined.
00:36:39 <elliott> i mean, computationally
00:36:52 <oerjan> elliott: quite possibly :P
00:38:22 <oerjan> ouch
00:38:52 <elliott> oerjan: ?
00:38:53 <oerjan> and going east can obviously change the order of holes
00:39:20 <oerjan> there needs to be an initial map from holes to holes-in-order :P
00:39:30 <elliott> oerjan: looool
00:39:44 <elliott> oerjan: maybe we should ask oleg :P
00:39:53 <oerjan> probably easier :P
00:40:25 <zzo38> From something else I found Akinator again, this time I tried entering answers according to my Dungeons&Dragons character. Well, I play in unusual ways so it could not figure it out, until the menu came up where you can select if any of them are the correct answer; I found two correct answers on that menu and selected both.
00:41:25 -!- augur has joined.
00:42:26 -!- augur has quit (Remote host closed the connection).
00:42:43 <oerjan> when leaving a region, you only convert that region to a downward quadtree if there were no other cursors there
00:44:09 <elliott> oerjan: ...you know, I think my non-zipperised circular version is easier to get working than this :P
00:44:19 <oerjan> you don't say :P
00:44:22 -!- derdon has quit (Read error: Connection reset by peer).
00:44:25 <elliott> oerjan: it /could/ work with tying the knot, right?
00:44:36 <oerjan> er
00:45:14 <oerjan> i don't think circular immutable structures are compatible with easy modification
00:45:33 <elliott> oerjan: indeed, I meant non-easy :P
00:46:01 <oerjan> you have to traverse everything to change it to point to the new version
00:46:10 <elliott> oerjan: yes, but you only pay that cost when you force those thunks
00:46:21 <oerjan> hm
00:46:38 <elliott> oerjan: and since modification is quite significantly rarer than access...
00:46:56 <elliott> and other IPs modifying is basically just the same, except you're twiddling the pointers of a far-away thing, not where you are now
00:46:57 <elliott> so to speak
00:47:21 <oerjan> but forcing those thunks may still be linear in the number of modifications _anywhere else_
00:47:41 <oerjan> might even stack overflow, that way
00:47:57 <elliott> hmm
00:48:09 <elliott> oerjan: but forcing each individual location is /easy/
00:48:22 <elliott> it's just rewriting N/S/W/E to point at new thunks, mostly
00:48:55 <oerjan> hm
00:49:11 <Gregor> As of 1x09, the points leader is Wayne Brady with 2,001,130.5 points and the episode-average leader is also Wayne Brady, with an average of 285,875.8 points per episode. The log-points leader is (wouldja believe it) again Wayne Brady, with 43 ln-points, and the episode-average log-points leader is Laura Hall with 6.9 in the one episode where she gained points.
00:49:27 <elliott> oerjan: it won't make modifications fast at all, but lookups and moving is /very/ fast
00:49:39 <elliott> Gregor: ...lol
00:49:40 <oerjan> ok
00:49:53 <elliott> oerjan: if you really think it won't work at all just tell me btw, I don't want to waste my time :P
00:50:35 <Gregor> elliott: I decided to add log points because 1,000,000 points really isn't 1,000 times 1,000 points :P
00:50:56 <oerjan> i fear that it will essentially require traversing all versions of everything you haven't looked at yet when you force something
00:52:07 <oerjan> in fact, hm, it may be equivalent in total work to just using array copying
00:52:21 <oerjan> if my worst suspicions are true
00:53:52 <elliott> oerjan: total work, quite possibly (although note that the array data /itself/ will only change in _one_ node)
00:54:05 <elliott> oerjan: but if it's spread over the cost of moving across locations...
00:54:52 <oerjan> i'm not sure it will be spread out, really
00:55:28 <oerjan> it may be that once you look at an unknown cell, you do all the work remaining
00:55:35 <oerjan> for all cells
00:55:47 <elliott> oerjan: um... you realise that there is not one structure per cell, right?
00:55:51 <elliott> each Location is 128x128 cells
00:56:05 <oerjan> ok
00:56:17 <oerjan> so whenever you look at an unknown location, then
00:57:09 <elliott> hmm...
00:57:17 <elliott> http://sprunge.us/OQej
00:57:21 <elliott> that's basically what it'd look like
00:57:30 <elliott> with some too-clever-for-me-right-now knot tying to make the whole thing work
00:57:48 <elliott> i'm not sure it will work at all, but I don't see why it'd necessarily force all work just from one step...
01:00:21 -!- Taneb has quit (Ping timeout: 244 seconds).
01:00:26 <oerjan> hm ok maybe
01:01:16 <elliott> oerjan: otoh there's no obvious way to generalise this to a structure that isn't this N/S/E/W thing :P
01:01:38 <elliott> oerjan: I think I /know/ how to implement a really efficient space with mutation, so it's really tempting to just give up on persistence
01:02:11 <oerjan> mhm
01:15:07 <Gregor> Hrm
01:15:10 <Gregor> I'm at 510 characters.
01:15:13 <Gregor> Things it does not yet do: JIT.
01:15:22 <elliott> Gregor: IOCCC =/= golf
01:15:34 <oerjan> elliott: there's a 2048 char limit iirc
01:15:35 <Gregor> elliott: 2048 character (with weird counting) limit.
01:16:08 <elliott> Is that new?
01:16:27 <Gregor> New as of some time a decade ago or something ;P
01:16:38 * elliott doesn't like that.
01:16:51 <elliott> Especially as you can just factor out most of your program into, like, an stdlib file if it's an implementation.
01:17:00 <zzo38> Did Creative Commons used to have CC-SA license but now they only have CC-BY-SA? Can they put it back on?
01:17:27 <Gregor> zzo38: They have both ...
01:17:38 <Gregor> Ohwait, maybe they changed :P
01:18:16 <Gregor> Nope, seems you're right.
01:18:24 <Gregor> SA without BY kinda makes little sense though ...
01:22:17 <zzo38> For what reason is that?
01:23:58 -!- tiffany has quit (Quit: nini~).
01:40:08 <elliott> oerjan: btw did I mention that I need to support n-dimensional spaces, so the same code needs to handle bitrees, quadtrees, octtrees and up generically :P
01:40:50 <oerjan> no, you did not.
01:40:57 <elliott> oerjan: I BET IT'S EASY NOW HUH
01:41:36 <oerjan> well i guess the principles are the same as for quadtrees.
01:41:46 <oerjan> for what i described above.
01:42:05 <elliott> that makes it easy then :P
01:43:08 <oerjan> and sooooooooo efficient.
01:43:15 <elliott> totally.
01:46:17 -!- SgeoN1 has joined.
01:58:02 -!- augur has joined.
02:05:03 -!- Zuu has quit (Ping timeout: 244 seconds).
02:07:08 <zzo38> An idea is, allow fields in a record update syntax to have the field name and = omitting the value for some fields, and it makes a function taking arguments in the order which you have specified, such as: join (X { aaa = 6, bbb =, ccc = }) <$> [1..6]
02:07:47 <zzo38> And that it can be used even without constructors; it could be used also with functions or values that are of record type and you just update some fields
02:10:14 <Gregor> Suggested symbols for label, unconditional jump, and conditional jump?
02:11:08 <elliott> Gregor: unconditional jump: / -- it's like a ramp!
02:11:27 <elliott> conditional jump... umm... ≠? it's a ramp with a barrier!!!!!!!!1111111
02:13:02 -!- Zuu has joined.
02:24:11 -!- derrik has joined.
02:25:45 <zzo38> elliott: It is not ASCII, though; in case that matters
02:26:10 <elliott> ASCII shmASCII... that's... that didn't work.
02:26:33 <oerjan> ascii so nasty
02:33:11 <Gregor> OK, my JIT segfaults on all input.
02:33:13 <Gregor> So not quite perfect yet.
02:33:15 <Gregor> But getting there.
02:34:16 <oerjan> very aggressive memory optimization
02:39:53 <pikhq> Gregor: Why, that's a *perfect* implementation of _|_!
02:40:20 <Gregor> pikhq: Figured out the issue, my prologue-size heuristic algorithm is heuristically wrong :P
02:45:29 <elliott> http://twitter.com/#!/ioccc
02:45:34 <elliott> This... this feels so wrong...
02:45:43 <elliott> http://ioccc.org/index.html#new It's official.........
02:45:47 <elliott> Gregor: Help im cry,
02:46:34 <Gregor> elliott: Heh
02:46:52 <zzo38> What are some Applicative which are not Monad?
02:47:08 <elliott> zzo38: most people think ziplist, oerjan disagrees :)
02:47:15 <elliott> Gregor: http://www.ioccc.org/1988/spinellis.hint ;; lol, this is what prompted the "no human intervention" rule
02:47:21 -!- augur has quit (Read error: Connection reset by peer).
02:47:54 <oerjan> hm didn't we find a clearer example last we discussed this
02:48:05 <Gregor> Grrf, where'd my prologue go
02:48:23 <elliott> oerjan: data Applic a = Pure a | forall b. Ap (Applic (b -> a)) (Applic b)
02:48:24 <zzo38> I know about ZipList, but I can seem to defined join for ZipList
02:48:30 <oerjan> or was that just for Functor
02:48:30 -!- augur has joined.
02:48:35 <elliott> Not a monad!
02:48:45 <elliott> oerjan: Functor we had (,) obviously
02:49:08 <oerjan> zzo38: me too, although there are troubles with the monad laws and joining non-rectangular lists of lists if you are not careful
02:49:11 <zzo38> Define join for ZipList doesn't always defined results, the way I did it, however, but the laws they still defined results
02:49:25 <zzo38> oerjan: Yes, those things too
02:50:16 <elliott> oerjan: aren't ZipLists meant to be always infinite?
02:50:39 <oerjan> no why would they?
02:50:54 <elliott> oerjan: well pure makse them infinite :P
02:50:55 <oerjan> but of course if you do that, they're equivalent to Reader Nat
02:51:00 <elliott> indeed
02:51:30 <zzo38> You can have f (f a -> a) and (<*>) :: f (f a -> a) -> f (f a) -> f a
02:51:35 * elliott wishes you could make (idx -> a) arrays fast...
02:51:43 <elliott> say if you had like
02:51:49 <zzo38> I also seem similarity to stream monad too
02:51:52 <elliott> (idx -> a) -> (idx,a) -> (idx -> a)
02:51:56 <elliott> which would "extend a pattern match"
02:52:45 <oerjan> > scanl1 (zipWith (flip const)) [[1,2,3,4],[5,6],[7,8,9]]
02:52:47 <lambdabot> [[1,2,3,4],[5,6],[7,8]]
02:52:55 <oerjan> > scanl1 (zipWith (flip const)) [[1,2,3,4]]
02:52:56 <lambdabot> [[1,2,3,4]]
02:53:00 <Gregor> Hmmmmmmm, my putchar function is subtly broken ...
02:53:00 <oerjan> > scanl1 (zipWith (flip const)) []
02:53:02 <lambdabot> []
02:53:19 <Gregor> Also, I have (limited) JITting and I'm not even up to 2K /with/ indentation :P
02:53:31 <zzo38> What does "extend a pattern match" mean?
02:53:33 <oerjan> zzo38: i believe that applying that before taking the diagonal gives a working join
02:54:02 <oerjan> for all ziplists
02:54:13 <elliott> zzo38: well for instance if (\x -> case x of 0 -> "a"; 1 -> "b"; 2 -> "c"; _ -> undefined) is compiled to a jump table
02:54:25 <elliott> then you could overwrite the "c" case with (2,"d")
02:55:21 <zzo38> elliott: That is what I thought you meant by the type signature; I think you also need (Eq idx)
02:55:33 <elliott> oh, right
02:55:48 <elliott> it should probably just work for Int, since it's unlikely that other types would compile down to a jump table :P
02:57:49 <zzo38> O no, you already have the (e ->) monad and has functor, join, acting like the stream monad; and you can have contrafunctor
02:58:27 <Gregor> FIXT
02:58:29 <Gregor> I has a JIT.
02:58:29 <zzo38> So you can add another function usable with that, doing that, possibly called update
03:01:11 <oerjan> Gregor: shouldn't you have managed it like in the last hour before the IOCCC deadline, or something.
03:01:28 <Gregor> My JIT just said "Hello World!"
03:01:33 <Gregor> oerjan: Pff
03:02:24 <Gregor> D'aww, doesn't work with -O2 (yet!)
03:03:11 <Gregor> And before you say anything, gimme a break, I'm heuristically determining the size of the function pro/epilogue :P
03:03:53 <oerjan> *hubristically
03:03:59 <elliott> Gregor: I gotta see this thing :P
03:04:05 <elliott> Gregor: Does it have a GC????????
03:04:24 <Gregor> elliott: lolno :P
03:04:33 <elliott> Gregor: MARK AND SWEEP
03:04:33 <Gregor> elliott: The language is similar to BF, but worse.
03:04:59 <oerjan> what, not malbolge? how disappointing.
03:05:15 <Gregor> I hate you all.
03:07:29 <Gregor> OK, do you REAAAAALLY want to see it? :P
03:08:00 <elliott> Gregor: Yeeeeeeeeeeeees
03:08:03 <elliott> Gregor: But uh
03:08:07 <elliott> Don't post it in the channel
03:08:11 <elliott> Pretty sure that disqualifies you :P
03:10:05 <Gregor> Wha?
03:13:31 <zzo38> Read the rules to figure out. Maybe it can be done after the deadline; I don't know for sure
03:14:14 <Gregor> I see nothing about sharing, but it's a fair point.
03:14:19 <Gregor> Maybe it'll just have to stay a secret :P
03:14:27 * Gregor tries compiling it with owcc.
03:15:04 <Gregor> lol, it's taking SO LONG to compile :P
03:15:21 <Gregor> To be fair, this file has 2,000 functions in it ...
03:16:54 <Gregor> D'awwwww, doesn't work :(
03:18:59 -!- NihilistDandy has joined.
03:19:12 <Gregor> Wow, owcc is SO SLOW on this code X-D
03:21:25 <Gregor> lolwut
03:21:29 <Gregor> owcc makes some weird code >_>
03:21:46 <Gregor> This is in its function prologue: 8048110: 68 2c 00 00 00 push $0x2c
03:21:46 <Gregor> 8048115: e8 1f ad 01 00 call 8062e39 <__CHK>
03:21:52 <Gregor> What the hell is it checking for?
03:22:20 <Gregor> Oh, it has stack overflow checking whether you want it or not X_X
03:24:32 -!- augur has quit (Remote host closed the connection).
03:27:04 -!- derrik has left.
03:27:44 <Gregor> Argh, owcc is weird ...
03:27:51 <Gregor> Why does the prologue float :P
03:30:28 <oerjan> balloons.
03:37:35 -!- elliott has quit (Remote host closed the connection).
03:59:33 -!- Darth_Cliche has joined.
04:20:32 -!- CakeProphet has quit (Ping timeout: 245 seconds).
04:22:14 -!- MDude has changed nick to MSleep.
04:32:24 <zzo38> Is there Haskell library that search paths in the environment variable?
04:32:28 -!- CakeProphet has joined.
04:32:28 -!- CakeProphet has quit (Changing host).
04:32:28 -!- CakeProphet has joined.
04:44:04 -!- SgeoN1 has quit (Quit: Bye).
04:49:44 -!- SgeoN1 has joined.
04:54:45 -!- pikhq has quit (Ping timeout: 240 seconds).
04:54:51 -!- pikhq has joined.
05:15:37 <pikhq> Magic tournaments stopped using Elo? :(
05:16:49 <coppro> yes
05:17:31 <pikhq> Your score can't go down?
05:17:48 <pikhq> I call bullllllshiiiiiit.
05:18:17 <pikhq> This isn't a competitive scoring system, this is... Madness.
05:19:22 <coppro> it actually seems reasonably sane
05:19:28 <coppro> elo sucked
05:20:11 <coppro> I know people who played in GPs partially for the amusement of beating a pro and costing them a hundred rating points or so
05:20:12 -!- augur has joined.
05:20:17 <pikhq> Replacing it with a system that rewards, not skill, but playing at all, seems, well, ridiculous.
05:21:22 <coppro> Elo didn't reward skill
05:21:30 <coppro> It ended up rewarding luck
05:21:38 <coppro> and the new system does reward skill somewhat
05:21:45 <pikhq> It at least attempts to. Admittedly, it's less well-suited for Magic than for chess.
05:22:23 <pikhq> But making a homebrew scoring system that is heavily weighted towards merely participating?
05:22:34 <coppro> It's heavily weighted towards winning matches
05:22:40 <coppro> the problem is that it doesn't measure relative skill
05:22:59 <coppro> Elo had the issue that pros didn't want to play with nonpros
05:23:28 <coppro> since losing a single match to mana screw would cost enough rating as to be a serious issue to recover
05:23:43 <pikhq> And it's not like WotC couldn't try and get a system better suited for Magic; I mean, jeeze, given their audience they could probably get a few people to volunteer.
05:23:57 <coppro> and they've stated that for the competitive events and qualifications, they don't want casual events to be a significant factor
05:24:22 <coppro> so they're trying to scale the system such that for most places where the ratings actually matter, you're in a reasonably competitive field
05:37:13 -!- CakeProphet has quit (Ping timeout: 258 seconds).
05:56:31 -!- madbr has joined.
05:57:10 <madbr> hmm, I need to find a name for my language :D
06:05:56 <oerjan> George.
06:06:22 <madbr> I was thinking of something that stresses how it expands continuously
06:06:33 <madbr> like "Fatmouse" or something
06:08:29 <quintopia> there isnt a language called Juidhejsbcuska yet
06:08:39 <madbr> """FATMOUSE IS THE NEW SCIENCE OF MATHEMATICS. THE FATMOUSE THEOREM IS:
06:08:39 <madbr> FATMOUSE + YOU = FATMOUSE
06:08:40 <madbr> ""
06:10:47 -!- oerjan has quit (Quit: Good night).
06:16:50 <madbr> or maybe it could be called "juffo-wup"
06:22:14 -!- NihilistDandy has quit (Quit: http://haskell.org).
06:34:01 -!- Ngevd has joined.
06:38:52 <Darth_Cliche> > see that
06:38:53 <lambdabot> Not in scope: `see'Not in scope: `that'
06:38:55 <Darth_Cliche> > google it
06:38:56 <lambdabot> Not in scope: `google'Not in scope: `it'
06:38:57 <Darth_Cliche> what the hell
06:39:00 <Ngevd> Hello!
06:39:08 <Darth_Cliche> hello, ngevd
06:47:11 -!- Taneb has joined.
06:51:23 -!- Ngevd has quit (Ping timeout: 260 seconds).
06:56:21 -!- SgeoN1 has quit (Ping timeout: 240 seconds).
06:56:32 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:59:34 -!- SgeoN1 has joined.
07:11:03 -!- Taneb has changed nick to Ngevd.
07:22:15 <fizzie> @google it
07:22:16 <lambdabot> http://en.wikipedia.org/wiki/It_(novel)
07:22:16 <lambdabot> Title: It (novel) - Wikipedia, the free encyclopedia
07:22:22 <fizzie> Very: useful.
07:23:03 -!- CakeProphet has joined.
07:23:03 -!- CakeProphet has quit (Changing host).
07:23:03 -!- CakeProphet has joined.
07:23:21 <CakeProphet> today
07:24:17 <CakeProphet> I have achieved the current fastest instantaneous velocity in my lifetime, relative to the inertial reference frame of the surface of the earth.
07:24:43 <pikhq> What, first time on an airplane?
07:24:47 <Patashu> maglev train?
07:24:57 <CakeProphet> no I've never been on a maglev or an airplane.
07:25:00 <CakeProphet> I was in my car.
07:25:33 <CakeProphet> `run ls bin
07:25:38 <pikhq> Careful, man. The department of revenue acquisition, I mean, the police, might catch you.
07:25:38 <HackEgo> ​? \ @ \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ runperl \ toutf8 \ translate \ translatefromto \ translateto \ units \ url \ wl \ word \ wtf
07:25:55 <CakeProphet> pikhq: no it was on a basically always cop-free stretch of road.
07:25:58 * CakeProphet is careful about these things.
07:26:28 <CakeProphet> `frink 140 miles/hour -> kilometers/hour
07:26:38 <HackEgo> 704088/3125 (exactly 225.30816)
07:26:53 <Ngevd> 140 mph!!!!?
07:27:00 <CakeProphet> yes!!!!!!
07:27:09 <CakeProphet> it was wonderful
07:27:10 <pikhq> I'm rather confident my car can't do that.
07:27:25 <Ngevd> I'm rather confident my car doesn't even exist
07:27:30 <pikhq> Though, my car is honestly a bit scary around 75, so...
07:27:52 <CakeProphet> pikhq: it took an insanely wasteful amount of gas. basically full throttle for about 30 seconds to creep slowly from 135 (the previous maximum) to 140
07:28:06 <CakeProphet> 130 is the speed it can comfortably accelerate to before becoming difficult to go faster.
07:28:31 <CakeProphet> anyway, just thought I would share.
07:28:41 <pikhq> You and your not-completely-terrible vehicle.
07:28:41 <CakeProphet> perhaps one day I'll travel in one of these flying machines and go faster.
07:28:54 <CakeProphet> pikhq: the engine and transmission are wonderful
07:28:58 <CakeProphet> it's just... everything else that I've had to replace.
07:29:11 <CakeProphet> and body damage from THAT STUPID FUCKING DEER
07:29:39 <Ngevd> I have been in many flying machines
07:30:47 <CakeProphet> pikhq: it's amazing the difference between a small common 4 cylinder engine (my previous car was a 2.1L I believe) and 3.0 liters of displacement in a V6
07:31:05 -!- zzo38 has quit (Quit: Not lose the game please).
07:31:17 * CakeProphet might become one of those car people.
07:31:23 <CakeProphet> just a little bit.
07:32:18 <CakeProphet> it's actually difficult to not go fast..
07:33:04 <fizzie> Try lifting your foot up a bit next time, that might work.
07:33:18 <CakeProphet> fizzie: well I mean from a complete stop for example.
07:33:30 <CakeProphet> if I push down too little I'm not going much of anywhere
07:33:55 <CakeProphet> and then just a tiny fraction further and I'm moving forward very quickly.
07:34:54 <CakeProphet> but anyway
07:35:55 <CakeProphet> enough about car shit. no one cares. even worse, all the scandinavians are appalled at my crass recklessness.
07:36:15 <CakeProphet> stupid Americans.
07:37:15 <CakeProphet> by "all the scandinavians" I mostly mean Vorpal if he were here. that counts right?
07:40:16 <CakeProphet> the rest are probably magical elves and not actually Scandinavians.
07:41:57 <fizzie> Personally I just think it's a bit weird; and also sort-of wish you would in fact get caught by the po-po; it would make for a good story in the traditional "look how clever I am, I know where the police are, I can flaunt my flaunt-flaunt and drive as fast as I want, ha-ha, they suck => COMEUPPANCE" plotline.
07:42:48 <CakeProphet> it's not so much that I believe I have smugly outwitted the law
07:42:59 <CakeProphet> it's more that I don't actually care.
07:43:07 <Ngevd> I'm glad I live in such a place where I don't need a car
07:43:16 <CakeProphet> Ngevd: you should.
07:43:32 <fizzie> Should what, live in such a place, or need a car?
07:43:37 <Ngevd> I will have shower now
07:43:41 -!- Ngevd has quit (Quit: CLEAN).
07:43:54 <fizzie> (Or be glad?)
07:43:57 <CakeProphet> fizzie: uh, neither? you should be glad you live in a etc etc
07:44:00 <fizzie> Ah.
07:44:08 <fizzie> I don't know, somehow I just didn't grok that.
07:44:32 <fizzie> "Kevin Richardson proposed the idea of rewarding drivers travelling at or below the posted limit with a cash lottery, funded by the fines on speeding drivers. This was demonstrated in Stockholm, Sweden, in November 2010.[25]"
07:44:36 <fizzie> Oh, those Swedes.
07:45:52 <CakeProphet> uh, how do you implement that?
07:46:04 <CakeProphet> so I can speed and just not get caught and I'm rewarded anyway.
07:46:07 <CakeProphet> ?
07:46:30 <fizzie> Sure. Well, if you're also lucky enough to win the lottery.
07:46:49 <CakeProphet> rewarded with the opportunity of luck, I suppose.
07:48:05 <fizzie> It's like those "you may already be a winner!" snailmail-spams.
07:48:28 <fizzie> You win the right to have a chance to win.
07:49:15 <CakeProphet> though from what I understand it's a bit easier to get caught speeding in Sweden.
07:50:29 <CakeProphet> oh, also, I realized one of the reasons for higher collission rate in the US compared to European countries could be that we have more intersections and virtually zero roundabouts.
07:50:38 <CakeProphet> I... have no data for that
07:50:42 <CakeProphet> I just considered that possibility.
07:51:08 <fizzie> Possibly. From what I hear, it's reasonably easy here too. They keep plonking those cameras here and there (of course there's crowdsourced maps of them for navigators and all that), and I suppose the police are reasonably random about where they stage speed-measuring sessions, though from what I understand there are still some "favourite spots" too.
07:51:29 <CakeProphet> US cops are all about favorite spots. it's stupid.
07:51:44 <CakeProphet> I've been driving the same roads for about 2-3 years now and they're always in the same spots.
07:52:24 <fizzie> Also Finland used to have virtually zero roundabouts, but lately (last decade or so?) they've been putting in those mini-roundabouts just about everywhere.
07:52:38 <CakeProphet> also, in Georgia specifically, local officers are /not allowed/ to stop you for speeding unless you're going 15 over.
07:52:46 <CakeProphet> however Georgia State Patrol can.
07:52:59 <fizzie> "A "modern roundabout" is a type of circular junction that was developed by the UK's Transport Research Laboratory[citation needed] in the mid twentieth century,[citation needed] in which road traffic must travel in one direction around a central island and priority is given to the circulating flow. Signs usually direct traffic entering the circle to slow down and give the right of way.[7]
07:52:59 <fizzie> These junctions are called "modern roundabouts" in order to emphasise the distinction from older circular junction types which had different design characteristics and rules of operation.[citation needed] Older designs, called "traffic circles" or "rotaries", are typically larger, operate at higher speeds, and often give priority to entering traffic.[7] In some cases, the term "traffic circle" has been used to describe roundabouts in North America. The original
07:53:00 <fizzie> ly British term "roundabout" is now often [7] used in North America too by officials and engineers, but it remains rare in general US usage though commonplace elsewhere.[8][9]"
07:53:03 <fizzie> Right, those 'modern'-style ones.
07:53:17 <fizzie> Lots of [citation needed] there.
07:54:00 <CakeProphet> offering priority to entering traffic sounds like a bad idea.
07:54:17 <CakeProphet> from the standpoint of reducing congestion.
07:54:19 <monqy> I've only ever heard them called roundabouts
07:54:55 <fizzie> There's one old (and old-fashioned) "traffic circle" in Helsinki; it's big, it's got two lanes in the circle, and it has half a dozen sets of traffic lights in it.
07:55:35 <fizzie> It's more like a short circular road than a junction.
07:55:36 <pikhq> Likewise. "Traffic circle" to me only really refers to those godawful traffic-lighted things around the East coast, particularly Massachusetts.
07:55:58 <monqy> was it here that the magic roundabout was brought up a while ago? that thing's amazing
07:56:22 <pikhq> I really, really wish roundabouts were more prevalent. Traffic lights *suck*.
07:57:20 <monqy> http://en.wikipedia.org/wiki/Roundabout_Appreciation_Society good
07:58:47 <pikhq> fizzie: Also, RE: speeding. Flaunting the police is a bit more understandable when you realise that they don't function to increase safety here (and in many cases *reduce* it), but rather just to get cash.
07:59:18 <pikhq> monqy: :)
07:59:37 <fizzie> http://users.ics.tkk.fi/htkallas/roundabounda.jpg
08:00:34 <fizzie> According to fi.wikipedia, that one's Finland's first "traffic circle".
08:05:56 <fizzie> One thing I've sometimes wondered is whether there is any explicit law against going around and around and around( and around)* in one of those things.
08:06:47 <CakeProphet> fizzie: probably not necessary as no one woukd waste the time / fuel.
08:07:30 <fizzie> Guess so, and it'd be somewhat silly to make it a crime to accidentally miss your exit and go the full circle at least once.
08:09:51 <fizzie> Also in the category of "what?": they're having this competition in Finland, where people (six at the beginning) sit inside this mini-excavator at a shopping centre, and the one who sits in it the longest wins the excavator. At the moment the (two remaining) competitors have spent 166 days in their mini-excavators.
08:10:17 <CakeProphet> ..
08:10:20 <CakeProphet> what?
08:10:27 <pikhq> ... *Why*?
08:11:10 <fizzie> Well, it's organized by the company selling those things, I suppose they wanted some visibility.
08:11:22 <fizzie> http://www.kaivuriskaba.fi/index.php?page=1032&lang=2
08:11:27 <monqy> how do people spend 166 days in their mini-excavators
08:12:13 <monqy> do mini-excavators have toilets
08:12:25 <fizzie> I think they have a total of one hour per day they can be outside the excavator.
08:12:35 <monqy> toilet hour
08:12:36 <fizzie> For bathroom breaks and so on.
08:15:16 <fizzie> I'm not entirely certain they expected the thing to last this long.
08:16:37 <CakeProphet> some people are ridiculously competetive
08:17:00 <pikhq> I'd imagine they only really expected it to last a week, tops.
08:17:25 <monqy> I can't imagine sitting in the excavator more than a couple of minutes
08:17:40 <monqy> I'll never win prizes
08:18:59 <pikhq> I could only imagine it if I gave approximately G_64 more shits than I do.
08:19:01 <pikhq> :P
08:25:14 <madbr> Ok decided to call my language Fatmouse
08:27:38 <madbr> http://esolangs.org/wiki/Fatmouse
08:28:14 <madbr> Kinda like it too... my first language that's not some kind of broken functional-ish language
08:29:22 <madbr> Can't be implemented until I figure out how to garbage collect it though :D
08:33:38 <CakeProphet> madbr: sir, those conditions at the end of statements
08:33:41 <CakeProphet> that's control flow.
08:34:03 <madbr> shhhh :D
08:34:05 <monqy> how does statement evaluation order work? nondeterministic?
08:34:18 <madbr> in theory it doesn't matter
08:34:27 <CakeProphet> it shouldn't matter no.
08:34:33 <CakeProphet> unless there's side-effects.
08:34:47 <madbr> nah, no side effects
08:35:13 <madbr> there's i/o but it's not affected by evaluation order either
08:35:21 <monqy> oh?
08:35:23 <CakeProphet> madbr: just do a reference count garbage collection. so basically if a variable is part of a condition that's +1 refcount
08:35:44 <CakeProphet> when a conditional statement is executed that's -1 refcount.
08:36:00 <madbr> cake: it's not quite that simple as far as I can tell :D
08:36:02 <CakeProphet> to all the variables in the condition.
08:36:35 <madbr> the problem is that a variable can be collected when it can't cause any more other statements to turn true in turn
08:37:01 <CakeProphet> I don't see how that's a problem.
08:37:01 <madbr> that would be easy except for the variable arrays
08:37:59 <madbr> for instance in the brainfuck example, none of the statements ever become obsolete
08:39:04 <madbr> essentially it calculates the new state from the old state. the interpreter has to figure out what's part of the old state and thus unreachable and garbage collectable, and what isn't
08:39:14 <madbr> but that seems to depend on variable indices
08:39:25 -!- myndzi has joined.
08:39:44 -!- myndzi has quit (Client Quit).
08:39:56 -!- myndzi has joined.
08:40:38 <madbr> for instance icnt.0 becomes obsolete once the 4 lines that depend on it have run
08:40:58 <CakeProphet> okay, so what's the problem with my scheme?
08:41:10 <madbr> dunno, I'll think about it
08:41:13 <CakeProphet> just treat each variable index as a unique variable to be garbage collected.
08:41:14 <madbr> too tired
08:42:48 <CakeProphet> the refcount would be a compile-time thing essentially.
08:42:52 <CakeProphet> I think?
08:42:58 <CakeProphet> well, no, probably needs to be runtime I guess.
08:43:49 <CakeProphet> essentially whenever a variable (or array index) is "created" it then needs to make a count of how many times it's referenced in a conditional.
08:44:03 <CakeProphet> then when a conditional that references the variable executes, you decrement its refcount
08:44:08 <CakeProphet> when it reaches 0, you can garbage collect.
08:44:10 <madbr> but that count might be infinity
08:44:15 <CakeProphet> ?
08:44:19 <madbr> cake: hmm.....
08:44:29 <CakeProphet> last I checked we don't write infinite programs very often.
08:44:35 <madbr> cake: actually that sounds like a good idea
08:44:39 <madbr> I'll look into it
08:44:42 <madbr> tomorrow :D
08:44:53 <CakeProphet> alright. :)
08:45:20 <madbr> but yeah I mean a same variable can be used multiple times by a statement I think
08:46:22 <madbr> anyways, night
08:46:23 -!- madbr has quit (Quit: Radiateur).
08:51:36 <CakeProphet> http://i.imgur.com/MNbN6.jpg
08:58:55 -!- monqy has quit (Quit: hello).
09:01:49 -!- Ngevd has joined.
09:01:59 <Ngevd> I'm ill...
09:11:07 -!- copumpkin has quit (Ping timeout: 240 seconds).
09:11:34 -!- derdon has joined.
09:11:42 -!- copumpkin has joined.
09:34:09 -!- sebbu2 has changed nick to sebbu.
09:49:11 -!- ais523 has joined.
09:57:30 -!- copumpkin has quit (Ping timeout: 258 seconds).
09:57:56 -!- copumpkin has joined.
10:05:09 -!- Ngevd has quit (Ping timeout: 248 seconds).
10:37:31 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
10:44:13 -!- GreaseMonkey has quit (Quit: The Other Game).
10:50:54 -!- hagb4rd has joined.
12:31:03 -!- variable has quit (Excess Flood).
12:31:43 -!- variable has joined.
12:33:49 -!- variable has quit (Excess Flood).
12:39:13 -!- variable has joined.
12:41:47 -!- Phantom_Hoover has joined.
12:42:06 -!- variable has quit (Excess Flood).
12:43:43 -!- variable has joined.
12:44:08 <Phantom_Hoover> Hello everyone.
12:44:08 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
12:49:58 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:50:22 -!- Phantom_Hoover has joined.
12:55:36 -!- variable has quit (Excess Flood).
12:56:35 -!- variable has joined.
13:13:17 -!- Ngevd has joined.
13:17:01 -!- Aune has joined.
13:28:46 -!- Ngevd has quit (Ping timeout: 240 seconds).
13:36:59 -!- Ngevd has joined.
13:44:45 -!- copumpkin has quit (Ping timeout: 252 seconds).
13:45:13 -!- copumpkin has joined.
13:46:01 <Ngevd> Today's BBC News Technology section:
13:46:09 <Ngevd> Facebook sucks, here's something else!
13:46:17 <Phantom_Hoover> It's not Diaspora, is it?
13:46:22 <Ngevd> It is.
13:46:26 <quintopia> heh
13:46:26 <Ngevd> The creator's died
13:46:58 <Ngevd> At the age of 22
13:47:12 <quintopia> damn.
13:47:45 <Phantom_Hoover> No indication as to under what circumstances he died.
13:48:53 <Ngevd> Who was that Scottish guy, Robert or Robbie or something
13:49:12 <Ngevd> Doesn't narrow it down, does it?
13:49:50 <Phantom_Hoover> I know at least two Robbies, although only one of them's Scottish.
13:50:00 <Ngevd> Dead, very dead
13:50:06 <Ngevd> Folk hero type person
13:50:39 <Phantom_Hoover> Coltrane?
13:50:51 <Ngevd> Probably not
13:50:55 <Phantom_Hoover> (He's not dead.)
13:51:12 <Ngevd> The clue is "Sir Walter Scott's hero" and my gran thinks it's a Scot called Robert
13:51:45 <quintopia> crossword?
13:51:53 <quintopia> how many letters?
13:52:13 <Phantom_Hoover> Burns?
13:52:13 <Ngevd> 7
13:52:20 <Phantom_Hoover> Bruce?
13:53:02 <quintopia> ivanhoe
13:53:29 <Phantom_Hoover> Roy?
13:53:43 <Phantom_Hoover> Probably Roy; he wrote a book about him.
13:53:48 <Ngevd> Ivanhoe fits
13:53:59 <Ngevd> Thanks, guys!
14:11:21 <Phantom_Hoover> Argh, still another hour at least until the computer bits arrive.
14:11:39 <Ngevd> Well, Assassin's Creed Revelations arrived this morning!
14:12:01 <Phantom_Hoover> I guess that you have to order everything in Hexham?
14:12:29 <Ngevd> Nah, just video games
14:12:51 <Phantom_Hoover> What else would you need to *buy*?
14:13:06 <Ngevd> I dunno
14:13:08 <Ngevd> Lemonade
14:16:37 <Phantom_Hoover> Hmm, Scotland fast-tracks you to university if neither of your parents went.
14:17:15 <Phantom_Hoover> (Apparently that's something the rest of the UK can blame on us: the expectation that university should be the norm.)
14:21:37 <fizzie> What about those things you run video games on? You know, those... computaurs?
14:21:56 <Phantom_Hoover> You can't just torrent those????
14:22:05 <Ngevd> We've got computaur stores
14:22:57 <fizzie> Impressive; I don't think Hexham-sized places here do, at least any good/cheap ones.
14:23:31 <Phantom_Hoover> He didn't say 'good' or 'cheap'.
14:23:36 <Ngevd> We've got "The Computer Shop"
14:23:49 <Ngevd> We used to have "The laptop shop" but that closed down
14:24:46 <Phantom_Hoover> The Computer Shop.
14:24:49 <Phantom_Hoover> Sounds good.
14:26:06 <Ngevd> There's also the Violin Shop
14:26:16 <Ngevd> But you can't by computers there
14:26:25 <fizzie> The Violence Shop.
14:27:10 <Phantom_Hoover> Please please tell me that all shops in Hexham are just called The _ Shop.
14:27:16 <Ngevd> No
14:27:20 <Phantom_Hoover> :(
14:27:27 <Ngevd> Just Violin, Computer, Laptop, and Sandwich
14:27:31 <fizzie> Do you have a "The Shop"?
14:27:37 <Ngevd> No
14:27:40 <fizzie> Apparently they indeed do have two (2) computaur stores (or approximations of) also in the Hexham-sized place I was thinking of.
14:28:07 <Phantom_Hoover> The Shop Shop, venture capitalist hub.
14:30:00 <Ngevd> We also have a soft drinks brewery
14:31:11 <fizzie> The 2nd largest electronics retailer (and the oldest webstore) in Finland -- net sales of 173 million euro/year, probably the largest sort-of computaur-focused consumer-shop -- is called "verkkokauppa.com", lit. "webstore.com". It's not exactly the most imaginative name either.
14:32:33 <Phantom_Hoover> Are all the shops in Finland called <location> Store.
14:32:51 -!- derrik has joined.
14:33:01 <fizzie> Sadly, no.
14:34:37 <fizzie> Even the "webstore.com" used to be called Arctecho in olden days.
14:35:03 <fizzie> What.
14:35:18 <fizzie> "For the first 19 years of his life an unemployed US teenager was known as Calvin Gosz, but after selling his naming rights to a Finnish consumer electronics retailer he is now called Verkkokauppa Com.
14:35:19 <fizzie> The contract says that Calvin Gosz, of Sheboygan, Wisconsin will legally change his name to Verkkokauppa Com in exchange for the asking price of USD 5,000 (ca. EUR 3,400)."
14:39:24 <Phantom_Hoover> What's stopping him from changing it back?
14:40:17 <fizzie> Probably nothing, unless they've specified some time limits in the contract.
14:40:52 <Gregor> Maybe Verkkokauppa just likes it.
14:40:52 <fizzie> "He is eligible to change his name back after two months."
14:40:59 <Gregor> Probably goes by Verko.
14:48:19 -!- Darth_Cliche has joined.
15:01:10 <Gregor> Argh, JITting isn't easy X-D
15:01:14 <Gregor> Stupid function pro/epilogues.
15:01:22 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:04:20 <Phantom_Hoover> @tell elliott OMG more Gorey overs so happy
15:04:20 <lambdabot> Consider it noted.
15:04:28 <Phantom_Hoover> @tell elliott COVERS I MEANT COVERS
15:04:29 <lambdabot> Consider it noted.
15:12:35 -!- augur has quit (Remote host closed the connection).
15:14:50 <fizzie> "Recommended videos: Fat Man Shoots A Gun (0:08) .. because you watched The Man with the Gun". Oh YouTube... (The former is Exactly What It Says on the Tin; the latter is a PPOT music video.)
15:15:03 <fizzie> Maybe when the Semantic Web comes we'll get relevant recommendations.
15:16:10 <Phantom_Hoover> I can say on firm logical foundations that when the Semantic Web comes along we'll have flying pigs.
15:18:45 <Gregor> But the flying pigs will all be linked by their semantic properties.
15:18:47 <Gregor> So it's all good.
15:19:15 <Ngevd> On a not entirely unrelated note, I think I may have thought of a brilliant way to do XSLT S and K
15:23:26 <Gregor> "register" is ANSI C right? (Although with no defined semantics)
15:24:43 <ais523> Gregor: yes, and it does have a defined semantic (UB if you try to take a pointer to it)
15:24:59 <ais523> admittedly, it's a defined semantic that's strictly more useless than auto's, but it's there
15:25:01 <Phantom_Hoover> Ngevd, how is it this hard to copy subtrees of an XML expression.
15:25:16 <Phantom_Hoover> Is XSLT just completely nuts?
15:25:28 <Ngevd> NOOOO!!!
15:25:35 <Ngevd> It doesn't work
15:25:43 <Ngevd> And yes, XSLT is completely nuts
15:25:45 <Gregor> ais523: Heh, I meant no semantics of "it will actually be a register" of course :)
15:25:48 <Ngevd> I can do one iteration just fine
15:25:52 <Gregor> ais523: And a parameter can be marked "register", right?
15:25:53 <Ngevd> I can't make it recurse
15:26:04 <Phantom_Hoover> Oh, your problem is with recursion?
15:26:05 <ais523> Gregor: I think so, although I'm not completely sure
15:26:23 <Phantom_Hoover> ISTR that XSLT left that out deliberately because they objected to TCness or something?
15:26:36 <Gregor> Maybe I should just compile with -ansi -pedantic
15:27:04 <Phantom_Hoover> Oh, wait, no.
15:27:09 <Phantom_Hoover> Ngevd, have you read http://conferences.idealliance.org/extreme/html/2004/Kepser01/EML2004Kepser01.html ?
15:27:34 <Ngevd> No
15:27:35 <Gregor> full.c:31:8: warning: ISO C forbids conversion of function pointer to object pointer type [-pedantic] HAHA COMPLETELY FORGOT ABOUT THIS
15:27:42 * Gregor chooses to ignore that >_>
15:28:03 <ais523> Gregor: you can use void(*)() as a generic function pointer type if you like
15:28:11 <ais523> although you'll have to cast back and forth explicitly
15:28:19 <Phantom_Hoover> It promises a coding of recursive functions, so it might be worth reading.
15:28:52 <Ngevd> You know what would be interesting?
15:29:00 <Gregor> ais523: I'm doing a JIT, I explicitly need to cast between function and non-function pointers.
15:29:02 <Ngevd> A program that when it has no input prints its source code
15:29:06 <Gregor> ais523: It complains even with a valid cast.
15:29:14 <Ngevd> But when it has input interprets that input as its own language
15:29:21 <ais523> Gregor: oh right
15:29:30 <ais523> in general, that's completely impossible
15:29:50 <ais523> (I've used archs before which had 14-bit words in the program storage and 8-bit words in the RAM-equivalent)
15:29:56 <Phantom_Hoover> Ngevd, so an interpreter which spits out its own source when you give it an empty program?
15:30:04 <ais523> I guess the only truly portable way is to go via a char array
15:30:09 <Ngevd> A self-intpreter, Phantom_Hoover
15:30:10 <ais523> that is, to avoid the warnings
15:30:19 <ais523> it still won't /work/ on archs with separate code and data
15:30:20 <Gregor> ais523: Yeah, I know.
15:30:31 <Gregor> ais523: Errr, it is possible to "ignore" the warnings, I've done it.
15:30:43 <Gregor> ais523: Cast through an integer type, size_t.
15:30:48 <Gregor> ais523: (void*)(size_t)func
15:30:52 <ais523> Gregor: intptr_t, you mean
15:31:14 <Gregor> ais523: If sizeof(size_t)!=sizeof(void*) you're usually screwed anyway :)
15:31:26 <ais523> heh
15:31:31 <ais523> but intptr_t exists for that purpose, why not use it?
15:31:36 <Ngevd> Preferrably in an esoteric language
15:31:39 <Gregor> Fair 'nuff.
15:31:41 <Phantom_Hoover> Computer bits have arrived.
15:31:46 <Gregor> ais523: It's just unfortunate for IOCCC X-D
15:31:53 <Gregor> But anyway, I'll focus on making the JIT /work/ first.
15:32:01 <Ngevd> I still haven't got into Assassin's Creed
15:39:41 <Ngevd> +
15:41:06 <Ngevd> +
15:41:31 <Ngevd> ^^^extract from a BF program I'm working on
15:42:11 <ais523> o
15:42:30 -!- augur has joined.
15:45:30 <Ngevd> ASSASSIN'S CREED TIEM
15:48:14 -!- copumpkin has joined.
15:51:17 -!- boily has joined.
15:57:10 -!- ais523 has quit (Read error: Operation timed out).
16:13:29 <Ngevd> Hmm...
16:13:36 <Ngevd> Should I get a Diaspora account?
16:13:58 <fizzie> It's also possible to ignore the warning by going via the reinterpret-bits route; with C99 compound-literal and designated-init you can do it inline with a simple and elegant int func(void); ...; void *vp = (union { void *v; int (*f)(void); }){ .f = fn }.v;
16:16:17 <Ngevd> I think the worst thing about Diaspora is that not enough people have an account
16:17:03 <Phantom_Hoover> Ngevd, I think wait until elliott turns up, he'll probably have some strong opinions on it.
16:18:52 -!- derrik has quit (Quit: gone).
16:20:01 -!- MSleep has changed nick to MDude.
16:21:01 <pikhq> Gregor: POSIX C permits conversion of function pointer to object pointer.
16:21:28 <pikhq> i.e. that warning is bullshit.
16:21:29 <Gregor> pikhq: IOCCC is ANSI, not POSIX.
16:21:36 <Gregor> pikhq: And that warning is only with -ansi -pedantic.
16:22:04 <pikhq> IOCCC says "it must compile with an ANSI C compiler" and then goes on and describes how ideally you should comply with POSIX.
16:22:17 <Gregor> Oh
16:22:20 <Gregor> I misunderstooded.
16:22:26 <Gregor> I'm using mmap anyway X-P
16:22:29 <fizzie> The warning also explicitly says "ISO C forbids".
16:22:34 <Gregor> Even MAP_ANON, which is non-POSIX.
16:22:47 <pikhq> I think what they *mean* is that it should use an ANSI C compiler *as oppossed to K&R C*.
16:22:54 <Gregor> Fair 'nuff X-D
16:23:08 -!- Ngevd has quit (Ping timeout: 244 seconds).
16:23:14 <Gregor> This is going to be a challenging enough project without getting all pedantic >: )
16:23:54 <pikhq> I'd interpret it to mean "common UNIX compliant" if I were you. :)
16:24:22 <Gregor> That's what I am doing.
16:24:25 <Gregor> What with the mmap.
16:24:26 -!- Ngevd has joined.
16:30:26 -!- Ngevd has quit (Ping timeout: 256 seconds).
16:46:36 <Phantom_Hoover> fungot!
16:46:36 <fungot> Phantom_Hoover: i know! and yet, i still know it's true, but which cannot! the speeder do you fit the entire poopulation o, i am the master, the men and die horribly, don't you?
16:53:24 <Gregor> ARGH SO CLOSE WTF :(
16:54:15 <Darth_Cliche> ...is fungot a bot?
16:54:15 <fungot> Darth_Cliche: i can think of one good thing, but laughed it off one on one and it is while balanced precariously on the back of the tavern
16:54:21 <Darth_Cliche> oh, ok
16:55:02 <Phantom_Hoover> fungot is the best bot ever.
16:55:02 <fungot> Phantom_Hoover: there's the internet, adam. it could just apply a jolly good. nothing has a bite that big to you, our helpful. ' is phone is still workin' class, guv.
16:55:09 -!- ais523 has joined.
16:55:17 <Phantom_Hoover> ^sty... oh, it'll be IWC.
16:56:15 <Phantom_Hoover> Darth_Cliche, watch this.
16:56:18 <Phantom_Hoover> ^style fungot
16:56:18 <fungot> Selected style: fungot (What I've said myself)
16:56:22 <Darth_Cliche> IWC? Irregular Webcomic?
16:56:30 <Phantom_Hoover> fungot, meta!
16:56:30 <fungot> Phantom_Hoover:, so i'd make stuff up to. why, this is for you guys are a lot
16:56:39 <Phantom_Hoover> Darth_Cliche, yes.
16:56:47 <Phantom_Hoover> It's the newest style.
16:57:07 <Darth_Cliche> :D I knew 'I know and yet I still know it's true' sounded familiar
16:57:26 <Darth_Cliche> that also explains why it mentioned a tavern
16:57:41 <ais523> fungot: hi!
16:57:41 <fungot> ais523: is that something you know and and
16:57:44 <ais523> also, Darth_Cliche: hi!
16:57:46 <ais523> `? welcome
16:57:49 <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
16:59:40 <Gregor> Darth_Cliche has been here for a while.
17:00:22 <Darth_Cliche> indeed
17:00:37 <Phantom_Hoover> Didn't Taneb lead you to our hiding-place?
17:00:48 <Darth_Cliche> Taneb?
17:00:56 <Darth_Cliche> I don't think I know anyone by that nick
17:01:10 <Darth_Cliche> I think it was eliott who led me here
17:01:20 <Gregor> lol
17:01:59 <Gregor> Anybody know off-hand the gcc optimization flag to not rearrange functions? X-P
17:02:38 <Gregor> Seems to be -fno-reorder-functions
17:03:04 <Gregor> Or ... not ...
17:05:15 <Gregor> Works with -O1 :)
17:06:20 -!- monqy has joined.
17:07:39 <Phantom_Hoover> Darth_Cliche, ouch, I don't want to be you when elliott arrives.
17:07:40 <Phantom_Hoover> He hates people getting the number of ls and ts wrong.
17:14:45 -!- kmc has quit (Quit: Leaving).
17:15:04 <Gregor> How annoyed would the IOCCC folks be if I said it works with -O0, -O1 or -O2 -fno-align-functions -fno-optimize-sibling-calls -fno-peephole2 >_>
17:22:58 <ais523> Gregor: ooh, I'll have to look at those optimisation combos for my own program
17:23:02 <ais523> although, I suspect even -O1 breaks it
17:23:22 <Gregor> ais523: Rearranging functions breaks me quite horribly :)
17:23:34 <ais523> it relies really heavily on variables always being stored in memory; marking them volatile and passing pointers to them to functions works for gcc -O0 and clang -O0
17:23:54 <ais523> but I doubt it fools higher optimisation levels, and know it doesn't fool -O3
17:24:34 <Gregor> Yeah, I doubt those flags will help you then.
17:24:42 <Gregor> I rely on variables being stored in registers :P
17:26:09 <Gregor> Now to try on 32-bit, which I haven't done in a long while ...
17:26:18 <Gregor> Works :)
17:28:00 <ais523> hmm, this is the first time I've ever tried to do really portable stack-smashing
17:28:13 <ais523> it even allows for differences in the direction of the stack, and doesn't care where on the stack frame the variables are stored
17:28:22 <ais523> and it's in a recursive function, to /force/ them to be stored on the stack
17:28:46 <Gregor> That may be more portable than me :P
17:28:57 <Gregor> But to be fair, portable JITting is completely impossible.
17:29:18 <Gregor> Now the real test: ARM
17:29:42 <ais523> hmm… identify function prolog and epilog statistically, compile code in order to generate the instructions you need?
17:29:45 -!- SgeoN1 has quit (Remote host closed the connection).
17:29:52 <Gregor> Yup
17:30:36 <ais523> I mean, as a suggestion on how to portably JIT
17:31:11 <Gregor> That's what I do :P
17:31:21 <Gregor> But the pro/epilogue stuff is a nasty trick.
17:31:26 <Gregor> Especially with optimization.
17:31:55 <Gregor> I keep forgetting that OWCC is the slowest compiler ever written.
17:32:47 <ais523> what bytecode/language are you taking as the input to the JIT?
17:32:49 <Gregor> !bf_txtgen Hello, world!
17:32:53 <EgoBot> ​127 +++++++++++[>+++++++>+++++++++>++++>+<<<<-]>-----.>++.+++++++..+++.>.------------.<++++++++.--------.+++.------.--------.>+.>-. [697]
17:32:56 <Gregor> ais523: Something vaguely similar to BF.
17:33:11 <ais523> oh, a /very/ simple JIT
17:33:14 <Gregor> Yes :P
17:33:19 <Gregor> Gimme a break, I have 2048 characters.
17:33:33 <ais523> is it still left/right/inc/dec/loop? or does it mention numbers?
17:33:49 <Gregor> s/loop/label and jump/
17:34:48 <ais523> hmm, I'm pretty sure we have a name for BF-except-with-conditional-GOTO
17:34:56 <ais523> we have a name for basically every other BF deriv, right?
17:36:30 <Gregor> Yeah, it's out there somewhere.
17:36:34 <Gregor> Mine isn't quite that either.
17:36:40 <Gregor> It's precisely what was most JITtable of course :P
17:42:54 <Phantom_Hoover> Y'know what sucks about aluminium?
17:43:02 <Phantom_Hoover> Scratches are stupidly visible on it.
18:03:57 -!- elliott has joined.
18:06:56 -!- SgeoN1 has joined.
18:09:42 <ais523> hey, argument currently dominating #nethack: how is "xor" pronounced?
18:10:06 <elliott> zor
18:10:06 <lambdabot> elliott: You have 9 new messages. '/msg lambdabot @messages' to read them.
18:10:15 <elliott> as in, zaw
18:10:16 <ais523> elliott: hmm, you're on the other side of the argument to me, then
18:10:17 <elliott> z + or
18:10:21 <elliott> ais523: what do you say?
18:10:25 <ais523> (to me it's "exor")
18:10:37 <elliott> ais523: I hereby declare it to be pronounced with a Lojbanic x
18:10:41 <elliott> (like the "ch" in "Bach")
18:11:52 <Deewiant> Dictionary.com says it's "exor", I always
18:11:57 <Deewiant> +say just "xor"
18:13:10 <Gregor> Hm
18:13:13 <Gregor> I pronounce it ex-or
18:13:30 <Gregor> On a related note, ZEEEEEEEEEEEEEEEEEEE
18:13:37 <elliott> Deewiant: You can't "say just xor" :P
18:13:46 <Deewiant> I can and I do
18:13:55 <Gregor> What, like ksor?
18:14:00 <Deewiant> Yes, like that.
18:14:07 <Gregor> Wow, that's awkward.
18:14:21 <elliott> I pronounce it like "pshaw"!
18:19:58 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:23:18 <Gregor> AAAAAAAAAAAAAARM >_<
18:23:29 <elliott> Gregor: Zee arm?
18:23:52 <Gregor> ead8: e59f200c ldr r2, [pc, #12] ; eaec <j333333+0x20>
18:23:52 <Gregor> ...
18:23:52 <Gregor> eaec: 00051615 .word 0x00051615
18:24:04 <Gregor> Another way to read that is "Just try to JIT this, bitch!"
18:24:07 <elliott> eaec
18:24:20 <Darth_Cliche> Deewiant: I usually pronounce it 'zor'
18:26:23 <elliott> ais523: I pronounce "xor" by hitting the back of my tongue off the top of my mouth while moving air through it quickly and then "or"
18:26:28 <elliott> That almost certainly has a name.
18:26:37 -!- Ngevd has joined.
18:27:14 <ais523> elliott: hmm, I just pronounced that first consonsant a few times, and it sounds more like a Welsh ll than anything
18:27:18 <Gregor> I wonder how I could convince ARM not to put this constant in .text >_>
18:27:42 <elliott> ais523: It sounds like "k" here, i.e. the whole thing sounds like "core" but much more... I dunno, thuddy :P
18:27:55 <elliott> Also it's impossible to do vowels after it so I sound like a ghost or something.
18:28:03 <ais523> my tongue stays low for a k
18:28:20 <elliott> ais523: It isn't how I pronounce a "k", it just sounds like it :P
18:28:23 * elliott records THE PERFECT XOR.
18:28:27 <elliott> btw I don't actually say it like this.
18:30:29 <Ngevd> I pronounce xor as kssor
18:31:10 <Gregor> NO ONE TALKS LIKE THAT SHADDAP
18:31:23 <monqy> i don't quite have a good pronunciation for xor
18:31:28 <elliott> Darn, Audacity can't do my microphone.
18:31:38 <monqy> sometime's it's ksor sometimes it's zor somtimes it's ex-or
18:31:52 <monqy> :(
18:32:07 <elliott> ais523: I pronounce "xor" by punching myself in the face and then "or"
18:32:21 -!- zzo38 has joined.
18:32:26 <monqy> i pronounce xor by punching whoever wanted me to punch xor in the face
18:32:28 <monqy> then or
18:32:30 <monqy> er
18:32:34 <monqy> not punch xor
18:32:36 <monqy> pronounce xor
18:32:42 <monqy> i also punch whoever gave xor its name
18:32:56 <ais523> `addquote <elliott> ais523: I pronounce "xor" by punching myself in the face and then "or"
18:32:58 <HackEgo> 717) <elliott> ais523: I pronounce "xor" by punching myself in the face and then "or"
18:33:15 <Ngevd> elliott, opinion on Diaspora
18:33:17 <Ngevd> Go
18:33:36 <Gregor> OK, I'mma come back to ARM later :P
18:33:39 <Gregor> What platform next?
18:33:45 <Gregor> Oh yeah, x86 and ARM are the only platforms.
18:33:49 <Ngevd> Wii
18:33:51 <elliott> i dont know much about jews.......................................... but i hear the greg egan book is good!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18:33:53 <elliott> Gregor: PPC
18:34:00 <Darth_Cliche> Gregor: I for one can say /ks/ at a coda
18:34:03 <Ngevd> elliott, you know what I meant
18:34:09 <Darth_Cliche> I believe it's relatively common in Greek as well
18:34:16 <elliott> Ngevd: :'(
18:34:31 <Darth_Cliche> though always simplified to /z/ when a Greek word is loaned to English, like /ps/ > /s/
18:34:44 <elliott> Wow Wikipedia, do you really want to call this appeal person an "author of 549 Wikipedia articles"? I thought you didn't do that :P
18:35:34 <ais523> elliott: the WMF are running out of ideas for pleading for funding
18:35:44 <ais523> also, Wikipedia's collapsing in terms of activity
18:35:48 <elliott> wow, they're asking for 3 pounds a month
18:35:53 <ais523> number of editors/edits/etc are all dropping
18:35:58 <elliott> do they really think many people will do that?
18:35:58 <elliott> ais523: heh
18:36:56 <elliott> ais523: "The amazing thing about Wikipedia is that nerds like me, who love weird things like gastropods (snails), get to come together and share our passion with the world."
18:36:59 <elliott> ais523: actual quote from the appeal
18:37:12 <Gregor> OMG!
18:37:16 <ais523> meh, it's not as bad as Enigma's advertising
18:37:18 * Gregor hurls money at Wikipedia
18:38:07 <elliott> ais523: hmm, I somehow can't imagine Wikipedia dying
18:38:47 <Gregor> I'll bet they'd get donations if they went down for one day and then came back up saying "lol sorry guys, couldn't pay the bills for that day."
18:39:07 <zzo38> Are you weird?
18:39:38 <elliott> zzo38: Super.
18:39:59 -!- zzo38 has quit (Remote host closed the connection).
18:40:23 <monqy> too weird for zzo
18:45:41 <elliott> OH MY GOD AIS
18:45:50 <elliott> http://esoteric.voxelperfect.net/wiki/User:Newkitten PLEASE DON'T DELTE THIS OMG ;___;
18:46:53 -!- boily has quit (Ping timeout: 252 seconds).
18:55:05 <Gregor> Damn it, my JIT isn't portable :(
18:55:09 <monqy> :(
18:56:44 <elliott> Gregor: is it potable
18:56:48 <elliott> Gregor: does itw ork on ppc
18:57:35 <Gregor> elliott: No. Or I would have said something jubilant like "MY JIT IS SO AWESOME WOOOH"
18:57:45 <elliott> Gregor: does it work with... sparc
18:57:45 <Gregor> Although the way it fails on PPC is a bit mysterious.
18:57:47 <elliott> alpha?
18:57:48 <elliott> misc?
18:57:50 <elliott> mips?
18:57:56 <elliott> try it on jsmips
18:58:01 <Gregor> lol
18:58:14 <ais523> elliott: but it's spam
18:58:35 <monqy> but it's gooooooood
18:58:36 <ais523> you could, umm, transwiki it somewhere?
18:58:47 <elliott> ais523: I'll move it to my userspace and remove the links???
18:58:52 <elliott> Gregor: i wasn't joking :P
18:58:55 <ais523> elliott: that'll do
18:59:01 <ais523> then I'll delete the redirect
18:59:28 <ais523> actually, I suspect it might be copyvio, checking now
18:59:40 <monqy> mm remembering My name is Johny, what the F**K, or whatever it was
18:59:45 <monqy> good names for good wiki pages
18:59:47 <ais523> nope, not copyvio, I think it's a markovbot
18:59:54 <elliott> http://esoteric.voxelperfect.net/wiki/User:Ehird/Newkitten tada
18:59:57 <ais523> monqy: elliott still needs to invent that language
19:00:09 <elliott> ais523: i'm working on it!
19:00:43 <monqy> somehow I pronounce the ** as vv in my head
19:00:45 <monqy> fvvk
19:00:49 <ais523> I suspect the latest batch of spambots have a page they want to advertise, and the way they do it is by looking for a search that people are using to reach that page (maybe an unlikely one), then doing that search themself and markoving the results
19:01:37 <monqy> i still like the spambots that replaced large chunks of page with compliments
19:01:51 <elliott> http://catsandkittenstraining.com/Introducing-a-New-Kitten.html
19:01:53 <monqy> i would like one as a pet if i could train it
19:01:54 <elliott> that stretched cat face is terrifying
19:02:00 <monqy> ahahah
19:02:01 <ais523> elliott: you actually visited a spam link?
19:02:05 <ais523> don't, that justifies the spambots' existence
19:02:06 <elliott> ais523: absolutely!!
19:02:12 <ais523> think about it, even one person visiting the link is a win for them
19:02:18 <elliott> :(
19:02:24 <elliott> but... even a dog can learn these cat training techniques
19:02:25 <monqy> Cat Training Made Easy
19:02:25 <monqy> Even a dog can learn these cat training techniques
19:02:26 <monqy> yes
19:02:33 <ais523> you're promoting the spamming of Esolang by visiting spam links
19:02:49 -!- ais523 has set topic: The IOCCC is back on! http://www.ioccc.org | Even a dog can learn these cat training techniques | http://codu.org/logs/_esoteric/.
19:02:54 <elliott> ais523: I don't think it's possible to unpromote spam
19:03:12 <elliott> I'm not sure they'd stop even if they got 0 visitors from every single wiki they spam
19:04:05 <ais523> * 19:03, 15 November 2011 Ais523 (Talk | contribs | block) deleted "User:Newkitten" (redirect left behind after userfication of spam)
19:04:16 <CakeProphet> http://features.peta.org/mario-kills-tanooki/
19:04:21 <ais523> elliott: they're just trying to bump up their Google rankings for searches
19:04:35 <elliott> ais523: then visiting it should be irrelevant, no?
19:04:41 <elliott> ais523: also, don't we use nofollow?
19:04:44 <ais523> we do
19:04:55 <ais523> elliott: but visiting the link directly is like bumping up the rankings, just more direct
19:05:07 <elliott> hmm
19:05:12 <ais523> why would spammers want high Google rankings, if not for pageviews?
19:05:24 <monqy> oh, peta
19:06:00 <Gregor> LOLLLLLLLLLL
19:06:40 <elliott> oh my god "super tofu boy"
19:06:50 <elliott> how is that real
19:06:57 <monqy> super tofu boy is brilliant
19:07:09 <monqy> i love it
19:07:39 <Darth_Cliche> As of now, I'm finally convinced that PETA is a troll
19:07:52 <Gregor> Does Super Meat Boy have anything to do with meat other than the player being made of meat?
19:07:57 <monqy> TIP: Tofu Boy is not only sexy, he tastes good too!
19:08:02 <monqy> TIP: Vegans do it better!
19:08:07 <monqy> thanks peta
19:08:22 <elliott> OH YM GOD IVE MADE MY USERPAGE HORRIFYING
19:08:34 <elliott> Gregor: I don't think so :P
19:08:51 <monqy> oh god your userpage
19:08:55 <CakeProphet> elliott: can't be as bad as my wikipedia userpage
19:08:59 <elliott> CakeProphet: it is
19:09:00 <elliott> http://esoteric.voxelperfect.net/wiki/User:Ehird
19:09:00 <elliott> its
19:09:01 <elliott> staring
19:09:02 <elliott> at me
19:09:04 <Gregor> elliott: ... BAHAHAHAHAHAHA
19:09:05 <Darth_Cliche> elliott: You replaced the snowman with something I can't see?
19:09:10 <elliott> Darth_Cliche: It's CAT FACE
19:09:23 <Ngevd> It's a square
19:09:31 <Darth_Cliche> It is ridiculous that there is a unicode symbol for snowman
19:09:37 <monqy> no
19:09:37 <CakeProphet> ...
19:09:38 <elliott> Darth_Cliche: Ngevd: http://i.imgur.com/b7NOS.png
19:09:53 <Darth_Cliche> OH GOD
19:10:01 <Ngevd> Indeed that is hideos
19:10:06 <monqy> no it's great
19:10:25 <monqy> if only there was...cat snowman....
19:10:27 <monqy> snowcat...
19:10:50 <elliott> snat
19:11:01 <elliott> http://esoteric.voxelperfect.net/wiki/User:Ehird
19:11:02 <elliott> oops
19:11:11 <elliott> lol scroll all the way to the right
19:11:40 <CakeProphet> super tofu boy has changed my ways
19:11:41 <monqy> hi cat
19:11:46 <CakeProphet> I now pledge to be a vegan here: https://secure.peta.org/site/Advocacy?cmd=display&page=UserAction&id=2055&c=STBpvp&s_src=ppmisc
19:11:55 <elliott> http://esoteric.voxelperfect.net/wiki/User:Ehird oh noooooooo
19:12:06 <Darth_Cliche> gahhhh broken thing
19:12:11 <monqy> caaaaaaaaaat
19:12:39 <elliott> cat loves you
19:12:45 <elliott> there, fixed
19:12:46 <CakeProphet> irssi is dumb and doesn't capture wiki urls correctly
19:13:00 <elliott> monqy: click the cat...btw...
19:13:10 <Deewiant> irssi doesn't capture URLs
19:13:23 <CakeProphet> er
19:13:27 <CakeProphet> gnome-terminal, rather
19:13:32 <CakeProphet> does that.
19:13:38 <monqy> elliott: i saw. good link...will you make a newkitten language...
19:13:48 <elliott> monqy: maybe..............
19:13:54 <CakeProphet> perhaps I could... submit a bugreport with a.... a patch?
19:13:58 <elliott> Deewiant: Can you agree to make CCBI's fungespace slower so I don't have to resort to mutability
19:13:59 <monqy> my name is johny and i am a new kitten what the fvvk
19:14:00 -!- ais523 has changed nick to ais523\unfoog.
19:14:28 <Deewiant> elliott: No
19:14:40 <elliott> Deewiant: Hmm, let's try that again
19:14:42 <elliott> Deewiant: Please
19:14:49 <Deewiant> elliott: Sorry, no
19:14:58 <elliott> Damn
19:15:22 <elliott> Deewiant: Uh, just to check, you do do the optimisation I'm thinking you do, right? (Caching the array that the IP is in to avoid hashtable lookups)
19:15:56 <Deewiant> Yes, except that it's to avoid a linear scan, not a hashtable lookup
19:15:58 <CakeProphet> avoid... hashtable lookups?
19:16:17 <Deewiant> CakeProphet: Them things're expensive.
19:16:22 <CakeProphet> AAAAAAAAH THE THEORETICALLY AVERAGE CONSTANT TIME, IT BURNS.
19:16:29 <elliott> Deewiant: Wait, why do you have a linear scan
19:16:30 <CakeProphet> what's the hash function look like?
19:16:34 <elliott> CakeProphet: "Average constant time" my ass
19:16:50 <Deewiant> elliott: Because I don't have a bucket PR-CIF k-d tree
19:16:53 <elliott> It's constant time if you never do any inserts
19:17:04 <elliott> Deewiant: You worry me
19:17:08 <CakeProphet> I'm afraid I don't have the power to render your ass in such an scalable manner.
19:17:27 <Deewiant> elliott: Seriously, because I couldn't be bothered to do anything better and it works well enough :-P
19:17:33 <CakeProphet> elliott: yes I am generally aware of how hash tables work. :P
19:18:11 <elliott> CakeProphet: Anyway, it matters when you'd be doing thousands and thousands of them per second
19:18:20 <elliott> I wonder how many instructions/s CCBI manages; Deewiant?
19:18:39 <Deewiant> elliott: ccbi -s might tell you, at least when combined with time(1)
19:18:40 <CakeProphet> elliott: with a slow hash function, this is true, yes.
19:18:59 <elliott> CakeProphet: Allow me to simplify this down to your level
19:19:06 <elliott> CakeProphet: Not doing a hash-table lookup is faster than doing a hash-table lookup
19:19:34 <CakeProphet> elliott: I didn't say it wasn't slower, rather, that with a slow hash function /it matters/
19:19:38 <CakeProphet> since that's what you said
19:19:42 <elliott> Deewiant: I'd have to find a long-running benchmark that tests different kinds of instructions :P
19:19:59 <Deewiant> elliott: Just run mycology a bunch of times? :-P
19:19:59 <elliott> CakeProphet: It matters when the goal is to be as fast as possible
19:20:05 <CakeProphet> well, sure.
19:20:16 <CakeProphet> silly goal.
19:20:48 <CakeProphet> elliott "need for speed" hird.
19:21:04 <elliott> CakeProphet: Elliott "need for not having each Fungicide benchmark take over ten minutes to run" Hird
19:21:25 <elliott> Deewiant: BTW, it sucks how your Fungicide table doesn't have units :P
19:21:30 <Darth_Cliche> I wonder what the simplest possible TC language is
19:21:57 <CakeProphet> elliott: just think of those ten minutes as quality time you can spend enjoying your life, to kick back and let some of the pressure of everyday existence evaporate away.
19:21:58 <monqy> what does "simple" mean
19:21:59 <Deewiant> elliott: Which one?
19:22:06 <Darth_Cliche> monqy: Good question.
19:22:08 <elliott> Deewiant: You only have one table
19:22:19 <Deewiant> elliott: I was hoping for a link, but fine
19:22:21 <elliott> Darth_Cliche: Probably self-BCT if it's TC
19:22:24 <elliott> Deewiant: http://users.tkk.fi/~mniemenm/befunge/fungicide-rankings/
19:22:39 * elliott uses non-permalink. It's super effective!
19:22:39 <monqy> also simple: iota
19:22:40 <Deewiant> elliott: "All time measurements are in seconds (s) and all memory measurements are in mebioctets (Mio)."
19:22:50 -!- boily has joined.
19:22:53 <Deewiant> elliott: (Yes, it probably should be repeated closer to the table.)
19:22:56 <elliott> Deewiant: That's above the charts! :p
19:23:05 * elliott would just put the units in parens in the table headings.
19:23:12 <elliott> But okay, right.
19:23:21 <elliott> 54 gigs is pretty impressive RAM usage.
19:23:25 <elliott> (OK, so it's total, not maximum.)
19:23:35 <Deewiant> I probably did that but it made it flow badly or something.
19:23:48 <Deewiant> And yeah, measuring total RAM usage is totally relevant to something.
19:24:58 <CakeProphet> ais523\unfoog: so what are the difficulties with implementing Checkout on a GPU?
19:25:08 <CakeProphet> is there a nice pretty bulleted list?
19:25:13 <elliott> CakeProphet: The fact that you can't program current GPUs at that level?
19:25:28 <CakeProphet> okay so you need to roll your own GPU
19:25:29 <elliott> Deewiant: I'm not sure "total RAM usage" even makes sense
19:25:31 <CakeProphet> sounds like fun.
19:25:34 <elliott> Deewiant: RAM doesn't really accumulate
19:25:41 <elliott> It's "RAM usage if you ran all the benchmarks at once" :P
19:26:01 <ais523\unfoog> elliott: actually, current GPUs can be programmed at quite close to that level; most of Checkout's commands can be given explicitly, but some can't and you just have to hope the GPU figures out what you mean from an approximation
19:26:14 <Deewiant> elliott: Yeah, that's what I was saying, it's not really very sensible
19:26:14 <elliott> ais523\unfoog: Well, yeah, I said "that level", not "quite close"
19:26:19 <elliott> I don't think OpenCL has a checkout command :P
19:26:21 -!- Phantom_Hoover has joined.
19:26:40 <Ngevd> Hold on a god-damn second
19:26:56 <ais523\unfoog> elliott: CPU to GPU it does
19:27:03 <ais523\unfoog> the readonly version too
19:27:07 <Ngevd> How is self-BCT different from regular BCT?
19:27:09 <ais523\unfoog> within the GPU, it doesn't
19:27:09 <elliott> ais523\unfoog: Well, okay
19:27:16 <elliott> Ngevd: No data stream
19:27:36 <elliott> Deewiant: Could you make something else slower, then
19:27:48 <Deewiant> elliott: Nah, I'm committed to keeping it fast
19:27:58 <elliott> Deewiant: Hmm
19:28:03 <elliott> Deewiant: Can I convince you to change your commitment
19:28:09 <Deewiant> elliott: I doubt it
19:28:15 <elliott> Deewiant: Money?
19:28:28 <Deewiant> elliott: How much? :-P
19:28:33 <Phantom_Hoover> Going to start building the computer.
19:28:51 <elliott> Phantom_Hoover: *bomb
19:28:54 <elliott> Deewiant: That's what I'm asking
19:28:56 <Phantom_Hoover> Although I'm still unclear on the order of some bits.
19:29:06 <Deewiant> elliott: How much can you offer?
19:29:14 <elliott> Deewiant: Depends on how much you want!
19:29:43 <Deewiant> elliott: That's not how it works; I don't need to tell you anything since you're the one with the need here
19:29:51 <Phantom_Hoover> Motherboard-CPU-RAM-PSU-GPU-HDD looks best, currently.
19:29:57 <elliott> Deewiant: Wow, offensive
19:30:06 <elliott> ais523\unfoog: Make sure Phantom_Hoover doesn't blow himself up, please
19:30:17 <ais523\unfoog> Phantom_Hoover: don't blow yourself up, please
19:30:28 <ais523\unfoog> elliott: best I can do :(
19:30:29 <Gregor> BLARGH PPC WHY YOU NO WORK
19:30:34 <elliott> RIP Phantom_Hoover 2011-2011
19:30:37 <Phantom_Hoover> ais523\unfoog, it would be a tragedy if all these expensive bomb parts were to go to waste, also me.
19:31:02 <elliott> Deewiant: Okay how about... 200 pounds
19:31:21 <Deewiant> elliott: Sorry, won't do
19:31:30 <elliott> Deewiant: 2000???
19:31:49 <CakeProphet> Phantom_Hoover: eh humans mostly consume value.
19:31:51 <CakeProphet> not very valuable.
19:31:59 <CakeProphet> well, phantom hoovers, however.
19:32:06 <CakeProphet> might be worth something.
19:32:11 <Deewiant> elliott: Sure, I'd take that, assuming pounds = GBP
19:32:11 <ais523\unfoog> elliott: why are you trying to bribe Deewiant to slow down ccbi, when it's hilarious when it beats cfunge?
19:32:21 <elliott> ais523\unfoog: Because I want Shiro to beat it
19:32:32 <ais523\unfoog> Deewiant: elliott's trying to trick you, a ?? is rather small compared to a GBP
19:32:35 <elliott> ais523\unfoog: And my options right now are slower fungespace, or mutable fungespace
19:32:45 <CakeProphet> elliott: I think you're maybe going about this from the wrong direction
19:32:45 <Deewiant> ais523\unfoog: heh
19:32:50 <elliott> ais523\unfoog: Latter is super ugly and doesn't go well with my "better code" goals for Shiro 2
19:32:54 <elliott> ais523\unfoog: Former is slower
19:33:33 <ais523\unfoog> is this a case of Haskell not being able to achieve top speed without being ugly?
19:33:35 <Deewiant> ais523\unfoog: I would've made a new, faster interpreter with a different name anyway
19:34:12 <CakeProphet> elliott: mutable fungespace + abstractions = clean code + fast fungespace
19:34:17 <elliott> ais523\unfoog: Oh, it wouldn't be /uglier/ than CCBI
19:34:18 <Gregor> Heyo, works on SPARC :)
19:34:27 <elliott> ais523\unfoog: It'd just be uglier than a non-mutating fungespace
19:34:48 <elliott> Haskell very rarely ends up UGLIER when doing mutable shit to match the performance of other languages, it just doesn't end up any nicer :P
19:34:55 <Phantom_Hoover> So there was nothing radically wrong with my bomb assembly?
19:35:08 <ais523\unfoog> really, we want compilers to be able to infer mutability
19:35:15 <elliott> CakeProphet: You still need to handle the mutability, which needs sequencing, which is sort of the whole point
19:35:17 <ais523\unfoog> where you write a bunch of pure changes, and it changes them to mutations when it's safe
19:35:24 <elliott> ais523\unfoog: That's called GC
19:35:35 <ais523\unfoog> elliott: it's not quite the same thing as GC
19:35:36 <elliott> ais523\unfoog: More seriously, uniqueness types/linear typing/whatever
19:35:40 <elliott> But you still have to sequence things there
19:35:46 <ais523\unfoog> copy-and-GC-the-original is different from mutate-the-original
19:35:51 <elliott> Anyway you can want that all you want but it's very much sufficiently-smart-compiler territory
19:36:08 <ais523\unfoog> (derlo deals with the problem by using a refcounting GC and mutating when the refcount is 1, but that's obviously not perfect)
19:38:16 <pikhq> "Refcounting GC"?
19:38:42 <ais523\unfoog> pikhq: refcounting is a sort of GC, IMO
19:38:52 <ais523\unfoog> although one that breaks on cyclic structures (in languagest that have them)
19:39:04 <pikhq> I'd consider it a form of automatic memory management, but not GC.
19:39:25 <CakeProphet> ITT: trivial semantic differences
19:39:33 <ais523\unfoog> it collects garbage, how is that not garbage collection?
19:39:34 <pikhq> Anyways.
19:39:36 <elliott> ais523\unfoog: argh, you're making me think about my lazy underload again :)
19:39:48 <ais523\unfoog> elliott: didn't you /want/ distracting from @?
19:39:58 <elliott> well... yes
19:40:09 <elliott> ais523\unfoog: but shiro 2 was managing that! sort of!
19:40:16 <CakeProphet> ais523\unfoog: I am inclined to agree. so you know it's a legit stance. :)
19:40:36 <pikhq> ais523\unfoog: "Garbage collection" to me refers to the class of memory management schemes that free things that are not referred to directly or indirectly from a root set.
19:41:12 <ais523\unfoog> pikhq: refcounting /does/ that, just buggily
19:41:16 <ais523\unfoog> much like boehm-gc does
19:41:23 <ais523\unfoog> it's just that the bugs are different in the two cases
19:41:59 <Phantom_Hoover> ais523\unfoog, OK one last piece of static paranoia:
19:42:07 <pikhq> ais523\unfoog: Refcounting doesn't, really. There is never a "scan memory" step, there is only a "mutate reference count" step.
19:42:28 <pikhq> Well, "mutate reference count and if ==0 free()"
19:42:33 <elliott> Phantom_Hoover: Did you know: Anti-static wrist straps work by directing the shocks to... YOUR HEART.
19:42:35 <Phantom_Hoover> Attaching the strap to the case, then screwing the motherboard in, is enough to ensure no damage to components plugged into the motherboard, right?
19:42:36 <elliott> ENJOY YOUR DEATH
19:42:57 <Phantom_Hoover> elliott, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
19:43:03 <ais523\unfoog> Phantom_Hoover: no, it'd make no sense for all the pins on the motherboard to be connected to its chassis ground
19:43:07 <ais523\unfoog> because then, they wouldn't do anything
19:43:10 <elliott> pikhq: Hmm, subleq would be good for refcounting
19:43:12 <Phantom_Hoover> Argh.
19:43:16 <ais523\unfoog> however, if the motherboard's just come out of packaging
19:43:26 <ais523\unfoog> there's no obvious way it could have got charged in the first place
19:43:42 <Phantom_Hoover> But what if I charge the case, which isn't itself grounded?
19:43:56 <pikhq> "Ground" is relative.
19:44:12 <ais523\unfoog> pikhq: well, it's absolute too
19:44:25 <ais523\unfoog> when talking about static discharge, both are relevant
19:44:28 <Phantom_Hoover> Yes, but the case could still, pathologically, build up a charge relative to the motherboard.
19:44:57 <ais523\unfoog> how?
19:45:04 <ais523\unfoog> do you know what causes static charge buildup?
19:45:12 <CakeProphet> ais523\unfoog: if I recall correctly, I believe Python's refcounting scheme has a way to detect some cycles without resorting to weakrefs or something?
19:45:12 <ais523\unfoog> (it mostly involves actions by humans, such as walking)
19:45:15 <Phantom_Hoover> My instinct is that it'd be fairly irrelevant for practical purposes, given that I'm not exactly wearing nylon clogs and skimming over wollen carpets.
19:45:18 <Phantom_Hoover> *woolen
19:45:25 <ais523\unfoog> the best cure for static buildup is to discharge once before everything starts, and then just sit still
19:45:31 <ais523\unfoog> CakeProphet: I don't know
19:45:43 <elliott> ais523\unfoog: hehehehehe you're going to make PH sit as still as a rock, afraid to breathe
19:45:50 <ais523\unfoog> Perl does refcounting without cycle breaks, but it's not a problem in practice as cyclic structures are rare, and when you want one, you add a delete method that breaks the cycle
19:45:52 <Phantom_Hoover> I hate both of you?
19:46:04 <ais523\unfoog> elliott: I was a bit like that when I started
19:46:24 <CakeProphet> ais523\unfoog: oh, no. it just uses a regular garbage collector to collect cyclic structures.
19:46:38 <ais523\unfoog> CakeProphet: and refcounting to collect everything else?
19:46:39 <elliott> CakeProphet: no, that's python
19:46:40 <pikhq> Tcl also does refcounting without cycle breaks, but it's not a problem as you can't really do cyclic structures from the reference counting system's point of view.
19:46:42 <Phantom_Hoover> I'm just going to clip myself to the case and try not to worry too much.
19:46:49 <pikhq> elliott: He was discussing Python.
19:46:52 <elliott> Phantom_Hoover: don't breathe too heavily, it'll cause a static discharge
19:46:53 <elliott> pikhq: oh
19:46:56 <CakeProphet> elliott: "this is python's garbage collection scheme" "no, that's python"
19:47:00 <CakeProphet> :P
19:47:03 <Phantom_Hoover> elliott, I DON'T CARE
19:47:04 <elliott> Phantom_Hoover: because of the flantz bobnicator
19:47:10 <pikhq> ais523\unfoog: Yeah. It's probably the most pointless scheme.
19:47:10 <elliott> Phantom_Hoover: and gluggunutz electrostatic hydromorphism
19:47:23 <CakeProphet> ais523\unfoog: oh, and yes. refcounting for everything else.
19:47:24 <elliott> experts shocked to discover that python is stupid
19:47:31 <Phantom_Hoover> See, I'm still terrified to actually do anything argh
19:47:31 <pikhq> "Let's do all the simplicity of a garbage collector with all the speed of a reference counter!"
19:47:44 <Phantom_Hoover> Damn you, Coulomb!
19:47:55 <elliott> I wonder if anyon's tried just removing the refcounter frmo Python.
19:48:13 <elliott> Phantom_Hoover: Reminder that idiots regularly assemble computers successfully.
19:48:14 <CakeProphet> elliott: I almost said that Python has the most stupid per unit of popularity
19:48:19 <CakeProphet> elliott: but I forgot about PHP.
19:48:30 <pikhq> Phantom_Hoover: You are much more paranoid than you should be.
19:48:34 <fizzie> The Python tracing gc is disableable, though, if you're sure you're never creating any cycles.
19:48:37 <Phantom_Hoover> elliott, yes, but they're defended because their brain activity doesn't cause static buildup!
19:48:43 <Phantom_Hoover> pikhq, yesyesyes, I know.
19:48:52 <elliott> python is worse than php because not many people deefnd python
19:48:56 <elliott> erm
19:48:58 <elliott> python is worse than php because not many people deefnd php
19:48:59 <elliott> defend
19:49:04 <pikhq> fizzie: Strange, it's the reference counting that you would want to turn off.
19:49:11 <pikhq> Unless their GC is *really* bad.
19:49:12 <Phantom_Hoover> Electrocuting computer ->
19:50:10 <elliott> rip Phantom_Hoover
19:50:12 <CakeProphet> pikhq: well if you used weakrefs for cycles and then turned off the GC, I think refcount would be reasonably efficient (???)
19:51:09 <CakeProphet> a weakref being "a reference that doesn't increment the refcount"
19:52:04 <pikhq> Mutating the reference count and free if ==0 actually does a number on performance. That's a pipeline flush on basically every function call.
19:52:25 <CakeProphet> ah okay.
19:52:37 <pikhq> Not to mention that malloc and free are actually not very speedy at allocation & deallocation.
19:52:40 <CakeProphet> I don't think you can turn off refcounting.
19:52:52 <elliott> sure you can
19:52:54 <elliott> just rip out the code
19:52:57 <CakeProphet> ...well, yes.
19:53:00 <CakeProphet> have fun with that.
19:53:13 <pikhq> I'd be horribly shocked if it weren't in a few macros.\
19:53:24 <elliott> hmm though
19:53:28 <elliott> what kinda gc does python use
19:53:29 <CakeProphet> pikhq: oh, yes it is
19:53:34 <elliott> how would it interact with C extensions
19:53:35 <elliott> like
19:53:40 <elliott> yeah
19:54:19 <CakeProphet> elliott: I think Python uses a custom allocator so that it can garbage collect C-level stuffs.
19:54:45 <CakeProphet> so, if your C extensions are well written, it should interact fine.
19:55:09 <pikhq> *Obviously* C extensions need to behave well with the GC already.
19:55:18 <pikhq> It's on by default.
19:55:25 <Gregor> I'm sure that Python's GC is sufficiently bad that it would actually slow down :)
19:55:42 <CakeProphet> we should have this discussion on #python
19:56:00 <CakeProphet> so that people will defend python's amazing automatic memory management.
19:56:04 <CakeProphet> it would be fun.
19:56:24 <olsner> I think #python can never be fun
19:56:43 <CakeProphet> olsner: no, I distinctly enjoy showing them my "unpythonic" code.
19:56:50 <pikhq> Gregor: That'd be impressive.
19:56:52 * elliott considers joining and saying "LOL PROJECT EULER"
19:56:59 <pikhq> Rather possible, but impressive.
19:57:16 <CakeProphet> olsner: read: code that is "confusing" because it does too many things in one line.
19:57:27 <monqy> did you use reduce
19:57:35 <CakeProphet> I don't think so.
19:57:47 <olsner> iirc python uses reference counting for "gc" ... though I wonder how it breaks loops
19:57:47 <CakeProphet> I can't recall what the code actually was.
19:57:52 <CakeProphet> just that it was unpythonic or something.
19:57:57 <elliott> olsner: i love how people join in conversations in #esoteric
19:57:58 <elliott> and like
19:58:00 <elliott> say something offhand
19:58:01 <monqy> I find folds much easier to read than for loops most of the time because i'm unpythonic weirdo
19:58:01 <CakeProphet> lol
19:58:03 <elliott> that has been the topic of the conevrsation
19:58:06 <elliott> for the past ten minutes
19:58:11 <elliott> without realising
19:58:13 <elliott> and things loop around again
19:58:16 <elliott> and it never stops
19:58:18 <olsner> hehe
19:58:41 <CakeProphet> elliott: huh, I wonder if Python's GC interacts well with C extensions. maybe you could turn refcounting off.
19:58:51 <olsner> I just read the last line, and if it's something I'd like to respond to I do
19:59:45 -!- pikhq_ has joined.
20:00:10 <CakeProphet> pikhq: what about a refcounting scheme that instead maintains a list of things to be freed
20:00:19 <CakeProphet> and then frees when its sufficiently large but not too large.
20:01:06 <CakeProphet> still has the branching overhead, though.
20:01:25 <pikhq_> Deeeerrrrpppp
20:01:42 <CakeProphet> pikhq: help I am no good at low-levels
20:01:58 -!- pikhq has quit (Read error: Operation timed out).
20:02:19 <pikhq_> Clearly. malloc and free maintain a list of things that are free. free() does nothing but record "the block foo is free".
20:02:42 <pikhq_> A refcounting scheme that instead maintains a list of things to be freed would just duplicate work.
20:04:51 <CakeProphet> hmmm, okay.
20:06:49 <Gregor> x86, x86_64, SPARC, MIPS :)
20:07:10 <Ngevd> C64?
20:07:22 -!- nys has joined.
20:08:07 <CakeProphet> my goal: create an absolutely shitty implementation for a language of my design that becomes massively popular and attracts large numbers of fanatics.
20:08:07 <elliott> Gregor: But not ARM ha ha ha
20:08:09 <elliott> s/ $//
20:08:19 <elliott> Gregor: What about...... IA-64?
20:08:33 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
20:08:47 <Gregor> elliott: I can't qemu IA-64 :P
20:08:59 <elliott> Gregor: http://ski.sourceforge.net/??????
20:09:13 <elliott> "Ski can be used in two operating mode: user- and system-mode. In user mode, you can run user level applications directly on top of the simulator. The emulation stops at the system call boundary. The system call is emulated by calling the host OS, such as x86 Linux. Conversions between 64-bit and 32-bit parameters are done by ski as needed. This allows fast execution of user programs. Most system calls are emulated, though the emulation is not alw
20:09:13 <elliott> ays 100 percent accurate."
20:09:20 <elliott> "In system-mode, operating-system kernel development and execution is possible because interrupts and virtual memory behaviors are simulated. In this mode you can actually run the Linux kernel and, once booted, user applications can be run on top of the simulated kernel."
20:09:25 <elliott> Former sounds easier to test with :P
20:09:57 <elliott> Gregor: (The chances of it working on IA-64 are probably ~0)
20:10:18 <Gregor> elliott: Is that a bet? :P
20:10:22 <Gregor> I'll bet you zero virtubux.
20:10:23 <elliott> Gregor: Absolutely
20:10:25 <CakeProphet> elliott: never tell me the odds!
20:10:31 <elliott> Gregor: VLIW is fucking weird :P
20:10:49 <Gregor> elliott: Hey, working with -O0 counts ;)
20:11:02 <Gregor> Argh, Debian doesn't have ski.
20:11:06 <Gregor> I'll come back to it later :P
20:11:43 <elliott> Gregor: Clearly the Right Decision.
20:11:44 <elliott> ski must suck.
20:13:27 -!- Darth_Cliche has joined.
20:14:00 <fizzie> Ski or Die.
20:15:43 <Gregor> I keep on coming back to OpenWatcom and going "Oh yeah, slow as shit"
20:17:55 <fizzie> Watcom is so DOS game/demoscene. All the cool dudes had a copy.
20:18:56 <fizzie> I think my warezzzed copy was 9.something.
20:19:03 <Gregor> Yup.
20:19:07 <Gregor> Hence why OpenWatcom is good fun.
20:19:46 <elliott> fizzie would know, he's the prime distributor of pirated QuickBasic copies nowadays.
20:19:50 <elliott> That... that might even be true.
20:22:20 <fizzie> I'm pretty sure you'd find it on some shady "abandonware" sites that have gotten more downloads than a hypothetical fizzie.
20:22:42 <elliott> fizzie: Yes, but nowadays? e.g., giving it to hypothetical me onwards?
20:22:48 <elliott> Surely people can't have downloadad it since then.
20:22:49 <elliott> Surely.
20:23:49 -!- tiffany has joined.
20:23:53 <Gregor> Oh, never mind, Debian /does/ have ski.
20:24:27 <elliott> Gregor: THE RIGHT DECISION!!!\
20:24:46 <fizzie> "I want Quick Basic 4.5 for DOS
20:24:47 <fizzie> I want to learn this program but I have not this program, If you have this program, please tell me by e-mail where this program!
20:24:51 <fizzie> I hope this program is free for me!
20:24:53 <fizzie> College student!"
20:24:59 <fizzie> Still a top seller, I think!
20:25:00 <CakeProphet> hi what the secret of happiines?
20:25:07 <fizzie> Okay, that was from 2000.
20:25:35 <elliott> I want to learn this program / but I have not this program / If you have this program / please tell me by e-mail where this program!
20:25:37 <elliott> INSTANT HIT.
20:25:47 <elliott> fizzie: Also link.
20:26:12 <fizzie> Ooh, you can still buy it from http://www.emsps.com/oldtools/msbas.htm
20:26:16 <olsner> ooh, quick basic 4.5! that's what I used to do my first programming :D
20:26:19 <fizzie> Also browsed away already.
20:26:50 <fizzie> But it was quite high up in the Google search for "quickbasic 4.5".
20:27:36 <Gregor> elliott: Installin' an ia64 cross-dev env!
20:27:54 <fizzie> Only $99 if you want 3.5" floppies.
20:28:11 <elliott> Gregor: Aww ye
20:28:17 <fizzie> Plus another $99 for the manual.
20:28:35 <elliott> fizzie: I can't find it. :'(
20:28:44 <Gregor> elliott: ... ... how the hell do you use ski :P
20:28:45 <elliott> FOUND IT
20:28:51 <elliott> Gregor: http://ski.sourceforge.net/
20:29:09 <fizzie> You just point them downhill and GO.
20:29:31 <Gregor> elliott: Nooooooooooooooooooooooooooooooooooooooooooooo it only MOSTLY works :(
20:29:31 <elliott> "Windows is written in mostly VB and VC++ if you ask me."
20:29:43 <elliott> fizzie: Oh no, I... I feel the BASIC Bug catching me once more.
20:29:49 <Gregor> elliott: It does the right things to the tape but can't call putchar :(
20:29:56 <elliott> Gregor: X-D
20:30:04 -!- Aune has left ("Lmnar").
20:34:04 -!- Nisstyre has quit (Ping timeout: 260 seconds).
20:35:39 <Gregor> Also:
20:35:39 <Gregor> $ wc -c full.c
20:35:39 <Gregor> 2650 full.c
20:35:40 <Gregor> :(
20:35:58 <elliott> Gregor: Ha ha ha
20:37:44 <Gregor> I wish (read: I do not wish) C had a type qualifier that meant "this is a register and thou shalt not change it"
20:38:21 <Deewiant> GCC has that
20:39:55 <Gregor> I know.
20:40:03 <Gregor> register int foo __asm__(...)
20:40:12 <Gregor> But I need a portablish solution :P
20:41:28 -!- Nisstyre has joined.
20:41:29 -!- Nisstyre has quit (Max SendQ exceeded).
20:44:13 <elliott> Gregor: Why doesn't ARM work, again?
20:44:58 <Gregor> elliott: It writes integer literals raw into .text then copies them by offsets from PC.
20:45:42 <elliott> Gregor: Nice.
20:46:10 <Gregor> elliott: Which could work in principle, but there's no way I can detect it >_>
20:48:06 <Gregor> Huh, maybe ski just doesn't like output much ...
20:49:45 <elliott> Try the other "variant" things?
20:51:43 <Gregor> Hrm
20:53:02 <Gregor> I'm becoming increasingly convince that ski sucks :P
20:54:00 <Gregor> It's ... ... failing to scanf("%d", &C); ???
20:54:32 <Gregor> OK, moving on :P
20:58:05 <Gregor> tcc can't even produce a runnable program.
21:00:36 -!- oerjan has joined.
21:01:13 * oerjan wonders what the unfoog stands for
21:01:44 <ais523\unfoog> oerjan: it's a NetHack clan
21:01:49 <ais523\unfoog> I'm not sure where it got its name from
21:02:01 <oerjan> ah
21:03:16 <Phantom_Hoover> ais523\unfoog, due to elliott's incompetence, I need to keep the motherboard, RAM and CPU in storage for a couple of days; do I disassemble them and put them all back in their original packaging?
21:03:43 <elliott> Hey, I resemble that remark.
21:03:45 <ais523\unfoog> Phantom_Hoover: that's one possibility; the other is just putting them inside some antistatic wrapping
21:03:53 <ais523\unfoog> or inside a metal box, like a computer case
21:04:03 <Phantom_Hoover> The case is the thing that needs replacing.
21:04:03 <ais523\unfoog> or just in any old place and discharge yourself before you touch them
21:16:42 -!- Patashu has joined.
21:20:10 -!- Nisstyre has joined.
21:24:19 <Gregor> $ wine jitchards.exe < hello.jch
21:24:19 <Gregor> ²
21:24:21 <Gregor> ... not quite.
21:27:20 <olsner> hello dear esolangs reddit! how are you today? (esolangs.org) submitted 3 years ago by ehird
21:28:13 <oerjan> i'd say there wasn't a market for that one.
21:29:09 <oerjan> "If you come to visit Australia, you are not likely to meet anything more dangerous than a dodgy kebab."
21:29:13 <elliott> olsner: quite
21:29:37 <oerjan> by a strange coincidence, the first and most dodgy kebab i ever got was in australia.
21:29:46 <oerjan> (today's iwc rerun)
21:29:54 <olsner> we could turn the reddit over to fungot
21:29:55 <fungot> olsner: if ( sense ahead foe?) x" to give you a hint:
21:30:40 <oerjan> it smelled like puke, although it may have been just melted cheese.
21:30:52 <pikhq_> Australia? The land of everything trying to kill you (especially that)?
21:31:08 -!- GreaseMonkey has joined.
21:31:08 <oerjan> pikhq_: that's the subject of the rerun annotation, of course
21:31:28 <Ngevd> I have never had a Doner kebab
21:31:37 <Ngevd> Shish kebabs by the dozen, though
21:32:13 <oerjan> i've had both, i think.
21:32:21 <elliott> oerjan: i find it hard to believe you've been outside of norway, sorry.
21:33:16 -!- boily has quit (Ping timeout: 258 seconds).
21:33:48 <oerjan> kebab places are a dime a dozen in norway these days. and my current favorite restaurant is run by a turkish kurd family
21:34:18 <ais523\unfoog> in the UK, kebabs are generally sold by fish and chip shops
21:34:32 <olsner> oerjan: how much does a kebab cost in norway?
21:34:33 <ais523\unfoog> hmm, this sort of thing is why I use chicken burgers to compare fast food outlets
21:34:36 <elliott> oerjan: I was just responding to the implication you'd been outside the country
21:34:38 <ais523\unfoog> because the vast majority of them sell them
21:35:59 <oerjan> olsner: hm i'm not sure for the late night fast food kind, which i haven't had for a long time.
21:36:16 <oerjan> somewhere between 50-100 kr, i assume
21:37:13 <olsner> "Most pizzerias sell Kebab Pizza, a pizza with kebab meat and the aforementioned sauces as a topping, now the most popular pizza in Sweden."
21:37:24 <elliott> ah.
21:37:29 <oerjan> (the kebab dinners at this restaurant are around 130-150)
21:37:46 <ais523\unfoog> what's a kr in currency I know the value of?
21:38:11 <oerjan> 1 Norwegian krone = 0.111008012 British pounds
21:38:17 <oerjan> says google
21:38:21 <Deewiant> ais523\unfoog: 1 British pound = 9.00835879 Norwegian kroner
21:38:24 <ais523\unfoog> so about 11p
21:38:34 <ais523\unfoog> hmm, I actually converted 0.11 to 1/9 and then back again
21:38:56 <ais523\unfoog> so 100kr = £11, which seems like quite a lot
21:39:09 <Ngevd> One of my friends carries around a 100kr note to make her feel rich
21:39:28 <pikhq_> Yeah, that's... $17. That's obscene.
21:39:44 <oerjan> norwegian food is expensive, because of general cost level and our isolationist agricultural policy
21:39:54 <pikhq_> Admittedly, food prices in the US are rather horribly fucked up.
21:39:59 <ais523\unfoog> I'd expect somewhere from around £2 to £6 for that sort of fast food meal at a UK fast food shop, depending on quality
21:40:11 -!- elliott has quit (Read error: Connection reset by peer).
21:40:18 <olsner> around here, the normal price for a kebab with fries would be around 70 SEK = 6.65 bounds
21:40:29 -!- elliott has joined.
21:40:45 <olsner> in pita bread with no extras, about half that
21:40:55 <ais523\unfoog> wow
21:40:58 <pikhq_> Same ballpark for US, I *think*. Kebab aren't quite common here, but that's around what it'd be for a similar sort of fast food thing.
21:40:59 <olsner> ... and it's served with burger dressing
21:41:04 <Gregor> If it can't be bought for $5 or less, it ain't worth buyin'!
21:41:06 <oerjan> ais523\unfoog: well it's probably closer to 50 than 100, i'm just hedging
21:41:19 <oerjan> (well, i hope.)
21:41:20 <ais523\unfoog> pikhq_: same ballpark as UK or Norway?
21:41:25 <pikhq_> ais523\unfoog: UK
21:41:44 <ais523\unfoog> I know that the prices for directly comparable food between Ottawa and Birmingham were slightly more expensive, but not much more, in Ottawa
21:41:51 <Gregor> I think gyros (which is what we call what you call kebab sandwiches, as we call something completely unrelated kebab) are probably around $5.50 on average here. For just the sandwich.
21:41:58 <ais523\unfoog> (I used an identical sandwich from Subway to make the comparison; you can't get much more standardised than that)
21:42:31 <ais523\unfoog> Gregor: "kebab sandwich" would be a weird combination; it's more common to hear just "kebab" and imply the other elements of the meal
21:42:32 <olsner> subway is expensive for fast-food though
21:42:45 <elliott> isn't everything expensive in norway :P
21:42:49 <ais523\unfoog> olsner: yes, but I expected it to be consistent on both sides of the Atlantic
21:42:56 <Gregor> ais523\unfoog: Well, this isn't how we use those words :P
21:43:10 <elliott> http://esoteric.voxelperfect.net/wiki/Twisted_Python_Chat_Server
21:43:12 <elliott> twisted python chat server
21:43:29 <Gregor> Clearly an esolang.
21:43:31 <elliott> http://esoteric.voxelperfect.net/wiki/Love_Dating_Quizzes
21:43:33 <elliott> love dating quizzes
21:43:50 <elliott> External links
21:43:50 <elliott> Wikipedia cambodian women datingonline dating servicesbad chat influence larelationship trustmistakes made by women in relationshipsa chat room
21:44:16 <ais523\unfoog> Twisted Python Chat Server really /could/ be an esolang
21:44:45 <elliott> I love the random bolding.
21:44:52 <elliott> Wait, it's bolding all occurrences of the page title words.
21:44:53 <elliott> So good.
21:44:55 <pikhq_> ais523\unfoog: Yup, looks like the prices between something at Subway in the US and the UK are comparable.
21:44:56 <olsner> twisted python chat server could also just be a chat server written in python using the twisted framework
21:45:09 <elliott> olsner: that's what the article is about
21:45:12 <pikhq_> I think it's *slightly* more expensive in the UK?
21:45:16 <ais523\unfoog> elliott: I think that's probably the same spambot that advertised Google, I haven't seen it for ages
21:45:27 <ais523\unfoog> the link [http://en.wikipedia.org Wikipedia] gives it away
21:45:46 <ais523\unfoog> pikhq_: it wouldn't surprise me; I also think it depends on how central you are and in which city you were
21:46:01 <oerjan> <elliott> isn't everything expensive in norway :P <-- yeah probably. actually i vaguely recall from a recent newspaper article that we may be doing well on medical drugs.
21:46:09 <ais523\unfoog> I only really got to compare with central Ottawa, which wouldn't surprise me at all if it was significantly more expensive than in some small town
21:46:17 <elliott> oerjan: Thank god!
21:46:39 <oerjan> or perhaps that was sweden. i'm not quite sure.
21:46:41 <pikhq_> ais523\unfoog: Prices in fast food chains *generally* are consistent nation-wide.
21:46:46 <ais523\unfoog> elliott: can you edit Twisted Python Chat Server into a real esolang, changing as little in the page as possible?
21:46:48 <elliott> hmm my only mental associations for ottawa are "capital of canada, pretty"; dunno where that second one came from
21:46:52 <ais523\unfoog> pikhq_: not here, especially not Subway
21:46:55 <elliott> ais523\unfoog: M...maybe?
21:46:59 <ais523\unfoog> it varies even within Birmingham
21:47:08 <elliott> ais523\unfoog: It'd probably change most of the page :P
21:47:16 <ais523\unfoog> I know
21:47:17 <ais523\unfoog> even so
21:47:34 <oerjan> elliott: oh and electricity is still _somewhat_ cheaper in norway, although the common nordic market has reduced that difference a lot.
21:47:59 <pikhq_> I suspect part of that is that our idea of "fast food" developed out of McDonalds, which is basically run on a "make everything as consistent as humanly possible" kick.
21:48:05 <oerjan> (> 90% hydroelectric)
21:48:30 <elliott> the problem with my name is johny, what the f**k? is that an esolang has to be really good to be worthy of that name
21:48:31 <ais523\unfoog> elliott: will you take long enough that it's worth deleting the page meanwhile?
21:48:35 <ais523\unfoog> right, indeed
21:48:37 <elliott> ais523\unfoog: most likely, yes
21:48:43 <ais523\unfoog> or, hmm, I have a better idea
21:51:14 <elliott> ais523\unfoog: go on
21:51:24 <elliott> ah
21:51:33 <ais523\unfoog> see it on the wiki?
21:52:08 <elliott> yep
21:52:42 <elliott> oerjan: are you /sure/ there isn't a simpler way to do n-cursor zippers? :P
21:59:07 <oerjan> oh i'm sure oleg could find one.
22:12:47 -!- copumpkin has quit (Remote host closed the connection).
22:14:14 -!- pikhq_ has quit (Read error: Operation timed out).
22:14:23 <elliott> oerjan: :'(
22:14:28 -!- Ngevd has quit (Quit: Goodbye).
22:15:12 <oerjan> hm i recall some stuff i thought of before
22:16:01 <oerjan> basically if you wanted to do zippers with n cursors on arbitrary trees, you'd need a way to represent trees with several root leaves
22:16:21 -!- pikhq has joined.
22:16:22 <elliott> huh
22:16:34 <oerjan> for just _two_ cursors and a tree that is a straight line, this is basically Seq
22:17:15 <elliott> huh
22:17:19 <oerjan> because your representation of a zipper would need to cut up the large tree at each cursor, and to be able to modify each resulting tree close to where the cursor is
22:17:32 <elliott> ic
22:17:33 <oerjan> (note i am thinking of the large tree as _unrooted_ here.)
22:18:06 <oerjan> since in spirit a zipper of a tree is basically about ignoring where the usual root is
22:18:07 <elliott> oerjan: that sounds quite reassuring, since Seqs are not quite as slow to mutate as your n-cursor zippers would be :P
22:18:31 <oerjan> well the thing is this doesn't work for more than 2 cursors touching a subtree
22:18:51 <oerjan> then it needs to be a more refined structure
22:19:30 <oerjan> oh hm _this_ refined structure is where that median stuff from my never published paper was relevant
22:19:50 <elliott> poor never-published paper :(
22:19:54 <oerjan> because whenever you have three points on a tree, there is a unique median point
22:19:58 <elliott> ooh
22:21:06 <oerjan> which is either the one of the three points which separates the other two, or some fourth point which separates all the original three
22:22:55 <oerjan> given that this median point is canonical, it _might_ give a canonical way to split subtrees into Seq's of subtrees
22:23:30 <elliott> ooh. this is sounding super elegant :P
22:23:34 <elliott> (UNLIKE THE LAST TIME)
22:23:42 <oerjan> this is all something i thought about long ago when pondering n-cursor zippers
22:25:02 <CakeProphet> All the lonely people, where do they all belong?
22:25:14 <elliott> --sartre
22:25:29 <elliott> oerjan: so what's the obstalce to just applying that directly to a quadtree? :P
22:25:36 <CakeProphet> elliott: ha
22:25:49 <elliott> --hitler
22:26:11 <oerjan> well i've never tried to wrap my head around the details
22:26:33 <CakeProphet> oerjan: wrapping your head around something is usually not good for it.
22:26:52 <oerjan> wrap and chew
22:27:12 -!- MSleep has joined.
22:27:24 <CakeProphet> oerjan: I don't understand. I can't wrap my head around your head.
22:27:36 <elliott> oerjan: well, i'm listening >:)
22:27:43 <oerjan> you need to become a boa constrictor first
22:27:48 <elliott> oerjan: so this should actually allow fast mutation from n cursors, right?
22:27:52 <elliott> if possible
22:28:00 -!- MDude has quit (Ping timeout: 252 seconds).
22:30:36 <CakeProphet> mmm sweet potato and beet chips.
22:30:48 <CakeProphet> why do people eat potato chips again?
22:32:16 <Gregor> Because they're a salty delight?
22:32:33 <ais523\unfoog> CakeProphet: they taste nice; I ate some earlier today (although they're called crisps in the UK)
22:32:41 <oerjan> maybe
22:33:07 <elliott> oerjan: promising!
22:33:32 -!- copumpkin has joined.
22:33:41 <CakeProphet> I just ate a whole bag of these chips. Hopefully I won't get vitamin A poisoning.
22:34:12 <oerjan> hm those median points would become sort of virtual extra cursors, perhaps
22:34:22 <CakeProphet> Researchers have succeeded in creating water-soluble forms of vitamin A, which they believed could reduce the potential for toxicity.[44] However, a 2003 study found water-soluble vitamin A was approximately 10 times as toxic as fat-soluble vitamin.[45] A 2006 study found children given water-soluble vitamin A and D, which are typically fat-soluble, suffer from asthma twice as much as a control group supplemented with th
22:34:28 <CakeProphet> wtf kind of study is that.
22:35:01 <oerjan> ->
22:35:10 <elliott> oerjan: but -> WHERE???
22:35:16 <oerjan> crapper
22:35:20 <CakeProphet> lol
22:35:26 <elliott> note to self: don't ask oerjan that in future
22:36:00 <ais523\unfoog> `?welcome
22:36:02 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found
22:36:04 <ais523\unfoog> `? welcome
22:36:06 <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
22:36:11 <elliott> `@ ais523\unfoog ? welcome
22:36:12 <CakeProphet> interestingly enough Vitamin A poisoning causes blurry vision. weird.
22:36:14 <HackEgo> ais523\unfoog: 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
22:36:54 -!- MSleep has changed nick to MDude.
22:37:17 <Gregor> !bf_txtgen Hello, world!
22:37:19 <EgoBot> ​125 +++++++++[>++++++++>+++++++++++>+++++>+<<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.>+. [169]
22:37:34 -!- Betawolf has joined.
22:37:59 <elliott> `@ Betawolf ? welcome
22:38:02 <HackEgo> Betawolf: 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
22:38:36 <ais523\unfoog> elliott: no fair making me direct my random welcomes at people in particular
22:38:50 <elliott> hi ais523\unfoog
22:39:18 <ais523\unfoog> elliott: I can one-up that: http://qdb.rawrnix.com/?735
22:39:21 <ais523\unfoog> (happened earlier today)
22:39:37 <CakeProphet> `@ elliott `@ ais523\unfoog `@ monqy `echo hi
22:39:39 <HackEgo> elliott: exec: 9: `@: not found
22:39:50 <ais523\unfoog> `@ elliott @ CakeProphet @ monqy @ echo hi
22:39:51 <HackEgo> elliott: CakeProphet: monqy: exec: 9: hi: not found \ echo:
22:39:52 <CakeProphet> `@ elliott @ ais523\unfoog @ monqy echo hi
22:39:55 <HackEgo> elliott: ais523\unfoog: monqy: hi
22:40:10 <Gregor> `@ ais523\unfoog yes
22:40:12 <HackEgo> ais523\unfoog: y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y
22:40:17 <elliott> ais523\unfoog: heh
22:40:31 <elliott> `yes @ ais523\unfoog
22:40:33 <HackEgo> ​@ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @ ais523\unfoog \ @
22:40:37 <elliott> `run `yes @ ais523\unfoog`
22:40:39 <Betawolf> Ah, I shouldn't be surprised. It's -that- usage of 'esoteric'
22:40:46 <elliott> Betawolf: :-D
22:40:53 <elliott> Betawolf: We often get people expecting the other kind.
22:40:58 <ais523\unfoog> Betawolf: you know both usages? and came here willing to talk about either?
22:41:09 <HackEgo> bash: xrealloc: ../bash/subst.c:4952: cannot allocate 67108864 bytes (134258688 bytes allocated)
22:41:12 <elliott> Wow.
22:41:17 <Betawolf> Well, for a given value of 'willing'.
22:41:33 <ais523\unfoog> elliott: you almost killed me there
22:41:40 <Betawolf> I was intending to lurk, lurkerly.
22:41:42 <ais523\unfoog> accidentally; I was drinking a glass of water and started laughing at HackEgo's response
22:41:49 <elliott> My sincerest apologies. I will be more effective next time.
22:42:05 <ais523\unfoog> but luckily managed to not choke
22:42:13 <elliott> Betawolf: Lurking is so cliché; just ask yiyus.
22:42:14 <ais523\unfoog> ^ul ((y )S:^):^
22:42:14 <fungot> y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y ...too much output!
22:42:19 <ais523\unfoog> ^ul ((y \ )S:^):^
22:42:19 <fungot> y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ ...too much output!
22:42:22 <elliott> Or Zetro. Or yorick.
22:42:35 <ais523\unfoog> underload > hackego at repeating y \
22:43:11 <elliott> `run ghc -e "99 + 42"
22:43:18 <HackEgo> 141
22:43:21 <elliott> Wow that was slow.
22:43:33 <elliott> `run ghc -e "print (99 + 42)"
22:43:37 <HackEgo> 141
22:43:48 <elliott> -e expr
22:43:48 <elliott> Evaluate expr; see for details.
22:43:48 <elliott> --man ghc
22:43:52 * elliott sees for details.
22:43:52 <CakeProphet> elliott: -e compiles correct?
22:43:58 <elliott> CakeProphet: I doubt it.
22:44:03 <elliott> But I need to see for details.
22:44:08 <ais523\unfoog> > repeat 'y'
22:44:09 <lambdabot> "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy...
22:44:10 <Betawolf> Is that just echoing via bash?
22:44:12 <CakeProphet> elliott: just look, dude.
22:44:25 <ais523\unfoog> > flatten $ repeat "y \\ "
22:44:26 <lambdabot> Couldn't match expected type `Data.Tree.Tree a'
22:44:26 <lambdabot> against inferred ty...
22:44:27 <CakeProphet> > cycle "y\n"
22:44:28 <lambdabot> "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\ny\...
22:44:32 <elliott> Yeah, it uses the interpreter, I think.
22:44:35 <CakeProphet> > var $ cycle "y\n"
22:44:35 <elliott> Betawolf: HackEgo, you mean?
22:44:36 <lambdabot> y
22:44:36 <lambdabot> y
22:44:36 <lambdabot> y
22:44:36 <lambdabot> y
22:44:36 <lambdabot> y
22:44:38 <lambdabot> [21 @more lines]
22:44:42 <CakeProphet> exploit
22:44:44 <ais523\unfoog> @more
22:44:44 <lambdabot> y
22:44:44 <lambdabot> y
22:44:44 <lambdabot> y
22:44:46 <lambdabot> y
22:44:46 <elliott> Betawolf: It's a fully-sandboxed, persistent Linux system.
22:44:48 <lambdabot> y
22:44:49 <elliott> Betawolf: Our QDB is based on it.
22:44:50 <lambdabot> [16 @more lines]
22:44:51 <elliott> Also stop that guys.
22:45:00 <ais523\unfoog> elliott: I was going to stop after the one @more
22:45:34 <ais523\unfoog> Betawolf: HackEgo basically runs arbitrary commands, with protection against doing silly things
22:45:51 <ais523\unfoog> `run :(){:|:&};:
22:45:53 <HackEgo> bash: -c: line 0: syntax error near unexpected token `{:' \ bash: -c: line 0: `:(){:|:&};:'
22:45:57 <elliott> lol
22:46:00 <ais523\unfoog> see what I mean?
22:46:03 <elliott> `run : () { : | : & } ; :
22:46:06 <HackEgo> No output.
22:46:10 <Betawolf> Yeah, that was what I was worrying about.
22:46:12 <elliott> `help
22:46:13 <ais523\unfoog> (actually, I was curious as to why the space was needed, guess I know now)
22:46:14 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
22:46:22 <elliott> It's kept in a repository: http://codu.org/projects/hackbot/fshg/
22:46:31 <elliott> And you can revert even if the whole system inside is broken.
22:46:33 <ais523\unfoog> why is the repo called fshg?
22:46:44 <elliott> filesystem hg
22:46:56 <elliott> the actual code is at /hg/
22:47:02 <elliott> at least, I presume that's what it stands for
22:47:08 <ais523\unfoog> ah, OK
22:47:32 <Betawolf> You guys may be interested in a friend of mine's old project - a brainfuck interpreter written in javascript.
22:47:52 <elliott> It's not BestFriends. Please tell me it's not BestFriends.js.
22:47:55 <Betawolf> http://extremetomato.com/interesting/brainfuck/
22:48:00 <elliott> *phew*
22:48:32 <elliott> Aww, it doesn't support infinite tapes :)
22:48:37 <Betawolf> He wrote a proper compiler, too, but I don't think there's a public link for it.
22:49:00 <CakeProphet> state-of-the-art BF compiler.
22:49:10 <elliott> CakeProphet: that would be esotope, presumably
22:49:23 <elliott> (so Betawolf knows what I'm referring to: https://bitbucket.org/lifthrasiir/esotope-bfc/overview)
22:49:33 <CakeProphet> elliott: it is unqise to [resum
22:49:41 <elliott> uh
22:50:05 <CakeProphet> yes.
22:50:06 <CakeProphet> uh
22:51:15 <CakeProphet> elliott: you have figured out.
22:51:24 <elliott> oerjan: You can run but you cannot hide@
22:51:25 <elliott> !
22:51:37 <elliott> I like how whenever anyone joins the channel explodes in activity.
22:52:03 <CakeProphet> yes.
22:52:10 <Betawolf> Cool, I'll put him onto it
22:52:13 <CakeProphet> > 2 + 2
22:52:14 <lambdabot> 4
22:52:21 <CakeProphet> Betawolf: we like bots.
22:52:26 <Betawolf> I hadn't noticed.
22:52:28 <elliott> ^source
22:52:28 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
22:52:33 <elliott> We like bots written in esolangs MOST OF ALL.
22:52:42 <elliott> fungot: Say hi to Betawolf.
22:52:42 <fungot> elliott: " and this is a new game. there is no
22:52:45 <elliott> ^style
22:52:45 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
22:52:47 <elliott> ^style irc
22:52:47 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
22:52:50 <elliott> fungot: You can do better than that.
22:52:50 <fungot> elliott: a ged file *is* notation... i barely fnord across the scheme/ vm/
22:52:57 <elliott> fungot: Come on. One long one.
22:52:57 <fungot> elliott: the negative list makes a list from return values :p i want to
22:53:01 * elliott gives up.
22:53:08 <CakeProphet> ^style europarl
22:53:08 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
22:53:15 <CakeProphet> fungot: make a motion
22:53:16 <fungot> CakeProphet: mr president, since i only have one main objective of the isd which is due for adoption by the end of 1999, which attempted to establish minimum requirements. mrs schreyer, that, in the absence of criticism of it, which does not allow it to provide criteria, after which we should like to end by emphasising the fact that it has an opportunity to work for the betterment of the people, by their nature, very undiscipli
22:53:59 <CakeProphet> fungot: referendum denied
22:53:59 <fungot> CakeProphet: may i start by thanking parliament once again.
22:53:59 <Betawolf> Is that random sampling, as in that really well-known bot I can't remember the name of?
22:54:07 <ais523\unfoog> it's a markovbot
22:54:25 <elliott> Betawolf: marko v. shaney, perhaps?
22:54:25 <ais523\unfoog> works out the next word to say statistically, by seeing the probability that words are used in that context
22:54:36 <elliott> s/o//
22:55:15 <Betawolf> Oh, actually NLP, cool
22:55:31 <elliott> well, for some value of nlp :-)
22:55:50 <CakeProphet> Betawolf: more like a markov chain. a big markov chain.
22:55:51 <CakeProphet> but sure.
22:56:00 <elliott> Betawolf: it's just based on how many times a word follows a context of a certain length
22:56:05 <Betawolf> Sure, I remember the process from AI
22:56:22 <CakeProphet> maybe humans are just big sexy markov chains.
22:56:25 <CakeProphet> and that is AI.
22:56:36 <CakeProphet> fungot: THINK!
22:56:37 <fungot> CakeProphet: mr president, the commission, the scope of monetary policy is compatible with the completion of the internal political situation in burma. political pressure will have to pay out the funds. pensions should not be overestimated. a peaceful and lasting settlement.
22:56:41 <elliott> CakeProphet is our other markov chain bot.
22:57:48 <CakeProphet> elliott: mr president, suck my balls, sir. thank you parliament.
22:58:10 <elliott> ais523\unfoog: You should kick the worst channel members whenever someone new comes in.
22:58:11 <elliott> Start with me.
22:58:32 <Betawolf> Heh, would keep the place fresh.
22:58:38 <CakeProphet> elliott: try #esoteric-minheap
22:59:03 <ais523\unfoog> you'd need a -maxheap too where you just kicked the /best/ channel members whenever someone new comes in
22:59:18 <ais523\unfoog> might be fun to see who was still there in a year's time
22:59:26 <elliott> CakeProphet.
22:59:48 <ais523\unfoog> they'd have to be very persistent to stay there despite the bunch of lurkers and crazy people
23:00:08 <elliott> Yes. And yet somehow, #esoteric survives.
23:00:14 <CakeProphet> Placenta "persistence" Prophet
23:00:32 <CakeProphet> may the worst one win.
23:00:58 <ais523\unfoog> this reminds me of the BF Joust hill before it was fixed
23:01:40 <ais523\unfoog> !bfjoust it_shouldnt_go_on_the_hill_with_this_nick (>)*8(>[-])*21
23:01:48 <EgoBot> ​Score for ais523_unfoog_it_shouldnt_go_on_the_hill_with_this_nick: 20.4
23:02:01 <ais523\unfoog> please tell me that didn't /actually/ end up on the hill
23:02:14 <ais523\unfoog> haha, it did as well
23:02:14 <CakeProphet> elliott: surely I'm not the worst channel member. Perhaps units of bad per units of regularity.
23:03:16 <elliott> ais523\unfoog: you won't know until next time
23:04:00 <ais523\unfoog> elliott: it's not in last place, or anywhere near it
23:04:01 <elliott> $ perl -pe0
23:04:01 <elliott> $ ghc -e interact\ id
23:04:07 <elliott> ais523\unfoog: Haskell is about twice as bad as Perl!
23:04:12 <ais523\unfoog> it's 44th out of 48
23:04:14 <elliott> haha
23:04:20 <oerjan> <elliott> note to self: don't ask oerjan that in future <-- i'd have thought leaving it out would be a hint.
23:04:32 <oerjan> in other news, we are now having a backscroll session.
23:04:43 <ais523\unfoog> wait, it beats almost all my programs
23:04:47 <ais523\unfoog> what is up with my decoy setup?
23:05:09 <elliott> oerjan: nothing interesting happened! now TELL ME MORE.
23:05:18 <ais523\unfoog> actually, I miscounted, more like half
23:05:20 <ais523\unfoog> but still…
23:05:34 <CakeProphet> wtf republican party.
23:08:44 <ais523\unfoog> wtf (insert political entity here)
23:08:56 <CakeProphet> distinctly not as bad as the republican party.
23:09:03 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:09:11 <elliott> wtf ais523\unfoog
23:10:11 <elliott> wtf oerjan\unfoog
23:10:17 <CakeProphet> what is unfoog?
23:10:27 <ais523\unfoog> NetHack clan
23:10:37 <CakeProphet> NetHack...clan?
23:10:45 <CakeProphet> elliott: let's start a df clan.
23:10:50 <elliott> What.
23:11:12 <CakeProphet> we can, uh
23:11:17 <CakeProphet> play dwarf fortress, and talk about it
23:11:20 <CakeProphet> and have a name.
23:12:13 <Betawolf> I imagine dwarf fortress is difficult to play outside of dwarfism conventions.
23:12:33 * Phantom_Hoover → sleep
23:12:34 <ais523\unfoog> CakeProphet: and combine points in the annual dwarf fortress tournament?
23:12:35 -!- Phantom_Hoover has quit (Quit: Leaving).
23:13:17 <elliott> Betawolf: I think it'd be just as difficult within those.
23:13:20 <Betawolf> They must be difficult to stack, too.
23:13:47 -!- augur has quit (Remote host closed the connection).
23:13:54 <elliott> http://www.bay12games.com/dwarves/screens/dwf5.png <-- dwarfism convention
23:14:00 <Betawolf> And not overly resistant to bombardment...
23:14:46 * ais523\unfoog envisages a stack of dwarves balanced on each other
23:15:00 <ais523\unfoog> if you pushed them over, you could just pop them back up again
23:15:19 <Betawolf> If trained, they could spring back up of their own accord.
23:15:50 <elliott> finally, i'm back to not believing the channel is actually having the conversation it is
23:15:55 <elliott> that was a worrying bout of sanity
23:16:42 <oerjan> <elliott> oerjan: You can run but you cannot hide@ <-- i hide in the past
23:16:53 <ais523\unfoog> elliott: enjoy being locked in your matrix of solidity!
23:17:54 <elliott> ais523\unfoog: It's so solid.
23:18:47 <ais523\unfoog> elliott: is going mad a reasonable cure for depression, btw?
23:18:57 <elliott> I, um, how serious is this question?
23:18:59 <CakeProphet> ais523\unfoog: yes
23:19:14 <ais523\unfoog> elliott: not completely frivolous, but substantially frivolous
23:19:31 <elliott> IANADispenserOfSubstantiousFrivolity
23:19:38 <ais523\unfoog> hmm
23:19:50 <ais523\unfoog> I feel I need to keep Feather around in case of emergencies
23:20:09 <Betawolf> Manic depression is a form of both mad and depressed, if that's at all unhelpful.
23:20:16 <elliott> "I'm depressed, time to work on Feather"
23:20:33 <elliott> "Great, now I'm a depressed time traveller."
23:21:12 <ais523\unfoog> Feather doesn't actually time-travel its users, that would be absurd
23:21:21 <ais523\unfoog> /inb4 "Feather is absurd anyway"
23:21:50 <Betawolf> I feel I have to ask what Feather is, other than not a time-travel device.
23:22:00 <elliott> ais523\unfoog: time to use your op powers for good
23:22:05 <ais523\unfoog> Betawolf: don't expect a straight answer
23:22:06 <ais523\unfoog> I'm not sure there is one
23:22:11 <ais523\unfoog> it's somewhere between esolang and injoke
23:22:18 <elliott> Betawolf: http://esolangs.org/wiki/Feather, further answers can be derived from reading http://codu.org/logs/_esoteric/
23:22:29 <CakeProphet> the urge to do nothing is overwhelming.
23:22:59 <ais523\unfoog> CakeProphet: then do something about it!
23:23:06 <Betawolf> CakeProphet: I did that once.
23:23:09 <oerjan> <elliott> oerjan: nothing interesting happened! now TELL ME MORE. <-- well i'm thinking that the virtual cursors that split the tree will be the median subalgebra generated by the real cursor nodes. you would need a map from real to virtual, and a map from virtual to neighboring Seq subtrees on each side.
23:23:09 <CakeProphet> ..nah
23:23:32 <elliott> oerjan: ok. this is sounding significantly more manageable :P
23:24:04 <elliott> my motto is, as long as you have less than 15 constructors, you're good
23:24:05 <ais523\unfoog> Betawolf: summary: imagine a prototyping OO language, except that instead of delegation or similar concepts, you use time travel
23:24:14 <ais523\unfoog> explaining more will cause me to go mad, so I don't want to
23:25:08 <Betawolf> Chicken! Embrace the inevitable.
23:25:28 <elliott> Betawolf does not Know.
23:25:31 <ais523\unfoog> anyway, after a while of working on Feather, I couldn't take it any more, and everyone (correctly) accused me of chickening out
23:25:38 <ais523\unfoog> and the language has since become an inside joke
23:25:49 <CakeProphet> ais523\unfoog: use futures!
23:25:52 <pikhq> *Clearly* it must be implemented in Haskell.
23:25:59 <pikhq> It already has time travel semantics, after all.
23:26:11 <ais523\unfoog> the time travel semantics aren't even the difficult bit
23:26:28 <ais523\unfoog> those were worked out early on, and are very sane, and unproblematic
23:26:40 <CakeProphet> is it the prototype OO that's unsettling?
23:26:45 <ais523\unfoog> the major problem with Feather is that it's metacircularly implemented in itself, back to infinity
23:27:03 <ais523\unfoog> and whenever I try to work out if this actually makes sense or not, I conclude that it does but I'm going about it wrong
23:27:16 <ais523\unfoog> wait, not metacircularly
23:27:17 <ais523\unfoog> from scratch
23:27:26 <ais523\unfoog> otherwise it'd take infinitely long for it to do anything
23:27:37 <ais523\unfoog> so the question is how you implement a language in itself without using any of its language constructs
23:28:10 <Betawolf> I'm pretty sure that doesn't make sense. :-)
23:28:31 <elliott> Betawolf: the version that makes sense isn't vague enough to not make ais523\unfoog go insane
23:28:55 <elliott> ais523\unfoog: Did anything come out of you fixing the issue with your previous prototype interpreter?
23:29:01 <Betawolf> Perhaps a certain madness is requisite.
23:29:01 <SgeoN1> #haskell seems to be invaded by kids
23:29:20 <Betawolf> Haskell's 'in' at the moment.
23:29:22 <ais523\unfoog> elliott: I didn't fix the issue with it
23:29:28 <Betawolf> To great dismay.
23:29:31 <elliott> ais523\unfoog: hmm, you fixed /one/ issue with it.
23:29:33 <ais523\unfoog> or, well, if you're talking about a different issue, I did
23:29:36 <elliott> Betawolf: Dismay?
23:29:39 <coppro> why \unfoog?
23:29:43 <ais523\unfoog> and all it proved is that I wasn't completely crazy
23:29:45 <ais523\unfoog> coppro: NetHack clan
23:29:50 <ais523\unfoog> `log NetHack clan
23:30:01 <Betawolf> coppro: Well, it stops being niche and cool when everyone's doing it.
23:30:15 <HackEgo> 2011-11-15.txt:23:29:45: <ais523\unfoog> coppro: NetHack clan
23:30:26 <ais523\unfoog> hmm, I wonder why it picked that one?
23:30:26 <CakeProphet> bluh
23:30:28 <ais523\unfoog> `log NetHack clan
23:30:35 * elliott has changed nickname to elliott\unſoog
23:30:35 <HackEgo> 2011-11-15.txt:23:29:45: <ais523\unfoog> coppro: NetHack clan
23:30:47 <elliott> oerjan: I TAKE IT YOU'RE EXPANDING ON THAT NOW >:)
23:31:01 <CakeProphet> monqy: ><{{{}::LLKLMH@A;'`hi`1 s
23:31:13 <oerjan> Betawolf: no problem. they'll just add more type features until no one understands anything and it'll be niche and cool again.
23:31:23 <oerjan> elliott: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
23:31:29 <Betawolf> coppro: Though I appreciate 'niche' might not really apply as a label for haskell, given the channel we're in.
23:31:39 <oerjan> @_@
23:31:41 <coppro> Deewiant: what?
23:31:43 <coppro> err
23:31:44 <ais523\unfoog> o
23:31:45 <elliott> > foldr f [a,b,c,d]
23:31:45 <coppro> Betawolf: what?
23:31:46 <lambdabot> No instance for (SimpleReflect.FromExpr [SimpleReflect.Expr])
23:31:46 <lambdabot> arising fr...
23:31:47 <CakeProphet> Haskell is almost as esoteric as Perl, which is a genuine esolang.
23:31:47 <elliott> > foldr f z [a,b,c,d]
23:31:48 <lambdabot> f a (f b (f c (f d z)))
23:31:57 <elliott> Betawolf: we keep haskell around for when we need to accomplish _real_ work.
23:32:07 <ais523\unfoog> or in my case, OCaml + Perl
23:32:14 <elliott> it helps if you can avoid using something so practical, though
23:32:16 <ais523\unfoog> I have no qualms about even mixing the languages when necessary
23:32:23 <ais523\unfoog> I suspect people think I'm mad as a result
23:32:31 <CakeProphet> ais523\unfoog: I think u am hero
23:32:34 <CakeProphet> :>
23:32:45 <elliott> ais523\unfoog: kick CakeProphet please
23:32:47 <Gregor> elliott: ski is shiiiit
23:32:55 <ais523\unfoog> Gregor: as in the combinators?
23:33:03 <CakeProphet> elliott: why are hate me?
23:33:15 <CakeProphet> :(
23:33:39 <oerjan> elliott mad
23:33:52 <elliott> oerjan: MORE ABOUT N-CURSOR ZIPPERS PLZ
23:34:00 <CakeProphet> elliott: trees
23:34:01 <oerjan> mad and infectious
23:34:57 <Gregor> ais523\unfoog: As in the ia64 simulator.
23:35:48 <oerjan> ow my back
23:36:10 <CakeProphet> elliott: you so good. warm in my heartgut.
23:36:53 <ais523\unfoog> what has happened to this channel?
23:37:07 <ais523\unfoog> it's gone downhill, and I fear it's my fault
23:37:56 <elliott> Just now or longer-term? :-P
23:38:36 <CakeProphet> ais523\unfoog: perhaps you just have unrealistic expectations
23:38:43 <CakeProphet> for example, that #esoteric might save the world.
23:39:04 <ais523\unfoog> well, there's always a chance
23:39:07 <ais523\unfoog> elliott: both, actually
23:39:22 <ais523\unfoog> I can't remember which I meant
23:39:22 <elliott> ais523\unfoog: This channel has always been terrible.
23:39:28 <ais523\unfoog> just assume I'm drunk at the moment, it simplifies things
23:39:51 <elliott> Oh no, ais523\unfoog had dairy. Or something.
23:40:12 <ais523\unfoog> nah, just tired
23:40:23 <elliott> Same thing!
23:40:25 <Gregor> ski really sucks at I/O >_>
23:40:32 <SgeoN1> So, ais523 gets "drunk" in the same way I do?
23:40:58 <elliott> No.
23:41:05 <elliott> You're just weird.
23:41:13 <elliott> ais523\unfoog: Exactly why deviated septum medical procedures? Along with a greater problem that is experienced the particular surgery. Ahead of these queries might be responded successfully, a brief release in to exactly what a deviated septum can be should be examined. The actual nose septum is the portion of the nose which divides the actual nose pathways. Your septum comprises of the two bone tissu
23:41:13 <elliott> e and cartilage.
23:41:26 <elliott> Remarkably there's a single occasional actress who's occupation sustained as a result of the nasal surgical treatment was Jennifer Gray. Many will don't forget your ex through the woman's noticably motion pictures becoming Dirty Dance, as well as Red-colored Beginning. After the woman's role inside the film Unclean Bouncing, Greyish decided to have a very nasal work to remove your lump via your ex nost
23:41:27 <elliott> ril.
23:41:33 <ais523\unfoog> two or five?
23:41:52 <elliott> Wait, what?
23:41:52 <ais523\unfoog> oh, just one
23:41:56 <ais523\unfoog> with a bizarre change of topic
23:42:12 <oerjan> would you like fries with that?
23:42:13 <elliott> Two or five what?
23:42:20 <ais523\unfoog> elliott: spam pages
23:42:20 <SgeoN1> Is elliott posting spam?
23:42:27 <elliott> SgeoN1: I'm actually the wiki spammers.
23:42:29 <elliott> Don't tell anyone.
23:42:37 <ais523\unfoog> SgeoN1: I /hope/ it isn't elliott
23:42:37 <oerjan> ...that would explain so much...
23:42:44 <ais523\unfoog> and if it is him, he has a bunch of proxies
23:42:50 <ais523\unfoog> (according to internet meme, seven)
23:42:50 <SgeoN1> I meant, seen spam into here
23:43:00 <CakeProphet> ais523\unfoog: please kick elliott for spam.
23:43:02 <elliott> Nothing I posted was spam.
23:43:06 <elliott> It had no unsolicited links or whatever.
23:44:02 <SgeoN1> What does unsolicited stupidity count as? And please don't say that I'm a producer.
23:44:16 <ais523\unfoog> <Resident> I need on-demand confusion yuck yuck
23:44:23 <ais523\unfoog> I thought that was posted in #esoteric for a moment
23:44:33 <elliott> SgeoN1: You write your own material, dude.
23:44:50 <ais523\unfoog> You have been watching /Unsolicited Stupidity/ ~ Producer: elliott ~ Director: SgeoN1
23:45:07 <ais523\unfoog> sounds like a decent name for a film
23:45:27 <elliott> ais523\unfoog: from Substantious Frivolity Productions
23:45:40 <ais523\unfoog> did I actually say "substantious"?
23:45:49 <elliott> no, that was me
23:45:57 <ais523\unfoog> `log [^]"]substantious
23:46:02 <HackEgo> 2011-11-15.txt:23:19:31: <elliott> IANADispenserOfSubstantiousFrivolity
23:46:52 <elliott> ais523\unfoog: cheat!
23:47:07 <ais523\unfoog> what's cheating there?
23:47:27 <elliott> oerjan: hi hi hi
23:47:29 <elliott> ais523\unfoog: [^]"]
23:47:41 <elliott> ais523\unfoog: wait, does [^] actually /work/?
23:47:48 <elliott> it /special-cases the first character/?
23:47:54 <ais523\unfoog> elliott: only when it's ]
23:47:58 <ais523\unfoog> or -
23:48:02 <ais523\unfoog> also, special-cases - as last character
23:48:10 * elliott cries.
23:48:14 <oerjan> elliott: ho ho ho
23:48:29 <ais523\unfoog> my regex for matching BF comments is along the lines of [^][<>,.+-]
23:48:30 <elliott> oerjan: hi zippers..... please???
23:48:35 <elliott> ais523\unfoog: ouch
23:49:11 <ais523\unfoog> Perl lets you write it as [^\[\]\+\-\,\.\<\>] instead
23:49:14 <ais523\unfoog> which is rather clearer
23:49:19 <ais523\unfoog> if a bit backslashy
23:49:53 <ais523\unfoog> and a bunch of other languages, like Python/Ruby/Java, ripped off Perl's regexes
23:50:03 -!- ais523\unfoog has quit (Remote host closed the connection).
23:50:10 <elliott> rest in peace ais
23:50:28 <elliott> oerjan: pl.s........
23:50:52 <oerjan> dammit
23:51:16 -!- pikhq has quit (Ping timeout: 258 seconds).
23:51:18 -!- pikhq_ has joined.
23:52:07 <oerjan> i think this is intuitively equivalent to collapsing as much of the tree as possible while keeping it a tree and the real cursors distinct
23:52:21 <elliott> ah
23:52:27 -!- DCliche has joined.
23:53:22 <oerjan> and a Seq of trees is a representation of a line resulting from collapsing between two nodes
23:53:29 -!- augur has joined.
23:54:06 <elliott> controlled demolition: the zipper story
23:55:55 -!- Darth_Cliche has quit (Ping timeout: 240 seconds).
23:56:46 <oerjan> i am not quite sure, but i think the number of virtual cursors cannot be more than twice the number of real ones
23:57:38 <oerjan> or thereabouts.
23:58:24 <elliott> ok
23:59:40 <oerjan> so lookup of stuff is hopefully O(log n) in the number of cursors
23:59:53 <oerjan> assuming a Map
2011-11-16
00:00:13 <elliott> oerjan: you mean, looking at the value at a cursor?
00:00:26 <elliott> that's not bad
00:00:47 <oerjan> well, finding the neighboring Seq's and stuff
00:01:01 <elliott> oh, OK
00:01:06 <elliott> so accessing the value at a cursor is still O(1)?
00:01:09 <oerjan> oh hm
00:01:17 <oerjan> well yeah that should be possible
00:01:29 <elliott> right
00:01:58 * elliott is probably more interested in the mutation performance :P
00:03:40 <oerjan> well to move a cursor along an edge, you would need to look up the neighboring Seq's and adjust them
00:04:29 <oerjan> oh in addition to neighboring Seq's there may also be neighboring collapsed trees with no other cursors adjacent
00:04:57 <elliott> i may not be following as closely as i thought >:)
00:05:04 <elliott> so do you have any idea what this would look like for an actual tree structure?
00:05:23 <oerjan> i think this may be a graph minor construction
00:05:51 <oerjan> erm
00:08:39 <CakeProphet> oerjan: so basically each Seq can have up to 2 cursors as parents?
00:08:43 -!- TeruFSX has quit (Read error: Connection reset by peer).
00:08:45 <oerjan> *-.-.-*-.-. *-*
00:08:45 <oerjan> | -> |
00:08:45 <oerjan> .-*-.-.-* *-+-*
00:08:49 <oerjan> CakeProphet: yes
00:09:12 <elliott> oerjan: that's pretty :')
00:09:23 <oerjan> the left part is the original tree with *'s as real cursors, the right is the collapsed tree, + is a virtual cursor
00:10:15 <elliott> ok
00:11:34 <CakeProphet> oerjan: what would be wrong with a BST of cursors that point to Seq leaves? (I don't think this terminology makes sense when dealing with graphs but whatever)
00:11:39 <oerjan> each of the right part - and | would be a Seq of the lines collapsed to it. oh hm i guess that doesn't show how there might be additional trees on those lines that are collapsed
00:11:47 <oerjan> what's a BST again
00:11:51 <CakeProphet> binary search tree.
00:12:15 <oerjan> well that's something like what i'm imagining
00:12:33 <CakeProphet> that is exactly what I'm imagining. :P
00:12:58 <CakeProphet> I guess you could use a 2-3 tree or some variation of a BST.
00:13:09 <oerjan> well it's just a dictionary?
00:13:20 <CakeProphet> ah, yes.
00:14:42 <CakeProphet> if by dictionary you mean a map implemented as a binary search tree. :)
00:14:59 <oerjan> that's afaik what haskell's Data.Map is.
00:15:05 <CakeProphet> yes.
00:15:29 <CakeProphet> wait so what about... Seq Cursors?
00:15:43 <oerjan> wat
00:15:46 <CakeProphet> no?
00:15:46 <CakeProphet> okay.
00:16:39 <CakeProphet> as in use a 2-3 finger tree to store a sequence of cursors, which point to two sub Seqs.
00:17:39 * oerjan head no wrap again
00:18:04 <elliott> oerjan: ignore that silly CakeProphet dude and tell me more :D
00:19:45 <oerjan> (*)(-.-.-)(*-.-.) *-*
00:19:45 <oerjan> (|) -> |
00:19:45 <oerjan> (.-*-)(.)(-.-)(*) *-+-*
00:19:58 <shachaf> \ o /
00:20:04 <shachaf> How does that bot work?
00:20:09 <oerjan> that shows precisely what part of the original is included in each char
00:20:14 <oerjan> on the right
00:20:16 <CakeProphet> ^celebrate
00:20:16 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
00:20:16 <myndzi> | | | `\o/´ | | | `\o/´ | | |
00:20:16 <myndzi> >\ |\ /< | /< /´\ >\ | >\ /< /|
00:20:16 <myndzi> (_|¯`\ /´\
00:20:16 <myndzi> |_) (_| |_)
00:20:20 <CakeProphet> shachaf: like that.
00:20:33 <CakeProphet> shachaf: also that's a human being not a bot. how rude!
00:20:42 <shachaf> \o/
00:20:42 <myndzi> |
00:20:43 <myndzi> /`\
00:20:46 <oerjan> oh oops
00:20:52 <oerjan> elliott: sorry, typo there
00:21:12 <oerjan> (*)(-.-.-)(*-.-.) *-*
00:21:12 <oerjan> (|) -> |
00:21:12 <oerjan> (.-*)(-)(.)(-.-)(*) *-+-*
00:21:21 <elliott> oerjan: ok
00:21:36 <elliott> oerjan: this is more efficient the closer each cursor is, right?
00:21:50 <oerjan> erm how so?
00:22:03 <elliott> oh, hmm, no
00:22:06 <elliott> i was misreading it :)
00:22:20 <CakeProphet> HASH TABLE OF CURSORS MUTABILITY YEAAAAH
00:22:23 <oerjan> the idea of the Seq's and collapsed subtrees is to make the parts between cursors O(1) to move in
00:22:45 <oerjan> well for a certain value of "1"
00:22:50 <elliott> oerjan: right
00:23:40 * CakeProphet writes a O(1) hash function that sleeps for 3 years before returning 1.
00:24:13 <CakeProphet> IT'S PRACTICALLY INSTANT.
00:24:54 <shachaf> O(noes)
00:25:03 <shachaf> ...As they say on the Internet.
00:25:24 <CakeProphet> I don't think you should ignore constant factors when your constant factor is 5 trillion.
00:25:27 <CakeProphet> silly Big O notation.
00:25:35 <elliott> `quote O\(slow\)
00:25:37 <HackEgo> 276) [on egojoust] <elliott> The fact is that EgoBot's % handling is O(slow) and O(big), and mine isn't.
00:25:53 -!- augur has quit (Remote host closed the connection).
00:25:57 <shachaf> `quote themselves
00:26:00 <HackEgo> No output.
00:26:05 <shachaf> `quote norway
00:26:07 <HackEgo> No output.
00:26:13 <shachaf> `quote lunch
00:26:15 <HackEgo> No output.
00:26:19 <shachaf> Useless bot.
00:26:26 <CakeProphet> `quote fuck
00:26:28 <HackEgo> 225) <ais523> I love the way zzo38's comment was cut off after the f of brainfuck <ais523> that's just the most hilarious place to cut it off in a discussion about censorshi \ 275) <oerjan> <Gregor> oerjan: Tell us what (a(b{c}d)*2e)%2 expands to <-- ababcdbcdedbabcdbcdede, i think <Gregor> oerjan: What - the - fuck \ 297) <oklopol> okay see in my head it went, you send from your other number smth like "i'd certainly
00:26:36 <elliott> `addquote <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
00:26:38 <HackEgo> 718) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
00:26:43 <elliott> `quote themselves
00:26:44 <elliott> `quote norway
00:26:45 <HackEgo> 718) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
00:26:46 <elliott> `quote lunch
00:26:47 <HackEgo> 718) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
00:26:48 <HackEgo> 718) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
00:26:58 <elliott> useful bot
00:27:01 <shachaf> `removequote <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
00:27:03 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: removequote: not found
00:27:10 <shachaf> `delquote <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
00:27:11 <HackEgo> No output.
00:27:13 <shachaf> `ls bin
00:27:15 <HackEgo> ​? \ @ \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ runperl \ toutf8 \ translate \ translatefromto \ translateto \ units \ url \ wl \ word \ wtf
00:27:19 <CakeProphet> oerjan: please kick elliott for spam
00:27:23 <CakeProphet> also shachaf
00:27:28 <elliott> Also CakeProphet.
00:27:29 <CakeProphet> :< <-- grumpy old man
00:27:30 <shachaf> `quote CakeProphet
00:27:32 <HackEgo> 141) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just stealing the universe's work and passing it off as our own. \ 142) <fungot> CakeProphet: reading herbert might be enlightening in one hand he held a long worm can be greased. twice i got it nearly there, and the protector of cattle. mars is
00:27:51 <elliott> oerjan: the idea is basically to turn a tree with a bunch of cursors into a tree of /just/ the cursors, retaining their sort of "relative positions", right?
00:28:03 <elliott> and those cursors contain the bits of the tree they're focusing on, sort of
00:28:31 <oerjan> yeah
00:28:41 <oerjan> (*)(-.-)(*)(-.-.-.) *-*
00:28:42 <oerjan> (|) -> |
00:28:42 <oerjan> (.-*)(-)(.)(-.-)(*) *-+-*
00:29:05 <shachaf> let |x| = abs x; o = -5 in |o|
00:29:05 <myndzi> |
00:29:05 <myndzi> /<
00:29:07 <elliott> oerjan: this is a Seq zipper, right?
00:29:12 <oerjan> that's what the previous should become if we move the upper right * cursor one step left
00:29:51 <CakeProphet> shachaf: one day Haskell will DWIM.
00:29:52 <oerjan> now the middle | Seq line contains -.-.-.
00:29:54 <elliott> oerjan: (i forgot which structure you were zippering :P)
00:30:16 <oerjan> |
00:30:22 <oerjan> dammit
00:30:38 <oerjan> * |
00:30:45 <shachaf> CakeProphet: One day it will DWIM; I dearly hope that the day will never come when it DWYM, though.
00:30:52 <CakeProphet> zippered finger trees.
00:30:56 <elliott> oerjan: kick shachaf for interrupting your diagram
00:31:07 <elliott> CakeProphet: Seq /is/ a finger tree
00:31:09 <oerjan> so there's an actual tree in one of the Seq elements on the way
00:31:14 <CakeProphet> elliott: /really/?
00:31:16 * CakeProphet gasps.
00:32:34 <CakeProphet> therefore, hash tables are arrays.
00:33:03 <shachaf> Table#
00:33:15 <oerjan> elliott: i'm zippering a plain unrooted tree, essentially
00:33:22 <elliott> oerjan: ok
00:33:41 <oerjan> adding labels and typesafeness left as an exercise for the reader >:P
00:33:51 <elliott> oerjan: when do you get to defining adts >:)
00:34:11 <oerjan> LEFT AS AN EXERCISE FOR THE READER, I SAID
00:34:35 <elliott> oerjan: :'(
00:34:41 <shachaf> oerjan: Why aren't you in #haskell these days?
00:34:58 <elliott> dammit, oerjan has roped me into listening to one of his long monologues and getting /nothing/ useful out of it :P
00:34:59 * shachaf checks #haskell. <stribor> you mean line this....once oi am on unix command line to do this .....ghci -package gtk ?
00:35:02 <shachaf> Hmm.
00:35:07 <oerjan> *MWAHAHAHA*
00:35:36 <elliott> oerjan: im going to cry at you now instead of replying to anything you say.
00:35:37 <elliott> oerjan: cry
00:36:03 <shachaf> Sounds to me, oerjan, like elliott mad
00:36:19 <shachaf> Sounds to me, elliott, like u mad
00:36:26 <oerjan> well there's a sort of dynamicity at the point of mapping back from the collapsed tree to the original which i'm not quite sure how to handle
00:36:53 <monqy> CakeProphet: ><{{{}::LLKLMH@A;'`hi`1 s
00:37:06 <oerjan> like, to get full typesafeness we'd need some kind of parametric Seq
00:37:39 <oerjan> and with things in a map it might involve actual Dynamic
00:38:14 <shachaf> unsafeCoerce
00:38:23 <elliott> oerjan: hm do you need an indexed map
00:38:53 <oerjan> oh and it might be necessary to invent id's for the cursors
00:38:54 <elliott> oerjan: i.e. lookup :: k a -> Map k a -> Maybe a
00:38:57 <shachaf> elliott: Did you see ddarius's puzzle about IORef in #haskell recently?
00:38:58 <elliott> or similar
00:39:01 <elliott> shachaf: No.
00:40:01 <shachaf> do { r <- newIORef (return ()); writeIORef r (join (putChar '*' >> readIORef r)); join (readIORef r) }
00:40:20 <shachaf> The puzzle went "where does the recursion come from?".
00:40:27 <shachaf> Or something along those lines.
00:41:39 <elliott> shachaf: I...
00:41:59 <elliott> shachaf: It comes from executing the result of reading r depending on the value inside r.
00:42:04 <elliott> Which it executes.
00:42:08 <elliott> And so on.
00:42:13 <shachaf> Right, but there's no recursive definition there.
00:42:25 <shachaf> And yet it's non-terminating.
00:42:28 <shachaf> How does that happen?
00:42:31 <elliott> shachaf: There sort of is; it's using the IORef as a definition.
00:42:32 <oerjan> there's a cyclic structure created by mutation
00:42:40 <elliott> Yeah.
00:42:53 <shachaf> OK, but why are you allowed to create a cyclic structure?
00:43:09 <CakeProphet> because IO etc
00:43:17 <shachaf> Well, it works with ST too.
00:43:18 <elliott> shachaf: As opposed to...?
00:43:22 <shachaf> Can you model this with State, for instance?
00:43:24 <oerjan> because that's easy with IORef?
00:43:42 <elliott> You can do a mono-typed STRef with State, so yes.
00:43:43 <oerjan> heh
00:43:50 <elliott> Since only one relevant reference type is used here.
00:44:00 <CakeProphet> *x = &x //weeeeeeeee
00:44:04 <shachaf> elliott: OK, can you do it with State, then, without using any recursion?
00:44:53 <elliott> shachaf: main = runStateT (do { put $ join (liftIO (putChar '*') >> get); join get) (return ())
00:44:54 <elliott> ?
00:45:06 <elliott> shachaf: main = runStateT (do { put $ join (liftIO (putChar '*') >> get); join get }) (return ())
00:45:22 <elliott> Occurs check: cannot construct the infinite type:
00:45:22 <elliott> m1 = StateT (m1 ()) m0
00:45:22 <elliott> :-(
00:45:49 <elliott> Oh.
00:45:53 <elliott> shachaf: You just need a newtype wrapper.
00:46:01 <elliott> newtype Foo = Foo (StateT Foo IO)
00:46:03 <oerjan> > runRWS (do put (join (tell "*" >> get)); join get) undefined undefined
00:46:04 <lambdabot> Occurs check: cannot construct the infinite type:
00:46:05 <lambdabot> m
00:46:05 <lambdabot> =
00:46:05 <lambdabot> Control.Mona...
00:46:13 <shachaf> elliott: Can you get the IO out of this, please?
00:46:15 <oerjan> :t runRWS
00:46:16 <lambdabot> forall r w s a. RWS r w s a -> r -> s -> (a, s, w)
00:46:19 * shachaf should never have brought up IO.
00:46:27 <elliott> shachaf: What kind of effect do you want, then? Just plain _|_?
00:46:31 <shachaf> Sure.
00:46:43 <shachaf> _|_ without recursion is accomplishment enough. :-)
00:46:56 <CakeProphet> > undefined
00:46:57 <lambdabot> *Exception: Prelude.undefined
00:47:02 * CakeProphet feels accomplished
00:47:06 <shachaf> @slap CakeProphet
00:47:06 * lambdabot karate-chops CakeProphet into two equally sized halves
00:47:12 <elliott> shachaf: Lesse...
00:47:40 <elliott> s/sse/ssee/
00:47:47 <shachaf> Anyway, yes, that was recursive. :-)
00:47:59 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:48:02 <oerjan> shachaf: i think the only reason my RWS version doesn't work is that the state is contained in the monad type, unlike for IO, so it needs a newtype wrapper
00:48:30 <oerjan> otherwise i think it is in spirit the same as the IO one
00:48:46 <elliott> shachaf: Done.
00:48:52 <elliott> ewtype Foo a = Foo { unFoo :: State (Foo ()) a }
00:48:52 <elliott> test = Foo $ do
00:48:52 <elliott> put $ Foo (get >>= unFoo)
00:48:52 <elliott> get >>= unFoo
00:48:55 <elliott> *Main> evalState (unFoo test) undefined
00:48:55 <elliott> Loading package transformers-0.2.2.0 ... linking ... done.
00:48:58 <elliott> s/ewtype/newtype/
00:49:05 <shachaf> Well, you're using a recursive newtype.
00:49:21 <elliott> shachaf: So is IO.
00:49:26 <elliott> IORefs are just magical.
00:49:49 * elliott isn't sure exactly what you're getting at here.
00:50:22 <shachaf> What's recursive about STRef?
00:50:42 <elliott> shachaf: ST has a store of STRefs which you instantiate polymorphically to make them include an ST.
00:50:58 <oerjan> shachaf: the problem is that only IO and ST allows you to make state that doesn't show up in the type of the monad
00:50:58 <elliott> But fine, I'll whip up a version without that.
00:51:21 <oerjan> that is why they don't need a newtype
00:51:27 <shachaf> oerjan: Right.
00:51:37 <elliott> Actually I can't, I'd need unsafeCoerce I think.
00:51:44 <elliott> Unless, hmm...
00:51:50 <elliott> shachaf: But yeah, what is the point actually meant to be?
00:52:27 <oerjan> elliott: maybe Dynamic is sufficient?
00:52:48 <elliott> oerjan: Hmm, right
00:52:51 * elliott tests
00:54:13 <elliott> No instance for (Typeable1
00:54:13 <elliott> (StateT Dynamic Data.Functor.Identity.Identity))
00:54:14 <elliott> Hmph.
00:54:17 * elliott newtype
00:55:39 <elliott> Can't make a derived instance of `Typeable1 (StateT a m)':
00:55:39 <elliott> `StateT' has arguments of kind other than `*'
00:55:39 <elliott> In the stand-alone deriving instance for `Typeable1 (StateT a m)'
00:56:03 * elliott makes own monad
00:59:13 <elliott> shachaf: Done.
00:59:59 <elliott> shachaf: http://hpaste.org/54087
01:01:44 <elliott> shachaf: HAPPY NOW?
01:02:07 <elliott> shachaf: (I note that you can implement Y without explicit value or type recursion using Dynamic too.)
01:02:57 <elliott> oerjan: SO N-CURSOR ZIPPERS
01:04:10 <CakeProphet> elliott: I will substitute for oerjan
01:04:13 <elliott> shachaf: Also, I believe this means you can do recursion with "just" the FFI, and with "just" Chans and forkIO.
01:04:14 <CakeProphet> so basically like
01:04:17 <CakeProphet> n-cursor zippers
01:04:19 <CakeProphet> are like zippers
01:04:22 <CakeProphet> but with n cursors.
01:05:11 <oerjan> you can even do recursion with "just" recursion.
01:05:26 <elliott> indeed!
01:05:30 <elliott> so oerjan, n-cursor zippers
01:05:54 <oerjan> i sense some recursoring
01:07:03 <elliott> very funny. HELP ME OUT, I AM AT WAR WITH FINNS.
01:07:57 <oerjan> maybe we could do a zipper of the collapsed tree to easily move to the cursor we want to concentrate on >:)
01:08:33 <elliott> oerjan: :D
01:09:06 -!- tiffany has quit (Quit: nyu~).
01:10:21 <oerjan> then we wouldn't need a dictionary to get back to the original tree. although we still need some map to tell the path to each cursor. ouch.
01:11:17 <oerjan> and that map would change as cursors move
01:11:59 <oerjan> especially since the shape of the collapsed tree also can change
01:12:02 <elliott> oerjan: what, exactly, kind of dictionary do you need?
01:14:17 <oerjan> oh hm. maybe we could put signposts in the virtual cursor data to tell how to move to another cursor - only the next step, so changes are still local
01:14:37 <oerjan> a zipper of the zipper starts looking sane...
01:15:06 <elliott> coooool
01:16:31 <CakeProphet> elliott: http://dl.dropbox.com/u/16495819/lolncursor.png
01:16:32 <oerjan> oh, this would get O(n) in the number of cursors if they're laid out on a line
01:16:35 <CakeProphet> Nobel Prize plz
01:16:46 <elliott> oerjan: O(n) to do /what/?
01:17:00 <elliott> CakeProphet: now tell me how to reposition cursor 3 before cursor 2
01:17:23 <CakeProphet> do lots of swappy things.
01:17:52 <oerjan> CakeProphet: the cursors are not necessarily ordered in that way.
01:18:06 <oerjan> that's the whole point of this collapsed tree thing
01:18:19 -!- derdon has quit (Remote host closed the connection).
01:18:23 <CakeProphet> hmmmmmmmm
01:18:26 <CakeProphet> okay
01:18:59 <oerjan> elliott: to move from one cursor to another if you have to pass all the others, if they're extremes on a line
01:19:16 <oerjan> with the zipper of zipper idea
01:19:35 <CakeProphet> how do you intend to access the cursors?
01:19:37 <elliott> oerjan: ah. that's probably not hugely problematic, i think the most number of IPs any funge program has is like 60,000, and that's pathological
01:19:42 <CakeProphet> random access, sequentially, ????
01:19:47 <elliott> a few hundred at most is all i care to optimise for
01:19:58 <CakeProphet> by an identifier, by an index?
01:21:01 <elliott> CakeProphet: round-robin, for my usecase
01:21:06 <CakeProphet> ah
01:21:28 <CakeProphet> well you could just decouple the subsequences...
01:21:32 <CakeProphet> basically a Seq of zippers.
01:21:37 <CakeProphet> on the same list.
01:21:51 <elliott> i'll let oerjan respond to you >:)
01:21:57 <elliott> oerjan: but anyway, what kind of dictionary /did/ you need?
01:22:37 <oerjan> elliott: at this point, i think you only need dictionaries or something for the signposts
01:22:51 <elliott> oerjan: I meant to avoid the zipper-zipper inefficiency, but ok
01:22:58 <oerjan> a signpost would tell for each real cursor what direction to go in
01:22:59 <oerjan> oh.
01:23:07 <CakeProphet> psh Seq of zippers is mad efficient.
01:24:52 <oerjan> so, a virtual cursor node would need to contain some data: a list of adjoining trees without cursors in them, a list of adjoining Seq's to other cursors, and some tag to tell which nearest neighbors are in which relation to each other in the original QuadTree. and possibly the signpost map.
01:25:36 <oerjan> oh and the adjoining Seq's would of course "end" in cursor-cursors with the zipper zipper idea
01:25:40 -!- augur has joined.
01:25:51 <elliott> oerjan: ok
01:26:17 <CakeProphet> also a ref to the mutable 2D array that it can use to mutate the fungespace and move IPs in constant time.
01:26:47 <CakeProphet> >:>
01:26:48 <oerjan> if you don't do the zipper of zipper idea, you need to handle the collapsed tree in some other way, perhaps using some graph library.
01:27:10 <elliott> oerjan: ok, stick with zipper of zipper i guess :P
01:27:14 <elliott> it sounds easier
01:27:19 <CakeProphet> s/zipper/Seq/
01:27:32 * oerjan swats CakeProphet -----###
01:28:42 <Gregor> WLIIA REPORT AS OF 1x15: Absolute winner is still Wayne Brady with an incredible 3,003,530.5 points. Absolute average episode winner is also Wayne with 250,294.2 points. Logarithmic winner is Ryan Stiles in a come-from behind victory with 82, barely beating out Colin's 80.6. Logarithmic average episode winner for performers appearing in >1 episode is Wayne with 6 log-points per episode.
01:29:05 <CakeProphet> ?
01:29:16 <Gregor> CakeProphet: I'm watching all of Whose Line is it Anyway and tallying the points.
01:29:28 <CakeProphet> elliott: clearly Wayne Brady is the best choice for implementation of n-cursor zippers.
01:29:35 <CakeProphet> Gregor: white people love Wayne Brady.
01:29:49 * shachaf return
01:30:23 * CakeProphet CakeProphet >>= eat soup
01:30:26 <CakeProphet> erm
01:30:30 * CakeProphet >>= eat soup
01:31:14 * shachaf shachaf shachaf *
01:31:22 <pikhq_> Gregor: First, why the heck are you doing that?
01:31:46 <pikhq_> Second, :)
01:32:59 <Gregor> pikhq_: As an excuse to watch WLIIA :P
01:33:08 <pikhq_> Good reason.
01:34:17 <elliott> oerjan: go on :
01:34:17 <elliott> :P
01:34:51 <CakeProphet> Gregor: the handsome black man is the best to watch.
01:35:00 <CakeProphet> also Drew Carrey may have a mancrush on him
01:37:03 <elliott> y :: (Typeable c, Typeable b) => (b -> c) -> c
01:37:07 <elliott> shachaf: My fixed-point combinator is swell.
01:37:51 <monqy> swellest
01:38:01 <oerjan> the basic NW, NE, SW, SE, FromNW, FromNE, FromSW, FromSE directions from QuadTrees still apply to all of this, i think.
01:38:12 * CakeProphet >>= eat soup >>= feelMMM
01:38:15 <CakeProphet> mmm
01:38:18 <monqy> mmm
01:38:20 <elliott> oerjan: ok
01:39:25 <oerjan> a cursor cursor would go in one of those. if one of the four first, it would be sort of like a QuadTree, if one of the four latter, like a Cursor in our previous discussions
01:39:50 -!- augur has quit (Remote host closed the connection).
01:41:19 <oerjan> there would be two types of such, those with a (virtual) cursor at the other end, and those without. the latter would actually _be_ QuadTrees and Cursors of our previous talks.
01:41:26 <CakeProphet> oerjan: I think you guys are overcomplicated this..
01:41:50 <elliott> CakeProphet: present your solution or shut up and stop butting in :P
01:41:55 <oerjan> the former would contain a Seq, a new direction, and a virtual cursor node.
01:42:16 <Gregor> OMG, owcc is SO FRIGGIN' SLOW
01:42:32 <oerjan> the terminology of this is definitely going to hell.
01:42:35 <Gregor> elliott: Lest you're not up to date: x86[_64], SPARC, MIPS[el]
01:42:42 <Gregor> Not as big a list as I'd like :(
01:42:55 <elliott> Gregor: I was up to date. Make it work on ARM and PPC. :p
01:42:55 <Gregor> Also, tcc seems to exclusively generate retarded function prologues.
01:42:57 <elliott> oerjan: yes, quite
01:43:04 <elliott> oerjan: maybe some ADT definitions would help >:)
01:43:13 <oerjan> also, in principle we would want type parametrized Seq's so we could actually keep things typesafe
01:43:35 <Gregor> elliott: With -O2: 7b: 81 ec 00 00 00 00 sub $0x0,%esp
01:44:02 <CakeProphet> elliott: what I had in my diagram. just do swappy stuff when you need to rearrange cursors.
01:44:11 <elliott> CakeProphet: What the fuck is "swappy stuff"?
01:44:33 <CakeProphet> if that's too inefficient, just do a Seq/container-of-preference of zippers because.
01:44:41 <oerjan> some kind of PSeq f a b which is a chain of f a c1, f c1 c2, ..., f cn b
01:44:55 <shachaf> elliott: Swell as in unsafeCoerce?
01:45:04 <elliott> shachaf: Nah, the next best thing.
01:45:05 <oerjan> f would be a gadt, i think
01:46:07 <shachaf> elliott: Dynamic = unsafeCoerce.
01:46:37 * oerjan is worried that part needs ContextKinds
01:46:44 <oerjan> er
01:46:50 <oerjan> *ConstraintKinds
01:47:27 <CakeProphet> elliott: rearrange the cursors so they're in order, concat and move stuff around. profit.
01:48:08 <CakeProphet> if what's between two cursors isn't relevant, just do the Seq of zippers. that's more efficient.
01:49:16 <elliott> y :: forall a. (Typeable a) => (a -> a) -> a
01:49:16 <elliott> y f = fromDyn' (magic (toDyn magic))
01:49:16 <elliott> where magic :: Dynamic -> Dynamic
01:49:16 <elliott> magic x = toDyn (f (fromDyn' (dynApp x (toDyn x))))
01:49:19 <elliott> shachaf: It doesn't work :-(
01:49:44 <elliott> CakeProphet: A Seq of zippers doesn't let you mutate, which is the whole bloody point.
01:49:58 <shachaf> elliott: Why are you using Dyn instead of just recursive types?
01:50:01 <CakeProphet> elliott: but assuming the cursors are IPs then I'm guessing they only move around in increments of 1?
01:50:13 <elliott> shachaf: To prove you can do fix without type or value-level recursion.
01:50:21 <elliott> CakeProphet: I really can't be bothered explaining this to you?
01:50:21 <shachaf> By using unsafeCoerce.
01:50:31 <elliott> shachaf: Yes, except it's safeCoerce.
01:51:14 <shachaf> @let safeCoerce :: a -> a; safeCoerce x = unsafeCoerce x
01:51:16 <lambdabot> Defined.
01:51:48 <monqy> > safeCoerce 5
01:51:54 <lambdabot> mueval: ExitFailure 1
01:51:54 <lambdabot> mueval-core: Time limit exceeded
01:51:56 <monqy> lambdabot.....
01:52:15 <shachaf> > safeCoerce 5
01:52:15 <CakeProphet> :t safeCoerce
01:52:17 <lambdabot> forall a. a -> a
01:52:17 <lambdabot> 5
01:52:25 <CakeProphet> @src safeCoerce
01:52:28 <lambdabot> Source not found. Are you on drugs?
01:52:35 * oerjan facepalm
01:52:40 <monqy> cake "whats paying attention" prophet
01:53:04 <CakeProphet> whats paying attention?
01:53:16 <monqy> oh no......
01:54:00 <CakeProphet> I often make fools of yourself.
01:54:14 <monqy> yes
01:54:48 <CakeProphet> monqy avoids making fools of yourself by only talking when he is not a fool.
01:54:53 <CakeProphet> good strategy.
01:55:57 <elliott> monqy is never fool
01:59:09 <CakeProphet> therefore monqy only talks.
02:01:38 <CakeProphet> Gregor "unrelated" Richards
02:03:53 <Gregor> HEYO
02:04:05 <CakeProphet> O YEH
02:04:10 <Gregor> The very first instance of Scenes from a Hat (in spite of it being a staple of the show) is in the 16th episode.
02:05:18 -!- CakeProphet has changed nick to RogerG\unhere.
02:05:39 <monqy> bye roger g
02:06:32 <Gregor> Argh, how do I stop making owcc do semi-clever inter-procedural optimization >_>
02:07:34 <monqy> does owcc have -O0
02:07:44 <RogerG\unhere> Gregor: write inefficient code.
02:07:50 <RogerG\unhere> and it will negate the effect.
02:08:02 <monqy> don't have procedures
02:08:29 <pikhq_> Have enough procedures that owcc overflows something.
02:09:01 -!- Slereah_ has joined.
02:10:40 -!- Slereah has quit (Ping timeout: 255 seconds).
02:10:51 <Gregor> monqy: Doesn't work with -O0 because it generates subl $0, %esp
02:11:35 <pikhq_> Gregor: ...
02:11:46 <Gregor> pikhq_: Yup.
02:12:04 <monqy> owcc...
02:12:24 -!- RogerG\unhere has quit (Ping timeout: 252 seconds).
02:12:36 <monqy> bye roger g
02:13:17 <Gregor> monqy: OpenWatcom.
02:13:42 <monqy> Oklahoma Workers' Comensation Court
02:14:04 <monqy> Old Whitgiftians Cricket Club good
02:15:08 <monqy> The code it produces for MS-DOS executes very fast[citation needed]. It was one of the first compilers to support the Intel 80386 "protected mode"[citation needed].
02:15:11 <monqy> thanks wikipedia
02:15:59 <pikhq_> It's ye old Watcom compiler, GPL'd.
02:21:37 <Gregor> OK, so far nothing but gcc can make my JIT work X-P
02:21:41 <Gregor> Everything else is SO CLOSE and yet so far.
02:21:47 <Gregor> Compiler suggestions?
02:22:19 <pikhq_> tcc?
02:22:32 <pikhq_> If you can compile it with otcc even better.
02:22:49 <Gregor> tcc always generates subl $0, %esp
02:22:57 <pikhq_> otcc likewise? :(
02:23:03 <Gregor> Haven't tried it.
02:23:12 <pikhq_> It probably does.
02:23:21 <pikhq_> Seeing as it's what tcc came from.
02:23:42 <pikhq_> Still, it'd be pretty spiffy to compile with a previous entry to IOCCC.
02:24:59 <Gregor> True ...
02:25:17 <Gregor> I wonder if with sufficient cleverness I could do epilogue detection only and leave in the prologues and partial epilogues for everything ...
02:25:53 <Gregor> OR I could be REALLY stupid and just assume that your epilogue is either one or four bytes and no other size :P
02:28:20 <Gregor> Nope, wouldn't work on SPARC :P
02:29:32 <Gregor> (Or anything else with delay branches ... )
02:33:24 <Gregor> BUT, if I assume that on all CISC platforms (all one of them), I may be in luck.
02:41:19 <Gregor> HEYOOOOO
02:43:14 <Gregor> OpenWatcom :)
02:43:29 <Gregor> And probably TCC
02:47:09 <elliott> Gregor: By doing what
02:52:28 <Gregor> Yup, works on TCC too :)
02:52:33 <Gregor> elliott: Making my heuristics much more stupid.
02:52:40 <elliott> lol
02:52:50 <Gregor> elliott: On platforms I determine to be CISC, I blindly assume the epilogue is always one byte and the prologue is zero.
02:55:16 -!- MDude has changed nick to MSleep.
02:57:07 -!- calamari has joined.
02:57:23 <elliott> Gregor: How do you determine ciscness?
02:57:34 <Gregor> elliott: Odd-sized functions.
02:57:45 <elliott> That's it?
02:57:46 <Gregor> Yup
02:58:12 <Gregor> I'm not exactly aiming for coding perfection here :P
02:58:13 <oerjan> an odd heuristic
02:58:26 <Gregor> oerjan: AND YET: It works :)
02:59:21 <elliott> oerjan: ADTS PLZ
02:59:37 <oerjan> i knew i'd regret that pun
03:02:50 <Gregor> And now to lament the lack of -mbuild-constants for ARM :(
03:14:33 <elliott> oerjan: :|
03:14:42 <oerjan> it's tricky
03:14:53 <elliott> pah :P
03:15:29 <elliott> oerjan: btw the space is actually finite
03:15:39 <elliott> (Int32,Int32)-indexed
03:16:03 -!- pikhq has joined.
03:16:09 <oerjan> ic, well that's just having some top node
03:16:12 -!- pikhq_ has quit (Ping timeout: 260 seconds).
03:17:06 <elliott> yeah
03:17:20 <elliott> not like you can allocate that much anyway
03:17:33 <elliott> so might as well just leave it out
03:18:30 <oerjan> data MetaCursor srcdir = MCPlain (PlainCursor srcdir) | forall dest. MCPath (MetaPath src dest) MetaNode dest
03:18:48 <elliott> ooh, that looks cool
03:19:53 <elliott> oerjan: s/srcdir/src/g right?
03:20:00 <oerjan> oh hm
03:20:11 <oerjan> or the reversze
03:20:14 <oerjan> *-z
03:20:29 <elliott> then you vneed to rename dest >:)
03:20:33 <oerjan> gah
03:20:34 <elliott> src is nicer anyway
03:21:34 <oerjan> data FromNW; data FromNE; data FromSW; data FromSE; data NW; data NE; data SW; data SE -- src and dest should be one of these
03:22:08 <elliott> ok
03:25:35 <oerjan> PlainCursor From{NW,NE,SW,SE} is basically our old Cursor and PlainCursor {NW,NE,SW,SE} is a QuadTree, i think
03:25:57 <elliott> gadts then :P
03:26:00 <oerjan> yeah
03:26:16 <elliott> i forget our old cursor but i'll look it up when i need it
03:26:32 <oerjan> *(MetaNode dest) -- forgot parens above
03:26:37 <pikhq> Aaah, earl grey.
03:27:56 <elliott> oerjan: btw just out of curiosity, does it help optimise the metazipper thing if you know i always access cursors in round-robin
03:28:17 <elliott> not round-robin in order of space; in order of creation
03:28:24 <oerjan> ic
03:28:47 <Gregor> OK, I may have this working on ARM, and only 85% incurably stupid.
03:29:15 <elliott> oerjan: i'll shut up :)
03:29:56 <oerjan> that means you basically wants CakeProphet's Seq of zippers in ther somehow ;P
03:30:05 <oerjan> *+e
03:31:27 <elliott> might as well just continue as-is :P
03:32:11 <oerjan> MetaNode dest represents a node containing a virtual cursor, with incoming edge as dest
03:32:20 <Gregor> Damn it, now how did this break on MIPS >_>
03:33:24 <elliott> oerjan: ok
03:34:18 <oerjan> oh hm
03:34:21 -!- augur has joined.
03:35:11 <oerjan> MNFromNW :: { neNeighbor :: MetaCursor NE, ... but what should be the _up_ cursor...
03:35:53 <oerjan> i think it needs to be split. ah!
03:36:12 <oerjan> data From; data To; data NW; ...
03:36:34 <elliott> :D
03:36:48 <elliott> oerjan: From dir
03:36:53 <elliott> and To dir
03:36:56 <elliott> no
03:37:00 <elliott> ?
03:37:07 <oerjan> oh well maybe
03:37:17 -!- augur has quit (Remote host closed the connection).
03:37:33 <oerjan> i was thinking of them as separate arguments, but i guess that works too
03:38:09 <elliott> ah
03:39:33 <oerjan> MNFromNW :: { neNeighbor :: MetaCursor (To NE), swNeighbor :: MetaCursor (To SW), seNeighbor :: MetaCursor (To SE), up :: MetaCursor (From dir), signPost :: SignPost } -> MetaNode (From NW)
03:39:57 <oerjan> not sure that's the right syntax
03:40:19 <elliott> i think its {a::b} -> {c::d} -> ...
03:40:25 <elliott> but i prefer yours :)
03:40:28 <oerjan> oh
03:42:50 <oerjan> MNToNW :: { ... like above but with all five neighbors and no up }
03:42:57 <oerjan> oh hm
03:43:02 <oerjan> obviously then
03:43:20 <elliott> what is dir in MNFromNW
03:43:21 <oerjan> MNTo :: { ... } -> MetaNode (To dir)
03:43:28 <elliott> ah
03:43:50 <elliott> NW then
03:43:56 <oerjan> it doesn't need a different constructor for different ones on the To
03:44:03 <oerjan> *MNTo
03:45:11 <oerjan> the dir in the up field of MNFromNW is arbitrary, since we don't know which direction this node is from the up node
03:45:22 <elliott> oerjan: you mean all 4 neighbours right?
03:45:25 <elliott> and ah
03:45:28 <oerjan> oops :P
03:47:47 <Gregor> elliott: So yeah, +ARM anyway :P
03:48:10 <elliott> Gregor: +ARM-MIPS
03:48:23 <Gregor> elliott: I'm fixin' MIPS :P
03:49:18 <oerjan> MetaPath src dir is tricky. it should be a chain of, hm, PathNode s d, using some kind of Seq which _ideally_ would be parametrized such that only consecutive PathNodes need to match in types
03:50:43 <elliott> does that really matter for internals? :
03:50:45 <elliott> :P
03:50:46 <oerjan> oh and it should probably have a tag so you could consider one as "reversed", for when you "metazip" around it
03:51:04 -!- augur has joined.
03:51:42 <oerjan> without needed to _actually_ traverse and reverse the pathnodes
03:51:45 <oerjan> *needing
03:51:50 <elliott> right
03:52:24 <oerjan> well if you don't do that then of course the typesafe directions break down inside these paths.
03:52:33 <elliott> hm right
03:52:39 <elliott> go ahead, then :P
03:52:55 <oerjan> (i am simply assuming the existence of such a Seq)
03:53:20 <oerjan> which i think i called PSeq above
03:54:26 <oerjan> data MetaPath src dir = MP (PSeq PathNode src dir) | MPReversed (PSeq PathNode dir seq)
03:54:35 <elliott> ok
03:55:08 <elliott> the reversing thing might be better to put into pseq itself but never mind that for now...
03:55:58 <oerjan> well i was just assuming a PSeq which did the minimal change to Seq to make it parametric
03:56:15 <elliott> right
03:56:30 <oerjan> hm...
03:56:46 <elliott> s/seq/src/ :p
03:57:06 <oerjan> oops
03:59:02 <oerjan> PN_ToNW_ToNW :: { neNeighbor :: PlainCursor (To NE) } -> { swNeighbor :: ... } -> { seNeighbor :: ... } -> PlainNode (To NW) (To NW)
03:59:44 <oerjan> similarly for PN_To**_To**
03:59:55 <elliott> ok. (i preferred the previous syntax :P)
04:00:31 <oerjan> PN_To**_From** is illegal
04:01:02 <Gregor> elliott: I officially have no clue why MIPS is broken :P
04:01:39 <oerjan> PN_FromNW_FromNW :: { neNeighbor :: ..., swNeighbor :: ..., seNeighbor :: ... } -> PlainNode (From NW) (From NW)
04:02:01 <oerjan> same arguments, actually, it's conceptually the reversed version of the first one
04:02:30 <oerjan> and so PN_From**_From** in general
04:03:39 -!- madbr has joined.
04:03:47 <oerjan> PN_FromNW_ToNE :: { swNeighbor :: PlainCursor (To SW), seNeighbor :: PlainCursor (To SE), up :: PlainCursor (From dir) } -> PlainNode (From NW) (To NE)
04:04:07 <oerjan> and PN_From**_To** in general, except not with the two directions equal
04:04:22 <oerjan> i think that's all for PlainNode
04:06:30 <elliott> back, sorry
04:06:42 <oerjan> SignPost would be a map whose keys are real cursors and whose values are Maybe Direction
04:06:56 <elliott> oerjan: re: to/from, couldn't you have ... -> PlainNode (tofrom NW) (tofrom NW) >:)
04:07:01 <elliott> just kidding >_>
04:07:18 <oerjan> AAAAAAAAAAAAAAAAAAAAAA
04:07:37 <oerjan> Direction would be a value form of the To dir, From dir things.
04:07:44 <elliott> right
04:08:05 <elliott> oerjan: (more seriously, it seems to me like a type AllDirectionsBut wrapper dir would cut down on lots of duplication)
04:08:32 <oerjan> maybe. note that the PN_From**_To** miss _two_ directions.
04:08:37 <elliott> ah
04:08:45 <elliott> what's a real cursor? the previous Cursor? PlainCursor?
04:09:32 <oerjan> your ip id, i think
04:09:43 <elliott> oerjan: oh, so just an identifier? ok
04:10:01 <oerjan> and a value of Nothing indicates that it's at _this_ node
04:10:14 <elliott> oerjan: (i am half-considering putting the rest of the IP data into this structure, since it's basically tracking my IPs anyway...)
04:10:16 <oerjan> while Just dir indicates where to start going to find it
04:10:51 <oerjan> ah in that case you could use Either IpData Direction for the values, i guess
04:10:57 <elliott> right
04:11:11 <elliott> i am shocked to find myself actually understanding all this.
04:11:21 <oerjan> yay
04:11:48 <Gregor> elliott: It's some weird interaction between unconditional jumps and conditional jumps >_O
04:13:17 <elliott> oerjan: i thought i had lost all hope of understanding after last time's 15 constructors :D
04:13:26 <oerjan> :P
04:14:24 <Gregor> elliott: AHAAAAAAAAAAAAA scratch registers boo.
04:14:35 <oerjan> oops, s/PlainNode/PathNode/g in some of the above
04:14:46 <elliott> oerjan: oh. now it makes even more sense!
04:15:15 <oerjan> yay
04:15:26 <elliott> oerjan: er, that's not it, right?
04:16:04 <oerjan> i think PathNode has 44 constructors.
04:16:11 <elliott> lol
04:16:28 <Gregor> elliott: s/scratch/argument/ in fact :P
04:16:36 <elliott> Gregor: heh
04:16:52 <elliott> oerjan: i will probably try and abstract that out so it only needs one constructor per valid to/from pai :P
04:16:52 <elliott> r
04:16:54 <oerjan> i suppose your AllDirectionsBut is a must
04:16:57 <elliott> but yes, go on
04:17:17 <oerjan> well, i think that's most of it?
04:17:55 <elliott> hm
04:18:14 <Gregor> elliott: Fixt.
04:18:20 <elliott> oerjan: if I asked you how to implement "go west in currently-focused cursor" would you disown me?
04:18:48 <oerjan> maybe if you insisted on all the details
04:19:25 <elliott> heh
04:19:31 <elliott> oerjan: you navigate between cursors /spatially/ in this, right?
04:19:37 <elliott> that seems to make navigating in some other order a pain
04:19:54 <oerjan> well yeah?
04:20:26 <elliott> oerjan: well like i said, my IPs are used round-robinly :P
04:21:01 <oerjan> well yeah i didn't do any attempt to optimize that order
04:21:19 <oerjan> or any order, really
04:21:27 <elliott> oerjan: right
04:21:34 <elliott> oerjan: but i'm not sure how you do it at /all/
04:21:42 <elliott> it seems like you'd have to try every cursor until you found the one you care about
04:25:05 <oerjan> data MetaContext = MetaContext { nwNeighbor :: MetaCursor (To NW), ..., up :: MetaCursor dir, signPost :: SignPost } -- it occurs to me that some field name disambiguation will be needed
04:25:20 <oerjan> anyway, say that's the current focused context
04:25:46 <oerjan> first, look in the signPost to find out where the ip you want to be at is
04:26:17 <oerjan> if it's here, you're set...
04:26:24 <elliott> ah! right
04:26:30 <elliott> OK, that makes sense now
04:26:37 <elliott> how do you go east >:)
04:27:34 <oerjan> hm assuming you're focused at the ip...
04:27:41 <oerjan> look at the up
04:28:10 <elliott> oerjan: btw i am not looking forward to figuring out how to mutate within the 128x128 area :P
04:28:20 <elliott> I think I'll have to just check every other IP
04:28:31 <elliott> I don't really want to add caches to a structure this complex
04:28:35 <elliott> erm, as in
04:28:38 <elliott> because other IPs could be there too
04:28:50 <elliott> assuming that's actually possible with yours...
04:29:14 <oerjan> ah
04:30:45 <oerjan> oh hm
04:31:12 <oerjan> i have not properly considered the actual _leaf_ nodes, where the 128x128 data would reside
04:31:34 <oerjan> well except for the PlainCursor ones, but they don't contain real cursors
04:31:46 <elliott> so we have a zipper for trees with no top or bottom? :P
04:35:59 -!- madbr has left.
04:36:10 <Gregor> elliott: ARM goes all the way up to -O3 (with -fno-toplevel-reorder)
04:36:19 <elliott> X-D
04:37:02 <oerjan> MNLeaf :: { area :: Array "whatever", signPost :: SignPost } -> MetaNode (To dir)
04:37:14 <oerjan> may be what is needed
04:37:23 <elliott> Array "whatever"
04:37:25 <elliott> good array
04:37:33 <oerjan> best array
04:37:46 <elliott> oerjan: ok so what if i actually put this into a file and tried to make it all typecheck :P
04:38:14 <oerjan> well as i said i have not kept all field names distinct between data types, so fix that :P
04:39:40 <elliott> oerjan: ok [CRACKS KNUCKLES, PUTS BASEBALL CAP ON BACKWARDS, STARTS UP EMACS, CHEWS ON GUM, DISOWNS AUTHORITY + PARENTS] time to ROCK!!!!!!
04:39:43 <elliott> i am such a serious person
04:39:54 <variable> http://thc.org/root/phun/unmaintain.html
04:39:56 <variable> either that
04:40:02 <variable> or write all your code in INTERCAL
04:40:47 <elliott> oerjan: so wait, are plain [NW][SE] ever used, or is it always within either From or To now?
04:41:41 <elliott> er
04:41:44 <elliott> [NS][EW]
04:41:48 <Gregor> elliott: I can't get IOCCC 2001 bellard to run :(
04:41:59 <elliott> Gregor: Surprising :P
04:42:11 <oerjan> i cannot recall
04:42:31 <elliott> oerjan: oh you actually got the gadt record syntax almost right
04:42:33 <elliott> oerjan: Foo { ... } :: A
04:42:50 <oerjan> ah
04:42:51 <elliott> <oerjan> PlainCursor From{NW,NE,SW,SE} is basically our old Cursor and PlainCursor {NW,NE,SW,SE} is a QuadTree, i think
04:43:02 <elliott> oerjan: does that still use plain directions or is the QuadTree case in a To?
04:43:11 <oerjan> in a To
04:43:40 <elliott> oerjan: ok. now to find your old Cursor :P
04:43:40 <oerjan> so you don't need to list all
04:43:47 <elliott> unless you recall it :P
04:44:35 <oerjan> well it should be very similar to MetaNode
04:44:50 <oerjan> MetaNode (From ...)
04:44:50 <elliott> Nov 14 03:03:10 <oerjan>data QuadCursor t = FromNorth { southChild :: t, eastChild :: t, westChild :: t, up :: QuadCursor (QuadBranch t) } | FromSouth ...
04:44:58 <elliott> oerjan: is it just that but with NW/SE etc. instead of North/South?
04:45:27 <oerjan> that first one was in error, i corrected it to NW/SE later
04:45:56 <oerjan> well not _exactly_ that, it's all gadts now :P
04:47:07 -!- calamari has quit (Quit: Leaving).
04:47:53 <oerjan> PCFromNW { neNeighbor :: PlainCursor (To NE), swNeighbor :: ..., seNeighbor :: ..., up :: PlainCursor (From dir) } -> PlainCursor (From NW)
04:48:41 <oerjan> PCLeaf :: { area :: Array "whatever" } -> PlainCursor (To dir)
04:48:46 <oerjan> something like that
04:48:50 <elliott> oerjan: i'm on to PathNode, FWIW
04:49:07 <oerjan> ok
04:49:14 <elliott> oerjan: wait, what happened to the QuadTree case?
04:49:32 <elliott> <oerjan> PlainCursor From{NW,NE,SW,SE} is basically our old Cursor and PlainCursor {NW,NE,SW,SE} is a QuadTree, i think
04:49:54 <oerjan> PCTo :: { neNeighbor :: ..., ... } -> PlainCursor (To dir)
04:50:05 <oerjan> would be that and PCLeaf
04:50:11 <elliott> "However, for GADTs there is the following additional constraint: every constructor that has a field f must have the same result type (modulo alpha conversion)"
04:50:16 <elliott> boo, I need different field names for each signpost
04:50:20 <elliott> oerjan: ah, ok
04:50:27 <oerjan> darn :(
04:51:00 <oerjan> that sounds most annoying
04:51:10 <elliott> oerjan: is PCTo just PlainCursor (To dir) for each dir?
04:51:31 <elliott> also, I need a name for (From dir)/(To dir), like dir is for all the directions. origin?
04:51:31 <oerjan> um yes
04:51:56 <elliott> oerjan: not From? ok
04:52:27 <oerjan> i gave PCFromNW above, the rest of the Froms should be like that.
04:52:32 <elliott> right
04:53:25 <elliott> oerjan: oh hm. (From foo)/(To foo) are directions
04:53:29 <elliott> it's the foos that need a name
04:53:34 <elliott> I...think?
04:53:37 <elliott> help :
04:53:38 <elliott> :(
04:53:48 <elliott> no, NW/SE/NE/SW are definitely directions, so I do need a name
04:54:11 <oerjan> heh
04:55:13 <elliott> oerjan: quick, name (From dir)/(To dir) :-(
04:56:18 <elliott> <oerjan> Direction would be a value form of the To dir, From dir things.
04:56:27 <elliott> aaaaargh, you've been calling both of them directions all this time
04:56:31 <elliott> oerjan you're awful :( but uh thanks
04:56:34 <oerjan> pretty much
04:57:09 <elliott> oerjan: come on come on gimme a name gimme a name :(
04:57:21 <oerjan> Exit
04:57:30 <elliott> ok
04:58:44 <elliott> oerjan: woo, just PathNode to go
04:59:30 <elliott> oerjan: hm MetaContext is new, right?
04:59:39 <elliott> <oerjan> MNLeaf :: { area :: Array "whatever", signPost :: SignPost } -> MetaNode (To dir)
04:59:45 <elliott> oerjan: er is this required as well as the leaf in PlainCursor?
05:01:21 <elliott> <oerjan> PN_ToNW_ToNW :: { neNeighbor :: PlainCursor (To NE) } -> { swNeighbor :: ... } -> { seNeighbor :: ... } -> PlainNode (To NW) (To NW)
05:01:21 <elliott> <oerjan> similarly for PN_To**_To**
05:01:25 <elliott> oerjan: the **s here have to be equal, right?
05:02:52 <elliott> agh
05:02:54 <elliott> <oerjan> PN_FromNW_FromNW :: { neNeighbor :: ..., swNeighbor :: ..., seNeighbor :: ... } -> PlainNode (From NW) (From NW)
05:03:02 <elliott> oerjan: and are these PlainCursor (To ...)s or PlainCursor (From ...)s?
05:03:04 <elliott> the neighbours, that is
05:03:19 <oerjan> elliott: yes, MNLeaf is for a leaf that is a virtual cursor
05:03:35 <oerjan> (which means it's a real one, if you don't have extraneous virtual ones)
05:03:39 -!- SgeoN1 has quit (Read error: Connection reset by peer).
05:03:58 -!- SgeoN1 has joined.
05:04:11 <oerjan> no, the **s don't have to be equal
05:04:48 <oerjan> they are PlainCursor (To ...)'s
05:04:51 <elliott> data PathNode src dest where
05:04:51 <elliott> PNToTo :: PlainCursorTosWithout2 a b -> PathNode (To a) (To b)
05:04:51 <elliott> PNFromFrom :: PlainCursorTosWithout2 a b -> PathNode (From a) (From b)
05:04:51 <elliott> PNFromTo :: PlainCursorTosWithout2 a b -> PlainCursor (From dir) -> PathNode (From a) (To b)
05:04:52 <elliott> there, I think
05:06:11 <oerjan> note that PNFromTo should have a /~ b
05:06:40 <elliott> oerjan: ... you realise expressing that constraint is a pain :P
05:06:49 <elliott> thankfully possible since we only have four directions...
05:07:01 <oerjan> yeah, you may consider it optional
05:07:27 <elliott> oerjan: hm would it be more convenient as a class constraint on the constructor, or as an actual type
05:07:34 <elliott> where the latter is a GADT
05:07:38 <elliott> with the obvious constructors
05:07:52 <elliott> (i'm thinking, for the operations on these)
05:10:12 <elliott> oerjan: ooh, convenient, all the "...s without dir" use (To dir) as the type argument >:)
05:10:25 <elliott> oerjan: ...i feel really bad about wanting to exploit this, but it's sort of integral to the nature of a neighbour right?! reassure me
05:15:44 <elliott> oerjan: um ok i need guidance
05:15:52 <elliott> oerjan: it would be really bad to save on constructors by having
05:15:56 <oerjan> hm?
05:16:02 <elliott> Foo :: NeighboursWithout2 t a b -> NeighbousrWithout2 t b a
05:16:03 <elliott> right? :p
05:16:09 <elliott> usage-wise
05:17:11 <elliott> oerjan: right?? :'(
05:17:21 <elliott> i already have
05:17:22 <elliott> Neighbours2Same :: Neighbours1 t dir -> Neighbours2 t dir dir
05:17:23 <elliott> :p
05:18:04 <oerjan> i think my brain is a bout fried for today
05:20:01 -!- oerjan has quit (Quit: Good night).
05:20:13 <elliott> psht!
05:21:38 -!- copumpkin has joined.
05:24:43 <Gregor> $ wc -c jitchards.c
05:24:43 <Gregor> 1984 jitchards.c
05:25:18 <elliott> Best filesize.
05:28:37 -!- nys has quit (Quit: night).
05:39:50 <shachaf> elliott: Did you ever answer my question about cookies?
05:39:58 <elliott> Which question?
05:40:00 <elliott> Oh, that lambdabot one?
05:40:08 <elliott> They're certainly not UK-cookies.
05:40:26 <shachaf> Do they exist in the UK?
05:41:13 <elliott> I've never come across one? I don't know that they don't, though.
05:41:20 <elliott> "Fortune cookies, while largely an American item, are occasionally seen in other countries, most often at Chinese restaurants. Fortune cookies have been distributed in Canada, the United Kingdom, Australia, New Zealand, India, Brazil, Mexico, France, The Netherlands and Germany."
05:41:39 <monqy> fortune cookies are weird
05:41:46 <monqy> I don't like them
05:42:07 <elliott> monqy: theyre ghosts (boo)
05:42:18 <monqy> :o
05:43:08 <elliott> Gregor: BTW, if all goes horribly wrong you might get an actual UMLBox user soon.
05:43:19 <elliott> Gregor: I've suggested it to the tup developer to solve a certain problem and he thinks it looks promising :P
05:51:58 <elliott> Hey shachaf! I'm going to make you look in the other direction again.
05:51:59 <elliott> *PSeq> :t pfoldr
05:52:00 <elliott> pfoldr
05:52:00 <elliott> :: (forall a b c. path a b -> result b c -> result a c)
05:52:00 <elliott> -> (forall a. result a a)
05:52:00 <elliott> -> PSeq path src dest
05:52:00 <elliott> -> result src dest
05:52:05 <elliott> Brought to you by the Power of unsafeCoerce(tm).
05:52:30 <shachaf> elliott: Beeping me in IRC has approximately the opposite effect, as you are well aware.
05:52:46 * shachaf is now blind.
05:52:47 <elliott> Yes, but it lets you know so that you can look away more /intentionally/.
05:53:08 <elliott> *PSeq> :t pfoldr (<|) empty
05:53:08 <elliott> pfoldr (<|) empty :: PSeq path src dest -> PSeq path src dest
05:53:08 <elliott> Wow, it actually works.
05:53:09 * shachaf doesn't know the context of elliott's type.
05:53:30 <elliott> Hmm, why don't Seqs have pfoldfromtheend?
05:53:35 <elliott> Er, without the p.
05:53:45 <shachaf> elliott: However, using type variable names longer than a single character is very unHaskelly of you.
05:54:35 <elliott> shachaf: Yeah, I got tired of it being unreadable. :-(
05:54:51 <elliott> data PViewL path src dest where
05:54:51 <elliott> PEmptyL :: PViewL path a a
05:54:51 <elliott> (:<) :: path src mid -> PSeq path mid dest -> PViewL path src dest
05:54:51 <elliott> It's pretty much sacrilege.
05:55:11 * shachaf wonders what elliott is doing but doesn't want to read backlog.
05:55:23 <shachaf> haskellworldproblems, eh?
05:55:43 <elliott> shachaf: (PSeq path src dest) is basically (path src a, path a b, path b c, path c d, path d dest).
05:55:49 <elliott> shachaf: Except an arbitrary number of those, obviously.
05:55:56 <elliott> And it's a Seq, so fast access from the end too.
05:56:22 <elliott> shachaf: It's used in oerjan's fancy n-cursor quadtree zipper construction.
06:07:11 <elliott> shachaf: ENJOY: http://hpaste.org/54095
06:07:21 <elliott> "is this correct?" -- yes it is, I'm an idiot.
06:11:28 <DCliche> there are two esolangs on the wiki named 'clue' but neither has to do with Clue/Cluedo
06:11:50 <DCliche> one should be made, where all legal syntax is of the form 'X, in the Y, with the Z'
06:12:15 <monqy> would it do anything interesting
06:12:45 <monqy> oh man what if it was an really verbosse brianfuck derivative
06:12:57 <monqy> equivalent
06:13:23 <shachaf> monqy: :-(
06:13:26 <monqy> thing in the thing with the thing -> a brainfuck comand,. depending on what the things are....
06:13:38 <shachaf> elliott: Look at what DCliche and monqy is doing.
06:13:40 <shachaf> s/is/are/
06:13:48 <elliott> shachaf: monqy is On Our Side, don't you worry.
06:13:53 <elliott> He is a True Patriot.
06:13:56 * shachaf isn't sure what Our Side is.
06:14:01 <monqy> true patriots side
06:14:07 * shachaf is not a true esolanger.
06:14:10 <elliott> Well, we don't like brainfuck derivatives much, I would suppose.
06:14:17 <DCliche> I was imagining one or more of them could be variables
06:14:25 <shachaf> The most esoteric language I know is, like, Haskell, man.
06:14:29 <DCliche> perhaps being vaguely similar to SPL
06:14:38 <monqy> is haskell esoteric.........
06:14:42 <shachaf> Fine, C++.
06:15:42 <shachaf> monqy: (I didn't say it was, anyway.)
06:15:51 <elliott> @tell Phantom__Hoover Check your lambdabot mail as Phantom_Hoover.
06:15:52 <lambdabot> Consider it noted.
06:15:55 <elliott> @tell Phantom_Hoover Say the following to lambdabot, please:
06:15:55 <lambdabot> Consider it noted.
06:16:28 <monqy> what does it take to know c++? (I may or may not know c++.)
06:16:30 <elliott> @tell Phantom_Hoover @tell elliott Hey, you should try and coerce the GHC API into doing that hole-checking thing sometime. By sometime, I mean now; past you gets to decide exactly when you do things, those are the rules.
06:16:30 <lambdabot> Consider it noted.
06:16:42 <elliott> Behold my @tell-myself-without-getting-lambdabot-to-bug-me-immediately-after mechanism.
06:17:13 <monqy> phantom_hoover best mechanism
06:17:27 <monqy> phantom "best mechanism" hoover
06:17:39 <elliott> Phecanism.
06:18:01 <shachaf> elliott: I doubt you're going to do it as soon as you get that message.
06:18:06 <shachaf> So you might as well not have done it at all.
06:18:22 <elliott> shachaf: The idea is mostly so that I don't forget about it.
06:18:31 <shachaf> @tell elliott Hey, you should try and coerce the GHC API into doing that hole-checking thing sometime. By sometime, I mean now; past you gets to decide exactly when you do things, those are the rules.
06:18:31 <lambdabot> Consider it noted.
06:18:37 <elliott> No.
06:18:38 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
06:18:42 <elliott> See what you did?
06:19:23 <shachaf> @tell elliott Hey, you should try and coerce the GHC API into doing that hole-checking thing sometime. By sometime, I mean now; past you gets to decide exactly when you do things, those are the rules.
06:19:23 <lambdabot> Consider it noted.
06:19:30 * shachaf decides to stop.
06:19:32 <elliott> @tell shachaf u mad
06:19:32 <lambdabot> Consider it noted.
06:19:33 <elliott> @tell shachaf u mad
06:19:33 <elliott> @tell shachaf u mad
06:19:33 <elliott> @tell shachaf u mad
06:19:33 <lambdabot> Consider it noted.
06:19:33 <elliott> @tell shachaf u mad
06:19:33 <lambdabot> Consider it noted.
06:19:33 <elliott> @tell shachaf u mad
06:19:34 <lambdabot> Consider it noted.
06:19:34 <lambdabot> Consider it noted.
06:19:34 <lambdabot> Consider it noted.
06:19:38 <elliott> ENJOY, FRIEND
06:19:38 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
06:19:42 <elliott> NOOOOOOOOOO
06:19:44 <elliott> @messagse
06:19:47 <elliott> @messages
06:19:48 <lambdabot> Maybe you meant: messages messages?
06:19:52 <lambdabot> shachaf said 24s ago: Hey, you should try and coerce the GHC API into doing that hole-checking thing sometime. By sometime, I mean now; past you gets to decide exactly when you do things, those are
06:19:52 <monqy> @messages
06:19:54 <lambdabot> the rules.
06:19:56 <lambdabot> You don't have any new messages.
06:20:04 <shachaf> Fine, fine I get it.
06:20:05 <monqy> the rules.
06:20:22 <shachaf> @remember monqy the rules.
06:20:32 <elliott> @remember monqy the rules.
06:20:32 <lambdabot> I will remember.
06:20:43 <shachaf> @forget monqy the rules.
06:20:44 <lambdabot> Done.
06:20:45 <shachaf> @quote monqy
06:20:45 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
06:20:47 <shachaf> @quote monqy
06:20:47 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
06:20:51 <shachaf> @quote ehird
06:20:51 <lambdabot> ehird says: 2009: The Year of the Combinatorial Explosion of Haskell Web Frameworks. Also, the Linux Desktop.
06:20:53 <elliott> @remember monqy the rules.
06:20:53 <lambdabot> It is forever etched in my memory.
06:21:04 <elliott> @quote ehird
06:21:05 <lambdabot> ehird says: 2009: The Year of the Combinatorial Explosion of Haskell Web Frameworks. Also, the Linux Desktop.
06:21:09 <elliott> @quote elliott
06:21:09 <lambdabot> elliott says: Only two things in the universe are certain: Death, and two of the libraries you've decided to use taking different types of ByteString.
06:21:12 <elliott> @quote elliott
06:21:13 <lambdabot> elliott says: i'm here to prove theorems and compile code and I'm all out of code
06:21:15 <elliott> @quote elliott
06:21:15 <lambdabot> elliott says: I have weird mental spheres that I divide all my coding into and that determine editor and the like
06:21:21 <elliott> What?
06:21:23 <elliott> @quote elliott
06:21:23 <lambdabot> elliott says: Top universities now employ people to watch infomercials all day to find the latest mysteries.
06:21:26 <elliott> @quote elliott
06:21:27 <lambdabot> elliott says: Only two things in the universe are certain: Death, and two of the libraries you've decided to use taking different types of ByteString.
06:21:32 <elliott> I have a lot of quotes.
06:21:38 <monqy> @quote monqy
06:21:39 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
06:21:47 <DCliche> @quote Darth_Cliche
06:21:47 <lambdabot> No quotes match.
06:21:49 <elliott> @remember monqy the rules.
06:21:49 <lambdabot> It is forever etched in my memory.
06:21:53 <elliott> shachaf is a bad man.
06:21:55 <DCliche> @quote DCliche
06:21:56 <lambdabot> No quotes match. Maybe if you used more than just two fingers...
06:22:09 <monqy> @quote monqy
06:22:10 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
06:22:14 <monqy> the rules...
06:22:36 <elliott> @remember monqy the rules.
06:22:36 <lambdabot> I will remember.
06:22:37 <elliott> @quote monqy
06:22:37 <lambdabot> monqy says: the rules.
06:22:48 <monqy> the rules.
06:22:50 <elliott> @tell Phantom_Hoover Remind me to "@remember monqy the rules." because shachaf is a bad person.
06:22:50 <lambdabot> Consider it noted.
06:22:57 <shachaf> :-(
06:22:58 <DCliche> @remember elliott @remember @remember @remember
06:22:59 <lambdabot> I will never forget.
06:23:00 <DCliche> @remember elliott @remember @remember @remember
06:23:00 <lambdabot> I will remember.
06:23:01 <DCliche> @remember elliott @remember @remember @remember
06:23:01 <lambdabot> Good to know.
06:23:02 <DCliche> @remember elliott @remember @remember @remember
06:23:02 <lambdabot> Okay.
06:23:05 <monqy> okay
06:23:05 <DCliche> @quote elliott
06:23:05 <elliott> That...
06:23:06 <lambdabot> elliott says: @remember @remember @remember
06:23:08 <elliott> No.
06:23:12 <elliott> @forget elliott @remember @remember @remember
06:23:12 <lambdabot> Done.
06:23:23 <shachaf> /nick Phantom_Hoover; /msg lambdabot @messages
06:23:28 <DCliche> elliott: Well, you keep spamming @remember
06:23:35 <shachaf> @forget elliott @remember @remember @remember
06:23:36 <lambdabot> Done.
06:23:37 <shachaf> @forget elliott @remember @remember @remember
06:23:37 <lambdabot> Done.
06:23:38 <shachaf> @forget elliott @remember @remember @remember
06:23:38 <elliott> DCliche: shachaf keeps spamming @forget. In PRIVATE.
06:23:39 <lambdabot> Done.
06:23:47 <shachaf> elliott: That ain't spamming!
06:23:50 <DCliche> elliott: Not as annoying as publically ;p
06:24:03 <elliott> @forget DCliche
06:24:03 <lambdabot> Incorrect arguments to quote
06:24:07 <elliott> @forget DCliche forever
06:24:07 <lambdabot> No match.
06:24:27 <DCliche> @quote shachaf
06:24:27 <lambdabot> shachaf says: We used to have a big collection of them but most of them got wiped in the Great Lambdabot Wipe of Every Few Months.
06:24:33 <DCliche> @quote elliott
06:24:34 <lambdabot> elliott says: Top universities now employ people to watch infomercials all day to find the latest mysteries.
06:25:31 <monqy> @quote monqy
06:25:31 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
06:25:44 <elliott> shachaf you are scum.
06:25:47 <elliott> AND I AM LEAVING.
06:25:51 -!- elliott has quit (Quit: Leaving).
06:26:01 <shachaf> Aw, and I was about to start singing.
06:26:14 <monqy> scum songs
06:26:22 -!- elliott has joined.
06:26:26 <monqy> hi
06:26:30 <shachaf> monqy and the rules. monqy and the rules. It's monqy, it's monqy and the rules rules rules rules...
06:26:40 <elliott> NOTE TO SELF:
06:26:41 <elliott> newtype SupplyT s m a = SupplyT { unSupplyT :: (forall r. (s -> SupplyT s m r) -> SupplyT s m r) -> m a }
06:26:45 -!- elliott has quit (Client Quit).
06:26:48 <monqy> bye
06:27:01 <shachaf> @tell elliott newtype SupplyT s m a = SupplyT { unSupplyT :: (forall r. (s -> SupplyT s m r) -> SupplyT s m r) -> m a }
06:27:04 <lambdabot> Consider it noted.
06:27:17 <DCliche> @quote elliott
06:27:22 <lambdabot> elliott says: @remember @remember @remember
06:27:39 <monqy> remember remember remember: never forget
06:27:56 <shachaf> @forget elliott @remember @remember @remember
06:27:56 <lambdabot> Done.
06:28:00 <monqy> rip
06:28:04 <monqy> @quote elliott
06:28:04 <lambdabot> elliott says: I have weird mental spheres that I divide all my coding into and that determine editor and the like
06:28:14 <monqy> how is that a quote...
06:28:33 <DCliche> @quote DCliche
06:28:34 <lambdabot> DCliche says: @remember elliott @remember @remember @remember
06:28:41 <monqy> good quote
06:29:40 <Patashu> @quote Patashu
06:29:41 <lambdabot> No quotes match. This mission is too important for me to allow you to jeopardize it.
06:29:47 <Patashu> rofl
06:30:25 <shachaf> DCliche: How many times did you @remember that?
06:30:32 <DCliche> @remember what
06:30:32 <lambdabot> Incorrect arguments to quote
06:30:49 <shachaf> DCliche: elliott @remember @remember @remember
06:31:15 <DCliche> I'll be back in half an hour or so, I need to count
06:35:53 <DCliche> 46 apparently, not as many as I expected
06:36:19 <DCliche> @quote lambdabot
06:36:19 <lambdabot> lambdabot says: Done.
06:36:22 <DCliche> @quote lambdabot
06:36:23 <lambdabot> lambdabot says: why on the earth whould I slap dons with a wet trout
06:42:22 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:47:55 <pikhq> https://upload.wikimedia.org/wikipedia/commons/2/23/Xiaoerjing-Ekzemplafrazo.svg Anyone care to guess the language? (note: I can just about guarantee you'll get it wrong)
06:56:52 <shachaf> pikhq: The filename is a bit of a hint.
06:56:57 <pikhq> shachaf: Is it?
06:57:31 <pikhq> Well. I suppose it is.
06:58:05 <shachaf> I guessed that "Xiaoerjing" was vaguely Chinese-related before looking it up.
06:58:16 <pikhq> Still, WTF.
06:58:47 <shachaf> ?
06:59:11 <pikhq> That's fucking Mandarin, the fuck.
07:07:57 <copumpkin> western china?
07:20:12 -!- GreaseMonkey has quit (Quit: The Other Game).
07:42:27 <fizzie> I would have guessed that "Xiaoerjing" would be vaguely oerjan-related.
07:43:48 -!- Zuu has quit (Read error: Connection reset by peer).
07:45:59 -!- SgeoN1 has quit (Ping timeout: 240 seconds).
07:48:51 -!- Zuu has joined.
08:21:03 -!- CakeProphet has joined.
08:21:03 -!- CakeProphet has quit (Changing host).
08:21:03 -!- CakeProphet has joined.
08:32:04 <CakeProphet> fungot
08:32:06 <fungot> CakeProphet: madam president, may i offer my congratulations on his excellent report inviting us to reflect a vision of the future constitutional treaty. yet again we are suffering from this. allow me to intervene in this region where there is overcapacity, fishermen who can no longer stand by while saddam hussein keeps playing these games. last month the commission presented its legislative proposals for the 18 council regulat
08:33:37 <CakeProphet> ^style
08:33:37 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
08:33:55 <CakeProphet> ^style speeches
08:33:56 <fungot> Selected style: speeches (misc. speeches from Project Gutenberg)
08:33:57 <CakeProphet> fungot: hi
08:34:04 <CakeProphet> fungot: why do you not love me? :(
08:34:10 -!- CakeProphet has changed nick to ElliotDrone1.
08:34:14 <ElliotDrone1> fungot: hi
08:34:15 <fungot> ElliotDrone1: mr. chairman and fnord am very glad to be able to violate the ordinary rules of composition as well as society has its pleasures; as from the city.
08:34:18 -!- ElliotDrone1 has changed nick to CakeProphet.
08:42:31 <CakeProphet> fungot: oh?
08:42:32 <fungot> CakeProphet: if i had written it all out the day before the furnace, so a fancy may be said that a man who had neglected his studies were fnord by the restless bed of fnord and i recollect that the most audacious libels on royal majesty have passed without notice; that the most audacious libels on royal majesty have passed without notice; that the most intense terrors."
09:17:53 -!- monqy has quit (Quit: hello).
10:04:00 -!- hagb4rd has joined.
10:42:30 -!- copumpkin has quit (Ping timeout: 248 seconds).
10:42:55 -!- copumpkin has joined.
11:05:21 -!- derdon has joined.
11:43:08 -!- aloril has quit (Ping timeout: 240 seconds).
11:56:31 -!- aloril has joined.
12:21:30 -!- augur has quit (*.net *.split).
12:21:31 -!- twice11 has quit (*.net *.split).
12:21:31 -!- yorick has quit (*.net *.split).
12:21:57 -!- augur has joined.
12:24:06 -!- twice11 has joined.
12:24:43 -!- yorick has joined.
12:55:52 -!- boily has joined.
13:04:05 -!- pikhq_ has joined.
13:04:24 -!- pikhq has quit (Ping timeout: 258 seconds).
13:25:32 -!- Patashu has quit (Ping timeout: 240 seconds).
13:35:26 -!- Phantom_Hoover has joined.
13:37:59 -!- copumpkin has quit (Ping timeout: 248 seconds).
13:38:23 -!- copumpkin has joined.
13:44:22 -!- MSleep has quit (*.net *.split).
13:44:22 -!- Zwaarddijk has quit (*.net *.split).
13:48:30 -!- MSleep has joined.
13:48:30 -!- Zwaarddijk has joined.
14:04:40 -!- copumpkin has quit (Ping timeout: 252 seconds).
14:05:04 -!- copumpkin has joined.
14:29:02 -!- Zwaarddi1k has joined.
14:33:47 -!- MSleep has quit (*.net *.split).
14:33:47 -!- Zwaarddijk has quit (*.net *.split).
14:52:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:08:27 <tswett> fungot: is it okay if I pretend to have a conversation with you?
15:08:29 <fungot> tswett: there is one honest and industrious neighbours rather than among rioters and vagabonds. this matter is as much a theory of government in opposition to their prayer. when the question is not, i am fnord. fnord patron ( rousseau) et fnord fnord quod fnord urbi.
15:08:49 <tswett> Uh...
15:08:50 <tswett> ^style
15:08:50 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa sms speeches* ss wp youtube
15:08:56 <tswett> Is that so.
15:09:03 <tswett> ^style ss
15:09:04 <fungot> Selected style: ss (Shakespeare's writings)
15:09:12 <tswett> Mm, no.
15:09:21 <tswett> ^style homestuck
15:09:21 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
15:09:29 <tswett> fungot: no spoilers, please.
15:09:30 <fungot> tswett: the only sad part is how easy it's going to be a long day. though it is pretty conceivable that i will remain an impeccable leader for a span. he is the first and they get progressively more difficult to reach a very high rolls he was lucky. my lusus sucks, what a terrible idea. leave me alone.
15:09:41 -!- derrik has joined.
15:10:01 <tswett> fungot: oh, come on. You're a terrible leader and you deserve to have such a sucky lusus.
15:10:01 <fungot> tswett: john, try to stop me i dare you. published by major developers, was given a name! you've been eating it all day. and it might help you take a picture of a fella all worked! you love your scribblepad.
15:10:54 <tswett> fungot: I guess I will, then. Even my scribblepad easily matches you... what kind of lame weapon do you have allocated, anyway?
15:10:55 <fungot> tswett: this is it, like an apple or that it is your backup hat. problem solved, you guess. at the last minute she flung through skaian defense. what a royal mess of his lovely new horseleather bib. it just so happens that today, the 13th of april. another day of uneventful but highly satisfying
15:11:01 <Phantom_Hoover> fizzie, how does it feel to be a major developer?
15:11:02 <lambdabot> Phantom_Hoover: You have 4 new messages. '/msg lambdabot @messages' to read them.
15:11:23 <tswett> An apple. Yes, I can surely defeat someone armed with only an apple.
15:12:08 <Phantom_Hoover> What if they're armed with that sword alone?
15:15:49 <tswett> What sword?
15:17:32 -!- copumpkin has joined.
15:33:27 <Phantom_Hoover> tswett, that sword alone!
15:33:36 <Phantom_Hoover> It can't stop, you know.
15:34:21 <tswett> I'm afraid I'm not familiar with the sword you speak of.
15:53:49 -!- MDude has joined.
15:56:46 <Gregor> HEY GUYYYYYYS best VAX simulator?
16:06:38 -!- sebbu2 has joined.
16:08:49 -!- sebbu has quit (Ping timeout: 276 seconds).
16:17:59 -!- elliott has joined.
16:21:03 <elliott> 08:34:10: -!- CakeProphet is now known as ElliotDrone1.
16:21:04 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:21:04 <elliott> CakeProphet: die
16:28:39 <elliott> 15:56:46: <Gregor> HEY GUYYYYYYS best VAX simulator?
16:28:41 <elliott> Gregor: Dyson?
16:28:49 <elliott> Good ol' Phantom_Hoover here?
16:28:57 <elliott> Gregor: MORE SERIOUSLY, probably SIMH?
16:29:01 <elliott> Top on Google.
16:29:06 <elliott> Also it does PDPs.
16:29:35 <Phantom_Hoover> You can tell it's good because it's unpronounceable.
16:29:48 <Phantom_Hoover> Wait, my name has an mh in it...
16:32:09 <Phantom_Hoover> (I tried to change my name to Ford_Prefect here, and then to Ix, but they're both in use.)
16:37:14 <Phantom_Hoover> "Note that the K combinator is operationally similar to \x y . x" — Haskell wiki.
16:37:18 <Phantom_Hoover> Similar?
16:38:17 <elliott> Phantom_Hoover: SKI calculus isn't defined in terms of the lambda-calculus.
16:38:33 <Phantom_Hoover> Sure, but operationally they're identical.
16:39:09 <elliott> Well, yes.
16:39:20 <elliott> Phantom_Hoover: But you have to define a system with both of 'em to say things like that.
16:39:29 <elliott> Otherwise it's not clear what "identically" means at all.
16:40:45 <Phantom_Hoover> Oh god, I nearly used a hyphen rather than a diaeresis.
16:40:54 <elliott> You almost weren't terrible.
16:41:14 <Phantom_Hoover> I WILL TAKE MY DIAERESES TO THE GRAVE
16:42:07 <elliott> Diaeresae.
16:42:12 <Phantom_Hoover> Sorry, Ï WÏLL TÄKË MŸ DÏÄËRËSËS TÖ THË GRÄVË
16:43:13 <elliott> Phantom_Hoover: Ah.
16:44:41 <Deewiant> s/W/Ẅ/g;s/H/Ḧ/g
16:45:12 <Phantom_Hoover> I was going to try them on all the consonants, but I couldn't be bothered.
16:46:36 <elliott> Deewiant: Hey WISE GUY, I've got a TEAM OF PHDS working on my N-CURSOR ZIPPER SPARSE DISCERETE INFINITE LAHEY-SPACE INTERFACE
16:46:39 <elliott> SO HA HA HA
16:47:19 <Deewiant> Hope it works out for you
16:47:49 <elliott> Deewiant: I'VE USED ABOUT SEVEN GADTS AND UNSAFECOERCE, IT FUCKING BETTER
16:54:33 <Gregor> elliott: YeahOK, SIMH seems like the way. Unfortunately PDP's will never be supported, I need too much memory :P
16:54:39 <elliott> lol
16:54:54 <elliott> Gregor: So, three kilobytes?
16:55:46 <Gregor> I haven't measured, actually :P
16:55:50 <Gregor> But probably ~10M
17:00:01 <Gregor> elliott: Anyway, I feel VAX would be a nice topper for my JIT :P
17:00:42 <elliott> Gregor: I can't help but feel you'd do better if your language was less boring :P
17:00:52 <Gregor> That's a point ...
17:00:55 <Gregor> What shall I add?
17:01:17 <elliott> I'd think more along the lines of "change" than "add", but that's probably way too much work at this point :P
17:01:30 <elliott> But a lot of the winning IOCCC entries do something fairly impressive even apart from their code.
17:01:35 <elliott> You still deserve to win though :P
17:01:56 <Gregor> I think the "fairly impressive" part is that it JITS EVERYWHERE :P
17:02:13 <elliott> Well, yeah, but you can't tell that just from running it, and it's no flight sim :P
17:02:26 <elliott> BTW you should integrate this technology into Fythe! :p
17:02:34 <Gregor> lol
17:05:56 -!- quintopia has quit (Ping timeout: 260 seconds).
17:15:54 -!- quintopia has joined.
17:15:54 -!- quintopia has quit (Changing host).
17:15:54 -!- quintopia has joined.
17:19:28 -!- monqy has joined.
17:21:50 <elliott> hi monqy
17:24:11 -!- Zuu has quit (Ping timeout: 244 seconds).
17:29:28 -!- augur has quit (Remote host closed the connection).
17:33:28 <elliott> Deewiant: BEHOLD YOUR DEFEATER: http://sprunge.us/MfXU
17:34:21 <Deewiant> It has been beheld
17:35:09 <elliott> Deewiant: There is noooo way you properly beheld that in the time it took you, did you even NOTICE the unsafeCoerce?
17:35:12 <elliott> The rank-2 fold??
17:35:27 <Deewiant> I missed the unsafeCoerces, noticed the fold though
17:37:38 <monqy> hi
17:38:30 <elliott> hi monqy you behold too http://sprunge.us/MfXU
17:38:47 <elliott> Deewiant: Also this is only a quadtree, it's going to require something even more ridiculously involved for something decent :-/
17:39:00 <elliott> Plus the fact that I don't actually have the algorithms to move the cursors about yet
17:39:01 <Deewiant> May I recommend a bucket PR-CIF k-d tree
17:39:39 <elliott> Deewiant: Maybe
17:39:51 <elliott> Deewiant: I'd rather not use something that wants a dynamic array, at least
17:40:05 <elliott> Also I'll have to use something slightly different from anything you say to establish my superior thinking
17:40:17 <elliott> Actually hmm
17:40:25 <elliott> Deewiant: You use a dynamic array just so you can load the whole file into one, don't you
17:40:27 <elliott> That's sneaky
17:40:29 <elliott> Sneaky and deceitful
17:41:17 <Deewiant> I can't do that since the file isn't rectangular
17:41:28 <elliott> Deewiant: I don't mean directly
17:41:38 <elliott> Deewiant: I just mean, you do it so that you don't have to deal with cross-array boundaries during file loading
17:41:39 <Deewiant> Then yes
17:41:46 <elliott> Sneaky, and wrong
17:42:10 <Deewiant> Well, in a sense I have to deal with them, if there're arrays already there
17:42:41 <elliott> Deewiant: Well, yes, but it still speeds up your initial load
17:43:04 <elliott> I guess I'll have to resolve myself to being slower on Mycology and faster on Fungicide
17:43:08 <elliott> s/resolve/resign/
17:43:15 <Deewiant> Compared to something like a hash table, it should, yes
17:43:57 <elliott> Deewiant: Compared to the structure you have but with fixed-size arrays :P
17:44:58 <Deewiant> Compared to that too, it should, yes
17:45:12 <Deewiant> The whole point was to not use fixed-size arrays :-P
17:45:33 <Deewiant> Until it turned out that not having the compiler optimize x*C into a shift-and-add was a bottleneck
17:46:56 <elliott> Deewiant: I don't see how dynamic arrays really help much, if you have a fancy k-d tree
17:47:03 <elliott> Or other sufficiently smart space :P
17:47:10 <elliott> Certainly the indexing is a lot more trivial
17:47:54 <Deewiant> Maybe they don't, it was more of a matter of principle
17:48:08 <elliott> lol
17:48:43 <elliott> Deewiant: Thankfully I think this n-cursor setup doesn't actually really have that much overhead over mutation, so ha
17:49:25 <elliott> (It basically cuts off the tree at each point where a cursor is, zips those at the cursor, and then arranges the whole thing into a zipper)
17:49:27 <elliott> (Sort of)
17:49:31 <Deewiant> Point being to one-up cfunge's "lol here's a int[1024*256], turns out it's fast to do stuff in that" with "I have no constants in my funge-space implementation and it's faster than yours"; unfortunately that didn't quite work (see x*C optimization)
17:49:51 <elliott> Heh
17:50:14 <elliott> Deewiant: You're still slower on Mycology, right :-)
17:50:17 <Deewiant> (And there were and still are other, different constants)
17:50:22 <Deewiant> elliott: AFAIK I'm faster on everything
17:50:43 <Deewiant> On full Mycology, I might be somewhat slower only due to executing more fingerprint tests
17:50:45 <elliott> How the heck do you beat it on Mycology; just your ridiculous fingerprint and stack microoptimisations?
17:50:54 <elliott> It's not like your fungespace will help any :P
17:51:17 <Deewiant> My fungespace is effectively the same and other than that, maybe those play a part, dunno :-P
17:54:33 <Deewiant> Actually, I think I'm still slower on fungot's underload interpreter; can't remember for sure
17:54:33 <fungot> Deewiant: that is a winner's attitude, and there is no particularly good human translation for this concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear c
17:55:08 <elliott> :D
17:56:37 <elliott> Deewiant: What you need to do is implement UNDL
17:56:47 <elliott> For AUA (Advanced Underload Acceleration(tm))
17:59:37 <elliott> Deewiant: I... why am I actually considering implementing that
17:59:55 -!- augur has joined.
18:01:15 <Deewiant> Couldn't say
18:16:15 <elliott> "Here is a PoC for four new buffer overflows in GIMP. Compile it
18:16:15 <elliott> with open-cobol."
18:16:20 <elliott> Now that's what I like to hear.
18:17:03 <elliott> Hmph, it's not proper COBOL.
18:17:07 <elliott> It's just a glorified cat.
18:17:10 <elliott> Without the loop.
18:31:27 <Gregor> elliott: cat repl.jch hello.jch gorepl.jch | ./jitchards
18:31:31 <Gregor> Hello, world!
18:31:37 <elliott> Gregor: Wow :P
18:31:45 <elliott> Gregor: It's... not a repl without a prompt, y'know :P
18:31:47 <elliott> Also, what's gorepl.
18:32:08 <Gregor> elliott: 1) It has a prompt, I'm just suppressing it by catting shit in, 2) gorepl says "now run the function you loaded as main"
18:32:21 <elliott> Gregor: Wait, it /detects whether stdin is a tty/?
18:32:27 <Gregor> No
18:32:35 <Gregor> You'd have to cat repl.jch - | ./jitchards normally
18:32:41 <elliott> How does it suppress the prompt then :P
18:32:56 <Gregor> Oh, you mean it would show a 'put ur code here lol> ' thing
18:33:01 <Gregor> Well that's boring and stupid.
18:33:09 <elliott> Gregor: Don't call it a REPL then :P
18:33:17 <Gregor> FINE, I'LL ADD A PROMPT
18:33:22 <Gregor> !bf_txtgen >
18:33:27 <EgoBot> ​34 ++++++++++[>++++++>+>><<<<-]>++.>. [55]
18:33:30 <elliott> Gregor: You might also want to add the "read" and "loop" part so you don't have to cat - :-)
18:33:42 <elliott> I GUESS you can forego a tape debug output?
18:33:49 <Gregor> The whole system only reads from stdin, and it does loop X_X
18:33:58 <elliott> Gregor: Don't use bf_txtgen for single chars
18:34:09 <elliott> http://esolangs.org/wiki/Brainfuck_constants
18:34:12 <elliott> > ord '>'
18:34:13 <lambdabot> 62
18:34:14 <Gregor> elliott: It's two chars
18:34:21 <elliott> ++++[>+<++++]>-
18:34:30 <Gregor> elliott: It's two chars
18:34:32 <elliott> > ord ' '
18:34:34 <lambdabot> 32
18:34:40 <elliott> ++++[>+<++++]>-.[-]++++[>++++++++<-]>.
18:34:44 <elliott> ...OK, I guess bf_txtgen wins this time :P
18:34:46 <Gregor> Congrats, it's longer.
18:35:05 <Gregor> HEYWAIT
18:35:14 <Gregor> REPL = Read Eval Print Loop THERE IS NO "PROMPT" HERE
18:35:35 <quintopia> what
18:35:35 <elliott> No, there isn't, but every REPL in the history of ever has had a prompt.
18:35:38 <quintopia> yes
18:35:38 <Gregor> My repl is 100% REPL satisfaction except for the P :P
18:35:48 <quintopia> REPL should print a prompt
18:35:52 <quintopia> its userfriendly
18:35:54 <Gregor> Oy vey
18:36:02 <elliott> Gregor: R, E, P, L are necessary but not sufficient conditions :P
18:40:39 <Gregor> ... lol bf_txtgen ignored my space and put a newline :P
18:47:29 <elliott> Gregor: I bet EgoBot is the one ignoring the space :P
18:47:41 <Gregor> Probably
18:59:54 <elliott> 04:25:05: <oerjan> data MetaContext = MetaContext { nwNeighbor :: MetaCursor (To NW), ..., up :: MetaCursor dir, signPost :: SignPost } -- it occurs to me that some field name disambiguation will be needed
19:00:00 <elliott> well this is going to need oerjisambiguation >:(
19:00:33 <Gregor> elliott: lullll my circularity changes broke SPARC somehow :P
19:00:41 <elliott> lol
19:00:49 <elliott> Gregor: Did you ever get it working on Itanium
19:00:57 <Gregor> elliott: I don't have a working simulator.
19:01:05 <elliott> Gregor: MMIX?
19:01:17 <Gregor> elliott: Now there's a nice'n 8-D
19:01:34 <elliott> Gregor: Test with jsmmix :P
19:01:34 <Gregor> elliott: Except I have no stdlib, so can't really test >_>
19:01:49 <elliott> Gregor: More seriously, Alpha?
19:02:12 <Gregor> elliott: IIRC the only reason I haven't tried Alpha is that I was too lazy to build a cross compiler.
19:02:19 <elliott> X-D
19:07:33 <elliott> Argh, I forgot how awful GHC's API is.
19:12:20 <Gregor> elliott: Fixed SPARC.
19:12:26 <elliott> Woot
19:13:50 <Gregor> The problem was very stupid, it was variable shadowing :P
19:14:00 <Gregor> I didn't think it was so sensitive to this kind of change X-D
19:15:01 <Gregor> | | Target Architecture (alpha) ---> | |
19:15:05 <Gregor> | | Bitness: (32-bit) ---> | |
19:15:08 <Gregor> Uhhh, crosstool-ng?
19:15:12 <Gregor> alpha ain't gonna be 32-bit
19:21:19 <elliott> Deewiant: So does mushspace do k-d things or is it just capable of doing so without API changes in the future
19:21:33 <Deewiant> It should be capable
19:21:41 <Deewiant> mushspace == CCBI
19:22:22 <elliott> Deewiant: Right, just checking that it won't speed things up massively in the short term before Shiro takes the lead :P
19:36:11 -!- ais523 has joined.
19:36:48 <elliott> hi ais523
19:37:25 <ais523> hi elliott
19:38:54 <ais523> http://sprunge.us/AXOB
19:40:06 <ais523> elliott: ^
19:40:38 <elliott> ais523: glanced at file list, eyes hit upon the source directory, tab closed
19:40:44 <ais523> haha
19:40:46 <Gregor> OK, wtf variant of the Alpha do I need to select X_X
19:40:55 <elliott> call of link remains. perhaps this is the end...
19:41:18 <ais523> elliott: don't worry, it's sane
19:41:23 <ais523> it's only very tangentially related to Feather
19:41:29 <ais523> the name of the language is Not Even Feather
19:41:33 -!- CakeProphet has quit (Read error: Operation timed out).
19:41:36 <elliott> ais523: That's, uh, a very minimal syntax.
19:41:43 <ais523> yep
19:41:45 <ais523> it's just sexps
19:41:48 <ais523> those are really easy to parse
19:41:48 <elliott> ais523: Actually I think it shares a syntax with Qq.
19:41:58 <elliott> s/Qq/qq/
19:42:03 <ais523> the parser would be even simpler if I didn't try to do type inference in it
19:42:16 <elliott> `addquote <ais523> the parser would be even simpler if I didn't try to do type inference in it
19:42:23 <HackEgo> 719) <ais523> the parser would be even simpler if I didn't try to do type inference in it
19:42:57 <elliott> ais523: hmm, is it sufficiently Not Feather that my apparent inability to find any self-modification is expected?
19:43:20 <ais523> yes
19:43:25 <ais523> it doesn't have self-modification
19:43:52 <elliott> ais523: how is it Not Entirely Not Feather, then?
19:43:53 <ais523> NEF's a language designed for use as the backend of Feather interpreters
19:43:56 -!- Darth_Cliche has joined.
19:44:01 <elliott> ah
19:44:03 <elliott> is it complete?
19:44:06 <ais523> it's TC
19:44:17 <ais523> although a little tricky to avoid writing infinite loops in it
19:44:25 <elliott> I mean, is further expansion planned?
19:44:41 <elliott> also, someone should write a safe unsharchiver
19:44:45 <ais523> no, unless I find a good way to make evaluation less eager
19:44:50 <elliott> like how JSON was originally parsed with eval() and then people wrote real parsers
19:45:10 <elliott> ais523: grrr, sharbomb
19:45:17 <ais523> sorry; aren't they usually?
19:45:20 <elliott> maybe
19:45:32 <ais523> anyway, the main weird feature of the language is "overeager" evaluation
19:45:44 <elliott> ais523: is that the same as superstrict?
19:45:48 <elliott> i.e. doing reduction inside lambdas
19:45:53 <ais523> yep
19:45:54 <elliott> (which tends to make things like Y diverge)
19:46:12 <elliott> ais523: hmm, I think reimplementing this would be simpler than installing an OCaml compiler
19:46:16 * elliott does so
19:46:22 <Gregor> configure: error: The alphaev6 is not supported.
19:46:23 <Gregor> WTF GLIBC
19:46:31 <ais523> what, reimpls, or installs OCaml?
19:46:32 <Gregor> It said that for alphaev4, alphaev5 too
19:46:35 <elliott> ais523: former
19:46:39 <ais523> heh
19:46:58 <ais523> it's mostly a proof-of-concept interp
19:47:14 <elliott> ais523: hmm, what's the difference between Var1 and Var2?
19:47:16 <ais523> anyway, what I really need to show that NEF has fit its concept correctly is to write a self-interp with eigenratio 1
19:47:33 <ais523> elliott: which argument it refers to
19:49:19 <ais523> the language has exactly two types: 1, which takes an argument of type 2, and 2, which takes two arguments, of type 2 and 1 respectively
19:49:40 <ais523> functions never return, so it doesn't make sense to say that the return value has a type
19:50:05 <ais523> elliott: are you at least reimplementing it in Haskell?
19:50:56 <ais523> it should be possible to translate more or less directly, as apart from the I/O right at the start and some debug output, that interpreter is pure
19:51:37 <elliott> back
19:51:44 <elliott> ais523: yep
19:51:54 <elliott> ais523: so is Var1 a variable reference to a variable of type 1?
19:52:04 <ais523> yep
19:52:18 <elliott> ais523: cool, I can represent the types in Haskell then
19:52:43 <elliott> ais523: hmm, and Call1 calls a 1 with a 2?
19:52:50 <elliott> and Call2 calls a 2 with a 2 and a 1?
19:53:13 <ais523> Call2 takes three arguments; the first is the variable holding the function to call (of type 1), and the other two are its arguments, of types 2 and 1 respectively
19:53:17 <ais523> *(of type 2)
19:53:20 <ais523> and Call1 is analogous
19:53:23 <elliott> ais523: why can't the function be an expression instead?
19:53:26 <elliott> is that fundamental?
19:53:33 <ais523> that's the main unusual feature of NEF
19:53:36 <elliott> right
19:53:54 <elliott> ais523: what is the return type of a 1?
19:53:56 <elliott> and a 2?
19:54:00 <elliott> or can they return either 1s or 2s?
19:54:00 <ais523> there isn't one, they never return
19:54:07 <ais523> no function ever returns in NEF
19:54:12 <elliott> ais523: well, OK, what is the type of 2(2,1)?
19:54:16 <elliott> erm
19:54:17 <ais523> there isn't one
19:54:20 <elliott> where i use integers to mean "something of that type"
19:54:28 <elliott> ais523: then how do you pass a 2 or a 1?
19:54:35 <elliott> by getting it from a variable?
19:54:39 <elliott> if so, surely it should be Call1 of (int * int)
19:54:41 <ais523> either that, or by giving a template
19:54:44 <elliott> and Call2 of (int * int * int)
19:54:50 <elliott> ais523: that's not in the program type :)
19:54:59 <ais523> let me try to explain the language, rather than you to reverse-engineer it from the impl
19:55:10 <elliott> probably a good idea
19:55:24 <ais523> basically, if I write (a b c), that can be interpreted as \0.a(b,c)
19:55:35 <ais523> well, \-1.a(b,c)
19:55:38 <ais523> the numbers are relative to parens
19:55:44 <ais523> so (0 0) = \x.x
19:55:50 <ais523> wait
19:55:50 <elliott> ais523: is it de bruijn or reverse de bruijn?
19:56:08 <ais523> umm, I forget which way is which
19:56:26 <ais523> but (0 0) always means \v c.c(v)
19:56:35 <elliott> ais523: in de bruijn, 0 is the innermost var
19:56:39 <elliott> in reverse de bruijn, 0 is the outermost
19:56:43 <elliott> (de bruijn is much nicer)
19:56:55 <ais523> and likewise, (0 (0 1)) means \x c.c(\y d.d(x))
19:56:59 <ais523> so 0 is innermost
19:57:48 <ais523> forward de bruijn, then
19:59:13 <elliott> ais523: but, ehh, is the only reason you have the arguments be programs instead of variable numbers so that you can use Exit and Error there?
19:59:22 <elliott> or can you actually nest calls and that's what this template stuff is?
19:59:48 <ais523> elliott: it's basically the same as giving a literal lambda as an argument to something
19:59:57 <ais523> i.e. the arguments are either variables or function literals
20:00:07 <ais523> and function literals can be very complex
20:00:20 <ais523> (by "variable" I mean "lambda variable", btw, not the assignable sort)
20:00:22 <elliott> ais523: OK, let me get a straight answer: is Call1 (n, Call2 ...) ever valid?
20:00:34 <ais523> yes
20:00:42 <ais523> so is Call1 (n, Call1 …)
20:00:43 <elliott> ais523: what about Call1 (n, Call1 ...)?
20:00:45 <elliott> OK
20:01:00 <elliott> then indeed, i do not understand the language :)
20:01:16 <ais523> I have a few examples
20:02:04 <ais523> (0 0) is how you compile i into NEF; (0 (0 1)) acts like k; (0 (0 (2 0 (2 1 (1 0 2))))) acts like s; (0 (1 0) 0) acts like call/cc
20:02:21 <Gregor> elliott: Ohhey, it works on PPC and I never even did any work to make it, err, work there.
20:02:21 <elliott> I get I and K but not the others, although S looks familiar
20:02:28 <elliott> I think implementing it will probably be the first step in understanding it; it tends to be with languages this simple
20:02:30 <elliott> Gregor: Neat
20:02:48 <elliott> ais523: but I believe this means I can't actually do the type trick I was planning :)
20:02:58 <ais523> indeed, I tried to do that trick too
20:03:05 <ais523> but it doesn't work
20:03:07 <elliott> ais523: what type does exit take? 1 or 2?
20:03:19 <ais523> exit's of type 1
20:03:28 <elliott> ais523: no it isn't
20:03:31 <elliott> ais523: it isn't a program
20:03:32 <elliott> so it has no type
20:03:39 <elliott> ais523: in (Exit p), what type must p have?
20:03:49 <ais523> elliott: it takes one argument of type 2; that's the definition of being type 1
20:04:00 <elliott> ais523: it doesn't take an argument at all, because it's not a program!
20:04:03 <elliott> it's a function from program to program
20:04:08 <ais523> no it isn't
20:04:10 <elliott> Call1 (Exit, ...) # not valid
20:04:17 <elliott> ais523: it is, I'm looking at your ADT /right now/
20:04:20 -!- derrik has quit (Quit: /clear).
20:04:20 <ais523> elliott: Call1 (Call1, ...) # not valid
20:04:28 <elliott> yes, which is why Call1 doesn't have a type
20:04:30 <elliott> because it's not a program
20:04:47 <ais523> and yet Call1 (0, Var2 0) is a program
20:04:54 <elliott> ...yes?
20:05:00 <elliott> (Exit p) is a program, obviously
20:05:03 <elliott> Exit isn't
20:05:05 <ais523> ah, right
20:05:15 <elliott> therefore Exit doesn't have a type, because a type is something programs have
20:05:23 <ais523> in that case, Exit takes a program of type 2 and returns a program of type 1
20:05:40 <elliott> right; and I assume Error is a program of type 1 or 2, i.e. polymorphic?
20:05:52 <ais523> nah, Error is me getting rid of code duplication
20:05:58 <ais523> it's of type 1, always
20:06:07 <elliott> OK
20:06:14 <elliott> data T1
20:06:15 <elliott> data T2
20:06:15 <elliott> data Exp t where
20:06:15 <elliott> Var :: Var t -> Exp t
20:06:15 <elliott> Call1 :: Var T1 -> Exp T2 -> Exp ???
20:06:15 <elliott> Call2 :: Var T2 -> Exp T1 -> Exp T2 -> Exp ???
20:06:17 <elliott> Exit :: Exp T2 -> Exp T1
20:06:17 <ais523> because I use the same codepaths for type 1 stuff (that don't have a type 1 arg) and type 2 stuff (which does have a type 1 arg)
20:06:19 <elliott> Error :: Exp T1
20:06:21 <elliott> this is why the trick fails :)
20:06:23 <elliott> you can't fill in ???
20:06:35 <ais523> and just stick in Error as the type 1 arg
20:06:41 <elliott> if I understood the language, I could probably do a better trick to reify the types, but I don't understand it well enough to do that now
20:06:43 <elliott> ais523: ewwwww
20:06:47 <elliott> ais523: I'm not going to have Error
20:06:53 <ais523> I know >:)
20:06:57 <ais523> elliott: I didn't think you would
20:07:12 <elliott> ais523: btw, why is it (Exit of program) instead of just Exit, used like Call1 (Exit, p)?
20:07:49 <ais523> elliott: the given program is executed to calculate the return value
20:08:00 <elliott> ais523: and so it would be with Call1 (Exit, p), no?
20:08:09 <elliott> or is this me not understanding the semantics again :)
20:08:20 <elliott> the problem with the understanding-by-implementation approach is that it involves implementation
20:08:29 <ais523> it's a side-effect of being hypereager
20:08:43 <ais523> suppose Exit ends up being substituted into the first position of a Call
20:08:51 <ais523> it can't be there, so needs to be evaluated immediately, but without exiting the program
20:09:06 <ais523> so the argument to Exit's basically there to defer the evaluation
20:09:49 <elliott> heh
20:09:54 <ais523> I think the language probably needs a strictifier, incidentally, it'd avoid this sort of problem
20:10:09 <ais523> and make writing safe infinite loops rather easier
20:10:13 <elliott> ais523: Is Error something inherent to the language or just a way to get nicer reports than non-halting?
20:10:15 <ais523> but you wouldn't have to expand the language syntax at all
20:10:33 <ais523> elliott: Error isn't inherent to the language, it's simply there because I'm lazy
20:10:37 <elliott> erm
20:10:39 <elliott> ais523: Exit, I mean
20:10:40 <ais523> you can write an impl without it, and probably produce nicer error messages
20:10:40 <elliott> sorry!
20:11:00 <elliott> http://i.imgur.com/1uOhf.png ;; this is the first time I have ever used three windows in Emacs
20:11:30 <ais523> oh, basically, the input is a type 2 program and its type 2 arg; Exit is the type 1 arg it's given when it starts executing
20:11:48 <ais523> so it wouldn't be needed if you didn't care about your programs being able to terminate
20:12:02 <ais523> you could just use type 1 programs rather than type 2 programs as the initial input
20:14:30 <Gregor> elliott: OK, new reason for not testing on Alpha: I can't get a bloody cross-compiler at all >_<
20:15:25 <elliott> ais523: I need a wider screen to do this three-pane coding :(
20:15:41 <ais523> elliott: I typically split one of the halves horiziontally when doing three-pane
20:15:47 * elliott just switched to that
20:15:55 <ais523> well, with a horizontal divider
20:17:04 <elliott> ais523: Partial list of words I don't know the meanings of in the slightest: ig, incg, decg, substat
20:17:29 <ais523> btw, it's entirely possible to write a program that doesn't type, such as (0 0 (0 0 0)); atm, I detect type errors at runtime rather than statically
20:17:53 <ais523> anyway, incg and decg are basically used to adjust open terms
20:17:55 <ais523> inside substat
20:18:24 <ais523> and substat itself does substitutions in the typical lambda-calculusy way
20:18:47 <elliott> ais523: huh? you don't need substitutions with de bruijn
20:19:10 <ais523> elliott: how are you going to implement an application of a lambda otherwise?
20:19:32 <elliott> ais523: you use a linked list; cons onto it when you do a call, and just index it when a variable is looked up
20:19:40 <elliott> var 0 = car, var 1 = cadr, etc.
20:19:57 <ais523> elliott: but what if that variable hasn't been evaluated yet?
20:19:57 <elliott> and, ofc, you don't need alpha renaming
20:20:01 <ais523> hypereager, remember?
20:20:08 <elliott> ais523: what about it?
20:20:22 -!- Phantom__Hoover has joined.
20:20:31 <Phantom__Hoover> <elliott> http://i.imgur.com/1uOhf.png ;; this is the first time I have ever used three windows in Emacs ← You've never used Proof General?
20:20:31 <lambdabot> Phantom__Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
20:20:43 <elliott> Phantom__Hoover: That doesn't couuunt.
20:20:56 <Phantom__Hoover> XD
20:21:03 <ais523> elliott: example: I just gave (0 (0 (2 0 (2 1 (1 0 2))))) and (0 0) as input to the interpreter (s and i)
20:21:12 <ais523> and here's the debug output:
20:21:15 <ais523> (0c (0c (2v 0v (2v 1v (1v 0v 2c))))) [(0c 0v), (exit 0v)]
20:21:17 <ais523> (exit 0v) [(0c (1v 0v (1v 0v 1c))), error]
20:21:18 <ais523> (0c (1v 0v (1v 0v 1c)))
20:21:39 -!- Phantom__Hoover has changed nick to Phantom___Hoover.
20:21:41 <elliott> you know that's not going to help me; ais523: if you mean that you have to evaluate expressions before consing them, so what?
20:21:43 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
20:21:47 <elliott> you can do that easily
20:21:49 <Phantom___Hoover> Hmm.
20:21:53 <ais523> elliott: no, you have to cons them before knowing what they are
20:21:59 <Phantom___Hoover> elliott, shoddy.
20:22:02 -!- Phantom___Hoover has changed nick to Phantom_Hoover.
20:22:06 <elliott> ais523: oh, right; that's easy
20:22:08 <shachaf> Phantom_Hoover!
20:22:15 <elliott> ais523: you just use a linked list of (Maybe Exp) instead
20:22:17 <Phantom_Hoover> shachaf!
20:22:20 <elliott> Nothing means you don't know what it is yet
20:22:28 <shachaf> Phantom_Hoover: Don't you owe me a message or two?
20:22:30 <ais523> elliott: but how can you tell which Nothing is which afterwards?
20:22:43 <elliott> ais523: what?
20:22:46 <Phantom_Hoover> @tell shachaf friendship message
20:22:47 <lambdabot> Consider it noted.
20:22:59 <ais523> here: in the above example, I start with (0 (0 (2 0 (2 1 (1 0 2))))), then substitute in (0 0) and exit
20:23:09 <ais523> and get exit (0 (1 0 (1 0 1)))
20:23:45 <ais523> basically, we're substituting for the first 2 in (0 (2 0 (2 1 (1 0 2))))
20:23:47 <elliott> you're just going to keep quoting programs at me you know I can't yet read, right? anyway, the whole point is, if you get Nothing, abort reduction of that variable
20:23:54 <elliott> but failing that, you can have (Either Int Exp) instead
20:24:00 <elliott> if you want to keep track of them
20:24:04 -!- tiffany has joined.
20:25:46 <ais523> elliott: OK; so suppose I want to evaluate the following open term: (0 0) applied to 0 and (2 1 (1 0 2)); that's going to give me ((2 1 (1 0 2)) 0), but I don't know what the 2 at the start refers to
20:25:53 <ais523> because it refers beyond the start of the expression
20:26:00 <ais523> hmm, let me translate into lambda calculus
20:27:08 -!- oerjan has joined.
20:27:30 <ais523> wait, I'm confused
20:27:33 <elliott> hi oerjan
20:27:40 <oerjan> hello
20:28:03 <ais523> I'm pretty certain your suggestion is incorrect, but need a bunch of calculation to work out why
20:28:27 <elliott> ais523: lol
20:28:40 <elliott> oerjan: i implemented your cursor stuff and PSeq, just without any operations :P
20:28:54 <elliott> oerjan: also, turns out what i thought the gadt record syntax was is deprecated, you were right with Foo :: { ..., ... } -> R
20:29:07 <ais523> elliott: I think it's because it gets the evaluation order wrong
20:29:31 <shachaf> elliott: No, it's Foo :: { a :: Int } -> { b :: Char} -> R, isn't it?
20:29:34 <elliott> ais523: I refuse to believe you have an evaluation scheme which cannot be implemented with an environment and absolutely requires substitution; that's patently ridiculous
20:29:42 <elliott> ais523: even if my specific solution doesn't work
20:29:59 <oerjan> elliott: aha. i noticed wrt PSeq you said something about unsafeCoerce :P
20:30:08 <ais523> elliott: there probably is a way to do it with an environment, just not the way you suggested
20:30:08 <elliott> shachaf: Nope.
20:30:11 <oerjan> i guess that may be the simplest way to implement it
20:30:23 <elliott> oerjan: yes, I didn't feel like implementing my own finger trees :P
20:30:34 <ais523> but I fear it'd get exponentially complex to maintain the environment
20:30:51 -!- Zuu has joined.
20:31:17 <elliott> ais523: I doubt it
20:31:38 <shachaf> elliott: Ugh.
20:31:43 <elliott> ais523: I don't see why Unknown doesn't work; if you get Unknown back, then behave as you would with an unsubstituted variable reference in a substituting implementation
20:31:46 <shachaf> You're right.
20:31:57 <ais523> elliott: let's see… suppose I have \x.(… some expression containing a call of x …), and apply a value to it
20:32:10 * shachaf thinks GADT syntax and regular syntax could be unified into something better pretty easily.
20:32:40 <ais523> so, I have one append-only stack (because no returns) that contains the values of open terms in the current expression
20:32:59 <ais523> and then, I have to traverse the inside of the brackets to find all uses of x in call position, and evaluate them immediately
20:33:01 <elliott> oerjan: zipper.hs: http://sprunge.us/BDYL
20:33:05 <elliott> oerjan: PSeq.hs: http://sprunge.us/IBPQ
20:33:20 <elliott> ais523: mmhm
20:33:31 <ais523> so what stack do I use to evaluate /those/?
20:33:38 <ais523> and what do I put on it?
20:34:25 <elliott> ais523: say the environment for ((\x. ... (x e) ...) xv) is [a,b,c]; the environment for evaluating (x e) is [xv,a,b,c]
20:34:57 <elliott> say x = \q.u
20:34:59 <ais523> hmm… that breaks the links between numbers and positions in the list
20:35:11 <elliott> then the environment for evaluating u is [e,a,b,c]
20:35:13 <elliott> because scoping
20:35:15 <elliott> ais523: no it doesn't
20:35:26 <elliott> ais523: [xv,a,b,c]!!0 = xv
20:35:29 <elliott> [xv,a,b,c]!!1 = a
20:35:33 <ais523> elliott: what if I have ((\x. … ( … (x e )) …) xv)
20:35:36 <elliott> de bruijn is retained
20:35:49 <elliott> ais523: calls don't introduce new bindings, so that's irrelevant
20:35:56 <ais523> I'm going to need to use [xv,?,a,b,c] as the list
20:36:09 <elliott> what?
20:36:15 <ais523> wait, no, [?,xv,a,b,c]
20:36:25 <ais523> elliott: think of it in number terms; x won't be 0 inside (x e)
20:36:28 <ais523> it'll be some larger number, like 2
20:36:45 <elliott> ais523: no it won't, unless by "..." you meant "... that includes a lambda"
20:36:50 <ais523> elliott: err, right
20:36:57 <ais523> all open parens imply a lambda in NEF
20:37:04 <ais523> so counting parens and counting lambdas comes to the same thing
20:37:18 <elliott> ais523: so what you're discovering is, parsing an expression containing variables into de bruijn requires a map from variable name to integer
20:37:27 <elliott> and each integer increases for each new lambda
20:37:31 <elliott> shocking
20:37:44 <elliott> however, unrelated to the semantics of a language coded directly in de bruijn
20:38:01 <ais523> elliott: we're talking about the implementation
20:38:26 <elliott> yes, and you have successfully confused the issue by using named variables which has somehow turned into a point involving conversion to de bruijn
20:38:36 <elliott> which is irrelevant since named variables feature nowhere except in your attempted explanation afaict
20:39:02 <ais523> elliott: I was going on /your/ example
20:39:08 <ais523> because you refuse to read examples involving numbers
20:40:25 <elliott> ais523: if it were de bruijn lambda calculus i would understand perfectly
20:40:39 <elliott> but I do "refuse" (am unable to) understand examples in a language I'm in the process of trying to understand, yes
20:40:48 <ais523> it sort-of is, just with a weird evaluation order
20:40:54 <ais523> what syntax do you want for de bruijn lambda calculus?
20:41:48 <elliott> exp := int | '(\' exp ')' | '(' exp exp ')', with omitted parens for repeated left-associative application, and whitespace to separate integers?
20:42:05 <elliott> and parens on outermost lambdas omittable, etc.
20:44:35 <ais523> ah, OK
20:45:34 <ais523> NEF's syntax is basically that, except that it uses (…) rather than (\…), and that a lambda can take two arguments instead of one; both of the arguments has the same number, and it works out which is being referred to by the type
20:45:57 <elliott> well, OK; I certainly have a better understanding of the lambda-calculus though
20:48:08 <Gregor> *First time looking at VAX* I like how VAX is clearly the primary influence for x86 :P
20:48:46 <elliott> Gregor: http://esolangs.org/wiki/User:Ian#DEC_VAX
20:48:58 <elliott> Gregor: ("Other Neat CPUs" section is great also)
20:49:45 <elliott> Gregor: CALLG is really cool, hardware varargs :P
20:49:49 <elliott> POLYx is also hilarious
20:50:05 <elliott> "CASEx has a format like this: selector.rx, base.rx, limit.rx, displ[0].bw, ..., displ[limit].bw The instruction has "limit+3" operands. Not only can the VAX not tell how long the instruction is until it's completely decoded, it can't even tell how many operands it has! The whole thing can be 4GB long. Technically it can be 8GB long, but the VAX only has 4GB of addressing space."
20:50:18 <Gregor> Incidentally, my JIT currently does not (seem to?) work on VAX, and I think I know why, but not how to fix it ...
20:50:19 <elliott> ais523: well, go on
20:50:33 <ais523> err, I'm in the middle of something else
20:50:39 <ais523> I get distracted easily
20:50:41 <elliott> heh
20:50:43 <Gregor> Also, NetBSD VAX = yesssssssssssssss
20:50:45 <elliott> Gregor: Try it on this: http://esolangs.org/wiki/Talk:Timeline_of_esoteric_programming_languages#AS.2F400
20:51:42 <elliott> oerjan: did you look :P
20:51:52 <oerjan> elliott: in your foldr, i think the (forall a. result a a) can simply be result dest dest
20:52:00 <Gregor> elliott: Need compiler and simulator (also, CISC is usually the easiest, I think the issue with VAX is that it has markers at the beginning of functions which are not valid instructions but need to be there (?????))
20:52:22 <elliott> oerjan: hmm, so it can. that seems really ugly: why can't it be result src src, too?
20:52:44 <pikhq_> Gregor: Not *really*; x86 was more influenced by earlier Intel designs than anything else. That said, CISC had a lot of crazy stuff.
20:52:50 <pikhq_> Also, yay 32-bit PDP-11!
20:53:04 <Gregor> elliott: Yup, my generated code totally has halts in it :P
20:53:30 <ais523> Gregor: hmm, is VAX the architecture that didn't have a stack, but rather stored return addresses just before the start of a function?
20:53:57 <Gregor> ais523: ... I can't imagine so, that wouldn't work with C very well. Recursion and what have you.
20:54:17 <ais523> it didn't, IIRC
20:54:40 <pikhq_> I doubt it.
20:54:44 <oerjan> elliott: result src src would be for foldl, obviously... it's what replaces the right and left end, respectively.
20:54:56 <elliott> oerjan: oh, right
20:55:09 <olsner> hmm, but isn't AS/400 or i that thing that has a machine-independent binary format and is currently implemented using POWER7?
20:55:11 <elliott> oerjan: what's weird about seqs is that they have, I think, four folds
20:55:20 <elliott> oerjan: foldr, foldl, foldrFromRight, foldlFromRight
20:55:32 <oerjan> heh
20:55:33 <pikhq_> Seeing as the PDP-11 used a stack, and the VAX started as a 32-bit PDP-11.
20:55:48 <elliott> oerjan: although, I suspect that foldr == foldlFromRight and foldl == foldrFromRight in results, just not in semantics
20:55:52 <elliott> err
20:55:55 <elliott> oerjan: as in, evaluation semantics
20:56:15 <oerjan> elliott: presumably it may matter in thunk buildup
20:56:22 <elliott> oerjan: right, that's what I meant
20:56:36 <elliott> oerjan: incidentally, i note that one can have a PSeq of PSeqs...
20:56:43 <elliott> i.e. (PSeq (PSeq path) src dest)
20:56:48 <elliott> oerjan: which got me wondering what Mu PSeq is >:)
20:57:05 <elliott> oerjan: unfortunately I think it's just data Foo = Foo | Bar Foo Foo
20:57:21 <elliott> and there's no value with src =/= dest
20:58:16 <oerjan> elliott: in fact you would probably want foldl to be fromRight by default, since the other options just add thunks needlessly; the ' versions though would go the other way for both foldl and foldr.
20:58:25 <elliott> oerjan: right
20:59:32 <olsner> also, who's this "Ian"? I'd like him to explain why CASEx needs to be completely decoded to know how many operands it has
20:59:50 <oerjan> elliott: PSeq is sort of a * -> * -> * type transformer
20:59:54 <elliott> olsner: esowiki guy, ping him on his talk page or use the wiki email thing?
21:00:00 <elliott> oerjan: indeed
21:00:14 <elliott> oerjan: incidentally, you can't implement Show (PSeq path src dest) because you need (forall a b. Show (path a b)) :-(
21:00:15 <olsner> afaict, limit is the third operand and should say exactly how long the rest of it is
21:00:19 <oerjan> elliott: oh and one other thing i thought of, you could make a Category instance for PSeq
21:00:23 <elliott> oerjan: ooh
21:00:24 <olsner> elliott: meh, can't be bothered logging in
21:00:27 <elliott> oerjan: shiny
21:00:29 <olsner> I probably even have an account
21:00:46 <oerjan> elliott: it's sort of a free category on the path type
21:01:06 <elliott> oerjan: i wonder if it's an arrow... arr seems tricky, maybe it's an arrow if the path is
21:02:33 <elliott> oerjan: it's a super pretty structure
21:03:49 <oerjan> elliott: i think your Mu PSeq is more than that; it would allow constructing empty PSeq's at all nesting levels wouldn't it, so it would work similarly to building up set theory from empty lists. oh hm you could never get a PSeq a b for a /~ b, i think, so it may be equivalent to Mu Seq.
21:04:11 <elliott> oerjan: that's what i said
21:04:15 <elliott> data Foo = EmptyList | Cons Foo Foo
21:04:35 <elliott> [[],[],[]] = Cons EmptyList (Cons EmptyList (Cons EmptyList EmptyList))
21:04:36 <elliott> etc.
21:04:42 <oerjan> elliott: well if you consider cons lists equivalent to Seq's...
21:04:47 <elliott> well ok
21:04:55 <elliott> @src foldl'
21:04:56 <lambdabot> foldl' f a [] = a
21:04:56 <lambdabot> foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs
21:05:00 <elliott> darn, they just use an ugly let too
21:05:42 <elliott> oerjan: yikes, I'm not sure foldr' is possible
21:05:48 <elliott> oerjan: because of the fiddly parametrisation
21:06:04 <oerjan> elliott: you might implement Show if you made a Show2 class for path
21:06:08 <elliott> oerjan: indeed
21:06:17 <elliott> (***) :: PSeq path a b -> PSeq path b' c' -> PSeq path (b, b') (c, c')
21:06:20 <elliott> oerjan: wow that's pretty
21:06:23 <elliott> it's like simulwalking!!
21:06:28 <elliott> ...not sure it's possible though
21:06:31 <elliott> because what if the lengths differ
21:09:19 <oerjan> why would foldr' (and equivalently foldl') not work?
21:09:23 <elliott> oerjan: because
21:09:27 <elliott> Expected type: result a a
21:09:27 <elliott> Actual type: result mid dest
21:09:27 <elliott> In the second argument of `foldr'', namely `z''
21:09:27 <elliott> In the second argument of `seq', namely `foldr' f z' ps'
21:09:33 <elliott> where z' = f pn z from the right
21:10:11 <oerjan> ...oh i see
21:10:18 <oerjan> you can relax the type
21:10:29 <elliott> how?
21:10:35 <oerjan> foldr :: (forall a b c. path a b -> result b c -> result a c) -> (forall a. result a a) -> PSeq path src dest -> result src dest
21:10:43 <oerjan> (just pasting to get something to edit)
21:10:50 <elliott> I already releaxed foldr to result dest dest
21:10:53 <elliott> and this doesn't work with that
21:10:56 <elliott> or the quantified version
21:11:12 <oerjan> foldr :: (forall a b c. path a b -> result b c -> result a c) -> result dest end -> PSeq path src dest -> result src end
21:11:27 <oerjan> _that_ might work, and even with foldr'
21:12:09 <elliott> same error:
21:12:11 <elliott> Expected type: PSeq path src mid
21:12:11 <elliott> Actual type: PSeq path src dest
21:12:11 <elliott> In the third argument of `foldr'', namely `ps'
21:12:11 <elliott> In the second argument of `seq', namely `foldr' f z' ps'
21:12:15 <elliott> oh hm
21:12:22 <elliott> that's not the same error but it's still a mismatch
21:12:23 <oerjan> ?
21:12:35 <elliott> foldr'
21:12:35 <elliott> :: (forall a b c. path a b -> result b c -> result a c)
21:12:35 <elliott> -> result dest end
21:12:35 <elliott> -> PSeq path src dest
21:12:35 <elliott> -> result src end
21:12:36 <elliott> foldr' f z ps =
21:12:38 <elliott> case viewr ps of
21:12:40 <elliott> PEmptyR -> z
21:12:41 <oerjan> oh hm
21:12:42 <elliott> ps' :> pn ->
21:12:44 <elliott> let z' = f pn z
21:12:46 <elliott> in z' `seq` foldr' f z' ps
21:12:48 <elliott> /home/elliott/Code/shiro/PSeq.hs:98:31:
21:12:50 <elliott> Couldn't match type `dest' with `mid'
21:12:52 <elliott> `dest' is a rigid type variable bound by
21:12:54 <elliott> the type signature for
21:12:56 <elliott> foldr' :: (forall a b c. path a b -> result b c -> result a c)
21:12:58 <elliott> -> result dest end
21:12:59 <oerjan> elliott: foldr :: (forall a b c. path a b -> result b -> result a) -> result dest end -> PSeq path src dest -> result src
21:13:00 <elliott> -> PSeq path src dest
21:13:02 <elliott> -> result src end
21:13:04 <elliott> at /home/elliott/Code/shiro/PSeq.hs:93:1
21:13:06 <elliott> `mid' is a rigid type variable bound by
21:13:08 <elliott> a pattern with constructor
21:13:10 <elliott> :> :: forall (path :: * -> * -> *) src dest mid.
21:13:12 <elliott> PSeq path src mid -> path mid dest -> PViewR path src dest,
21:13:14 <elliott> in a case alternative
21:13:16 <elliott> at /home/elliott/Code/shiro/PSeq.hs:96:5
21:13:18 <elliott> Expected type: PSeq path src mid
21:13:20 <elliott> Actual type: PSeq path src dest
21:13:22 <elliott> In the third argument of `foldr'', namely `ps'
21:13:24 <elliott> In the second argument of `seq', namely `foldr' f z' ps'
21:13:26 <elliott> Failed, modules loaded: none.
21:13:28 <elliott> oerjan: wat
21:13:30 <elliott> oerjan: "-> result dest end ->"
21:13:40 <oerjan> er oops
21:13:50 <oerjan> foldr :: (forall a b c. path a b -> result b -> result a) -> result dest -> PSeq path src dest -> result src
21:14:04 <elliott> foldr', presumably
21:14:17 <oerjan> it is slightly awkward if you actually _want_ a type with dest in it, i guess...
21:14:19 <elliott> Expected type: PSeq path src mid
21:14:19 <elliott> Actual type: PSeq path src dest
21:14:19 <elliott> In the third argument of `foldr'', namely `ps'
21:14:19 <elliott> In the second argument of `seq', namely `foldr' f z' ps'
21:14:26 <oerjan> (because of wrong type argument order)
21:14:43 <elliott> oerjan: otoh it does work as a type for foldr
21:14:43 <oerjan> foldl wouldn't have _that_ problem
21:14:47 <elliott> but not for foldr'
21:14:57 <elliott> oerjan: but then foldr (<|) empty doesn't type
21:14:58 <elliott> so lol
21:15:15 <oerjan> indeed, wrong type argument order
21:15:27 <oerjan> the changing argument doesn't get last
21:16:33 <elliott> oerjan: foldl' doesn't type either
21:16:40 <elliott> also, the arguments always change with (<|)
21:16:42 <elliott> apart from path
21:18:13 <oerjan> elliott: oh you have a bug
21:18:25 <elliott> oerjan: ok tell me but beforehand
21:18:28 <elliott> look at this
21:18:29 <elliott> foldr (>>>) id
21:18:30 <elliott> :: Category path => PSeq path src dest -> path src dest
21:18:31 <oerjan> in z' `seq` foldr' f z' ps should be in z' `seq` foldr' f z' ps'
21:18:32 <elliott> that is beautiful :')
21:18:46 <elliott> oerjan: oh
21:18:49 <elliott> will that fix things? :P
21:18:56 <oerjan> let's hope :P
21:19:21 <elliott> nope
21:19:30 <oerjan> D:
21:19:48 <elliott> oerjan: oh wait
21:19:55 <elliott> oerjan: i think what needs changing is the type of f
21:19:57 <elliott> oerjan: to go /backwards/
21:20:42 <elliott> oerjan: i'm not sure what that looks like, though :P
21:22:11 <elliott> oerjan: argh, here's another bug for you
21:22:13 <elliott> singleton :: path a a -> PSeq path a a
21:22:19 <elliott> oerjan: how stupid can I be??
21:24:21 <elliott> oerjan: omg omg omg
21:24:26 <elliott> oerjan:
21:24:27 <elliott> instance (Arrow (~>)) => Arrow (PSeq (~>)) where
21:24:27 <elliott> arr = singleton . arr
21:24:27 <elliott> first ps =
21:24:27 <elliott> case viewl ps of
21:24:27 <elliott> PEmptyL -> empty
21:24:29 <elliott> pn :< ps' -> first pn <| first ps'
21:25:24 <elliott> oerjan is not nearly excited enough.
21:26:23 <oerjan> maybe not.
21:26:43 <oerjan> does that foldr' compile (although with warning) if you remove the empty branch?
21:27:32 <elliott> oerjan: i'll try. but dude, PSeq is an arrow transformer!!!
21:28:01 -!- Ngevd has joined.
21:28:04 <elliott> oerjan: no
21:28:10 <elliott> Expected type: PSeq path src dest
21:28:10 <elliott> Actual type: PSeq path src mid
21:28:10 <elliott> In the third argument of `foldr'', namely `ps''
21:28:10 <elliott> In the expression: foldr' f (f pn z) ps'
21:28:14 <elliott> (yeah yeah I know it's not strict yet :P)
21:28:40 <elliott> oerjan: you know, I could just unsafeCoerce this through
21:28:55 <elliott> it's obviously a valid implementation
21:30:01 <oerjan> >_>
21:31:11 <elliott> oerjan: you realise viewl/viewr unsafeCoerce already :P
21:31:34 <elliott> oerjan: hm i note that there are two possible Categories for PSeq
21:31:38 <oerjan> oh hm is it complaining about the foldr' being used with polymorphic recursion, _despite_ having a type signature?
21:31:44 <elliott> instance Category (PSeq path) where id = empty; (.) = flip (><)
21:32:00 <elliott> instance (Category path) => Category (PSeq path) where id = singleton id; (.) = fold blah blah
21:32:09 <elliott> oerjan: no, it's complaining because _ps' does not match the zero passed_
21:32:53 <oerjan> hm...
21:33:41 <elliott> app :: (ArrowApply (~>)) => PSeq (~>) (PSeq (~>) b c, b) c
21:33:43 <elliott> THIS WILL BE FUN
21:35:41 <oerjan> elliott: what is your current code for foldr' ?
21:35:57 <elliott> oerjan: i rewrite it every time you come up with another idea. do you just want a file with foldr' in it? :P
21:36:13 -!- boily has quit (Ping timeout: 252 seconds).
21:36:29 <oerjan> i just want to see if you broke it in some way i haven't seen while fixing my bug reports :P
21:36:30 -!- copumpkin has changed nick to luke-sr.
21:36:42 <elliott> charming :P
21:36:46 <elliott> one second
21:36:56 <elliott> hmm I have to write basically (PSeq (~>) b c, b) ~> c
21:37:17 -!- luke-sr has changed nick to copumpkin.
21:37:39 <elliott> oerjan: http://sprunge.us/cjcR
21:37:39 -!- Patashu has joined.
21:38:03 <elliott> ok, I have (b ~> c, b) ~> c
21:38:10 <elliott> and I need to turn that into (PSeq (~>) b c, b) ~> c
21:38:40 <elliott> so... app . first f
21:38:56 <oerjan> elliott: you removed the end type again, i believe that's essential
21:39:14 <elliott> oerjan: oh, right.
21:39:20 <elliott> oerjan: i told you it doesn't type with that, either, but ok i'll try
21:39:35 <oerjan> yes, but with that _and_ the ps fixed to ps' ? :P
21:39:55 <elliott> oerjan: you'll never believe it
21:40:00 <oerjan> hm?
21:40:07 <elliott> oerjan: it works :P
21:40:11 * elliott generalises foldr's type to that too
21:40:11 <oerjan> yay :P
21:41:26 <oerjan> for foldl and foldl' you can give result just one type argument, i think, because the fixed src is in the right place to be combined into result
21:42:29 <elliott> oerjan: huh, so you can.
21:42:35 <elliott> oerjan: that upsets me though :( it's so inconsistent
21:42:52 -!- DCliche has joined.
21:43:27 <elliott> oerjan: :'(
21:43:37 <elliott> oerjan: it also feels wrong that the more natural fold is the one which needs more gunk
21:43:41 <oerjan> you can do that with foldr[']? too, but then as you say foldr (>>>) id won't type
21:44:08 <elliott> oerjan: not foldr (<|) empty either
21:44:49 <elliott> PSeq (~>) (b, d) (c, d) -> PSeq (~>) b c
21:44:50 <elliott> aaaaaaaa
21:44:56 <oerjan> because the type variable you want to combine is in the last place
21:45:18 <oerjan> wat
21:45:25 <oerjan> oh the loop
21:45:26 <elliott> oerjan: loop :: a (b,d) (c,d) -> a b c
21:45:30 <elliott> instance ArrowLoop (->) where
21:45:30 <elliott> loop f b = let (c,d) = f (b,d) in c
21:45:41 <elliott> god knows how to implement it for paths :P
21:45:48 <elliott> i suppose i want to tie each node to itself?
21:45:54 <elliott> or do i want to tie each node to the next node, and the last to the first...
21:46:02 -!- Darth_Cliche has quit (Ping timeout: 244 seconds).
21:46:18 <oerjan> you'd want to tie the final node to the first one?
21:46:32 <elliott> oerjan: that's what I said
21:46:38 <elliott> either that, or tie each node to itself, which seems useless
21:47:30 <monqy> does arrowloop have any laws
21:47:36 <elliott> monqy: "ow"
21:47:42 <elliott> (probably yes but they're in a paper)
21:47:46 <oerjan> it's entirely lawless and evil
21:47:49 <Ngevd> Learnt about Matrices in maths today
21:48:03 <Ngevd> Finally figured out what they're up to
21:48:06 <monqy> exciting?? I dislike matrices. yukce
21:48:19 <Ngevd> They were kinda dissapointing
21:48:24 <elliott> oerjan: oh well, I'll stick to the easy ones (ArrowZero, ArrowChoice)
21:48:26 <monqy> what did you expect
21:48:32 <oerjan> matrices are cool. just use a more interesting underlying ring :P
21:48:39 <Ngevd> monqy, I dunno, something interesting
21:48:43 <Gregor> elliott: Works on Alpha with no changes.
21:48:48 <Phantom_Hoover> Ngevd, you did graphs before matrices????
21:48:49 <Ngevd> oerjan, I don't think I need that at AS level
21:48:49 <elliott> oerjan: hmm...
21:48:53 <Ngevd> Phantom_Hoover, yup
21:48:56 <elliott> oerjan: I think you might want singleton id == empty
21:48:57 <elliott> oerjan: for PSeqs
21:49:01 <monqy> oerjan: there is nothing you can do to make matrices cool sory :(
21:49:07 <elliott> oerjan: when the path is a category
21:49:08 <Gregor> elliott: Have I mentioned that this JIT is magic and amazing :P
21:49:13 <elliott> Gregor: Yes.
21:49:29 <oerjan> elliott: if you do that, you need to elude _all_ singleton id's
21:49:35 <elliott> oerjan: yeah :P
21:49:36 <elliott> kinda tricky
21:49:44 <elliott> oerjan: ok, so this is a decent PSeq
21:49:51 <elliott> oerjan: now it need to be applied >:)
21:49:58 <elliott> oerjan: oh yeah, about MetaContext
21:50:09 <elliott> 04:25:05: <oerjan> data MetaContext = MetaContext { nwNeighbor :: MetaCursor (To NW), ..., up :: MetaCursor dir, signPost :: SignPost } -- it occurs to me that some field name disambiguation will be needed
21:50:12 <elliott> oerjan: are all neighbours present here?
21:50:17 <elliott> or is one elided?
21:51:05 <oerjan> all, i should think...
21:51:10 <oerjan> oh hm
21:51:21 <oerjan> there needs to be a Leaf version of that too
21:51:21 <elliott> oerjan: well the next question is "wtf is dir"
21:51:51 <oerjan> elliott: the usual, the direction this node is in relation to its parent
21:51:54 <ais523> elliott: hmm, I think you could make a stack-based solution work, but it's dubious that it's better than substitution in this case
21:52:03 <elliott> oerjan: so quantified?
21:52:06 <oerjan> elliott: oh should probably be From dir
21:52:15 <ais523> as far as I can tell, substitution is more space-efficient and equally time-efficient
21:52:26 <elliott> oerjan: what does the leaf version look like?
21:52:30 <Phantom_Hoover> Ngevd, wait, have you learnt matrix multiplication?
21:52:36 <elliott> ais523: well, OK
21:52:41 <oerjan> elliott: it has no neigbors, i'd think
21:52:48 <oerjan> only the up and the signPost
21:52:50 <elliott> oerjan: so just (MetaCursor dir, SignPost)?
21:52:50 <elliott> ok
21:53:02 <elliott> oerjan: what's the non-leaf case? aka name the constructor :P
21:53:09 <ais523> the problem is that the stack would only ever be pushed, and you'd have to GC the bottom of the stack when it went out of scope, which is nontrivial to determine
21:53:19 <Ngevd> Phantom_Hoover, just today
21:53:36 <Phantom_Hoover> Ngevd, matrix multiplication is the worst.
21:53:41 <monqy> it's awful
21:53:45 <Ngevd> It's messed up
21:53:47 <oerjan> InternalContext ?
21:53:52 <monqy> not really messed up
21:53:54 <monqy> just awful
21:54:01 <Phantom_Hoover> I need to stare into space for a minute to remember which way round everything is.
21:54:05 <Ngevd> I keep losing track of it
21:54:05 <monqy> yeah
21:54:19 <elliott> oerjan: um i was hoping for something short to compliment MCLeaf
21:54:31 <Phantom_Hoover> I think I've been taught it three different times by now.
21:54:47 <Ngevd> Sounds like you have a very good maths teacher
21:55:01 <Ngevd> We've been taught simultaneous equations a few dozen times
21:55:56 <Phantom_Hoover> Have you done them with MATRICES?
21:56:21 <Ngevd> Not yet
21:56:32 <Ngevd> We've been hinted at that we will shortly
21:56:35 <oerjan> > let mult m1 m2 = [[sum$zipWith(*)r1 c2 | c2 <- transpose m2]| r1 <- m1] in mult [[1,0],[0,2]] [[1,2,3],[4,5,6]]
21:56:36 <lambdabot> [[1,2,3],[8,10,12]]
21:56:47 <elliott> oerjan: MCFrom? MCTo? work with me here :P
21:56:57 <elliott> argh, the MC prefix clashes with MetaCursor
21:56:58 <oerjan> oh hm
21:57:04 <oerjan> MCInner
21:57:07 -!- pikhq has joined.
21:57:14 -!- pikhq_ has quit (Ping timeout: 258 seconds).
21:57:33 <Phantom_Hoover> Ngevd, and then, through some process that was never adequately explained to me, you use them for cross products.
21:57:37 <elliott> data MetaNode exit where
21:57:37 <elliott> MNFrom :: Neighbours1 MetaCursor dir
21:57:37 <elliott> -> MetaCursor (From dir)
21:57:37 <elliott> -> SignPost
21:57:37 <elliott> -> MetaNode (From dir)
21:57:38 <elliott> MNTo :: Neighbours MetaCursor -> SignPost -> MetaNode (To dir)
21:57:40 <elliott> MNLeaf :: LeafData -> SignPost -> MetaNode (To dir)
21:57:42 <elliott> data MetaContext where
21:57:44 <elliott> MCMInner :: Neighbours MetaCursor
21:57:46 <elliott> -> MetaCursor (From dir)
21:57:48 <elliott> -> SignPost
21:57:50 <elliott> -> MetaContext
21:57:52 <elliott> MCLeaf :: MetaCursor (From dir) -> SignPost -> MetaContext
21:57:54 <elliott> oerjan: somewhat of a resemblance
21:57:56 <elliott> s/MInner/Inner/
21:58:17 <Phantom_Hoover> And *then* you get to the second-order non-homogeneous differential equations god I hate second-order non-homogeneous differential equations.
21:58:29 <oerjan> elliott: yes, the difference is MetaNode has a distinguished exit
21:58:37 <elliott> ais523: an answer to the question "What exactly the error message is?" seen on a mailing list: "It's about glib lib."
21:58:44 <elliott> oerjan: right
21:58:57 <elliott> oerjan: it feels like i'd have half the types if everything took a list of directions to exclude on the type level :P
21:59:12 <Ngevd> Phantom_Hoover, I'm scared
21:59:13 <oerjan> heh
21:59:20 <Phantom_Hoover> Ngevd, YOU SHOULD BE
21:59:33 <Ngevd> > length "irregularwebcomic"
21:59:34 <lambdabot> 17
21:59:50 <Ngevd> That was irrelevant to this conversation
22:01:09 <elliott> oerjan: ok, you know what the next question is (or do you??)
22:01:46 * oerjan afraid
22:02:33 <elliott> oerjan: I need a space to play around with :P
22:02:49 <elliott> my leaf data is just String, so "" will work there, my IpId is just Int so that's easy, and my IpData is Double which can just be whatever
22:03:00 <elliott> what type do i want as the top-level "space with n cursors"?
22:03:34 <oerjan> MetaContext was sort of what i imagine as the "start-from-here" type
22:03:41 <elliott> ok
22:04:04 <elliott> oerjan: Leaf or Inner? :P
22:04:17 <Ngevd> Okay, if I ever say I'm going to install Haiku, can someone tell me I've already got the ISO and the image, and I need an SD card larger than 16MB
22:04:34 <oerjan> Leaf probably, since you would start on some actual befunge or what-it's-you're-doing cell spot
22:04:46 <elliott> oerjan: right
22:05:30 <elliott> oerjan: the SignPost should just be (Map.singleton 0 (Left pi)), right? if the IP ID is 0 and the data is pi
22:05:38 <oerjan> elliott: ah, might want a LeafData in the MCLeaf too
22:05:41 <elliott> ok :P
22:06:00 <oerjan> yeah i'd think
22:06:11 <elliott> alright, all I need is a MetaCursor (From dir) now
22:06:29 <elliott> data MetaCursor src where
22:06:29 <elliott> MCPlain :: PlainCursor src -> MetaCursor src
22:06:29 <elliott> MCPath :: MetaPath src dest -> MetaNode dest -> MetaCursor src
22:06:37 <elliott> oerjan: you'll never guess what the next question is
22:06:38 <oerjan> and since you're starting with only a cursor there, that MetaCursor should be MCPlain
22:07:22 <elliott> ok, and the type tells me I need PCFrom
22:07:30 <oerjan> MCPath only starts being used once you have two real cursors in different spots
22:08:06 <elliott> oerjan: hmm, I can get to the neighbours afterwards, but what should the PlainCursor of the same type that PCFrom wants be?
22:08:11 <elliott> oh, that's going upwards, right?
22:08:16 <elliott> as in, going "larger"
22:08:27 <oerjan> yeah
22:08:39 <elliott> oerjan: so it should be circular?
22:08:42 <oerjan> so From something
22:08:44 <elliott> because i have a completely empty space right now
22:08:49 <elliott> i.e.
22:08:51 <elliott> pc = PCFrom undefined pc
22:08:55 <elliott> PCFrom :: Neighbours1 PlainCursor dir
22:08:55 <elliott> -> PlainCursor (From dir)
22:08:55 <elliott> -> PlainCursor (From dir)
22:09:26 -!- Ngevd has quit (Quit: Goodbye).
22:09:54 <oerjan> well not entirely circular, things have types that change between the levels...
22:10:02 <elliott> oerjan: um that is impossible
22:10:04 <elliott> <elliott> -> PlainCursor (From dir)
22:10:04 <elliott> <elliott> -> PlainCursor (From dir)
22:10:06 <elliott> exact same type
22:11:01 <oerjan> oh hm so it is
22:11:28 <oerjan> i guess the level types got forgotten in the transition to this. maybe just as well :P
22:11:52 <elliott> oerjan: i'm not sure that would even work :P
22:12:03 <elliott> oerjan: it could be polymorphically recursive anyway i think
22:12:06 <oerjan> oh there's probably _some_ way
22:12:30 <elliott> ok, so now I need a (Neighbours1 PlainCursor dir)
22:12:43 <elliott> let's pick dir ~ NW :P
22:12:53 <elliott> so (Neighbours1 PlainCursor NW)
22:12:56 <elliott> Neighbours1NW :: t (To NE) -> t (To SW) -> t (To SE) -> Neighbours1 t NW
22:13:06 <elliott> oerjan: time for polymorphic recursion, right?
22:13:12 <elliott> (Neighbours1NW pc pc pc)
22:13:21 <elliott> oh, no!
22:13:23 <elliott> pc is a PCFrom
22:13:24 <elliott> I need a To
22:13:33 <elliott> PCTo :: Neighbours PlainCursor -> PlainCursor (To dir)
22:13:33 <elliott> PCLeaf :: LeafData -> PlainCursor (To dir)
22:13:47 <elliott> oerjan: ok, help me out here :P I want an infinite space with "" on all the leaves
22:13:48 <oerjan> i'm not sure i understand your Neighbors1 stuff
22:13:59 <elliott> oerjan: Neighbours1 t dir is just t (To dir') for all dir ~/~ dir'
22:14:15 <elliott> to abstract all the "twenty constructors because we have a neighbour for every other direction" crap
22:14:23 <oerjan> oh hm
22:14:37 <oerjan> elliott: there's an error there i think
22:14:42 <elliott> oh no
22:15:15 <oerjan> the dir in the second argument to PCFrom is the up dir, so should be unrelated to the others
22:15:16 <elliott> oerjan: i was curious indeed because it seemed like I either had to make a finite space or have no leaves
22:15:33 <oerjan> iiuc
22:15:42 <elliott> one second then
22:16:17 <elliott> PCFrom :: Neighbours1 PlainCursor dir
22:16:17 <elliott> -> PlainCursor (From dir')
22:16:17 <elliott> -> PlainCursor (From dir)
22:16:18 <elliott> oerjan: yus?
22:17:37 <oerjan> yeah
22:17:39 <elliott> test :: MetaContext
22:17:39 <elliott> test = LeafCtx "" mc (SignPost $ Map.singleton 0 (Left pi))
22:17:39 <elliott> where mc = MCPlain pc
22:17:39 <elliott> pc = PCFrom (Neighbours1NW pc' pc' pc') pc
22:17:39 <elliott> pc' :: PlainCursor (To dir)
22:17:40 <elliott> pc' = PCLeaf ""
22:17:43 <elliott> oerjan: that's an infinite space of ""s, right?
22:18:25 <oerjan> that's wrong though, the pc part
22:18:46 <elliott> oerjan: :(
22:19:00 <oerjan> you need to include the level as an Int argument or something, so you know how far to go _down_ again before hitting leaves
22:19:32 <oerjan> so mc = MCPlain (pc 0)
22:19:58 <elliott> oerjan: hmm, and what does pc look like then?
22:20:08 <ais523> what program are you discussing, btw? Shiro?
22:20:15 <oerjan> pc n = PCFrom (Neighbours1NW (pc' n) (pc' n) (pc' n)) (pc (n+1))
22:20:31 <oerjan> pc' 0 = PCLeaf ""
22:20:33 <elliott> ais523: yes
22:21:01 <elliott> oerjan: ok
22:21:10 <elliott> oerjan: pc' n?
22:21:21 <oerjan> pc' n = PCTo (pc' (n-1)) (pc' (n-1)) (pc' (n-1)) (pc' (n-1))
22:21:28 <oerjan> or something like that
22:21:42 <elliott> oerjan: (and out of curiosity, what kind of space did I produce with my erroneous version? it certainly /types/
22:22:29 <oerjan> a space where you go up just fine, but where going down from anywhere other than the "trunk" gives you a leaf _immediately_
22:22:33 <oerjan> i think.
22:22:43 <oerjan> *down to
22:22:53 <elliott> oerjan: ah.
22:22:58 <elliott> oerjan: that doesn't sound like normal 2d space :-)
22:23:06 <oerjan> indeed not :P
22:23:23 <elliott> oerjan: imagining that is hurting my head :P
22:24:09 <oerjan> it's like shrinking every quadtree region other than those containing your starting point into a single leaf
22:24:48 <elliott> test :: MetaContext
22:24:48 <elliott> test = LeafCtx "" mc (SignPost $ Map.singleton 0 (Left pi))
22:24:48 <elliott> where mc = MCPlain (pc 0)
22:24:48 <elliott> pc n = PCFrom (Neighbours1NW (pc' n) (pc' n) (pc' n)) (pc (n+1))
22:24:48 <elliott> pc' :: Int -> PlainCursor (To dir)
22:24:49 <elliott> pc' 0 = PCLeaf ""
22:24:51 <elliott> pc' n = PCTo (Neighbours (pc' (n-1)) (pc' (n-1)) (pc' (n-1)) (pc' (n-1)))
22:24:53 <elliott> oerjan: success
22:25:02 <oerjan> ah
22:25:22 <elliott> oerjan: I would use Integer, but... good luck allocating that much
22:26:07 <elliott> oerjan: ok, so now for the question that will make you _really_ hate me.
22:26:12 <oerjan> if you gave To and From type level integer arguments... >:)
22:26:23 <elliott> oerjan: how do I make the focused cursor go east? :-)
22:26:36 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
22:27:16 <oerjan> well, in this case you'd first go up, then To NE
22:29:02 <elliott> oerjan: so would it be MetaContext -> MetaContext?
22:29:08 <oerjan> i guess
22:30:02 <elliott> oerjan: reassuring :P
22:30:09 <oerjan> food ->
22:32:22 <Gregor> elliott: Don't read too much into this question, but which words are absolutely fundamental to Forth?
22:32:50 <elliott> Gregor: Forth as in "like ANS Forth", or "like /Forth/" as in "particularly high in Forthiness"?
22:32:58 <elliott> (colorForth is more /Forth/ than ANS Forth, but not very ANS Forth at all)
22:33:07 <Gregor> elliott: Basically Forth flavored.
22:33:08 <Phantom_Hoover> Heh, the sun's core produces about as much heat per cubic metre as a compost heap.
22:33:17 <elliott> Gregor: But take a look at jonesforth, and previous IOCCC entry -- what was it called -- fifth?
22:33:26 <elliott> Gregor: http://www.ioccc.org/1992/buzzard.2.design
22:33:28 <Gregor> elliott: But was it a JIT :P
22:33:38 <elliott> Gregor: See also other buzzard files in http://www.ioccc.org/1992/
22:33:43 <elliott> Gregor: And all Forths are JITs.
22:34:06 <elliott> Gregor: Erm, buzzard.2 that is.
22:34:11 <Gregor> elliott: They certainly ought to be, but if there's already been a JIT in IOCCC, URGGGGGGH
22:34:27 <elliott> And http://www.ioccc.org/1992/third of course.
22:34:31 <elliott> Gregor: Well, no.
22:34:32 <pikhq> Gregor: A threaded code JIT is a little bit different from what you're doing, of course.
22:34:37 <elliott> Gregor: buzzard is just a freaky-deaky little thing.
22:34:50 <Gregor> A threaded-code JIT ain't a JIT, it's a bytecode interpreter.
22:34:56 <pikhq> BAH
22:35:04 <pikhq> Thee and thy making more sense than I
22:35:06 <elliott> Gregor: A bytecode interpreter that doesn't have an interpreter loop...
22:35:10 <pikhq> s/Thee/Thou/
22:35:15 <Gregor> elliott: So?
22:35:27 <elliott> Gregor: An interpreter loop is sort of the defining feature of an interperter.
22:35:37 <Gregor> elliott: (I mean, it's good fun, but "So?" in the not-competing-with-my-niche sense)
22:35:44 <elliott> Gregor: Well, sure.
22:35:53 <elliott> Gregor: "Traditionally" JITting Forth is pretty heretical, anyway :P
22:36:08 <pikhq> elliott: Oh, it has an interpreter loop. Which has been placed at the end of every primitive. :P
22:36:12 <elliott> Gregor: Pretty sure first (buzzard.2) has an interpreter loop for the threaded code, anyway.
22:36:30 <Gregor> I was just thinking that really there's nothing at this point that's holding me to my particularly-bad language choice.
22:37:06 <elliott> Gregor: I think the judges might be unimpressed with "minimalistic Forth-like with most primitives implemented in itself", since that's exactly what FIRST/THIRD did so spectacularly :P
22:37:11 <elliott> And in under 500 bytes.
22:37:17 <elliott> (With indentation etc.!)
22:37:25 <elliott> Gregor: So, change your language, but probably not to something Forthy.
22:37:30 <Gregor> Fair 'nuff.
22:37:48 <pikhq> Go more functional.
22:37:59 <pikhq> (note: don't)
22:38:01 <elliott> I don't think his JIT would be any good at that :P
22:38:07 <Gregor> Indeed it would not.
22:38:16 <pikhq> elliott: He'd also want a GC if he wanted to do it right. :P
22:38:18 <elliott> Gregor: ...OTOH, a mini-Lispalike might be interesting :P
22:38:24 <Gregor> >_>
22:38:33 <elliott> Lisp isn't exactly a functional language anyway. But I realise you have biases :P
22:38:34 <pikhq> Aaaand, if you pull off a GC in the size restrictions, you are God.
22:38:45 <Gregor> Yeah, the GC is the real thing thar :P
22:38:50 <elliott> Ehhhhhh
22:38:55 <elliott> Lisp programs don't cons THAT much.
22:38:58 * Gregor taps his foot ...
22:39:09 <elliott> Especially if you offer mutation of conses.
22:39:09 <Gregor> Yeah, I'm gettin' awfully close to the size restriction as stands.
22:39:13 <Gregor> 1888 bytes at last count.
22:39:47 <elliott> Gregor: I still think if you can't impress people with an interesting language, impressing them with an end result is almost as good.
22:39:55 <elliott> i.e. Write a program that does something fancy :P
22:41:09 <elliott> Gregor: Do you manually turn full.c into jitchards.c?
22:41:11 <elliott> Harsh.
22:42:13 <Gregor> elliott: Uhhh, thusfar all I've done is selected areas of code in visual mode and G-Q in vim.
22:42:24 <elliott> X-D
22:42:39 <elliott> Gregor: Not true: You use 9<<25 in jitchards.c but W in full.c
22:42:53 <Gregor> elliott: I haven't updated jitchards.c in a while.
22:45:06 <elliott> Gregor: Whoops, accidentally forked jitchards :P
22:45:13 * elliott deletifies.
22:45:37 <Gregor> elliott: >_> Does bitbucket let me prevent that I wonder
22:45:45 <elliott> Gregor: It was privately, since I didn't futz with the boxes.
22:45:51 <Gregor> Ah
22:45:58 <elliott> Gregor: (It was only slightly "accidental" :P)
22:47:39 <elliott> Gregor: BTW, I would test with gcc 3 too >_>
22:48:05 <elliott> Gregor: I find it really hard to believe that IOCCC isn't run on some ancient IRIX box :P
22:48:17 <elliott> EVEN IF THEY DO HAVE A TWITTER
22:48:27 <Gregor> X-D
22:49:10 <elliott> Gregor: "On the Vax main is called with
22:49:10 <elliott> the calls instruction which uses the first word of the subroutine as a
22:49:10 <elliott> mask of registers to be saved. So on the Vax the first word can be anything."
22:49:19 <elliott> -- http://www.ioccc.org/1984/mullender.hint, the famous "main is a string" prorgam, referenced from the FAQ
22:49:22 <elliott> Gregor: That explains your VAX troubles :)
22:49:42 <Gregor> elliott: I fixed my VAX troubles (now I'm having different VAX troubles)
22:49:50 <elliott> VAX troublen.
22:53:03 <elliott> Gregor: Come on, laugh :'(
22:54:12 <elliott> Wow, IOCCC have a standard entry format :P
22:54:16 <elliott> As in, custom file format...
22:56:56 <elliott> "mentioning your name or any identifying information in the remark section (or in the C code for that matter) - we like to be unbiased during the judging rounds; we look at the author name only if an entry wins"
22:56:56 <elliott> Heh
22:57:23 <elliott> Gregor: Looks like you can't submit a makefile, just makefile lines
22:58:03 -!- Darth_Cliche has joined.
22:58:28 * Phantom_Hoover → sleep
22:58:29 -!- Phantom_Hoover has quit (Quit: Leaving).
22:58:38 <elliott> Ooh, they tell you to test on a UNIX or POSIX-conforming machine. Gregor: You're going to have to test it on OS X.
22:58:47 <elliott> Wait.
22:58:56 <Deewiant> Interix
22:58:57 <elliott> It says conforming, not "said to be conformant by people with money".
22:59:04 <elliott> Gregor: Your chances of fulfilling their guidelines are 0.
22:59:36 <elliott> "Your entry must compile with GCC and run under at least one flavor of UNIX (e.g. Linux or Solaris). To improve chances to win, it should work under both BSD and SysV style UNIX (think stty cbreak), and should not depend on endianness."
22:59:42 <elliott> Aww, "style".
22:59:46 <elliott> I was hoping they tested on real live SysV.
23:00:47 <olsner> what is stty cbreak and why would it be relevant for an ioccc entry?
23:01:19 <elliott> "$BSD = -f '/vmunix';
23:01:19 <elliott> if ($BSD) {
23:01:19 <elliott> system "stty cbreak /dev/tty 2>&1";
23:01:19 <elliott> }
23:01:19 <elliott> else {
23:01:19 <elliott> system "stty", '-icanon',
23:01:21 <elliott> system "stty", 'eol', "\001";
23:01:23 <elliott> }"
23:01:25 <elliott> -- ancient perl faq
23:01:27 <elliott> Presumably you have to do the latter on sysv
23:01:33 -!- DCliche has quit (Ping timeout: 260 seconds).
23:01:43 <elliott> IOCCC entries are allowed to call system()
23:01:56 <olsner> mmkay... the question is, what does it do? :)
23:02:33 <elliott> Puts the terminal into rare mode, methinks
23:02:42 <elliott> As in, ^C and the like still send signals, but apart from that it's raw and unbuffered
23:02:59 <elliott> So, useful for console tricks and the like
23:03:45 <elliott> http://www.opensource.apple.com/source/gnuzip/gnuzip-28/gzip/zmore.in oh my god, is this real
23:09:08 <pikhq> Funny, I call that "less".
23:09:28 <pikhq> Yay, LESSOPEN.
23:15:31 <elliott> hey oerjan
23:15:35 <elliott> EAST >:)
23:17:26 <elliott> ais523: i note that NEF might give you problems whenever you neeed a circular structure
23:20:34 <Gregor> <elliott> "Your entry must compile with GCC and run under at least one flavor of UNIX (e.g. Linux or Solaris). To improve chances to win, it should work under both BSD and SysV style UNIX (think stty cbreak), and should not depend on endianness." // nothing I do is especially OS-dependent.
23:20:40 <Gregor> elliott: I see no reason why it wouldn't work on SysV.
23:21:06 <elliott> More like System... SUCKS
23:23:08 <elliott> ais523: hmm, why does substat take both v and c?
23:23:12 <elliott> ais523: or is one of them always Error?
23:25:27 -!- augur has quit (Remote host closed the connection).
23:25:32 <ais523> it takes both v and c when substituting in a type 2 value; and v and error when substituting in a type 1 value
23:25:41 <ais523> to avoid code duplication
23:26:52 <elliott> ais523: wait, type 2 values have two values?
23:27:07 <elliott> hmm, substituting "in"
23:27:10 <ais523> wait, hmm
23:27:27 <elliott> ais523: do the two arguments to a type-2 function have the same number?
23:27:38 <ais523> elliott: yes, at definition site
23:27:41 <ais523> and which is used depends on context
23:28:02 <ais523> aha, what's happening is that substat is doing two substitutions simultaneously, one on c, one on v
23:28:02 <elliott> ais523: context being, the type it's used in?
23:28:07 <ais523> yep
23:28:10 <elliott> OK
23:28:21 <ais523> you can always tell what type something is from where it is in the program, and the two args always have different types
23:28:35 <ais523> the interp I pasted actually adds a suffix, "c" for type 1 or "v" for type 2
23:28:44 <ais523> (because suffixing numbers with numbers doesn't really work well)
23:28:57 * elliott thinks you should call the types c and v instead
23:29:12 <Gregor> elliott: OK, it seems my biggest VAX bug was outright stupidity.
23:29:37 <Gregor> elliott: Using e where I meant x, thereby making the place I'm JITting into point off into the text segment.
23:30:40 <elliott> I mean, c and v are much nicer names than 1 and 2. Probably.
23:32:38 <elliott> ais523: Actually I'm just going to call them c in v in my implementation.
23:32:40 <elliott> You can't stop me.
23:32:42 * elliott rebel
23:32:48 <ais523> fair enough
23:33:02 <ais523> 1 and 2, I find more memorable, because 1 args and 2 args
23:34:24 <elliott> ais523: (VarC 0) is always illegal in the body of a c-lambda right?
23:34:29 <elliott> because it only has one argument, of type V
23:34:45 <ais523> elliott: if 0 refers to the c-lambda itself, yes
23:34:58 <ais523> it's obviously legal if there are other lambdas in between, so that 0 has a different referent, and refers to a v-lambda
23:35:09 <elliott> that's not what "refers to" means, your terminology is awful
23:35:43 <ais523> err, refers to the variables of the c-lambda
23:35:46 <ais523> (which there is only one of)
23:36:35 <Gregor> elliott: ... ... actually it doesn't work on OS X :P
23:36:39 <elliott> Gregor: lol
23:37:36 <ais523> some sort of anti-JIT security feature?
23:37:59 <Gregor> ais523: Nope, just more nonsense.
23:38:23 <Gregor> ...
23:38:23 <Gregor> 00001f1a leave
23:38:23 <Gregor> 00001f1b ret
23:38:23 <Gregor> 00001f1c calll 0x00037f14
23:38:45 <Gregor> "I thought I'd just call this absolute address after returning. Made sense at the time. Good luck finding an epilogue here.
23:38:47 <Gregor> "
23:39:30 <monqy> callllllllll
23:39:47 <Gregor> monqy: Dood, it's gonna call the HELL out of that function.
23:40:07 <monqy> what IS that function
23:41:04 <ais523> presumably the function that gets called after a return statement returns
23:41:16 <ais523> it probably says "error: backwards return" or something like that
23:41:25 <elliott> error: help
23:41:38 <elliott> maybe os x has built-in coroutine support
23:41:44 <elliott> you can "ter" to jump to just after the last ret
23:41:53 <elliott> and it restores the registers and shit, by using a spaghetti stack
23:42:07 <elliott> and that's calling the "resumed non-coroutine" function
23:42:09 <elliott> makes perfect sense!
23:45:59 <elliott> ais523: hmm, I think substat is doing the work of about three functions :P
23:46:11 <ais523> yep, seems about right
23:46:17 <ais523> it was four or five earlier but I realised I didn't need some of htem
23:46:18 <ais523> *them
23:47:08 <Gregor> elliott: Out of curiosity, have you tried to run my JIT?
23:47:10 <elliott> ais523: you only ever need one function, actually!
23:47:15 <elliott> Gregor: Hell no; should I?
23:47:18 <Gregor> elliott: 'cuz so far all I really know is that it works on all these systems for me :P
23:47:56 <elliott> Gregor: I'm on boring x86-64/Linux/gcc 4.6
23:48:15 <elliott> Gregor: Try it on ZETA C
23:48:23 <Gregor> lol
23:48:27 <Gregor> Yeah, that'll work well.
23:48:36 <elliott> Gregor: Bignum int, pointers are cons pairs... what could go wrong?
23:49:45 <ais523> try it in bcc (a 16-bit C compiler)
23:49:49 <ais523> (that, umm, only understands K&R, I think)
23:50:24 <elliott> ais523: That's actually a decent idea
23:50:32 <elliott> Gregor: Do that (it has a flag to automatically run unprotoize before compilation)
23:51:01 <pikhq> elliott: sizeof(int) must be frightening
23:51:17 <Gregor> ais523: 16-bit won't ever work.
23:51:44 <ais523> TIL that pikhq is frightened of 2
23:51:54 <pikhq> ais523: Bignum int.
23:52:03 <ais523> oh, I see
23:52:09 <ais523> wrong context
23:53:52 <elliott> ais523: 2 is pretty terrifying
23:54:31 <Gregor> Incidentally, there are less-shitty i86 compilers out there :P
23:54:51 <Gregor> i.e. owcc (wow, it's amazing to categorize owcc as LESS shitty than anything)
23:54:58 <Gregor> s/i\.e\./e.g./
23:56:04 <elliott> ais523: so, the Exp inside a CallC -- sorry, the program inside a Call1 -- has a new binding in scope, right?
23:56:22 <elliott> and the programs inside a Call2 each have a new c binding and a new v binding with the same number (the same binding on each arm?)
23:56:29 <ais523> yep, I think so
23:56:50 -!- ais523 has quit (Quit: 2).
23:57:08 <elliott> /quit 2
2011-11-17
00:00:42 <Gregor> elliott: Shoot ... I don't think I can make VAX work :(
00:00:46 <elliott> Gregor: :(
00:00:47 <monqy> :(
00:01:43 <pikhq> Butbut all the world's a VAX!
00:02:14 <Gregor> It's CISC but (apparently?) functions have to be 16-bit aligned!
00:02:42 <oerjan> data ExitVal = To DirVal | From DirVal; data DirVal = NW | NE | SW | SE; class Exit e where exitVal :: p e -> ExitVal; instance Dir d => Exit (To d) where exitVal x = To (dirVal x); ... class Dir d where dirVal :: p d => DirVal; instance Dir NW where dirVal _ = NW; ...
00:02:49 <Gregor> I can't really cope with function alignment not being the same as the smallest opcode.
00:02:52 <elliott> Gregor: Just align everything?
00:02:58 <oerjan> i think something like that is needed to actually _test_ these directions
00:03:03 <elliott> Gregor: It shouldn't hurt to align everything to n * size of smallest opcode for smoe n
00:03:04 <elliott> some
00:03:42 <oerjan> hm why did i write p, i was going to use t...
00:03:55 <elliott> data ExitVal = To DirVal | From DirVal; data DirVal = NW | NE | SW | SE;
00:03:58 <elliott> i already have those
00:04:08 <oerjan> ah
00:04:09 <elliott> without the reification stuff, though
00:04:11 <elliott> but i can add that
00:04:36 <oerjan> and also a bunch of the datatypes need Dir dir => contexts for their quantified types
00:04:51 <oerjan> otherwise they might be type erased entirely
00:04:56 <elliott> oerjan: this is so you can "ascend SW" or whatever right?
00:05:59 <pikhq> Gregor: The crap?
00:06:09 <oerjan> no, this was primarily so i can look at a gadt value and actually find out which dirs it _uses_ inside
00:07:10 <elliott> oerjan: ah.
00:07:14 * Gregor reappears.
00:07:15 -!- augur has joined.
00:07:17 <elliott> oerjan: mightn't a type family fit better? perhaps not
00:07:20 <Gregor> elliott: It's not the codegen that's the problem.
00:07:25 <Gregor> elliott: It's pro/epilogue detection.
00:07:32 <elliott> Gregor: Alright
00:07:38 <oerjan> i dunno, if you see how...
00:07:46 <oerjan> i'm not so familiar with them.
00:07:50 <Gregor> <pikhq> Gregor: The crap? // the crap what?
00:08:50 -!- CakeProphet has joined.
00:08:50 -!- CakeProphet has quit (Changing host).
00:08:50 -!- CakeProphet has joined.
00:09:39 <pikhq> 16-bit alignment for functions?
00:09:40 -!- Slereah has joined.
00:09:41 <pikhq> *16* bit?
00:10:39 <Gregor> Ayup :P
00:10:42 -!- Slereah_ has quit (Ping timeout: 244 seconds).
00:12:22 <Gregor> Still, even without VAX, I feel that x86[_64], SPARC, MIPS[el], ARM, PPC, Alpha is a pretty good list.
00:26:45 -!- CakeProphet has quit (Ping timeout: 258 seconds).
00:31:56 -!- augur has quit (Remote host closed the connection).
00:44:54 <elliott> oerjan: go on... :P
00:49:12 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:51:33 -!- tiffany has quit (Quit: nyu~).
00:57:24 <elliott> oerjan: :(
00:58:34 <oerjan> the problem is, i'm actually fed up of this already
00:58:45 <oerjan> (in case that wasn't obvious)
00:58:48 * elliott creys
01:01:48 <elliott> oerjan shall forever be known as the person who sided with the finns and swedes
01:02:14 <oerjan> wut
01:02:21 <elliott> deewiant and vorpal
01:02:34 <elliott> JUST SAYING
01:05:21 -!- pikhq_ has joined.
01:07:38 -!- pikhq has quit (Ping timeout: 252 seconds).
01:11:01 <elliott> oerjan has now committed seppuku.
01:11:16 <oerjan> brains...
01:11:24 <monqy> hi
01:11:27 -!- Sgeo|web has joined.
01:11:30 <oerjan> hi brains
01:11:49 <Sgeo|web> Hi
01:11:52 <elliott> oerjan: i will now pester monqy for the algorithm instead to make you feel bad.
01:11:58 <elliott> monqy: hi algorithm
01:12:02 <monqy> what algorithm :(
01:12:03 <monqy> hi
01:12:04 <oerjan> fancy
01:12:36 <Sgeo|web> Ok, two different people in two different chatrooms greeted with pluralization...
01:12:50 <Sgeo|web> Although I assume "brains" is just a part of context of prior conversation
01:13:08 <elliott> monqy: east algorithm
01:13:16 <elliott> oerjan is too scandinavian to tell me the secrets
01:13:18 <monqy> east algorithm
01:13:50 <monqy> what is east algorithm what are you talking about ;_; ;_;; _;;;;;
01:14:06 <monqy> iv'eb eeeen too busy python to pay attenteion :(
01:14:59 <oerjan> well basically you need to go up in a quadtree, then in the right direction to end up east of where you were. the trouble is all the extra scaffolding of data which makes even those steps insanely tricky
01:15:55 <elliott> oerjan: i'm going to give it a shot myself, and if i fail i will die HOPE YOU FEEL GOOD
01:17:26 <oerjan> yay
01:17:31 <oerjan> i mean, aww
01:17:51 <elliott> oerjan: um out of curiosity is the "p" used in exitVal/dirVal just standing in for Proxy or similar?
01:17:58 <elliott> or do you actually plan to apply them to MetaNodes or something
01:18:02 <oerjan> Sgeo|web: BRAINS...
01:18:49 <oerjan> elliott: as i said, i really wanted it to be t, similar to in your Neighbors* types
01:19:06 <elliott> right
01:19:07 <oerjan> elliott: and yes, the idea was to just be able to put in any of those
01:20:27 <elliott> oerjan: otoh it fails slightly because you have "p (To NW)" and you apply dirVal to it but dirVal is expecting "p NW"...
01:20:42 <oerjan> oh hm
01:21:10 <elliott> oerjan: it's easy enough to make a proxy out of it though
01:21:22 <elliott> a (b c) -> Proxy c :p
01:21:27 <oerjan> yeah. whatever you think easiest.
01:21:28 <elliott> or just use scoped type variables
01:21:50 <oerjan> erm, scoped type variables are tricky with gadts
01:22:00 <oerjan> it seemed to me
01:22:19 <oerjan> it doesn't capture those that appear from pattern matching
01:22:25 <elliott> er I meant
01:22:28 <elliott> instance (DirectionType dir) => ExitType (To dir) where
01:22:28 <elliott> exitVal = To $ directionVal (Proxy :: Proxy dir)
01:22:33 <elliott> not replacing the whole mechanism with them
01:22:43 <oerjan> ah
01:22:48 <elliott> it avoids a silly "a (b c) -> Proxy c" function to make the types work out
01:25:09 <elliott> time to write "ascend :: MetaContext -> MetaContext"...
01:25:29 -!- augur has joined.
01:26:27 <oerjan> to find out how that changes the structure, it is necessary to know how many of the neighbors of the source and destination node lead to other real cursors
01:27:03 <elliott> ugh.
01:27:24 <elliott> oerjan: btw, I'm not sure a class actually /is/ needed, because everything ends up containing Neighbours, and you can pattern-match on those to determine which direction is being used >:)
01:27:39 <elliott> in other words: /me adds class contexts to everything
01:27:48 <oerjan> elliott: not leafs, i thought...
01:27:54 <elliott> well probably not :P
01:29:19 <oerjan> because if you are leaving a node with > 2 such neighbors, it gets turned into a MetaNode, while if it has 1, it gets merged into that one's MetaPath, while if it has 0, it and its neighbors get turned into a PlainCursor.
01:29:32 <oerjan> er, * >= 2
01:29:53 <oerjan> oh, excluding neighbors in the direction you are going, of course
01:31:23 <oerjan> ah and of course if there is another real cursor on the node _itself_, it always becomes a MetaNode.
01:31:45 * elliott is getting very suspicious of these very-similar data types that seem to give rise to a bunch of special cases.
01:31:58 <oerjan> heh
01:32:36 <oerjan> a MetaNode either contains a real cursor or is sort of a crossing whose signPost tells you how to get to other real cursors
01:33:45 <elliott> i am also kind of suspicious of how the "zipper of tree of zippers" thing is sort of tied to the zippers themselves
01:33:56 <oerjan> hm?
01:34:14 <elliott> well, it seems like you should be able to do that completely separately from the zipper operations themselves.
01:35:18 <elliott> oerjan: also, I think SignPost is broken. there's nowhere to stash the IpData when switching cursor
01:35:51 <oerjan> wasn't it Either IpData Exit?
01:36:06 <elliott> yes, but presumably you have to change it to the relevant Exit when switching cursors...
01:36:13 <elliott> since you use the SignPost to figure out whether you're at a given cursor or not
01:36:16 <elliott> and if not, how to get to it
01:37:32 <oerjan> well when you leave a node carrying a cursor, you change that node's signPost from containing the ipData to containing the exit, of course; at the same time you change the node you're going to to contain the ipData
01:37:55 <elliott> oh
01:38:00 <elliott> that makes sense :P
01:38:57 <oerjan> it may be that the entire SignPost gets moved to the new node, if the old one is packed into a MetaPath while the new one became unpacked from one
01:39:08 <elliott> it seems like the leaf data should contain the IpId
01:40:19 <oerjan> well... i guess cursors that aren't in the move will always be on leaves
01:40:21 -!- pikhq has joined.
01:40:44 <elliott> oerjan: well otherwise I have to scan the entire signpost just to find the value that's Left
01:41:13 <oerjan> erm, you just lookup your current ip, surely
01:41:32 <oerjan> there can be more than one ip at the same spot, too
01:41:36 <elliott> oerjan: how
01:41:39 <oerjan> so more than one Left
01:41:41 <elliott> LeafCtx :: (Direction dir)
01:41:41 <elliott> => LeafData
01:41:41 <elliott> -> MetaCursor (From dir)
01:41:41 <elliott> -> SignPost
01:41:41 <elliott> -> MetaContext
01:42:14 <oerjan> the SignPost can contain more than one ip key whose value is Left ...
01:42:16 -!- pikhq_ has quit (Ping timeout: 244 seconds).
01:42:26 <oerjan> corresponding to two ips in the same cell
01:42:30 <elliott> oerjan: well, okay. I was going by <oerjan> well when you leave a node carrying a cursor, you change that node's signPost from containing the ipData to containing the exit, of course; at the same time you change the node you're going to to contain the ipData
01:42:51 <oerjan> oh, only for the ip key you are actually _moving_
01:43:24 <oerjan> /cursor
01:43:53 <elliott> oerjan: right. and how am i suppose to determine which one that is?
01:44:08 <oerjan> oh right, i forgot about that...
01:44:13 <elliott> lol
01:44:18 <oerjan> you should take the ip as an argument to ascend
01:44:28 <elliott> ok
01:46:28 * elliott idly wonders about a data structure that acts as a set of bytestrings; given a hash of one of the bytestrings, you can get the bytestring out, and given a hash that matches none of the bytestrings in the set, you can determine that it isn't present; but (a) it is unfeasible (brute-forcey) to get a valid hash out of the data without knowing one, and (b) it is unfeasible to access any bytestring without knowing its hash
01:46:47 <elliott> I was thinking you could encrypt each bytestring with its hash as the key, but you need a way to go from the hash to that data, and that ends up storing the hash itself...
01:47:01 <elliott> ooh: you could implement it as a lookup table from a hash of the hash to the bytestring encrypted with the hash
01:47:11 <elliott> then doing (a) or (b) requires reversing the hash function
01:48:09 <oerjan> i'm sure this must have been investigated
01:48:33 <elliott> probably, but i have no idea what i would google for
01:49:19 -!- derdon has quit (Remote host closed the connection).
01:49:32 -!- CakeProphet has joined.
01:49:32 -!- CakeProphet has quit (Changing host).
01:49:32 -!- CakeProphet has joined.
01:49:38 <CakeProphet> hi.
01:50:00 <CakeProphet> okay so when I convert the integer 5 to a float via c-style casting in C++
01:50:08 <CakeProphet> that is 5.0 correct?
01:50:14 <CakeProphet> or is it something weird?
01:50:20 <oerjan> elliott: hm, all the difficulty in implementing that is in implementing one-point sets, i think
01:50:27 <oerjan> then you can just make a list of them
01:50:38 -!- copumpkin has changed nick to luke-sr.
01:50:53 <oerjan> assuming you don't consider iterating through all too expensive
01:50:54 -!- luke-sr has changed nick to copumpkin.
01:52:20 <elliott> oerjan: that is indeed too expensive.
01:52:29 <elliott> CakeProphet: yes
01:52:46 <oerjan> oh hm of course you could simply use the hash to look the right one up in a hashtable
01:53:21 <oerjan> oh hm i didn't read (a) properly
01:53:34 <elliott> oerjan: you could do that and not store the keys
01:53:45 <elliott> so it's O(n) in how many hashtable collisions there are to look up
01:53:54 <elliott> oh wait
01:53:58 <elliott> yeah that works
01:53:59 <oerjan> um wouldn't (a) make it impossible to _construct_ your data structure?
01:54:12 <CakeProphet> elliott: ah okay, see I thought differing representations of would mess things up, but... I guess not?
01:54:13 <oerjan> from the data you want to put in it
01:54:22 <CakeProphet> *of floats and ints
01:54:32 <elliott> oerjan: well, with my proposed solution: table[hash(hash(data))] = encrypt(data, key=hash(data))
01:55:52 <CakeProphet> or is it that c-style case in C++ does nice automatic conversion, with reinterpret_cast being an actual C-like cast?
01:55:56 <CakeProphet> help I am C nub.
01:56:02 <CakeProphet> s/case/cst/
01:56:05 <CakeProphet> wehriuheriuhwUEHR UW EHRU HWUEIRH YU23H 78H
01:57:42 -!- pikhq has quit (Read error: Connection reset by peer).
01:57:58 -!- pikhq has joined.
01:58:42 <CakeProphet> it's times like this that I wish my data structures course was in Haskell. :P
01:59:33 <CakeProphet> > 5 `div` 2
01:59:34 <lambdabot> 2
01:59:36 <CakeProphet> > 5 / 2
01:59:37 <lambdabot> 2.5
02:01:22 <CakeProphet> elliott: hey I'm making a hash table too!!! :D :D :D :#
02:01:32 <elliott> oerjan: does that not work?
02:01:46 <oerjan> @hoogle ($!!)
02:01:46 <lambdabot> Control.DeepSeq ($!!) :: NFData a => (a -> b) -> a -> b
02:01:54 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
02:02:24 <oerjan> elliott: oh, i don't trust myself to judge that
02:02:40 <elliott> oerjan: heh
02:02:56 <Sgeo|web> CakeProphet: Would you learn purely functional queues, or do structures that could only be used in ST?
02:03:12 <CakeProphet> Sgeo|web: good question. depends on the structure.
02:03:24 <CakeProphet> hash table would be IO/ST, trees would be pure.
02:03:58 <CakeProphet> I don't think you could cram Haskell + data structures into one course though. not effectively anyway
02:04:10 <CakeProphet> you'd want an intro Haskell course followed by a data structures course.
02:05:56 <CakeProphet> well, not all trees would be pure I guess. but then... hmmm
02:07:00 <CakeProphet> well really the data structures you'd want to use in Haskell are not the ones you'd want to use in C++, I think.
02:07:13 <CakeProphet> can you do tree rotations in pure Haskell efficiently?
02:12:07 <oerjan> O(log n)
02:12:54 <oerjan> to insert/delete and rebalance
02:18:43 <Gregor> Whose Line is it Anyway season 1 report: Absolute winner is Wayne Brady with an impressive 3,005,530.5 points. Absolute average episode winner is also Wayne with 187,845.7 points per episode. Logarithmic winner is Colin Mochrie with 130.4. Logarithmic average episode winner for performers appearing in >1 episode is also Colin with a commanding 6.5 log-points per episode.
02:19:19 <oerjan> ah but what about the sinusoidal winner
02:20:58 <CakeProphet> oerjan: ah okay.
02:23:35 <Gregor> Ryan Stiles was the declared winner in 12 episodes, with Colin coming in second at 9 episodes.
02:24:40 <CakeProphet> Gregor: ....WHY
02:24:42 <CakeProphet> STOP
02:24:51 <CakeProphet> Gregor: go obsess about something else.
02:25:03 * oerjan swats CakeProphet -----###
02:25:16 <CakeProphet> there are better things to invest time into
02:25:27 <Gregor> CakeProphet: My JIT works on nine platforms!
02:25:38 <CakeProphet> Gregor: uh, okay?
02:25:50 <CakeProphet> IT COULD WORK ON ALL THE PLATFORMS
02:26:04 <Gregor> CakeProphet: I taught my dog to teach my cat to behave!
02:26:08 <oerjan> "shachaf: Sometimes things are complicated because the domain is complicated. Other times things are complicated because edwardk."
02:26:20 <oerjan> (new Haskell Weekly News)
02:26:21 <shachaf> oerjan: ?
02:26:25 <shachaf> Oh.
02:27:13 <shachaf> Ugh, I got quoted twice.
02:27:47 <CakeProphet> hahahahaaaaaa
02:27:48 <oerjan> elliott: why is your quote so serious.
02:28:06 <oerjan> i have half a mind to `delquote it
02:28:15 <CakeProphet> so for my data structures project I have to provide pseudocode algorithms in my documentation for any function that's more than 15 lines.
02:28:24 <CakeProphet> but none of my functions are more than 15 lines. bahahahahahaha
02:28:46 <oerjan> CakeProphet: EXCELLENT
02:28:57 <elliott> oerjan: sory
02:29:26 <CakeProphet> I can't imagine any of these functions being more than 15 lines
02:29:34 <CakeProphet> unless you're just bad at programming or bad at abstraction.
02:30:26 -!- yours_truly has joined.
02:31:07 -!- Nisstyre has quit (Read error: Connection reset by peer).
02:32:30 <shachaf> `quote shachaf
02:32:33 <HackEgo> 620) <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. \ 666) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough. \ 704) <shachaf> VMS Mosaic? <shachaf> I hope that's not Mosaic ported to VMS. <shachaf> Hmm. It's Mosaic ported to VMS.
02:32:46 <shachaf> Those quotes are all horrible.
02:33:07 <shachaf> You should get kmc in this channel. kmc has good quotes.
02:33:09 <shachaf> `quote kmc
02:33:10 <CakeProphet> c-style cast, dynamic cast, static cast, reinterpret cast, const_cast.
02:33:11 <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks
02:33:21 <shachaf> Well, in theory.
02:34:10 <CakeProphet> oh I see, C just does automatic conversion of number types.
02:34:28 <Gregor> `addquote <shachaf> You should get kmc in this channel. kmc has good quotes. <shachaf> `quote kmc <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks <shachaf> Well, in theory.
02:34:30 <HackEgo> 720) <shachaf> You should get kmc in this channel. kmc has good quotes. <shachaf> `quote kmc <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks <shachaf> Well, in theory.
02:34:33 <CakeProphet> I thought it was a runtime NOP
02:34:36 <Gregor> And now, you have good quotes :P
02:35:05 <shachaf> :-(
02:37:04 <Sgeo|web> What is with Haskell and people named Elliott?
02:37:08 <oerjan> shachaf: we have had kmc in this channel, he refuses to entertain us though
02:37:27 <elliott> Sgeo|web: what
02:37:48 <Sgeo|web> elliott: There's you, Conal, Some dude named Trevor, some guy I met IRL
02:37:49 <CakeProphet> Sgeo|web: Elliott is the name of elitist jerks who like elitist jerk languages. hurr hurr hurr
02:37:56 <shachaf> elliott: Sgeo|web is trying to say "What is it with elliott?" in a polite way.
02:38:15 <elliott> Sgeo|web: there's also elliottcable!
02:38:20 <elliott> who i doubt actually knows any haskell.
02:38:30 <elliott> but is in #haskell occasionally and ragequits whenever people start pinging me
02:38:45 <CakeProphet> also Elliott Smith who is actally not a programmer and is dead.
02:38:51 <oerjan> Gregor: hm that 720 quote has some parsing ambiguity due to the recursion
02:38:59 <shachaf> elliott: Right now neither you nor he are in #haskell.
02:39:01 -!- augur has quit (Remote host closed the connection).
02:39:11 -!- CakeProphet has changed nick to Haskell.
02:39:36 <Haskell> hi guys.
02:39:41 <Haskell> this nick was registered in 2008 apparently.
02:39:55 <Sgeo|web> Haskell's last name is probably Elliott
02:40:00 <Haskell> I should go to #freenode and get it.
02:40:19 <Haskell> oh, and Kallisti
02:41:06 <Haskell> because that's a name I like and stuff.
02:42:05 -!- Haskell has changed nick to CakeProphet.
02:42:24 <CakeProphet> I can only be Haskell for so long. The awesome blows my mind.
02:44:00 <CakeProphet> is doubling a hash table a reasonable resize function? I'm gonna go with "sure"
02:44:33 <shachaf> CakeProphet: Better to enlarge it by one byte.
02:44:40 <shachaf> More space-efficient that way.
02:44:58 <CakeProphet> yes indeed.
02:45:02 <CakeProphet> good call.
02:45:38 <CakeProphet> I was actually worried more about time than space.
02:45:41 <CakeProphet> imagine that.
02:45:55 -!- copumpkin has joined.
02:46:06 <Gregor> <oerjan> Gregor: hm that 720 quote has some parsing ambiguity due to the recursion // 'struth
02:46:31 <CakeProphet> `quote 1
02:46:33 <HackEgo> 1) <Aftran> I used computational linguistics to kill her.
02:46:55 <CakeProphet> `quote 2
02:46:57 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork"
02:47:16 <CakeProphet> heh heh heh
02:47:46 <CakeProphet> honestly I'm not sure why you would expect great works of comedic genius from an #esoteric quote db
02:49:24 <oerjan> wait, how could you _not_?
02:50:02 <CakeProphet> oerjan: ha. ha. ha ha. ha ha ha. ha ha ha ha ha.
02:52:43 -!- yours_truly has changed nick to Nisstyre.
02:53:14 <oerjan> > intercalate(".")$fix((" ha":).scanl(++)(" ha"))
02:53:16 <lambdabot> " ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha h...
02:53:37 <CakeProphet> the Fibonacci laugh.
02:53:53 <CakeProphet> only expressed for the most Fibonacci humorous things.
02:54:35 <CakeProphet> oerjan: also how does that even work.
02:56:41 <oerjan> > fix((1:).scanl(+)1)
02:56:43 <lambdabot> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1...
02:56:50 <CakeProphet> > scanl (++) (" ha") "lo"
02:56:51 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
02:56:51 <lambdabot> against inferred ty...
02:57:02 <oerjan> i just modified that one in the obvious way
02:57:14 <CakeProphet> right I forget what scan does.
02:57:25 <CakeProphet> > scanl (++) (" ha") ["lo"]
02:57:27 <lambdabot> [" ha"," halo"]
02:57:39 <oerjan> > scanl(+)[1..]
02:57:40 <lambdabot> Overlapping instances for GHC.Show.Show ([[t]] -> [[t]])
02:57:40 <lambdabot> arising from a ...
02:57:42 <oerjan> oops
02:57:46 <oerjan> > scanl(+)0[1..]
02:57:46 <lambdabot> [0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,...
02:58:46 <CakeProphet> ah okay.
02:58:55 <CakeProphet> the usual laziness black magic.
02:59:14 <oerjan> > scanl(f)x[1..]::Expr
02:59:15 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
02:59:15 <lambdabot> against inferred ...
02:59:18 <oerjan> oops
02:59:26 <CakeProphet> yeah I got sccanl
02:59:28 <CakeProphet> -c
02:59:36 <Sgeo|web> :t scanl
02:59:38 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> [a]
03:00:06 <oerjan> scanl is like foldl, but lists all the intermediate results
03:00:33 <oerjan> > scanl(f)x[1..]::[Expr]
03:00:34 <lambdabot> [x,f x 1,f (f x 1) 2,f (f (f x 1) 2) 3,f (f (f (f x 1) 2) 3) 4,f (f (f (f (...
03:01:05 <Sgeo|web> > scanr(f)x[1..]
03:01:06 <lambdabot> [f 1 (f 2 (f 3 (f 4 (f 5 (f 6 (f 7 (f 8 (f 9 (f 10 (f 11 (f 12 (f 13 (f 14 ...
03:01:25 <CakeProphet> scanr gets no love.
03:01:52 <Sgeo|web> > scanr(f)x[1..5]
03:01:53 <lambdabot> [f 1 (f 2 (f 3 (f 4 (f 5 x)))),f 2 (f 3 (f 4 (f 5 x))),f 3 (f 4 (f 5 x)),f ...
03:01:56 <Sgeo|web> > scanr(f)x[1..3]
03:01:57 <lambdabot> [f 1 (f 2 (f 3 x)),f 2 (f 3 x),f 3 x,x]
03:02:33 <CakeProphet> scanl adds calls, scanr removes calls.
03:02:43 <CakeProphet> s/calls/applications/
03:03:07 <oerjan> @src scanr
03:03:08 <lambdabot> scanr _ q0 [] = [q0]
03:03:08 <lambdabot> scanr f q0 (x:xs) = f x q : qs
03:03:08 <lambdabot> where qs@(q:_) = scanr f q0 xs
03:03:30 <oerjan> @src scanl
03:03:31 <lambdabot> scanl f q ls = q : case ls of
03:03:31 <lambdabot> [] -> []
03:03:31 <lambdabot> x:xs -> scanl f (f q x) xs
03:03:55 <CakeProphet> weirdly different in style.
03:04:15 <elliott> CakeProphet: only for laziness
03:04:19 <elliott> > scan f x undefined
03:04:20 <lambdabot> Not in scope: `scan'
03:04:23 <oerjan> well scanl can give the first element without any recursion
03:04:25 <elliott> > scanl f x undefined
03:04:26 <lambdabot> [x*Exception: Prelude.undefined
03:06:02 <CakeProphet> > reverse (scanl (+) 1 [1..5]) == scanr (+) 1 [1..5]
03:06:03 <lambdabot> False
03:06:13 <CakeProphet> ah
03:06:16 <CakeProphet> the initial value.
03:06:29 <CakeProphet> > reverse (scanl1 (+) [1..5]) == scanr1 (+) [1..5]
03:06:30 <lambdabot> False
03:06:34 <CakeProphet> yeah.
03:06:40 -!- augur has joined.
03:06:57 <oerjan> > reverse (scanl1 (+) [1..5]) == scanr1 (+) (reverse [1..5])
03:06:58 <lambdabot> True
03:08:42 <CakeProphet> ah
03:19:27 <CakeProphet> oerjan: http://upload.wikimedia.org/wikipedia/commons/6/65/Dannevirke_welcome_sign.jpg
03:19:30 <CakeProphet> is this what you look like?
03:20:34 <elliott> hmm, my double-hashing solution is so ugly :(
03:20:41 <oerjan> of course not, vikings didn't have horns on their helmets!
03:20:45 <CakeProphet> elliott: double-hasing is gross.
03:21:04 <CakeProphet> elliott: SIMPLY USE SOME FORM OF NON-LINEAR PROBING.
03:21:13 <oerjan> also i'm clean shaven.
03:21:17 <elliott> CakeProphet: i don't think you know what i'm talking about
03:21:23 <elliott> oerjan: no, you look like dijkstra
03:21:34 <CakeProphet> elliott: double hashing as in... double hasing as in... hash tables. right?
03:21:39 <CakeProphet> what else could you be talking about?
03:22:40 <oerjan> In een alternatief universum, Ørjan lijkt Dijkstra.
03:23:08 <CakeProphet> bork bork bork
03:23:33 <copumpkin> Ørjan
03:23:36 <copumpkin> man, I want to be called that
03:23:41 <oerjan> i have a hunch the lijkt isn't quite correct
03:24:24 <CakeProphet> copumpkin: I'm famous.
03:24:30 <copumpkin> oh?
03:24:31 <CakeProphet> therefore my name is awesome. (?)
03:24:43 <copumpkin> famous for prophesizing cakes?
03:24:52 <CakeProphet> http://en.wikipedia.org/wiki/Adam_Curtis
03:24:54 <CakeProphet> I'm this guy.
03:25:08 <copumpkin> oh, excellent
03:25:14 * elliott likes to think CakeProphet really is Adam Curtis.
03:25:27 <CakeProphet> elliott: you're in luck because I am.
03:25:34 <copumpkin> lots of fucking brits in here
03:25:41 <copumpkin> (I am too)
03:25:42 * CakeProphet is American.
03:25:51 <elliott> CakeProphet: it says you're from the UK right on your wikipedia page.
03:25:55 <elliott> quit foolin' around.
03:25:56 <copumpkin> then you should correct your wikipedia page
03:25:59 <oerjan> itym hexhamers
03:26:08 <CakeProphet> elliott: [citation needed]
03:26:08 <oerjan> oh wait
03:26:17 <oerjan> copumpkin: you're not from hexham are you
03:26:21 <copumpkin> nope
03:26:31 <copumpkin> I'm from london!
03:26:36 <elliott> oerjan: btw here's what pseqs look like now: http://hpaste.org/54147
03:27:06 <CakeProphet> elliott: so am I like the Michael Moore of the UK?
03:27:18 <CakeProphet> or like... not quite as controversial?
03:27:42 <elliott> i don't think the UK, as a country, could actually support a figure describable as "the michael moore of the uk".
03:27:49 <elliott> i don't think that's even mathematically possible
03:28:18 <CakeProphet> well, give me an analogy
03:28:58 <elliott> i don't think i can analogise to a world so alien ;D
03:28:59 <elliott> i don't think i can analogise to a world so alien ;D
03:29:00 <elliott> oops
03:29:17 <CakeProphet> yes I find it difficult to wrap my head around the UK.
03:29:23 <CakeProphet> mainly because it's a large mass of land.
03:29:35 <CakeProphet> Adam Curtis seems more respectable perhaps?
03:29:38 <CakeProphet> or respected
03:33:05 <CakeProphet> "Suggested a parallel between the rise of Islamism in the Arab world and Neoconservatism in the United States in that both needed to inflate a myth of a dangerous enemy in order to draw people to support them."
03:33:09 <CakeProphet> tee hee hee
03:33:23 <CakeProphet> (that's the description for The Power of Nightmares)
03:33:28 <CakeProphet> (on Wikipedia)
03:33:57 <oerjan> _so_ easy to godwin that
03:35:42 <CakeProphet> elliott: apparently he is the /only/ famous Adam Curtis.
03:36:13 <elliott> CakeProphet: s/he is/I am/
03:36:32 <CakeProphet> note that I'm not actually Adam Curtis.
03:36:35 <CakeProphet> but I am Adam Curtis.
03:36:40 <CakeProphet> elliott: I'm sorry to disappoint you.
03:36:49 <elliott> wrong
03:36:58 <oerjan> completely wrong
03:37:04 <oerjan> you're actually gleeful
03:38:58 <CakeProphet> elliott: I occasionally get weird reactions to my name.
03:39:13 <CakeProphet> not because it's the same as some kind of famous guy in the UK (no one in the US knows who that guy is)
03:39:22 <CakeProphet> but because it's apparently two first names or something.
03:40:55 <elliott> i doubt adam curtis is that well known in the UK either :P
03:41:53 <CakeProphet> elliott: oh I recall from a previous conversation you saying that he was kind of well-known by people that know things.
03:42:07 <CakeProphet> or something similar
03:42:24 <elliott> i guess among people who know things about documentaries?
03:42:56 <CakeProphet> do you know things about documentaries?
03:44:09 <CakeProphet> okay well this is good. this means I can go to the UK.
03:44:48 <CakeProphet> if my name were, say, Tony Blair I'd be more reluctant to go to the UK.
03:50:08 <CakeProphet> elliott: so let me get this straight
03:50:16 <CakeProphet> there are more than two major parties in the UK?
03:50:21 <pikhq> Better than "WTF how do you *say* that" as a reaction.
03:50:21 * CakeProphet mind blown.
03:50:33 <elliott> CakeProphet: three.
03:50:39 <elliott> it is smaller than the other two.
03:50:39 <CakeProphet> elliott: yes
03:50:56 <elliott> and will probably never get elected again after this government
03:51:02 <CakeProphet> elliott: it's almost like you can track the path I took on Wikipedia!
03:51:30 <CakeProphet> er wait you mean Conservative Party? I thought it was like... "the big one"
03:51:33 <pikhq> Seriously, how many Americans do you expect to say "Worcester" even vaguely reasonable?
03:51:50 <pikhq> Reasonably, even.
03:53:07 <elliott> CakeProphet: no, i mean the lib dems
03:53:18 <elliott> the current government is a coalition between the conservative party and the liberal democrats
03:53:38 <CakeProphet> ah okay
03:53:56 <CakeProphet> I find it kind of crazy that the Labour party is socialist
03:53:57 <CakeProphet> I mean
03:53:59 <CakeProphet> socialist in name.
03:54:14 <CakeProphet> like, in the US, socialist is like a synonym for "bad".
03:54:16 <pikhq> That's because you're used to American politics, where "socialist" is a curse word.
03:54:42 <elliott> CakeProphet: it's really not.
03:54:48 <elliott> not New Labour
03:55:23 <CakeProphet> ah
03:55:31 <CakeProphet> aka Tony Blair?
03:55:38 <pikhq> What should weird you out is the BNP.
03:55:39 <elliott> CakeProphet: basically they were useless for a few decades and then Tony Blair came along and they started calling themselves New Labour and became centre-right and got elected.
03:55:44 <pikhq> AKA "National Socialists".
03:55:53 <CakeProphet> elliott: whut?
03:55:56 <CakeProphet> that's weird as fuck.
03:56:10 <coppro> pikhq: I think I've heard of those guys
03:56:15 <elliott> CakeProphet: what, a political party getting popular and becoming crappier?
03:56:16 <pikhq> CakeProphet: Something rather similar happened to the Republican party, actually.
03:56:18 <elliott> SHOCKING!!!!
03:56:24 <CakeProphet> "hey guys let's be conservative now!"
03:56:38 <elliott> CakeProphet: no it's more like "let's look more like the conservatives because they keep winning" :P
03:56:44 <CakeProphet> pikhq: well.. was the republican party ever "socialist"?
03:57:00 <elliott> CakeProphet: reminder that lincoln was a republican
03:57:09 <CakeProphet> yes yes I know all that.
03:57:14 <pikhq> CakeProphet: Not much *socialist*, but certainly very liberal on certain issues.
03:57:17 <coppro> CakeProphet: In Canada, our opposition party is socialist
03:57:23 <coppro> it's in their constitution, even
03:57:36 <elliott> i don't think the usa has ever experienced any kind of popularity for socialism
03:57:40 <CakeProphet> nope.
03:57:48 <CakeProphet> too capitalist pigdog.
03:57:49 <elliott> too much baggage
03:58:07 <CakeProphet> too much captialsit gipgod
03:58:14 <coppro> the first sentence of their constitution, even
03:58:28 <coppro> holy shit were we all surprised last election
03:58:47 <pikhq> elliott: It did once. We called it the "New Deal".
03:58:53 <elliott> coppro: "WHEREAS the Provinces of Canada, Nova Scotia and New Brunswick have expressed their Desire to be federally united into One Dominion under the Crown of the United Kingdom of Great Britain and Ireland, with a Constitution similar in Principle to that of the United Kingdom:"?
03:59:13 <CakeProphet> elliott: he means the party's constitution.
03:59:17 <coppro> elliott: the party's
03:59:23 <elliott> pikhq: i dislike fdr but completely forget why
03:59:25 <elliott> coppro: oh :P
03:59:32 <elliott> that makes more sense
03:59:33 <elliott> as opposed to like
03:59:41 <elliott> WHEREAS we want a socialist opposition party
03:59:47 <pikhq> elliott: Probably the only notable action of his that's dislikable: Japanese internment camps.
03:59:48 <elliott> and WHEREAS god help us if they get into government
03:59:50 <elliott> BE IT HEREBY RESOLVED
04:00:02 <CakeProphet> elliott: he kind of started easing himself into a position of supreme authority.
04:00:06 <CakeProphet> or tried to.
04:01:19 <elliott> 3. It shall be lawful for the Queen, by and with the Advice of Her Majesty's Most Honourable Privy Council, to declare by Proclamation that, on and after the passing of this Act, the Provinces of Canada, Nova Scotia, and New Brunswick shall form and be One Dominion under the Name of Canada; and on and after that Day those Three Provinces shall form and be One Dominion under that Name accordingly.(4)
04:01:29 <elliott> coppro: possible scam: check whether the queen actually declared that
04:01:59 <elliott> 4. Unless it is otherwise expressed or implied, the Name Canada shall be taken to mean Canada as constituted under this Act.(5)
04:01:59 <elliott> wow, they preempted us making a nomic called canada and using the cosntitution's references to "canada" to take over! smart
04:02:32 <CakeProphet> elliott: I don't think the US constitution does anything like that.
04:02:42 <CakeProphet> maybe you should devise a coup
04:02:43 <elliott> CakeProphet: yeah but you guys don't follow yours
04:02:58 <elliott> i wonder if that's the one goedel found
04:03:00 <CakeProphet> elliott: ha. ha. ha ha. ha ha ha. ha ha ha ha ha
04:03:06 <CakeProphet> it's funny because it's true. also sad. :(
04:03:14 <coppro> CakeProphet: ha ha ha ha ha ha ha ha.
04:03:24 <pikhq> elliott: The issue is, Canada doesn't have a *single* constitution.
04:03:29 <pikhq> There's like three Constitution Acts.
04:03:32 <CakeProphet> coppro: yes let's laugh, and then cry.
04:03:32 <elliott> oh, suber reckons it was the constitution's self-amendment clause itself
04:03:41 <elliott> but I hope goedel would be smarter than that
04:03:43 <pikhq> Sorry, 2.
04:03:57 <Sgeo|web> What's this about Goedel?
04:04:04 <oerjan> elliott: saw a reference to this which is sort of the list version of PSeq: http://hackage.haskell.org/packages/archive/thrist/0.2/doc/html/Data-Thrist.html
04:04:13 <coppro> ha ha ha ha ha ha ha ha ha ha ha ha ha.
04:04:14 <CakeProphet> elliott: the problem with the constitution is that it's too liberal for neoconservatives.
04:04:20 <elliott> oerjan: hm i think i've seen this
04:04:29 <coppro> pikhq: I've told you about the supreme court act, right?
04:04:29 <elliott> oerjan: the list version is easy ofc, it's doing it with a finger tree that's hard
04:04:37 <pikhq> CakeProphet: The problem with everything but a king by divine right is that it's too liberal for neoconservatives.
04:04:42 <pikhq> coppro: Don't *think* so.
04:04:43 <CakeProphet> elliott: you need /warrants/ to search and seize property? I mean come on.
04:05:15 <elliott> http://opendylan.org/~gabor/Thrist-draft-2008-07-18.pdf sigh, not found
04:05:18 <CakeProphet> elliott: TERRORISTS ARE PLOTTING OUR END THIS VERY MINUTE.
04:05:20 <pikhq> CakeProphet: You need a /majority/ to pass a law? Come on.
04:05:35 <coppro> pikhq: So the constitution is defined by the Constitution Act, 1982, non-exclusively. It says "The following are part of the constitution" but it isn't exhaustive. The Constitution also says that the Constitution can only be amended with regards to the composition of the Supreme Court by unanimous consent of the provinces
04:05:57 <elliott> oerjan: http://hackage.haskell.org/packages/archive/thrist/0.2/doc/html/Data-Thrist-Monad.html
04:05:58 <coppro> accordingly, no one knows if the Supreme Court Act is in the constitution or not, and so no one knows if it can be amended by Parliament or only by unanimous consent
04:06:09 <pikhq> coppro: *Ouch*.
04:06:16 <elliott> oerjan: i suspect that's similar to the relation of arrows and monads...
04:06:38 <coppro> I mean, the nonexhaustiveness is sometimes useful
04:06:54 <coppro> for instance, parliamentary privilege is taken to be a constitutional power, even though it's not written out in any statute
04:07:10 <elliott> oerjan: ha! they did thrist zippers.
04:07:12 <coppro> same with independence of the three branches
04:07:14 <CakeProphet> elliott: does the UK have a supreme court thing? erase my ignorance.
04:07:22 <elliott> CakeProphet: all our judging is done by a rabbit
04:07:29 <CakeProphet> ah yes.
04:07:32 <CakeProphet> it all makes sense now.
04:07:36 <pikhq> CakeProphet: As of a couple years ago, they have a Supreme Court.
04:07:38 <coppro> CakeProphet: It does now.
04:07:47 <pikhq> Prior to that, they had the House of Lords.
04:07:48 <CakeProphet> appointed?
04:07:51 <CakeProphet> so like...
04:07:55 <coppro> and for a while it wasn't the entire House
04:07:58 <coppro> just a committee
04:07:59 <Sgeo|web> Thrist?
04:08:04 <CakeProphet> Tony Blair or whoever appointed all the judges at once? nice move.
04:08:10 <CakeProphet> oh
04:08:10 <CakeProphet> okay.
04:08:11 <pikhq> Well, technically it *was*, but most of the house just didn't care. :P
04:08:47 <elliott> oerjan: hmm, these things subsume vectors, I think
04:08:50 <elliott> oerjan: as in, fixed-length
04:09:03 <CakeProphet> actually FDRs "court-packing" bill would not have been a bad idea.
04:09:15 <elliott> oerjan: data Vec a n n' where Elem :: a -> Foo a n (Succ n)
04:09:21 <coppro> CakeProphet: http://en.wikipedia.org/wiki/UK_Supreme_Court#Appointments_process
04:09:26 <elliott> oerjan: then PSeq (Vec a) Z len
04:10:06 <CakeProphet> coppro: blah blah blah bureaucracy
04:10:58 <pikhq> CakeProphet: It seems that they seeded it with a selection of Law Lords from the House of Lords.
04:11:55 <coppro> pikhq: damn, you're right
04:12:20 <elliott> oerjan: hm this guy's blog makes the interesting point that they could be interesting to build applicative structurse and the like out of, because you can pull them apart as well as run them
04:12:26 <elliott> might make for an interesting esolang, especially the Seq version
04:14:36 <CakeProphet> I think it's kind of weird that presidents are restricted to two terms now.
04:15:00 <pikhq> Blame FDR. :P
04:15:03 <CakeProphet> I understand the rationale but I'm not really sure it makes any sense at all.
04:15:20 <CakeProphet> pikhq: blame the congress under FDR, more like.
04:15:48 <oerjan> at least it's less ridiculous than the russian mess
04:15:49 <pikhq> Also, personally I think it's weird that *only* presidents are restricted to two terms.
04:16:04 <pikhq> 2 *consecutive* terms. *groan*
04:16:16 <CakeProphet> long live the Bush Dynasty.
04:16:25 <elliott> oerjan: oh hm the thrist blog also points out that Show for these things is hard
04:16:26 <coppro> pikhq: why is consecutive so weird?
04:16:37 <elliott> oerjan: because consider (5,id) <| (id, 42) <| empty
04:16:44 <coppro> pikhq: also wasn't the point to avoid the president dying while in office thanks to constant reelection
04:16:45 <elliott> oerjan: :: PSeq (,) Int Int
04:16:57 <elliott> oerjan: you don't have forall a b. Show (a,b) obviously, you need a Show constraint on a and b
04:17:03 <CakeProphet> pikhq: okay so I think term restrictions for congress makes sense, but not for the president? does that make sense?
04:17:06 <elliott> but with that, you can't do it because of the above
04:17:23 <pikhq> CakeProphet: Not really.
04:17:30 <elliott> oerjan: you need a pair that bundles the Show constraints basically :(
04:17:48 <CakeProphet> pikhq: hmmm, perhaps it doesn't.
04:17:49 <Sgeo|web> pikhq: consecutive?
04:18:07 <CakeProphet> Sgeo|web: Obama, Obama, Bachman, Obama.
04:18:10 <pikhq> coppro: Actually, the point of a two term limit was that it was tradition, so might as well make it binding after FDR had the audacity to violate it.
04:18:22 <oerjan> elliott: yeah. btw i think the MetaPath has a similar need for the Exit class
04:18:31 <Sgeo|web> CakeProphet: Um, I'm pretty sure that's not possible
04:18:35 <CakeProphet> s/audacity/popularity/
04:18:37 <pikhq> Sgeo|web: Is in Russia!
04:18:37 <elliott> oerjan: i just added it to all the types
04:18:42 <pikhq> CakeProphet: Also true.
04:19:40 <CakeProphet> Sgeo|web: how is that not possible if the only restriction is a maximum of two consecutive terms?
04:19:53 <CakeProphet> the third is not consecutive.
04:20:12 <CakeProphet> it just hasn't happened.
04:20:13 <Sgeo|web> Because the restriction doesn't in fact say consecutive, as far as I'm aware?
04:20:24 <pikhq> Sgeo|web: *It is in Russia*.
04:20:25 <CakeProphet> uh, yes it does.
04:20:37 <CakeProphet> oh, hmmm
04:20:41 <pikhq> The restriction in the US is two terms total.
04:20:47 <CakeProphet> why did I think it was consecutive? :P
04:20:59 <oerjan> CakeProphet: surely after Bachmann there won't be enough left of the USA to get another president.
04:21:01 <elliott> oerjan: i suppose I could just use http://hackage.haskell.org/packages/archive/prelude-extras/0.1.0.2/doc/html/Text-Show-Extras.html#t:Show2
04:21:04 <oerjan> *-n
04:21:05 <pikhq> oerjan: Basically.
04:21:12 <elliott> oerjan: but actually no, Show2 isn't enough
04:21:18 <elliott> oerjan: because of that hidden type problem
04:21:23 <CakeProphet> oerjan: honestly Bachman is one of the better GOP candidates. sad right?
04:21:28 <pikhq> oerjan: Probably our major territorial claim would be the moon. And that only on arguable technicalities.
04:22:08 <oerjan> pikhq: as in "there's a treaty that says there is no claim in space"?
04:22:25 <CakeProphet> oerjan: but our flags there!!!
04:22:36 <pikhq> oerjan: As far as the US is concerned, a "treaty" is "just a law"
04:22:45 <pikhq> We can literally take back treaties.
04:22:50 <pikhq> Because, well... Fuck you all.
04:23:09 <pikhq> (no, I don't understand the rational behind this)
04:23:15 <CakeProphet> pikhq: yes, this logic continues to make sense once the US is gone (except for the moon, except the moon isn't US territory by treaty)
04:23:17 <elliott> oerjan: aha!
04:23:34 <pikhq> CakeProphet: It continues to make sense if *most* of the US is gone.
04:23:37 <elliott> oerjan: Thrist (Monad' m) a b is actually (Kleisli m a b)
04:23:41 <pikhq> Let's say we're left with Puerto Rico.
04:23:45 <elliott> oerjan: so the arrow relation is very strong
04:23:53 <oerjan> pikhq: oh well, i suppose i vaguely taking back treaties _is_ permitted by international law
04:23:55 <CakeProphet> pikhq: ah yes, our strong military center.
04:23:58 <oerjan> *vaguely recall
04:24:16 <pikhq> CakeProphet: Not so much "military center" as it is "likely to be ignored in global thermonuclear war"
04:24:37 <oerjan> elliott: you mean Thrist (Kleisli m) ?
04:24:40 <elliott> "This time I shall prove my claim that in Haskell any Control.Arrow instance can be rewritten as a Thrist data structure." heh, neat
04:24:44 <elliott> oerjan: no,
04:24:45 <elliott> data Monad' :: (* -> *) -> * -> * -> * where
04:24:45 <elliott> Feed :: Monad m => m b -> Monad' m a b
04:24:45 <elliott> Digest :: Monad m => (a -> m b) -> Monad' m a b
04:25:28 <oerjan> elliott: er, a Thrist cannot be just Kleisli because Thrists can be picked apart again
04:25:30 <CakeProphet> pikhq: hmmm, when can we submit to our robot overlords? I'm getting impatient with these imperfect humans.
04:25:45 <elliott> oerjan: oh well I mean, is /run/ as (Kleisli m a b)
04:25:57 <elliott> oerjan: in some sense a thrist seems like inspectable composition
04:26:04 <pikhq> CakeProphet: First we need robot overlords.
04:26:36 * Sgeo|web would like inspectable functions
04:26:39 <Sgeo|web> >.>
04:26:53 <shachaf> Sgeo|web: Ew.
04:27:00 <elliott> Sgeo|web would like to break parametricity.
04:27:24 <elliott> And with it sane typing, security in an object-capability system, ...
04:27:36 <Sgeo|web> parametricity?
04:28:19 <Sgeo|web> At one point, I have thought about how one might go about sandboxing Picolisp
04:29:00 <CakeProphet> pikhq: surely robot overlordship is only NP-hard.
04:30:47 <elliott> oerjan: "So I am not in bad company announcing that I am preparing a paper about thrists which are the moral equivalents of free categories."
04:30:51 <elliott> oerjan: *sigh* nothing new under the sun
04:31:21 <oerjan> elliott: well i already vaguely knew about thrists
04:31:56 -!- GreaseMonkey has joined.
04:31:57 -!- GreaseMonkey has quit (Changing host).
04:31:57 -!- GreaseMonkey has joined.
04:33:00 <elliott> "Finally, the category-theoretic twist: think of the parameter p as the morphisms of a category C (with C's objects being the morphisms' domains and ranges) then Thrist p is essentially the free category of C, often written as C*."
04:33:03 <elliott> gotta love that "essentially"
04:33:38 <oerjan> didn't i use the same word above for PSeq :P
04:34:10 <elliott> i think so :)
04:39:27 <CakeProphet> uh, in C++
04:39:42 <coppro> pikhq: your 27th amendment is hilarious
04:39:48 <CakeProphet> how do I say "it's okay to change members of this referenced object, but not the entire thing itself"???
04:40:57 <CakeProphet> can't do that? okay.
04:41:03 <elliott> ask coppro
04:41:16 <elliott> coppro: lmao at that one
04:42:24 <coppro> brilliant scam there
04:44:08 <CakeProphet> ugh C++ WHY ARE YOU STUPID.
04:44:29 <monqy> why are you using c=+
04:45:01 <CakeProphet> monqy: class
04:45:04 <CakeProphet> surely you know this by now.
04:45:06 <monqy> ahh / haha
04:45:17 <monqy> yeah I have had and will have classes that use c++ too
04:45:27 <monqy> but presently the only one involving programming is python / it's just as bad
04:45:38 <CakeProphet> monqy: you don't get to laugh about C++ until you program in it.
04:45:47 <monqy> hey, I've programmed in it!
04:46:10 <CakeProphet> okay, well then you should be crying in sympathy.
04:46:11 <monqy> I wrote an x86 compiler in it, albeit a simple compiler for a simple language
04:46:14 <CakeProphet> isntead of laughing.
04:46:17 <monqy> im laughcrye
04:46:52 <pikhq> coppro: Gaaah.
04:47:19 <CakeProphet> wait so string literals are strings now and not chars?
04:47:23 <CakeProphet> er char *s
04:47:32 <CakeProphet> uhweriuhwdihwierhiwuer
04:47:46 -!- oerjan has quit (Remote host closed the connection).
04:47:53 <pikhq> coppro: Neat scam at least.
04:48:04 <monqy> does it depend on where you put them
04:48:12 <CakeProphet> warning: deprecated conversion from string constant to ‘char*’
04:48:19 <CakeProphet> monqy: no I thought they were always char arrays.
04:48:41 <monqy> I forget how c++ does it
04:50:32 <pikhq> CakeProphet: They're const.
04:51:07 <CakeProphet> pikhq: what is the good way to care about this?
04:51:18 <pikhq> C++ is merely *noisier* about the UB than C in this regard.
04:52:15 -!- calamari has joined.
04:52:21 <CakeProphet> oh look I think the code they provided us is broken
04:52:23 <CakeProphet> imagine. that.
04:52:44 -!- DCliche has joined.
04:54:11 <CakeProphet> actually no it has something to do with assigning a string to another string.
04:56:14 -!- Darth_Cliche has quit (Ping timeout: 260 seconds).
04:56:32 <CakeProphet> pikhq: what might cause assignment of a string to a string reference to segfault?
04:57:09 <pikhq> CakeProphet: Any number of things, most of which involve someone doing nasty things to the STL class.
05:00:22 <CakeProphet> ah and for my earlier question I believe I want const&
05:00:26 <CakeProphet> instead of const Type &
05:00:42 -!- MDude has changed nick to MSleep.
05:01:57 <CakeProphet> okay well the string /exists/
05:02:16 <CakeProphet> ah
05:02:25 <CakeProphet> but the string I'm assigning to does not :P
05:02:33 <CakeProphet> debugger ftw
05:03:25 <Gregor> elliott: VAX
05:03:28 <Gregor> (Booya)
05:03:28 <CakeProphet> pikhq: okay so when I say blah = new Type[size];
05:03:30 <elliott> Gregor: Wow.
05:03:32 <elliott> Gregor: How?
05:03:42 <Gregor> elliott: Very, very poorly :P
05:03:42 <CakeProphet> pikhq: that doesn't automatically construct a default instance of Type for every element in the array
05:03:46 <CakeProphet> ?
05:03:48 <Gregor> (And I may have to remove it if it makes the code too big ...)
05:03:57 <elliott> Gregor: But how did you do it :P
05:04:09 <Gregor> elliott: I actually search for the epilogue rather than just assuming it's right before the next function.
05:04:15 -!- DCliche_ has joined.
05:04:16 <elliott> lol
05:04:33 <Gregor> Haven't tested if it breaks everything else yet.
05:04:35 <Gregor> Oh, also: clang
05:07:52 <pikhq> CakeProphet: Yes, that *is* the semantics.
05:07:53 -!- DCliche has quit (Ping timeout: 260 seconds).
05:08:25 -!- calamari has quit (Quit: Bye).
05:08:35 <CakeProphet> pikhq: you mean the construct-each-element thing is the semantics?
05:08:42 <CakeProphet> sorry it's kind of ambiguous .
05:08:46 <pikhq> CakeProphet: Yes.
05:08:54 <CakeProphet> hm, okay. well now I know shit all about what's wrong.
05:09:05 <CakeProphet> actually I know the same amount about that, but now have no idea.
05:09:08 <CakeProphet> on what to do.
05:14:25 <CakeProphet> aaaaah.
05:14:38 <CakeProphet> there's a fun bug in their function.
05:14:45 <CakeProphet> that they gave us.
05:15:12 <Gregor> pikhq, elliott: I've more-or-less run out of architectures.
05:15:20 <elliott> Gregor: MMIX, still!
05:15:24 <Gregor> elliott: DAMN IT
05:15:27 <Gregor> Forgot :P
05:15:55 <elliott> Gregor: Z80?
05:16:03 <elliott> Gregor: PIC? (<-- JOKE)
05:16:24 <elliott> Gregor: But yeah, Z80 is a good 'un.
05:16:27 <elliott> Gregor: PA-RISC, too.
05:16:30 <Gregor> No 16-bit.
05:16:46 <CakeProphet> ..................oh
05:16:49 <CakeProphet> so like
05:16:50 <Gregor> PA-RISC could be doable but I'd need a sim (at this point virtually all RISCs are a shoo-in)
05:16:58 <CakeProphet> you know how hash tables have a size and like
05:17:02 <elliott> Gregor: Z80 has 32-bit addressing, I'm pretty sure.
05:17:06 <CakeProphet> your hash function can give you indices larger than your table?
05:17:16 <CakeProphet> yeah, I forgot to mod the index.
05:17:16 <elliott> CakeProphet: No shit.
05:17:45 <elliott> Gregor: Hmm, OK, maybe not, but it's not thaaaat 16-bit.
05:17:50 <pikhq> PDP-11?
05:17:52 <pikhq> :P
05:18:01 <elliott> Gregor: SIMH emulates a Z80: "SIMH emulates MITS Altair 8800 computer with Intel 8080, Zilog Z80 or Intel 8086 processors."
05:18:05 <elliott> pikhq: Not enough RAM.
05:18:07 <pikhq> I mean, sure, it's 16-bit, but it's the PDP.
05:18:24 <pikhq> elliott: Orly?
05:18:31 <elliott> pikhq: So sayeth Gregor
05:18:39 * shachaf uses a 256-bit CPU.
05:18:44 <elliott> Gregor: SuperH?
05:18:47 <shachaf> Gotta address that RAM, man.
05:18:51 <elliott> Gregor: As seen in the Sega Genesis!
05:18:57 <elliott> RISC, 32-bit. Should be trivial.
05:19:00 <pikhq> IA64!
05:19:03 <elliott> Gregor: And supports two endiannesses!
05:19:04 <Gregor> pikhq: sim
05:19:09 <Gregor> pikhq: (That doesn't suck foot)
05:19:19 <pikhq> Probably impossible anyways. IA64 makes x86 look normal.
05:19:26 <elliott> Gregor: http://forums.evolutionm.net/ecuflash/220884-superh-emulator.html
05:19:32 <Gregor> elliott: SuperH is the one also known as sh[34], right?
05:19:41 <elliott> Gregor: Oh, yeah
05:19:55 <elliott> http://omnimaga.org/index.php?topic=8015.0 ;; wow googline superh emulator produces such unreliable sourecs.
05:19:55 <Gregor> elliott: Yeah, I had trouble making a working cross-compiler for it.
05:19:56 <elliott> sources.
05:20:02 <elliott> Gregor: Fair enough
05:20:03 <Gregor> elliott: qemu has sh4 :P
05:20:26 * elliott has reached the "Other" section of http://en.wikipedia.org/wiki/List_of_instruction_sets :P
05:20:35 <elliott> Gregor: Are you sure you can't try the 6502?
05:20:40 <elliott> Gregor: You would be a hero.
05:21:12 <pikhq> Definitely MMIX.
05:21:13 <Gregor> lol
05:21:23 <Gregor> I can't quite figure out the OS situation of MMIX >_>
05:21:29 <Gregor> How do I make a cross compiler with a C library? <_<
05:21:36 <elliott> Gregor: Dude, you WROTE JSMMIX.
05:21:41 <elliott> What did you do to get that running?
05:21:49 <CakeProphet> er, no const& is not what I want.
05:21:57 <Gregor> elliott: Switched to MIPS.
05:22:04 <Gregor> elliott: But more to the point, it never had an OS.
05:22:11 <elliott> Gregor: I distinctly recall a bash shell before you switched.
05:22:17 <Gregor> elliott: Uh, no.
05:22:22 <Gregor> elliott: Not even close to close to that.
05:22:35 <elliott> Oh, okay then.
05:22:45 <elliott> Gregor: Oooh...
05:22:55 <elliott> Gregor: Subleq. Before you laugh, there's a sort-of-C->Subleq compiler.
05:23:24 <Gregor> "sort-of"?
05:23:26 <pikhq> https://en.wikipedia.org/wiki/PicoJava
05:23:30 <elliott> Gregor: http://esolangs.org/wiki/Higher_Subleq
05:23:36 <elliott> Gregor: More C than you might expect.
05:23:42 <elliott> Gregor: (Just skip straight to the examples)
05:23:55 <pikhq> (note: may require a C compiler to be written)
05:24:37 <elliott> Gregor: "The GNU Compiler Collection includes an MMIX back-end for its C/C++ compilers, contributed by Hans-Peter Nilsson and part of the main GCC distribution since late 2001. As of January 2011, the MMIX back-end to GCC continues to be actively developed and maintained by volunteers.
05:24:37 <elliott> Installation instructions for GCC + MMIX tools by Hans-Peter Nilsson.
05:24:37 <elliott> §3.17.26. MMIX Options for GNU GCC version 4.5.2 (GNU GCC Web site).
05:24:37 <elliott> §9.25. MMIX-dependent Features for GNU as from GNU binutils version 2.21, the assembler back-end for GNU GCC (GNU Binutils Web site).
05:24:39 <elliott> The above tools could theoretically be used to compile, build, and bootstrap an entire FreeBSD, Linux, or other similar operating system kernel onto MMIX hardware, were such hardware to exist."
05:24:48 <elliott> Gregor: Not sure what to do for libc though >_>
05:24:48 -!- sebbu2 has quit (Ping timeout: 240 seconds).
05:24:53 <elliott> Aha
05:24:59 <elliott> Gregor: newlib does mmix: http://cygwin.com/ml/newlib/2001/msg00577.html
05:25:00 <elliott> as of 2011
05:25:01 <elliott> erm
05:25:02 <elliott> 2001
05:25:13 <Gregor> But can I actually see its output X-P
05:25:25 <elliott> Gregor:
05:25:25 <elliott> MMIXware – Donald Knuth’s MMIX-SIM simple (behavioral) simulator, MMIXAL assembler, test suite, sample programs, full documentation, and MMMIX architectural (pipeline) simulator (gzipped tar file).
05:25:25 <elliott> MMIXX – An X11-based graphics package contributed by Andrew Pochinsky of MIT’s Center for Theoretical Physics which, when combined with the MMIXware sources above, augments the MMIX virtual machine with a 640×480 pixel, true-color ‘virtual display’ (for UNIX/Linux).
05:26:00 <Gregor> I dont' mean "can I simulate MMIX"
05:26:09 <Gregor> I mean "when I printf, will that go to real stdout"
05:26:14 <CakeProphet> assignment operators in C++ are the hugest pain in the ass...
05:26:17 <Gregor> newlib's default "system" is to stub out write.
05:26:41 <elliott> Gregor: Fair enough :P
05:26:50 <elliott> Gregor: http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html
05:26:52 <elliott> Gregor: Definition of simple I/O, the runtime environment, and the simulator's online/offline iteraction commands (45KB) (final version, 31 August 2011)
05:26:56 <elliott> You could PROBABLY patch in a write?
05:26:56 <Gregor> Oh well, to be investigated tomorrow.
05:27:01 <elliott> Gregor: But I bet it already has a write().
05:27:04 <elliott> There's only one MMIX machine :P
05:27:07 <Gregor> Probably.
05:27:13 <Gregor> Either way, oh well, to be investigated tomorrow.
05:27:21 <elliott> "The current target date for the ultimate volumes is the year 2020, so there is plenty of time to do the conversion." -- ever the optimist.
05:27:26 <Gregor> (The silly thing is it's practically guaranteed to work)
05:27:36 <pikhq> Wow. One of the IOCCC entries was a Lisp quine.
05:27:52 <pikhq> And a subset-of-Lisp interpreter in C sufficient to interpret itself.
05:27:59 <elliott> pikhq: Link :P
05:28:05 <pikhq> http://ioccc.org/2005/mikeash/mikeash.c
05:28:08 <pikhq> Common Lisp.
05:29:37 <CakeProphet> according to GCC, I have invalidlty used a member.
05:30:30 <Gregor> Naughty naughty.
05:30:52 <elliott> pikhq: mikeash! I have exchanged approx. ~50 words with that man.
05:31:47 <Gregor> Approximately approximately.
05:31:50 <elliott> Yes.
05:32:08 <elliott> (They were all about Classic Mac OS binutils support, to my knowledge.)
05:33:15 <Gregor> http://www007.upp.so-net.ne.jp/eiji-y/vmmmix/vmmmix.html <-- hey look, somebody ported Linux to MMIX
05:34:16 <elliott> Limmix.
05:34:32 <elliott> Gregor: You mean almost MMIX :P
05:34:34 <elliott> http://www007.upp.so-net.ne.jp/eiji-y/vmmmix/problem.html
05:34:40 <Gregor> 'struth
05:37:20 <CakeProphet> print ind
05:37:21 <CakeProphet> $4 = -2939
05:37:23 <CakeProphet> uh....
05:37:29 <CakeProphet> what?
05:40:31 <CakeProphet> my guess: the hash function they gave us can produce negative values. ???????
05:41:06 <Sgeo|web> Is there something wrong with negative values for hashes?
05:41:14 <CakeProphet> uh...
05:41:19 <CakeProphet> for hash table /indices/, yes.
05:41:19 <copumpkin> hashes are just piles of bits
05:41:31 <copumpkin> CakeProphet: then just interpret them as unsigned numbers?
05:41:40 <shachaf> copumpkin: Racist! Hashes are Unicode code points!
05:43:53 <CakeProphet> print key.data()
05:43:53 <CakeProphet> $9 = 0x612288 "abbreviate"
05:43:59 <CakeProphet> print location(key)
05:44:00 <CakeProphet> $10 = -615167939
05:44:02 <CakeProphet> nice. overflow.
05:44:20 <CakeProphet> GOOD JOB /PROFESSORS OF COMPUTER SCIENCE/
05:45:04 <CakeProphet> s/int/unsigned int/
05:49:12 <CakeProphet> > 3000 `mod` 3000
05:49:13 <lambdabot> 0
05:50:07 <CakeProphet> just making sure I'm sane.
06:14:06 <Sgeo|web> > 1 `div` 0
06:14:07 <lambdabot> *Exception: divide by zero
06:14:27 <Sgeo|web> > length [1 `div` 0, 1 `div` 0, 1 `div` 0, 1 `div` 0, 1 `div` 0]
06:14:28 <lambdabot> 5
06:27:17 <Gregor> # time gcc -O3 full.c
06:27:17 <Gregor> gcc: Internal error: Illegal instruction (program cc1)
06:27:33 <Sgeo|web> elliott: Epdeet
06:28:55 <Gregor> 1145.44 real 1102.56 user 31.51 sys
06:32:12 -!- CakeProphet has quit (Ping timeout: 252 seconds).
06:39:32 -!- DCliche_ has quit (Quit: You are now graced with my absence.).
06:42:03 -!- pikhq_ has joined.
06:42:25 -!- pikhq has quit (Ping timeout: 258 seconds).
06:46:57 <pikhq_> Wow. The total amount spent on NASA is $471 billion.
06:47:30 <pikhq_> For comparison, DOD gets $685 billion a year.
06:47:34 <pikhq_> Imma be depressed now.
06:48:39 <copumpkin> it's not about money, it's about taking things that people know about and cutting them so people know we're serious about saving money
06:48:42 <copumpkin> like the presidential limo
06:49:12 <elliott> presidential mini
06:49:43 <pikhq_> copumpkin: And not actually being serious, of course.
06:50:06 <pikhq_> If we *were* the military could reasonably get cut way the heck down.
06:50:17 <copumpkin> yeah
06:50:27 <pikhq_> Perhaps, y'know, not being half of military spending internationally.
07:26:05 -!- CakeProphet has joined.
07:26:05 -!- CakeProphet has quit (Changing host).
07:26:05 -!- CakeProphet has joined.
07:26:51 <CakeProphet> so as consolation for the scandinavians
07:27:33 <CakeProphet> I got roughly 1/3rd less fuel efficiency on this tank of gas than my previous.
07:27:51 <pikhq_> All because of your maniac speed?
07:27:53 <CakeProphet> proof that traveling quickly expends more energy than traveling slowly.
07:28:03 <pikhq_> Neat that it has that dramatic of an effect.
07:28:14 <CakeProphet> pikhq_: well I've been driving faster in general.
07:28:50 <CakeProphet> that calculation is just an estimate based on my current miles on this tank vs. fuel gauge position
07:28:56 <CakeProphet> when I fill up tomorrow I can get an exact number.
07:28:57 <pikhq_> It also makes sense; the air resistance goes up, what, quadratically based on current speed?
07:29:07 <CakeProphet> no clue :P
07:32:18 <CakeProphet> pikhq_: oh wait yes I do
07:32:27 <CakeProphet> pikhq_: it also depends on surface area for drag.
07:33:34 <CakeProphet> well it depends heavily on a mystical dimensionless ratio called the drag coefficient
07:33:41 <CakeProphet> which I'm sure involves surface area somehow.
07:34:07 <CakeProphet> oh wait no surface area is part of the actual drag equation along with the coefficient I think.
07:34:18 <CakeProphet> but yes it's v^2
07:36:05 <CakeProphet> I suspect the drag coefficient for my Honda Accord is pretty significant.
07:36:25 <fizzie> You should do that golfball trick the MythBusters tried out to it.
07:36:55 <CakeProphet> what is that?
07:37:06 <fizzie> http://www.blogcdn.com/www.autoblog.com/media/2009/10/mythbustersdimple_opt.jpg -- it's not just a drag-reducing method, it's also a fashion statement.
07:37:49 <CakeProphet> mmmm drag coefficient for a 2002 Honda Accord Coupe is 0.32
07:38:02 <CakeProphet> I imagine that's similar to a 1998 Hinda Accord Coupe even though the body style is slightly different
07:38:15 <CakeProphet> fizzie: ha.
07:38:18 <CakeProphet> beautiful.
07:39:23 <fizzie> "The show's team completely covered a last-gen Ford Taurus with modelers clay and figured out that it would achieve about 26 mpg at a constant 65 mph. They then went about adding over 1,000 dimples to the car's exterior. To keep the experiment consistent, all 1,082 dimples removed from the clay exterior were put in a box and set in the back seat so that the car would weigh exactly the same as before dimpling. The theory is that, like a golf ball, the dimples wo
07:39:24 <fizzie> uld reduce the car's drag through the air, thus allowing it to travel the same distance at the same speed using less fuel. The result? Over 29 mpg."
07:39:50 <elliott> hi
07:39:56 <fizzie> I can't quite recall what the original mpg figure for the car was before they covered it with that much clay though.
07:39:58 <elliott> oh gosh there is a picture
07:40:01 <elliott> what a beautiful picture
07:40:06 <elliott> fizzie: did you see the computer fans with those dimples
07:40:07 <elliott> they're so ugly
07:40:23 <fizzie> Nnno, I didn't.
07:40:25 <elliott> http://www.geeky-gadgets.com/wp-content/uploads/2010/07/sharkoon-gg.jpg
07:40:28 <elliott> behold
07:40:55 <elliott> http://www.sharkoon.com/sites/default/files/products/tl6s08_0.jpg
07:40:58 <fizzie> It looks like it has a skin condition.
07:41:01 <elliott> fizzie: bhehold even moreso
07:41:15 <elliott> http://www.sharkoon.com/sites/default/files/products/big_sharkoon_silent_eagle_2.jpg dmiples
07:41:32 <CakeProphet> fizzie: wow, they got that much fuel efficiency from a Ford? I'm impressed.
07:41:35 <monqy> dmiples
07:41:43 <CakeProphet> I want to golf ballize my honda now.
07:41:54 <fizzie> DMI, plz.
07:42:02 <CakeProphet> also it would increase my top speed!
07:42:04 <fizzie> The last picture is very artsy.
07:42:07 <CakeProphet> so perhaps I could hit 150.
07:42:52 <CakeProphet> but seriously they should make cars like that.
07:43:18 <CakeProphet> I imagine it's not even that expensive compared to the fuel savings over years of travel.
07:48:09 <elliott> yes but
07:48:11 <elliott> really ugly
07:51:14 <CakeProphet> elliott: oh no
07:51:15 <fizzie> Also I wouldn't trust any MythBusters numbers as-is; there seems to be something called "FastSkinz" (ugh), some sort of a dimpled plastic wrap for cars, which according to one test doesn't do squat.
07:51:23 <CakeProphet> American car culture will go into shock.
07:51:32 <elliott> mybthusters
07:51:33 <CakeProphet> fizzie: I just read that :)
07:51:43 <elliott> fizzie: fastskinz just makes me think of like
07:51:44 <monqy> fastskinz
07:51:45 <elliott> peeling human skin
07:51:49 <elliott> and burning it off and like
07:51:57 <elliott> it's still kinda soggy and burnt
07:52:01 <fizzie> elliott: It's made by SkinzWraps.
07:52:03 <elliott> and you layer it over your car in the blistering heat
07:52:05 <CakeProphet> fizzie: maybe mybthusters did better at the airodieyamicks
07:52:06 <elliott> and it sizzles slightly
07:52:10 <elliott> as it starts to get redder and less pink
07:52:13 <elliott> and fuses to your bonnet
07:52:21 <elliott> and then it melts into the car and your car becomes part human and euuuugh
07:52:42 <elliott> monqy i dont want to live any more
07:53:00 <monqy> :(
07:53:13 <monqy> cars are bad
07:53:20 -!- augur has quit (Read error: Connection reset by peer).
07:53:39 -!- augur has joined.
07:53:48 <CakeProphet> fizzie: fastskinz is literally just mass produced sheets that they apply to any car, it seems.
07:54:00 <CakeProphet> Mythbusters created one for a specific body shape.
07:54:04 <CakeProphet> perhaps there's a difference
07:54:37 <fizzie> There's more than one way to skin a car.
07:54:49 <elliott> fizzie: did you envision that mental image well enough to
07:54:50 <elliott> be disgusted
07:54:52 <CakeProphet> ha. ha. ha ha. ha ha ha.
07:54:53 <elliott> only worsk with black car btw
07:54:59 <CakeProphet> elliott: I love peeling flesh.
07:55:04 <CakeProphet> :)
07:55:25 <CakeProphet> will you be my friend?
07:55:53 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
07:57:09 <monqy> flesh peels frend
07:57:19 <monqy> bunrt peelt flesh cars frend
07:57:28 <monqy> vroome vroome
07:57:31 <monqy> "its fast"
07:58:08 <CakeProphet> why is C++ so bad.
07:58:39 <GreaseMonkey> because MSVC++
07:58:48 <CakeProphet> no.
07:58:51 <CakeProphet> no that's not why.
07:58:56 <monqy> because c++
07:58:58 <GreaseMonkey> that's why it doesn't tend to compile
07:58:59 <CakeProphet> that has nothing to do with C++ actually.
07:59:04 <CakeProphet> no.
07:59:10 <CakeProphet> I use GCC
07:59:13 <GreaseMonkey> because typecasts
07:59:13 <elliott> "The US Air Force devised a non-random scheme for promotion. Photograph: David Moir/Reuters" --Guardian
07:59:14 <CakeProphet> this is irrelevant
07:59:18 <CakeProphet> no not that either.
07:59:31 <monqy> thanks usaf
07:59:32 <CakeProphet> one particularly irksome thing is that string vs. char * stuff is stupid and annoying.
07:59:33 <GreaseMonkey> i forget how you're supposed to cast stuff properly in C++ in a way that it stops bitching at you
07:59:46 <elliott> CakeProphet: C++ is so bad because it has no design direction and is far too big, complicated, and self-contradictory for any possible design direction
07:59:46 <elliott> hth
07:59:56 <CakeProphet> elliott: yes thank you.
07:59:58 <CakeProphet> that is it.
08:00:05 <GreaseMonkey> if you really want an explicit string class you should just stick with java
08:00:10 <CakeProphet> uh
08:00:11 <elliott> GreaseMonkey: what
08:00:15 <CakeProphet> ..
08:00:17 <CakeProphet> :)
08:00:18 <GreaseMonkey> or something that isn't C++
08:00:22 <CakeProphet> I'll let elliott handle this.
08:00:23 <elliott> list of possible C++ criticisms: MSVC++, typecasts, no explicit string cast
08:00:27 <elliott> that is the whole list
08:00:31 <elliott> s/cast/class/
08:00:36 <monqy> GreaseMonkey: do you not know the context of this discussion....
08:00:39 <elliott> also hasn't everyone used std::string for like the last
08:00:43 <elliott> decade??? or more?
08:00:44 <monqy> GreaseMonkey: it's kind of: essential to: understand it
08:00:48 <elliott> so there's an explicit string class for you
08:00:50 <CakeProphet> elliott: apparently not.
08:01:04 <GreaseMonkey> well i use C hence why i tend not to give a shit about using "string"
08:01:20 <elliott> yeah USUALLY you don't use features of other languages
08:01:20 <CakeProphet> elliott: ifstreams constructor parameter is char *... also its << operator won't take strings I have to allocate an array with associated overflow problems.
08:01:21 <elliott> in a language
08:01:26 <elliott> like perl ties don't appear much in my haskell code
08:01:27 <GreaseMonkey> and whenever i have to typecast something in C++ that refuses to accept my casts, i just pull out the extern "C" block
08:01:38 <CakeProphet> elliott: dude but they should
08:01:44 <CakeProphet> ties should be integral to Haskell programming.
08:01:52 <elliott> CakeProphet: uh its like .cstr() or something to convert an std::string to const char *
08:01:57 <elliott> not hard :P
08:02:06 <elliott> CakeProphet: I don't think ifstreams have << because... they're input streams
08:02:09 <elliott> or do you mean >>
08:02:12 <CakeProphet> elliott: yes
08:02:29 <CakeProphet> .data() seems to work as well
08:02:29 <monqy> c++ confusion
08:02:32 <CakeProphet> that's not the issue.
08:02:49 <elliott> CakeProphet: "A global function with the same name exists in header <string>. This global function provides a similar behavior, but with standard C++ string objects instead of c-strings: see getline (string)."
08:02:51 <GreaseMonkey> then again, i'm someone who would rather shoot myself in the foot than fuck around with unnecessary OO-overhead
08:03:08 <monqy> grease "hardcore" monkey
08:03:08 <elliott> CakeProphet: or:
08:03:09 <elliott> CakeProphet: http://www.cplusplus.com/reference/string/operator%3E%3E/
08:03:19 <monqy> you have no idea how hard it was to type monkey properly
08:03:24 <monqy> no idea
08:03:31 <elliott> greasemonqy
08:03:35 <monqy> ;_; ;_; ;_;
08:03:37 <CakeProphet> elliott: oh hi.
08:03:43 <elliott> http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/
08:03:45 <elliott> so yeah they
08:03:46 <elliott> can do strings??
08:03:50 <CakeProphet> oh hi oh
08:04:42 <CakeProphet> elliott: another problem with C++: its documentation requires me to read too much.
08:04:47 <CakeProphet> I miss stuff!!
08:05:23 <CakeProphet> </valid_Cplusplus_complaint>
08:06:15 <CakeProphet> elliott: oh data isn't null-terminated
08:06:17 <CakeProphet> cstr is
08:06:22 <CakeProphet> c_str rather
08:07:37 <CakeProphet> elliott: but anyway, a legitimate complaint about C++: const
08:07:49 <CakeProphet> good idea, bad reality.
08:08:49 <elliott> const is also in C :p
08:10:52 <CakeProphet> ah yes
08:10:57 <CakeProphet> this makes things much better.
08:25:47 <CakeProphet> so what happens when you try to compare an unsigned int with a signed int?
08:25:50 <CakeProphet> in C.
08:31:09 <elliott> you get a warning
08:32:06 -!- sebbu has joined.
08:44:23 <olsner> you *might* get a warning
08:54:42 -!- monqy has quit (Quit: hello).
08:59:05 <elliott> http://esoteric.voxelperfect.net/wiki/Bath_Room_Blow_Jobs
08:59:15 <elliott> all it really wants to do is link us to wikipedia
09:36:51 <elliott> http://upload.wikimedia.org/wikipedia/commons/8/8f/Elman_srnn.png
09:48:28 -!- aloril has quit (Ping timeout: 260 seconds).
10:01:28 -!- aloril has joined.
10:24:36 -!- GreaseMonkey has quit (Quit: The Other Game).
10:43:08 -!- ais523 has joined.
11:05:10 -!- ais523 has quit (Ping timeout: 245 seconds).
11:11:45 -!- derdon has joined.
11:23:38 -!- Phantom_Hoover has joined.
11:27:00 <elliott> hi Phantom_Hoover
11:30:07 <Phantom_Hoover> Hello.
11:30:08 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
11:47:54 -!- artoct6 has joined.
11:50:12 -!- ais523 has joined.
11:53:49 <elliott> hi ais523
11:53:54 <ais523> hi
11:54:01 <ais523> I'm teaching at 12, so won't have much time to talk much
11:54:19 <ais523> and actually, I've been here since last time I was here, just the connection here is really unreliable
11:54:27 <ais523> (except when I was printing stuff or eating lunch)
11:57:33 <Phantom_Hoover> What are you teaching?
12:02:25 -!- ais523 has quit (Ping timeout: 240 seconds).
12:15:06 <fizzie> The art of running away, it seems.
12:15:10 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:16:37 -!- Phantom__Hoover has joined.
12:18:01 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:21:22 * Phantom__Hoover → cake day
12:21:23 -!- Phantom__Hoover has quit (Client Quit).
12:28:32 <fizzie> An apt pupil, I see.
12:38:54 <elliott> APT Guy?
12:56:02 <elliott> fizzie: Have you ever considered becoming an enterprise?
12:58:29 <fizzie> And then, to boldly go where no nickname has gone before. Also, to detach the saucer, that's also a thing that gets done, ain't it.
12:58:47 <elliott> fizzie: Yes; once at light speed.
12:58:58 <elliott> I kid not.
12:59:05 <elliott> Sorry.
12:59:06 <elliott> s/light/warp/
12:59:27 <elliott> "Though highly unadvised, it was possible to separate the saucer from the stardrive section at high-warp velocities. Used by Jean-Luc Picard during the first encounter with the Q, the saucer was separated at a warp speed of 9.5. According to Data, it was highly impractical, but possible with no margin for error. The slightest mishap would have made this attempt deadly. It was also required to clear the saucer section from the stardrive section to
12:59:27 <elliott> ensure safety, because as soon as separation was over, the saucer section would start to lose speed, causing danger to the stardrive section. However, Picard was able to successfully separate the saucer in order to protect the families of the Enterprise from the immense power of Q. (TNG: "Encounter at Farpoint") "
12:59:27 -!- poia has joined.
12:59:34 <elliott> `@ poia ? welcome
12:59:41 <HackEgo> poia: 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
12:59:43 -!- artoct6 has quit.
13:01:07 -!- poia has quit (Client Quit).
13:27:58 -!- aloril has quit (Ping timeout: 240 seconds).
13:40:42 -!- Ngevd has joined.
13:41:25 -!- aloril has joined.
13:45:43 <Gregor> elliott: Works on SH4 (had my x-compiler building at night :P )
13:45:57 <elliott> Gregor: lol
13:46:54 <elliott> Gregor: How about... one of Intel's RISC processors? I THINK one of them has their own architecture :P
13:47:04 <elliott> TBH RISC is sooooo boring though.
13:47:09 <Gregor> RISC is easy, yeah.
13:47:19 <elliott> Gregor: http://en.wikipedia.org/wiki/Intel_iAPX_432
13:47:23 <elliott> DO IT.
13:47:24 <Gregor> z/Series does /not/ work, by the way :P
13:48:11 <elliott> Software running on the 432 does not need to explicitly deallocate objects that are no longer needed, and in fact no method is provided to do so. Instead, the microcode implements part of the marking portion of Edsger Dijkstra's on-the-fly parallel garbage collection algorithm (a mark-sweep style collector). The entries in the system object table contain the bits used to mark each object as being white, black, or grey as needed by the collector.
13:48:15 <elliott> Gregor: Holy shit this thing is the best???
13:48:54 <Gregor> Architecture with OO memory. Wow
13:49:21 <elliott> Garbage-collected OO memory :P With built-in IPC
13:50:17 <elliott> Gregor: http://en.wikipedia.org/wiki/Intel_i860 The other VLIW Intel processor!
13:50:36 <elliott> The other horrible failure of a VLIW Intel processor!
13:51:20 <elliott> Gregor: Are you not even gonna test on a PDP btw? :P
13:51:41 <elliott> PDP, VAXen, and x86 = the world, several times over.
13:52:20 -!- boily has joined.
13:56:07 -!- ais523 has joined.
13:56:28 <elliott> hi ais523
13:57:17 <ais523> hi elliott
13:57:29 <ais523> Phantom_Hoover: I was teaching some first-year Java students recursion
13:57:52 <ais523> (elliott: it is /so annoying/ to see a question you can easily answer, and not be able to answer it because your Internet connection is refusing to work)
13:57:58 <elliott> heh
13:58:45 <fizzie> Gregor: Test on the TI TMS320C64x, it's the non-failure non-Intel VLIW. (It's the DSP they have in OMAP3/OMAP4 and therefore in gazillions of mobile phones.)
14:00:19 <elliott> ais523: what's the recommended cure if you start thinking about how wonderful ursala's data model is?
14:01:00 <ais523> elliott: actually using it
14:01:11 <elliott> ais523: heh
14:01:22 <elliott> ais523: but i only like one bit of it! ok, I like the other bits too, but in a totally different way.
14:01:32 <ais523> which bit do you like?
14:02:22 <elliott> ais523: the data model
14:02:27 <elliott> I just said that!
14:02:35 <ais523> oh, I meant actually using the data model
14:02:40 <ais523> not actually using the language
14:03:04 <elliott> how do you "use" a data model? that's rather under-the-hood stuff
14:03:35 <ais523> hmm… I'm beginning to think that the whole static vs. dynamic typing argument is missing the point
14:03:42 <ais523> in that what the two sides are arguing aren't mutually exclusive
14:03:47 -!- Ngevd has quit (Quit: Goodbye).
14:04:01 <ais523> (^ only tangentially related)
14:04:22 <elliott> ais523: /me thinks http://cdsmith.wordpress.com/2011/01/09/an-old-article-i-wrote/ is relevant
14:04:28 <ais523> and, hmm, you could write a language using the model
14:04:45 <elliott> a conditional is dynamic typing
14:10:25 <elliott> fizzie: Gregor: "The i860 did see some use in the workstation world as a graphics accelerator. It was used, for instance, in the NeXTdimension, where it ran a cut-down version of the Mach kernel running a complete PostScript stack. However, the PostScript part of the project was never finished so it ended up just moving color pixels around. In this role the i860 design worked considerably better, as the core program could be loaded into the cache
14:10:25 <elliott> and made entirely "predictable", allowing the compilers to get the ordering right."
14:11:46 <ais523> Gregor's quest for portability is rather madder than mine
14:11:59 <ais523> I was just planning to check Linux-x86, Linux-ARM, and Windows-x86
14:12:13 <ais523> possibly Linux-x86_64 too, I guess
14:12:22 <elliott> ais523: you're not writing a JIT
14:12:32 <ais523> but I'm planning to run a bunch of different compilers, as it's more a compiler thing that I'm exploiting than an arch thing
14:12:40 <elliott> a massively portable JIT with no platform-specific code is more impressive than a C program just working on a bunch of architectures
14:13:16 <ais523> right, indeed
14:13:33 <ais523> and I think Gregor testing on a bunch of archs is correct, it'll lead to a more hilarious hints file
14:14:18 <elliott> ais523: which will then be massively elided by the judges? :P
14:14:49 <ais523> nah, they have no motive to elide it but to save a tiny amount of bandwidth
14:15:20 <elliott> ais523: except that the hints files always include judge's comments and "/selected/ author's comments"
14:15:37 <elliott> which never make sense as a complete hints file to send in because they're missing tons of information, usually things the judges have already stated in their own words earlier
14:15:38 <ais523> elliott: but why would they deselect an arch list?
14:15:46 <elliott> ais523: readability?
14:16:29 <ais523> it's not too hard to mentally skip over an arch list
14:17:02 <elliott> <ais523> I don't understand why we have editors when I have Ctrl+F
14:17:37 <ais523> elliott: well, I don't typically use editors for /reading/ files
14:17:45 <ais523> relatedly, why doesn't less do syntax highlighting?
14:18:05 <elliott> there really needs to be a way to indicate bad jokes as separate from being dumb
14:27:49 -!- Ngevd has joined.
14:30:39 <Ngevd> Sorry, I had to walk my gran
14:30:50 <Gregor> I still need to rewrite my comments to be more amusing.
14:30:59 <Gregor> Ngevd: I ... what?
14:31:11 <Ngevd> She's got a bad leg
14:31:39 <ais523> hmm, what's the chance that elliott and Ngevd have met each other in real life but didn't recognise each other?
14:31:47 <elliott> ais523: too high
14:31:49 <Gregor> I think people only use the word "walk" as transitive verb when they're referring to pets :P
14:31:49 <Ngevd> Quite likely
14:32:02 <Ngevd> Hexham's not a big place
14:32:29 <Gregor> # time gcc -O1 full.c
14:32:29 <Gregor> 1297.88 real 1246.13 user 34.41 sys
14:32:43 <elliott> Gregor: Wow, what :P
14:32:48 <Gregor> elliott: VAX
14:32:52 <elliott> Noice.
14:32:56 <elliott> PDPDPDPDPDPDPDP
14:33:08 <Ngevd> Gregor, how's your IOCCC entry going?
14:33:13 <Gregor> Ngevd: I'm talking about it right now :P
14:33:34 <Gregor> Ngevd: x86[_64], SPARC, MIPS[el], ARM, PowerPC[64], Alpha, VAX
14:33:41 <Ngevd> Hmm...
14:33:45 <Ngevd> I could compile it...
14:34:00 <Ngevd> On ALMOST ALL THE COMPUTERS I OWN
14:34:17 <Gregor> How about ALL THE 32-bit computers you own?
14:34:50 <elliott> Ngevd: What computer do you own that isn't one of those? An Amiga?
14:35:00 <elliott> Commodore? Atari? I can't think of anything not really old.
14:35:13 <Ngevd> Wii? DS? not sure if they even apply
14:35:37 <elliott> DS is ARM.
14:35:48 <elliott> In fact, two different, incompatible ARMs.
14:35:54 <elliott> Running simultaneously.
14:36:14 <elliott> Wii is PPCish.
14:36:19 <Ngevd> Um, I've got computer that I don't know the architecture of
14:36:23 <Gregor> Almost certainly PPCish enough to run my JIT.
14:36:25 <elliott> Almost certainly PPCish enough for Gregor's JIT to work :P
14:36:25 <Ngevd> And an XBox 360
14:36:28 <elliott> HOLY SHIT Gregor
14:36:30 <elliott> THOSE SENTENCES
14:36:31 <elliott> PERFECTLY
14:36:34 <elliott> MATCHED UP
14:36:35 <elliott> FOR
14:36:36 <Gregor> :P
14:36:39 <elliott> FOUR WORDS
14:36:40 <elliott> JESUS
14:36:45 <elliott> THAT WAS LIKE
14:36:46 <elliott> QUANTUM
14:36:48 <elliott> ENTANGLEMENT
14:36:49 <elliott> OF WORDS
14:36:56 <Ngevd> So, entanglement
14:36:58 <Gregor> Ngevd: Eks bawks: Also PPCish
14:37:47 <Ngevd> Relatively old iPod Nano?
14:37:49 <elliott> What's PS3? Oh, Cell.
14:37:56 <elliott> So... PPCish.
14:38:06 <Gregor> Wow, SUN cc's option to not align memory is -misalign.
14:38:13 <Gregor> elliott: Yeah, all the modern game systems are PPCish.
14:38:21 <elliott> Ngevd: ARM: "The iPod Nano uses a PortalPlayer PP5021C "system on a chip" with dual embedded 80 MHz ARM 7TDMI processors."
14:38:28 <Ngevd> Well, my oldish computer uses ARM
14:38:39 <elliott> That I doubt, unless it's a netbook.
14:38:55 <fizzie> Or a Samsung SoC in the second-generation Nano.
14:38:57 <Ngevd> It's got two stickers on it saying "ARM"
14:39:02 <fizzie> ARM-based, of course.
14:39:09 <elliott> Gregor: Get Deewiant to test it on OpenSolaris, then you can say you've tested it on REAL UNIX.
14:39:14 <elliott> REAL SHIT UNIX
14:39:24 <Gregor> elliott: I'm actually on Purdue's Solaris right now :P
14:39:28 <Gregor> elliott: Hence my SUN cc comment.
14:39:37 <elliott> Gregor: But that's not Open!
14:39:40 <Ngevd> No wait, they say AMD
14:39:48 <Gregor> AMD, ARM, what's the diff
14:39:49 <elliott> Gregor: Also, surely "Sun cc".
14:40:03 <Ngevd> Which is x87
14:40:07 <Ngevd> *86
14:40:08 <Gregor> elliott: It's the one that comes in the SUNcc package.
14:40:14 <elliott> "Sun C compiler" seems to be what Sun called it, but really, SUNcc?
14:40:20 <elliott> Gregor: That's internals :P
14:40:42 <elliott> Gregor: At the MOST, I'll settle for SUN CC.
14:40:53 <Gregor> Sunc.
14:41:08 <Ngevd> Gregor, make it able to be compiled on my digital watch and I'll be amazed
14:41:14 <elliott> Gregor: Sunc is the premier compiler for the Itanic.
14:41:20 <elliott> Ngevd: What model :-P
14:41:34 <Ngevd> elliott, some sort of Casio
14:41:37 <Ngevd> Has a compass
14:41:52 <elliott> I bet that describes ~1,000,000 models of watch.
14:41:55 <Gregor> I'll make it run on the compass.
14:42:02 <Gregor> Using only magnetism for computation.
14:42:35 <fizzie> How about z80? I think TI still makes e.g. the TI-84+ calculator based on that, so it's not "really old". Of course it's not 32-bit, and the computerness is arguable.
14:42:45 <Ngevd> Can it run on GBA SP?
14:42:53 <elliott> Gregor: You should find a way to make it run on reality itself, answering such pressing questions as "is reality a RISC?", "what do reality's function prologues look like?", and "can reality segfault?".
14:42:57 <fizzie> GBA is an ARM too.
14:43:05 <elliott> fizzie: I told Gregor Z80, he said waaah address space.
14:43:08 <Gregor> All the world's an ARM.
14:43:09 <elliott> I said it's big enough.
14:43:12 <elliott> Gregor said nothing.
14:43:18 <Gregor> IT SNOT.
14:43:25 <elliott> Gregor: How can you even use more than like 16 megs of ram
14:43:38 <fizzie> Z80 address space is 64K though.
14:43:46 <fizzie> eZ80 goes up to 16M.
14:43:48 <Gregor> elliott: Allocating things as [W] where W = 9<<16 :P
14:44:09 <elliott> Gregor: That'll work for the 16 meg one, no?
14:44:53 <Gregor> elliott: And the other thing I allocate as 9<<25 :P
14:45:02 <Gregor> Nowait, I changed that to 9<<16 too ...
14:45:16 <elliott> Gregor: Just do malloc(SLIGHTLYLESSTHANW) if it fails :P
14:45:44 <Gregor> OK, I PROBABLY need about 3MB.
14:45:51 <elliott> So eZ80 will work!
14:45:56 <elliott> http://en.wikipedia.org/wiki/Van_der_Grinten_projection Wow, this is definitively the worst map projection /ever/.
14:46:09 <Ngevd> Holy crap agreed
14:46:16 <elliott> Being vandalised by xkcd morons >_>
14:46:19 <Gregor> Solaris mmap doesn't like -1 as protection modes :P
14:46:45 <elliott> Ngevd: It has all the advantages of Mercator with none of the advantages of Mercator!
14:47:08 <Gregor> Sun CC seems to generate the most retarded function epilogue imaginable ...
14:47:13 <Ngevd> I like the projection that's like those triangles
14:47:17 <Gregor> 2fed4: 81 c7 e0 08 ret
14:47:17 <Gregor> 2fed8: 81 e8 00 00 restore
14:47:18 <Gregor> 2fedc: 81 c7 e0 08 ret
14:47:18 <Gregor> 2fee0: 81 e8 00 00 restore
14:47:18 <Gregor> 2fee4: 00 01 00 00 illtrap 0x10000
14:47:18 <Gregor> 2fee8: 00 01 00 00 illtrap 0x10000
14:47:20 <Gregor> 2feec: 00 01 00 00 illtrap 0x10000
14:47:22 <Gregor> 2fef0: 00 01 00 00 illtrap 0x10000
14:47:24 <Gregor> 2fef4: 00 01 00 00 illtrap 0x10000
14:47:32 <fizzie> I'm not sure what C compilers there are for eZ80, though, other than Zilog's own best-name-ever "eZ80ZDS0100ZCC" compiler.
14:47:52 <elliott> eZ80ZDS0100ZCC might just be the best name for a compiler, ever.
14:48:00 <elliott> Ngevd: Dymaxion was a strange dude.
14:48:17 <elliott> fizzie: HOW IS IT ACTUALLY CALLED eZ80ZDS0100ZCC
14:48:39 <Ngevd> elliott, Dymaxion's a brand name. You mean Buckminster Fuller
14:48:41 <fizzie> Well, it's a component for the ZDS, the Zilog Developer Studio. I suppose they don't use the full name much.
14:48:48 <fizzie> But that's what the title of the manual is.
14:49:20 <elliott> ais523: suffer through painful irl laughter at that name with me, please
14:49:24 <elliott> <fizzie> I'm not sure what C compilers there are for eZ80, though, other than Zilog's own best-name-ever "eZ80ZDS0100ZCC" compiler.
14:49:39 <ais523> elliott: oh right, just realised what you were referring to
14:49:43 <ais523> I am indeed IRL laughing
14:49:55 <ais523> although it's not that painful, and I managed not to be drinking water at the time
14:50:04 <fizzie> Admittedly the prose only refers to it as "eZ80 C-Compiler", but that's more of a description than a name. I guess it's a matter of semantics.
14:50:11 <elliott> i'm going to call @'s compiler @kjsdf'sd;sa;d'\glsd;ghkshlang
14:50:18 <elliott> sorry need some numbers in there
14:50:19 <elliott> i'm going to call @'s compiler @kjsdf'sd;sa;d'\glsd;ghkshlang2347839423
14:50:57 <elliott> fizzie: I bet the developers working on it anthropomorphise it with a name as catchy as it has.
14:51:06 <elliott> "Oh, little old eZ80ZDS0100ZCC's broken again..."
14:54:53 <fizzie> Hey, AVR32 is a modern 32-bit instruction set you don't have in your list. And it runs Linux and all.
14:55:23 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:55:49 <elliott> Gregor: ^
14:58:24 <fizzie> Gregor: That, and I guess you could consider m68k too. I mean, sure, it's quite obsolete, but VAX.
14:58:49 <elliott> I suggested that upon-a-time.
14:59:53 <elliott> http://en.wikipedia.org/wiki/Special:Contributions/Petergray8
14:59:55 <elliott> worst person
15:00:01 <elliott> http://en.wikipedia.org/w/index.php?title=User_talk:ClueBot_Commons&diff=prev&oldid=461104563
15:00:05 <elliott> absolute worst :'(
15:00:18 <elliott> who the hell creates a wp account to vandalise anyway :P
15:01:57 <fizzie> Possibly he considers it not vandalism. There are many kinds of folks.
15:04:32 <fizzie> 14:46, 17 November 2011 95.149.230.3 (Undid revision 461104069 by Petergray8 (talk)) (Tag: section blanking)
15:04:32 <fizzie> 13:00, 17 November 2011 Petergray8 (http://www.xkcd.com/977/)
15:04:32 <fizzie> 12:57, 17 November 2011 ClueBot NG (Reverting possible vandalism by Petergray8 to...)
15:04:32 <fizzie> 12:57, 17 November 2011 Petergray8 (http://www.xkcd.com/977/)
15:04:42 <fizzie> What I think he's thinking now: IT KEEPS HAPPENING.
15:14:25 -!- MSleep has changed nick to MDude.
15:19:22 <ais523> I have no problem with Cluebot arbitrarily removing out-of-place xkcd links
15:20:01 -!- derrik has joined.
15:24:01 -!- copumpkin has joined.
15:24:06 <elliott> "Avid Reader of XKCD and believe anything stated there should be paralleled here as well." --Petergray8, describing himself, a bad person
15:39:00 -!- derrik has quit (Ping timeout: 252 seconds).
15:39:37 <elliott> Gregor: STATUS REPORT
15:40:12 <Ngevd> I went to look at the Fentiman's offices today
15:40:23 <Ngevd> But their floor was being painted
15:41:59 -!- derrik has joined.
15:45:22 <Gregor> crosstool-ng seems indecisive about whether it can make an m68k target ...
15:58:32 -!- ais523 has changed nick to ais523\unfoog.
16:05:13 <elliott> ais523\unfoog: Was there ever a foog clan?
16:05:25 <ais523\unfoog> I don't think so
16:05:38 <ais523\unfoog> btw, you can watch me play on termcast.org, I'm termcasting
16:05:48 <elliott> That might help me stay awake.
16:06:06 <elliott> , he says, tuning into Sokoban.
16:06:18 <ais523\unfoog> it's /that/ Sokoban level I'm in
16:06:22 <ais523\unfoog> the one that everyone hates
16:06:31 <ais523\unfoog> but I have the solution mostly memorised by now
16:07:01 <ais523\unfoog> TAEB523 is also termcasting
16:07:51 <elliott> What clan is e in?
16:07:55 <ais523\unfoog> clan bot
16:08:01 <ais523\unfoog> founding and only member
16:08:26 <ais523\unfoog> I tried to persuade xaiph to join, but she doesn't understand ssh
16:08:29 <elliott> ais523\unfoog: How lonely. Can I join? I guarantee I am not distinguishably better at playing NetHack than a bot :-)
16:08:40 <ais523\unfoog> but, umm, you aren't a bot
16:08:54 <elliott> So you're saying it's a speciesist clan?
16:09:02 <coppro> elliott can pass the turing antitest
16:09:13 <elliott> `quote turing.*Sgeo
16:09:14 <ais523\unfoog> yep
16:09:16 <HackEgo> 445) <Sgeo> Will anyone be irritated if I tend to disconnect and reconnect a lot? [...] <oerjan> we _almost_ have an established policy that bots will be banned it they do that. which means we might have to administer a turing test to sgeo, and that could get ugly.
16:09:25 <elliott> ais523\unfoog: I protest?
16:09:25 <ais523\unfoog> I don't know what I did there
16:09:40 <elliott> You should be able to do the Sokoban levels by just vaulting over the pits.
16:09:43 <ais523\unfoog> a turing antitest would be lost by humans really easily
16:09:56 <ais523\unfoog> elliott: you can do the first one like that; the others, though, you get dragged down by air currents
16:10:01 <elliott> A Turing antitest would be some long equation with a lot of digits that's really easy to compute.
16:10:23 <ais523\unfoog> or for NetHack bots, something along the line of "calculate the distance between the two staircases, you have 0.001 of a second, go!"
16:10:28 <elliott> heh
16:11:05 <ais523\unfoog> (TAEB523 would probably lose that one, incidentally; it doesn't calculate distances in steps)
16:11:25 <ais523\unfoog> (and uses really heavy caching to optimise distance lookups, and the cache takes several seconds to build)
16:12:09 <elliott> ais523\unfoog: TAEB523 is Planar, presumably?
16:12:20 <ais523\unfoog> yes
16:12:40 <elliott> I like how I can tell whether you've noticed I've typed something or not because you stop moving in the termcast.
16:12:46 <ais523\unfoog> all the Planar bots have had 523 in their name
16:13:08 <elliott> ais523\unfoog: Was that zombie invisible?
16:13:13 <ais523\unfoog> no
16:13:19 <ais523\unfoog> there were two of them, they didn't last long
16:13:23 <elliott> Very lightly-coloured, by any chance?
16:13:28 <elliott> I'm on a white-backgrounded terminal.
16:13:34 <ais523\unfoog> they're white
16:13:45 <coppro> ais523\unfoog: aha!
16:13:50 <ais523\unfoog> NetHack sends foreground color codes but not background color codes
16:13:57 <coppro> ais523\unfoog: you thought you could pass the turing test!
16:14:07 <elliott> ais523\unfoog: good; I would have disconnected if it forced me to look at a black background
16:14:15 <elliott> right now most of the screen is legible, rather than none of it
16:14:30 <ais523\unfoog> AceHack sets background too because you never set one without the other
16:14:40 <ais523\unfoog> but I'm thinking of allowing you to swap two color codes for terminal native background/foreground
16:14:59 <elliott> ais523\unfoog: yes, that's one of the main things that annoys me about acehack.
16:15:14 <elliott> the fact that it's possible to clash badly with background colours doesn't mean "impose /more/ of my preferences rigidly" is the correct solution
16:15:28 <ais523\unfoog> it's more a case of "impose preferences without which the game doesn't work"
16:15:36 <ais523\unfoog> arguably, the game should be fixed to work with a white background too
16:15:41 <ais523\unfoog> and I'm thinking about ways to do that
16:17:26 <elliott> The worst part of termcast compared to NAO is that I can't annoy people by sending them in-game mail.
16:17:31 -!- augur has quit (Remote host closed the connection).
16:17:57 <elliott> ais523\unfoog, you're walking outside the map. Stop it.
16:18:05 <ais523\unfoog> no I'm not
16:18:17 <ais523\unfoog> where do you think the map /is/?
16:18:27 <elliott> ais523\unfoog: You punched holes in the map!
16:18:29 <elliott> It's not natural!
16:18:44 <elliott> wait
16:18:51 <elliott> I think my terminal just desync'd somehow
16:18:59 <elliott> there we go
16:19:03 <ais523\unfoog> I just redrew
16:20:14 <elliott> I wonder what the collective name for snakes is.
16:20:28 <elliott> I know the collective name for mice is "friendship", as in "a friendship of mice".
16:21:44 -!- derrik has left.
16:21:55 <ais523\unfoog> hmm, I wonder if I'll ever cast knock?
16:22:02 <elliott> ais523\unfoog: hmm, are you playing at >80x24?
16:22:09 <ais523\unfoog> it's useful as I have no other method of unlocking things, but a valk's unlikely to get it castable for ages
16:22:13 <ais523\unfoog> no, I'm playing at 80x24 exactly
16:22:22 <ais523\unfoog> as is the norm for termcasts
16:22:28 <elliott> oh, my terminal was 22 high
16:22:29 <elliott> how strange
16:22:37 <ais523\unfoog> and hmm, BoH variant, I may be in trouble if I don't find an asc kit item soon (BoH isn't urgent)
16:22:41 <elliott> can you redraw again? :P
16:22:46 <ais523\unfoog> done
16:22:47 <elliott> thanks
16:23:12 <ais523\unfoog> shall I do this trapping two boulders (the way everyone does it) or trapping no boulders (which is about twice as long, but massively impressive)?
16:23:54 <elliott> ais523\unfoog: I'm biased because watching people play Sokoban is not terrible interesting
16:23:59 <elliott> but impressiveness is always good I suppose
16:24:02 -!- Darth_Cliche has joined.
16:24:06 <elliott> s/terrible/terribly/
16:24:36 <elliott> You should do it my way (well, it was the other map), which is trapping like fifty boulders, ending up with too few, and killing one of your five kittens in the process of getting more.
16:24:50 <ais523\unfoog> hmm
16:25:39 <ais523\unfoog> oh no, I haven't messed this up, have I?
16:25:52 <elliott> It... looks sort of messed up, but I'm no expert.
16:26:22 <ais523\unfoog> OK, I'll trap one
16:27:42 <ais523\unfoog> it's still better than the usual solution where two are trapped
16:27:47 <ais523\unfoog> I wonder what I remembered wrong?
16:27:58 <Ngevd> How do I watch?
16:28:02 <elliott> You forgot the five kittens.
16:28:03 <ais523\unfoog> Ngevd: telnet termcast.org
16:28:05 <elliott> Ngevd: $ telnet termcast.org
16:28:08 <elliott> then press the letter for ais523
16:28:45 <Ngevd> Watching
16:31:38 <ais523\unfoog> heh, it did come in useful, as well
16:32:21 <elliott> El-berhte/ehlbereth0EleberthElerberetheElber*(48thEeb*($H$)XthElbereth
16:35:37 <ais523\unfoog> oh come on, first time I do the Sokoban zoo without waking it, and there's a leprechaun blocking the door to the prize
16:37:01 <ais523\unfoog> whoops, did I just eyebump?
16:37:04 <ais523\unfoog> that could have gone a lot worse
16:38:56 -!- Phantom_Hoover has joined.
16:41:02 <elliott> raven get out of the dungeon
16:41:05 <elliott> you dont belong here..
16:44:37 -!- augur has joined.
16:46:55 <elliott> yay mines, full of nice hapyp gomes
16:47:00 <elliott> gomes like Ngevd
16:47:24 <ais523\unfoog> elliott: I possibly won't even mercilessly slaughter them!
16:47:39 <ais523\unfoog> the thing about being lawful in NetHack, is that monsters believe you'll be law-abiding regardless of whether you actually are or not
16:47:43 <elliott> ais523\unfoog does not know the delights of being at peace with the gnomes.
16:48:19 <elliott> hmm, ais523\unfoog's gratuitous use of ctrl+move makes me feel better about my constant usage of it
16:48:37 <elliott> why press a direction key twice when you can combine it with ctrl instead?
16:48:38 <ais523\unfoog> heh, I'd be using autoexplore sometimes if it existed in vanilla
16:48:49 <ais523\unfoog> elliott: farmoving is safer than spamming a key
16:48:58 <ais523\unfoog> as it stops when you're in trouble, unlike holding the key down
16:49:38 * elliott would like roguelikes a lot more if they didn't involve so much micromanagement of simple map navigation
16:49:58 <elliott> I should just be able to glance at a tile and say "over there" and be walked there. :p
16:50:55 <ais523\unfoog> you can, that's what the _ command is for; it's just that specifying the tile needs cursor movement or a click
16:51:33 <elliott> ais523\unfoog: well, yes; that's considerably more work than glancing :)
16:51:56 <ais523\unfoog> combine it with a gaze sensor?
16:52:09 <elliott> Plus speech recognition!! Best roguelike!
16:52:36 <ais523\unfoog> speech recognition would get wearing quickly
16:52:54 <elliott> Grunt recognition.
16:53:14 <ais523\unfoog> sure, Manlobbi, my pickaxe is outside
16:53:20 <ais523\unfoog> (don't worry, I'm not actually planning to take it out of the bag)
16:54:44 <elliott> I find Minetown's design somewhat perplexing.
16:57:02 <ais523\unfoog> indeed
16:57:11 <ais523\unfoog> the portal is a /dev/null thing, I think it's just placed randomly on the level
16:57:43 <ais523\unfoog> bleh, I can't BCU it without buying it
16:58:12 <elliott> ais523\unfoog: hmm, don't recall a portal :) but i've only been idly watching
16:58:20 <ais523\unfoog> it's the pink ^
16:59:13 <elliott> ah. what does it do?
16:59:40 <ais523\unfoog> it goes to the digdug challenge
16:59:42 <ais523\unfoog> which is stupidly luck-based
17:00:07 <ais523\unfoog> I'm wondering whether to risk trying it; I can't remember if failing it can still leave you permanently trapped (I'm guessing no)
17:00:27 <ais523\unfoog> failing it /does/ make the current game basically unwinnable until you go succeed at it on another server
17:00:55 <ais523\unfoog> and I really want a ?oCharging before I try it, and I won't have one of those IDed for ages
17:01:00 <ais523\unfoog> on the other hand, Dx:15
17:01:01 -!- CakeProphet has quit (Ping timeout: 245 seconds).
17:01:03 <ais523\unfoog> should I risk it?
17:01:08 <elliott> ais523\unfoog: yes
17:01:25 <elliott> (note: this reply does not consider your current situation; it is based purely on the structure of the question)
17:01:33 <ais523\unfoog> heh
17:02:06 <ais523\unfoog> OK, let's try it
17:02:42 <elliott> you know it's good when it starts with an elbereth
17:03:09 <ais523\unfoog> I spawned next to a monster
17:03:18 <ais523\unfoog> I had no other real choice
17:03:29 <elliott> @tell elliott test
17:03:30 <lambdabot> You can tell yourself!
17:03:32 <elliott> grr
17:03:39 -!- elliott has changed nick to qqq.
17:03:41 <qqq> @tell elliott test
17:03:42 <lambdabot> Consider it noted.
17:03:43 -!- qqq has changed nick to elliott.
17:03:45 <elliott> a
17:03:46 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
17:03:48 <elliott> good
17:05:31 <elliott> ais523\unfoog: i love distorted elbereths
17:05:56 <elliott> elbeeth
17:06:24 <ais523\unfoog> gah, failed
17:06:32 <ais523\unfoog> stupid luckbased missions
17:06:42 <elliott> did I just ruin anouther tournament game for you?
17:06:47 <ais523\unfoog> hmm, unless I can wrest it to death
17:07:00 <elliott> nothing happens
17:07:08 <ais523\unfoog> there's a 1/121 chance something happens
17:07:12 <ais523\unfoog> and it's got to happen eventually
17:07:13 <elliott> oh good
17:07:23 <elliott> nethack needs control structures
17:07:26 <ais523\unfoog> heh, and it missed anyway
17:08:09 <elliott> this is so funny
17:08:46 <ais523\unfoog> OK, /now/ I'm screwed
17:08:59 <elliott> ais523\unfoog: try poking itto death
17:09:06 <ais523\unfoog> you don't win the challenge if you do that
17:09:10 <ais523\unfoog> they're rather easy to kill with HP
17:09:21 <ais523\unfoog> but that just makes sure you lose
17:10:08 <ais523\unfoog> oh wow, that was a really crazy offchance and it /actually happened/
17:10:22 <elliott> wait, what happened?
17:10:33 <ais523\unfoog> random unIDed !oPoly while wearing an unIDed =oPC
17:10:35 <elliott> im not sure pooka is fooled
17:10:51 <ais523\unfoog> oh, I lost anyway due to being hit too muich
17:10:51 <elliott> wh00ps
17:10:52 <ais523\unfoog> *much
17:11:05 <elliott> sorry about your game
17:11:18 <ais523\unfoog> I'll have to go play on a different server to recover from that
17:11:22 <ais523\unfoog> brb, startscumming wizards
17:11:37 -!- augur has quit (Remote host closed the connection).
17:11:41 <elliott> taeb523 is ugly on this terminal
17:13:10 <ais523\unfoog> elliott: I'm going to startscum wizards on clan EIT's server
17:13:35 * elliott watches
17:14:38 <ais523\unfoog> ?oCharging is quite rare
17:14:38 <lambdabot> Unknown command, try @list
17:14:42 <ais523\unfoog> but it makes the challenge much easier
17:14:51 <ais523\unfoog> well, more likely to win
17:14:55 <ais523\unfoog> it's not really a skill-based challenge
17:15:29 <elliott> ais523\unfoog: grr, that "would you like to return" message is missing a space and uses (y/n) in place of the proper [yn]
17:15:35 <ais523\unfoog> indeed
17:15:48 <ais523\unfoog> also, makes me press return after typing y, unlike every other prompt in NetHack
17:17:20 <elliott> ais523\unfoog: that's more understandable, it takes more than a few chars of patch to fix that :)
17:17:27 <elliott> ais523\unfoog: also, it has two spaces after the prompt...
17:18:04 <ais523\unfoog> bleh, why does ?oCharging have to be so rare
17:18:13 <ais523\unfoog> and /oDangerouslyInflate so low on charges
17:18:34 <elliott> wand of dangerously inflate is definitely name of the century imo
17:18:58 <ais523\unfoog> that name is the only good thing about the digdug challenge ;)
17:19:12 <ais523\unfoog> I /suspect/ you aren't supposed to be able to trivialise the movement around the level with E-coining
17:19:18 <elliott> wow, i just realised what @'s equivalent of database indexes, and the answer makes me very happy
17:19:25 <elliott> s/indexes/indexes is/
17:21:09 -!- Ngevd has quit (Ping timeout: 260 seconds).
17:21:36 <ais523\unfoog> woohoo
17:21:49 <ais523\unfoog> now I have to somehow survive to the challenge
17:22:00 <ais523\unfoog> given how awful the rest of that inventory is
17:22:06 <ais523\unfoog> I can have fun with +oFear after a while, at least
17:22:50 <ais523\unfoog> also, now I have to remember how to play wizard
17:23:45 <ais523\unfoog> kitten why are you fetching gems, you know they're worthless
17:23:56 -!- Ngevd has joined.
17:24:18 <ais523\unfoog> that's better
17:24:25 <ais523\unfoog> I tend to give cats female names, for whatever reason
17:24:38 <Ngevd> I may rewrite Homestuck as a epic poem
17:24:56 <elliott> ais523\unfoog: because kitten is not smart kitten is just happy???
17:25:04 <Ngevd> In the style of, for example, the Odyssey
17:25:07 <elliott> and gems are pretty............
17:25:24 <Ngevd> "Tell me muse, of the tale of Sburb"
17:25:25 <elliott> (i am projecting onto the kitten)
17:25:47 <ais523\unfoog> she's called Gemma
17:25:48 <Phantom_Hoover> <ais523\unfoog> kitten why are you fetching gems, you know they're worthless
17:25:48 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
17:25:54 <Phantom_Hoover> This is the least aisy thing to say?
17:26:10 <Ngevd> I think that may be didactic hexhameter
17:26:15 <Ngevd> *hexhameter
17:26:20 -!- augur has joined.
17:26:20 <Ngevd> AAARGH
17:26:26 <Ngevd> Without the second h
17:26:35 <Phantom_Hoover> That wasn't deliberate?
17:26:37 <Ngevd> No
17:26:54 <ais523\unfoog> it's a great typo anyway
17:27:07 <ais523\unfoog> presumably you're used to typing "hexham"
17:28:01 <ais523\unfoog> lichens are worth 4 XP? wow!
17:28:12 <elliott> this channel is hexham + helsinki + feather
17:28:15 <Ngevd> And I meant dactylic, not didactic
17:28:20 <ais523\unfoog> feather is a country?
17:28:36 <elliott> yes.
17:28:40 <elliott> or rather, will haven be.
17:31:13 <ais523\unfoog> yay, XL 2
17:33:41 <ais523\unfoog> wow, only 31% fail on force bolt even with metal armour?
17:33:49 <ais523\unfoog> *29%
17:33:54 <ais523\unfoog> **39%
17:34:01 <ais523\unfoog> I suppose that goes with my intelligence of 19
17:35:11 -!- elliott has quit (Remote host closed the connection).
17:35:32 -!- Zuu has quit (Ping timeout: 244 seconds).
17:35:42 -!- elliott has joined.
17:35:42 -!- elliott has quit (Changing host).
17:35:42 -!- elliott has joined.
17:40:16 <ais523\unfoog> hmm, I suppose my gnome is home
17:42:00 -!- elliott has quit (Quit: Leaving).
17:44:47 <Gregor> So what OS name am I supposed to use in an MMIX triple?
17:44:59 <ais523\unfoog> 2009
17:47:20 * Gregor proceeds to use mmix-unknown-mmix as if that makes any sense.
17:47:32 <Gregor> Nope, doesn't like that ...
17:47:38 <Gregor> mmix-unknown-mmixware?
17:47:44 <Gregor> Aha
17:53:00 <Gregor> *** Configuration mmix-unknown-mmixware not supported GCCCCCCCCCCCCCCCCC
17:53:07 <Gregor> (That was supposed to be "GCSEEEEEEEEEEEEEEE"
17:53:27 <Ngevd> Try changing that to A-level
17:53:36 <Phantom_Hoover> A sentiment which Ngevd will no doubt— dammit.
17:54:07 <Gregor> How do I target GCC for this >_<
17:56:29 <Gregor> mmix-mmixware apparently.
17:56:33 <Gregor> mmix-unknown-mmixware is no-go
18:01:33 -!- Ngevd has quit (Ping timeout: 260 seconds).
18:15:02 <Gregor> 1. 4000000000000094: 27fefe10 (SUBUI) privileged instruction!
18:15:04 <Gregor> Damn you MMIX
18:15:30 <Gregor> How do I tell mmix "I am privileged, let me run privileged instructions"
18:15:52 <ais523\unfoog> should the program need privileged instructions?
18:17:02 <Gregor> ais523\unfoog: Arguably. I have no mmap, so I'm just plopping instructions into malloc'd space and then executing them. Probably doing that requires some privs.
18:18:46 <Gregor> I'll bet it would work too, if it wasn't for those meddling kids.
18:19:05 -!- Phantom__Hoover has joined.
18:19:29 <ais523\unfoog> Gregor: can't you mprotect the malloced area to be executable/
18:19:40 <Gregor> ais523\unfoog: No mprotect either.
18:19:47 <ais523\unfoog> ouch
18:20:49 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:22:04 <Gregor> Either that, or subtraction is a privileged operation :)
18:22:04 -!- Ngevd has joined.
18:22:46 <Gregor> The obnoxious thing is, looking at the code, I'm confident this would work.
18:22:49 <Gregor> But I can't test it.
18:48:06 -!- augur has quit (Remote host closed the connection).
18:48:44 -!- GreaseMonkey has joined.
19:01:26 -!- Vorpal has joined.
19:01:36 -!- CakeProphet has joined.
19:02:06 -!- monqy has joined.
19:04:01 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
19:05:28 <CakeProphet> hello peons.
19:05:42 <Ngevd> Who's peons?
19:09:56 <monqy> whose peons
19:11:10 <CakeProphet> eons of peons muahahahahaha
19:12:33 <monqy> We've the Fifteen best 3d tv Next year worlwide : and put each one of style a single spot intended for your current verdic-doing pleasure.
19:13:30 -!- chickenzilla has quit (*.net *.split).
19:13:30 -!- shachaf has quit (*.net *.split).
19:13:34 -!- shachaf has joined.
19:13:36 -!- z^ck has joined.
19:28:38 <olsner> the knowledge that Brunt is also played by jeffrey combs is really hard to integrate
19:30:34 -!- augur has joined.
19:31:17 -!- Phantom__Hoover has joined.
19:31:21 -!- augur has quit (Read error: Connection reset by peer).
19:31:27 -!- augur has joined.
19:41:09 <CakeProphet> ]http://www.npr.org/blogs/health/2011/11/17/142414818/americans-are-fat-and-expected-to-get-much-fatter?sc=fb&cc=fp
19:41:14 <CakeProphet> this is the most shocking news I've read in a long time.
19:41:18 <CakeProphet> Americans are /fat/?
19:51:43 <CakeProphet> seriously why are we not cutting military spending this is obscene.
19:51:49 <CakeProphet> erwerjwjtwehthweuhwuierh america
19:54:25 <CakeProphet> I'm going to laugh if they rescind the automatic sequestration that's supposed to occur if the supercommittee doesn't reach an agreement.
19:54:28 <CakeProphet> laugh and then cry.
19:55:50 <CakeProphet> Defense Secretary Leon Panetta has warned Congress that automatic across-the-board cuts to the Pentagon's budget would "invite aggression from U.S. adversaries."
19:55:55 <CakeProphet> holy crap this is the most retarded thing I've ever heard.
19:55:58 <pikhq_> Like who?
19:56:07 <CakeProphet> pikhq_: like who what?
19:56:36 <pikhq_> I think the only people that would be actively *agressive* against the US would do well to handle a single guy from Texas.
19:56:38 -!- GreaseMonkey has quit (Quit: The Other Game).
19:57:05 <pikhq_> Rather than, y'know, just pretty damned annoyed at the US because we *haven't* cut the military. :P
19:57:14 <CakeProphet> http://en.wikipedia.org/wiki/List_of_countries_by_military_expenditures
19:57:21 <CakeProphet> okay look at this
19:57:28 <Ngevd> Per capita Switzerland has the highest
19:57:39 <CakeProphet> and then tell me that cutting $600 billion over a decade from that
19:57:49 <CakeProphet> will make us INCREDIBLY VULNERABLE TO ATTACK.
19:57:55 <CakeProphet> AAAAAH PANIC
19:57:56 <CakeProphet> etc
19:58:09 <pikhq_> OH NO CHINA MIGHT ATTACK THEIR SINGLE LARGEST TRADING PARTNER
19:58:20 <pikhq_> FOR REASONS UNBEKNOWNST TO ME
19:58:26 <pikhq_> Or worse: FRANCE
19:58:47 <Ngevd> It could be 1812 all over again!
19:58:55 <Ngevd> Except with a different country!
19:58:56 <CakeProphet> but no really that's insan.
19:59:01 <CakeProphet> er
19:59:02 <CakeProphet> -r
19:59:04 <CakeProphet> ..
19:59:54 <CakeProphet> we could cut from the military, pay off the deficit, and still be spending well over /quadruple/ what the next highest country in military expenditure spends on its military.
20:00:18 <CakeProphet> (over time I mean)
20:00:22 <CakeProphet> (not all at once)
20:03:17 <CakeProphet> the news tends to cover how much money programs will make in a decade or whatever.
20:03:34 <CakeProphet> but it's really more about whether or not it will reverse the expenditure/revenue disparity.
20:05:06 <pikhq_> We could also divert that funding to NASA, and have 50x'd the NASA budget.
20:05:23 <pikhq_> And probably produce rather absurd economic growth from not throwing that money onto a burn pit.
20:06:01 <pikhq_> THINK OF THE SCIENCE!
20:06:48 <CakeProphet> but people see "$600 billion over a decade" and then look at a 15 trillion dollar deficit and think "oh well that's really not going to help at all this is pointless"
20:07:10 <CakeProphet> they should present in terms of how much it changes cost vs. revenue.
20:07:29 <CakeProphet> pikhq_: oh also
20:07:31 <CakeProphet> if you were sane before
20:07:33 <CakeProphet> http://www.usdebtclock.org/
20:07:36 <CakeProphet> now you're not.
20:07:47 <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
20:08:23 <pikhq_> olsner: What's worse is that if you consider debt to GDP ratio, the US isn't that bad.
20:08:36 <pikhq_> Erm.
20:08:37 <pikhq_> CakeProphet:
20:08:38 <CakeProphet> lol
20:08:52 <pikhq_> olsner: That would involve more meta than audiences are usually comfortable with.
20:08:53 <CakeProphet> olsner: oh really?
20:09:15 <CakeProphet> oh, I mean
20:09:18 <CakeProphet> pikhq_:
20:09:49 <olsner> pikhq_: indeed
20:10:18 <CakeProphet> so yeah on the debt clock
20:10:26 <CakeProphet> look at the section titled "largest budget items"
20:10:37 <pikhq_> CakeProphet: We're nearing 100%.
20:10:41 <CakeProphet> now pick the ones you'd be most comfortable cutting.
20:10:50 <CakeProphet> hint: it's the defense/wars category
20:10:56 <pikhq_> CakeProphet: Japan is currently sitting at around 250%.
20:11:09 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/0/0c/Public_debt_percent_gdp_world_map_%282010%29.svg
20:12:05 <pikhq_> What's really effing crazy is Japan is pretty close to the US national debt *in absolute terms*.
20:12:17 <CakeProphet> huh
20:12:18 <CakeProphet> so maybe
20:12:24 <CakeProphet> we should just make less of a deal about our debt?
20:12:30 <CakeProphet> and it will cease to matter? :P
20:12:38 <pikhq_> It's a *little* bit of an issue, but yes, it really is overblown.
20:12:52 <CakeProphet> huh.
20:12:56 <CakeProphet> so basically
20:13:02 <CakeProphet> american citizens are bad at numbers
20:13:03 <CakeProphet> okay
20:13:04 <CakeProphet> good to know.
20:13:15 <pikhq_> Most developed nations have rather high national debt, and have for ages.
20:13:39 <CakeProphet> so maybe...
20:13:49 <CakeProphet> politicans are kind of intelligent, or at least some of them are
20:13:50 <CakeProphet> and know this?
20:13:51 <pikhq_> This is in part because the government loaning money is a major part of the basis of the worth of fiat currency.
20:14:19 <pikhq_> Erm, borrowing.
20:16:29 <CakeProphet> pikhq_: well, it's a systematic problem that can easily become worse (the deficit)
20:16:32 <CakeProphet> so..
20:16:40 <CakeProphet> something worth fixing now before it gets truly problematic.
20:16:50 <pikhq_> Quite true.
20:17:06 <pikhq_> The key to doing that is actually rather simple: don't have a budget deficit.
20:17:14 <CakeProphet> I no rite?
20:17:18 <pikhq_> That would require military cuts.
20:17:22 * CakeProphet gasp
20:17:25 <CakeProphet> pikhq_: TERRORISTS
20:17:28 <pikhq_> Hence why it's not happened.
20:18:03 <CakeProphet> pikhq_: WE NEED THE MILITARY BUDGET OF SEVERAL POWERFUL NATIONS COMBINED IN ORDER TO COMBAT NON-STATE GUERILLA FORCES.
20:18:08 <CakeProphet> or else we're /doomed/
20:18:26 <pikhq_> Heck. I'd imagine if we just got rid of military bases in countries that have been stable in the long term and aren't near nations that *aren't*, we'd have pretty much gotten rid of the budget deficit.
20:18:39 <pikhq_> So. Goodbye, bases in Europe.
20:19:07 <pikhq_> Goodbye, last vestiges of the US occupation of Japan.
20:19:26 <pikhq_> Sadly can't do anything at all about South Korea; nominally that's still a war zone.
20:20:47 <pikhq_> Also: say the fuck goodbye to Australia and Canada (why we have bases there is beyond me)
20:21:09 <CakeProphet> pikhq_: SO THAT WE CAN ASSIST OUR ALLIES IN THEIR TIME OF NEED.
20:21:15 <Phantom__Hoover> Oh god, not politics.
20:21:28 <CakeProphet> when the nazi terrorists land on the shores of Canada will be ready to nuke them.
20:21:33 <CakeProphet> *we will
20:22:09 <CakeProphet> Phantom__Hoover: contribute or shush :P
20:22:37 <olsner> nuke canada? sounds like the natural reaction yes
20:22:45 -!- oerjan has joined.
20:22:52 <Phantom__Hoover> <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
20:22:57 <Phantom__Hoover> This DS9 you were talking about?
20:23:25 <olsner> Phantom__Hoover: yes, as always recently, about a season left of it
20:23:40 <Phantom__Hoover> Which episode?
20:23:48 <Phantom__Hoover> (I'm assuming it was some assault on the Dominion.)
20:24:04 <Phantom__Hoover> pikhq_, wow, looking at that debt graph, the UK isn't as bad as I'd have thought.
20:24:22 <olsner> no, this was 6x24 - Time's Orphan... molly goes into a time thingamajig
20:24:33 <CakeProphet> olsner: well it was kind of to highlight the lack of sense that happens when you think about war in terms of conventional/nonconventional warfare and nuclear warfare at the same time.
20:24:49 <Phantom__Hoover> Looking at it further, I'm seriously doubting the usefulness of it as a metric.
20:24:50 <CakeProphet> but, yes that's the best course of action.
20:24:52 <CakeProphet> in that scenario.
20:24:59 <Phantom__Hoover> olsner, ah, yes, the last O'Brien Must Suffer!
20:25:10 <Phantom__Hoover> (Was there one in S7, I don't really remember any.)
20:25:16 <pikhq_> Phantom__Hoover: It seems to be only loosely useful as a metric.
20:25:25 <CakeProphet> Phantom__Hoover: I doubt /your/ usefulness as a metric.
20:25:32 <pikhq_> What's more important, IME, is ability and willingness to repay debt.
20:25:38 <Phantom__Hoover> I'm not a metric.
20:26:09 <Phantom__Hoover> I'm overflowing with x, y such that x /= y, Phantom__Hoover(x,y) = 0.
20:30:51 -!- Zuu has joined.
20:31:20 <olsner> Phantom__Hoover: well, in dominion war plots, success could happen that early because there are ways to go after that...
20:31:33 <olsner> but in your basic get problem/solve problem plot like this, you can only have failed solutions until the end of the episode
20:32:35 <CakeProphet> pikhq_: what would be bad is if lawmakers decide to cut medicare / social security instead of military spending.
20:32:46 <pikhq_> CakeProphet: Also impossible.
20:32:50 <pikhq_> That would hurt old people.
20:32:52 <pikhq_> Old people vote.
20:33:09 <CakeProphet> pikhq_: yes, and those are the two main alternatives
20:33:11 <CakeProphet> so... hopefully
20:33:14 <CakeProphet> the choice is obvious.
20:33:15 <pikhq_> Get rid of their social security and you get a lynch mob.
20:33:35 <pikhq_> Of old people, mind, but a lynch mob is still nothing to fuck around with.
20:33:51 <CakeProphet> pikhq_: but apparently Rick Perry wants to cut education? wtf
20:34:10 <CakeProphet> has anyone won the presidency on an offer to cut SPENDING AWAY FROM THE FUTURE OF OUR CHILDREN
20:34:13 <CakeProphet> wtf.
20:34:38 <olsner> education gets you smart people, and smart people are boring as well as scary in the eyes of stupid people
20:34:54 <olsner> obviously the proper approach is to stop educating people
20:36:01 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
20:36:02 <olsner> oh, replace "smart" with "educated" there, different things...
20:39:53 -!- Patashu has joined.
20:45:16 <oerjan> ais523\unfoog: c'est spam on le wiki
20:46:21 <ais523\unfoog> oerjan: deleted
20:47:45 -!- Phantom__Hoover has joined.
21:01:14 <CakeProphet> pikhq_: oh hey so I started talking about military spending on facebook and one of my friends who has a husband in the military was like "lol military spending, that's funny"
21:01:19 <CakeProphet> A CHALLENGER HAS APPEARED.
21:01:31 * CakeProphet releases the fact bombs.
21:02:11 <pikhq_> CakeProphet: I'd imagine part of her reaction to that is because, well, our military spending is *moronic*.
21:02:19 <pikhq_> Billions on a useless device? Okay!
21:02:31 <CakeProphet> pikhq_: er I meant to say /military spending/cut military spending/
21:02:40 <pikhq_> Supply soldiers basic amenities? Eh, if we feel like it, maybe.
21:03:06 <CakeProphet> pikhq_: she equates "cut military spending" with "leave soldiers who need vital equipment defenseless"
21:03:09 <CakeProphet> which was already do anyway.
21:03:19 <CakeProphet> s/was/we/
21:12:10 <CakeProphet> pikhq_: also if we diverting funding from the military into NASA
21:12:17 <CakeProphet> not only would we get civilian technological advancements
21:12:20 <CakeProphet> but military as well.
21:12:26 <CakeProphet> or, we could anyway
21:12:31 <CakeProphet> provided NASA were sufficiently funded.
21:12:53 -!- copumpkin has changed nick to and.
21:13:22 <CakeProphet> and: hi
21:13:25 <Ngevd> and, I resume the nick-change is related to other-channel shenanigans
21:13:37 <Ngevd> `? welcome @and
21:13:39 <HackEgo> welcome @and? ¯\(°_o)/¯
21:13:39 <and> yes
21:13:51 <Ngevd> `? @and welcom
21:13:53 <HackEgo> ​@and welcom? ¯\(°_o)/¯
21:14:03 <Ngevd> How do you do that again?
21:14:26 -!- and has changed nick to copumpkin.
21:14:26 <CakeProphet> lol
21:14:31 <CakeProphet> `@ copumpkin welcome
21:14:34 <HackEgo> copumpkin: exec: 9: welcome: not found
21:14:39 <CakeProphet> `@ copumpkin ? welcome
21:14:41 <HackEgo> copumpkin: 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
21:14:57 <Ngevd> That's the one
21:15:13 <copumpkin> failbot
21:15:24 <CakeProphet> failpumpkin
21:19:02 <oerjan> `echo '#!/bin/sh\n@ \"$1 ? welcome\"' >bin/welcome
21:19:04 <HackEgo> ​'#!/bin/sh\n@ \"$1 ? welcome\"' >bin/welcome
21:19:09 <oerjan> oops
21:19:15 <oerjan> `run echo '#!/bin/sh\n@ \"$1 ? welcome\"' >bin/welcome
21:19:17 <HackEgo> No output.
21:19:23 <oerjan> `cat bin/welcome
21:19:25 <HackEgo> ​#!/bin/sh\n@ \"$1 ? welcome\"
21:19:32 <oerjan> argh
21:19:38 <oerjan> oh
21:20:05 <CakeProphet> oerjan: ha. ha. ha ha.
21:20:08 <oerjan> `run echo "#!/bin/sh\n@ "'"$1 ? welcome"' >bin/welcome
21:20:10 <HackEgo> No output.
21:20:13 <oerjan> `cat bin/welcome
21:20:15 <HackEgo> ​#!/bin/sh\n@ "$1 ? welcome"
21:20:25 <oerjan> `chmod +x bin/welcome
21:20:27 <HackEgo> chmod: missing operand after `+x bin/welcome' \ Try `chmod --help' for more information.
21:20:31 <oerjan> argh
21:20:35 <oerjan> oh darn
21:21:42 <oerjan> `run (echo "#!/bin/sh"; echo '@ "$1 ? welcome"') >bin/welcome
21:21:44 <HackEgo> No output.
21:21:49 <oerjan> `cat bin/welcome
21:21:50 -!- Sgeo|web has joined.
21:21:51 <HackEgo> ​#!/bin/sh \ @ "$1 ? welcome"
21:22:03 <oerjan> `run chmod +x bin/welcome
21:22:05 <HackEgo> No output.
21:22:10 <oerjan> `welcome whoever
21:22:12 <HackEgo> whoever: 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
21:22:17 <oerjan> yay
21:22:20 <CakeProphet> `welcome The Pope
21:22:22 <HackEgo> The: exec: 9: Pope: not found
21:22:27 <CakeProphet> BUG
21:22:31 <oerjan> argh
21:22:32 <CakeProphet> `welcome 'The Pope'
21:22:34 <HackEgo> ​'The: exec: 9: Pope': not found
21:22:36 <CakeProphet> `run welcome 'The Pope'
21:22:38 <HackEgo> The: exec: 9: Pope: not found
21:23:05 <oerjan> wtf
21:23:16 <CakeProphet> @ doesn't take multiple words and stuff
21:23:17 <CakeProphet> is why
21:23:17 <CakeProphet> that is
21:23:27 <CakeProphet> so it's not really a bug per se
21:23:30 <oerjan> ah
21:23:32 <CakeProphet> I just can't welcome the pope :(
21:23:41 <CakeProphet> `welcome Oprah
21:23:43 <oerjan> `cat bin/@
21:23:44 <HackEgo> Oprah: 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
21:23:44 <HackEgo> ​#!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
21:23:45 <CakeProphet> yaaaaaay
21:24:04 <CakeProphet> oerjan: well it needs to know when the name ends and the command begins
21:24:23 <CakeProphet> restricting the name to one word (since it's supposed to be an IRC nick) is totally reasonable
21:24:40 <oerjan> `@ The Pope ? welcome
21:24:42 <HackEgo> The: exec: 9: Pope: not found
21:24:47 <oerjan> hm...
21:24:49 <CakeProphet> `@ ThePope ? welcome
21:24:52 <HackEgo> ThePope: 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
21:25:32 <CakeProphet> what's up with the >/dev/null?
21:25:36 <CakeProphet> oh
21:25:37 <CakeProphet> nevermind
21:25:37 <CakeProphet> :P
21:29:13 <oerjan> `@ ThePope welcome
21:29:15 <HackEgo> ThePope: : 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
21:29:19 <oerjan> huh
21:29:22 <CakeProphet> :)))
21:29:33 <oerjan> oh wait duh :P
21:29:39 <CakeProphet> `@ ThePope welcome asshole
21:29:42 <HackEgo> ThePope: asshole: 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
21:30:18 <oerjan> hm...
21:30:28 <CakeProphet> here we see the noble viking savage Oerjan perplexed by the workings of combining bash scripts.
21:31:06 <CakeProphet> he is likely playing with the large pointy horns atop his helmet.
21:31:12 <CakeProphet> because that is totally a thing vikings have.
21:31:17 <oerjan> very likely.
21:31:44 <oerjan> oh wait, horns? no way. horns are for cows
21:33:24 * olsner has a horned helmet
21:33:35 -!- ais523\unfoog has quit (Remote host closed the connection).
21:35:11 <olsner> though it seems to be missing one of its horns, I suspect it became a drinking glass at some point
21:35:29 <CakeProphet> for viking... mead?
21:35:32 <CakeProphet> what do vikings drink.
21:35:38 <oerjan> mead is good
21:35:54 <CakeProphet> yes vikings love mead.
21:36:02 <oerjan> beer also good
21:36:08 <oerjan> wine is for girly men
21:36:16 <CakeProphet> oerjan: you've never had American light beer, I see.
21:36:33 <olsner> CakeProphet: assorted alcoholic beverages of unspecified kind
21:36:46 <oerjan> vinland is irrelevant. _norse_ beer is good.
21:37:50 <CakeProphet> oerjan: http://en.wikipedia.org/wiki/File:Norse-world.png
21:37:58 <CakeProphet> nice worldview you have.
21:38:14 <olsner> oerjan: norse beer... like ringnes?
21:38:39 <CakeProphet> Helluland. good land.
21:38:46 <oerjan> the swede seems to be brewing up a fight
21:41:01 <oerjan> hell of a land
21:43:40 <CakeProphet> oerjan: so what's it like being superior to all other races?
21:44:03 <oerjan> good, good
21:44:50 <Ngevd> DOOGNIHGT
21:44:54 -!- Ngevd has quit (Quit: Goodbye).
21:44:57 <CakeProphet> yes, I imagine Hitler would have great respect for you if his empire still existed today. :>
21:45:53 <oerjan> `run which perl
21:45:54 <HackEgo> ​/usr/bin/perl
21:48:06 <CakeProphet> `run cat `which perl`
21:48:09 <HackEgo> ​ELF...
21:50:24 <CakeProphet> `run which perl test
21:50:26 <HackEgo> ​/usr/bin/perl \ /usr/bin/test
21:50:31 <CakeProphet> ah
21:50:34 <CakeProphet> `run test
21:50:36 <HackEgo> No output.
21:50:44 <CakeProphet> o_o?
21:51:53 <oerjan> i think test only acts by exit code...
21:53:15 <CakeProphet> ah yes
22:04:01 <CakeProphet> something is wrong
22:04:04 <CakeProphet> elliott is missing.
22:07:04 <Phantom__Hoover> I'm exceptionally annoyed too.
22:09:23 <oerjan> `run (echo '#/usr/bin/perl -w'; echo '$_ = $ARGV[0]; if ($_) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }') >bin/welcome
22:09:26 <HackEgo> No output.
22:09:45 <oerjan> `run chmod +x bin/welcome
22:09:46 -!- Slereah has quit (Ping timeout: 244 seconds).
22:09:47 <HackEgo> No output.
22:09:50 <oerjan> `welcome test
22:09:53 <HackEgo> ​/hackenv/bin/welcome: line 2: syntax error near unexpected token `{' \ /hackenv/bin/welcome: line 2: `$_ = $ARGV[0]; if ($_) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }'
22:09:56 <oerjan> argh
22:10:01 -!- Sgeo|web_ has joined.
22:10:23 <oerjan> `cat bin/welcome
22:10:24 <CakeProphet> Sgeo|web_: NEW HOMESTUCK OMG
22:10:25 <HackEgo> ​#/usr/bin/perl -w \ $_ = $ARGV[0]; if ($_) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
22:10:34 -!- Slereah_ has joined.
22:11:10 <Sgeo|web_> CakeProphet: Do you want me to start being your notifier, or are you somehow peeking ahead?
22:11:54 <Sgeo|web_> Because that update is old
22:12:22 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
22:12:25 <Phantom__Hoover> http://www.reddit.com/r/askscience/comments/mfpxi/if_starlight_is_extremely_old_if_someone_were_to/c30ladn?context=3
22:12:31 <Phantom__Hoover> The ultimate obnoxious smiley.
22:12:50 <Vorpal> @tell elliott If everything goes well a new super-resolution Skyrim pano will be ready during the weekend. I found the fov switch in the skyrim console :)
22:12:51 <lambdabot> Consider it noted.
22:13:06 <Phantom__Hoover> Vorpal, shut up about Skyrim you bastard the pain is too much
22:14:04 <Vorpal> Phantom__Hoover, what? aren't you getting a new computer?
22:14:10 <Phantom__Hoover> Yes.
22:14:17 <Vorpal> well then
22:14:20 <Vorpal> what is the issue?
22:14:38 <Phantom__Hoover> elliott, displaying astonishing attention to detail, recommended a mini-ATX case.
22:14:56 <Vorpal> Phantom__Hoover, he what
22:15:02 <Vorpal> Phantom__Hoover, I hope you didn't buy that?
22:15:10 <oerjan> oops
22:15:26 <Phantom__Hoover> Yes; it was an honest mistake, and I had to look quite hard to find that detail on the product page.
22:15:26 <CakeProphet> Sgeo|web_: I was actually just fooling you into thinking there was more
22:15:36 <Vorpal> Phantom__Hoover, so you ordered it. ouch
22:15:37 <CakeProphet> I should have known that you hit refresh constantly waiting for updates
22:15:37 <Phantom__Hoover> It was categorised with ATX cases, apparently.
22:15:42 <CakeProphet> and thus already know that there are no new updates
22:15:51 <Phantom__Hoover> Vorpal, Scan seem to have a reasonable enough return policy.
22:16:28 <Phantom__Hoover> But anyway, I ordered a replacement on Tuesday, only to discover today that my card was blocked after the original purchase.
22:16:39 <Vorpal> Phantom__Hoover, that is good at least
22:16:44 <Vorpal> Phantom__Hoover, what?
22:16:46 <Vorpal> blocked?
22:16:48 <Vorpal> what do you mean
22:17:17 <Phantom__Hoover> In case of fraud; the purchasing history for that card is something like £8 £8 £8 £8 £750.
22:17:29 <Vorpal> ouch
22:17:41 <Vorpal> Phantom__Hoover, call the bank then?
22:18:12 <Phantom__Hoover> But I'd already ordered the replacement by then, and Scan don't give a decent way to cancel the order, and it seems I ordered the last of that case in stock; elliott's absence prevents me from working around that.
22:18:13 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
22:18:28 -!- Vorpal has joined.
22:18:32 <Vorpal> gnh
22:18:53 <Phantom__Hoover> Scan also haven't cancelled the purchase from the blocked card, so I have no idea whether it'll go through once that's cleared up.
22:18:56 -!- Patashu has quit (Ping timeout: 252 seconds).
22:18:58 <Vorpal> okay that was stupid. Messed up by starting ipv6 tunnel on two computers at once
22:19:10 <Phantom__Hoover> Best-case scenario, I get the case on Saturday.
22:19:21 <Phantom__Hoover> Monday is not looking like an unlikely option.
22:19:28 <Vorpal> oh well
22:19:38 <Vorpal> still that is O(1)
22:19:46 <Vorpal> or at most O(n)
22:19:55 <Vorpal> depending on what you count
22:20:03 <Phantom__Hoover> By that point, the motherboard, CPU and RAM will have been sitting assembled in an anti-static bag in an in-use utility room for nearly a week and my paranoia will have gone through the roof.
22:20:52 <Vorpal> assembled?
22:21:03 <Vorpal> Phantom__Hoover, don't you start with mounting the mobo in the case?
22:21:05 <Phantom__Hoover> Plugged into each other.
22:21:07 <Vorpal> then do all the other stuff
22:21:14 <Vorpal> that is how I did it always
22:21:23 <Phantom__Hoover> Vorpal, yes; I only realised the form factor was wrong after I'd put it all together.
22:21:45 <olsner> just put it on your desk like a proper *desktop computer* and start using it until the case gets there
22:23:01 <Phantom__Hoover> Leaving it assembled was basically the only option I could see at the time, particularly as I thought I'd only be waiting for a couple of days.
22:25:27 <Sgeo|web_> Robotfindskitten: Good game, best kitten
22:27:08 <oerjan> `run (echo '#/usr/bin/perl -w'; echo 'if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }') >bin/welcome
22:27:10 <HackEgo> No output.
22:27:17 <oerjan> `run chmod +x bin/welcome
22:27:19 <HackEgo> No output.
22:27:24 <oerjan> `welcome test
22:27:26 <HackEgo> ​/hackenv/bin/welcome: line 2: syntax error near unexpected token `$_=shift' \ /hackenv/bin/welcome: line 2: `if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }'
22:27:34 <oerjan> _now_ what
22:27:47 <oerjan> oh of course
22:27:54 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo 'if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }') >bin/welcome
22:27:56 <HackEgo> No output.
22:27:59 <oerjan> `run chmod +x bin/welcome
22:28:00 <HackEgo> No output.
22:28:04 <oerjan> `welcome test
22:28:06 <HackEgo> test: 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
22:28:19 <oerjan> `welcome The Pope
22:28:21 <HackEgo> The: Pope: 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
22:28:25 <oerjan> `welcome
22:28:28 <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
22:28:34 <oerjan> :)
22:31:34 <Phantom__Hoover> Written by fizzie, I see.
22:33:27 <oerjan> what?
22:34:25 <Phantom__Hoover> The: Pope.
22:34:49 <CakeProphet> `welcome Barack_Obama Oprah
22:34:51 <HackEgo> Barack_Obama: Oprah: 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
22:34:59 <CakeProphet> good
22:35:02 <CakeProphet> we're prepared.
22:35:26 <CakeProphet> for the day when Barack Obama and Oprah simultaneously join.
22:35:27 <olsner> `welcome CakeProphet
22:35:29 <HackEgo> CakeProphet: 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
22:38:15 -!- augur has quit (Remote host closed the connection).
22:55:20 -!- boily has quit (Ping timeout: 252 seconds).
23:06:18 <CakeProphet> "TG: and was like shit yes i ALL KINDS of know how to use my web browser to download serveral files
23:06:21 <CakeProphet> "
23:17:45 <Gregor> Thought of a tooootally different way to JIT.
23:17:48 <Gregor> Time to do magic.
23:23:16 <Vorpal> Gregor, oh, how?
23:23:57 * Phantom__Hoover → sleep
23:23:59 -!- Phantom__Hoover has quit (Quit: Leaving).
23:25:34 <Gregor> Vorpal: I'll wait to see if it works at all first :P
23:25:40 <Vorpal> Gregor, fair enough
23:27:46 -!- Sgeo|web_ has quit (Ping timeout: 265 seconds).
23:28:50 <Vorpal> Gregor, do you think it will take long?
23:29:01 <Vorpal> Like, next hour? Tomorrow? Next week?
23:29:57 <Gregor> Several hours.
23:32:03 <Vorpal> Gregor, oh well, going to put this computer to sleep and go to bed. @tell me if it worked or not, so I know if I should bother looking through logs for how it worked.
23:32:05 <Vorpal> night →
23:33:39 -!- Vorpal has quit (Read error: Operation timed out).
23:42:37 <Gregor> I wonder if memcpy(a, NULL, 0) would consistently not segfault on all systems ...
23:48:38 <Gregor> void **b=&b;
23:48:42 <Gregor> By no logic should that work.
23:49:32 <CakeProphet> Gregor: this is C! you're in luck!
2011-11-18
00:05:44 -!- augur has joined.
00:18:28 -!- Patashu has joined.
00:25:58 -!- Rugxulo has joined.
00:28:27 <Rugxulo> I'm surprised, I had given up on IOCCC coming back (at least for the foreseeable future)
00:35:12 <oerjan> it's just the end times, nothing to worry about.
00:35:55 -!- derdon has quit (Remote host closed the connection).
00:45:54 <CakeProphet> oerjan: unfortunately no one actually knows C anymore
00:45:59 <CakeProphet> so the submissions will all bad bad.
00:46:13 <monqy> bad bad :(
00:46:23 <oerjan> what, how can you possibly doubt our Gregor
00:47:46 <Rugxulo> no one knows C? eh? it's still like #1 or #2 at TIOBE
00:48:00 <Rugxulo> GNU still worships it like crazy, that's for sure
00:48:10 <Rugxulo> similarly Clang users (Apple), etc.
00:49:21 -!- pikhq_ has quit (Ping timeout: 245 seconds).
00:49:24 -!- pikhq has joined.
00:51:41 <CakeProphet> Rugxulo: no one writes C anymore. it's all just robots that program C now.
00:51:47 <CakeProphet> :>
00:51:56 <Rugxulo> robots?
00:52:13 <Rugxulo> even *BSD funded PCC to get to 1.0 stage
00:52:22 <Rugxulo> so apparently everybody is (still) gaga over C
00:52:39 <Rugxulo> maybe thinking of another language while they're compiling C ;-)
01:00:11 <pikhq> I anticipate C lasting at least as long as COBOL already has.
01:00:16 <pikhq> Quite plausibly longer.
01:02:15 -!- pikhq_ has joined.
01:04:35 <Rugxulo> did I hear right or did C1x finish?
01:05:08 -!- pikhq has quit (Ping timeout: 252 seconds).
01:06:32 <coppro> I don't know if the new C standard has been published yet
01:07:07 -!- Zuu has quit (Ping timeout: 244 seconds).
01:10:03 <Rugxulo> dunno, I read somewhere that there's some weird rule that it can pass early if unanimous, and supposedly it was, so ...
01:11:48 <Rugxulo> ah well
01:11:50 -!- Rugxulo has quit (Quit: Leaving).
01:24:34 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:48:49 -!- copumpkin has joined.
01:52:23 -!- pikhq has joined.
01:54:31 -!- pikhq_ has quit (Ping timeout: 244 seconds).
02:04:33 -!- Sgeo|web has joined.
02:04:46 <Sgeo|web> elliott's not here for me to tell em UPDATE
02:08:15 <CakeProphet> Sgeo|web: question: do you do anything other than refresh MSPA?
02:08:24 <Sgeo|web> Nope!
02:08:34 <CakeProphet> tsk tsk
02:08:48 * Sgeo|web is pleased that CakeProphet thinks that he refreshes MSPA constnatly
02:09:04 <monqy> mspa refresh pride
02:10:14 <Sgeo|web> CakeProphet: EPDOOT
02:11:06 <CakeProphet> OH LOOK I'VE ALREADY SEEN IT WHAT NOW?
02:11:32 <Sgeo|web> I thought there was another update almost immediately after
02:11:45 <monqy> epdoot
02:12:51 <Sgeo|web> My notifier went off a second time, for some reason
02:13:06 <Sgeo|web> CakeProphet: Sorry to reveal I'm not a constantly refreshing madman
02:13:16 <monqy> notifier???
02:14:02 <Sgeo|web> CakeProphet: 6058 changed
02:23:58 -!- pikhq has quit (Ping timeout: 240 seconds).
02:24:12 -!- pikhq has joined.
02:46:01 <CakeProphet> Sgeo|web: I'm surprised you don't read Dr Brinner: Ghost Psychiatrist.
02:58:32 <Sgeo|web> I want to, but I don't have the time...
03:00:59 <Sgeo|web> I mean, I can barely find the time to read Mezzacotta
03:02:14 <pikhq> There isn't enough.
03:03:11 <pikhq> http://www.mezzacotta.net/archive.php?date=-9999999999999-01-01 Here, begin archive binging.
03:03:31 <Sgeo|web> If people can read all of Dr. Brinner: Ghost Psychiatrist, then I can read all of Mezzacotta
03:03:49 <pikhq> I mean literally there isn't enough time.
03:03:59 <pikhq> The Universe isn't old enough.
03:04:17 <Sgeo|web> CakeProphet: Where'd you get your time machine for reading Dr. Brinner?
03:05:10 <Sgeo|web> pikhq: the solution is more universes
03:16:27 -!- Sgeo|web has quit (Quit: Page closed).
03:26:33 -!- Sgeo|web has joined.
03:46:21 <CakeProphet> Sgeo|web: I'm just so cool I don't need one.
03:47:39 <Sgeo|web> Sorry
03:48:07 <oerjan> you don't need a time machine at 16 picokelvin
03:48:27 <CakeProphet> uh so does
03:48:29 <CakeProphet> delete [] array;
03:48:35 <CakeProphet> delete objects in the array as well?
03:48:41 <CakeProphet> if so, why is C++ so delete happy?
03:48:50 <CakeProphet> if not, what the fuck is wrong with my program?
03:49:15 <pikhq> CakeProphet: Yes, that is the intended semantics of delete[];
03:49:24 <CakeProphet> zdhvjibhdfhbsj<ehfshe hf uiwhe riu wh iur hwr
03:49:27 <CakeProphet> pikhq: can I just like
03:49:33 <CakeProphet> delete the array and not the things in it?
03:49:39 <CakeProphet> actually... hmmm
03:49:42 <CakeProphet> nevermind that's not the problem
03:49:44 <pikhq> delete array; does that, I think.
03:49:46 <CakeProphet> because I'm copying those things anyway.
03:49:50 <pikhq> Also, you don't want to do that.
03:49:51 <CakeProphet> I think
03:50:28 <CakeProphet> hmmm
03:51:01 <CakeProphet> okay so
03:51:03 <CakeProphet> v.key = key;
03:51:09 <CakeProphet> where the right-hand key is a string reference
03:51:13 <CakeProphet> this copies the string, yes?
03:52:10 <CakeProphet> yeah nevermind
03:52:13 <CakeProphet> that's not the problem.
03:54:45 -!- augur has quit (Remote host closed the connection).
04:06:39 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
04:13:13 <CakeProphet> I'm guessing something's wrong with my table resize...
04:26:16 <CakeProphet> ooooooooooooooh
04:26:31 <CakeProphet> once again fooled by the assignment operator on references.
04:28:54 <CakeProphet> silly me, thinking I could use and re-assign variables as mere symbolic constructs to write clear algorithms
04:29:05 <CakeProphet> and not RECKLESSLY OVERWRITE THINGS.
04:30:41 <CakeProphet> there we go.
04:39:46 -!- pikhq_ has joined.
04:39:51 -!- pikhq has quit (Ping timeout: 244 seconds).
04:40:34 -!- GreaseMonkey has joined.
04:40:42 -!- GreaseMonkey has quit (Changing host).
04:40:42 -!- GreaseMonkey has joined.
04:43:37 <CakeProphet> `run cat welcome
04:43:39 <HackEgo> cat: welcome: No such file or directory
04:43:45 <CakeProphet> `run cat `which welcome`
04:43:48 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
04:43:55 <CakeProphet> `run cat `which @`
04:43:57 <HackEgo> ​#!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
04:45:51 <CakeProphet> `run which not
04:45:52 <HackEgo> No output.
04:46:11 <CakeProphet> is there a command that negates a return status?
04:46:37 <oerjan> i dunno, there's a reason i used perl instead of sh :P
04:47:20 <CakeProphet> `run ls
04:47:22 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
04:47:59 <CakeProphet> `run if cat wisdom/CakeProphet | grep -i hi; then echo "hi" fi
04:48:01 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
04:48:02 <pikhq_> CakeProphet: if [ $? ];then false;else true;fi
04:48:17 <CakeProphet> what is $?
04:48:28 <pikhq_> The error status of the previous command.
04:48:34 <CakeProphet> ah
04:48:36 <CakeProphet> yay bash
05:08:46 <CakeProphet> it makes so much sense.
05:08:49 <CakeProphet> bash does.
05:09:02 <CakeProphet> so much sense I sometimes struggle to understand it.
05:12:40 <Deewiant> CakeProphet: ! negates a return status
05:13:25 <CakeProphet> Deewiant: anywhere or just within the [] thingy
05:13:28 <CakeProphet> ?
05:14:22 <Deewiant> Anywhere
05:15:23 <CakeProphet> `run !echo "I don't believe you" && exit
05:15:25 <HackEgo> bash: !echo: command not found
05:15:31 <CakeProphet> `run !(echo "I don't believe you") && exit
05:15:33 <HackEgo> I don't believe you
05:15:42 <CakeProphet> `run !(echo "I don't believe you") && echo "oh right"
05:15:44 <HackEgo> I don't believe you
05:15:47 <CakeProphet> okay.
05:16:03 <CakeProphet> I thought: "surely it could not be this simple in bash"
05:16:04 <Deewiant> `run ! echo foo && echo bar
05:16:06 <HackEgo> foo
05:16:18 <Deewiant> You don't need the (), that spawns a subshell
05:16:32 <CakeProphet> oh right of course...
05:17:14 * CakeProphet is tempted to use perl always for bashy things.
05:20:03 <CakeProphet> hmmm, so {} doesn't spawn a subshell or???
05:21:13 <Deewiant> http://stackoverflow.com/questions/2188199/bash-double-or-single-bracket-parentheses-curly-braces
05:21:29 -!- MDude has changed nick to MSleep.
05:21:44 -!- DCliche has joined.
05:21:57 -!- pikhq has joined.
05:23:06 <CakeProphet> that doesn't really explain the {cmd1; cmd2; cmd3; ... } | parallel
05:23:09 <CakeProphet> thing
05:24:32 <Deewiant> Hmm, bah, so it doesn't
05:24:50 -!- pikhq_ has quit (Ping timeout: 240 seconds).
05:24:59 <Deewiant> But no, {} doesn't spawn a subshell
05:25:30 -!- Darth_Cliche has quit (Ping timeout: 276 seconds).
05:25:34 <CakeProphet> but in this usage is otherwise identical?
05:27:22 <Deewiant> Uh, pretty much so, yes, I think
05:27:50 <Deewiant> It's a big enough difference that I'm not sure what you include in "otherwise identical" :-P
05:28:21 <CakeProphet> they pretty much have the same purpose when piped and such.
05:29:00 <Deewiant> Yes
05:29:55 <CakeProphet> they both allow a sequence of commands to share the same piped input/output
05:36:41 <CakeProphet> wait what congress wants to censor the internet?
05:37:09 <Madoka-Kaname> That sounds like a good way to make the internet really really angry.
05:38:28 <CakeProphet> wow amazing.
05:41:12 <CakeProphet> http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act
05:41:20 <CakeProphet> wow they even tie it into protecting American jobs.
05:45:34 <pikhq> That sounds like a good way to make Google abandon ship.
05:47:21 <Madoka-Kaname> Then what happens when even Google leaves
05:47:50 <CakeProphet> "Sources suggest Google has packed up and moved to Greenland. It has reportedly taken its money and jobs with it."
05:48:16 <pikhq> Probably a few other tech companies join them.
05:48:33 <pikhq> Suddenly, Silicon Valley is in Greenland.
05:48:44 -!- oerjan has quit (Quit: In other news, Greenland's population triples).
05:48:48 <pikhq> :)
05:48:54 <Madoka-Kaname> And America :(s?
05:49:35 <Madoka-Kaname> http://www.thatvideosite.com/video/dr_michio_kaku_discusses_americas_secret_weapon
05:50:08 <CakeProphet> pikhq: I wonder if they'll ban youtube?
05:50:56 <Madoka-Kaname> CakeProphet, that'd be a good way to secure a very very bad approval rating.
05:50:58 <pikhq> Doubtful. I think the first widespread action against Youtube would be Google going "Uh... Fuck you."
05:51:11 <pikhq> Madoka-Kaname: Congress has a lower approval rating than communism ATM.
05:51:17 <Madoka-Kaname> Can you really cover that up propaganda?
05:51:30 <Madoka-Kaname> Google's pretty much holding up a middle finger at you.
05:51:54 <pikhq> Yes, communism, the movie villain of decades, is more popular than Congress.
05:53:31 <Madoka-Kaname> Maybe we should switch to monarchy
05:54:01 <CakeProphet> Madoka-Kaname: Dr. Michio Kaku is secretly this guy from Alpha Centauri http://2.bp.blogspot.com/_s2Xyd2TRbi8/SlkqC18nSII/AAAAAAAAAAM/bx2D97B6ABs/S660/zakharovface.jpg
05:54:59 * Madoka-Kaname ???
05:55:33 <CakeProphet> Madoka-Kaname: play Alpha Centauri and you will know it is true.
05:57:47 <CakeProphet> pikhq: I wonder if they'll ban youtube?
05:57:49 <CakeProphet> er
05:57:51 <CakeProphet> what?
05:57:55 <CakeProphet> In addition, depending on the method used to fix the worldsheet diffeomorphisms and conformal transformations in the original free string theory, the resulting string field theories can be very different. Using light cone gauge, yields light-cone string field theories whereas using BRST quantization, one finds covariant string field theories. There are also hybrid string field theories, known as covariantized light-cone
05:58:03 <CakeProphet> AAAAAAAAAAAAAAAAAAAAAAH
05:58:50 <CakeProphet> string field theories which use elements of both light-cone and BRST gauge-fixed string field theories.
05:59:04 <CakeProphet> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH
05:59:33 <CakeProphet> string string metasuperstring membrane field cone theory
06:00:01 <pikhq> Further testing of FTL neutrinos done. Yup, still FTL.
06:01:22 <quintopia> what
06:01:57 -!- augur has joined.
06:05:06 <CakeProphet> wtf why am I reading about string theory
06:05:13 <CakeProphet> IT BURNS.
06:11:47 <CakeProphet> If two theories are related by a duality transformation, it means that the first theory can be transformed in some way so that it ends up looking just like the second theory. The two theories are then said to be dual to one another under that kind of transformation. Put differently, the two theories are mathematically different descriptions of the same phenomena.
06:11:55 <CakeProphet> help needs more category theory
06:15:02 <CakeProphet> Within the framework of the Standard-Model Extension (SME theory), various theorists have suggested that the neutrino might have a tachyonic nature,[30][31][32][33] while others have disputed the possibility.[34]
06:15:12 <CakeProphet> oh what now [34]!!!!
06:20:45 <CakeProphet> Giacomo Cacciapaglia, a theoretical physicist at King's College London, has suggested that the neutrinos might take "shortcuts" through extra dimensions, bypassing the Cohen-Glashow effect. Jorge Páramos, a theoretical physicist at the Higher Technical Institute in Lisbon, counters that tinkering with the current theory in this way is difficult.
06:21:56 <CakeProphet> ITT: theoretical physicists play with existing theories that have no empirical basis.
06:32:19 <fizzie> That's why they're called theoretical physicists, not regular physicists.
06:34:30 <pikhq> Shame it's not "hypothetical physicists".
06:37:34 <fizzie> Those are the physicists that may or may not exist.
06:46:29 -!- variable has quit (Excess Flood).
06:47:48 -!- variable has joined.
06:51:36 -!- FireFly has quit (Excess Flood).
06:52:14 -!- FireFly has joined.
06:59:48 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:49:47 -!- CakeProphet has quit (Ping timeout: 245 seconds).
07:56:37 -!- CakeProphet has joined.
07:56:37 -!- CakeProphet has quit (Changing host).
07:56:37 -!- CakeProphet has joined.
08:11:59 -!- FireFly has quit (Ping timeout: 240 seconds).
08:14:08 -!- FireFly has joined.
08:33:18 -!- Vorpal has joined.
08:41:04 <Vorpal> hm
08:54:31 -!- monqy has quit (Quit: hello).
08:55:40 -!- copumpkin has quit (Ping timeout: 260 seconds).
08:55:51 -!- GreaseMonkey has quit (Quit: The Other Game).
08:56:05 -!- copumpkin has joined.
08:58:45 -!- ais523 has joined.
09:29:39 <fizzie> Hm?
09:32:16 <ais523> hm at what?
09:36:28 <fizzie> Hm at Vorpal's hm.
09:36:57 <fizzie> (The one a bit less than hour ago.)
09:49:21 <ais523> <billstewart> You're dismissing the efficacy of tin foil hats because you've only tried using aluminum foil - they need real tin to work right.
09:49:25 <ais523> I approve of this theory
10:00:22 <fizzie> There are quite a few papers on foil hats; like http://berkeley.intel-research.net/arahimi/helmet/ from MIT, and a rebuttal for it at http://zapatopi.net/blog/?post=200511112730.afdb_effectiveness
10:39:05 -!- derdon has joined.
11:06:55 <Vorpal> <fizzie> Hm at Vorpal's hm. <-- that was just to check for lambdabot messages
11:13:07 <fizzie> Hm.
11:22:23 -!- ais523 has quit (Ping timeout: 240 seconds).
11:44:20 -!- Phantom_Hoover has joined.
12:31:31 <Gregor> So I'm thinking my best bet with my JIT's target language would be to choose some machine code.
12:31:33 <Gregor> But which ...
12:36:38 <Gregor> Or ... some kind of bytecode?
12:38:19 <Gregor> Dang it, a stack-based language would be perfect but Forth is so done :P
12:39:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:51:51 -!- myndzi has quit (Read error: Connection reset by peer).
12:53:48 -!- myndzi has joined.
13:05:45 -!- ais523 has joined.
13:07:53 <Gregor> ais523: Suggest a language for my JIT to ... well, JIT.
13:08:23 <ais523> Gregor: how simple?
13:08:42 <ais523> I would say Unlambda, but it's a bitch to compile into imperative code
13:09:20 <ais523> meanwhile, what's up with the vandalism on http://esolangs.org/wiki/Excela?
13:09:30 <ais523> [CTCP] Received CTCP-PING reply from ais523: 22 seconds.
13:09:42 <ais523> the ridiculous part: this connection in the University library is actually /better/ than the one in my office
13:10:11 <Gregor> ais523: Current target is BF. I want something more interesting.
13:10:24 <Gregor> Pretty much has to be imperative.
13:10:50 <ais523> kipple?
13:11:39 <ais523> you might have to make the stacks finite, but otherwise there don't seem to be any issues with it other than parsing
13:11:54 <ais523> and I know you know the language
13:14:06 <Gregor> I want something with literals, to make it more of a challenge.
13:17:34 -!- ais523 has quit (Read error: Connection reset by peer).
13:17:40 -!- ais523 has joined.
13:17:44 <ais523> [13:15] <ais523> INTERCAL-72?
13:17:47 <ais523> [13:15] <ais523> probably a bit too large
13:17:58 <Gregor> ... ow X-D
13:18:30 <ais523> -72 would /really/ benefit from JITting
13:18:33 <Gregor> In spite of asking in #esoteric , I was also hoping for something a bit more ... real :P
13:19:23 <ais523> I'm not sure how many simple real languages there are
13:19:30 <ais523> some Lisp variant without closures, perhaps
13:20:31 <ais523> Gregor: what about BASIC?
13:22:30 <Gregor> Hm
13:24:47 -!- ais523 has quit (Ping timeout: 245 seconds).
13:25:30 <fizzie> TI-BASIC, the best BASIC.
13:28:03 -!- ais523_ has joined.
13:28:16 <ais523_> Gregor: serious suggestion: BASIC
13:28:51 <fizzie> Non-serious suggestion: dc.
13:30:00 <ais523_> dc's concatenative, not imperative, right?
13:31:17 <Phantom_Hoover> Yep.
13:32:52 <fizzie> ais523_: Sure, but <Gregor> Dang it, a stack-based language would be perfect but Forth is so done :P
13:33:05 <fizzie> It's the next best thing.
13:53:47 -!- ais523_ has quit (Quit: Page closed).
13:53:59 <Gregor> Uhhh, OK, and which concatenative language is non-imperative? As far as I'm concerned, imperative is a parent group of concatenative ...
13:54:18 <Gregor> The only big problem with dc is bignum :P
13:59:27 <Phantom_Hoover> Concatenative works fine functionally.
14:00:06 <Phantom_Hoover> All commands are of type Stack -> Stack and . is replaced with space.
14:00:12 <Phantom_Hoover> Erm, *all functions
14:00:43 <Gregor> Soooo all the world's a monad.
14:00:57 <Phantom_Hoover> Functional does not mean Haskell.
14:02:19 <Gregor> I'm just saying that that's a very disingenuous way of describing a concatenative language X_X
14:02:25 <Phantom_Hoover> Why?
14:04:09 <Gregor> Are you kidding me? All your functions are stack->stack and you just string them together. That's like saying that C is a functional language where every statement is a function state->state.
14:05:52 <Phantom_Hoover> Yeah, but it fits better for concatenative languages.
14:09:06 <Gregor> None of this helps me choose a language anyway :P
14:09:12 <Gregor> How bad would non-bignum dc be?
14:15:39 <Gregor> I really feel like I want to do Forth ... frankly I'm surprised that the previous Forth entry in IOCCC /didn't/ JIT (slash compile to memory)
14:32:03 <Gregor> Bleh
14:33:52 -!- derrik has joined.
14:34:21 <Phantom_Hoover> Non-bignum dc wouldn't be hard at all, I should think, although I don't know much about JIT.
14:34:46 <Phantom_Hoover> Although its only control structure is an eval statement.
14:36:27 <Gregor> It wouldn't be hard in the least, my question is whether it would suck :)
14:36:53 <Phantom_Hoover> languages
14:36:57 <Phantom_Hoover> Oops
14:36:58 <Phantom_Hoover> http://iasos.com/artists/erial/celestial-soul-portraits/
14:37:03 <Phantom_Hoover> Holy christ this is amazing.
14:38:10 <Gregor> lol
14:42:05 <Gregor> How 'bout integer dc?
14:42:07 <Gregor> Would that be useless?
14:42:19 <Phantom_Hoover> ISTR that it's the default behaviour.
14:42:23 <Phantom_Hoover> !show pi
14:42:24 <EgoBot> sh read p; if [ "x$p" = "x" ]; then p=5; fi; echo "scale=$p; a(1)*4;" | BC_LINE_LENGTH=490 bc -l | tr -d '\\'
14:42:27 <Phantom_Hoover> Wait, that's bc.
14:42:40 <Gregor> `run echo '2 3 / p' | dc
14:42:47 <HackEgo> bash: dc: command not found
14:42:48 <Phantom_Hoover> Yeah, it is; it rounds down, too.
14:42:51 <Gregor> ... wtf
14:42:52 <Phantom_Hoover> O.o
14:42:58 <Gregor> That's something to be fixed.
14:43:33 <Gregor> `run echo '2 3 / p' | dc
14:43:35 <HackEgo> 0
14:43:40 <Gregor> Hmmmmmmmmm
14:43:49 <Gregor> OK, dc isn't such a terrible idea then.
14:44:36 -!- pikhq_ has joined.
14:45:37 -!- pikhq has quit (Ping timeout: 245 seconds).
14:48:54 -!- elliott has joined.
14:54:12 <Gregor> elliott: dc. Terribad?
14:54:46 <elliott> Gregor: Wow, fuck you, dc is my favourite.
14:54:47 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
14:55:00 <Gregor> elliott: Good, then it's my JIT target :P
14:55:21 <elliott> Gregor: You're JITting... to dc?
14:55:27 <elliott> Do you have a C->dc compiler?
14:55:27 <Gregor> Errr
14:55:30 <Gregor> JIT source rather
14:55:37 <elliott> Gregor: I guess that works?
14:55:45 <Gregor> It feels a bit less retarded than BF :P
14:55:46 <elliott> Gregor: It's kind of unsuited though.
14:55:51 <elliott> Functions are first-class by way of being strings.
14:56:02 <Gregor> JIT is a command in my JIT :)
15:07:08 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:08:00 <elliott> 20:07:29: <CakeProphet> pikhq_: oh also
15:08:00 <elliott> 20:07:31: <CakeProphet> if you were sane before
15:08:00 <elliott> 20:07:33: <CakeProphet> http://www.usdebtclock.org/
15:08:00 <elliott> 20:07:36: <CakeProphet> now you're not.
15:08:00 <elliott> Would you two stop circlejerking in the logs.
15:08:39 <elliott> `addquote <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
15:08:41 <HackEgo> 721) <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
15:31:36 <Phantom_Hoover> http://www.beanactuary.com/
15:31:40 <Phantom_Hoover> Bean actuary!
15:31:41 <Phantom_Hoover> Best job.
15:31:48 -!- copumpkin has joined.
16:01:28 -!- derrik has quit (Quit: remains of the day).
16:03:30 <Gregor> Damn ... my new JITting method is sound in principle, but probably isn't going to work with even the slightest optimization >_>
16:03:49 <elliott> What method is that :P
16:04:40 <Gregor> SEKRIT
16:05:54 <elliott> Gregor: Have you pushed it yet :P
16:05:58 <Gregor> Nope.
16:15:17 <Gregor> Basically this: void jit(volatile struct Data *allMyDeliciousData) { record("prologue"); /* do an addition */ record("+"); /* etc */ }
16:15:23 <Gregor> record() records its return address.
16:15:29 <Gregor> Then I use those return addresses to slice up the function.
16:16:14 <elliott> Gregor: Why wouldn't that work?
16:16:21 <elliott> You might need a "volatile" on record().
16:16:25 <Gregor> elliott: Getting rid of the call to record itself.
16:16:32 <elliott> Gregor: Can't be done, if it has side-effects...
16:16:36 <elliott> Gregor: Make it poke a volatile variable.
16:16:57 <Gregor> I made it work, but now my JITted code is full of function calls to empty functions (which may or may not be incurably retarded)
16:17:30 <Gregor> (Using a volatile function pointer argument for record instead of a global function)
16:19:10 <elliott> OS.js (JavaScript Operating System) - The world is moving forward. [X-post from /r/linux] (anderse.wordpress.com)
16:19:10 <elliott> submitted 6 hours ago by Forconin to programming
16:19:10 <elliott> WHY IS THIS ON MY FRONT PAGE
16:19:14 <elliott> I blame Gregor, Lord of Javascripts.
16:19:27 <Gregor> ^^
16:19:30 <elliott> "This project was originally intended for remote administration of servers without the hassle of installing a graphical environment and all the dependencies that comes along."
16:19:39 <Gregor> lolwut
16:19:40 <elliott> $ ssh --javascript-bullshit
16:19:51 <elliott> I guess the browser doesn't count as a graphical environment with a bunch of dependencies :P
16:20:00 <Gregor> "remote administration of servers [by retards]"
16:20:05 <Gregor> They forgot that part.
16:20:39 <Gregor> Hmmm ... so far my new technique works on x86, and works then segfaults everywhere else.
16:20:50 <Gregor> Maybe I can just avoid my broken function epilogue by always calling exit! 8-D
16:21:36 <Gregor> Nowait, that doesn't work once I have other functions X-D
16:21:52 <elliott> "Hell, for consistency you should serve it all up with node.js instead of Apache."
16:21:55 <elliott> THIS IS INSUFFERABLE
16:21:58 <elliott> Gregor: Maintain your own call-stack with CPS?
16:22:05 <elliott> Then you never actually have to return.
16:22:16 <Gregor> Hmmmmm
16:22:27 <elliott> Gregor: That needs TCO to work decently though, which you said breaks things
16:22:29 <elliott> Gregor: Although...
16:22:38 <elliott> record("goto"); goto &&computed_label; record("endgoto");
16:22:42 <elliott> You COULD hack something up with that :P
16:22:45 <Gregor> No, C doing TCO breaks things, me doing TCO doesn't.
16:23:01 <elliott> Gregor: How are you going to do TCO? That's platform-specific.
16:23:26 <Gregor> Same way I record return addresses, but change them >: )
16:23:31 <elliott> "Dude, I think it kicks butt. I just logged in and was blown away by how much better it was than I expected. I CANNOT believe people are downvoting you just because you named it os.js, instead of actually appreciating it for what it is. Fuck 'em, you're awesome."
16:23:36 <elliott> /R/PROGRAMMING IS THE WORST
16:23:38 <elliott> Gregor: Wow :P
16:24:01 <Gregor> Damn it, works-then-segfaults on ARM >_<
16:24:04 <elliott> Gregor: So, y'know, if you're doing TCO... a mini Lisp-alike would make a lot of sense... >:)
16:24:08 <Gregor> Something must be wrong with my epilogue generation.
16:30:52 <Gregor> Aha, fixed.
16:31:46 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Circle-trig6.svg
16:31:51 <Phantom_Hoover> I love this diagram so much.
16:34:25 <elliott> Phantom_Hoover: Insert link to that synchronicity diagram.
16:34:31 <elliott> http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png
16:34:33 <Phantom_Hoover> Oh, OK.
16:34:49 <Phantom_Hoover> I never said that the trig diagram was the *best*, though.
16:35:20 <elliott> "One of Jung's favourite quotes on synchronicity was from Through the Looking-Glass by Lewis Carroll, in which the White Queen says to Alice: "It's a poor sort of memory that only works backwards".[10][11]"
16:37:08 <Phantom_Hoover> OK so I need to synthesise thioacetone with acetone, hydrochloric acid and stink bombs.
16:49:06 <Gregor> elliott: My new method, although still having the problem of pointless calls, works on friggin' everything X-D
16:49:24 <elliott> Gregor: I thought your previous method did too.
16:49:28 <elliott> Or do you mean flags don't disturb it?
16:50:21 <Gregor> elliott: I mean it just works, no need for flags in most places.
16:50:27 <Gregor> Also it works on IBM z/Series which the last one didn't :P
16:50:49 <elliott> Gregor: Does it work with... -O3 on VAX? :P
16:52:08 <Gregor> elliott: I can't even get VAX to compile shit with -O3 :P
16:52:11 <Gregor> GCC segfaults when I try.
16:53:12 <elliott> Gregor: Re empty calls: It's because the calls to the volatile function pointer are still there, right?
16:53:21 <Gregor> elliott: Yeah.
16:53:24 <elliott> Gregor: I have an idea.
16:53:35 <Gregor> I can't remove them because they're of differing lengths depending on how it optimized loading the arguments :(
16:53:56 <elliott> Gregor: Take /two/ volatile function pointers; the first one is used like you use your existing one, and the second one is used BEFORE and AFTER each call. You use the calls to the latter to find out how large calls to the former are, and remove them.
16:54:11 <elliott> (And then twiddle with things so that the calls to the second are as large as the calls to the first and remove them too)
16:54:37 <Gregor> That was my first idea, but the "twiddle with things" id--OH BUT IT WOULD WORK HERE because it would be a void(void) function!
16:54:43 <Gregor> Brilliant sir.
16:54:44 <Gregor> Brilliant.
16:54:56 <elliott> Oh, so it would!
16:54:58 <elliott> I didn't realise that myself :P
16:55:01 <elliott> Wooo
16:55:27 <Gregor> In fact, I can even simplify that a wee bit.
16:55:32 <Gregor> But the idea is very sound either way.
16:55:34 <elliott> Gregor: You might need to take a third, nop void(void) funptr, just to find out how large calls to that are...
16:55:35 <elliott> Oh wait
16:55:37 <elliott> You can use the second
16:55:42 <elliott> By special-casing the first three calls
16:55:49 <elliott> (As "start", "call to void(void)", "end")
16:56:02 <Gregor> ARRRRRGH damn it sh4.
16:56:17 <Gregor> Works with -O0, doesn't work with -O1, works with every flag that goes into -O1 >_<
16:56:25 <elliott> X-D
16:56:26 -!- Behold has joined.
16:56:27 <elliott> How is that even possible
16:56:35 <Gregor> I don't know
16:56:53 <elliott> Gregor: Maybe some code checks optimisation level directly... like, not direct compilation stuff
16:56:55 <elliott> Linker optimisations?
16:57:03 <elliott> Maybe -O1 is doing linker optimisations and the flags aren't
16:57:04 <Gregor> ... ARGH I'M AN IDIOT >_<
16:57:10 <Gregor> My O0 list was my O3 list :P
16:57:53 <Gregor> I thought that seemed like a lot of optimizations for O1 >_>
16:58:08 <elliott> Gregor: btw, I'd replace the long list-o'-platforms-and-flags in the hints with a link, that way the judges are less likely to elide it :P
16:58:17 <elliott> Also, it works with -O0 and -O3 but not -O1?
16:58:26 * elliott wonders wtf -O1 is doing.
16:58:43 <Gregor> No, it doesn't work with -O3, but it works with all those flags that are in -O3 but not -O1.
16:59:07 <Gregor> I'm actually just shortening the list a ton, it will only have special entries for those needing special flags, which will be few. It may still be worthwhile to link it ...
16:59:41 <Gregor> Oh come on.
16:59:44 <Gregor> This time I know I got the right list.
17:00:20 <Gregor> Maybe it's just not very good at outputting the list for -O0 >_>
17:02:13 <Gregor> WTF WTF WTF
17:02:16 <Gregor> What is -O1 doing???
17:02:47 <Gregor> I used the man page's instructions for discovering what -O<foo> does >_<
17:03:38 -!- MSleep has changed nick to MDude.
17:04:14 -!- Zuu has joined.
17:05:50 <Gregor> Yup, every friggin' flag.
17:06:14 <elliott> Gregor: Why not find out exactly what is broken about the -O1 asm :P
17:06:29 <Gregor> elliott: Because I don't speak SH4 :P
17:06:43 <elliott> Gregor: How hard can it be :P
17:07:23 <Gregor> Hard enough? >_>
17:07:39 <elliott> Gregor: Wiiiiiiimp
17:07:48 <Gregor> :'(
17:08:06 <Gregor> Hm, on SPARC it seems to segfault before even getting to the JITting part ...
17:08:55 <elliott> Gregor: It works on everything, huh :P
17:09:11 <Gregor> I'm going in alphabetical order here X-P
17:10:36 <elliott> Gregor: "Works on architectures that don't start with 'S'"
17:10:42 <Gregor> It works on SH4!
17:10:44 <Gregor> Just not with -O1
17:10:56 <elliott> Gregor: It's SH-4, btw :P
17:11:20 <Gregor> Also it works on SPARC if I put a printf in my record function X-D
17:11:48 <Gregor> OHHH fussing with the stack.
17:11:50 <Gregor> Always fun.
17:12:10 <elliott> Gregor: Just call a dummy function in record? :P
17:12:28 <Gregor> That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin')
17:12:40 <Gregor> Presumably something is stackweird if it's a leaf *shrugs*
17:12:56 <quintopia> you discussing IOCCC entry?
17:13:23 <Gregor> Or, y'know, it only works if it's printf.
17:13:25 <Gregor> quintopia: Yeah.
17:13:25 <elliott> <Gregor> That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin')
17:13:37 <elliott> Gregor: volatile __attribute__((noinline)) :P
17:13:45 <Gregor> elliott: No GCC-specifics.
17:14:58 <Gregor> The bigger problem though is that it only works if it's printf X-D
17:15:42 <elliott> Gregor: Not even puts?
17:15:50 <elliott> Gregor: Maybe it's about what you pass to printf.
17:15:56 <elliott> Gregor: Maybe you're forcing something from a register to the stack.
17:16:01 <Gregor> elliott: OK, puts works.
17:16:11 <elliott> Gregor: fputs("",stdout)
17:16:16 <elliott> 100% side-effect free
17:16:31 <Gregor> elliott: No go.
17:16:39 <elliott> Gregor: Maybe it needs to make a syscall
17:16:41 <elliott> putchar('.')?
17:17:04 <elliott> Except wait, stdio is buffered ???
17:17:11 <elliott> I bet putchar('.') fails
17:17:15 <elliott> Because no syscalls because buffering
17:19:07 -!- Behold has quit (Quit: Leaving).
17:21:08 <Gregor> ?!?!?
17:21:08 <lambdabot> Unknown command, try @list
17:21:13 <Gregor> putchar made it go CRAAAAAAAZY
17:21:35 <Gregor> I wonder if the return address on SPARC is strictly the return address ...
17:22:05 <Gregor> (As opposed to "return to here+4" or something)
17:23:13 <Phantom_Hoover> Dammit ais where are you when I'm being paranoid.
17:27:46 -!- monqy has joined.
17:29:07 <olsner> Gregor: since instructions are word-sized on sparc there would be no problem with preincrementing the instruction pointer
17:29:41 <Gregor> olsner: But that would be SPARC-specific.
17:30:11 <olsner> and maybe it has delay slots (but I think that was MIPS rather than SPARC)
17:30:27 <Gregor> Both.
17:30:30 <Gregor> But delay slots are fine.
17:32:21 -!- Ngevd has joined.
17:32:22 <Ngevd> Quick
17:32:28 <Ngevd> How does "Iason" decline?
17:34:42 <Gregor> Slowly.
17:36:53 <quintopia> depends what declension it is of course
17:48:47 <Ngevd> Third, I think
17:48:59 <Ngevd> Masculine
17:49:06 <Ngevd> Singular only
17:58:17 <elliott> Google competing with PNG... I guess they don't aim low these days :P
17:58:38 <Ngevd> PNG the image format!?
17:58:41 <elliott> Yes.
17:58:53 <elliott> 28% smaller than recompressed PNGs, supposedly.
17:59:35 <elliott> Ooh, you can encode all channels except the alpha lossily, and just have lossless alpha... that's a neat trick.
18:00:45 <Ngevd> Link?
18:01:21 <elliott> http://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html
18:02:19 <elliott> Also http://code.google.com/speed/webp/gallery2.html.
18:05:17 * CakeProphet circlejerks furious
18:05:30 <CakeProphet> uhhhhhhhhhhh
18:07:27 -!- nys has joined.
18:13:11 <Gregor> elliott: I assume that the 28% figure was with strictly-lossless?
18:14:40 <elliott> Gregor: Yeah.
18:15:12 -!- Ngevd has quit (Ping timeout: 245 seconds).
18:15:21 <Gregor> Hm. I wonder how well you'd do if you just took libpng and swapped out zlib for LZMA. (Ignoring speed)
18:17:02 <elliott> Gregor: Probably vastly better :P
18:17:20 <elliott> Gregor: But not only speed would be the problem, imagine how much RAM your browser would hog up...
18:17:33 <Gregor> Heh
18:17:34 <elliott> Especially phones would be fucked.
18:17:58 <Gregor> Now for ultimate portability, we'll reimplement LZMAPNG in JavaScript.
18:18:02 <Gregor> And do the image decoding in-VM.
18:18:23 <elliott> "Small code size and relatively low memory overhead, particularly with smaller dictionary lengths, and free source code make the LZMA decompression algorithm well-suited to embedded applications."
18:18:28 <elliott> Uhh, are Wikipedia on crack?
18:18:36 <elliott> I'm pretty sure LZMA decoding sucks compared to gzip decoding :P
18:18:47 <elliott> Gregor: That'll be SO FAST
18:18:54 <elliott> Gregor: Decompess to a data: URI.
18:19:12 <Gregor> Which is itself a PNG :)
18:19:57 <elliott> Gregor: Nahh, BMP, so you can load incrementally by just appending strings
18:20:21 <Gregor> X-D
18:21:46 <Gregor> elliott: NOOOOOOOOOOOOOO my new system doesn't work on VAX either :'(
18:21:49 <Gregor> My new system SUCKS
18:22:06 <elliott> lol, tanenbaum won't admit linux has won
18:22:20 <elliott> Gregor: Why not...
18:22:20 <Gregor> ?
18:22:26 <Gregor> elliott: Donno yet, debuggling.
18:22:32 <elliott> Gregor: "?"?
18:22:52 <Gregor> <elliott> lol, tanenbaum won't admit linux has won
18:23:16 <elliott> Gregor:
18:23:21 <elliott> LinuxFr.org : If you could return in the past to change the MINIX original proprietary licence to the GPL licence, do you think your system might have become the dominant free OS today?
18:23:21 <elliott> Andrew Tanenbaum : Never. The reason MINIX 3 didn't dominate the world has to do with one mistake I made about 1992. At that time I thought BSD was going to take over the world. It was a mature and stable system. I didn't see any point in competing with it, so I focused MINIX on education. Four of the BSD guys had just formed a company to sell BSD commercially. They even had a nice phone number: 1-800-ITS-UNIX. That phone number did them and me in
18:23:21 <elliott> . AT&T sued them over the phone number and the lawsuit took 3 years to settle. That was precisely the period Linux was launched and BSD was frozen due to the lawsuit. By the time it was settled, Linux had taken off. My mistake was not to realize the lawsuit would take so long and cripple BSD. If AT&T had not brought suit (or better yet, bought BSDI), Linux would never have become popular at all and BSD would dominate the world.
18:23:25 <elliott> Now as we are starting to go commercial, we are realizing the value of the BSD license. Many companies refuse to make major investments in modifying Linux to suit their needs if they have to give the code to their competitors. We think that the BSD license alone will be a great help to us, as well as the small size, reliability, and modularity.
18:23:30 <elliott> LinuxFr.org : Yet we see the contributions of numerous companies during each development cycles of the Linux kernel (Intel, IBM, Novell, Google, Oracle, Broadcom, Samsung, TI, Freescale, Fujitsu, etc).
18:23:33 <elliott> Andrew Tanenbaum : Clearly some companies are willing to do this but I also know of quite a few companies that refuse to use Linux for this reason. It depends on the company and whether it feels its contribution would help its competitors. Also it is easy to overestimate what companies have contributed. Usually it is things that benefit them directly, like making sure their drivers and programs work on Linux.
18:23:38 <elliott> [...]
18:23:40 <elliott> LinuxFr.org : Do you think the Linux success is a proof he was right or is it unrelated?
18:23:42 <elliott> Andrew Tanenbaum : No, Linux "succeeded" because BSD was frozen out of the market by AT&T at a crucial time. That's just dumb luck. Also, success is relative. I run a political website that ordinary people read. On that site statistics show that about 5% is Linux, 30% is Macintosh (which is BSD inside) and the rest is Windows. These are ordinary people, not computer geeks. I don't think of 5% as that big a success story.
18:23:46 <elliott> LinuxFr.org : So you don't think the so-called "fairness" of the GPL ("your improvements need to be available the same way the original is available"), the bazaar model and a great project leader triggered the contributions to the Linux kernel? For you it's only dumb luck?
18:23:51 <elliott> Andrew Tanenbaum : Yes, I think Linux succeeded against BSD, which was a stable mature system at the time simply because BSDI got stuck in a lawsuit and was effectively stopped for several years.
18:23:54 <elliott> It's amazing :P
18:25:47 <Gregor> It's not an entirely unreasonable argument, really, although his success comparison with Mac being "BSD inside" is a bit silly.
18:26:15 <elliott> Gregor: I was giving him the benefit of the doubt until "lol only 5% of the visitors to my website use linux qed"
18:26:18 <elliott> "nerds"
18:26:35 <elliott> Gregor: But wait, MINIX is definitely winning, people just aren't telling anyone else about it:
18:26:37 <elliott> LinuxFr.org : Since 2005, MINIX 3 has been designed to be an OS for resource-limited and embedded computers and no more as a teaching tool only. Is MINIX being taken up in industry at present?
18:26:37 <elliott> Andrew Tanenbaum : In truth, one of the problems with the BSD license is that I don't know. Companies using it don't have to tell us anything. My experience is that a lot of companies don't like to talk about what technology they are using. But we are starting to make a real effort in embedded systems now.
18:26:51 <Gregor> lol
18:27:37 <Gregor> NEWSFLASH: Companies everywhere use MINIX! When asked why, unanimously they were quoted as saying "Because FUCK TORVALDS and FUCK STALLMAN, THAT'S WHY!"
18:28:05 <elliott> Gregor: No, it's 'cuz their lawyers don't let them use ANY GPL'D SOFTWARE WHATSOEVER
18:28:08 <elliott> EVEN IF THEY DON'T WANT TO MODIFY IT
18:28:28 <elliott> Gregor: Their legal team was quoted as saying "AAARGH GET THE COOTIES OFF OUR SERVERS"
18:28:38 <Gregor> X-D
18:28:45 <Gregor> Sounds like something Microsfot would say.
18:32:30 <Gregor> I wonder how much GPL software is in a standard MINIX system.
18:32:37 <Gregor> (MINIX 3)
18:32:40 <Gregor> My bet: More than none.
18:36:06 <Gregor> elliott: Is the return address on VAX ... two bytes beyond where you return to ...
18:36:51 <elliott> Gregor: After you call record(), examine the (now garbage) piece of stack that its return value was on and compare to the IP?
18:36:55 <elliott> Might be tricky to do portably :P
18:37:08 <Gregor> I can't compare to the IP.
18:37:09 <Gregor> This is C.
18:37:38 <Gregor> I think I'm gonna have to switch back to my old solution :(
18:37:41 <elliott> Gregor: Call record() at the very top of the function
18:37:53 <Gregor> elliott: Hello, prologue?
18:38:00 <Gregor> elliott: I do that to find the prologue anyway.
18:38:01 <elliott> Gregor: Yes, so find out how large the prologue is
18:38:05 <elliott> And subtract that from the return value
18:38:06 -!- Ngevd has joined.
18:38:08 <elliott> return blah
18:38:10 <elliott> You know what I mean
18:38:16 <Ngevd> HELLO!
18:38:32 -!- ais523 has joined.
18:38:35 <elliott> Gregor: Of course that means you have to detect the prologue in some other way, but... here's an idea
18:38:42 <Gregor> Oh thank god.
18:38:44 <elliott> Gregor: Just scan the function code for the address of record.
18:38:45 <Gregor> The return address is right.
18:38:49 <Gregor> So the bug is elsewhere.
18:38:50 <elliott> Then you just need to know how long "CALL" is.
18:38:51 <Ngevd> Gregor, how goes IOCCC?
18:38:59 <Gregor> Ngevd: My new version is either better or worse.
18:39:22 <Ngevd> Like that comic my dad reads from time to time!
18:39:34 <elliott> Gregor: What WAS your old version?
18:39:39 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:39:51 <Gregor> elliott: The version you've seen...
18:40:05 <elliott> Gregor: I have no idea how it actually JITted :P
18:40:09 <Gregor> Oh X-D
18:40:33 <Gregor> It had a separate function per each template, detected the absolute minimum prologue/epilogue, then copied out the appropriate parts from each function.
18:40:40 <Gregor> It was very sensitive to varying pro/epilogues.
18:42:36 -!- Phantom_Hoover has joined.
18:44:05 <CakeProphet> friendship aneurysm.
18:47:41 <CakeProphet> remind me not to read tvtropes stuff about homestuck anymore.
18:47:44 <CakeProphet> it's a genuine waste of time.
18:54:25 <CakeProphet> Gregor: dude so what if you like JIT from the future.
18:54:36 <CakeProphet> you just have to compile the program sometime in the future.
18:55:26 <CakeProphet> actually no you'd want to JIT in the future
18:55:31 <CakeProphet> so your future-JIT can take as much time as it wants
18:55:43 <CakeProphet> and the present-JIT will just grab code from the future.
18:55:52 <CakeProphet> this is all totally feasible in Feather, I imagine.
18:56:40 <Gregor> elliott: Hm, VAX is definitely doing something skwonky with return addresses ...
18:57:02 <elliott> Gregor: Just google, man, VAX's insanities will be well-documented.
18:57:10 <Gregor> I'm tryin'!
19:01:43 <Gregor> 111111:42455
19:01:43 <Gregor> 111112:111112
19:01:43 <Gregor> 111113:1
19:01:43 <Gregor> 111121:8
19:01:43 <Gregor> 111122:1
19:01:43 <Gregor> 111123:1
19:02:00 <Gregor> Literals and the calculated size for the code to generate that literal.
19:02:02 <CakeProphet> mmmm numbers
19:02:36 <elliott> Gregor: ...111112 bytes to generate 111112?
19:02:46 <Gregor> elliott: Shocking, innit!
19:03:00 <elliott> Gregor: But... isn't that just a mov...
19:03:19 <Gregor> elliott: It's certainly not 111112 bytes worth of bullshit X-D
19:04:05 <CakeProphet> ARE YOU SURE???
19:04:29 <Gregor> Quite :P
19:04:42 <Gregor> OMG ...
19:04:46 <Gregor> I think I figured out what's going on X-D
19:05:00 <Gregor> All my literals are in the same range as valid addresses X-D
19:05:16 <Gregor> So the heuristic for determining whether it's an address or not goes all shitty.
19:06:11 <CakeProphet> ..gross
19:07:18 <CakeProphet> I'm still really confused why 111112 requires 111112 bytes to generate...
19:07:52 <CakeProphet> while other increments of previous numbers take 1 or whatever.
19:07:57 <Gregor> It doesn't, it was the heuristic that was wrong.
19:08:10 <CakeProphet> oh good. :)
19:08:38 <Gregor> VAX can only generate the value 111112 by incrementing 0 111112 times, not by generating 111111 and incrementing it.
19:08:52 * CakeProphet mind blows.
19:09:21 <Gregor> 111111:80
19:09:22 <Gregor> 111112:0
19:09:22 <Gregor> 111113:0
19:09:22 <Gregor> 111121:0
19:09:22 <Gregor> 111122:0
19:09:24 <Gregor> Gettin' better :P
19:09:55 <CakeProphet> Gregor: well, unless generating a number n requires that you generate n-1 and then increment, and generating 0 is the base case.
19:10:00 <CakeProphet> then those two statements are equivalent. :>
19:11:11 <CakeProphet> but anyway that sounds really dumb.
19:11:26 <CakeProphet> maybe you shouldn't use VAX
19:11:46 <Gregor> I'm improving my heuristic :P
19:11:50 <elliott> The problem with arguing with idiots on reddit for fun is that you have to deal with idiots on reddit.
19:11:53 <Gregor> Ya never know, this may be what was broken on SPARC too.
19:12:18 <CakeProphet> elliott: I thought you would have figured that out earlier. :P
19:12:44 <Gregor> 111111:80
19:12:44 <Gregor> 111112:1
19:12:45 <Gregor> 111113:3
19:12:45 <Gregor> 111121:60
19:12:47 <Gregor> YOU VAXY PIECE OF GARBAGE
19:12:58 <Gregor> Why are there so many ambiguous constants in my stack :'(
19:13:16 <CakeProphet> not enough popping
19:13:22 <CakeProphet> if you pop things then there won't be anything at all
19:13:25 * CakeProphet is awesome logic
19:14:17 <elliott> "APA stands for Associative Processing Array, a kind of content-addressable memory. Just memory. How do you compute using just memory? The operations are done right there, near the cells where your bits are kept. No need to read your data word by word into a processor, than write it back - rather, your operations run in parallel, inside the memory, on every data word! SIMD operations on steroids."
19:14:33 <elliott> Gregor: Why not pad out the constants?
19:14:38 <elliott> Push all-0s, push value, push all-0s
19:14:40 <elliott> Or something
19:14:55 <Gregor> This - is - C
19:15:11 <Gregor> 111111:80
19:15:11 <Gregor> 111112:68852
19:15:11 <Gregor> 111113:80
19:15:11 <Gregor> 111121:80
19:15:13 <Gregor> 111122:80
19:15:15 <Gregor> // Gettin' closer X-D
19:15:33 <CakeProphet> elliott: the operations are GONE RIGHT THERE?
19:15:35 <CakeProphet> fascinating.
19:15:40 <CakeProphet> s/GONE/DONE/
19:15:49 <elliott> Gregor: So?
19:15:55 <elliott> Gregor: f(0, value, 0)
19:16:01 <elliott> Assuming a contiguous stack...
19:16:22 <CakeProphet> contiguous. stack? ha ha ha ha
19:16:31 <Gregor> elliott: Remember that anything I do at detection time, I do at runtime.
19:16:36 <elliott> I like how CakeProphet just says stupid things all day.
19:16:45 -!- Darth_Cliche has joined.
19:16:46 <elliott> Gregor: You can erase arbitrary code sections with your void(void) funptr...
19:17:04 <Gregor> elliott: I haven't tested that yet :P
19:17:17 <elliott> Gregor: There we go then! No complaint :)
19:17:43 <CakeProphet> elliott: how are the operations done right there?
19:17:46 <CakeProphet> "WE"""W""W"E"E"E
19:17:47 <CakeProphet> R""W
19:18:00 <CakeProphet> :)
19:18:38 <CakeProphet> also
19:18:53 <Gregor> wtf, can I seriously have the return address at a different point on the stack depending on what literal I'm pushing X-D
19:19:05 <CakeProphet> how would you go about extending Haskell so that :: could be defined within Haskell as a normal operator?
19:20:19 <elliott> You mean (x::T) evaluating to x but with type T?
19:20:24 <elliott> You can't use operators as declarations, that's nonsense.
19:20:24 <CakeProphet> yes
19:20:36 <CakeProphet> not in vanilla Haskell, no.
19:20:38 <elliott> CakeProphet: Well that's easy-ish...
19:20:50 <CakeProphet> the question was to create a hypothetical extension in which you could do things like that.
19:21:07 <elliott> CakeProphet: Uh, so do you want the first thing I said, or do you want the second thing I said?
19:21:10 <elliott> You are contradicting yourself.
19:21:27 -!- copumpkin has changed nick to damocles.
19:21:30 <CakeProphet> no I'm not...
19:21:37 <elliott> Yep, you are.
19:21:39 <elliott> <elliott> You mean (x::T) evaluating to x but with type T?
19:21:41 <elliott> <CakeProphet> yes
19:21:42 <elliott> <elliott> You can't use operators as declarations, that's nonsense.
19:21:45 <elliott> <CakeProphet> the question was to create a hypothetical extension in which you could do things like that.
19:21:57 <elliott> You either want the first thing I said, or the second; first answer implies first, second answer implies second.
19:22:13 <Gregor> elliott: lol, I can push any literal but 1.
19:22:21 <elliott> Gregor: Just push 2 and subtract 1 :)
19:22:39 <Gregor> How can I subtract 1 with no 1! ;)
19:23:03 <CakeProphet> elliott: um?
19:23:09 <elliott> Gregor: Push 3 and subtract 2
19:23:29 <Gregor> elliott: I'd rather figure out wtf is going on thank you very much.
19:23:36 <elliott> Gregor: No this is the best.
19:23:43 <Gregor> :P
19:24:13 -!- damocles has changed nick to copumpkin.
19:24:46 <Ngevd> Push 2, dup, div
19:25:04 <CakeProphet> elliott: I suppose :: doesn't really worklike an operator, so, yeah..
19:25:20 <elliott> CakeProphet: There are two infix uses of ::.
19:25:27 <elliott> You have not specified which you want to make non-primitive.
19:25:41 <CakeProphet> elliott: oh, see...
19:25:46 <CakeProphet> the way you worded those "two things"
19:25:56 <CakeProphet> made it not actually sound like you were specifying the two things.
19:26:18 <CakeProphet> one was just a question, the other was you saying it was nonsensical.
19:26:34 <CakeProphet> >_> anyway
19:26:59 <CakeProphet> the one that's used within expressions, I suppose.
19:27:18 <CakeProphet> since that would be the easier one.
19:28:14 <Ngevd> Wouldn't that need a type type?
19:28:26 <elliott> CakeProphet: Dependent types make that pretty trivial.
19:28:30 <elliott> CakeProphet: Although (A :: x) is easier.
19:28:46 <elliott> That's (::) :: (a :: Type) -> a -> a
19:28:50 <elliott> (::) _ x = x
19:29:10 <elliott> You can flip (::) but that messes with the quantification, but I suppose it could work.
19:29:26 <elliott> (::) :: forall a. a -> (b::Type) -> (a ~ b) => a
19:29:27 <elliott> :p
19:40:17 -!- zzo38 has joined.
19:40:47 <Gregor> Aha
19:40:54 <Gregor> Something is clearing my variable.
19:40:57 <Ngevd> Trivia: greater is the only bi-directional Piet command
19:42:08 <CakeProphet> elliott: I wonder what else you could do with a type type.
19:42:18 <elliott> CakeProphet: Nothing much, without dependent typing.
19:45:06 <Gregor> looooooooooooooool buffer overflow.
19:45:10 <Gregor> I am the greatest C programmer.
19:45:43 <Ngevd> Gregor, is your program still less than or equal to 140 characters?
19:45:57 <Gregor> Ngevd: This is an unrelated program ;P
19:46:07 <Gregor> Ngevd: My tweetable interpreter will probably be another submission.
19:46:12 <Ngevd> I CARETH NOT
19:47:56 <CakeProphet> tweetable code. what an effective marketing strategy.
19:48:08 <CakeProphet> we need a tweetable OS!
19:48:33 <Gregor> Well wouldja look at that, I have a working dc on VAX :P
19:48:40 <CakeProphet> lies
19:50:13 <Ngevd> Youtube supports Feather!
19:50:49 <CakeProphet> woot?
19:51:25 <CakeProphet> http://channel9.msdn.com/Forums/Coffeehouse/Prototyping-New-Language-With-Haskell
19:51:29 <CakeProphet> someone has taken the name Feather
19:53:34 <Ngevd> It will fade into obscurity like Mondrian and the first Numberwang
19:53:57 <CakeProphet> NUMBERWANG
20:09:46 <Phantom_Hoover> Hey, Ngevd.
20:09:50 <Phantom_Hoover> I present to you http://www.matthen.com/numberwang/
20:10:26 -!- Slereah has joined.
20:10:36 -!- Slereah_ has quit (Ping timeout: 260 seconds).
20:10:55 -!- sebbu2 has joined.
20:11:01 -!- oerjan has joined.
20:12:41 <oerjan> hm
20:12:43 <Ngevd> Phantom_Hoover, oh god
20:12:56 <oerjan> Vorpal: YOUR METHOD AIN'T WORKING
20:13:52 <elliott> ?
20:14:01 <oerjan> `? ?
20:14:03 <HackEgo> ​? is wisdom
20:14:06 -!- sebbu has quit (Ping timeout: 260 seconds).
20:14:18 <olsner> hrrg, most people on that page seem to be playing WordWang, but somehow they manage to hit NumberWang anyway
20:14:46 <oerjan> supercalifragilisticexpialidocious
20:17:52 <Ngevd> Would it be possible to make a game in XML+SVG+XML Events+XSLT?
20:21:44 -!- tiffany has joined.
20:23:19 -!- tiffany has left.
20:26:23 <oerjan> <Phantom_Hoover> Dammit ais where are you when I'm being paranoid. <-- obviously reporting you to THEM
20:34:37 <oerjan> <elliott> Assuming a contiguous stack... <-- of spherical cows?
20:35:07 <Phantom_Hoover> Ngevd, YOUR MOVEWANG
20:37:06 <oerjan> <CakeProphet> elliott: I suppose :: doesn't really worklike an operator, so, yeah.. <-- i've been thinking before that (:: T) should be a legal section, it would be useful
20:37:28 <elliott> oerjan: I agree, but (x ::) would be much more fun.
20:37:36 <oerjan> scary
20:38:36 <elliott> oerjan: quick, name (a -> b) -> Tagged a b
20:38:39 <oerjan> but then in some sense that's how System F/Core implements polymorphic values
20:38:46 <elliott> (so you can e.g. do "foo bitSize :: Tagged Word32 Int"...)
20:38:53 <elliott> and yeah
20:39:15 <Ngevd> Phantom_Hoover, your move
20:39:36 <elliott> Ngevd: -wang
20:39:50 <oerjan> elliott: um there's no way to implement that, since you don't actually _have_ a b.
20:40:09 <elliott> oerjan: It's for converting things that use (a -> b) as (Tagged a b), silly :P
20:40:18 <oerjan> oh right
20:40:22 <elliott> Implementation is \f -> Tagged . f $ error "YOU LIED TO ME"
20:40:45 <oerjan> elliott: phantomize
20:41:02 <Phantom_Hoover> Ngevd, the game continueswang.
20:41:03 <elliott> oerjan: hoover :: (a -> b) -> Tagged a b
20:41:15 <oerjan> O KAY
20:41:34 <Ngevd> Your turn
20:42:01 <Ngevd> wang
20:42:31 <elliott> ais523: oh, hi
20:42:38 <oerjan> elliott: or tagomize (far side reference)
20:42:38 <ais523> hi btw
20:42:46 <elliott> ais523: "btw"?
20:42:47 <Phantom_Hoover> Ngevd, argh, you continuewang to outfox me.
20:43:02 <ais523> elliott: it was in response to your "oh, hi"
20:43:10 <elliott> I was going to ask ais523 whether he was termcasting or not but then I realised he wasn't \unfoogy.
20:43:11 <ais523> I was trying to find an even more noncommital way to say it
20:43:29 <ais523> and I'm not playing right now; in fact, I'm at work, but that's just because I haven't gone home yet
20:43:35 <Phantom_Hoover> Hey, ais523, can motherboards dissolve in slightly humid air?
20:43:41 <ais523> I was with friends earlier, and it was much nearer home than work
20:43:52 <ais523> Phantom_Hoover: err, they're not water-soluble, as far as I know
20:43:53 <Phantom_Hoover> (fffff, case doesn't arrive until Monday.)
20:44:03 <Phantom_Hoover> ais523, good, good.
20:44:23 <ais523> copper tracks can be damaged by humidity, but any sane motherboard manufacturer knows that and will lacquer them to prevent them being damaged like that
20:44:42 <ais523> (an easy way to tell if copper's been lacquered or not: if it hasn't been, it tend to be copper-coloured rather than green)
20:45:20 <ais523> (transparent lacquer exists but isn't used commercially because it's more expensive than the green sort; it's pretty good for applying by hand, though)
20:46:11 <Phantom_Hoover> OK basically what I'm saying is will leaving the motherboard, CPU and RAM in an antistatic bag with the opening folded over for 6 days in a room which is occasionally used for washing up result in it exploding?
20:46:14 <oerjan> just use a chlorine atmosphere, dugh
20:46:16 <oerjan> *-g
20:47:05 <Phantom_Hoover> Ngevd, do you concedewang?
20:47:08 <elliott> eww, why would you implement an API like that
20:47:24 <Ngevd> Phantom_Hoover, nah, had to empty the dishwasher
20:47:43 <Ngevd> Phantom_Hoover, your turn
20:47:44 <oerjan> application painful interface
20:48:24 <ais523> Phantom_Hoover: it should be fine
20:48:38 <ais523> you'll want to make sure they're dry before actually switching the thing on
20:48:50 <ais523> but the motherboard is exposed to humidity inside the case just as much as it is outside it
20:48:54 <ais523> as it relies on air for cooling
20:49:15 <Phantom_Hoover> I am seriously beginning to doubt Colloson's impartiality.
20:50:42 <Phantom_Hoover> Ngevd, playwang.
20:52:12 <ais523> elliott: which API is that?
20:52:18 <Ngevd> And you, Phantom_Hooverwang
20:52:25 <elliott> ais523: this opencl binding
20:52:39 <Phantom_Hoover> This is getting ridiculouswang.
20:53:11 <Ngevd> Yourwang turn
20:53:52 <ais523> elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them
20:54:04 <Phantom_Hoover> And yours.
20:54:06 <Phantom_Hoover> Wang.
20:54:22 <olsner> welcome to #esowang
20:54:30 <Ngevd> And yourswang
20:54:42 <CakeProphet> I don't really think (x ::) could be used in normal Haskell.
20:54:47 <CakeProphet> er, usefully
20:54:49 <Phantom_Hoover> -_-wang
20:55:21 <Ngevd> I'm goodwang at this
20:55:33 <CakeProphet> for example, map (x ::) [SomeTypes, GoHere]
20:55:36 <ais523> :t (x ::)
20:55:37 <lambdabot> parse error on input `)'
20:55:39 <CakeProphet> would not type.
20:55:51 <ais523> hmm, is the discussion about the fact that that doesn't parse?
20:55:51 <zzo38> CakeProphet: That seem non-meaningful
20:55:52 <CakeProphet> Ngevd: mewang toowang
20:55:56 <CakeProphet> ais523: no
20:56:07 <CakeProphet> it's a continuation of a discussion about :: as an operator
20:56:07 <ais523> oh right, I confused Haskell with OCaml
20:56:13 <ais523> where :: is a perfectly reasonable operator
20:56:37 <Ngevd> I am scarewangly good at this
20:56:46 <zzo38> Not only would (x ::) not be a meaningful function, but you cannot map in that way anyways since the types don't match
20:56:57 <CakeProphet> zzo38: this is what I was saying.
20:57:06 <CakeProphet> but it could be a meaningful function in a dependently typed language.
20:57:34 <elliott> <ais523> elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them
20:57:44 <elliott> ais523: you can check the logs yourself...
20:57:48 <ais523> well, OK
20:57:50 <zzo38> Then, maybe you could add a dependent type extension to Haskell and then add (x ::) to that extension
20:57:53 <ais523> but that would mean actually looking at all the wanging
20:57:54 <CakeProphet> ais523: zzo38: scroll up just a bit to get the context.
20:58:15 <oerjan> :t (:: Int)
20:58:16 <lambdabot> parse error on input `::'
20:58:22 <oerjan> ;_;
20:58:28 <CakeProphet> (:: T) seems more useful in normal Haskell usage.
20:58:43 <ais523> :t (\x :: Int -> x)
20:58:44 <lambdabot> Illegal result type signature `Int'
20:58:44 <lambdabot> Result signatures are no longer supported in pattern matches
20:58:44 <lambdabot> In a lambda abstraction: \ x :: Int -> x
20:58:51 <ais523> :t (\x -> x :: Int)
20:58:52 <lambdabot> Int -> Int
20:58:54 <ais523> there we go
20:59:03 <Ngevd> Phantom_Hoover, it's your turn
20:59:06 <Deewiant> ?ty (`asTypeOf` (undefined :: Int))
20:59:07 <lambdabot> Int -> Int
20:59:23 <ais523> @src asTypeOf
20:59:23 <lambdabot> asTypeOf = const
20:59:34 <Phantom_Hoover> This is so stupid.
20:59:42 <Phantom_Hoover> How does it even decide numbers?
20:59:43 <ais523> oh, I see, asTypeOf has a type annotation in order to do its astypeofing
20:59:45 <Ngevd> No idea
20:59:49 <Ngevd> But it's your turn
20:59:50 <Deewiant> ?ty asTypeOf
20:59:51 <lambdabot> forall a. a -> a -> a
20:59:53 <CakeProphet> Phantom_Hoover doesn't get the joke.
20:59:54 <Deewiant> (Yep)
21:00:03 <ais523> I thought the impl would be something like a conditional that always took the same branch, I forgot you didn't /have/ to use the inferred types
21:00:05 <CakeProphet> ais523: correct
21:00:43 <CakeProphet> I guess const sort of is a conditional that always takes the same branch. :P
21:01:06 <Ngevd> Your turn, Phantom_Hoover
21:01:08 <oerjan> well yes, const is the church encoding of True
21:01:17 -!- GreaseMonkey has joined.
21:01:17 -!- GreaseMonkey has quit (Changing host).
21:01:17 -!- GreaseMonkey has joined.
21:01:17 <CakeProphet> oerjan: I was wondering if someone would throw that in :P
21:01:36 <Ngevd> Your turn, Phantom_Hoover
21:01:44 <CakeProphet> >_>
21:01:58 <elliott> ais523: oerjan: hmm, would a language that forced you to use the most general inferred types be TC?
21:02:06 <oerjan> actually asTypeOf is even closer, it also has the expected type for a church encoded boolean
21:02:08 <elliott> I think yes, since Haskell without type signatures and type classes is TC
21:02:24 <CakeProphet> elliott: my guess would be yes, yes.
21:02:27 <CakeProphet> :)
21:02:34 <ais523> elliott: I don't see why it wouldn't be TC at all
21:02:35 <oerjan> sounds like it
21:02:40 <ais523> especially as I think you could write astypeof in it
21:02:45 <Ngevd> Phantom_Hoover, your turn
21:03:08 <CakeProphet> Ngevd: hi
21:03:42 <CakeProphet> sir, sir. I think you need to calm down, sir.
21:03:56 <CakeProphet> sir?
21:04:06 <Ngevd> Ngevd, no wait, that's me
21:04:10 <Ngevd> CakeProphet, I REFUSE
21:04:14 <CakeProphet> Ngevd: your turn, sir.
21:04:19 <CakeProphet> your turn to calm down.
21:04:23 <oerjan> let asTypeOf x y = if True then x else y
21:04:27 <Ngevd> NEEEEVEEEER
21:04:28 <oerjan> *-let
21:04:40 <CakeProphet> starlet? :P
21:04:48 <oerjan> heh that's actually circular, i think
21:05:14 <olsner> well, time to go, see you in about a week
21:05:24 <CakeProphet> olsner: bye paste olsner
21:05:33 <olsner> paste?
21:05:35 <CakeProphet> I will say hello to fugutur you for you.
21:05:35 <Ngevd> Phantom_Hoover, your godwang turn!
21:05:43 <olsner> oh, past
21:05:49 <oerjan> ais523: hm i'm not sure you could do it with just functions
21:06:07 -!- olsner has quit (Quit: Leaving).
21:06:28 <ais523> oerjan: why do you think that definition of asTypeOf above is circular? it's how I'd implement it
21:06:30 <CakeProphet> oerjan: iff c a b = if c then a else b
21:06:31 <CakeProphet> :P
21:06:54 <oerjan> ais523: because as i said above, asTypeOf is the closest thing to a church encoding of True
21:07:00 <ais523> ah, I see
21:07:33 <ais523> what about just defining church-true and church-false by hand, then doing a complicated computation that returns one or the other?
21:07:43 <ais523> that'd force the results to be the same type
21:07:47 <CakeProphet> oerjan: doesn't mean you have to construct every language the same way.
21:07:54 <ais523> it doesn't even have to be that complicated, it just has to look to the type system like it might return false
21:08:02 <oerjan> well the question is _can_ you make that
21:08:39 <elliott> oerjan: what about (not (not true))?
21:08:44 <elliott> oh not = flip
21:08:52 <ais523> > let true x y = x; let false x y = y; let nand x y = x (y false true) (y true true)
21:08:53 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
21:09:13 <CakeProphet> :t flip (flip const)
21:09:14 <lambdabot> forall a a1. a -> a1 -> a
21:09:14 <oerjan> CakeProphet: well i'm saying that using True is cheating because you could not actually recode True in terms of just functions while preserving the type restriction
21:09:17 <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand
21:09:18 <lambdabot> forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1
21:10:07 <ais523> well, that forced a t2->t2->t2 into the middle of the expression
21:10:09 <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand true
21:10:10 <lambdabot> forall t t1 t2 t3. ((t1 -> t1 -> t1) -> (t2 -> t3 -> t2) -> t) -> t
21:10:30 <elliott> ais523: what a terrible way to fix it
21:10:33 <CakeProphet> oerjan: so? :P
21:10:38 <elliott> ais523: what type do you think (let true x y = x; let false x y = y; let nand x y = x (y false true) (y true true)) has?
21:10:48 <ais523> elliott: not a very simple one
21:11:01 <elliott> ais523: there is no expression, where is your "in" clause?
21:11:14 <elliott> ais523: more importantly, you never close any of the "let"s
21:11:20 <elliott> :t let true x y = x; false x y = y; nand x y = x (y false true) (y true true) in nand
21:11:20 <ais523> elliott: you're looking at the wrong line
21:11:21 <lambdabot> forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1
21:11:30 <elliott> ais523: no, I'm not, I'm saying you fixed it in a ridiculous manner
21:11:31 <ais523> <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand
21:11:50 <ais523> elliott: btw, the version without an in works just fine in OCaml
21:11:58 <ais523> the interp responds by telling you the name and type of everything you defined
21:12:02 <ais523> and the value, if it's not a function
21:12:13 <CakeProphet> @hoogle a -> a -> a
21:12:14 <lambdabot> Prelude asTypeOf :: a -> a -> a
21:12:14 <lambdabot> Network.BufferType buf_append :: BufferOp a -> a -> a -> a
21:12:14 <lambdabot> Prelude atan2 :: RealFloat a => a -> a -> a
21:12:20 <elliott> ais523: evaluating syntactic nonsense like that is not a feature
21:12:31 <ais523> but it's not nonsense
21:12:40 <ais523> it's something that you'd write a lot in an actual program
21:12:48 <elliott> no it isn't, because it isn't valid haskell
21:12:51 <ais523> in a program you'd typically follow it with something that /used/ the definitions
21:12:53 <elliott> "let" is rare in haskell, anyway
21:13:03 <elliott> ais523: similarly, int main() { is valid C
21:13:07 <ais523> but in a REPL, that's typically going to be on a future line
21:13:11 <copumpkin> ais523: what would they scope over?
21:13:16 <elliott> yes, which is why "let x = y" works in GHCi
21:13:17 <ais523> copumpkin: future lines in the same REPL
21:13:17 <copumpkin> ais523: in ghci, you can write let without in
21:13:22 <oerjan> oh hm i think i got it, using how lambdas are monomorphic internally
21:13:23 <elliott> because it's a do block
21:13:39 <elliott> but "let a = b; let c = d" is most assuredly not an expression
21:13:45 <Ngevd> Phantom_Hoover, your turn
21:13:47 <ais523> elliott: I was using ; as newline
21:13:52 <ais523> is that not valid in Haskell?
21:14:13 <elliott> ais523: that's a bit of a loaded question; I'm sure "a;b" doesn't mean "a\nb" in OCaml...
21:14:31 <oerjan> :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x)
21:14:32 <lambdabot> forall t. t -> t -> t
21:14:34 <elliott> anyway, no, because the layout isn't right
21:14:38 <ais523> I don't think OCaml needs anything there at all, it isn't whitespace-sensitive
21:14:56 <ais523> # let a = 1 let b = 2 ;;
21:14:57 <elliott> oh hmm the layout is okay
21:14:57 <ais523> val a : int = 1
21:14:59 <ais523> val b : int = 2
21:14:59 <elliott> er oh wait
21:15:08 <elliott> yeah no
21:15:10 <elliott> the layout doesn't work out
21:15:11 <ais523> whereas Haskell is, so you can't just write space to mean newline
21:15:13 <elliott> because the "let"s aren't aligned
21:15:18 <elliott> ais523: do { let a = 3; let b = 4; ... }
21:15:23 <elliott> perfectly valid
21:15:33 <Deewiant> ?ty do let { a = b }; let { c = d }; Just 1
21:15:34 <lambdabot> forall t. (Num t) => Maybe t
21:15:52 <Deewiant> ?ty do { let a = b ; let c = d; Just 1 } -- elliott
21:15:53 <lambdabot> parse error on input `}'
21:16:03 <CakeProphet> :t (\c a b -> [a, b] !! fromEnum c)
21:16:04 <elliott> Deewiant: err, right, ofc
21:16:04 <lambdabot> forall a a1. (Enum a1) => a1 -> a -> a -> a
21:16:09 <ais523> :t do let { a = b } ; let { c = d } ; return 1
21:16:10 <lambdabot> forall t (m :: * -> *). (Num t, Monad m) => m t
21:16:20 <elliott> conversely:
21:16:25 <elliott> do let {a = 3}; let {b = 4}
21:16:27 <elliott> return (a+b)
21:16:28 <elliott> is perfectly valid
21:16:45 <elliott> basically all we're learning here is that ais523 doesn't know Haskell's layout rules, but this is irrelevant anyway as lambdabot isn't a REPL
21:16:48 <elliott> it's an expression evaluator
21:16:56 <ais523> CakeProphet: using !! there is cheating, I think, but the same idea can be done without it, I Think
21:16:59 <ais523> *think
21:17:22 <elliott> CakeProphet: you can't construct lists like that with the lambda calculus
21:17:37 <ais523> :t \a b -> case [a,b] of [x,_] = x; otherwise = x
21:17:38 <lambdabot> parse error on input `='
21:17:40 <CakeProphet> elliott: erm, why did the topic suddenly switch to lambda calculus?
21:17:43 <ais523> :t \a b -> case [a,b] of [x,_] -> x; otherwise -> x
21:17:44 <lambdabot> Expr -> Expr -> Expr
21:17:47 <elliott> that was always the topic
21:17:58 <CakeProphet> I thought it was "can you write asTypeOf with functions and no explicit type declarations in Haskell"
21:17:58 <ais523> elliott: so that's a solution abusing the type of cons
21:18:00 <elliott> ais523 also doesn't know how scoping works
21:18:02 <ais523> :t \a b -> case [a,b] of [x,_] -> x; otherwise -> a
21:18:02 <lambdabot> forall t. t -> t -> t
21:18:05 <ais523> that's what I meant
21:18:13 <ais523> elliott: not scoping, just a thinko
21:18:17 <ais523> although a pretty funny one
21:18:32 <CakeProphet> that was the original question anyway.
21:18:35 <ais523> that's actually flip astypeof, but I don't care
21:18:38 <oerjan> CakeProphet: well, lists are not functions
21:18:53 <Ngevd> `echo "ais523: wiki spam"
21:18:54 <oerjan> and also, i did it above
21:18:55 <HackEgo> ​"ais523: wiki spam"
21:18:58 <oerjan> :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x)
21:18:59 <lambdabot> forall t. t -> t -> t
21:19:10 <elliott> oh i didn't see you do that
21:19:17 <elliott> oerjan: that doesn't work in lambda calculus though :P
21:19:34 <oerjan> elliott: it works in lambda calculus with the hindley-milner type system
21:19:34 <elliott> hmm, which lambda calculus are we even talking about?
21:19:40 <elliott> it's a nonsense question in untyped LC ofc
21:19:46 <CakeProphet> the one that is Haskell.
21:19:46 <elliott> STLC seems like the interesting one here
21:19:48 <oerjan> which is the one which requires let for polymorphism
21:19:54 <ais523> what /is/ up with the excela spambots?
21:20:04 <ais523> they seem to be running articles through babelfish twice or something
21:20:06 <Phantom_Hoover> Best Numberwang.
21:20:14 <elliott> ais523: they love excela
21:20:20 <Phantom_Hoover> Ngevd, you might as well just give in now, you won't top that one.
21:20:33 <ais523> also, what is that language?
21:20:38 <ais523> it seems to allow embedded Ruby, at least
21:20:44 <CakeProphet> "at least"
21:20:51 <Ngevd> Phantom_Hoover, you're rightwang
21:20:59 <ais523> well, it's obviously not identical to Ruby
21:21:02 <elliott> ais523: http://esolangs.org/wiki/Cobol_on_Cogs; delete for offtopic
21:21:02 <ais523> and yet it's incredibly similar
21:21:14 <Ngevd> Phantom_Hoover, but we have equal score, call it a tie?
21:21:21 <Phantom_Hoover> Yeswang.
21:21:32 <ais523> elliott: what do you think of Smjg's comment on the talk page?
21:21:38 <CakeProphet> ML on your mom OH SNAP
21:21:39 <Ngevd> elliott, tell ais523 to unblock us
21:21:43 <ais523> I think it's misinterpreting mine
21:21:56 <elliott> ais523: "misinterpreting mine"?
21:22:03 <elliott> oh, I see
21:22:03 <ais523> my comment on the talk page
21:22:12 <elliott> I think so too, but am not sure of the relevance
21:23:15 <oerjan> elliott: you are joking about cobol on cogs, of course.
21:23:31 <elliott> oerjan: ?
21:23:51 <oerjan> no way that's not esoteric :P
21:24:01 <CakeProphet> C on Crack. Perl on Propellers. Scheme on Speed. Python on Poop. C# on This. Is. Stupid.
21:24:39 <elliott> oerjan: pls no promotion of the "anything unserious is esoteric" meme :(
21:24:46 <elliott> that's what got us LOLCODE
21:25:03 * oerjan promotes with the swatter -----###
21:25:23 <CakeProphet> esolangs are all about the THEORETICAL AWESOME of course.
21:25:27 <ais523> elliott: I think lolcode is esoteric
21:25:34 <ais523> it's a thematic language; it's uninteresting semantically
21:25:41 <ais523> but it fits the requirements to be an esolang
21:25:48 <CakeProphet> Glass is an esolang
21:25:57 <elliott> ais523: http://esolangs.org/wiki/Talk:Cobol_on_Cogs#Off-topic
21:26:01 <CakeProphet> and it's pretty much just an OO stack machine with weird syntax.
21:26:10 <elliott> you can wait for someone else to express an opinion, I suppose :P
21:26:14 <ais523> elliott: I'll wait for other comments, like usual
21:26:19 <elliott> CakeProphet: how many OO stack machines are there?
21:26:29 <CakeProphet> I know of Python.
21:26:52 <CakeProphet> well
21:26:57 <CakeProphet> the leading implementation of Python
21:27:00 <oerjan> more like stuck machine *HACK* *COUGH* *WHEEZE*
21:27:03 <CakeProphet> but not python itself I guess.
21:28:08 <oerjan> don't get stuck by putting stock in stack machines, stick to stg
21:28:25 <oerjan> wait that has a stack. strike that.
21:31:43 <elliott> stackless spineless tagless g-machine
21:31:48 <CakeProphet> !glass {M[m(_o)O!"Hello World!"(_o)o.?]}
21:31:51 <EgoBot> Hello World!
21:32:04 <CakeProphet> hmmm
21:32:06 <monqy> hello world
21:32:09 <elliott> I wonder if there are any processors with a cactus stack.
21:33:52 <oerjan> and yet another spam
21:34:01 -!- MDude has quit (Ping timeout: 276 seconds).
21:34:32 <CakeProphet> !glass {M[m(_o)O!(_a)A!<2><2>(_a)a.?(_o)(on).?]}
21:34:32 <EgoBot> 4
21:35:37 -!- elliott_ has joined.
21:35:39 -!- elliott has quit (Read error: Connection reset by peer).
21:41:48 <zzo38> Now I made ligatures work in the Haskell program for DVI processing
21:41:59 -!- pikhq has joined.
21:42:18 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/ntnn1(_a)s.?(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]}
21:42:18 <EgoBot> 0
21:42:20 <zzo38> (It is not needed to read a DVI file, but kerning/ligature is useful when writing DVI files)
21:42:22 <CakeProphet> :(
21:42:34 <CakeProphet> oh rite
21:42:43 -!- DCliche has joined.
21:43:20 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]}
21:43:20 <EgoBot> 0
21:43:23 <CakeProphet> :(
21:43:26 <monqy> 0
21:44:51 -!- Darth_Cliche has quit (Ping timeout: 240 seconds).
21:45:00 -!- pikhq_ has quit (Ping timeout: 258 seconds).
21:46:57 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn<1>(_a)s.?=\t(_o)(on).?]}
21:46:57 <EgoBot> 0
21:46:59 <CakeProphet> :(
21:47:17 <CakeProphet> Gregor: help make my factorial work.
21:47:43 <Phantom_Hoover> Oh god, Children in Need is on.
21:47:54 <Phantom_Hoover> Someone distract me before I start wanting to kick babies.
21:48:08 <CakeProphet> Phantom_Hoover: that's Wordwang!
21:49:46 <oerjan> that's quaternionwang!
21:54:38 <CakeProphet> !glass {M[m(_o)O!(_a)A!(_n)<5>=(_t)<1>=/(_n)(_t)(_t)(_n)(_a)m.?=(_n)(_n)<1>(_a)s.?=\(_t)(_o)(on).?]}
21:54:38 <EgoBot> 0
21:54:41 <CakeProphet> nsjentkjwerkhsdkfhwert
21:56:51 <CakeProphet> oh
21:57:34 <CakeProphet> !glass {M[m(_o)O!(_a)A!(_n)<5>=(_t)<1>=/(_n)(_t)(_t)*(_n)*(_a)m.?=(_n)(_n)*<1>(_a)s.?=\(_t)*(_o)(on).?]}
21:57:34 <EgoBot> 120
21:57:38 <CakeProphet> yaaaaaaaay
22:00:47 <Phantom_Hoover> "Homeomorphic to a 3-sphere." — Minecraft title screen text.
22:01:07 <Phantom_Hoover> Protip, Notch: if you're going to make glib little references to maths, *get them right*.
22:01:37 <CakeProphet> Phantom_Hoover: you assume that most people actually care that it's correct.
22:01:53 <elliott_> Phantom_Hoover totally said that.
22:02:15 <CakeProphet> Phantom_Hoover: I assume that you assume that most people actually care that it's correct.
22:03:17 <oerjan> well, does minecraft have a point at infinity? if so it could be right :P
22:03:29 <oerjan> oh hm there's that height limit
22:03:41 <oerjan> so not likely
22:04:01 <elliott_> oerjan: it's infinite in two dimensions and finite in one
22:04:31 <elliott_> oerjan: But IF YOU'D HELP ME WITH MY PLANETARY MODEL, I think an Elliottcraft planet would be a 3-sphere
22:04:33 <oerjan> homeomorphic to a 3-ball then, probably. assuming open.
22:04:40 <Phantom_Hoover> FSVO 'infinite'.
22:04:50 <elliott_> Phantom_Hoover: It's infinite in intention and in practice.
22:04:51 <CakeProphet> you assume he is referring to the topological space of the minecraft world.
22:04:53 <CakeProphet> how foolish.
22:05:08 <Phantom_Hoover> Yes, because homeomorphism is a topological thing.
22:05:35 <elliott_> Phantom_Hoover: When will you realise that CakeProphet just says dumb things as his special version of a "joke".
22:06:00 <CakeProphet> no that wasn't a joke.
22:06:04 <oerjan> elliott_: i don't see planets as being 3-spheres, really
22:06:15 <elliott_> oerjan: they're infinite in three dimensions
22:06:21 <elliott_> oerjan: Elliottcraft space travel involves moving in the fourth :P
22:06:25 <Phantom_Hoover> elliott_, that's not a 3-sphere.
22:06:31 <elliott_> Oh, hmm.
22:06:44 <elliott_> Yeah, oops.
22:06:49 <Phantom_Hoover> Also you realise that you're recreating Madoka-Kaname's stupid realm system.
22:06:53 <oerjan> R^3 + a point at infinity
22:06:58 <elliott_> Phantom_Hoover: Not really?
22:07:10 <elliott_> Phantom_Hoover: The idea is proper space, but I don't really feel like sacrificing infinite worlds.
22:07:27 <Phantom_Hoover> wait
22:07:27 <Phantom_Hoover> what
22:07:33 <Phantom_Hoover> if you made the point at infinity
22:07:38 <Phantom_Hoover> the access point
22:07:44 <Phantom_Hoover> (This makes literally no sense.)
22:07:51 <CakeProphet> elliott_: I was saying that "homeomorphic to a 3-sphere" doesn't imply that he's specifically referring to the shape of the minecraft world, or well, anything. Especially considering the tongue-in-cheek nature of those title things.
22:07:52 <oerjan> sacrificing infinite worlds should be the goal of any respectable galactic overlord
22:09:13 -!- sebbu2 has changed nick to sebbu.
22:09:36 <elliott_> Phantom_Hoover: What if you could get four-dimensional TNT so you could blow up an entire planet with just one block's worth of damage.
22:09:52 <Phantom_Hoover> I don't know?
22:11:44 -!- sebbu2 has joined.
22:11:44 -!- sebbu2 has quit (Changing host).
22:11:44 -!- sebbu2 has joined.
22:13:42 <elliott_> Phantom_Hoover: Gregor: "Danger Mouse co-creator Mark Hall dies after battle with cancer" ;______;
22:13:55 <elliott_> Oh good here's a more reliable source: http://www.bbc.co.uk/news/entertainment-arts-15792282
22:14:23 <Phantom_Hoover> noooo?
22:14:27 -!- sebbu has quit (Ping timeout: 240 seconds).
22:14:34 <elliott_> Phantom_Hoover: Why the question mark this is the SADDEST
22:15:15 <Phantom_Hoover> I'm sorry I never really watched Danger Mouse?
22:15:26 <Phantom_Hoover> I'll blame it on Except For Viewers In Scotland.
22:15:27 <elliott_> Phantom_Hoover: Your life is woefully incomplete?
22:16:15 <CakeProphet> elliott_: but hey, I could be worse; what if I got offended by tongue-in-cheek math references
22:16:31 -!- elliott_ has changed nick to elliott.
22:16:33 -!- elliott has quit (Changing host).
22:16:33 -!- elliott has joined.
22:17:00 <elliott> CakeProphet: ACCEPT
22:17:20 <CakeProphet> Phantom_Hoover: satisfactory answers to what if questions include "woah" or "dude"
22:17:27 <CakeProphet> or "woah dude"
22:17:39 <CakeProphet> elliott: I don't know how to accept silly invites.
22:17:44 <elliott> /join
22:17:44 <CakeProphet> I've yet to figure it out.
22:17:53 <CakeProphet> elliott: but that's not really accepting anything
22:17:55 <CakeProphet> I can do that anyway.
22:17:59 * CakeProphet is confused by these IRC customs.
22:18:01 <elliott> That's how you accept invites.
22:18:28 <Phantom_Hoover> CakeProphet, because it's not exactly tongue-in-cheek?
22:18:33 <CakeProphet> elliott: that makes no sense.
22:18:43 <elliott> CakeProphet: /join #esoteric-minecraft
22:18:53 <CakeProphet> but I can just do that anyway.
22:18:57 <CakeProphet> your invite is meaningless.
22:19:00 <CakeProphet> if there is no way to accept it
22:19:06 <Phantom_Hoover> It's screaming "look how clever I am, I know what a 3-sphere is" without actually /knowing/.
22:19:06 <CakeProphet> that is distinct from the normal way of joining channels.
22:19:10 <elliott> CakeProphet: JOIN NOW.
22:19:21 <CakeProphet> Phantom_Hoover: I bet Notch knows what a 3-sphere is.
22:19:22 <elliott> Invites allow you to join invite-only channels, for one.
22:19:37 <Phantom_Hoover> CakeProphet, he evidently doesn't know what either it or homeomorphism is.
22:20:00 <Ngevd> <elliott_> Phantom_Hoover: Gregor: "Danger Mouse co-creator Mark Hall dies after battle with cancer" ;______; <-- we should make an esolang in his memory
22:20:05 <CakeProphet> based on his tongue-in-cheek reference to them? :P
22:20:08 <CakeProphet> I'm not convinced.
22:20:46 <Phantom_Hoover> CakeProphet, *it's not isomorphic to the 3-sphere*.
22:20:52 <Phantom_Hoover> Not even *close*.
22:21:06 <CakeProphet> RIP mother of Brian Joseph Burton
22:21:30 <Phantom_Hoover> It's isomorphic to R^2×[0,1] in the ideal case.
22:21:31 <CakeProphet> er, co-father? I'm confused.
22:21:33 <elliott> CakeProphet: JOIN THE FUCKING CHANNEL
22:21:39 <CakeProphet> Phantom_Hoover: but uh...
22:21:41 <CakeProphet> okay nevermind
22:22:50 -!- ais523 has quit (Remote host closed the connection).
22:23:40 <zzo38> Did David R. Fuchs or Donald Knuth know about functional programming languages in designing DVI format or TeX? I am just curious.
22:23:48 -!- Patashu has joined.
22:24:29 <CakeProphet> Phantom_Hoover: it's entirely possible that he knows exactly what those things are and is referring to them in an absurd manner. for other examples of Notch saying absurd things see: many other title thingies.
22:24:44 <CakeProphet> and the fact that his possibly absurd title thingy uses the terminology incorrectly does not mean that he doesn't know what they are.
22:24:55 <elliott> CakeProphet: You don't actually play Minecraft, do you?
22:24:59 <CakeProphet> but that he has instead successfully pulled someone's strings.
22:25:01 <CakeProphet> elliott: nope
22:25:02 <elliott> I can assure you that Notch has no idea what he's talking about.
22:25:11 <elliott> And that the 3-sphere remark will be taken from someone else telling him it is.
22:25:38 <CakeProphet> but can you /know/?
22:25:38 <elliott> Now join the fucking channel
22:25:48 <CakeProphet> epistemology time
22:26:55 <CakeProphet> elliott: I refuse to concede to the demands of ruthless channel despots.
22:27:01 <elliott> Join or die.
22:27:36 <CakeProphet> you are not the catholic church / expanding Islamic empire / etc
22:28:26 <Phantom_Hoover> Expanding Islamic empire?
22:28:35 <CakeProphet> yes.
22:28:56 <Ngevd> Any particular Islamic empire?
22:29:03 <CakeProphet> I guess the Umayyad Caliphate? I dunno they probably did that in the Orthodox Caliphate too.
22:29:23 <CakeProphet> the one, that was the empire, that was islamic, back in the day, with the caliphates.
22:29:49 <Ngevd> Ottoman?
22:29:51 <CakeProphet> no.
22:30:30 <CakeProphet> I could explain it, or I could just link this http://en.wikipedia.org/wiki/Islamic_empire
22:31:13 <CakeProphet> I guess it is a pretty ambiguous term...
22:31:47 <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die.
22:31:58 <CakeProphet> that empire is the one I was referring to.
22:32:47 <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:32:54 -!- Ngevd has changed nick to yorrick.
22:33:00 -!- yorrick has changed nick to Ngevd.
22:33:02 <elliott> `addquote <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:33:04 <HackEgo> 722) <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:33:09 <CakeProphet> oerjan: well, for monotheists yes
22:33:09 -!- Ngevd has changed nick to yorrick.
22:33:16 -!- yorrick has changed nick to Ngevd.
22:33:26 <CakeProphet> I was under the impression that they were not so merciful to polytheists.
22:33:38 <oerjan> yeah there was that dhimmi distinction
22:35:37 -!- sebbu2 has changed nick to sebbu.
22:35:46 <pikhq> Could've sworn it was something like "convert to Abrahamic monotheism or die, convert to Islam or pay taxes"
22:37:10 <oerjan> i read the zoroastrians were accepted as well, in iran
22:37:48 <pikhq> Yeah, they'd have a bit of trouble trying to kill them off; that was kinda *the* religion of Iran.
22:40:01 -!- tica_chan has joined.
22:40:40 <oerjan> `welcome tica_chan
22:40:43 <HackEgo> tica_chan: 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
22:40:50 <tica_chan> Hi !
22:41:18 <Ngevd> Hello!
22:41:49 <Ngevd> How are you?
22:41:58 <tica_chan> Fine and you ?
22:42:03 -!- Ngevd has set topic: !.
22:42:15 <Ngevd> I did not mean to change the topic
22:42:17 <Ngevd> Um...
22:42:22 <Ngevd> Not entirely sure how it happened
22:42:26 <oerjan> eek
22:42:46 -!- oerjan has set topic: The IOCCC is back on! http://www.ioccc.org | Even a dog can learn these cat training techniques | http://codu.org/logs/_esoteric/.
22:42:49 <elliott> oerjan: wtf is `welcome and why does it exist
22:42:59 <tica_chan> oO
22:43:02 <elliott> it's `@ person ? welcome :P
22:43:10 <oerjan> elliott: it accepts more than one person
22:43:18 <DCliche> elliott: ths is `welcome
22:43:23 <DCliche> `welcoem elliott
22:43:25 <elliott> oerjan: that would go in @, not a specific command...
22:43:25 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcoem: not found
22:43:25 <elliott> `url bin/welcome
22:43:27 <oerjan> also, no one could remember the syntax :P
22:43:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome
22:43:34 <elliott> ew
22:43:37 <oerjan> elliott: it calls @ inside
22:43:40 <elliott> `rm bin/welcome
22:43:42 <HackEgo> No output.
22:43:42 <CakeProphet> oerjan: elliott doesn't like people installing shortcuts to other commands on HackEgo
22:43:46 <CakeProphet> for some reason.
22:43:47 <elliott> oerjan: it's about 5000 times more complicated than it needs to be :P
22:43:48 <oerjan> ah.
22:43:49 <Ngevd> tica_chan, we're a bunch of geeks
22:43:56 <Ngevd> And nerds
22:43:59 <tica_chan> Ow. I see that x)
22:44:03 <oerjan> elliott: i said it accepts a list of nicks
22:44:03 <Ngevd> But comparatively few dorks!
22:44:10 <elliott> oerjan: yes, it still is
22:44:18 <oerjan> ;_;
22:44:43 <CakeProphet> elliott: official resident HackEgo despot.
22:44:47 <elliott> if [ $# -e 0 ]; then exec ? "$@"; else name=$1; shift; exec @ "$name" welcome "$@"; fi
22:45:23 <tica_chan> So... geeks and nerds make me afraid... I think I'll escape
22:45:41 <elliott> tica_chan: (if you want the other kind of esoteric, see #Philosophy)
22:45:46 <elliott> warning: it's a really crappy channel
22:45:51 <tica_chan> (lol)
22:46:01 <tica_chan> goodbye, geeks !
22:46:13 <oerjan> elliott: i don't know sh syntax well enough. also welcome gets all its nick list as one argument, by HackEgo default
22:46:19 <Ngevd> tica_chan, no stay!
22:46:28 <elliott> oerjan: oh, well that's trivially fixable
22:46:36 -!- tica_chan has left.
22:46:40 <elliott> wrap whole thing in f () { ... }, do f "$*"
22:46:55 <Ngevd> Well, with any luck the topic fiasco will NEVER HAPPEN AGAIN
22:46:55 <elliott> I GUESS I'll add it
22:47:29 <elliott> `run echo '#!/bin/sh' >bin/welcome; echo 'if [ $# -eq 0 ]; then' >>bin/welcome
22:47:31 <HackEgo> No output.
22:47:53 <elliott> `run echo ' exec ? $*' >>bin/welcome
22:47:55 <HackEgo> No output.
22:48:07 <elliott> `run echo else >> bin/welcome; echo ' name=$1' >>bin/welcome; echo ' shift' >>bin/welcome
22:48:08 <oerjan> i think my (echo ...; echo ...) >... method is shorter
22:48:09 <HackEgo> No output.
22:48:32 <elliott> erm
22:48:36 <elliott> fuck :P
22:49:02 <elliott> oerjan: hmm, what was that?
22:49:06 <elliott> i didn't actually read yours, obviously >:)
22:49:42 <oerjan> just to put the piping outside all the echos
22:49:54 <CakeProphet> oerjan: wasn't it also Perl?
22:50:03 <CakeProphet> or, no?
22:50:10 <CakeProphet> there was something that was perl.
22:50:12 <elliott> oerjan: oh
22:50:24 <Phantom_Hoover> OK I now have a cat on the arm of my chair.
22:50:25 <oerjan> CakeProphet: yes. another reason i use perl is because sh freaks me out because i never know if i get escaping right.
22:50:55 <CakeProphet> oerjan: elliott also deleted my perl scripts. SOUNDS SUSPICIOUS DOESN'T IT. ;)
22:51:01 <oerjan> CakeProphet: AHA
22:51:17 <elliott> oerjan: sh freaks me out too
22:51:24 <CakeProphet> `runperl print "though he may have forgot this one"
22:51:25 <HackEgo> though he may have forgot this one
22:51:29 <CakeProphet> oh yeaaaaah
22:51:31 <elliott> but thankfully irc names cannot have spaces in them.
22:51:33 <elliott> `rm bin/runperl
22:51:35 <HackEgo> No output.
22:51:37 <elliott> I ALREADY REMOVED THAT :(
22:51:40 <elliott> !perl print "HMPH\n"
22:51:41 <EgoBot> HMPH
22:51:41 <CakeProphet> noep
22:51:48 <oerjan> elliott: no, but they can have \'s, i think :P
22:51:50 <elliott> `fetch http://sprunge.us/dXcP
22:51:51 <HackEgo> 2011-11-18 22:51:51 URL:http://sprunge.us/dXcP [156] -> "dXcP" [1]
22:51:57 <elliott> `run mv dXcp bin/welcome; chmod +x bin/welcome
22:52:00 <HackEgo> mv: cannot stat `dXcp': No such file or directory
22:52:00 <CakeProphet> elliott: but EgoBot is not HackEgo
22:52:05 <elliott> `run mv dXcP bin/welcome; chmod +x bin/welcome
22:52:07 <HackEgo> No output.
22:52:08 <elliott> `welcome oerjan blah blah
22:52:17 <elliott> ...
22:52:18 <oerjan> and whatever else confuses sh
22:52:24 <HackEgo> ​/hackenv/bin/welcome: 7: Syntax error: end of file unexpected (expecting "fi")
22:52:52 <elliott> wtf
22:53:18 <CakeProphet> you didn't terminate your if
22:53:18 <CakeProphet> ?
22:53:27 <CakeProphet> oh, no.
22:55:19 <oerjan> <elliott> tica_chan: (if you want the other kind of esoteric, see #Philosophy) <-- is this the official redirect now?
22:55:45 <CakeProphet> elliott: declarer of official things.
22:55:46 <elliott> oerjan: yes; the trick is that it's a really terrible channel composed of two #esoteric rejects who are completely bizarre.
22:56:08 <elliott> you may decide for yourself whether this is a cruel joke or the best possible alternative :P
22:56:10 <CakeProphet> too esoteric for #esoteric, as it were.
22:56:14 <zzo38> What rejects?
22:56:43 -!- SgeoN1 has joined.
22:57:00 <elliott> zzo38: people who came in here thinking it's about that other kind of esoteric :P
22:57:18 <zzo38> O, those people. But which ones, specifically?
22:58:28 <elliott> i forget the names
23:00:08 <CakeProphet> elliott: does shift return anything?
23:00:22 <elliott> nothing in shell "returns" anything
23:00:36 <CakeProphet> ah.
23:00:37 <CakeProphet> okay.
23:01:12 <CakeProphet> I guess shift > /dev/null would suck for the common case
23:01:13 <oerjan> `cat bin/welcome
23:01:15 <HackEgo> ​#!/bin/sh \ f () { \ if [ $# -eq 0 ]; then \ exec ? welcome \ else \ name=$1 \ shift \ exec @ "$name" welcome "$@" \ fi \ } \ f $* \
23:01:50 <oerjan> the mind boggles at the brain that could consider this preferable to my perl.
23:02:08 <CakeProphet> someone who doesn't like perl.
23:03:10 <elliott> oerjan: a haskell solution will also be accepted
23:03:18 <oerjan> `welcome now what?
23:03:21 <HackEgo> now: what?: 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
23:03:28 <oerjan> ah it works
23:03:29 <elliott> ooh, someone fixed it?
23:03:30 <elliott> `welcome hi
23:03:32 <HackEgo> hi: 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
23:03:35 <zzo38> I don't know, why do you need a different one from shell script in this case.
23:03:38 <oerjan> `welcome weird\nick
23:03:40 <HackEgo> weird \ ick: 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
23:03:49 <oerjan> elliott: *MWAHAHAHA*
23:03:56 -!- oerjan has changed nick to weird\nick.
23:04:01 <weird\nick> perfectly legal, too
23:04:03 <elliott> oerjan: it's the \n :P
23:04:05 -!- weird\nick has changed nick to oerjan.
23:04:08 <elliott> i'll write a haskell version >:)
23:04:22 <oerjan> elliott: does HackEgo _have_ haskell?
23:04:33 <CakeProphet> `run ghc --version
23:04:35 <HackEgo> The Glorious Glasgow Haskell Compilation System, version 7.2.1
23:04:42 <zzo38> Why do you need a Haskell version? Shell scripts works for this case (but you need to correct the mistake)
23:04:54 <oerjan> elliott: what _do_ you have against perl...
23:05:11 <oerjan> it's my second favorite language, basically
23:06:04 <oerjan> and won't haskell be slow unless precompiled
23:06:17 <elliott> we have ghc
23:06:29 <elliott> do { names <- getArgs; let x:xs = ["@", name | name <- names] ++ ["?", "welcome"]; (_,_,_,p) <- proc x xs; waitforProcess p >>= ... bah
23:06:46 <elliott> oerjan: fine put the perl version back :P
23:06:47 <CakeProphet> best choice: perl
23:06:54 <elliott> `help
23:06:55 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:07:05 <elliott> `revert 997
23:07:06 <HackEgo> Done.
23:07:07 <elliott> `rm bin/runperl
23:07:08 <elliott> `url bin/welcome
23:07:09 <HackEgo> No output.
23:07:10 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome
23:07:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:07:23 <elliott> oerjan: if (defined($_=shift))
23:07:29 <elliott> i am more than 100% sure you can do that more nicely :P
23:08:13 <elliott> oerjan: anyway what's wrong with
23:08:17 <elliott> exec map { "@", $_ } @ARGV, "?", "welcome";
23:08:22 <elliott> oh
23:08:36 <elliott> exec map { "@", $_ } (split / /, $ARGV[1]), "?", "welcome";
23:08:40 <elliott> or something
23:08:55 <oerjan> the @ needs to get its arguments as one string
23:09:01 <elliott> `cat bin/@
23:09:03 <HackEgo> ​#!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
23:09:08 <elliott> oerjan: wrong.
23:09:19 <oerjan> oh? hm.
23:09:39 <oerjan> `run @ test @ this echo hi
23:09:40 <HackEgo> test: this: hi
23:09:52 <oerjan> ah
23:09:57 <oerjan> although...
23:09:59 <elliott> exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/ /, $ARGV[1])), "?", "welcome";
23:10:09 <oerjan> `run @ weird\nick @ this echo hi
23:10:11 <HackEgo> weirdnick: this: hi
23:10:20 <oerjan> *MWAHAHAHA*
23:10:20 <elliott> exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/\s+/, $ARGV[1])), "?", "welcome";
23:10:25 <elliott> oerjan: that's shell escaping, doofus
23:10:30 <elliott> `run @ 'weird\nick' @ this echo hi
23:10:32 <HackEgo> weird \ ick: this: hi
23:10:36 <elliott> fuq
23:10:49 <oerjan> `@ weird\nick echo hi
23:10:51 <HackEgo> weird \ ick: exec: 9: weird: not found
23:10:58 <elliott> what
23:11:07 <oerjan> XD
23:11:22 * oerjan might convert elliott to perl yet at this rate
23:12:13 <elliott> oerjan: or maybe i'll implement a wonderful process handling library for haskell >:)
23:12:47 <CakeProphet> well you could always do $_=shift; if (defined)
23:13:31 <CakeProphet> regarding the defined($_=shift) bit
23:13:36 <CakeProphet> but, I think that looks fine. good perl. :)
23:13:45 <oerjan> defined($_=shift) was the first thing i tried which worked
23:13:55 <oerjan> i tried just $_[0] before
23:14:07 <oerjan> hm or something
23:14:40 <CakeProphet> ah yeah perl is weird about @_
23:14:51 <CakeProphet> because it's readonly
23:18:10 <CakeProphet> oh wait
23:18:12 <elliott> oerjan: you think i'm joking, but i actually just sketched a simple API right now :P
23:18:19 <CakeProphet> @_ isn't a thing in your current scope anyway.
23:18:19 <lambdabot> Maybe you meant: . ? @ v
23:18:27 <oerjan> elliott: there's rawSystem btw
23:18:34 <CakeProphet> shift uses @ARGV when outside of functions and @_ when inside them
23:18:36 <oerjan> @hoogle rawSystem
23:18:36 <lambdabot> System.Process rawSystem :: String -> [String] -> IO ExitCode
23:18:37 <lambdabot> System.Cmd rawSystem :: String -> [String] -> IO ExitCode
23:18:41 <elliott> oerjan: yeah but it's ugly and planned for deprecation
23:18:46 <oerjan> wat
23:18:59 <elliott> oerjan: you're meant to do everything through createProcess
23:19:34 <oerjan> elliott: have they gone completely insane?
23:19:42 <elliott> oerjan: createProcess isn't that bad...
23:20:41 <elliott> welcome :: [String] -> IO ()
23:20:41 <elliott> welcome names = startCommand cmd >=> waitProcess >>= exitWith
23:20:41 <elliott> where cmd = proc $ ["@", name | name <- names] ++ ["?", "welcome"]
23:20:41 <elliott> yesssssss
23:23:10 <oerjan> nope
23:23:55 <elliott> oerjan: ?
23:24:41 <oerjan> proc takes the command separately. also i see no startCommand.
23:25:17 <elliott> oerjan: whoosh
23:25:46 <oerjan> oh it's your own redesign?
23:27:20 <oerjan> CakeProphet: @_ is @ARGV outside functions
23:27:30 <CakeProphet> oh?
23:28:13 <oerjan> or wait
23:28:30 <CakeProphet> `run echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' > bin/welcome2
23:28:32 <HackEgo> No output.
23:28:34 -!- MSleep has joined.
23:28:34 -!- copumpkin has joined.
23:28:41 <CakeProphet> `run perl bin/welcome2
23:28:43 <HackEgo> No output.
23:28:45 <CakeProphet> :(
23:29:41 <CakeProphet> `run perl bin/welcome2 test
23:29:43 <HackEgo> test:
23:29:46 <CakeProphet> lol
23:29:59 <elliott> CakeProphet: nice complete lack of escaping.
23:30:09 <oerjan> CakeProphet: d'oh i've misread the documentation, no wonder @_ didn't work :P
23:30:10 <CakeProphet> I escape from no one.
23:30:21 <CakeProphet> `cat bin/welcome2
23:30:23 <HackEgo> ​$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";
23:30:46 <oerjan> it's @ARG which is a synonym for @_, not @ARGV
23:31:46 <oerjan> CakeProphet: #!/usr/bin/perl -w , friend
23:31:55 <CakeProphet> :(
23:32:44 <CakeProphet> `run {echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";'} > bin/welcome2
23:32:47 <HackEgo> bash: {echo: command not found
23:32:53 <CakeProphet> `run { echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' } > bin/welcome2
23:32:55 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
23:32:58 <CakeProphet> ekkrjiwerjiuwhejr
23:33:01 <CakeProphet> help bash
23:33:05 <oerjan> CakeProphet: it should be quite clear that since \ is a legal char in a nick, you want to be very careful to avoid escape interpretation
23:33:30 <CakeProphet> it does.
23:33:31 <CakeProphet> >_>
23:33:34 <CakeProphet> right?
23:33:51 <oerjan> mind you, @ also breaks it
23:33:51 <Gregor> MUAHAHAHAH
23:34:17 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' >> bin/welcome2
23:34:19 <HackEgo> No output.
23:34:29 <CakeProphet> `cat `which welcome2`
23:34:32 <HackEgo> cat: `which welcome2`: No such file or directory
23:34:37 <CakeProphet> `run cat `which welcome2`
23:34:45 <CakeProphet> I am m4st3r h4k3g0
23:35:08 <HackEgo> No output.
23:35:45 <CakeProphet> >_>
23:35:59 <CakeProphet> `which welcome2
23:36:01 <HackEgo> No output.
23:36:05 <CakeProphet> >_>
23:36:13 <Gregor> elliott: Feel free to read JIT try2.
23:36:13 <oerjan> `run chmod +x bin/welcome2
23:36:15 <HackEgo> No output.
23:36:17 <CakeProphet> oh hi.
23:36:25 <oerjan> `which welcome2
23:36:26 <HackEgo> ​/hackenv/bin/welcome2
23:36:27 <CakeProphet> oerjan: stupid executable bit...
23:36:33 <CakeProphet> `welcome2
23:36:35 <HackEgo> Useless use of concatenation (.) or string in void context at /hackenv/bin/welcome2 line 2. \ Use of uninitialized value $_ in substitution (s///) at /hackenv/bin/welcome2 line 2.
23:36:41 <Gregor> lul
23:36:50 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec (($_?"@ $_ ":"")."? welcome");' >> bin/welcome2
23:36:52 <HackEgo> No output.
23:36:57 <CakeProphet> `run chmod +x bin/welcome2
23:36:58 <HackEgo> No output.
23:37:00 <CakeProphet> `welcome2 hi
23:37:02 <HackEgo> hi: 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
23:37:07 <CakeProphet> `welcome2
23:37:10 <HackEgo> Use of uninitialized value $_ in substitution (s///) at /hackenv/bin/welcome2 line 2. \ 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
23:37:12 <CakeProphet> `welcome2 weird\nick\asshole
23:37:15 <HackEgo> weirdnickasshole: 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
23:37:27 <oerjan> CakeProphet: @ itself is not \ clean
23:38:40 <oerjan> `cat bin/@
23:38:42 <HackEgo> ​#!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
23:39:36 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec ((defined?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:39:39 <HackEgo> No output.
23:39:42 <CakeProphet> `run chmod +x bin/welcome2
23:39:44 <HackEgo> No output.
23:39:48 <CakeProphet> `run welcome2 hi asshole
23:39:50 <HackEgo> Warning: Use of "defined" without parentheses is ambiguous at /hackenv/bin/welcome2 line 2. \ Bareword found where operator expected at /hackenv/bin/welcome2 line 2, near "?"@ $_ ":"") . "? welcome" \.(Missing operator before welcome?) \ Unquoted string "welcome" may clash with future reserved word at /hackenv/bin/welcome2 line 2. \ String found where operator expected at /hackenv/bin/welcome2 line 2, at end of
23:39:55 <CakeProphet> awediuhweiuhwiuerhiuw4hriuhswr
23:39:59 <CakeProphet> oerjan: screw -w :P
23:40:08 <CakeProphet> and -e
23:40:10 <CakeProphet> which is
23:40:25 <CakeProphet> an imaginary option that makes errors cause perl programs not to execute.
23:41:17 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:41:19 <HackEgo> No output.
23:41:23 <CakeProphet> `run chmod +x bin/welcome2
23:41:25 <HackEgo> No output.
23:41:27 <CakeProphet> `welcome2
23:41:29 <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
23:41:32 <CakeProphet> `welcome2 hi hi
23:41:35 <HackEgo> hi: hi: 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
23:41:37 <CakeProphet> `welcome2 weird\dude
23:41:39 <HackEgo> weirddude: 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
23:41:45 <CakeProphet> `run welcome2 'weird\dude'
23:41:48 <HackEgo> weirddude: 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
23:41:51 <Gregor> $ clang -O4 full.c
23:41:51 <Gregor> /tmp/cc-p91cPs.o: file not recognized: File format not recognized
23:41:52 <Gregor> >_O
23:42:06 <CakeProphet> `url bin/welcome2
23:42:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome2
23:42:15 <CakeProphet> is this version betterer than welcome?
23:43:09 <Gregor> `welcome
23:43:11 <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
23:43:21 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }' >bin/@
23:43:23 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
23:43:30 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }') >bin/@
23:43:32 <HackEgo> No output.
23:43:37 <CakeProphet> elliott: OH NO PERL IS TAKING OVER
23:43:42 <CakeProphet> elliott: BEAR ARMS
23:43:46 <oerjan> `run chmod +x bin/@
23:43:48 <HackEgo> No output.
23:43:54 -!- Zuu has quit (Ping timeout: 244 seconds).
23:43:55 <oerjan> `@ test echo hi
23:43:57 <HackEgo> Use of uninitialized value $1 in concatenation (.) or string at /hackenv/bin/@ line 2. \ Use of uninitialized value $2 in exec at /hackenv/bin/@ line 2. \ Can't exec "": No such file or directory at /hackenv/bin/@ line 2. \ :
23:44:03 <oerjan> XD
23:44:13 <oerjan> oh duh
23:44:46 <elliott> oerjan: stop replacing everything with perl >:(
23:45:02 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^([^ ]*) +([^ ]*) +//) { print "$1: "; exec $2, $_; }') >bin/@
23:45:04 <HackEgo> No output.
23:45:09 <elliott> `run rm bin/welcome2; # breaks on \
23:45:11 <HackEgo> No output.
23:45:14 <oerjan> `run chmod +x bin/@
23:45:16 <HackEgo> No output.
23:45:22 <oerjan> `@ test echo hi
23:45:23 <HackEgo> test: hi
23:45:29 <oerjan> `@ test\nick echo hi
23:45:31 <HackEgo> test\nick: hi
23:45:35 <CakeProphet> elliott: it doesn't
23:45:43 <elliott> <CakeProphet> `welcome2 weird\dude
23:45:43 <elliott> <HackEgo> weirddude: 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
23:45:43 <oerjan> `welcome test\nick ho
23:45:45 <HackEgo> test\nick: ho: 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
23:45:50 <elliott> CakeProphet: it does
23:46:11 <CakeProphet> that has nothing to do with my script.
23:46:18 <oerjan> elliott: now there's a @ and welcome which escape properly, at least
23:46:27 <oerjan> (or not-unescape)
23:46:33 <elliott> oerjan: you could have just fixed @ without rewriting it...
23:46:47 <CakeProphet> (in perl)
23:46:55 <oerjan> elliott: no, because i cannot get my head around sh's escape madness
23:47:04 <elliott> oerjan: then tell someone who can to fix it :P
23:47:17 <oerjan> elliott: feel free to rewrite it in sh again
23:47:30 <elliott> it wouldn't need rewriting
23:47:34 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g;' >> bin/welcome2; echo 'exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:47:36 <HackEgo> No output.
23:47:37 <CakeProphet> OSHI HACKEGO EDIT WAR
23:47:49 <CakeProphet> `run chmod +x bin/welcome2
23:47:50 <HackEgo> No output.
23:48:01 <CakeProphet> `welcome2 weird\nick\asshole
23:48:03 <HackEgo> weirdnickasshole: 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
23:48:10 <CakeProphet> oh look it is my script, wonder why.
23:48:18 <CakeProphet> `welcome weird\nick\asshole
23:48:20 <HackEgo> weird\nick\asshole: 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
23:48:53 <elliott> `rm bin/welcome2
23:48:54 <HackEgo> No output.
23:49:48 <CakeProphet> I was under the impression that interpolation did no escapey nonsense.
23:50:11 <oerjan> CakeProphet: exec uses a shell if you have just one string argument to it
23:50:36 <oerjan> you must split away the command to avoid that
23:50:59 <oerjan> oh i was going to check
23:51:07 <oerjan> `run @ test @ ho echo hi
23:51:09 <HackEgo> test: ho: hi
23:51:14 <oerjan> good
23:52:45 <CakeProphet> challenge: make a script that is like @ but automatically uses the command invoker as the nick.
23:53:17 <oerjan> i'm not sure HackEgo passes on that information, or does it
23:53:27 <oerjan> `printenv
23:53:29 <HackEgo> TERM=linux \ http_proxy=http://127.0.0.1:3128 \ HACKENV=/hackenv \ PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin \ PWD=/hackenv \ SHLVL=0 \ HOME=/tmp
23:53:30 <CakeProphet> s/make a script/hack hackego so/
23:53:34 <elliott> `which printenv
23:53:36 <HackEgo> ​/usr/bin/printenv
23:53:42 <elliott> wtf is that distinct from env
23:53:56 <oerjan> `env
23:53:58 <HackEgo> TERM=linux \ http_proxy=http://127.0.0.1:3128 \ HACKENV=/hackenv \ PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin \ PWD=/hackenv \ SHLVL=0 \ HOME=/tmp
23:54:09 <oerjan> i didn't know env could print too
23:54:23 <CakeProphet> `run file `which printenv`
23:54:25 <HackEgo> ​/usr/bin/printenv: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
23:54:31 <CakeProphet> `run file `which env`
23:54:33 <HackEgo> ​/usr/bin/env: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
23:54:37 <CakeProphet> huh
23:54:42 <CakeProphet> not even a softlink or anything.
23:55:07 <elliott> well env lets you set them.
23:55:16 <oerjan> `run ls -l /usr/bin/printenv /usr/bin/env
23:55:19 <HackEgo> ​-rwxr-xr-x 2 0 0 27576 Apr 28 2010 /usr/bin/env \ -rwxr-xr-x 2 0 0 27448 Apr 28 2010 /usr/bin/printenv
23:55:24 <oerjan> they
23:55:31 <oerjan> 're not the same file...
23:56:07 <elliott> because printenv can't set
23:56:10 <elliott> the question is why it exists at all
23:56:21 <oerjan> yeah but why have printenv at all, right
23:56:37 <oerjan> `env TERM
23:56:39 <HackEgo> env: TERM: No such file or directory
23:56:45 <oerjan> `printenv TERM
23:56:47 <HackEgo> linux
23:56:53 <oerjan> ok that's a difference
23:56:55 <elliott> ah
23:57:01 <elliott> aka $TERM :P
23:57:03 <elliott> or getenv("TERM")
23:57:04 <elliott> or [...]
23:57:25 <CakeProphet> so do we have an alias for sprunge?
23:57:42 <oerjan> `which fetch
23:57:44 <HackEgo> No output.
23:57:45 <elliott> you can't access sprunge
23:57:50 <elliott> use paste
23:58:05 <CakeProphet> `which curl
23:58:07 <HackEgo> ​/usr/bin/curl
23:58:10 <CakeProphet> I bet I can. :P
23:58:25 <CakeProphet> `help paste
23:58:26 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:58:33 <elliott> CakeProphet: try.
23:58:38 <CakeProphet> `run paste --help
23:58:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22312
23:58:45 <CakeProphet> lol
23:59:17 <elliott> `url bin/paste
23:59:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/paste
23:59:48 <CakeProphet> ah okay.
23:59:49 <CakeProphet> good.
2011-11-19
00:00:10 <CakeProphet> `run find . | paste
00:00:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19816
00:00:16 <CakeProphet> `run find / | paste
00:00:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11587 \ find: `/proc/tty/driver': Permission denied \ find: `/proc/1/task/1/fd': Permission denied \ find: `/proc/1/task/1/fdinfo': Permission denied \ find: `/proc/1/task/1/ns': Permission denied \ find: `/proc/1/fd': Permission denied \ find: `/proc/1/fdinfo': Permission denied \ find: `/proc/1/ns': Permission denied \ find: `/proc/2/task/2/fd':
00:00:34 <CakeProphet> good.
00:00:36 <elliott> `run tree / | paste
00:00:40 <HackEgo> bash: tree: command not found \ http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10348
00:00:43 <elliott> Aww
00:00:45 <Gregor> elliott: Still no go on SPARC :(
00:00:45 <elliott> Aww.
00:00:46 <CakeProphet> elliott: shame
00:00:53 <elliott> Gregor: Install tre
00:00:54 <elliott> e
00:00:59 <Gregor> What the boink is tree?
00:01:01 <CakeProphet> `run apt-get install tree
00:01:03 <HackEgo> W: Unable to read /etc/apt/apt.conf.d/ - DirectoryExists (2: No such file or directory) \ E: Could not open lock file /var/lib/dpkg/lock - open (2: No such file or directory) \ E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
00:01:04 <CakeProphet> :P
00:01:17 <CakeProphet> `run sudo -u GOD apt-get install tree
00:01:19 <HackEgo> bash: sudo: command not found
00:01:24 <Gregor> CakeProphet: I figure for security sake, I'll just run random users' code as root.
00:01:33 <CakeProphet> GOOD CALL.
00:01:44 <elliott> Gregor: http://en.wikipedia.org/wiki/Tree_(Unix)
00:01:47 -!- sebbu2 has joined.
00:01:47 -!- sebbu2 has quit (Changing host).
00:01:47 -!- sebbu2 has joined.
00:01:50 <elliott> apt-get install tree plz
00:02:11 <Gregor> <Gregor> What the boink is tree?
00:02:45 <elliott> Gregor: I gave you links.
00:02:47 <elliott> Now shut up and install it :P
00:03:01 -!- sebbu has quit (Ping timeout: 244 seconds).
00:03:17 <Gregor> elliott: I don't want links. Explain it in four words or less.
00:03:38 <elliott> Gregor: http://mama.indstate.edu/users/ice/tree/ has it in a thousand, in the form of one ASCII picture.
00:03:39 <CakeProphet> http://sprunge.us/fNgR
00:03:42 <CakeProphet> this is tree
00:03:51 <elliott> As does CakeProphet :P
00:03:58 <pikhq> Gregor: It's a bit like ls, but it prints a directory tree.
00:04:22 <Gregor> SO FAR I SEE ONLY POLYWORD EXPLANATIONS
00:04:24 <Gregor> FOUR OR LESS
00:04:35 <CakeProphet> "this is tree" is totally three
00:04:37 <CakeProphet> 4 if you count the URL
00:04:42 <pikhq> Gregor: "Directory tree"
00:04:55 <elliott> Gregor: It draws a directory tree in ASCII/Unicode.
00:05:06 <Gregor> I don't think I can count the URL as one word :P
00:05:06 <elliott> Gregor: ASCII/Unicode directory tree.
00:05:11 <Gregor> elliott: Perfect.
00:05:14 <Gregor> `run tree / | paste
00:05:46 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8739
00:06:01 <CakeProphet> good tree.
00:06:01 <elliott> `run tree / >/dev/null
00:06:03 <Gregor> ...
00:06:10 <elliott> It's probably erroring or something?
00:06:24 <HackEgo> No output.
00:06:28 <Gregor> `run tree / | head
00:06:30 <HackEgo> ​/ \ |-- bin \ | |-- bash \ | |-- bunzip2 \ | |-- bzcat \ | |-- bzcmp -> bzdiff \ | |-- bzdiff \ | |-- bzegrep -> bzgrep \ | |-- bzexe \ | |-- bzfgrep -> bzgrep
00:06:36 <Gregor> Maybe it's more than 10M :)
00:06:57 <Gregor> `run tree / | gzip -9 | paste
00:07:02 <Gregor> That ... won't work.
00:07:05 <Gregor> `run tree / | gzip -9c | paste
00:07:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17
00:07:30 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32133
00:08:04 <CakeProphet> 2.3 MB
00:08:24 <Gregor> Donno why it didn't like it before *shrugs*
00:08:35 <zzo38> Can you install the TeX to PNG webpage I have into Hackiki?
00:08:59 <CakeProphet> Gregor: hey can you install df onto HackEgo?
00:09:13 <Gregor> CakeProphet: Probably, but I doubt that it would do anything useful.
00:09:15 <elliott> `run tree | paste
00:09:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32268
00:09:30 <elliott> `run tree / | paste
00:09:42 <Gregor> zzo38: Idonno if I like the notion of PNG webpages made from TeX ... there's at least one decent TeX->HTML convertor.
00:09:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32291
00:09:55 <elliott> Gregor: 'Swhat Wikipedia does :P
00:09:58 <elliott> But HackEgo doesn't need it...
00:10:06 <CakeProphet> elliott: how does it decide when to use ASCII and when do use Unicode?
00:10:07 <Gregor> elliott: *Hackiki
00:10:11 <elliott> Oh
00:10:14 <elliott> Gregor: P.S. I suspect you mean LaTeX :-)
00:10:17 <Gregor> elliott: Makes more sense for Hackiki
00:10:18 <elliott> `tree --help
00:10:20 <HackEgo> usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]] \.[-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] \.[--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] \..[--filelimit #] [<directory list>] \ -a. All files are listed. \ -d. List directories only. \.-l. Follow symbolic links like directories.
00:10:21 <Gregor> elliott: Oh, 'struth.
00:10:29 <elliott> Gregor: Which I doubt zzo is happy with ;-)
00:10:32 <elliott> `run tree --help | paste
00:10:34 <HackEgo> usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]] \.[-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] \.[--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] \..[--filelimit #] [<directory list>] \ -a. All files are listed. \ -d. List directories only. \.-l. Follow symbolic links like directories.
00:10:36 <zzo38> Gregor: No, you can use that for making PNG images included inside of a HTML page.
00:10:38 <elliott> `run tree --help 2>&1 | paste
00:10:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29936
00:10:46 -!- oerjan has quit (Quit: Memory leak again).
00:10:51 <zzo38> In general, not for the entire page.
00:10:51 <elliott> `run tree -A | paste
00:10:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26352
00:10:57 <elliott> lol
00:11:02 <Gregor> SPARC is driving me CRAZY.
00:11:04 * CakeProphet thinks we should convert esowiki to hackiki.
00:11:06 <Gregor> Adding a printf cannot make this work >_<
00:11:16 <CakeProphet> what could go wrong?
00:11:21 <Gregor> CakeProphet: I tried to drive that once, but 'twas a wasted effort.
00:11:26 <zzo38> It is a program I wrote; it has to be adjusted to work with Linux (I wrote it for Windows), and it works far better than the Wikipedia one. It also has more options.
00:12:36 <CakeProphet> Gregor: try again :P
00:12:38 <zzo38> You could also probably remove all the restrictions I have since those are managed by a separate program in Hackiki anyways.
00:13:09 <shachaf> Hac Kiki?
00:13:43 <CakeProphet> Hack Iki
00:14:50 <Gregor> shachaf: What HackBot (HackEgo) is to IRC bots, Hackiki is to wikis.
00:17:36 -!- copumpkin has changed nick to c0w.
00:17:42 <CakeProphet> > var "bad\nlambdabot\nbad"
00:17:43 <lambdabot> bad
00:17:44 <lambdabot> lambdabot
00:17:44 <lambdabot> bad
00:17:44 <zzo38> I might be able to add the program myself, as long as Plain TeX, dvipng, and AMS fonts (the METAFONT ones) are installed.
00:19:06 <Gregor> zzo38: I'll check in a bit, in the middle of something else right now.
00:19:14 <zzo38> OK
00:19:47 * CakeProphet just got $30 for applying for a credit card
00:19:50 <CakeProphet> yeaaaaaah
00:19:55 <CakeProphet> free money
00:20:21 <CakeProphet> they're placing a bet that I'm fiscally irresponsible.
00:20:23 <CakeProphet> BOY ARE THEY WRONG.
00:20:26 <zzo38> Do you keep it even if you cancel a credit card immediately?
00:20:35 * CakeProphet goes on an Amazon shopping spree with his new $30
00:20:38 <zzo38> Or if you don't use a credit card?
00:20:40 <CakeProphet> zzo38: probably
00:20:55 <CakeProphet> but it gives you like Amazon reward point things or some shit so I might actually use it.
00:21:03 <CakeProphet> without, you know, owing obscene amounts of interest.
00:21:05 <Gregor> Any SPARC experts? Anything weird about how it handles return addresses? Something to do with its register windows maybe?
00:21:08 <CakeProphet> spelled correctly.
00:22:30 <Gregor> Surely a setjmp would save the return address even if it's otherwise squirreled away in another register window? How could it not?
00:23:06 <CakeProphet> Gregor: turns out one of the 4 people who still know anything about SPARC are on this very channel.
00:23:41 <Gregor> CakeProphet: But whoooooooo
00:24:28 <CakeProphet> yiyus
00:24:39 -!- c0w has changed nick to copumpkin.
00:25:41 <Gregor> yiyus: HAAAAAAAAAALP :P
00:27:24 -!- oerjan has joined.
00:29:46 <elliott> CakeProphet: wat
00:29:55 <CakeProphet> so you know what the death of John McCarthy means?
00:30:00 <CakeProphet> Elephant WILL NEVER BE A REAL THING.
00:30:05 <CakeProphet> unless it already is one and I missed it.
00:30:08 <SgeoN1> elliott arpdoit
00:30:18 <Gregor> I'm just trying to understand how a system could possibly exist on which setjmp+stack doesn't save the return address X-D
00:30:25 <Phantom_Hoover> Elephant?
00:30:51 <CakeProphet> http://www-formal.stanford.edu/jmc/elephant/elephant.html
00:32:49 <oerjan> CakeProphet: elephant will always be remembered
00:33:14 * Phantom_Hoover → sleep
00:33:15 -!- Phantom_Hoover has quit (Quit: Leaving).
00:33:37 <Ngevd> Good idea, PPH
00:33:39 <Ngevd> Goodnight
00:33:40 -!- Ngevd has quit (Quit: Goodbye).
00:33:42 <oerjan> elephant is sort like an anti-feather, i think
00:33:58 <CakeProphet> opposite feather more like
00:34:21 <oerjan> ...in which we learn that CakeProphet doesn't know what anti- means.
00:34:43 <CakeProphet> dunno, to me anti- implied a sort of negation effect
00:34:55 <elliott> phantom phantom hoover
00:35:15 <oerjan> as does opposite
00:36:32 <CakeProphet> nope, no way!
00:37:39 -!- oklopol has joined.
00:37:45 <oklopol> ollon.
00:38:45 <CakeProphet> nollo
00:39:01 <CakeProphet> SWEEET DELICIOUS PALLINDROMIC CORE MMMMM
00:40:55 <CakeProphet> ah finally the more weak-willed of the Birtons have saught respite in their slumberchambers.
00:41:41 <CakeProphet> and the Americans and Norsemen can converse in peace.
00:42:23 <CakeProphet> (note that Britons applies to all UKers here. because I said so.)
00:42:45 <elliott> hi
00:42:49 <zzo38> Program I wrote in Haskell to read DVI file is running out of memory!!
00:42:56 <elliott> rip program
00:43:33 <zzo38> Do you know how to make it to not run out of memory?
00:44:22 <CakeProphet> probably apply strictness somewhere.
00:46:30 <zzo38> Maybe it is not properly tail recursive? And how and where is it supposed to apply strictness somewhere?
00:47:11 * CakeProphet is actually a prophet, by the way.
00:47:25 <CakeProphet> so I like actually know how to debug your program without any source code.
00:47:51 <oerjan> zzo38: tail recursion can sometimes make things _worse_ in haskell
00:48:05 <zzo38> O, that is what you are the prophet of? I thought you were the Prophet Wizard of the Crayon Cake.
00:48:20 <CakeProphet> no, lies.
00:48:22 <CakeProphet> a facade.
00:48:28 <zzo38> oerjan: If you look will you know how to fix it?
00:48:41 <CakeProphet> a pale phantom of the dark frowziness that lies beneath.
00:49:32 <zzo38> Is it running out of ByteString memory?
00:49:36 <CakeProphet> the ineffable funk.
00:50:03 <elliott> zzo38: what kind of memory is it running out of?
00:50:08 <elliott> is a stack overflow reported?
00:50:16 <elliott> or does it just gobble up computer memory until the whole system lags?
00:50:16 <zzo38> It just says out of memory.
00:50:21 <CakeProphet> elliott: I bet it's RAM.
00:50:23 <CakeProphet> :)
00:50:24 <elliott> "out of memory"? that's it?
00:50:31 <zzo38> The system didn't lag.
00:50:33 <Vorpal> hi
00:50:41 <zzo38> elliott: Yes, it just says "out of memory"
00:50:41 <CakeProphet> hello
00:50:41 <elliott> zzo38: are you sure it doesn't say the heap is exhausted? :P
00:50:44 <elliott> weird.
00:51:00 <elliott> zzo38: are you loading a really big file?
00:51:12 <Vorpal> I wonder if skyrim tracks number of hours you played so far somewhere. Probably don't want to check that though...
00:51:13 <elliott> zzo38: you can try +RTS -H<megabytes>M
00:51:15 <elliott> for some <megabytse>
00:51:17 <elliott> megabytes
00:51:19 <elliott> to increase the default heap size
00:51:26 <elliott> if you're trying to load a very big file
00:51:42 <elliott> oh hmm
00:51:46 <Vorpal> elliott, shouldn't the size of the heap grow as required?
00:51:48 <elliott> looks like ghc automatically increases the heap
00:51:54 <Vorpal> yeah
00:51:57 <elliott> Vorpal: well that's not always the best decision... but anyway
00:52:01 <Vorpal> it wouldn't make sense if it didn't
00:52:03 <elliott> zzo38: how much RAM do you have? :P
00:52:04 <zzo38> The file DVI.lhs is 33 KB, and DVI.dvi (the output of TeX processing DVI.lhs) is 51 KB. But I tried loading a very short DVI file and it is still out of memory.
00:52:05 <Vorpal> elliott, true.
00:52:10 <oerjan> zzo38: you might try http://haskell.org/ghc/docs/6.12.3/html/users_guide/prof-heap.html
00:52:17 <Vorpal> elliott, now stacks tend to have a max size more often
00:52:18 <elliott> zzo38: then your program is inefficient *shrugs*
00:52:24 <zzo38> I have 224 MB of RAM
00:52:36 <Vorpal> what... really?
00:52:39 <CakeProphet> ..
00:52:40 <Vorpal> how old is that computer?
00:52:45 <zzo38> I don't know.
00:52:49 <Vorpal> ...
00:52:58 <Vorpal> that belongs in a mueum!
00:53:00 <Vorpal> museum*
00:53:03 <CakeProphet> lol
00:53:08 -!- derdon has quit (Remote host closed the connection).
00:53:29 <Vorpal> wait, did I just do an unintentional Indiana Jones parody? Ouch I think I did...
00:53:35 <zzo38> Actually it says "<interactive>: out of memory" is that different?
00:54:58 <Vorpal> zzo38, just don't try to run windows on that system. Unless it is like 9x
00:55:11 <Vorpal> heck, even windows xp would be a pain with that little ram
00:55:16 <zzo38> It is XP
00:55:16 -!- kmc has joined.
00:55:30 <Vorpal> sounds painful on 224 MB RAM
00:55:48 <Vorpal> zzo38, for laughs you should try windows vista or windows 7 on it
00:56:01 <zzo38> I don't need to change it
00:56:01 <Vorpal> bbiab
00:56:16 <zzo38> If I ever change the operating system I will put Linux, not Windows.
00:56:25 <Vorpal> zzo38, but iirc DX11 doesn't work under XP?
00:56:40 <Vorpal> or maybe your graphics card can't do that anyway
00:56:44 <zzo38> I don't use DX11
00:56:53 <Vorpal> or that
00:58:24 <zzo38> There is no great genius without some touch of madness.
01:00:19 <elliott> Vorpal: people used xp with 256 megs of ram commonly, y'know
01:00:25 <elliott> it came out in 2001
01:01:09 <elliott> Vorpal: also i'm pretty sure most stuff works with directx 9 still
01:01:54 <elliott> "Controversially, the original name for the DirectX project was the "Manhattan Project", a reference to the US nuclear weapons initiative. Alex St. John, creator of the original Microsoft DirectX specification, claims[21] that the connotation with the ultimate outcome of the Manhattan Project (the nuclear bombing of Japan) is intentional, and that DirectX and its sister project, the Xbox (which shares a similar logo), are meant to displace Japanese
01:01:54 <elliott> ame makers from their dominance of the industry.[22]"
01:02:01 <elliott> wow it's like he's trying to be a gigantic asshole
01:02:47 <Gregor> ... wow.
01:02:54 <Gregor> That's ... wow.
01:03:52 <elliott> Gregor: The next Microsoft graphics project: "Holocaust", featuring the 3D subsystem "We're Literally Going To Kill Eleven Million People... But This Time, It's PERSONAL"
01:04:38 <elliott> Slogan: "Bill Gates Is Literally Hitler, Like, He's Growing The Moustache And Everything"
01:04:46 <Gregor> *Ballmer
01:04:51 <elliott> Bill Ballmer
01:11:10 <Vorpal> <elliott> Vorpal: people used xp with 256 megs of ram commonly, y'know
01:11:11 <Vorpal> <elliott> it came out in 2001
01:11:12 <Vorpal> hm yeah
01:11:16 <Vorpal> xp is that old?
01:11:17 <Vorpal> right
01:11:25 <Vorpal> very long lived
01:11:39 <elliott> i believe xp is the longest-lasting version of any maintained microsoft product :P
01:12:04 <elliott> over 5 years
01:12:20 <pikhq> More if you consider the length of official support.
01:12:21 <Vorpal> it is about 10 years now
01:12:26 <zzo38> Genius is an infinite capacity for taking pains. -- Jane Hopkins
01:12:30 <Vorpal> yeah
01:12:51 <pikhq> Support ends in 2014.
01:12:57 <Vorpal> heh
01:13:04 <pikhq> *Sale* ended in 2009.
01:15:27 <oerjan> darn i'm not a genius anyway?
01:18:55 <Vorpal> pikhq, so 8 years of sale and 13 years of support?
01:18:59 <Vorpal> as currently planned
01:20:02 <oklopol> erm, that's like the worst definition of genius i've ever heard
01:20:23 <oklopol> who the fuck is this dude
01:20:41 <elliott> i'm sure "jane hopkins" is male :P
01:20:54 <zzo38> Unix is very simple, but it takes a genius to understand the simplicity. -- Dennis Ritch
01:20:54 <oklopol> jane can be either
01:20:58 <oklopol> dude as well
01:22:59 <oklopol> eh, i just googled and there is no jane hopkins
01:23:21 <oklopol> oh sorry found her http://jane-hopkins.com/
01:23:56 <oklopol> okay i think i need to give geniusness a rethinkover.
01:24:04 <oklopol> because that's some deep shit
01:24:28 <elliott> oerjan i feel bad about using Int all the time am i a bad person
01:24:59 <Vorpal> elliott, obviously you should use Int# yes
01:25:16 <oerjan> use Integer#, that's the best type
01:25:34 <oerjan> the rest is just a bit of gödel numbering
01:25:40 <Vorpal> err
01:25:42 <Vorpal> :t Integer#
01:25:43 <lambdabot> Not in scope: data constructor `Integer#'
01:25:45 <Vorpal> :t Int#
01:25:46 <lambdabot> Not in scope: data constructor `Int#'
01:25:48 <elliott> that isn't a constructor
01:25:53 <Vorpal> derp
01:25:57 <Vorpal> :i Int#
01:26:01 <Vorpal> ah, no
01:26:05 <elliott> :k Int#
01:26:06 <lambdabot> Not in scope: type constructor or class `Int#'
01:26:07 <elliott> @src Int#
01:26:07 <lambdabot> Source not found.
01:26:10 <elliott> lol
01:26:11 <elliott> @src Int
01:26:11 <lambdabot> data Int = I# Int#
01:26:15 <Vorpal> ...
01:26:16 <elliott> well obviously Int# has no source
01:26:19 <elliott> because it's primitive
01:26:20 <Vorpal> well yes
01:26:29 <Vorpal> elliott, but I assumed you would have a type for it
01:26:44 <elliott> types don't have types
01:27:08 <Vorpal> hm true
01:27:13 <CakeProphet> LOGICAL DEAD END OH SNAPA
01:27:22 <oerjan> what kind of type could a type have
01:27:26 * oerjan runs away
01:27:27 <Vorpal> Prelude> :i Int
01:27:27 <Vorpal> data Int = GHC.Types.I# GHC.Prim.Int# -- Defined in GHC.Types
01:27:29 <CakeProphet> typetype
01:27:29 <Vorpal> well that anyway
01:27:52 <CakeProphet> > Int + Char
01:27:53 <lambdabot> Not in scope: data constructor `Int'Not in scope: data constructor `Char'
01:27:54 <Vorpal> oerjan, as far as I can tell there isn't an Integer#
01:27:57 <CakeProphet> WHAT PROPOSTEROUS'
01:28:03 <Vorpal> data Integer
01:28:03 <Vorpal> = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int#
01:28:03 <Vorpal> | integer-gmp:GHC.Integer.Type.J# GHC.Prim.Int# GHC.Prim.ByteArray#
01:28:03 <Vorpal> -- Defined in integer-gmp:GHC.Integer.Type
01:28:04 <oerjan> lots of whooshing here tonight
01:28:27 <Vorpal> that is an interesting type
01:28:53 <oerjan> S# is for small integers
01:29:04 <Vorpal> oerjan, ah right, but that is still GMP it seems?
01:29:13 <Vorpal> why use gmp for small integers
01:29:18 <elliott> no.
01:29:23 <elliott> Integer is just d efined in integer-gmp.
01:29:24 <elliott> obviously
01:29:26 <Vorpal> ah
01:29:34 <elliott> you see the prefix because you don't have that package exposed
01:30:09 <Vorpal> elliott, that still leaves the original question unanswered....
01:30:14 <elliott> which question
01:30:17 <CakeProphet> Vorpal: S# is the name of the constructor
01:30:22 <CakeProphet> not a different type
01:30:27 <CakeProphet> >_>?
01:30:47 <Vorpal> elliott, why would small integers be done with GMP or why would non GMP stuff be done in integer-gmp!?
01:30:56 <elliott> <elliott> no.
01:30:56 <elliott> <elliott> Integer is just d efined in integer-gmp.
01:30:56 <elliott> <elliott> obviously
01:31:03 <elliott> you have presented no evidence that small integers are done with gmp
01:31:13 <CakeProphet> Vorpal: S# is the constructor for small Integers, within the normal range of ints
01:31:14 <elliott> Vorpal: here's a hint: how do you define Integer outside of integer-gmp
01:31:17 <Vorpal> elliott, indeed, except for the name of the package :P
01:31:23 <CakeProphet> J# is the one that is bignumish
01:31:33 <elliott> Vorpal: hint: you can't, because you need a bignum type
01:31:34 <Vorpal> elliott, I'm not claiming it isn't done. Just that the naming is bad then
01:31:35 <Vorpal> hm
01:31:43 <elliott> Vorpal: integer-gmp = implementation of Integer with GMP
01:31:48 <elliott> Vorpal: integer-simple = implementation of Integer with no dependencies
01:31:52 <Vorpal> elliott, fair enough. I would have assumed that a "small" one was machine word?
01:31:54 <elliott> it's only badly-named if you're a literal idiot
01:31:59 <elliott> Vorpal: <Vorpal> = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int#
01:32:01 <elliott> what do you think Int# is?
01:32:08 <elliott> it obviously has to be boxed in that constructor
01:32:14 <Vorpal> oh right, I'm just too sleepy for this
01:32:26 <Vorpal> night →
01:33:56 <oerjan> metaphorical idiots think the name is just right
01:36:56 -!- Vorpal has quit (Ping timeout: 258 seconds).
01:40:51 <Gregor> SPAAAAAAAAAAAAAAAAAAAAAARC
02:07:59 -!- MSleep has quit (Quit: later chat).
02:18:11 <CakeProphet> yes
02:18:13 <CakeProphet> mission successful
02:18:17 <CakeProphet> tea, sammich, and cigars.
02:18:20 <CakeProphet> the simple pleasures of life.
02:20:15 -!- augur has quit (Ping timeout: 258 seconds).
02:20:39 <CakeProphet> Gregor: don't you have like
02:20:44 <CakeProphet> documentation of SPARC?
02:21:06 <Gregor> CakeProphet: Yes, but it's doing little to explain things such as why setjmp didn't seem to put the return address anywhere.
02:22:06 <CakeProphet> Gregor: ah so you're compiling to C or?
02:22:18 <CakeProphet> setjmp is a thing in SPARC as well.
02:22:50 <Gregor> No, my code is C ... of course setjmp is a thing in SPARC, it should save all sorts of process state including but not limited to registers.
02:23:58 <CakeProphet> well cursory googling suggests that SPARC does indeed have a stack and it does indeed work like x86 (it grows down)
02:24:03 <CakeProphet> ...
02:25:47 <elliott> Gregor: CakeProphet's helpful, isn't he.
02:26:35 <Gregor> elliott: Quite.
02:26:49 * CakeProphet is the definition of helpful.
02:26:52 <CakeProphet> or well
02:26:56 <CakeProphet> what's the word for helpful
02:26:59 <CakeProphet> but not really being helpful
02:27:00 <elliott> CakeProphet.
02:27:01 <CakeProphet> like "eager to help"
02:28:02 <CakeProphet> hmmm, yes
02:28:13 <CakeProphet> then the antonym, meaning, "helpful but not eager to help"
02:28:16 <CakeProphet> would be elliott.
02:28:46 <CakeProphet> IF WE BECAME ONE PERSON.
02:28:48 <CakeProphet> THINK OF ALL THE HELP
02:28:50 <CakeProphet> THAT WOULD HAPPEN.
02:29:18 <CakeProphet> also think of the great manliness.
02:30:19 <Gregor> ...
02:30:20 <Gregor> X-D
02:31:34 <CakeProphet> holy crap its cold outside.
02:31:52 <CakeProphet> 43 degrees.
02:32:05 <CakeProphet> this is cold for my climate.
02:32:08 <oerjan> -43?
02:32:11 <CakeProphet> no
02:32:22 <oerjan> `sanetemp 43
02:32:24 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: sanetemp: not found
02:32:36 <oerjan> !sanetemp 43
02:32:38 <EgoBot> 6.1
02:33:07 <CakeProphet> it was literally like 70-something yesterday
02:33:22 <CakeProphet> LITERALLY LIKE THIS APPROXIMATE FIGURE.
02:33:25 <oerjan> ah. i saw in a newspaper the other that that and rain is essentially the average norwegian national weather
02:33:32 <oerjan> *the other... month
02:34:31 <CakeProphet> one nice thing about Fahrenheit is that it goes by intervals of 10 in intuitive understanding
02:34:40 <CakeProphet> each degree of 10 is like another level of coldness/hotness
02:34:46 <CakeProphet> or at least
02:35:12 <CakeProphet> that is how people intuitively delineate levels of coldness/hotness in the context of weather.
02:35:26 <CakeProphet> because it's intuitive.
02:36:17 <oerjan> as opposed to celsius which goes by intervals of 5, obviously
02:36:27 <CakeProphet> ah okay
02:39:05 <elliott> CakeProphet: that's the stupidest thing i've ever heard
02:39:19 <elliott> perception of temperature isn't discrete, if it went up by 20s or 5s that'd be just as good
02:39:33 <elliott> you only think it's a good factor to scale by because you're used to thinking in terms of fahrenheit in the first place...
02:39:44 <CakeProphet> I didn't mean to imply "THIS IS THE AWESOMEST THING AND THERE IS NO OTHER WAY THAT WORKS"
02:39:48 <CakeProphet> and yes, I know.
02:40:15 <zzo38> There is also Kelvin temperatures. Are there Planck temperatures?
02:40:23 <CakeProphet> yes
02:40:48 <CakeProphet> you would have to divide by Planck temperature.
02:41:20 <oerjan> i fear they don't go up by 10, though
02:41:25 <CakeProphet> SHIT
02:41:37 <CakeProphet> worst temperature metric.
02:43:39 <elliott> http://en.wikipedia.org/wiki/Planck_temperature
02:43:52 <elliott> 0°C = 1.928 × 10^-30 Tp
02:43:53 <elliott> practical
02:47:47 <CakeProphet> so I'm guessing Planck temperature was the temperature at the beginning of the universe?
02:47:55 <CakeProphet> should be simple to empirically verify.
02:48:27 <shachaf> elliott: "The error is just what it says."? That's, like, a whole new perspective on GHC error messages, man!
02:48:37 <elliott> shachaf: It's as factually accurate as it is unhelpful.
02:48:43 <oerjan> CakeProphet: that's a bit overstating it, i think
02:48:53 <shachaf> elliott: Has anyone ever realized that before?
02:49:04 <elliott> shachaf: No. This is why only I can debug Haskell programs.
02:49:05 <oerjan> there may have been a time during the big bang when that was the temperature
02:49:22 <zzo38> I made a movie once, I have the DVD of it. The label says "Candid Camera" even though the movie has nothing to do with Candid Camera. The label also says "*UOP-FREE*" and has the DVD Video logo on it.
02:49:48 <CakeProphet> shachaf: I have realized that. :P
02:49:55 <shachaf> elliott: I knew it!
02:49:58 <shachaf> But your secret is out now.
02:50:13 <shachaf> <elliott> It would probably be best to tell us what you're actually trying to do.
02:50:21 <shachaf> You should file for a patent or something.
02:50:40 <elliott> shachaf: Hey, I only use the X-Y problem when talking to people who are being really confusing!
02:51:01 <shachaf> > x - y
02:51:02 <lambdabot> x - y
02:51:13 <zzo38> In one scene one of the actors is saying that some text should be placed on the screen at that time. He said something like "On the screen you should write those words, OK?" and the text was literally placed "Those words, OK" on the screen
02:52:12 <CakeProphet> elliott: I oftentimes encounter people trying to solve the XY problem on my questionsin IRC channels
02:52:19 <zzo38> After a test of the camera equipment, the first scene is about how to eat lego.
02:52:34 <CakeProphet> little do they know, they're usually wrong, and continue to be obnoxious when I continue asking my actual question.
02:52:53 -!- copumpkin has changed nick to NotASpy.
02:53:03 <zzo38> Scene 2 comes after scene 3. There is no scene numbered 1.
02:53:06 -!- NotASpy has changed nick to DefinitelyNotASp.
02:53:31 <CakeProphet> DefinitelyNotASp: your foolish disguise fools no one but yourself!
02:53:37 -!- DefinitelyNotASp has changed nick to TotallyNotASpy.
02:54:00 <oerjan> `welcome TotallyNotASpy
02:54:03 <HackEgo> TotallyNotASpy: 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
02:56:43 -!- TotallyNotASpy has changed nick to copumpkin.
02:59:04 <oerjan> @hoogle unsafeCoerce
02:59:05 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
02:59:30 <oerjan> @hoogle Any
02:59:31 <lambdabot> Prelude any :: (a -> Bool) -> [a] -> Bool
02:59:31 <lambdabot> Data.List any :: (a -> Bool) -> [a] -> Bool
02:59:31 <lambdabot> Data.Monoid Any :: Bool -> Any
02:59:37 <oerjan> gah
02:59:52 <oerjan> @hoogle -Prelude Any
02:59:52 <lambdabot> Unknown flag: -P
02:59:52 <lambdabot>
02:59:59 <oerjan> arg
03:00:00 <oerjan> h
03:00:12 <elliott> @hoogle GHC.Exts Any
03:00:14 <lambdabot> Did you mean: :: Exts Any +GHC
03:00:14 <lambdabot> No results found
03:00:16 <CakeProphet> a typeof operator would be fun, on top of the ::-as-operator thing previously discussed.
03:00:19 <elliott> @hoogle +GHC Any
03:00:20 <lambdabot> package anydbm
03:00:20 <lambdabot> package Ganymede
03:00:20 <lambdabot> package hp2any-core
03:00:34 <CakeProphet> asTypeOf a b = unsafeCoerce a :: typeof b
03:00:47 -!- augur has joined.
03:01:10 <zzo38> CakeProphet: Yes, typeof operator, I would like to have too; even GNU C has typeof operator too.
03:01:20 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." 1) :: GHC.Exts.Any) `seq` "and hm"
03:01:25 <EgoBot> ​"and hm"
03:01:43 <oerjan> heh
03:01:55 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: GHC.Exts.Any) `seq` "and hm"
03:01:58 <EgoBot> ​"and hm"
03:02:11 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: Int) `seq` "and hm"
03:02:13 <EgoBot> ​"and hm"
03:02:22 <elliott> EgoBot: wait, what
03:02:24 <elliott> oh
03:02:38 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: [Int] -> [Int] -> [Int]) `seq` "and hm"
03:02:41 <EgoBot> ​"and hm"
03:02:58 <oerjan> oh maybe there's something wrong with the tracing
03:03:13 <oerjan> !haskell Debug.Trace.trace "hm..." "and hm"
03:03:15 <EgoBot> ​"and hm"
03:03:20 <oerjan> gah
03:03:24 <elliott> `runghc 2+2
03:03:30 <HackEgo> target `2+2' is not a module name or a source file
03:03:34 <elliott> X-D
03:03:39 <elliott> `run ghc -e 'Debug.Trace.trace "hm..." "and hm"'
03:03:44 <HackEgo> hm... \ "and hm"
03:04:13 <elliott> oerjan: enjoy
03:04:33 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: GHC.Exts.Any) `seq` "and hm"
03:04:35 <EgoBot> hm..."and hm"
03:05:05 <oerjan> sorry, found another way :P
03:05:13 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return (++))) :: GHC.Exts.Any) `seq` "and hm"
03:05:27 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return (++))) :: Int) `seq` "and hm"
03:05:29 <EgoBot> hm..."and hm"
03:05:56 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: Int -> Int)) `seq` "and hm"
03:06:00 <CakeProphet> pikhq: you there?
03:06:06 <oerjan> oops
03:06:13 <pikhq> Ish
03:06:18 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: Int -> Int) `seq` "and hm"
03:06:21 <EgoBot> hm..."and hm"
03:06:30 <elliott> shachaf: What's a ring?
03:06:33 <CakeProphet> pikhq: there was a 25% decrease in fuel efficiency.
03:06:36 <elliott> You can troll me, I won't mind.
03:06:37 <CakeProphet> almost exactly.
03:06:44 <pikhq> CakeProphet: Bravisimo
03:06:54 <CakeProphet> yes, I'm on the path to being a true American.
03:06:58 <shachaf> elliott: Um... http://en.wikipedia.org/wiki/Ring_(mathematics)?
03:06:59 * oerjan concludes that unsafeCoerce has no effect on strictness
03:07:05 <elliott> shachaf: Thx for troll
03:07:09 <elliott> `addquote * oerjan concludes that unsafeCoerce has no effect on strictness
03:07:11 <HackEgo> 723) * oerjan concludes that unsafeCoerce has no effect on strictness
03:07:25 <shachaf> admin + elliott
03:07:32 <CakeProphet> ?
03:07:52 <CakeProphet> "admin + elliott" is a scary thought, to me.
03:08:42 <zzo38> Someone completed an ultra ending for ADOM with 1 XP. Other challenges are: * Never kill anyone other than uniques; you are not allowed to have any companions either. * No use of food. * Kill as many different kind of creatures as possible (some uniques are mutually exclusive however). * Never carry more than 100s of inventory (including equipment).
03:08:58 <pikhq> elliott: From what I'm getting from that Wikipedia article, it's the algebraic structure with "+" and "*" operators, with closure, associativity, existence of identity, existence of inverse, and commutativity for addition, and closure, associativity, and existence of identity for multiplication.
03:09:07 <elliott> pikhq: THANXE BRO
03:09:20 <pikhq> Obvious examples of a ring include the set of naturals.
03:09:26 <zzo38> pikhq: I made such a program in Haskell it is called monoidplus
03:09:26 <pikhq> Erm.
03:09:27 <pikhq> Reals.
03:09:29 <pikhq> Erm.
03:09:32 <pikhq> *Integers*.
03:09:40 <pikhq> Jeeze pikhq, say what you mean.
03:10:22 <CakeProphet> other examples of rings include the set of my awesome Persian wallpaper
03:10:26 <CakeProphet> er, wait that's a group.
03:10:26 <shachaf> elliott: pikhq did far better than I could have.
03:10:45 * shachaf isn't a troll, anyway.
03:10:49 <oerjan> elliott: i was wondering whether that insistence that you shouldn't coerce between data types and functions had any effect on seq
03:11:21 <elliott> oerjan: Ah.
03:11:55 <zzo38> * No spells/chat. * Not allowed to use downstairs command (meaning only places you can enter are wilderness encounters); reach level 50. * Enter ToEF at experience level 1, get orb of fire, leave; do not enter any other locations. * Enter small cave; never go up/down stairs; stay until experience level 50. * Edit executable file to force going through small cave, uninteresting dungeon, and main dungeon, in that order.
03:12:50 <oerjan> elliott: since that's just about the only operation you can do which doesn't require things to be of a known type
03:13:59 <oerjan> shachaf is clearly an orc
03:14:15 <CakeProphet> oerjan is a magic elf.
03:14:20 * oerjan is slowly approaching the end of his yafgc binge
03:14:33 <oerjan> with many interruptions
03:15:39 <CakeProphet> I like how caffeine is considered a food and not a drug by the FDA.
03:15:55 <oerjan> a non-magic elf would be such a sad creature
03:17:08 <CakeProphet> all elves are pathetic creatures.
03:17:14 <CakeProphet> I slay them on sight.
03:17:23 <elliott> Hmm, I'm not sure what @'s low-level network IO model looks like.
03:17:25 <elliott> pikhq: Make one up for me.
03:17:29 <oerjan> ah, so CakeProphet is a goblin, check
03:19:53 <elliott> oerjan: Um excuse me dorfs are the ones who hate elves a lot.
03:20:11 <oerjan> elliott: ok those too, then
03:28:31 <pikhq> elliott: *Clearly* you should just send neutrinos in the correct direction.
03:28:37 <elliott> pikhq: NOT HELPFUL :P
03:29:56 <elliott> pikhq: The problem is twofold: I don't know what connection setup should look like, and I don't know what communication should look like :(
03:34:28 <pikhq> elliott: Hmm. Well, *communication* should be nothing more than passing serialised @ objects back and forth, perhaps transparently compressed.
03:34:33 <elliott> pikhq: I said low-level.
03:34:42 <pikhq> Devise a serialisation scheme.
03:34:44 <elliott> Unless you think that'll work to talk to IRC or HTTP servers.
03:34:49 <elliott> Hint: It won't.
03:35:09 <pikhq> Oh, so a *non-native* network IO model.
03:35:21 <pikhq> *Bleh*.
03:35:49 <pikhq> This is annoying, because normal networking is all about sending bytestreams, and @ is all about not-bytestreams.
03:37:50 <pikhq> I'm *tempted* to just go with a kinda stupid send/receive bytestream model.
03:38:05 <elliott> yes, that would be easy if I had imperative sequencing, which I don't
03:38:46 <elliott> everything so far is based on FRP, i can't decide whether to go with FRP (awkward since it doesn't really fit the usecase but fits in better with the other stuff), something iteratee-esque (dunno what the model would look like without sequencing?) or something else entirely
03:39:18 <pikhq> *Really* stupidly moronic [Byte]->[Byte] function? :P
03:39:31 <oerjan> enumeratorities
03:39:47 <elliott> pikhq: that's impure
03:39:59 <elliott> and doesn't allow any sort of out-of-bound control (how do you close the connection?)
03:40:25 <elliott> also it's awfully unperformant and prone to errors but those are even more obvious than the other things i said
03:40:39 <pikhq> I did say "stupidly moronic" for a reason.
03:41:19 <elliott> not moronic enough for my standards; i don't accept mediocrity in my moronicity
03:42:06 <pikhq> Fine, y'know what? Your low-level network IO model shall involve directly creating TCP packets.
03:42:17 <pikhq> Why not go more low-level than is usual? :P
03:42:20 <elliott> that still doesn't help for a model of how to send them :P
03:42:28 <elliott> and receive them
03:44:23 -!- DCliche_ has joined.
03:46:40 <oerjan> your low-level network IO model shall involve neutrinos. _that_ should be low level enough.
03:46:58 <elliott> <pikhq> elliott: *Clearly* you should just send neutrinos in the correct direction.
03:47:15 <oerjan> see? pikhq agrees.
03:48:00 -!- DCliche has quit (Ping timeout: 240 seconds).
03:48:03 -!- kmc has quit (Quit: Leaving).
03:53:24 <CakeProphet> elliott: perhaps you just need to make some concessions in your pureness?
03:53:34 <CakeProphet> or: monads!!
03:53:36 <CakeProphet> yeaaaaah
03:54:20 <CakeProphet> and then just serialize shit and send/receive/check-connection-stuff via an IO monad or <insert other side-effectful workaround>
03:55:31 <elliott> oerjan: Please kick CakeProphet.
03:55:49 <CakeProphet> what?
03:56:06 <CakeProphet> I'm guessing you've got something better?
03:56:08 * oerjan gives CakeProphet a warning swat first -----###
04:01:02 <CakeProphet> elliott: as far as serialization format, what if you arranged objects so that their memory layout and serialized format are equivalent, except for references which would then need to be adjusted from the local RAM address space to a smaller relative-to-some-starting-point-in-stream-datagram-or-whatever address space.
04:01:18 <elliott> oerjan: kick CakeProphet for not having any idea how @ works and also he's stupid
04:02:19 <CakeProphet> elliott: alternatively, you could point me (and the other people you are discussing this problem with) to a source of information on @ that can clarify my ignorance.
04:02:32 <elliott> oerjan: he am go too far.....
04:03:39 <CakeProphet> but anyway, basically as long as the receiving end knows the type of the data then it can reconstruct the transmission
04:03:57 <CakeProphet> and readjusting references isn't terribly inefficient, you have to traverse references to serialize anyway.
04:05:04 <CakeProphet> elliott: or are @ objects not implemented as blocks of memory and pointers? enlighten me.
04:05:23 <elliott> CakeProphet: I'll answer your questions iff oerjan kicks you.
04:07:05 <CakeProphet> but basically you a) no longer have to serialize anything (aside from some minor pre/postprocessing) because your memory layout is your serialization format b) enforce type safety by requiring receiving programs to know the type of the data they're receiving.
04:07:19 <elliott> oerjan: Seriously, kick him so I can put him out of his mysery.
04:10:46 <CakeProphet> elliott: if it makes you feel better I can join -minecraft
04:10:55 <CakeProphet> you'll have to invite me first though.
04:11:05 <elliott> Done.
04:11:30 <CakeProphet> NOOOOOO HOW COULD YOU DO THIS
04:11:36 <CakeProphet> I LOVE MINECRAFT NOW I CAN'T TALK ABOUT IT EVER
04:11:38 * CakeProphet cries.
04:11:54 <elliott> <CakeProphet> elliott: as far as serialization format, what if you arranged objects so that their memory layout and serialized format are equivalent, except for references which would then need to be adjusted from the local RAM address space to a smaller relative-to-some-starting-point-in-stream-datagram-or-whatever address space.
04:12:03 -!- myndzi has quit (Ping timeout: 240 seconds).
04:12:10 <elliott> CakeProphet: Misconception: Logical memory addresses must map to physical RAM locations.
04:12:31 <elliott> (For example, the Linux kernel does not actually require you to have so many terabytes of RAM that you can load it at addresses starting with a 1.)
04:13:08 <pikhq> elliott: Exabytes
04:13:18 <elliott> Exabytes are terabytes :)
04:13:28 <CakeProphet> hmmm, well, the only requirement is that you can access those logical memory addresses so that you can get the data they refer to and then re-adjust addresses to a relative address space for the object stream.
04:13:41 <CakeProphet> they don't need to be physical RAM bytes. >_>
04:13:48 <CakeProphet> just bytes of some kind presumably.
04:14:00 <elliott> You're missing the point. Anyway, this doesn't even remotely solve my stated problem.
04:14:40 <CakeProphet> oh, well no it doesn't solve how you intend to communicate via network. but I recall you mentioning that you need a way to serialize objects, yes?
04:14:54 <CakeProphet> I mean, I assume you'll need to do that at some point anyway if you want @ to be distributed in any way.
04:15:10 <CakeProphet> and run on standard networking protocols.
04:16:04 <elliott> "but I recall you mentioning that you need a way to serialize objects, yes?"
04:16:05 <elliott> No.
04:16:13 <elliott> <CakeProphet> and run on standard networking protocols.
04:16:26 <elliott> Standard networking protocols are completely irrelevant here and are not helped by your proposed solution at all.
04:16:32 <elliott> Freenode doesn't talk in a serialised @ format./
04:16:46 <CakeProphet> ...Freenode? maybe I missed something here.
04:17:04 <elliott> IRC isn't a standard networking protocol?
04:17:06 <elliott> Cool.
04:17:38 <CakeProphet> well obviously inter-@ communication would work differently than non-inter-@ communication.
04:17:50 <CakeProphet> because other things only speak in bytestreams.
04:18:20 <elliott> <CakeProphet> and run on standard networking protocols.
04:18:26 <elliott> you were suggesting this solved standard protocols
04:18:27 <elliott> standard i.e.
04:18:28 <elliott> not @
04:18:35 <CakeProphet> my suggestion was merely a method of serialization for some kind of distributed @. not "here's the solution to your networking IO layer"
04:19:11 <elliott> Okay. I don't see the relevance.
04:19:55 -!- GreaseMonkey has quit (Quit: The Other Game).
04:20:08 <CakeProphet> ah okay, I was following up what was pikhq was saying previously. he said "devise a serialization scheme" and I went with that.
04:20:29 <elliott> Yeah, then I corrected him.
04:20:37 <CakeProphet> I would need to know more about @lang to know anything about what would make sense for basic send/receive bytestream stuff, which... I'm pretty sure you'll want.
04:21:18 <CakeProphet> at some level
04:21:19 <CakeProphet> >_>
04:21:40 <CakeProphet> see? that's helpful.
04:21:41 <CakeProphet> :P
04:21:50 <elliott> Well, the IO model is basically FRPish. So you would e.g. take the mouse input as a coordinate pair in as a Behavior Point or whatever, and then you could return a widget containing a Behavior Doc showing, e.g., the rendering of this pair as (42,-97) or similar.
04:22:11 <CakeProphet> what makes this awkward for a network?
04:22:12 <elliott> And you could have a button beside it which gives you an Event () firing when the button clicks, and wire that up to change the text of the position widget.
04:22:40 <elliott> CakeProphet: Because FRP is awkward for basically completely synchronous, and things where there aren't a large number of interdependent variables?
04:22:45 <elliott> s/synchronous/synchronous things/
04:23:24 <elliott> Something like iteratees would be nicer but it's not clear how to /integrate/ that with the FRP stuff to make it work together, and it's not clear what iteratees would even look like without an underlying monadic structure.
04:23:33 <elliott> And it still doesn't solve the issue of how you actually set up/terminate/etc. connections.
04:24:22 <CakeProphet> would a monad not make sense for that?
04:24:37 -!- SgeoN1 has quit (Read error: Connection reset by peer).
04:24:50 -!- SgeoN1 has joined.
04:25:18 <elliott> Plenty of things are "a monad"; presumably you mean something like the IO monad, which models imperative programs.
04:25:30 <CakeProphet> yes. but not as monolithic as the IO monad
04:25:33 <CakeProphet> just one for networking
04:26:02 <CakeProphet> what about a kind of coroutine thing?
04:26:10 <CakeProphet> well no
04:26:15 <elliott> To convince me of that, you would have to (a) demonstrate how it can be integrated with the FRP stuff (hint: this is incredibly non-trivial), (b) tell me how you think a "non-monolithic" "networking monad" could be done and how to cause the run-time system to execute it, how it fits in with other things blah blah blah which won't work because you can interleave networking and other IO, (c) basically no.
04:26:22 <CakeProphet> that doesn't solve the set up/terminate/etc.
04:26:36 <zzo38> There can be many kind of monad, as long as they follow the monad laws. IO monad is I/O actions. Maybe monad is a value or Nothing.
04:27:09 * CakeProphet scribbles down notes.
04:27:12 <CakeProphet> thanks zzo38.
04:27:28 <zzo38> I read somewhere, something about "successor monad", I think it is like Maybe monad.
04:27:36 <CakeProphet> elliott: well, are you sure FRP would be awkward?
04:28:04 <elliott> FRP's awkwardness for low-level bytestring networking is well agreed-upon. Which is why nobody does it.
04:28:07 <CakeProphet> I mean clearly the set up / terminate / etc stuffs are just different kinds of responses to an event.
04:28:38 <elliott> Uh, no.
04:32:35 <CakeProphet> okay...
04:32:41 <CakeProphet> well: good luck!
04:33:49 <zzo38> They ought to release the source-codes of ADOM, at least when they are dead if not right now, so that many people can correct the bugs in the software!
04:34:21 <CakeProphet> elliott: but it totally is just responses to events. there are just different kinds of connections.
04:34:30 -!- SgeoN1 has quit (Quit: Bye).
04:34:42 <CakeProphet> elliott: also the responses can be a sequence of responses.
04:35:57 <CakeProphet> if the syntax proves to be awkward perhaps some sort of syntax sugar would help? I don't really know much about FRP.
04:37:15 <elliott> that much is clear
04:38:04 <CakeProphet> maybe you actually want a lower-level IO monad similar to Haskell, to do low-level stuff
04:38:13 <CakeProphet> and then FRP for your UI?
04:39:39 <elliott> no, i don't. not above the @ll layer.
04:40:21 <CakeProphet> well, okay, what if the high-level protocols are done with FRP, implemented in a low-level monad layer?
04:40:37 <CakeProphet> that is magical.
04:40:37 <CakeProphet> >_>
04:42:02 <CakeProphet> or just a low-level FRP interface.
04:42:13 <CakeProphet> that is somewhat awkward. :P
04:43:49 * CakeProphet quietly reads about FRP in the background.
04:51:31 <CakeProphet> just make FRP not awkward and everything will be fine.
04:51:39 <elliott> FRP isn't awkward.
04:53:10 <CakeProphet> *not awkward for simple things like network IO
04:53:47 <elliott> It isn't about the simplicity.
04:55:35 <CakeProphet> okay.
05:01:35 -!- SgeoN1 has joined.
05:01:52 <SgeoN1> elliott sudo apt-get update
05:03:54 <SgeoN1> Zzz time
05:03:57 -!- SgeoN1 has quit (Client Quit).
05:08:16 <monqy> thanks
05:08:28 -!- MSleep has joined.
05:08:38 <elliott> hi monqy
05:08:41 <monqy> hi
05:08:50 -!- MSleep has changed nick to MDude.
05:08:54 <MDude> hi
05:09:34 -!- oerjan has quit (Quit: Goof night).
05:09:41 <CakeProphet> hi
05:10:10 <CakeProphet> monqy: what awesome thing are you doing?
05:10:23 <CakeProphet> what are some awesome things you aren't doing right now but are long-term awesome things.
05:11:00 <monqy> i am doing: eating garlic bread things
05:11:15 <monqy> i am not doing: having any good ideas on how to make a programming language to solve all of my problems
05:11:38 * quintopia goes and sits with monqy
05:11:48 <quintopia> you are an okay
05:11:52 <CakeProphet> monqy: maybe you could learn about all the languages.
05:11:55 <CakeProphet> that's my plan.
05:12:01 <monqy> even the bad ones???
05:12:03 <CakeProphet> a) learn all the languages b) make new language
05:12:05 <CakeProphet> yes. even those.
05:12:06 <quintopia> can i have a garlic?
05:12:08 <monqy> sure
05:12:37 <elliott> <monqy> i am doing: eating garlic bread things
05:12:41 <elliott> monqy is a lucky person..........
05:13:34 <monqy> it's to ease the pain of not knowing the taste of digestive biscuite
05:13:58 <CakeProphet> monqy: for example: perl
05:14:00 <CakeProphet> perl is good.
05:14:05 <CakeProphet> perl has good ideas and bad ideas.
05:14:05 <monqy> =/
05:14:06 <elliott> monqy: eat digeststive bsicuti
05:14:13 <monqy> digestive biscotti
05:14:23 <elliott> yes
05:14:24 <monqy> biscotti is good now i want biscotti and milk
05:14:35 <elliott> digestive biscotti and garlic milk
05:14:38 <monqy> mm
05:14:55 <monqy> I have never had garlic milk
05:15:20 <monqy> cakeprophet i have a big perl book and at one point in time i could even do things in perl but i forgot everything
05:15:37 <monqy> at this point in time i liked perl for being hilariously bad
05:15:44 <monqy> now I just trust that it is
05:15:46 <monqy> ;_;
05:17:16 <CakeProphet> monqy: what if your closed-mindedness is limiting your intake of programming language wisdom? you could just siphon the good things as you learn many not-perfect languages.
05:18:08 <monqy> going through not-so-good languages is tiresome but if you have a really nice inspiring elegant language i want to see it
05:18:24 <monqy> especially big not-so-good languages
05:18:55 <CakeProphet> perl
05:18:57 <monqy> and just taking in a lot of good things won't really help me with language design unless they are good things that work well with other good things I want
05:19:00 <monqy> perl is huge and ugly
05:19:17 <monqy> I'll read functional pearl sometime and hopefully that will impart enough of the good ideas
05:19:27 <monqy> er
05:19:29 <monqy> functional perl
05:19:30 <monqy> oopse
05:19:38 <CakeProphet> perl itself isn't very big, I don't think.
05:19:44 <monqy> huuuuge
05:19:47 <CakeProphet> maybe with all the other shit that is written in perl attached.
05:19:56 <monqy> it's big for me, monqy
05:20:31 <CakeProphet> monqy: do you know C#?
05:20:42 <monqy> no is it good
05:20:46 <CakeProphet> no
05:20:54 <monqy> does it have any good ideas
05:21:00 <CakeProphet> yes.
05:21:04 <monqy> what are the good ideas
05:21:10 <elliott> monqy: do you mean higher-order perl
05:21:16 <monqy> elliott: yes that
05:21:21 <monqy> im bad at rememebering names
05:21:29 <CakeProphet> I thought it was functional perl as well.
05:21:30 <monqy> it's in my reading pile
05:21:35 <monqy> along with everything else
05:21:57 <CakeProphet> monqy: hm... good ideas.
05:22:05 <CakeProphet> well they're all only good in the context of Java-style OO
05:22:10 <monqy> oh
05:22:12 <CakeProphet> ...yeah
05:22:13 <monqy> well that won't help me then
05:22:54 <CakeProphet> the handling of pass by reference vs. pass by value is good.
05:23:04 <CakeProphet> but, again, this is in the context of an imperative language.
05:23:45 <monqy> yeah monqy language will not be imperative
05:24:14 <CakeProphet> monqy: io is interesting.
05:24:20 <CakeProphet> more imperative oo stuff though
05:24:30 <elliott> io is shit
05:24:52 <monqy> i want to learn a dependently typed language sometime I think it would be a good thing to know
05:25:17 <monqy> I also want to learn a some good category theory
05:25:19 <CakeProphet> what impressed me in particular was how it handled call-by-need in a highly dynamic language.
05:25:30 <monqy> oh?
05:25:54 <elliott> monqy: (it just passes ASTs directly)
05:25:55 <CakeProphet> yes oh
05:26:00 <elliott> (and the default function interface just evaluates them)
05:26:02 <elliott> (it's really slow)
05:26:04 <elliott> (and ugly)
05:26:18 <CakeProphet> elliott: but makes total sense in a dynamic language. :P
05:37:29 <zzo38> Use sleight of hand to deal yourself the 2,3,4,5,7 (not all of the same suit), and your opponent the 2,3,4,5,8 (again, not all of the same suit). Ask your opponent whether they want to bet on whether they have a better or worse poker hand than you. If they are correct, they don't have to pay. If they are wrong, they have to pay double. They can choose not to bet at all, paying the normal price.
05:38:17 <zzo38> (Tell them the rules before you deal the cards, but they do not have to choose to bet until after they can see their cards.)
05:39:04 -!- MDude has changed nick to MSleep.
05:42:46 <zzo38> What is your opinion of this game?
06:08:20 -!- hagb4rd has joined.
06:18:51 -!- elliott has quit (Remote host closed the connection).
06:30:11 <quintopia> i know an old magic trick that looks like that, except it used different cards, and they could be dealt randomly, as long as you made sure the opponent got the 9
06:30:30 <quintopia> anyway that game sounds evil.
06:33:39 <zzo38> What was the magic trick?
06:36:09 <quintopia> you get together the 9-K of H and the 10-A of S. enough cards for two hands. as long as the spec got the nine, they lost.
06:36:24 <quintopia> even if they got the A
06:38:06 <zzo38> What were the rules? Is it poker hands?
06:39:45 <zzo38> I remember, at Boston Pizza, someone did a card trick, dealt the cards in some way, four cards to each player, two on the table face-up, and asked me to select the one that would give me the better poker hand. He took the other and won. But when the cards were revealed, I can see he would have won regardless of which card I selected. (Nothing was bet on this game, however.)
06:44:21 -!- elliott has joined.
06:51:22 -!- DCliche_ has quit (Quit: You are now graced with my absence.).
06:54:40 <quintopia> yeah poker hands
06:55:17 -!- nys has quit (Quit: 2:54 AM).
07:12:55 -!- elliott has quit (Quit: Leaving).
07:20:16 <CakeProphet> monqy: Ruby is not incredibly bad.
07:20:51 <monqy> ruby is bad. is there anything worth knowing about it?
07:21:21 <CakeProphet> surely it's a step-up from your average OO lang
07:21:42 <CakeProphet> it even supports functional style to some degree.
07:23:18 <CakeProphet> also as far as OO goes the use of mixins and partial classes allows more code re-use than silly C++/Java inheritance
07:24:12 <monqy> sounds boring
07:24:56 <CakeProphet> it certainly combines object-oriented and higher-order functions nicely.
07:25:42 <CakeProphet> but I'm starting to dislike dynamic typing more and more for anything other than simple scripts.
07:26:34 <CakeProphet> I think static typing is The Way Of The Future.
07:26:38 <CakeProphet> well...
07:26:47 <CakeProphet> I would be interested to see if a hybrid is feasible.
07:27:12 <monqy> good thing i dislike object oriented
07:27:32 <monqy> and i dislike the absence of static typing
07:27:32 <CakeProphet> objected oriented itself isn't bad.
07:27:39 <CakeProphet> it's just that most incarnations of it are very bad
07:28:55 <CakeProphet> I think instead of inheritance it makes more sense to have a sort of prototype OO with combinators.
07:29:29 <CakeProphet> the difficult part is making it efficient and statically typed.
07:33:57 <CakeProphet> I guess to make it efficient at runtime you'd want to compute some of the object combinators at compile-time.
07:39:00 <CakeProphet> monqy: I've occasionally considered the idea of "static duck typing" though I don't really know if type inference is possible.
07:40:16 <CakeProphet> actually I guess typeclasses do that better...
07:40:51 <CakeProphet> ah it can be generalized...
07:41:15 <monqy> you're silly
07:42:01 <monqy> how would static duck typing even work and what good would it do
07:42:04 <monqy> duck typing is just awful
07:42:36 <CakeProphet> where you can make functions polymorphic on arbitrary objects as long as they implement some set of methods. but if you provide constraint-level operators you can do basically set operations on these sets of methods. not sure what that would achieve though.
07:42:46 <CakeProphet> also: not as awesome as multi-parameter typeclasses
07:44:50 <CakeProphet> I suppose the main difference between Haskell's typeclasses and an OO system would be that there are no instance declarations
07:45:13 <CakeProphet> you just define the methods and if they match then they're in that particular "typeclass"
07:46:00 <CakeProphet> so defining a method with a particular name and a particular type could potentially match multiple typeclass equivalents.
07:47:09 <CakeProphet> but still it lacks the sort of type relations that multi-param typeclasses allow.
07:50:56 <CakeProphet> hmmm it would be nice if you could do things like create isomorphisms between those typesets
07:51:53 <CakeProphet> no wait, nevermind :P
07:51:57 <CakeProphet> that doesn't work here.
07:52:49 <CakeProphet> you can't magically determine what happens when you a type is supposed to be isomorphic to all monoids ever, but you specifically implement two monoids.
07:52:56 <CakeProphet> unless you explicitly declare the mapping.
07:53:07 <CakeProphet> s/you a/your/
07:58:29 <CakeProphet> hmmm yeah I definitely think it makes more sense to have the type combinators at compile-time...
07:59:13 -!- copumpkin has quit (Ping timeout: 252 seconds).
07:59:39 -!- copumpkin has joined.
07:59:56 <CakeProphet> "this type is the asymmetric union of A and B (sets of methods that already exist), and this anonymous set that I'm just now defining that contains some new stuff"
08:01:12 <CakeProphet> asymmetric union being kind of like disjoint union, except you just ignore elements that originate from one set if an equivalently named element originates from the other.
08:01:25 <CakeProphet> so you can resolve situations where two types define a method with the same name, basically.
08:02:25 <CakeProphet> that's basically like inheritance, but you could have other fun combinators. basically a lot of set operators.
08:03:45 <CakeProphet> I wonder if you could still do the | union thingy in Haskell on top of that....
08:03:53 <CakeProphet> that hurts my brain to think about.
08:04:02 <CakeProphet> I think that messed up all the type constraint stuff.
08:06:09 <CakeProphet> yeah that doesn't work. :(
08:06:40 <CakeProphet> well it could work maybe, I dunno.
08:11:27 <CakeProphet> monqy: I've scared you away haven't I.
08:12:07 <monqy> :(
08:14:14 <CakeProphet> type X = A *> B <* (C | D)
08:15:06 <CakeProphet> everything in A, and everything in B (the > indicates preference towards the methods in B), and either all of this stuff in C or all of this stuff in D (exclusive or kind of)
08:16:20 <CakeProphet> and any object matching this is considered an X.
08:18:25 <CakeProphet> you could also do stuff like relative complement or symmetric difference (no clue why you'd want symmetric difference though)
08:18:48 <CakeProphet> relative complement would be useful to say "I'll take the methods this type defines, excluding these"
08:19:13 <CakeProphet> but I'm not sure that | actually makes sense.
08:21:50 <CakeProphet> monqy: does any of that make sense? :P
08:22:24 <monqy> maybe
08:22:57 <monqy> i can see what you're doing but I can't see why you're doing it or how you're going to implement it, or if it even works at all
08:23:03 <monqy> so
08:23:07 <CakeProphet> maybe | (which essentially is supposed to work like Haskell's | ) actually doesn't make sense with these semantics.
08:23:27 <monqy> do you know type theory? I sure don't. it's on my list of things to learn.
08:23:29 <monqy> crys
08:23:39 <CakeProphet> yeah this isn't really type theory.
08:24:11 <CakeProphet> monqy: the key to all of this working would be that the sets of things that any object contains has to be known at compile-time
08:25:05 <CakeProphet> also I have no clue how primtives would work.
08:25:06 <monqy> oh, another thing: error reporting is probably going to be hell
08:25:18 <CakeProphet> type X = Int | Char -- what?
08:25:40 <monqy> hm9$?
08:26:34 <CakeProphet> so I think either a distinction has to be made, some magic needs to happen, or primtive types have to integrate nicely into this picture.
08:26:53 <CakeProphet> i.e. these are not actually types that I'm defining, but typeclasses, or something.
08:27:35 <monqy> ??????
08:28:13 <CakeProphet> so instead of Int it would be Num... that makes more sense. Num has a defined set of operations.
08:29:08 <CakeProphet> but, that doesn't really address primtive types, it just hides them away for me to deal with later. :P
08:30:25 <CakeProphet> wow I've typo'd primitive successfully three times now.
08:30:33 <CakeProphet> impressive.
08:33:40 <CakeProphet> monqy: well the reason I guess is to get some of the benefits of duck typing in a statically typed system.
08:33:57 <monqy> what benefits of duck typing
08:34:45 <CakeProphet> monqy: try to imagine that you like duck typing, now think of all the benefits. :P
08:35:19 <monqy> try imagining you like punching yourself really hard
08:35:39 <CakeProphet> oh look I can just pass any object here as long as it defines this interface, and you don't have to explicitly declare that it's part of this interface.
08:35:52 <CakeProphet> that's pretty much the only benefit I can think of. :P
08:36:04 <CakeProphet> but no that's not the WHOLE POINT of the language I'm considering.
08:36:22 <CakeProphet> just a piece. I guess the main idea is to mix the good parts of prototype OO with statically compiled functional languages.
08:36:42 <monqy> explicit declaration is good. it's documentation and it prevents stupid errors
08:36:56 <CakeProphet> that's certainly true.
08:37:17 <monqy> there would have to be a significant expressivity benefit to convince me, and even then...
08:37:57 <CakeProphet> still I think there are situations where types are defined without knowledge of another interface, and that type fits perfectly into said interface but the designer hadn't thought of it or it didn't exist or wasn't relevant.
08:38:15 <CakeProphet> I guess instances work perfectly for that situation... so... :P
08:38:35 <CakeProphet> may be a fruitless effort I'm going for, here.
08:39:27 <CakeProphet> but there are other things you could do with such a system.
08:39:39 <CakeProphet> when you consider composing objects together.
08:39:42 <monqy> hm?
08:40:02 <CakeProphet> perhaps there's expressivity gains there? I dunno.
08:40:19 <CakeProphet> a minor benefit: easier to manage namespace creep.
08:41:08 <monqy> surely you can solve that, at least to some degree, in better ways?
08:41:15 <CakeProphet> never.
08:41:16 <CakeProphet> :)
08:43:26 <CakeProphet> it would be interesting to have an operator which combined two objects together in such a way that they remain distinct but become a single entity with the combined operations of both.
08:44:17 <CakeProphet> the operations of the previous object would apply to the state of that object only, any shared operations apply to both.
08:44:38 <CakeProphet> you could call it OBJECT FUSION. MUAHAHAHAHA
08:47:04 <CakeProphet> also you could do things like map and fold in this manner, without actually calling a map or fold
08:47:08 <CakeProphet> not that you'd necessarily want to.
08:47:10 <CakeProphet> but you could.
09:03:02 -!- Phantom_Hoover has joined.
09:48:51 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
09:58:55 -!- Ngevd has joined.
09:59:00 <Ngevd> Hello!
10:00:35 <Ngevd> Hello, fungot
10:00:35 <fungot> Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes
10:00:39 <Ngevd> ^style
10:00:39 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
10:01:01 <Ngevd> ^echo wiki spam
10:01:01 <fungot> wiki spam wiki spam
10:01:25 -!- Phantom_Hoover has joined.
10:04:05 -!- BeholdMyGlory has quit (Ping timeout: 258 seconds).
10:04:07 -!- Behold has joined.
10:06:46 <Ngevd> Morning, Phantom_Hoover
10:06:53 <Phantom_Hoover> Or is it?
10:06:57 <Phantom_Hoover> Wait, yes it is.
10:07:03 <Phantom_Hoover> Wow, I got up at a reasonable time.
10:09:32 -!- sebbu2 has changed nick to sebbu.
10:17:35 -!- Ngevd has quit (Ping timeout: 252 seconds).
10:44:18 -!- monqy has quit (Quit: hello).
10:51:08 <augur> http://gizmodo.com/5859081/why-is-china-building-these-gigantic-structures-in-the-middle-of-the-desert
11:29:04 <Jafet> "If Lydia dies before the marriage can take place, her body will turn up at the temple, causing you to fail the wedding ceremony mini-mission. The priests will then ask you to leave, and the bride or groom will storm off, angry. [...] The wedding will take place the following day at the same time. To avoid failing the quest a second time, use Unrelenting Force to fire the corpse from out the way of the door."
11:29:45 <Jafet> The Skyrim engine must be incredibly detailed to even allow such a bug...
11:34:35 -!- Vorpal has joined.
11:38:13 -!- FireFly has quit (Changing host).
11:38:13 -!- FireFly has joined.
11:48:55 -!- derrik has joined.
12:08:53 <oklopol> it must be able to move lydia when the wedding ceremony starts without checking if she's alive?
12:09:52 <oklopol> yeah i don't know any other contemporary game engine where you can move objects
12:10:15 <oklopol> and i assume the priests ask you to leave because you killed someone
12:10:39 <oklopol> the usual punishment for murder
12:11:08 <derrik> punishment for murder is to leave?
12:11:59 <oklopol> yes, no one wants a murdering morris in their house. they're really annoying.
12:13:02 <derrik> murderers are annoying?
12:13:27 <derrik> when you are murdered, where is the annoyance?
12:13:28 <oklopol> eh
12:13:45 <oklopol> it's very likely that they kill someone else first
12:13:56 <oklopol> say you're talking to someone
12:14:11 <oklopol> and mister murderpants decides to assrape them with a chainsaw or something
12:14:30 <oklopol> how annoying would that be?
12:14:42 -!- Ngevd has joined.
12:14:57 <oklopol> you're like midsentence and BOOM cockroach in the brain
12:15:30 <oklopol> (that would be an annoying way to die btw)
12:15:31 <Ngevd> How much sense does that make in context?
12:15:46 -!- derdon has joined.
12:15:49 <oklopol> Ngevd: perfect sense
12:15:53 -!- derrik has quit (Quit: gtg).
12:15:55 <oklopol> so perfect
12:16:14 <oklopol> derrik was so annoyed even thinking about this that he had to go
12:16:56 -!- Zuu has joined.
12:16:56 -!- Zuu has quit (Changing host).
12:16:56 -!- Zuu has joined.
12:30:04 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:30:18 * quintopia oklopol
13:11:15 -!- zzo38 has quit (Remote host closed the connection).
13:22:46 <Phantom_Hoover> oklopol, you are a hero of our times.
13:22:58 <Phantom_Hoover> Mind doing the same to tiffany at some point?
13:28:24 -!- MSleep has changed nick to MDude.
13:28:59 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
15:01:10 -!- Behold has changed nick to BeholdMyGlory.
15:06:04 -!- MDude has quit (Ping timeout: 240 seconds).
16:01:18 -!- derrik has joined.
16:09:45 <oklopol> http://cache.gawker.com/assets/images/comment/4/2011/11/a651e5ed5d97375a733ca8f62ca9643b/original.jpg what xD
16:10:15 <oklopol> here's an overlay of a penis on a seven fingered horse, conspiracy?
16:11:38 <oklopol> i love how not even one of the lines match a street
16:17:19 -!- Nisstyre has quit (Remote host closed the connection).
16:18:21 <Phantom_Hoover> I think one of them matches a bit of park?
16:18:33 <Phantom_Hoover> The Chinese are very interested in destroying American greenery.
16:21:57 -!- Nisstyre has joined.
16:30:48 <Phantom_Hoover> http://en.wikipedia.org/wiki/Kinect_Disneyland_Adventures
16:30:54 <Phantom_Hoover> Oh, how the mighty have fallen.
16:31:51 <Phantom_Hoover> Dammit, elliott's not here.
16:38:13 <oklopol> apparently they are still keeping einstein's brain
16:38:27 <oklopol> i have my doubts as to whether there was anything special about the dude
16:38:28 <Phantom_Hoover> Well, FSVO 'keeping'.
16:38:41 <Phantom_Hoover> Cutting it up doesn't really count in a lot of people's eyes.
16:38:51 <oklopol> i mean, more than say brad pitt's brain or how ever his name is spelled
16:39:00 <oklopol> however
16:39:42 <Phantom_Hoover> Holy crap I never realised that Elrond was Agent Smith????
16:42:31 <oklopol> i hate the internet
16:42:35 <Phantom_Hoover> oklopol, can we preserve your brain?
16:43:06 <oklopol> i'm not planning on dying
16:43:21 <Phantom_Hoover> I don't see the relevance?
16:44:14 <oklopol> i will use my brain forever and ever, so i will just preserve it myself
16:44:21 <oklopol> so yes. or no. it's irrelevant.
16:44:52 <Phantom_Hoover> Can we insure your brain against accidental damage?
16:45:05 <oklopol> hmm
16:45:36 <oklopol> dunno, would be kind of an interesting challenge to be a retard
16:45:48 <oklopol> well. a very rich retard i guess
16:45:52 <oklopol> so yeah you can insure it
16:46:48 <Phantom_Hoover> OK this is good.
16:47:31 <oklopol> i'd just go around all like hurp durp they call me an oklopol
16:47:41 <oklopol> here's some moneys for ya
16:48:06 <oklopol> and everyone would be like oh all this money makes your skin seem so soft and seducing
16:48:21 <oklopol> and i'd be like hurp durp what's a seducing
16:48:33 <oklopol> but secretly
16:48:36 <oklopol> i wouldn't even care-
16:48:39 <oklopol> *.
16:48:53 <Phantom_Hoover> You seem to have this whole brain damage thing planned out.
16:49:04 <oklopol> apparently.
16:49:59 <Phantom_Hoover> Were I an insurance person, I would be suspicious.
17:02:06 -!- MSleep has joined.
17:17:01 -!- derrik has quit (Quit: gone).
17:28:35 -!- ais523 has joined.
17:28:52 -!- Nisstyre has quit (Ping timeout: 240 seconds).
17:29:43 <Phantom_Hoover> "Robots have replaced slaves[citation needed] in the assistance of performing those repetitive and dangerous tasks which humans prefer not to do,"
17:30:01 <Phantom_Hoover> — Wikipedia, apparently oblivious of the last century.
17:30:11 <Gregor> lolwut
17:30:17 <Gregor> Can has link?
17:30:42 -!- monqy has joined.
17:36:30 <pikhq> Funny, here I was thinking it was "underpaid labor" that replaced slaves.
17:40:12 -!- sebbu2 has joined.
17:40:12 -!- sebbu2 has quit (Changing host).
17:40:12 -!- sebbu2 has joined.
17:42:54 <yiyus> /names
17:43:09 <yiyus> ups
17:43:10 -!- sebbu has quit (Ping timeout: 252 seconds).
17:52:55 -!- sebbu3 has joined.
17:52:55 -!- sebbu3 has quit (Changing host).
17:52:55 -!- sebbu3 has joined.
17:53:12 -!- sebbu2 has quit (Read error: Connection reset by peer).
17:54:24 -!- elliott has joined.
18:01:52 <ais523> hi elliott
18:01:58 <elliott> hi ais523
18:02:02 <oklopol> hi both
18:02:31 <pikhq> Hi troth
18:03:07 -!- TheJimmyJames1 has joined.
18:03:47 -!- TheJimmyJames1 has quit (Read error: Connection reset by peer).
18:03:57 <ais523> wow at the levels of spam on esolang recently
18:05:02 <elliott> "I don't really have an opinion, so I'm going to argue against deletion."
18:05:06 <elliott> ais523: does this sentence make any sense to you?
18:05:26 <ais523> yes; I can parse it and it semantically makes sense
18:05:46 <oklopol> i don't have an opinion, and here it is
18:05:55 <ais523> it's a little inconsistent, but I can mentally expand it to "I'm an inclusionist and think pages shouldn't be deleted without a good reason"
18:06:52 <elliott> ais523: there needs to be a good word to distinguish "has lax notability standards" and "thinks pages should be kept unless proven otherwise"
18:07:12 * elliott suspects most deletionists are aligned against the first position, not the latter
18:07:12 <oklopol> so i suppose he was very confident about his lack of opinion being correct. he would've thought it should be removed if it was that bad.
18:07:17 -!- TheJimmyJames1 has joined.
18:10:41 -!- Slereah has quit (Ping timeout: 252 seconds).
18:11:14 -!- Slereah_ has joined.
18:11:22 <ais523> elliott: I actually think deletionism is a result of biased sampling
18:11:29 <elliott> `@ TheJimmyJames1 ? welcome
18:11:31 <ais523> if you spent a while on Wikipedia's newpage patrol, you'd become a deletionist too
18:11:35 <HackEgo> TheJimmyJames1: 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
18:11:38 <elliott> ais523: heh
18:11:47 <ais523> I am serious about this, it almost happened to me
18:11:56 -!- Nisstyre has joined.
18:12:14 <elliott> ais523: Wikipedia really needs to find a way to get its maintanence work done without doing it by making people obsessive :P
18:12:31 <elliott> "Category:Candidates for speedy deletion is currently 202% backlogged."
18:12:46 <Phantom_Hoover> elliott, just outsource it to the general population.
18:12:52 <ais523> heh, cleaning out CSD is /typically/ really easy
18:13:03 <ais523> when it isn't, it's because overeager taggers are tagging all sorts of stuff for deletion that doesn't actually delete it
18:13:09 <ais523> my guess is that A7 has got out of hand again
18:13:16 <elliott> "The queue at Special:NewPages is currently 20.33 days." apparently this only counts as defcon 4
18:13:17 <Phantom_Hoover> Every now and then you get a popup requiring that you do maintenance.
18:13:24 <elliott> I guess defcon 1 is when it's ten years backlogged
18:13:37 <elliott> Administrators: Please do not delete this category even if it is empty!
18:13:37 <elliott> This category may be empty occasionally or even most of the time.
18:13:37 <elliott> --Category:Candidates for speedy deletion
18:13:43 -!- sebbu3 has changed nick to sebbu.
18:13:55 <elliott> ais523: which one is A7?
18:13:59 <ais523> no, defcon 1's when there's a concerted amount of vandalism by people who know what they're doing, that also can't be cleaned up in an automated way
18:14:06 <ais523> elliott: approximately, no assertion of notability
18:14:12 <elliott> ais523: no, newpages defcon
18:14:20 <ais523> oh, there's a newpages defcon now?
18:14:20 <elliott> there's so many defcons!
18:14:27 <elliott> CSD defcon and newpages defcon at least
18:14:33 <ais523> presumably that's much the same thing, except for vandals creating pages
18:14:45 <elliott> ais523: no, I think it's just based on the backlog
18:14:46 <ais523> to me, that sounds like {{adminbacklog}} not {{defcon}}
18:14:47 <elliott> given the captions
18:15:01 <elliott> they need a defcon defcon so we can know when the defcons are getting dangerously high
18:15:51 <elliott> eh, there's only 44 pages in CSD
18:16:04 <elliott> http://en.wikipedia.org/wiki/User:DialTel good
18:17:47 -!- Slereah_ has quit.
18:23:19 -!- azaq23 has joined.
18:31:06 -!- zzo38 has joined.
18:32:58 -!- Slereah_ has joined.
18:37:50 -!- TheJimmyJames1 has quit (Quit: Leaving.).
18:45:29 -!- copumpkin has changed nick to TheWickedChicken.
18:47:38 <elliott> ais523: yikes
18:47:50 <elliott> ais523: all our external links headings are wrong
18:47:57 <elliott> because of Graue
18:48:02 <zzo38> Tell me if there is something you see wrong with this program which I may have missed: http://sprunge.us/LJeL
18:48:25 * elliott wonders how one can judiciously decide to disregard a policy after someone already starts mass-editing a fix to it
18:48:34 <zzo38> I think it must be wrong because it is out of memory even if the module is compiled, so I must have written it wrong.
18:48:53 <elliott> zzo38: did you use -O2?
18:49:05 <elliott> you need -O at least to get basic strictness analysis and -O2 can help as well
18:49:52 <elliott> > type TextString = [Either Int32 Word32];
18:49:53 <lambdabot> <no location info>: parse error on input `type'
18:49:58 <elliott> zzo38: you don't want to store long strings in that
18:50:17 <elliott> it's full of boxes and lazy, so it'll eat up tons of memory
18:51:09 <zzo38> elliott: I tried -O and -O3
18:51:34 <elliott> -O3 is meaningless, it means -O2
18:51:44 <elliott> well, it's not meaningless :) but it's silly
18:51:54 <elliott> zzo38: anyway, I suggest
18:52:15 <elliott> data TextChar = Blah Int32 | Bleh Word32 deriving (Eq, Show, ...) -- with better names for the constructors
18:52:16 <elliott> then
18:52:19 <zzo38> The function "withDVI" which is causing the out of memory never uses the "TextString" type.
18:52:26 <elliott> type TextString = Vector TextChar
18:52:38 <elliott> zzo38: how did you determine that is what runs out of memory? profiling?
18:53:51 <zzo38> Because I compiled the program and then loaded the compiled file and then used: tenrm <- loadFont (Left 1000) "f:/program files2/MiKTeX/fonts/tfm/public/cm/cmr10.tfm" withDVI "test1.dvi" (\_ _ -> return tenrm) 0 (\_ p -> return $ Just (0, pageNumbers p))
18:55:16 <elliott> > withDVI_page_ :: (Word32 -> ByteString -> IO Font) -> s
18:55:16 <elliott> > -> (s -> Page -> IO (Maybe (s, t))) -> DocStat -> Word8 -> IO [t];
18:55:17 <lambdabot> Not in scope: type constructor or class `ByteString'Not in scope: type cons...
18:55:17 <lambdabot> <no location info>: parse error on input `->'
18:55:19 <elliott> zzo38: will the resulting list be long?
18:55:30 <elliott> because this produces no elements until the whole thing has been calculated, and builds up thunks in memory in the meantime
18:55:53 <zzo38> The file "test1.dvi" has only a single page, so the resulting list will have only one element, which is its page number.
18:56:16 <elliott> zzo38: have you tried profiling yet?
18:56:27 <elliott> http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/profiling.html
18:56:34 <zzo38> Will that display exactly what part runs out of memory?
18:57:05 <elliott> it's not possible to determine "exactly which part" since that depends on when the allocator gives up and runs out of heap! but it will help you see which parts of the program allocate more than others
18:58:25 <elliott> if the +RTS -p profiling demonstrated there doesn't help, then http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/prof-heap.html might
18:58:31 <elliott> but try the first page first
18:59:18 <zzo38> Do I need to compile the main module too, to make that work, or can it be used with GHCi if the Graphics.DVI module is compiled and the main commands are entered interactively?
19:00:03 <elliott> You need a Main module, but you can just do:
19:00:11 <elliott> main = do { tenrm <- loadFont (Left 1000) "f:/program files2/MiKTeX/fonts/tfm/public/cm/cmr10.tfm"; withDVI "test1.dvi" (\_ _ -> return tenrm) 0 (\_ p -> return $ Just (0, pageNumbers p)) }
19:00:16 <elliott> err, >>= print at the end of that :)
19:01:16 <zzo38> OK. I can try that.
19:02:30 <elliott> pikhq: I had an idea to make @'s allocator superfast but it won't work :(
19:02:37 <pikhq> Oh?
19:03:50 <elliott> pikhq: Well, a typical allocator would look like \size -> { heapPtr += size; if (heapPtr > heapMax) jump to gc stuff; return (heapPtr - size) }.
19:04:21 <elliott> pikhq: I was thinking, what if I just made it \size -> { x = heapPtr; heapPtr += size; return x }, and aligned things so that the heapMax was on a hardware page boundary?
19:04:37 <elliott> pikhq: Then it'd cause a page fault when the overflow would occur when the memory is first accessed.
19:04:44 <elliott> And I could fix things up from the handler.
19:04:47 <elliott> So allocation would be branch-free.
19:05:21 <elliott> pikhq: The problem is that I'd have to have a free page after it in all circumstances, and obviously I can't just say that the @ abstract machine-local 64-bit address space only uses every other page, because that's ridiculous and means you can't have allocations bigger than a page.
19:05:56 <elliott> Which sucks, because a two-instruction (mov + add), branchless allocator would be awesome.
19:07:17 -!- azaq23 has quit (Quit: Leaving.).
19:08:47 <pikhq> elliott: Actually, it's a free page after each *heap*.
19:09:07 <elliott> Hmm, well, true.
19:09:26 <elliott> pikhq: Still, it sucks to wall off large parts of the address space for an optimisation.
19:09:51 <pikhq> This doesn't *quite* work, though, because you'll need to make sure your allocation isn't bigger than a free page + what's remaining.
19:10:19 <elliott> pikhq: Well, right. Most allocations are smaller than 4 megabytes.
19:10:25 <pikhq> So you'd probably need to make the allocator select a heap of appropriate size first.
19:10:37 <elliott> Hopefully static analysis could determine whether an allocation is always less than 4 megabytes in the common case...
19:10:40 <elliott> Since most allocations are constant-sized.
19:10:51 <pikhq> Yeah, that is definitely something static analysis could do.
19:11:01 <pikhq> Not much different than GCC's memcpy optimisations.
19:12:20 <zzo38> Using those options didn't work. I got "out of memory" and an empty .prof file
19:13:05 <elliott> zzo38: huh. try the http://haskell.org/ghc/docs/7.0.4/html/users_guide/prof-heap.html style of profiling? Alternatively, just terminate the program before it runs out of memory (with Ctrl+C or similar)
19:13:10 <elliott> that'll make the .prof be generated
19:14:52 <zzo38> It runs very fast; there is no time for Ctrl+C
19:15:25 <elliott> zzo38: You could try running it on even smaller inputs so that it doesn't run out of memory and produces a report that you can optimise memory use based on.
19:18:15 <zzo38> I tried it with only an "X" on the page; that also runs out of memory. Trying it with only a rule (no text, not even the page number) succeeds.
19:18:41 <elliott> Well, look at the profiling report for that then :-) Beyond that I don't really have much idea; ask #haskell.
19:23:30 -!- SgeoN1 has joined.
19:24:21 -!- derrik has joined.
19:31:43 -!- pagnol has joined.
19:31:54 <elliott> `@ pagnol ? welcome
19:31:56 <HackEgo> pagnol: 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
19:35:45 <SgeoN1> Hard drive came
19:36:07 <SgeoN1> No internal screws though, and even if I had, I don't see a place to put them
19:36:26 <elliott> what hard drive
19:36:40 -!- zzo38 has left.
19:38:18 <elliott> :t catMaybes >=> listToMaybe
19:38:19 <lambdabot> Couldn't match expected type `[c]' against inferred type `Maybe a'
19:38:19 <lambdabot> In the second argument of `(>=>)', namely `listToMaybe'
19:38:19 <lambdabot> In the expression: catMaybes >=> listToMaybe
19:38:23 <elliott> :t catMaybes
19:38:24 <lambdabot> forall a. [Maybe a] -> [a]
19:38:30 <SgeoN1> New hard drive for my old laptop which I've been using
19:38:32 <elliott> :t \xs -> listToMaybe (catMaybes xs)
19:38:33 <lambdabot> forall a. [Maybe a] -> Maybe a
19:38:44 <elliott> oh, hmm
19:38:46 <shachaf> elliott: Foiled again!
19:38:53 <elliott> shachaf: hi
19:39:01 <shachaf> elliott: Good afternoon.
19:39:14 <elliott> good afternoon to be foiled
19:39:21 <shachaf> Did you think you would find an actual use case for (>=>)?
19:39:34 <shachaf> That operator is forever going to be "nice to express the monad laws in" and nothing more.
19:39:58 <elliott> shachaf: I use (>=>) with... semi-relative frequency.
19:40:25 <shachaf> Semi-relative to zero?
19:40:26 <elliott> shachaf: See, I get "f x = doCrapWith x >>= processMagic", and zomg!
19:40:51 <shachaf> zomg, indeed. I couldn't have put it better myself.
19:41:17 <SgeoN1> Is it bad that I tend to think in terms of do notation, then, if simple, translate to operators?
19:42:02 <elliott> Sorry, we're not qualified Haskell therapists.
19:42:23 <shachaf> Tell us more about you tend to think in terms of do notation, SgeoN1.
19:48:30 -!- sebbu has quit (Ping timeout: 276 seconds).
19:52:32 -!- TheWickedChicken has changed nick to copumpkin.
19:58:41 <pikhq> SgeoN1: YES, YE SHALL BE LYNCHED
20:01:19 -!- sebbu has joined.
20:01:19 -!- sebbu has quit (Changing host).
20:01:19 -!- sebbu has joined.
20:04:03 <elliott> pikhq: I guess whether it's OK or not to have a free page after every heap depends on how big heaps will be.
20:05:01 <elliott> (Shouldn't it be "pool", not heap?)
20:06:57 -!- azaq23 has joined.
20:13:34 <pikhq> Probably.
20:13:59 -!- zzo38 has joined.
20:14:18 <elliott> I mean, an @ system only has one heap.
20:14:28 <elliott> (That actually might be the definition of an @ system.)
20:14:59 <SgeoN1> Well, this is a bad sign
20:16:58 <shachaf> elliott: I could've sworn that the total number heaps that all @ systems in existence have is zero.
20:17:18 <elliott> shachaf: You're a bad person.
20:17:31 <shachaf> :-(
20:17:40 * shachaf would, like, totally use @.
20:18:22 <elliott> OK you are granted minimum decency status.
20:18:47 <shachaf> ...If it only had a better name.
20:19:08 <pikhq> Fortunately, "@" is a placeholder.
20:19:23 <elliott> shachaf: @ ISN'T THE NAME
20:19:26 * elliott kills everyone
20:19:38 <shachaf> elliott: So what's "@"?
20:19:50 <elliott> shachaf: A macro for the English language that expands to the name of @.
20:20:09 <elliott> shachaf: It's just that nobody knows what it is yet, so whenver you use it, your sentence gains an indeterminate amount of words, letters, and sense.
20:20:09 <shachaf> elliott: Why didn't it expand just then when you said "@ ISN'T THE NAME"?
20:20:20 <elliott> shachaf: Lisp macros don't expand when you type out a use of them in Emacs!
20:20:25 <elliott> Oh, I see.
20:20:29 <elliott> Umm, use-mention distinction.
20:20:33 <elliott> Or: I was just lying! For FUN!
20:20:39 <elliott> Fuck you I hate you.
20:20:41 -!- elliott has left ("BAH").
20:21:27 -!- elliott has joined.
20:21:35 <shachaf> @hug elliott
20:21:36 <lambdabot> http://hackage.haskell.org/trac/ghc/newticket?type=bug
20:21:44 <elliott> I'm the worst bug.
20:22:26 <shachaf> elliott is just afraid of picking a name because if it's a suboptimal name, the system won't be perfect anymore.
20:22:30 <shachaf> Unlike the rest of @.
20:23:05 <elliott> shachaf: See, you think you're joking, but no, that's literally the exact reason I won't pick a name.
20:23:17 <elliott> shachaf: (Although I don't think @ is perfect, I'm just really indecisive about names.)
20:23:51 <shachaf> elliott: /whois ec
20:24:07 <elliott> shachaf: I know who that is.
20:24:14 <shachaf> Yep.
20:24:20 <elliott> shachaf: What's your point?
20:24:52 <shachaf> I don't got a point.
20:25:10 <elliott> Deep.
20:36:16 <Gregor> Mmmmmmmmmmmm PEZ
20:42:10 -!- pikhq_ has joined.
20:42:19 -!- pikhq has quit (Ping timeout: 245 seconds).
20:43:02 <fizzie> PEZ!
20:43:12 <Gregor> Inoserite!
20:43:43 <elliott> I no serite.
20:43:55 <fizzie> I, nose.
20:44:21 <elliott> Rite?
20:45:52 <Gregor> elliott: I broke ARM.
20:46:41 <elliott> Gregor: RIP ARM.
20:46:45 <elliott> Gregor: Try it on PEZ.
20:48:42 <fizzie> The best thing about PEZ is that you not only get candy, you're also at the same time practicing killing people by wringing their necks.
20:49:05 <Gregor> I don't use the dispensers.
20:49:11 <Gregor> I feel they cheapen the candy.
20:49:19 <Gregor> They redirect the focus improperly.
20:49:21 <fizzie> But then you don't get any murder practice.
20:49:31 <elliott> Gregor: X-D
20:49:40 <Gregor> I get plenty of murder practice every Sunday at the docks.
20:51:36 <elliott> ais523: You know, a stopgap until Graue finally upgrades MediaWiki and improves the anti-spam stuff would be to have a spam-deletion bot.
20:52:07 <elliott> ais523: Also, you missed "Touches on free mobile dating sites in the comment" and "User:Shopfitting11".
20:52:12 <ais523> no I didn't, I'm just being lazy
20:52:17 <ais523> I'll get to them eventually
20:52:43 <elliott> ais523: I said "missed" because you deleted other pages in the interim.
20:52:54 <ais523> they appeared out of order in my feed
20:52:59 <elliott> Ah.
20:53:05 <ais523> to be precise, in the update after the one that gave me the pages I actually deleted
20:53:10 <ais523> I don't know /why/ the feed is so out of order, btw
20:53:42 -!- zzo38 has quit (Remote host closed the connection).
20:54:29 -!- oerjan has joined.
20:54:34 <elliott> hi oerjan
20:54:45 <oerjan> hello elliott
20:55:55 <elliott> ais523: Do you use the RSS or Atom feed?
20:56:07 <ais523> I can't remember
20:56:18 <ais523> they both contain the same info, though, IIRC
20:56:26 <elliott> ais523: Yes, but one might be less buggily generated.
20:56:43 <elliott> Either the Atom one because Atom is a newer/more modern standard, or RSS because Atom was immature when this ancient MW version came out.
20:58:31 <oerjan> <CakeProphet> monqy: I've occasionally considered the idea of "static duck typing" though I don't really know if type inference is possible.
20:58:43 <oerjan> that's called structural typing and ocaml has it
20:58:44 <elliott> see ocaml object system
20:58:47 <elliott> oerjan: *hi5*
20:58:58 <oerjan> *hi5*
20:59:12 <elliott> yessssssss
21:00:24 <oerjan> i vaguely recall that ocaml's polymorphic records also involve that, perhaps in a simpler way. and that no one uses ocaml's object system anyway.
21:00:40 <oerjan> or was that polymorphic variants. or both.
21:00:43 <elliott> oh, i may have meant its records.
21:00:51 <elliott> yes, i think i did.
21:00:57 <elliott> ocaml is so ugly.
21:02:21 <oerjan> i've forgotten most of it beyond the basics.
21:03:39 <oerjan> although i suppose learning it first may have helped me learning haskell.
21:05:05 * elliott isn't sure any strict, impure language can help with haskell. but i suppose ADTs are a good basis
21:05:38 <oerjan> erm it certainly helps with the _type_ system basics, hindley-milner you know
21:05:56 <elliott> oerjan: well that too.
21:05:59 <elliott> oerjan: apart from that ''a stuff :P
21:06:01 <oerjan> and also higher order functions.
21:06:16 <oerjan> although i'd seen those before in lisp
21:06:17 <elliott> OK, I suppose it helps a bit :)
21:06:25 <elliott> just doesn't eliminate the learning curve
21:08:24 <elliott> pikhq_: I wonder how expensive it would be to give every single thread its own pool...
21:08:31 <elliott> pikhq_: (I want threads at least as lightweight as GHC's)
21:08:36 <elliott> Probably "way too".
21:09:30 -!- Sgeo has joined.
21:13:04 <oerjan> `addquote <fungot> Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes
21:13:05 <fungot> oerjan: just as i was initially believed they were new additions. for that. busy
21:13:06 <HackEgo> 724) <fungot> Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes
21:13:11 <pikhq_> elliott: Actually, it would probably actually dramatically reduce GC overhead.
21:13:26 <pikhq_> And, in fact, Erlang does precisely that.
21:13:38 <pikhq_> Each Erlang process has its own pool.
21:13:55 <oerjan> iirc ghc also gives each thread its own pool, but only in the first generation
21:14:16 <elliott> pikhq_: Yes, but Erlang processes aren't /that/ lightweight.
21:14:20 <elliott> You can have millions of GHC threads easily.
21:14:24 -!- Ngevd has joined.
21:14:34 <pikhq_> True, GHC threads are even more lightweight than Erlang processes.
21:14:49 <pikhq_> Both of which are much more lightweight than "real" processes or threads.
21:14:52 <elliott> oerjan: huh
21:14:54 <elliott> oerjan: I wonder how big the pools are
21:14:55 <Ngevd> Isn't it annoying when you have an amazing revelation then realise it would be ABSOLUTELY USELESS?
21:15:25 <oerjan> elliott: the "nursery", it's called, it's what allows the concurrent gc
21:15:33 <elliott> oh, right
21:15:44 <elliott> 512 kilobytes, heh
21:15:52 <Ngevd> For instance, C-style for loops in Lambda Calculus
21:16:00 <elliott> oerjan: well i definitely need lots of pools, since the heap is like 1 Tio
21:16:02 <oerjan> and it can of course only contain objects not referenced from other threads, a problem which erlang doesn't have
21:16:08 <elliott> and stopping the world would be problematic :P
21:16:23 <elliott> oerjan: right, so things like IORefs allocate their backing storage on something more shared?
21:16:29 -!- Ngevd has changed nick to Taneb|Hovercraft.
21:16:34 <oerjan> elliott: well ghc's concurrent gc still stops the world, unless they've changed it
21:16:48 <elliott> the problem is that reduces to two levels in @, thread-local and global...
21:16:53 <elliott> oerjan: oh you mean parallel ghc ofc
21:16:54 <elliott> not concurrent
21:17:00 <oerjan> oh hm
21:17:05 <elliott> parallel = gc uses threads
21:17:08 <elliott> concurrent = gc runs with program
21:17:39 <oerjan> i vaguely recall they're trying to remove that and make it concurrent
21:17:52 <elliott> Gregor: Is there any hope for non-copying collectors? :'(
21:17:57 <oerjan> unless they already did, very recently
21:18:22 <elliott> oerjan: i don't think so
21:18:22 <Gregor> elliott: Any hope of what?
21:18:32 <elliott> Gregor: Not being worse than copying collectors :P
21:18:46 <Gregor> elliott: Perhaps when we're on many-many-many-core.
21:19:10 <Taneb|Hovercraft> Woah, I can adapt my idea into something awesome!
21:19:36 <elliott> Gregor: Soooo not helpful :P
21:19:49 <elliott> Hmm, I could probably do a copying collector, if I have enough pools.
21:19:54 <oerjan> elliott: i don't know if IORefs allocate outside the nursery _immediately_, or just when they get set to something in another thread
21:20:00 <elliott> You'd only need, like, a few gigs free at a time, not a terabyte.
21:20:12 <elliott> oerjan: well ok
21:20:52 <Sgeo> How annoying would it be to repartition such that I have more swap space, and should I do so?
21:21:05 <oerjan> it's probably part of the same copying that ensures you cannot have a reference from an older generation to a younger
21:21:06 <Sgeo> I'm on a 1GB machine, and the installer decided to give me 1GB of swap
21:21:23 <Sgeo> (approx.)
21:21:30 <pikhq_> Dude, anymore you should be heavily tempted to just not have swap.
21:21:32 <ais523> swap space as a similar size to main memory is the usual guideline
21:21:45 <elliott> ais523: 1.5* for smaller systems
21:21:49 <elliott> pikhq_: Uh no, 1 gig is nothing.
21:21:54 <ais523> elliott: do you consider 1GB a smaller system?
21:21:56 <elliott> 1 gig of swap miight be OK, but I'd shoot for 2 gigs.
21:21:57 <elliott> ais523: Of course it is.
21:22:12 <pikhq_> elliott: I'm using 1 gig ATM, on x86_64 (which, of course, uses more memory)
21:22:17 <elliott> ais523: Nobody but zzo has < 1 gig, and no "usual" (even netbook) computer sold today has fewer than 1-2 gigs.
21:22:27 <elliott> 3 gigs is very common on cheap consumer machines.
21:22:38 <elliott> And 8-16 gigs is becoming common on the high end.
21:22:41 <elliott> So yeah, 1 gig is small.
21:22:44 * Sgeo does need to be able to run MonoDevelop without crying
21:22:56 <pikhq_> Sgeo: Get more RAM
21:23:04 <pikhq_> Swapping like crazy is "with crying".
21:23:21 * oerjan still has 800 something Mb, actually
21:23:47 <ais523> the problem with swap is, you're in serious trouble if it's actually used for the foreground process
21:23:55 -!- derrik_ has joined.
21:24:19 <elliott> Now would be a good time to mention how much better @ is with swapping?
21:24:51 <ais523> what /does/ @ do with swapping?
21:24:57 <Taneb|Hovercraft> Is @ going to be released in the next 10 years?
21:25:07 <pikhq_> ais523: RAM is considered disk cache.
21:25:13 <ais523> pikhq_: ah, ofc
21:25:18 <ais523> so it's more a case of antiswapping
21:25:22 <ais523> swapping out of RAM, rather than onto disk
21:25:24 <elliott> pikhq_: not /quite/, you can have things in the cache that aren't on disk
21:25:25 -!- derrik has quit (Ping timeout: 253 seconds).
21:25:30 <oerjan> elliott: ah you're going to need that precognitive swap algorithm that someone asked me to write years ago
21:25:32 <elliott> it's more like, RAM is the first few GC generations, and whatever's being use
21:25:33 <elliott> d
21:25:40 <oerjan> just too bad i never did
21:25:42 <Phantom_Hoover> Taneb|Hovercraft, no, elliott will be too busy... I don't actually know.
21:25:46 <elliott> and disk is all generations apart from the first few
21:25:48 <pikhq_> elliott: It's still the shortest way of describing @'s memory model. :P
21:25:49 <Phantom_Hoover> Making ElliottCraft?
21:25:52 <elliott> oerjan: wat :P
21:25:52 -!- Taneb|Hovercraft has quit (Quit: Goodbye).
21:26:01 <Sgeo> pikhq_, I assume it's less crying with an HD than with USB stick like I was doing before?
21:26:12 <oerjan> elliott: i don't know if he was joking or severely overestimating me
21:26:18 <Phantom_Hoover> (I will still be trying to find out how you do numerical integration for gravity without it being crazy inaccurate.
21:26:20 <Phantom_Hoover> )
21:26:27 <elliott> oerjan: were you talking about synchronicity or sth :P
21:26:31 <pikhq_> Sgeo: You're still dealing with human-noticable latencies for disk access.
21:26:37 <pikhq_> Spinning disks are *really* slow.
21:26:40 <elliott> Phantom_Hoover: Can't you just rip off that JS thing :P
21:27:00 <oerjan> elliott: no, this was long before i learned of synchronicity. back in the mid-90s at the latest
21:27:18 <Sgeo> human-noticable is not as bad as human-tearing-his-hair-out-for-10-minutes
21:27:28 <elliott> oerjan: Did the page you randomly turned to feature the http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png diagram?
21:27:37 <elliott> It'd convince me.
21:27:43 <oerjan> iirc he suggested it would be nice with a swap algorithm which could guess what needed to be swapped in next
21:27:54 <Phantom_Hoover> elliott, he ripped off a JS Library, in the sense of "code which is ~optomised~ to the point of taking too much work to unravel."
21:28:04 <elliott> oerjan: well that's doable, precognition isn't :P
21:28:10 <elliott> (whether it /works/ well is another question)
21:28:28 <ais523> what does optomisation mean?
21:28:45 <Phantom_Hoover> Who knows?
21:29:01 <oerjan> elliott: that horizontal axis is something i've thought about before, the vertical not so much.
21:29:04 <elliott> ais523: It's what only terse can give you.
21:29:09 <elliott> Sorry, *TERSE
21:29:10 <ais523> also, hmm, surrounding the word with ~ = sarcasm marks on a single word?
21:29:36 <oerjan> ais523: ~probably~
21:29:38 <Phantom_Hoover> That's the main use of sarcasm marks I've seen, by which I mean it's what elliott does.
21:29:51 <elliott> http://www.terse.com/pics/topyello.gif
21:29:54 <elliott> OPTOMIZED
21:29:57 <elliott> TERSE
21:29:58 <elliott> PERFORMANCE
21:30:08 <elliott> op-to-mize vt [Gk optos + ISV -mize] : to make as aesthetically perfect, effective, or functional to the eye as possible.
21:30:21 <ais523> oh, like optical optimization?
21:30:42 <elliott> No! It's TERSE! Assembly language with ADDED FUN!
21:30:49 <elliott> Prefix! Infix! Postfix!
21:30:57 <elliott> DOS-compatible! Windows-compatible!
21:31:00 <elliott> Bill Gates approved!
21:31:09 <elliott> Lose Wait(tm) with TERSE(tm) today!
21:31:15 <ais523> you know what; I've decided that unary minus is a really annoying operator
21:31:21 <elliott> (I swear to god the "Lose Wait" thing is a direct quote.)
21:32:30 <oerjan> ais523: haskellers agree
21:32:59 <ais523> so do OCamlers (where it has a different notation from - in a lot of contexts as - would be ambiguous)
21:33:08 <oerjan> elliott: surely it should be "Loose Wait"?
21:33:12 <elliott> When I saw him a few days later he was jubilant! "Wow! I hadn't realized how easy it was to write in . I began translating my stuff and gave up on it. It was much simpler just to write everything directly in . Not only did I totally re-write several weeks worth of code, but I wrote a bunch of other routines too." "I told you," I replied. "With you're free to work on the problem, not the assembly language syntax. There's no need to invent label
21:33:12 <elliott> s, think about reversing conditionals, your typing is significantly reduced, and..." He butted in, "And you can see the structure of the program right on the screen! There is no need to make a listing and draw out the looping structure with a pen, and..." I couldn't get another word in, so I just let him talk as he continued to espouse the virtues of .
21:33:14 <CakeProphet> uh oh, someone has pinged me.
21:33:20 <oerjan> CakeProphet: boo!
21:33:21 * CakeProphet scrolls up
21:33:21 <elliott> I would put the "TERSE"s back in from the logos there, but I think it might be better without.
21:34:53 <CakeProphet> oh good it wasn't elliott pinging me.
21:34:54 <CakeProphet> I'm safe.
21:34:58 <oerjan> elliott: i had to copy and paste to find out if you'd really removed the name or if it was a crazy unicode thing
21:35:01 <elliott> CakeProphet sucks.
21:35:03 <elliott> oerjan: heh
21:35:04 -!- Taneb|Hovercraft has joined.
21:35:07 <elliott> oerjan: each one is an individual <img>
21:35:09 <elliott> with no alt text
21:35:12 <elliott> http://www.terse.com/pics/terse22p.gif
21:35:13 <oerjan> aha
21:35:21 <elliott> http://www.terse.com/reluctan.htm
21:35:34 <elliott> the lack of italics and bold in the black-on-yellow 90s style makes it lose something in translation
21:35:38 <oerjan> a very language
21:35:49 <elliott> :D
21:36:08 -!- derrik_ has quit (Quit: gone).
21:36:42 <oerjan> <elliott> CakeProphet sucks. <-- hey i was afraid he'd suck so much he didn't notice at all
21:37:05 <CakeProphet> :( :( :( :( :(
21:37:32 <oerjan> CakeProphet: it's always dangerous to talk to people who've idled for 12 hours
21:37:42 <Taneb|Hovercraft> What is Terse?
21:37:46 <elliott> Taneb|Hovercraft: .
21:37:56 <oerjan> Taneb|Hovercraft: The st language of all!
21:38:07 <Taneb|Hovercraft> elliott: that helps a lot
21:38:17 <elliott> Taneb|Hovercraft: http://www.terse.com/
21:38:58 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA THE YELLOW, IT BURNS
21:39:24 <Phantom_Hoover> So it's assembly that does control structures for you?
21:39:29 <Phantom_Hoover> i.e. PUSSY ASSEMBLY
21:39:40 <elliott> PLUS SYMBOLICS!!! INFIX!!!!
21:39:40 <oerjan> must be my 1/8 vampire genes
21:39:41 <ais523> i.e. C?
21:39:54 <elliott> ais523: NO ITS TERSE
21:40:05 <CakeProphet> I don't recommend gooling "pussy assembly"
21:40:10 <CakeProphet> *googling
21:40:15 <Phantom_Hoover> ais523, no.
21:40:15 <elliott> ais523: "external resources" is such an ugly heading :(
21:40:25 <oerjan> hey if someone wants to assemble a pussy, i'm not going to stop them.
21:40:28 <CakeProphet> with SafeSearch off, even.
21:40:34 <Phantom_Hoover> C specifies a fair bit of memory management stuff as well.
21:40:59 <Taneb|Hovercraft> Is it bad that I think brainfuck could be more readable
21:41:15 <oerjan> Taneb|Hovercraft: more readable than what?
21:41:18 <CakeProphet> it's kind of confusing.
21:41:21 <Phantom_Hoover> That way lies brick/brain exchange.
21:41:22 <CakeProphet> that you would think that.
21:41:23 <Taneb|Hovercraft> oerjan: Terse
21:41:42 <oerjan> ah. i was afraid you were considering making a derivative.
21:41:49 <oerjan> *WHEW*
21:42:21 <Taneb|Hovercraft> My first esolang was an unpublished Ook! derivative
21:42:35 <CakeProphet> wow terse's website is SO AWESOME
21:42:46 <CakeProphet> it's yellow.
21:42:48 <Taneb|Hovercraft> Sometime probably in 2008
21:42:52 <Sgeo> ....Maybe I shouldn't have gone for encrypted home
21:42:57 <Sgeo> AFAICT, it implies encrypted swap
21:43:08 <CakeProphet> uh, no?
21:43:23 <CakeProphet> your home and your swap are completely separate from each other... >_>
21:43:34 <CakeProphet> assuming linux.
21:43:36 <Sgeo> "Also, it is strongly recommended that you encrypt your swap space. Users installing from Ubuntu 9.10 and selecting the Encrypted Home option will automatically have encrypted swap space. "
21:43:44 <Sgeo> Why would they change it after 9.10?
21:43:44 <CakeProphet> oh
21:43:48 <CakeProphet> weird.
21:43:52 <CakeProphet> THEY NEVER TOLD ME THAT.
21:44:05 <CakeProphet> but anyway encrpytion isn't a problem, it's a good thing.
21:44:42 <elliott> Sgeo: what's wrong with encrypted swap
21:45:09 <Sgeo> elliott, slower, I'd assume
21:45:16 <CakeProphet> ha. ha. ha ha. ha ha ha
21:45:19 <Gregor> I feel like swapping just isn't slow enough.
21:45:23 <Gregor> How could I make it slower?
21:45:25 <Gregor> I KNOW!
21:45:35 <elliott> Sgeo: disk is much slower than cpu.
21:46:18 <pikhq_> Heck, *RAM* is slower than CPU anymore.
21:46:39 <shachaf> Even CPU is slower than CPU these days*.
21:46:42 <pikhq_> :P
21:47:23 <CakeProphet> shit even the speed of light is slower than CPUs now.
21:48:27 <CakeProphet> Sgeo: but yeah encryption is either imperceptible or minor overhead on top of a disk operation.
21:48:39 <CakeProphet> Sgeo: also, how often do you actually use your swap?
21:48:42 <CakeProphet> I don't use mine at all.
21:48:46 <shachaf> All the time!
21:48:50 -!- Taneb|Hovercraft has quit.
21:49:08 <shachaf> Actually, apparently I don't.
21:49:10 <CakeProphet> oh hmmm I'm apparently using 330 MBs of swap right now. :P
21:49:42 <shachaf> But yesterday I accidentally tried to compute a big Integer in ghci and I ended up using quite a lot of swap before I managed to kill it.
21:49:49 <CakeProphet> sudo swapoff -a
21:49:51 <CakeProphet> bahahahahahahaha
21:50:00 <shachaf> CakeProphet: I'm sure your OS has better things to do with that RAM.
21:50:08 * CakeProphet mutters under his breath about "evillllll"
21:51:01 -!- pagnol has quit.
21:52:07 <CakeProphet> the main problem I have with my encrypted home is that
21:52:09 <CakeProphet> if my computer died
21:52:15 <CakeProphet> I will have no way to access everything
21:52:19 <CakeProphet> because I don't know the key. :P
21:52:23 <shachaf> Memorize the key.
21:52:33 <CakeProphet> I actually don't even know where to find it.
21:52:41 <shachaf> Someone needs to write a program that turns arbitrary bytestrings into something that's easy for humans to memorize.
21:53:18 <CakeProphet> well I was just going to do the old write-it-down trick.
21:53:26 <CakeProphet> so when the FBI raid my home they can easily find it!
21:53:32 <shachaf> No, man, memorize it!
21:53:39 <shachaf> I should do that.
21:53:50 <CakeProphet> I could apply a simple Caesar cipher to it
21:53:53 <CakeProphet> they'll never figure that shit out!
21:56:35 <oerjan> wait, if you don't know the key, then it must be stored on the computer, and wth is then the point of encrypted home?
21:56:40 <Gregor> elliott: ARM fixt.
21:56:54 <elliott> Gregor: Horey.
21:57:09 <Gregor> elliott: Whorey.
21:59:45 -!- zzo38 has joined.
22:03:39 <CakeProphet> hoary
22:03:48 <oerjan> <elliott> :t \xs -> listToMaybe (catMaybes xs)
22:03:49 <oerjan> hm...
22:04:03 <CakeProphet> oerjan: you need the key to open the drive...
22:04:09 <CakeProphet> because it's... encrypted
22:04:10 <oerjan> > mconcat [Nothing, Just 3, Just 4]
22:04:11 <lambdabot> Ambiguous type variable `a' in the constraints:
22:04:11 <lambdabot> `Data.Monoid.Monoid a'
22:04:11 <lambdabot> ...
22:04:12 <elliott> oerjan: I was thinking of something involving join first, which was what all that monadery was about.
22:04:13 <CakeProphet> the encrypted drive contains the key.
22:04:23 <oerjan> wat
22:04:24 <elliott> > choice [Nothing, Just 3]
22:04:25 <lambdabot> Not in scope: `choice'
22:04:30 <elliott> @hoogle Alternative f => [f a] -> f a
22:04:31 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
22:04:31 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
22:04:31 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
22:04:41 <oerjan> > mconcat [Nothing, Just 3, Just (4 :: Int)]
22:04:42 <lambdabot> No instance for (Data.Monoid.Monoid GHC.Types.Int)
22:04:42 <lambdabot> arising from a use of...
22:04:50 <oerjan> oops
22:04:50 <elliott> oerjan: it's a wrapper-type Monoid insatnce
22:04:51 <elliott> instance
22:04:52 <elliott> not a semantic-type one
22:04:54 <oerjan> oh hm
22:04:55 <elliott> (terms I just made up)
22:04:59 <elliott> > asum [Nothing, Just 3, Just (4 :: Int)]
22:05:00 <lambdabot> Not in scope: `asum'
22:05:02 -!- bd_ has left.
22:05:03 <elliott> >:(
22:05:06 <elliott> > Data.Foldable.asum [Nothing, Just 3, Just (4 :: Int)]
22:05:07 <lambdabot> Just 3
22:05:09 <oerjan> > msum [Nothing, Just 3, Just 4]
22:05:11 <lambdabot> Just 3
22:05:36 <CakeProphet> mmmm biscuit syrup
22:06:01 <CakeProphet> all governments should be biscuit syrup.
22:06:03 <elliott> oerjan: anyway, listToMaybe [x | C x <- xs] is quite a nice pattern
22:06:27 <elliott> listToMaybe [ x+y | Foo x y <- xs, x < y ]
22:06:28 <oerjan> CakeProphet: um my point is, how can you then get the computer started without knowing the key? even if it's otherwise in order?
22:06:32 <elliott> it's like find but with deconstruction :P
22:06:36 <elliott> hmm...
22:06:42 <elliott> @hoogle (a -> Maybe b) -> [a] -> Maybe b
22:06:42 <lambdabot> Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
22:06:42 <lambdabot> Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
22:06:42 <lambdabot> Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m ()
22:07:10 <CakeProphet> oerjan: oh well I think the code might be based on your password (???)
22:07:22 <CakeProphet> but all it seems to need is my password to access the drive.
22:08:53 <oerjan> very well
22:10:47 <CakeProphet> oerjan: hmmm but I do need a mount passphrase which it apparently gave me and I probably didn't write down.
22:10:54 <CakeProphet> if I want to manually recover the drive.
22:12:43 <CakeProphet> but I'm thinking I can use my login passphrase with a newly installed Ubuntu OS and it will be able to unmount it somehow (?????)
22:12:52 <CakeProphet> according to this wiki page.
22:13:53 <ais523> elliott: "ditto" is not an ideal edit comment when you're dittoing something on another page
22:14:02 -!- Patashu has joined.
22:14:10 <elliott> ais523: IT WAS SO TEDIOUS
22:14:18 <elliott> I note that I apparently forgot it for about five edits :P
22:15:48 <ais523> I've got all the spam now, I think
22:16:06 <CakeProphet> elliott: so FRP would be a good choice for... say, a physics simulator within a game like df?
22:16:30 <Sgeo> What is FRP not an ideal choice for?
22:16:38 <CakeProphet> Sgeo: network IO, apparently.
22:16:58 <elliott> *certain kinds of network io
22:17:00 <Sgeo> Hmm?
22:17:04 * Sgeo is curious now
22:17:55 <CakeProphet> Sgeo: also things where you're not reacting to time-based events.
22:17:57 <elliott> http://stackoverflow.com/questions/6812533/am-i-using-reactive-banana-right is a decent example.
22:17:58 <CakeProphet> or external input.
22:17:59 <elliott> Esp.: @Ben Ford: I've added a small remark to the answer. I don't know what you want to do with the sockets, so I can't tell you whether FRP is overkill for your purpose. Basically, if your event network won't grow much larger than this one with a single accumE and some filterE, then it's more elegantly done without FRP. – Heinrich Apfelmus Jul 25 at 16:16
22:18:24 <elliott> Also FRP is obviously not very well suited to "conversational" style UIs, where you're literally doing things in sequence: ask user for command, do something, repeat.
22:19:12 <Sgeo> Hmm
22:20:09 <CakeProphet> why is the wikipedia article for FRP so bad.
22:22:40 <CakeProphet> elliott: but perhaps some of this bloat could be resolved if your language provided built-in support for FRP similar to what Haskell does with monads.
22:22:43 <CakeProphet> just an idea.
22:23:03 <CakeProphet> but I think it's fair to say that this is too much code for a simple networking task.
22:23:03 <elliott> Haskell offers exactly one bit of language support: do notation.
22:23:10 <elliott> And it's not much.
22:23:38 <CakeProphet> it certainly makes things like, say, simple networking tasks, not quite as annoying.
22:23:51 <CakeProphet> granted
22:24:26 <CakeProphet> it's /easy/ to fit monads to an synchronous style of programming, but FRP doesn't work that way.
22:27:28 <elliott> augur: You might be interested in Clue.
22:27:41 <augur> elliott: the whodunnit game?
22:27:43 <augur> i love clue!
22:27:48 <elliott> No, http://esolangs.org/wiki/Clue_%28oklopol%29.
22:27:56 <elliott> http://esolangs.org/wiki/Clue_%28oklopol%29/Quicksort and http://esolangs.org/wiki/Clue_%28oklopol%29/SKI_calculus are more helpful than the article.
22:27:58 <elliott> Re: your talk in #haskell.
22:27:59 <augur> is it oklopol naked?
22:28:06 <oklopol> yes
22:28:09 <elliott> Yes.
22:28:11 <oklopol> thank you for asking
22:28:20 * augur bites oklopol
22:28:30 <oklopol> now why would you do that
22:28:46 <CakeProphet> clue is the worst game
22:28:46 <CakeProphet> ever
22:28:48 <oklopol> that's just nasty
22:29:18 <oklopol> are you talking about my clue
22:29:19 <oklopol> ca
22:29:20 <oerjan> some people just prefer to be clueless
22:29:23 <oklopol> *-ca
22:29:28 <CakeProphet> oklopol: no the shitty board game.
22:29:30 <oklopol> because that's an awesome game
22:29:32 <oklopol> oh
22:30:14 <oklopol> i haven't played it, what do you actually do in it
22:30:25 <augur> oklopol: do you have a more serious discussion of this language
22:30:26 <CakeProphet> you roll dice, move your little piece across a huge square map
22:30:28 <CakeProphet> and go into rooms
22:30:32 <elliott> augur: http://esolangs.org/wiki/Clue_%28oklopol%29/Quicksort http://esolangs.org/wiki/Clue_%28oklopol%29/SKI_calculus
22:30:33 <CakeProphet> ....that's pretty much the game.
22:30:34 <augur> or a reference to something related, but serious?
22:30:37 <elliott> augur: I linked you to the examples for a reason.
22:30:38 <oklopol> augur: sorry, no.
22:30:54 <augur> oklopol: where is your inspiration for this coming from?
22:30:59 <oklopol> for clue?
22:31:01 <CakeProphet> oh it's apparently called cluedo outside the states.
22:31:02 <Phantom_Hoover> CakeProphet, I always loved how half the game is moving pieces around a square grid.
22:31:10 <CakeProphet> Phantom_Hoover: yes that's my favorite part
22:31:17 <CakeProphet> and by favorite I mean the worst part about it.
22:31:20 <augur> oklopol: yes
22:31:23 * Phantom_Hoover wonders if you could camp by blocking a dor.
22:31:25 <Phantom_Hoover> *door
22:31:36 <elliott> augur: If you think it's not serious, then keep in mind that those programs actually work. :p
22:31:37 <CakeProphet> Phantom_Hoover: I don't think you can elect to not move.
22:31:39 <oklopol> it's the same inspiration that makes everyone come up with the basic idea of example-based computation.
22:31:43 <oklopol> it's an obvious idea
22:31:43 <CakeProphet> Phantom_Hoover: I think you have to use all of your moves in a turn
22:31:49 <augur> elliott: by more serious i mean publishable
22:31:53 <CakeProphet> Phantom_Hoover: but, I guess it's still possible.
22:31:55 <Phantom_Hoover> CakeProphet, sure but doors have two blockable squares.
22:32:01 <augur> oklopol: i see. ok
22:32:01 <Phantom_Hoover> Just move between the two.
22:32:07 <elliott> augur: Sorry, I thought you asked "does anyone have any info about", not "does anyone haev any papers about".
22:32:19 <Sgeo> elliott, epdort
22:32:29 <augur> i didnt know there was such a thing as example based programming
22:32:31 <augur> interesting
22:32:35 <oklopol> augur: but certainly not trying to make anything serious about it
22:32:38 <CakeProphet> who needs RSS when you have Sgeo.
22:33:10 <oklopol> augur: there isn't, because i'm the only one who has made it work to any extent. also that may not be true, but no one has corrected me yet.
22:33:20 <augur> :)
22:33:23 <Sgeo> Someone in one of the Homestuck channel is keeping a log of all typos
22:33:59 <oklopol> of course while making it work, i made it lose most of its practical usefulness. that may not usually be desired.
22:34:12 <CakeProphet> Sgeo: a noble pursuit.
22:34:55 <oklopol> did i say most? i meant all of it.
22:36:00 <augur> oklopol: so you dont know of anyone else who's done this sort of thing
22:36:03 <CakeProphet> oklopol: that's the issue I'm having with my graph automata thing.
22:36:08 <augur> do you have source for the Clue compiler?
22:36:17 <CakeProphet> I can't devise 9 states that do anything practical.
22:36:18 <oklopol> augur: no. and yes, it's probably somewhere....
22:36:23 <CakeProphet> so maybe I should just... not make it practical.
22:36:25 <CakeProphet> yes that sounds good.
22:36:27 <oklopol> it's like the slowest thing in the universe
22:36:33 <augur> oklopol: can you accurately describe the process?
22:37:31 <oklopol> i'm pretty sure i can, but i don't really feel like doing that right now
22:37:37 <oklopol> (or anything really)
22:37:42 <augur> :\
22:37:43 <augur> ok
22:37:50 <oklopol> why u so interested all of a sudden?
22:40:01 <oklopol> well you don't really need to be able to answer, but anyhow what i can do is put the link back up
22:40:22 <oklopol> so you can technically find out more. assuming this is the newest version of the interpiler.
22:40:42 <elliott> oklopol: does it still have the ugly <>s :(
22:40:59 <oklopol> no i think that's now always id
22:41:05 <oklopol> and omitted
22:41:24 <oklopol> i have a way better way to do conditionals, but it's yet to be implemented because i work on this like a day every two years
22:41:43 <elliott> oklopol: well yeah that's the GENIUS CHANGE I made
22:41:48 <elliott> just didn't know you merged it back in :P
22:41:48 <oklopol> what
22:41:54 <oklopol> oh
22:41:55 <elliott> you said it wouldn't work like that
22:41:57 <oklopol> you mean making it id
22:41:57 <elliott> and i did it
22:41:59 <elliott> and it worked
22:41:59 <elliott> yeah
22:42:01 <elliott> and then you were like
22:42:02 <elliott> elliott
22:42:05 <elliott> you are the biggest genius
22:42:08 <elliott> how can i ever repay you
22:42:09 <elliott> humbly,
22:42:10 <elliott> oklopol
22:42:17 <oklopol> huh.
22:42:27 <CakeProphet> big dude for big people.
22:42:30 <oklopol> well cool, i guess i could reduce your debt a bit.
22:42:39 <elliott> what debt. oh that thing.
22:42:44 <oklopol> here i thought your ideas were really stupid
22:43:00 <oklopol> anyway the new way is so completely different that i won't even start to explain it
22:43:37 <oklopol> also i don't remember exactly what it is
22:44:34 <CakeProphet> 9 different states might be too many.
22:44:36 <oklopol> on friday we talked about my colleague's new esolang for like half the workday
22:44:37 <CakeProphet> maybe 5 is good.
22:44:47 <oklopol> and the other half we played my newest game
22:45:37 <CakeProphet> but I need some way to connect subgraphs together...
22:45:51 <elliott> CakeProphet: what
22:45:55 <elliott> oklopol: which game
22:46:01 <oklopol> cp:s rant sounds interesting but i think i won't ask anyway
22:46:12 <oklopol> elliott: there's a few balls and a lot of cubes.
22:46:29 <oklopol> it's basically an fps, just for a game programming course, nothing particularly interesting
22:46:29 <CakeProphet> elliott: I'm working on a graph automata. Like a CA but with a graph instead of an discrete infinte 2d space of whatevers.
22:46:56 <elliott> oklopol: i wanna play anyway but FIIIINE
22:47:05 <oklopol> you can when it's done
22:47:12 -!- SgeoN1 has quit (Quit: Bye).
22:47:16 <oklopol> unless we decide to try to sell it for laughs and giggles
22:47:22 <elliott> I could: buy it.
22:47:27 <oklopol> (it's actually a lot of fun)
22:47:29 <CakeProphet> elliott: the basic idea so far is that the node states are numbers, and higher numbers take precedence over lower numbers with respect to figuring out which rules to apply.
22:48:15 <oklopol> you could. when it's done. or you can just have it for free if it's free. when it's done.
22:48:49 <CakeProphet> that's, basically all I've got, other than some ideas like "this node rotates all of its children so that they swap subgraphs" and "this node deletes child nodes that are even when its degree is odd, and odd children when its degree is even"
22:48:56 <CakeProphet> and other things that don't really fit together in any coherent way.
22:49:53 <oklopol> a rule is always applied to a single node at once?
22:49:59 <oklopol> argh i promised myself i wouldn't ask
22:50:10 <CakeProphet> I, guess? I'm not sure what you mean.
22:50:13 <CakeProphet> by "at once"
22:50:17 <oklopol> maybe i just won't listen, i'll fire questions and ignore you mwahaha
22:50:41 <oklopol> well you know how ca apply the rule everywhere, do you just have like a calculation of where the rule should be applied next and iterate this
22:50:52 <CakeProphet> no.
22:51:02 <oklopol> or do you apply to each node, and just order these in some way because the rules can change the graph itself
22:51:10 <CakeProphet> that one.
22:51:32 <oklopol> okay, this might be interesting, i'll take a look at the end product when you finish
22:51:38 <CakeProphet> ha,
22:51:43 <CakeProphet> ha ha. "finish"
22:52:19 <CakeProphet> the main issue I'm having is that I don't really know how you would program with such a thing.
22:52:36 <CakeProphet> but I guess, like most CA, it's kind of non-obvious.
22:52:58 <CakeProphet> also creating new nodes and attaching subgraphs together is kind of an open question.
22:53:49 <CakeProphet> if I go with 10 states (0-9) then I could have some numbers that connect together automatically, so "all 1s connect to all 9s, and vice versa"
22:53:57 <CakeProphet> or "all 5s connect to all other 5s"
22:55:08 <CakeProphet> but then how do I create nodes, I think I'd need a way to increment the state of a node.
22:55:20 <coppro> haskell
22:55:58 <CakeProphet> so one rule could be "this state creates a new 0 node on some condition" and then have rules by which a node could change its state value.....
22:56:01 <CakeProphet> but......
22:56:07 <CakeProphet> that is a huge clusterfuck :P
22:57:24 -!- myndzi has joined.
22:57:25 <elliott> hi coppro
22:57:28 <CakeProphet> but I want the rules to be somewhat simple, nothing involving paths or cycles or subgraph properties, so that it can compute steps efficiently.
22:57:53 -!- Darth_Cliche has joined.
23:00:08 <CakeProphet> for conditional rules I was thinking I could utilize number parity (do this for (even|odd) degree, or do that to all (even|odd) children) and maybe summation of child nodes (when the sum of all child nodes = X, do this)
23:01:44 <CakeProphet> graph rewriting would be so much easier :P (for me, not the computer)
23:02:11 <Sgeo> There are Reader Writer and State Monoids?
23:02:17 * Sgeo headaches
23:02:24 <elliott> ?
23:03:02 <CakeProphet> oh no, not a binary operation with an identity element!
23:03:11 * CakeProphet mind blown
23:03:26 <oerjan> Sgeo: er, you are not misspelling "Monads"?
23:03:31 <Sgeo> oerjan, I am not.
23:03:37 <Sgeo> http://hackage.haskell.org/packages/archive/monoid-transformer/0.0.2/doc/html/Data-Monoid-State.html
23:03:49 <Sgeo> Searched due to seeing a package in Synaptic
23:04:11 <elliott> oh, cute
23:04:28 <elliott> it does the moral equivalent of mappend <$> m <*> s
23:04:33 <elliott> s/s/m'/
23:05:02 <CakeProphet> elliott: did you read the source code or was it obvious from the Monoid instance.
23:05:18 <elliott> i read the monoid instance's code
23:05:47 <CakeProphet> ah, but it's still pretty obvious from the instance itself.
23:05:54 <CakeProphet> Monoid a => Monoid (T s a)
23:05:58 <CakeProphet> hmmm, wonder what that could do.
23:06:37 <elliott> Doesn't tell you how it threads the state at all.
23:06:46 <CakeProphet> ah, yes.
23:07:00 -!- azaq23 has quit (Max SendQ exceeded).
23:07:04 <CakeProphet> I'm wondering why they used a new type.. and not just the original State monad?
23:07:26 <CakeProphet> also they used the name pure.....
23:07:51 <elliott> to avoid the dependency on transformers or mtl?
23:07:56 <elliott> and to avoid semantic confusion?
23:08:12 -!- azaq23 has joined.
23:08:25 <CakeProphet> too cautious..
23:08:50 <oerjan> hm but isn't _every_ Monad a Monoid under a similar interpretation.
23:09:08 <elliott> oerjan: no, because there's no /binding/
23:09:11 <elliott> it's more like an applicative
23:09:22 <elliott> only the state is threaded
23:09:28 <elliott> you can't thread the result
23:09:36 <elliott> oh
23:09:45 <elliott> i think you can /maybe/ define a monoid for every monad like that?
23:09:47 <elliott> dunno
23:09:58 <oerjan> mappend <$> m <*> s, you said
23:10:04 <CakeProphet> a Monoid for every Functor, perhaps?
23:10:07 <elliott> moral equivalent of, I said
23:10:09 <elliott> CakeProphet: definitely not.
23:10:27 <oerjan> return mempty
23:10:43 <oerjan> or indeed, for every _applicative_
23:10:53 <elliott> oerjan: that's what i was conjecturing.
23:11:28 <oerjan> mappend <$> pure mempty <*> x = mappend mempty <$> x = x
23:11:45 <CakeProphet> ah.
23:11:54 <oerjan> mappend <$> x <*> pure mempty = flip mappend (pure empty) <$> x = x
23:12:01 <oerjan> er
23:12:11 <oerjan> *mappend <$> x <*> pure mempty = flip mappend mempty <$> x = x
23:13:52 <oerjan> mappend <$> x <*> (mappend <$> y <*> z) = (\a b c -> mappend a (mappend b c)) <$> x <*> y <*> z = mappend (mappend a b) c <$> x <*> y <*> z = mappend <$> (mappend <$> x <*> y) <*> z
23:14:05 <oerjan> all pretty standard Applicative laws, i think
23:14:18 <oerjan> er
23:14:21 -!- elliott has quit (Read error: Connection reset by peer).
23:14:41 <oerjan> *= (\a b c -> mappend (mappend a b) c <$> x <*> y <*> z =
23:14:52 -!- elliott has joined.
23:14:53 <oerjan> *+)
23:15:44 <oerjan> in fact it would seem that an Applicative can lift any algebraic structure
23:16:48 <CakeProphet> oerjan: hmmm, CharParser Monoid could be useful perhaps?
23:17:15 <CakeProphet> er Parser monoid actually.
23:17:47 <oerjan> perhaps
23:19:11 <CakeProphet> I don't remember how Parsec combines tokens together by default.
23:19:20 <CakeProphet> *results of parsing tokens
23:21:30 <oerjan> that depends on how you combine the _parsers_ together, in precisely the same way as any other monad or applicative.
23:21:44 <CakeProphet> right
23:22:08 <CakeProphet> so I think a monoid would have the effect of combining two results into one?
23:22:41 <oerjan> x `mappend` y = mappend <$> x <*> y, is what we are going by above
23:24:09 <oerjan> also, this requires the result types to belong to a monoid.
23:24:18 <CakeProphet> right.
23:26:01 <CakeProphet> so yeah that's my guess on what a Parsec Monoid instance would do.
23:27:32 <CakeProphet> match both parsers in sequence (I think), concat the results together (for Strings), while threading the state.
23:32:33 -!- pagnol has joined.
23:33:16 -!- ais523 has quit (Ping timeout: 240 seconds).
23:45:04 <CakeProphet> Sgeo: ehplideot
23:45:20 <Sgeo> CakeProphet, liar
23:45:26 <CakeProphet> Sgeo: are you sure?
23:45:39 <Sgeo> Yes
23:45:44 <CakeProphet> ha
23:45:44 <CakeProphet> ha
23:45:46 <CakeProphet> haha
23:45:47 <CakeProphet> hahaha
23:45:50 <CakeProphet> hahahahaha
23:46:29 <monqy> ehplideot
23:48:13 <CakeProphet> `words 50
23:48:15 <CakeProphet> `word 50
23:48:15 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found
23:48:18 <HackEgo> oballipa tonimellizzemativatynataguthouslere frupion boeuriarefrurinsatiscon atoachalluybiltissit jickenticeladals mhi fellantanx eudolacyl furnminfifinte alceptem mim gwe ithothum lyhsensiann zii enferite oldt tant zinatomptcriersodebity edes nlich viguenfel blacutheinguabeishititraupossed diforts whiared sidcux shanizurlijau re plaare midocium brourionsoyatengentitn ntenodia chassinchasstheaderce incia le se becorrats
23:49:16 <CakeProphet> so many giant words.
23:52:23 <CakeProphet> `logs fix.*scanl.*ha
23:52:25 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
23:52:29 <CakeProphet> `log fix.*scanl.*ha
23:52:48 * CakeProphet waits.
23:52:53 <Sgeo> > scanl (+) 1 [1,1..]
23:52:54 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
23:52:55 <HackEgo> 2011-11-19.txt:23:52:29: <CakeProphet> `log fix.*scanl.*ha
23:52:59 <CakeProphet> ASSHOLE
23:53:25 <CakeProphet> fibs = fix (("ha. ":) . scanl (++) "ha.")
23:53:28 <CakeProphet> > fix (("ha. ":) . scanl (++) "ha.")
23:53:30 <lambdabot> ["ha. ","ha.","ha.ha. ","ha.ha. ha.","ha.ha. ha.ha.ha. ","ha.ha. ha.ha.ha. ...
23:53:38 <CakeProphet> > fix (("ha. ":) . scanl (++) "ha. ")
23:53:40 <lambdabot> ["ha. ","ha. ","ha. ha. ","ha. ha. ha. ","ha. ha. ha. ha. ha. ","ha. ha. ha...
23:54:07 <Sgeo> > scanl (+) 1 [1..]
23:54:08 <lambdabot> [1,2,4,7,11,16,22,29,37,46,56,67,79,92,106,121,137,154,172,191,211,232,254,...
23:54:27 <CakeProphet> > var . unlines $ fix (("ha. ":) . scanl (++) "ha. ")
23:54:29 <lambdabot> ha.
23:54:29 <lambdabot> ha.
23:54:29 <lambdabot> ha. ha.
23:54:29 <lambdabot> ha. ha. ha.
23:54:30 <lambdabot> ha. ha. ha. ha. ha.
23:54:32 <lambdabot> ha. ha. ha. ha. h...
23:54:36 <CakeProphet> :)
23:56:53 * CakeProphet should perhaps be banned from using var ever again.
23:57:41 <CakeProphet> maybe if go over to #haskell to do it someone will get the gumption to fix lambdabot.
23:57:46 <CakeProphet> +I
23:57:51 <CakeProphet> after they ban me.
23:58:25 <CakeProphet> I think I'll go do that.
2011-11-20
00:00:27 <Sgeo> :t var
00:00:28 <lambdabot> forall a. String -> Sym a
00:00:34 <CakeProphet> shachaf: mission accomplished.
00:00:51 <shachaf> CakeProphet: Hmm?
00:00:52 <Sgeo> > var . unlines . show $ [1..]
00:00:53 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
00:00:53 <lambdabot> against inferred ty...
00:00:58 <shachaf> Does it cut it off by number of character or number of lines?
00:01:00 <monqy> CakeProphet did you do it
00:01:03 <CakeProphet> Sgeo doesn't get unlines
00:01:04 <CakeProphet> monqy: yes
00:01:08 <Sgeo> :t unlines
00:01:09 <lambdabot> [String] -> String
00:01:22 <CakeProphet> its like lines but un-
00:01:23 <monqy> has haskell said anything
00:01:25 <shachaf> > var . unlines . map pure $ "abcdefghijklmn"
00:01:27 <lambdabot> a
00:01:27 <lambdabot> b
00:01:27 <lambdabot> c
00:01:27 <lambdabot> d
00:01:27 <lambdabot> e
00:01:28 <CakeProphet> monqy: I left
00:01:29 <lambdabot> [9 @more lines]
00:01:41 <shachaf> Hah. Not so spammable now, is it?
00:01:49 <Sgeo> > var . unlines . map show $ [1..]
00:01:51 <lambdabot> 1
00:01:51 <lambdabot> 2
00:01:51 <lambdabot> 3
00:01:51 <lambdabot> 4
00:01:51 <lambdabot> 5
00:01:53 <lambdabot> [17 @more lines]
00:01:55 <CakeProphet> shachaf: that's 4 too many lines of spam
00:02:05 <shachaf> lambdabot has other commands that output more than one line.
00:02:07 <shachaf> @djinn-env
00:02:07 <lambdabot> data () = ()
00:02:08 <lambdabot> data Either a b = Left a | Right b
00:02:08 <lambdabot> data Maybe a = Nothing | Just a
00:02:08 <lambdabot> data Bool = False | True
00:02:08 <lambdabot> data Void
00:02:09 <lambdabot> type Not x = x -> Void
00:02:11 <lambdabot> class Monad m where return :: a -> m a; (>>=) :: m a -> (a -> m b) -> m b
00:02:13 <lambdabot> class Eq a where (==) :: a -> a -> Bool
00:02:15 <lambdabot> data Thrice f x = Thrice (f (f (f x)))
00:02:19 <CakeProphet> shachaf: yes but none of those commands allow arbitrary strings.
00:02:19 <lambdabot> data O a b x = O (a (b x))
00:02:21 <lambdabot> data Tri f a = Tri (f a) (f a) (f a)
00:02:23 <lambdabot> Plugin `djinn' failed with: thread killed
00:02:35 <CakeProphet> shachaf: THERE'S TOTALLY A DIFFERENCE OKAY
00:02:45 <Sgeo> @djinn a -> a
00:02:46 <lambdabot> f a = a
00:02:56 <shachaf> CakeProphet: lambdabot just assumes that you'll be nice.
00:02:58 <Sgeo> Ok, so djinn thread dying != dkinn dead
00:03:08 <shachaf> CakeProphet: You can also get @admin-ed trivially.
00:03:16 <Sgeo> @admin
00:03:17 <lambdabot> Not enough privileges
00:03:31 <CakeProphet> shachaf: yes I know of that one.
00:03:40 * Sgeo doesn't
00:03:43 <CakeProphet> #haskell was way too spammy as it is.
00:03:49 <CakeProphet> just from the few seconds I was there.
00:04:07 <shachaf> CakeProphet: You came in in the mdidle of a game of golf, I think.
00:04:40 <CakeProphet> sounds fun.
00:04:43 <shachaf> elliott elliott elliott
00:04:52 <elliott> hi shachaf
00:04:53 <shachaf> It's a pretty good nick to type.
00:04:59 <shachaf> Not as good as geheimdienst, though.
00:05:05 <CakeProphet> > unwords $ fix (("elliott ":) . scanl (++) "elliott ")
00:05:07 <lambdabot> "elliott elliott elliott elliott elliott elliott elliott elliott elliot...
00:05:53 * Sgeo still needs to wrap his mind around folds and scans and unfolds
00:06:02 <CakeProphet> fold is easy.
00:06:09 <elliott> Sgeo:
00:06:09 <CakeProphet> scan is also easy
00:06:11 <elliott> > foldr f z [a,b,c,d]
00:06:12 <lambdabot> f a (f b (f c (f d z)))
00:06:13 <Sgeo> An unfold's just a way to make a list around an arbitrary function, right?
00:06:15 <elliott> > foldl f z [a,b,c,d]
00:06:16 <lambdabot> f (f (f (f z a) b) c) d
00:06:23 <elliott> > foldl1 f [a,b,c,d]
00:06:24 <lambdabot> f (f (f a b) c) d
00:06:28 <elliott> HTH.
00:06:40 <elliott> foldr f z is just s/(:)/f/, s/[]/z/.
00:06:59 <Sgeo> elliott, ooh, that's a nice way of thinking about it
00:06:59 <shachaf> unfoldr is annoying.
00:07:10 <elliott> Just pretend unfolds don't exist.
00:07:12 <elliott> They're ugly.
00:07:13 <Sgeo> :t unfoldr
00:07:14 <elliott> Also nobody ever uses them.
00:07:14 <lambdabot> forall b a. (b -> Maybe (a, b)) -> b -> [a]
00:07:22 <elliott> But what they do is pretty obvious.
00:07:26 <Gregor> !c printf("%d %d\n",9<<16,9<<16-1)
00:07:31 <EgoBot> 589824 294912
00:07:32 <elliott> Return Nothing, ends the list. Return Just (a,b), a gets added to the list and we start again with b.
00:07:36 <shachaf> elliott: All I said was that it was annoying.
00:07:38 <Gregor> Whoopsie poopsie.
00:07:45 <elliott> shachaf: So?
00:07:49 <elliott> Gregor: lol
00:07:53 <Sgeo> > unfoldr (\i -> Just (negate i, negate i)) 1
00:07:54 <lambdabot> [-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1...
00:07:55 <elliott> Gregor how big should my pools be.
00:08:03 <CakeProphet> `run echo "test" > /dev/audio
00:08:07 <Sgeo> > unfoldr (\i -> Just (i, negate i)) 1
00:08:08 <lambdabot> [1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1...
00:08:08 <HackEgo> bash: /dev/audio: Permission denied
00:08:09 <Phantom_Hoover> :t unfoldl
00:08:10 <lambdabot> Not in scope: `unfoldl'
00:08:10 <shachaf> Hmm, what if unfoldr's function returned a list instead of a Maybe?
00:08:13 <Phantom_Hoover> :t unfoldr
00:08:14 <elliott> > unfoldr (Just <$> id <*> succ) 0
00:08:14 <lambdabot> forall b a. (b -> Maybe (a, b)) -> b -> [a]
00:08:15 <lambdabot> Couldn't match expected type `a1 -> Data.Maybe.Maybe (a, b)'
00:08:15 <lambdabot> agains...
00:08:18 <elliott> > unfoldr (Just <$> id <*> succ) 0
00:08:19 <lambdabot> Couldn't match expected type `a1 -> Data.Maybe.Maybe (a, b)'
00:08:19 <lambdabot> agains...
00:08:21 <shachaf> It would be sort of like concatMap.
00:08:23 <CakeProphet> permission denied? I can't fathom why.
00:08:26 <shachaf> Except not a lot like concatMap.
00:08:28 <elliott> > unfoldr (Just <$> ((,) <$> id <*> succ)) 0
00:08:29 <lambdabot> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,...
00:08:44 <elliott> > unfoldr (fmap Just $ liftA2 (,) id succ) minBound
00:08:45 <lambdabot> [(),*Exception: Prelude.Enum.().succ: bad argument
00:08:51 <elliott> > unfoldr (fmap Just $ liftA2 (,) id succ) minBound :: [Word8]
00:08:52 <lambdabot> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,...
00:09:00 <CakeProphet> WOW INCREDIBLE
00:09:07 <CakeProphet> unfodlr, SO POWREFUL
00:09:09 <elliott> shachaf: Would that make any sense?
00:09:17 * Gregor reappears
00:09:20 <elliott> shachaf: What would [(1,x),(2,y)] mean? the x is pointless.
00:09:22 <Gregor> <elliott> Gregor how big should my pools be.
00:09:27 <Gregor> elliott: Depends, what for :P
00:09:29 <shachaf> elliott: Well, it could make a sort of tree.
00:09:32 <elliott> shachaf: You'd want a list where [] takes a value of a different type
00:09:38 <shachaf> Or it could concatenate the lists.
00:09:44 <Gregor> elliott: I found with GGGGC that so long as you can handle multiple pools well, getting more than a few megs doesn't help you much. Mine are 16MB.
00:09:49 <elliott> Gregor: @ :P
00:09:52 * shachaf hasn't thought it through. That's what you people are for.
00:10:00 <elliott> Gregor: 16 megs isn't practical, since there could be literally millions of these.
00:10:01 <copumpkin> elliott: I am disappoint. liftA2 (,) ?
00:10:09 <elliott> Gregor: Well, I suppose it'd WORK.
00:10:16 <elliott> Gregor: But I'd rather stay smaller to start with :P
00:10:18 <CakeProphet> monqy: perl has concatmap
00:10:23 <elliott> I think I'm going to end with variably-sized pools anyway.
00:10:24 <CakeProphet> monqy: what now?
00:10:27 <elliott> copumpkin: Yes, what of it?
00:10:29 <copumpkin> :t Just . (id &&& succ)
00:10:30 <lambdabot> forall b. (Enum b) => b -> Maybe (b, b)
00:10:33 <elliott> Applicative style was getting noisy there :P
00:10:36 <elliott> copumpkin: I don't like arrows, maaaaan.
00:10:45 <monqy> CakeProphet: hi
00:10:46 <copumpkin> that operator is so much bigger than arrows
00:10:48 <CakeProphet> monqy: hi
00:10:52 <copumpkin> it shouldn't be in Control.Arrow
00:11:01 <elliott> copumpkin: Yes, but while it is, I won't use it :)
00:11:10 <copumpkin> pfft
00:11:17 <elliott> copumpkin: It's in one of Kmett's thousand packages, I think bifunctors, but it has different strictness properties.
00:11:19 <CakeProphet> !perl print map {$_, $_+1} (1..5)
00:11:20 <copumpkin> then how about
00:11:20 <EgoBot> 1223344556
00:11:41 <copumpkin> :t (Just . fmap succ) :: a -> Maybe (a, a)
00:11:42 <lambdabot> Occurs check: cannot construct the infinite type: a = (a, a)
00:11:43 <lambdabot> In the expression: (Just . fmap succ) :: a -> Maybe (a, a)
00:11:44 <copumpkin> gah
00:11:47 <copumpkin> I fail
00:11:50 <copumpkin> :(
00:11:55 <CakeProphet> !perl print map {$_-1, $_, $_+1, $_*2} (1..5)
00:11:55 <EgoBot> 012212342346345845610
00:12:04 <copumpkin> :t (Just . fmap succ . join (,)) :: a -> Maybe (a, a)
00:12:05 <lambdabot> Could not deduce (Enum a) from the context ()
00:12:05 <lambdabot> arising from a use of `succ' at <interactive>:1:13-16
00:12:06 <lambdabot> Possible fix:
00:12:14 <copumpkin> :t (Just . fmap succ . join (,)) :: Enum a => a -> Maybe (a, a)
00:12:16 <lambdabot> forall a. (Enum a) => a -> Maybe (a, a)
00:12:19 <copumpkin> fuck you, haskell
00:12:22 -!- GreaseMonkey has joined.
00:12:26 <CakeProphet> monqy: did I mention that perl has concatmap?
00:12:33 <CakeProphet> because it does.
00:12:33 <monqy> i think so
00:12:33 <monqy> hi
00:13:47 <CakeProphet> GreaseMonkey: hi monqy: hi CakeProphet: hi
00:14:01 <CakeProphet> > var "hi"
00:14:02 <lambdabot> hi
00:14:09 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | Even a chipmunk can learn these cat training techniques | http://codu.org/logs/_esoteric/.
00:14:11 <Sgeo> :t concatMap
00:14:12 <lambdabot> forall a b. (a -> [b]) -> [a] -> [b]
00:14:26 <CakeProphet> Sgeo: >>= for lists
00:14:29 <elliott> Gregor: YOU RUINED THE SPAM
00:14:41 <shachaf> CakeProphet: It does?
00:14:49 <CakeProphet> shachaf: yes. I use it above
00:15:14 <shachaf> CakeProphet: That's not concatMap.
00:15:20 <CakeProphet> sure it is
00:15:30 <elliott> shachaf: It is, actually.
00:15:44 <Sgeo> :t (=<<)
00:15:45 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | Even elliott can learn these cat training techniques | http://codu.org/logs/_esoteric/.
00:15:45 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> m a -> m b
00:15:55 <shachaf> elliott: No, it won't turn a triply-nested list into a double-nested list, will it?
00:16:09 <elliott> shachaf: Yes, but only because N-nested lists == 0-nested lists in Perl.
00:16:09 <shachaf> s/le/ly/
00:16:19 <elliott> Gregor: Acceptable.
00:16:19 <shachaf> Right. So it's hardly concatMap.
00:16:35 <shachaf> It operates on a type with completely different semantics, for one.
00:16:36 <elliott> shachaf: If you can do "foo (\a -> [a,a+1,a+2])" and it does the obvious, I think it's concatMap.
00:17:00 <CakeProphet> !perl print map {1} [[1,2,3], [4,5,6]]
00:17:00 <EgoBot> 1
00:17:04 <Sgeo> Is shachaf criticising the Perl version of a function, or what?
00:17:04 <CakeProphet> >_>
00:17:17 <shachaf> Sgeo: The Perl function is fine! It's just not concatMap.
00:17:34 * Sgeo thought you were referring to >>= at first
00:17:41 <elliott> (>>=) = flip concatMap.
00:17:51 <CakeProphet> !perl print map {print} [[1,2,3], [4,5,6]]
00:17:51 <EgoBot> ARRAY(0x7f5b2609bb70)1
00:17:55 <CakeProphet> ah
00:17:57 <Sgeo> elliott, Yes, thank you, I'm aware
00:18:05 <shachaf> You might as well call a C function that operates on NULL pointers "concatMap", because Just Nothing ~ Nothing, and who cares that it's a one-element list?
00:18:06 <elliott> You're very welcome.
00:18:11 <CakeProphet> !perl print map {$_} [[1,2,3], [4,5,6]]
00:18:12 <EgoBot> ARRAY(0x7f895b267b78)
00:18:14 <elliott> shachaf++
00:18:20 <elliott> I would totally do that.
00:18:37 <CakeProphet> !perl print map {@$_} [[1,2,3], [4,5,6]]
00:18:38 <EgoBot> ARRAY(0x7f03e3258d48)ARRAY(0x7f03e3276b28)
00:18:58 * Sgeo laughs at Perl's broken Show instances (Yes, I know that's not what's going on)
00:19:11 <CakeProphet> perl is just bad at nested lists :P
00:19:21 <CakeProphet> bad at showing them anyway
00:19:54 <CakeProphet> anyway I'm actually kind of confused...
00:19:54 <elliott> I like how Sgeo constantly clarifies that he's not stupid.
00:20:05 <CakeProphet> !perl print map {@$_} ([1,2,3], [4,5,6])
00:20:06 <EgoBot> 123456
00:20:17 <CakeProphet> elliott: I would sometimes but it gets exhausting.
00:20:38 <Sgeo> I'm pretty sure some joke I've said has been misinterpreted as stupidity before
00:21:07 <CakeProphet> shachaf: does that count? :P
00:21:09 <Vorpal> elliott, hi
00:21:22 <elliott> Vorpal: helo
00:21:37 <Vorpal> elliott, is it normal for horses to have glowing (to the point of being noticeable in daylight) red eyes?
00:21:37 <shachaf> CakeProphet: I don't think asking me that question is strictly necessary to figure out what my answer would be.
00:21:50 <elliott> Um.
00:21:52 <CakeProphet> shachaf: so "yes" :P
00:22:08 <shachaf> Not quite.
00:22:11 <oklopol> Sgeo: and when i do something stupid, people think it's a joke. sucks to be you i guess.
00:22:12 <elliott> Vorpal: Check whether you're in the underworld or not.
00:22:34 <CakeProphet> elliott: well, Sweden is kind of like the underworld right?
00:22:41 <elliott> CakeProphet: Similar, but not quite.
00:22:43 <CakeProphet> maybe that's just what Swedish horses are like.
00:22:48 <elliott> The underworld is less hellish.
00:22:52 <Vorpal> elliott, right.
00:22:55 <elliott> And the temperatures are more humane.
00:22:56 <Vorpal> elliott, nope.
00:23:02 <Vorpal> elliott, let me upload a photo
00:23:59 <oerjan> :t Just . runState $ modify succ
00:24:00 <lambdabot> forall s. (Enum s) => Maybe (s -> ((), s))
00:24:06 <oerjan> oops
00:24:12 <CakeProphet> shachaf: it's the same thing, you just have to do the awkward dance that Perl makes you do to get nested lists of any sort.
00:24:33 <oerjan> :t Just . (runState $ modify succ)
00:24:34 <lambdabot> forall s. (Enum s) => s -> Maybe ((), s)
00:24:42 <oerjan> oh darn
00:24:51 <shachaf> Why am I spending my time arguing about Perl?
00:24:59 * oerjan sics zzo38 at modify
00:25:05 <CakeProphet> shachaf: BECAUSE IT'S IMPORTANT SHIT MAN
00:25:14 <CakeProphet> life changing consequences.
00:25:27 <Vorpal> elliott, here: http://i.imgur.com/BgF7p.jpg
00:25:32 <CakeProphet> also it's not an argument until we're both Hitler.
00:25:41 <Vorpal> elliott, I took this just across the road
00:25:44 <elliott> Vorpal: Perfectly ordinary for Sweden.
00:25:53 <elliott> Vorpal: As is the shockingly low texture resoution.
00:25:56 -!- pagnol has quit (Ping timeout: 252 seconds).
00:25:57 <Vorpal> elliott, ah, nothing to worry about then?
00:25:59 <elliott> And shiny rocks.
00:26:29 <Vorpal> elliott, yes, it is probably gneiss or something?
00:26:37 <Jafet> Probably just red-eye effect.
00:26:51 <Vorpal> Jafet, hm pretty sure I had the flash off
00:27:13 <elliott> Vorpal: No, I think you just get children to polish them?
00:27:20 <oerjan> those are some very gneiss rocks
00:27:32 <Vorpal> elliott, oh perhaps. Yeah since we can't kill them we have to do /something/.
00:27:54 <elliott> Have you considered building an army of pregnant people and children.
00:28:23 <CakeProphet> elliott: I certainly have.
00:28:27 <CakeProphet> it's on my to-do list.
00:28:35 <Vorpal> elliott, nah, too expensive. What with us reducing the defence budget every year. I think it must be some weird sort of counterbalance to the US defence budget
00:28:47 <elliott> Vorpal: Do you even need an army?
00:28:52 <Phantom_Hoover> elliott, hey, shiny rocks are *my* shtick.
00:29:12 <elliott> I'm trying to think of why anyone would want Sweden and I'm coming up blank.
00:29:28 <Phantom_Hoover> elliott, to control... um...
00:29:28 <CakeProphet> sexy Swedish chicks.
00:29:35 <Vorpal> elliott, terrorists that mistook us for Denmark?
00:29:55 -!- MSleep has changed nick to MDude.
00:29:58 <Phantom_Hoover> CakeProphet, your BDSM fantasies are not enough of a justification for invasion.
00:30:12 <oerjan> http://trauskeneventyr.blogspot.com/2010/07/grimsborken.html particularly the last one
00:30:31 <Vorpal> elliott, btw I turned self-shadowing trees on in the .ini file, it improved the realism quite a bit.
00:30:47 <CakeProphet> Phantom_Hoover: you know nothing about being a king.
00:31:31 <Vorpal> oerjan, ?
00:31:43 <Gregor> Added registers to my dc :)
00:31:46 <Phantom_Hoover> CakeProphet, I know that declaring wars on people because their women are sexy is not an especially good way of continuing to be a king.
00:31:57 <Vorpal> oerjan, why should I read a very very long Norwegian text?
00:32:03 <CakeProphet> Phantom_Hoover: why so serious?
00:32:09 <Jafet> It has worked very well for many kings in the past.
00:32:16 <Phantom_Hoover> CakeProphet, please don't put a smile on that face.
00:32:18 <Vorpal> Gregor, btw did that JIT idea work out?
00:32:46 <Phantom_Hoover> Jafet, yeah, but they tended to *balance* the sexy women against the size of the army guarding them.
00:33:04 <oerjan> Vorpal: no, just the pictures
00:33:17 <Gregor> Vorpal: Yeah, but it took a couple days to make it work :P
00:33:21 <Phantom_Hoover> Gmail why does your planets theme have pictures of the sun.
00:33:25 <Vorpal> Gregor, so how does it work?
00:33:41 <zzo38> oerjan: Can you tell me exactly how you mean by "sics zzo38 at modify"? Were you trying to question me or something like that?
00:33:46 <Gregor> Vorpal: I'll describe in PM
00:33:49 <Vorpal> anyway, who *did* recognize that horse? Hint: Oblivion players please stand up.
00:33:59 <Vorpal> Gregor, okay.
00:34:12 <zzo38> someone else other than oerjan: Do you have the moustache like Hitler has, even though you are not Hitler?
00:34:41 <Vorpal> zzo38, why aren't you asking oerjan ?
00:34:44 <Phantom_Hoover> Vorpal, did you really play as /yourself/.
00:34:44 <elliott> <Phantom_Hoover> CakeProphet, I know that declaring wars on people because their women are sexy is not an especially good way of continuing to be a king.
00:34:50 <elliott> Have you ever even played Dwarf Fortress?
00:34:51 <Vorpal> Phantom_Hoover, ?
00:35:01 <Phantom_Hoover> elliott, um dude their women don't even have beards.
00:35:08 <elliott> Phantom_Hoover: Point.
00:35:22 <zzo38> Vorpal: Because I asked oerjan different question. But they can answer anyways if they want to, since it is IRC and anyone can question/answer anything if it is public channel.
00:35:22 <Phantom_Hoover> (Female dorfs don't actually have beards in game, but everybody thinks they do.)
00:35:32 <oerjan> Vorpal: because i've already told i'm clean shaven
00:35:39 <elliott> oerjan: SHUT UP DIJKSTRA
00:35:57 <Vorpal> <Phantom_Hoover> Vorpal, did you really play as /yourself/. <-- what do you mean?
00:36:00 <oerjan> zzo38: i just tried to do a haskell trick which would have worked if modify had the type you suggested it should have once
00:36:03 <Phantom_Hoover> In Skyrim.
00:36:07 <elliott> oerjan: BEHOLD YOU: http://www.knowledgerush.com/wiki_image/0/0a/Edsger_Dijkstra_large.jpg
00:36:24 <Phantom_Hoover> Did you attempt to accurately recreate Arvid Norlander of wherever the hell it is you are from.
00:36:29 <Vorpal> Phantom_Hoover, eh? Yes I'm a magician that ride a red eyed horse in real life?
00:36:36 <zzo38> oerjan: O, that is what you meant. In that case I agree.
00:36:39 <Phantom_Hoover> I mean in terms of appearance etc.
00:37:14 <oerjan> <Phantom_Hoover> Gmail why does your planets theme have pictures of the sun. <-- well the ancients considered the sun a planet, i think
00:37:19 <Vorpal> Phantom_Hoover, not really, I went with standard nord and added a beard. Then I tried to think of a typical nord name and I realised my name fitted right in there,
00:37:25 <Vorpal> s/,/./
00:37:28 <Phantom_Hoover> Gmail: written by the ancients.
00:37:56 <zzo38> The reason the planets theme have pictures of the sun is that the planets have to go around the sun. If there is no sun, what will the planets orbit around?
00:38:08 <elliott> zzo38: THEMSELVES
00:38:34 <Phantom_Hoover> The reason the cute animals collection includes pictures of intestines is that cute animals have to have intestines.
00:38:47 <pikhq_> zzo38: The Earth.
00:38:55 <pikhq_> Which, of course, is not a planet.
00:38:58 <Vorpal> Phantom_Hoover, I guess I can upload a screenshot of myself as I'm currently playing. Hm that looks kind of like assassin of the north or something. Thieves guild armour.
00:39:04 <zzo38> The other possibility is the use of the word "planet" in the old way instead of the new way (the old way is still used in astrology)
00:39:19 <oerjan> elliott: that picture is so very almost but not quite unlike me
00:39:22 <zzo38> Phantom_Hoover: But surely intestines must be inside so that you cannot see it from outside, isn't it?
00:39:24 <elliott> oerjan: ITV IS YOU SHUT UP!!
00:39:26 <elliott> <
00:39:44 <Phantom_Hoover> zzo38, you can't exactly see the sun in most pictures of planets either.
00:40:13 <oerjan> the part that fits is i'm pale skinned
00:40:15 <Vorpal> Phantom_Hoover, upload going to take a while
00:40:29 <zzo38> pikhq_: Of course Earth is planet! You can put everything orbiting the Earth if you want to, but then, the orbit will be more complicated. That is why you have to orbit the Sun, to simplify the orbiting.
00:41:11 <zzo38> Phantom_Hoover: Then it must be either because they use the older word "planet" or because they don't have enough planets so they have to include the sun as well.
00:41:48 <elliott> pikhq_: HOW BIG SHOULD MY POOLS BE
00:42:03 <pikhq_> zzo38: I say, son, that was a joke son!
00:42:10 <Vorpal> <Phantom_Hoover> zzo38, you can't exactly see the sun in most pictures of planets either. <-- what about in an image of mercury? It should be fairly big that close to the sun
00:42:26 <Vorpal> err typoed that
00:42:34 <oerjan> `addquote <Phantom_Hoover> The reason the cute animals collection includes pictures of intestines is that cute animals have to have intestines.
00:42:34 <Vorpal> err no
00:42:36 <HackEgo> 725) <Phantom_Hoover> The reason the cute animals collection includes pictures of intestines is that cute animals have to have intestines.
00:42:42 <pikhq_> elliott: Let's go with a nice constant... 1024 pages?
00:42:54 <elliott> pikhq_: ...4 gig heaps?
00:42:58 <elliott> s/heaps/pools/
00:42:59 <pikhq_> (probably actually not that good an idea)
00:43:07 <elliott> Gregor said 16 megs :P
00:43:12 <Phantom_Hoover> elliott, 2500000l!
00:43:21 <Vorpal> elliott, Phantom_Hoover https://imgur.com/zZSHR and https://imgur.com/u4OYh
00:43:22 <elliott> I'm trying to figure out how much I'll lose with 16 megs + 4 unused megs pools.
00:43:26 <pikhq_> elliott: What page size are you thinking of, anyways?
00:43:26 <elliott> Lose in terms of the unused space, that is.
00:43:35 <elliott> pikhq_: No reason to go below 4 megs, is there?
00:43:51 <shachaf> This channel really ought to stop talking when I'm not around.
00:43:53 <oerjan> elliott: you should have a pool big enough to swim in, but not big enough to get lost
00:43:53 <pikhq_> More granularity, and there is nothing restricting you to a single page size on x86_64.
00:43:54 <Phantom_Hoover> Vorpal, so you look like an assassin of the North in that there is nothing remotely Northern about you?
00:43:58 <shachaf> Otherwise there's too much backlog.
00:44:00 <oerjan> hth
00:44:03 <Vorpal> Phantom_Hoover, well I'm playing a nord?
00:44:07 <elliott> pikhq_: I don't see the advantage of granularit.
00:44:09 <elliott> y.
00:44:18 <Vorpal> Phantom_Hoover, but yeah
00:44:31 <Vorpal> Phantom_Hoover, can't say I don't look like a ninja though.
00:44:47 <elliott> Yes.
00:44:49 <elliott> Yes, you can.
00:44:50 <Phantom_Hoover> Ninjas do not, to my mind, conjure images of the frigid northlands.
00:44:56 <Vorpal> Phantom_Hoover, true
00:45:09 <Vorpal> Phantom_Hoover, I guess I could fetch a horned helmet from somewhere and take a new screenshot. Though that is not authentic nordic at all
00:45:12 <CakeProphet> what's good reading material about Haskell and low-level implementation.
00:45:13 <pikhq_> elliott: You can't think of *any* time that 2 megabytes would be too big?
00:45:25 <elliott> pikhq_: I said 4.
00:45:30 <pikhq_> elliott: You can't have 4.
00:45:36 <Phantom_Hoover> Vorpal, I'm going to stop you here and tell you that I already know that Viking helmets didn't have horns.
00:45:36 <elliott> CakeProphet: /implementation of fp languages/, spj?
00:45:51 <pikhq_> elliott: The page sizes are 4 KiB, 2 MiB, and 1 GiB.
00:45:56 <Gregor> <pikhq_> (probably actually not that good an idea) // typically pools aren't very large, you just have a lot of them.
00:45:58 <CakeProphet> basically "how pure functional languages are efficiently implemented"
00:46:03 * Phantom_Hoover → sleep
00:46:06 -!- Phantom_Hoover has quit (Quit: Leaving).
00:46:25 <elliott> CakeProphet: yes.
00:46:29 <Vorpal> pikhq_, iirc the linux kernel uses 1 GiB hugepages internally to map all the physical ram in the computer
00:46:31 <elliott> http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/
00:46:32 <elliott> free
00:46:37 <pikhq_> Vorpal: Quite plausibly.
00:46:44 <shachaf> elliott: That's a bit old, though.
00:46:50 <elliott> shachaf: CakeProphet is old.
00:46:51 <pikhq_> Vorpal: The less TLB use, the better.
00:46:52 <elliott> Or something.
00:46:55 <Vorpal> pikhq_, quite
00:46:56 <elliott> pikhq_: I thought the 2 Mio one doubled if you did something.
00:47:06 <elliott> 1 gig pages don't really work for me.
00:47:06 <Gregor> Heyo, just broke virtually every platform with the power of conditionals.
00:47:10 <shachaf> CakeProphet: http://www.scs.stanford.edu/11au-cs240h/notes/ghc-slides.html#(1) has a bunch of introductory slides and links to various papers.
00:47:10 <pikhq_> elliott: If you pretend it doubles. :P
00:47:15 <CakeProphet> "The big arrows, at the top left and right of each page, move backward and forward one page."
00:47:18 <CakeProphet> wow thanks Simon
00:47:24 <oerjan> CakeProphet: also the ghc compiler commentary, i imagine
00:47:27 <elliott> CakeProphet: Dude, http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/slpj-book-1987.pdf.
00:47:28 <Vorpal> <Gregor> Heyo, just broke virtually every platform with the power of conditionals. <-- hm?
00:47:37 <zzo38> In much older times they did not call the Earth a planet.
00:47:41 <shachaf> CakeProphet: In particular I've seen _Implementing lazy functional languages on stock hardware: the Spinesless Tagless G-Machine_ recommended.
00:47:50 <shachaf> CakeProphet: Also _How to Make a Fast Curry_
00:48:26 <CakeProphet> zzo38: technically in newer times, I suppose.
00:48:28 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:48:39 <oerjan> wrt to viking helmets having/not having horns, is that an example where both something _and_ its opposite is a meme...
00:48:59 <Vorpal> oerjan, is there a meme here?
00:49:25 <elliott> pikhq_: Anyway, no, I don't see where 2 megs would be too big.
00:49:28 <Vorpal> anyway I believe there are horned iron helmets in skyrim. I generally have way better armour though.
00:49:35 <Vorpal> at the current point in the game I mean
00:49:46 <elliott> pikhq_: Although I could actually use 1 Gio pages, to store huge pools.
00:51:01 <oerjan> Vorpal: note that "meme" does not _actually_ mean internet fad, despite appearances.
00:51:11 <CakeProphet> elliott: why did you link me to the same thing twice?
00:51:18 <elliott> CakeProphet: I didn't.
00:51:25 <oerjan> viking helmet having horns is obviously a meme from at least the 19th century
00:51:28 <Vorpal> oerjan, oh right
00:51:42 <pikhq_> elliott: So, you're perfectly happy with 2 megs being the minimum contiguous allocation, and everything doing smaller allocations being piled on top of that?
00:51:55 <elliott> pikhq_: Yeah, because allocations have a 1:1 mapping with pages?
00:52:09 <oerjan> viking helmets _not_ having horns keeps being brought up by pedants as a response to the first one
00:52:12 <pikhq_> Physical memory allocations do.
00:52:16 <pikhq_> And with 2 megs being the minimum boundary for *any* page munging?
00:52:27 <elliott> pikhq_: I don't see the problem *shrugs*
00:52:32 <shachaf> Real Programmers use 16GB pages.
00:52:53 <Vorpal> shachaf, does x86 support that?
00:52:56 <CakeProphet> oerjan: but everyone knows that viking helmets actuallly did have hrosn
00:53:17 <oerjan> CakeProphet: yeah they just horribly misspell it as horns
00:53:34 <elliott> viking hrosn
00:53:36 <shachaf> Vorpal: I don't think so, but I think PowerPC does.
00:53:37 <oerjan> hrosn is _so_ plausibly a norse word
00:53:47 <pikhq_> Let's say you're COWing a 4k object. Do you want to get a page fault happening (and thus a copy) when the one or two 4k pages that's on get written to, or do you want it happening when the one or two 2m pages that's on get written to?
00:53:56 <Vorpal> shachaf, ah
00:54:06 <CakeProphet> pikhq_: your mom is a 4k object oooooooooh
00:54:20 <shachaf> Vorpal: Apparently you can get 1GB pages, though.
00:54:47 <elliott> pikhq_: I'm pretty sure it's faster to copy 4k than to COW it.
00:55:05 <elliott> pikhq_: In fact, I bet 2 megabytes is damn close to the sweet spot where COW gets better than an optimised copy routine.
00:55:06 <pikhq_> Okay, contrived example. *Still*.
00:55:08 <CakeProphet> COWing your mom persists long into the night.
00:55:35 <elliott> Seriously though, I don't see any problem yet at all :P
00:55:44 <oerjan> CakeProphet: what BULL
00:56:14 <pikhq_> You see no problem *at all* with only being able to change virtual memory at 2MB boundaries. When ideally you'd be able to change it at 1B boundaries.
00:56:43 <pikhq_> Oh, and by the way, it takes hardly any effort to support multiple page sizes.
00:56:49 <elliott> pikhq_: Oh stop saying "do you *really* not see any problem?!?!" and give me an example of an actual issue :P
00:56:49 <CakeProphet> oerjan: ..
00:57:31 <CakeProphet> elliott: do you *really* not see the actual issue?
00:57:47 <oerjan> CakeProphet: i'm just HORSing around
00:57:53 <CakeProphet> 1?!
00:58:17 <CakeProphet> 1!!
00:58:43 <CakeProphet> @src lines
00:58:44 <lambdabot> Source not found. My brain just exploded
00:58:57 <CakeProphet> @src unlines
00:58:57 <lambdabot> unlines = concatMap (++ "\n")
00:59:10 <CakeProphet> @src unlineso_0
00:59:10 <lambdabot> Source not found.
00:59:36 <oerjan> lines is presumably rather larger
00:59:55 <CakeProphet> @src intercalate
00:59:56 <lambdabot> intercalate xs xss = concat (intersperse xs xss)
01:00:03 <CakeProphet> @src intersperse
01:00:03 <lambdabot> intersperse _ [] = []
01:00:03 <lambdabot> intersperse _ [x] = [x]
01:00:04 <lambdabot> intersperse sep (x:xs) = x : sep : intersperse sep xs
01:00:18 <pikhq_> Hmm. Trying to think of some things that are inherently on a page boundary.
01:00:24 <pikhq_> Mostly I'm thinking of mmap...
01:00:27 <CakeProphet> pages
01:00:29 <CakeProphet> >_>
01:00:38 <CakeProphet> inherently are on page boundaries.
01:00:40 <CakeProphet> is that helpful?
01:00:54 <pikhq_> CakeProphet: No, it's about as helpful as remarking that 2+2=4
01:01:10 <CakeProphet> > 2 + 2 == 4
01:01:11 <lambdabot> True
01:01:15 <CakeProphet> but it totally is!
01:01:28 <elliott> pikhq_: mmap doesn't really apply :P
01:01:52 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.1.0/src/Data-List.html#lines
01:02:31 <pikhq_> elliott: mmap is more the "Swiss army knife of memory" in common UNIXes than just "I want to map the file into memory"
01:02:32 <CakeProphet> oerjan: beautiful code
01:02:43 <elliott> pikhq_: Yep, and @ isn't a common Unix.
01:02:53 <shachaf> elliott: Wait, @ isn't going to be UNIX, is it?
01:03:03 <CakeProphet> ,,duh :P
01:03:06 <elliott> Hell naw. That Jurassic Park character has no chance.
01:03:12 <elliott> @ is pro-dinosaur.
01:03:22 <pikhq_> elliott: Hmm. And page permissions are much less relevant...
01:03:26 <Sgeo> You should still get that file manager workijg
01:03:34 <CakeProphet> file manager haha
01:03:35 <Sgeo> Even though @ probably won't have files as we know them?
01:03:35 <elliott> Sgeo: What.
01:03:46 <elliott> pikhq_: Try "completely irrelevant", most likely :P
01:04:01 <Sgeo> Get a file manager working on a new OS that doesn't have files.
01:04:18 <elliott> Sgeo: What file manager.
01:04:28 <Sgeo> The thingy in Jurrasic Park
01:04:28 <Sgeo> iirc
01:04:38 <elliott> Oh.
01:04:43 <shachaf> elliott: @ isn't going to have a 3D file browser? :-(
01:04:54 <elliott> shachaf: Better: 3D VALUE browser!
01:05:00 <monqy> file browsers can go to hell
01:05:02 <elliott> shachaf: Inspect constructors! Build up thunks!
01:05:07 <elliott> FORCE THEM TO COLLAPSE INTO VALUES
01:05:09 <shachaf> EXCUSE *ME*!
01:05:24 <CakeProphet> elliott: rewrite them indsicriminantly? :(
01:05:25 * shachaf goes back to Windows Explorer.
01:05:34 <shachaf> @ supports mutation everywhere.
01:06:04 <elliott> The nice thing about forcing thunks is that it's mutation that doesn't change the value.
01:06:05 <elliott> x = x;
01:06:09 -!- azaq23 has quit (Quit: Leaving.).
01:06:18 <elliott> This is why I call evaluation "Objectivist mutation".
01:06:21 <elliott> (I don't actually do that.)
01:06:33 <monqy> oh good i was scared there for a momen
01:06:33 <monqy> t
01:06:41 <Sgeo> Is that a behavior that can be relied upon?
01:06:47 <elliott> Sgeo: Eh?
01:06:52 <CakeProphet> Sgeo: see: Haskell
01:07:00 <Sgeo> elliott, Forced thunks staying forced
01:07:08 <elliott> Sgeo: In what?
01:07:09 <elliott> @? GHC?
01:07:09 <lambdabot> Plugin `compose' failed with: Unknown command: ""
01:07:18 <Sgeo> Haskell, non-specific to GHC
01:07:38 <elliott> Haskell has no notion of "thunks".
01:07:50 <Sgeo> Basically, whether the pure memoization stuff is portable
01:07:51 <elliott> Nor "forcing".
01:08:01 <elliott> It is perfectly legitimate to implement Haskell as string rewriting.
01:08:12 <CakeProphet> in Perl.
01:08:22 <zzo38> I believe there is a 3D gopher browser exists, in case some people prefer that way. And you probably need some way to access file systems even if the operating system has no files (it can be command-line, GUI, or something different), to operate with other system using files. Such as, FTP, and Plan 9, and so on
01:08:44 <CakeProphet> the perl interpreter compiles your Haskell functions to regex and then uses them to make substitions on other source code.
01:08:44 <shachaf> elliott: Hey, hey, hey. Legitimate as in "valid according to the Report" or legitimate as in "legitimate"?
01:08:58 <elliott> shachaf: Legitimate as in "legal in all 52 states".
01:09:23 <shachaf> The 52 states being the 50 states of the US, and then "other land" and "other water"?
01:09:26 <Sgeo> That's a pretty broad cange
01:09:37 <Sgeo> erm, ignoring the 52 bit thingy
01:09:37 <elliott> shachaf: The last 2 are secret.
01:09:42 <elliott> Sgeo: What.
01:09:55 <Sgeo> I think I can, without getting arrested, call a Brainfuck interpreter a "Haskell compiler"
01:10:07 <CakeProphet> no
01:10:10 <monqy> ill arest you
01:10:13 <CakeProphet> I will arr-- yes
01:10:13 <shachaf> And Sgeo was never heard from again.
01:10:46 <zzo38> Sgeo: You probably could without getting arrested, but I doubt it will help anyone to do that, because it is still a lie even if it is not illegal to lie in that way.
01:11:16 <Sgeo> It will help my sense of legitimacy.
01:11:53 <zzo38> O, that is what it is.
01:12:54 <Sgeo> zzo38, we were discussing definitions of "legitimate".
01:13:12 <monqy> we were?
01:13:12 <Sgeo> Lying in such a way would, according to one of those definitions, still be legitimate
01:13:27 * Sgeo thought we were
01:14:25 <elliott> So I had a dream where the moon was evil.
01:14:47 <elliott> pikhq_: Got any examples yet? :P
01:14:55 <shachaf> So I had a dream where the nom was alive.
01:15:46 <CakeProphet> mmmm cornbread and milk
01:16:33 * shachaf soon off to see _Rosencrantz and Guildenstern Are Dead_.
01:17:18 -!- hagb4rd has joined.
01:19:49 <elliott> pikhq_: You're wrong, x86-64 has 4 meg hugepages.
01:20:03 <elliott> Oh, wait.
01:20:04 <elliott> PAE halves that.
01:20:06 <elliott> Lame.
01:21:15 <shachaf> elliott: For x86-64?
01:21:25 <elliott> shachaf: ?
01:21:42 <shachaf> Do you use PAE on x86-64?
01:21:53 <shachaf> Oh.
01:21:56 * shachaf was confused.
01:22:07 <elliott> shachaf: x86-64 /is/ PAE.
01:22:11 <elliott> Plus bigger registers.
01:22:14 <elliott> Plus some stuff.
01:22:23 <shachaf> Right. Are you sure you don't get 4MB pages?
01:22:42 <elliott> "4M (2M in PAE mode)"
01:22:43 <elliott> "Starting with the Pentium Pro, x86 processors support 4MB pages (called Page Size Extension) (2MB pages if using PAE)"
01:22:46 <shachaf> I'm pretty sure I did, this one time.
01:23:12 <shachaf> Hmm.
01:23:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
01:27:45 <elliott> pikhq_: BTW, the reason I was thinking that pool-per-thread would be nice is that I could store the pool pointer on the stack.
01:29:03 <elliott> hmm... I forget whether "add [foo], bar" is ok
01:29:43 <elliott> pikhq_: Wait, using dynamically-sized pages DOES have a use!
01:29:52 <elliott> pikhq_: I can make the barrier page after each pool just 4k in size.
01:30:01 <elliott> That's a lot less wasteful, and the vast majority of allocations are still <4k.
01:32:15 <CakeProphet> > listArray (0, 5000) [1..]
01:32:16 <lambdabot> array (0,5000) [(0,1),(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(8,9),(9,10...
01:32:26 * CakeProphet just tipped the scales a little bit.
01:32:40 <CakeProphet> that's one more >4k in the world.
01:32:45 <CakeProphet> +allocation
01:34:32 <elliott> More, since arrays are boxed.
01:36:05 <CakeProphet> hmmm, so..
01:36:20 <zzo38> I notice you can make Applicative by pure and <*> and then make fmap by liftA but is there something possible that you can define pure and fmap and some new function to make <*> resulting (like how monads you can have fmap/join/return, or bind/return and it can make fmap/join from that)?
01:36:23 <CakeProphet> the OS gives out pages, and then it's the languages job to fill those pages correctly?
01:36:23 <elliott> pikhq_: Hmm, OK, you're right that 2 megs is a bit too big.
01:36:47 <elliott> pikhq_: Because threads obviously need at least one page of memory, and I want millions of threads running simultaneously.
01:37:00 <elliott> Hmm, wait.
01:37:03 <elliott> I was confusing megabytes and gigabytes.
01:37:34 <elliott> I can support 512 million threads with a 16 meg heap each with less than 8 gigs of RAM :P
01:37:55 <elliott> Err, wait.
01:37:58 -!- lifthrasiir has quit (Quit: 오후에 봐요 ㅂㅂ).
01:38:06 <elliott> No I can't X-D
01:38:36 <shachaf> elliott: Turns out you can support 5.12 threads at most?
01:38:50 <elliott> OK, yeah, 2 megabytes of physical RAM per thread scales to... 4000 threads with 8 gigs of RAM.
01:38:54 <elliott> Not good enough.
01:38:59 <elliott> shachaf: The best number of threads!
01:39:09 <elliott> shachaf: 4 to do your work, 1 to manage it, and .12 to schedule them all.
01:39:31 <shachaf> elliott: Why do you need so much RAM per thread?
01:39:42 <zzo38> Do you think this plan is OK for DVI writing functions: createDVI :: FilePath -> Word32 -> Ratio Word32 -> IO DocStat; shipOut :: Page -> IO DocStat; finishDVI :: DocStat -> IO DocStat;
01:40:03 <elliott> shachaf: Well, the idea right now is to give each thread a pool. And a pool has to be a multiple of the page size.
01:40:30 <elliott> Wait, GHC gives each thread 512 kilobytes of nursery, so how come it can do millions of threads?
01:40:36 <elliott> A million threads should require 488 gigabytes like that.
01:40:46 <elliott> Or is it relying on the OS to not actually allocate that much physical RAM?
01:40:50 <elliott> (Answer: Almost certainly.)
01:40:58 <shachaf> Which is a reasonable thing to do.
01:40:59 <elliott> Or maybe the nursery is per-OS thread.
01:41:01 <elliott> That wouldn't surprise me.
01:41:04 <elliott> shachaf: Yes, but not if you're an OS.
01:41:18 <shachaf> elliott is an OS.
01:41:21 <shachaf> @lliott
01:41:21 <lambdabot> Unknown command, try @list
01:41:22 <elliott> Yes.
01:41:26 <elliott> That is my secret.
01:41:43 <CakeProphet> I was under the impression that programs could address more RAM than physically exists on the system without any issue.
01:41:50 <elliott> Yes, they can.
01:42:02 <shachaf> elliott: *That* is your secret?
01:42:15 <elliott> Who wouldn't be ashamed of their true OS nature?
01:42:16 <elliott> ANYWAY
01:42:25 <elliott> I wonder if maybe I can avoid giving threads pools altogether.
01:42:36 <elliott> The question then is how on earth I divide pools to be able to do GC.
01:42:38 <shachaf> What about the ▬▬▬▬▬▬▬▬ ▬▬▬▬▬ ▬▬ ▬▬▬▬▬?
01:43:04 <elliott> The hunter2?
01:43:41 <shachaf> Oh, wow, Unicode has a great selection of block characters.
01:44:10 <elliott> Totally.
01:44:22 <shachaf> 2580 UPPER HALF BLOCK [] 2581 LOWER ONE EIGHTH BLOCK [▁] 2582 LOWER ONE QUARTER BLOCK [▂] 2583 LOWER THREE EIGHTHS BLOCK [▃] 2584 LOWER HALF BLOCK [] 2585 LOWER FIVE EIGHTHS BLOCK [▅] 2586 LOWER THREE QUARTERS BLOCK [▆] 2587 LOWER SEVEN EIGHTHS BLOCK [▇] 2588 FULL BLOCK [] 2589 LEFT SEVEN EI
01:45:12 <oerjan> zzo38: well you can define (<*>) = liftA2 id
01:45:26 <elliott> shachaf: Did you see my wonderful Unicode sparklines of channel activity?
01:45:32 <shachaf> 2580 -- UPPER HALF BLOCK []; 2581 -- LOWER ONE EIGHTH BLOCK [▁]; 2582 -- LOWER ONE QUARTER BLOCK [▂]; 2583 -- LOWER THREE EIGHTHS BLOCK [▃]; 2584 -- LOWER HALF BLOCK []; 2585 -- LOWER FIVE EIGHTHS BLOCK [▅]; 2586 -- LOWER THREE QUARTERS BLOCK [▆]; 2587 -- LOWER SEVEN EIGHTHS BLOCK [▇]; 2588 -- FULL BLOCK []; 2589 -- LEFT SEVEN EIGHTHS BLOCK [▉]; 258A -- LEFT THREE QUARTERS BLOCK [▊]; 258B -- LEFT FIVE EIGHTHS BLOCK [▋]; 258C -- LEFT HAL
01:45:38 <elliott> left hal
01:45:50 <shachaf> elliott: No. I hate anything whose name is "sparklines".
01:46:04 <elliott> shachaf: I can hear Tufte crying.
01:46:17 <shachaf> It's just the name.
01:46:54 <elliott> "Hello. I would have probably donated, but the left-wing extremism here and the weaselly use of the 'rules' to justify that left wing bias leaves a permanent bad taste in my mouth. I've paid attention to key subjects' discussion pages and I've seen how WP runs off all the right-wing conservatives, right-libertarians, constitutionalists, anti-globalization patriots, etc... Now I must say, WP is to academia what McDonald's is to restaurants."
01:47:00 <elliott> I love [[Talk:Main Page]].
01:47:52 <CakeProphet> neutrality - part of the left-wing agenda
01:48:45 <oerjan> > Left $ pred <*> "IBM"
01:48:46 <lambdabot> Couldn't match expected type `(a -> b) -> a'
01:48:46 <lambdabot> against inferred type ...
01:48:51 <oerjan> wat
01:48:53 <oerjan> oh
01:48:56 <shachaf> elliott: Fortunately there's Conservapedia.
01:48:58 <oerjan> > Left $ pred <$> "IBM"
01:48:59 <lambdabot> Left "HAL"
01:49:06 <elliott> shachaf: Thank god.
01:49:09 <elliott> oerjan: aka map
01:49:31 <shachaf> > succ <$> "VMS"
01:49:32 <lambdabot> "WNT"
01:49:46 * shachaf looks up [[Talk:Main Page]] on Conservapedia.
01:49:51 <shachaf> elliott: What were you doing reading that, anyway?
01:49:56 <elliott> shachaf: It's the best page.
01:50:25 <elliott> > let rot _ [] = []; rot 0 xs = xs; rot n (x:xs) = rot (n-1) xs ++ [x] in rot 13 ['a'..'z']
01:50:26 <lambdabot> "nopqrstuvwxyzmlkjihgfedcba"
01:50:29 <oerjan> > pred <$> "OSX
01:50:30 <lambdabot> <no location info>:
01:50:30 <lambdabot> lexical error in string/character literal at end o...
01:50:32 <oerjan> > pred <$> "OSX"
01:50:33 <lambdabot> "NRW"
01:50:39 <oerjan> > succ <$> "OSX"
01:50:40 <lambdabot> "PTY"
01:50:41 <shachaf> elliott: Better than [[Elections in Zimbabwe]]?
01:51:42 <elliott> shachaf: The most thrilling page.
01:51:47 <shachaf> "On more than one occasion, Obama verbally attacks the economic livelihood of Las Vegas for unknown reasons. The reason may be his contempt of gambling which is forbidden in the Koran."
01:51:56 <elliott> X-D
01:52:17 <elliott> shachaf: And yet: Morally bankrupt Massachusetts opens the floodgates to gambling, despite its negative impact on the poor. [29]
01:52:37 <elliott> Oh, someone beat me to it: http://conservapedia.com/Talk:Main_Page#Gambling_story
01:53:12 <CakeProphet> Mercury's surface - evolutionists have to admit what they generally thought was wrong [5] God vs. evolutionists - God wins again!
01:53:16 <CakeProphet> bahahaha
01:53:35 <zzo38> oerjan: I know about "liftA2 id" but that uses <*> in the definition if liftA2
01:53:58 <oerjan> > let rot = (uncurry (flip (++)) .) . splitAt in rot 13 ['a'..'z']
01:53:59 <lambdabot> "nopqrstuvwxyzabcdefghijklm"
01:54:08 <elliott> "Global atheism is in decline in terms of the number of its adherents and the grassroots Question evolution! campaign could certainly accelerate this decline."
01:54:12 <elliott> So beautiful.
01:54:26 <oerjan> zzo38: well _every_ applicative operation can be written using pure and (<*>)
01:54:30 <elliott> oerjan: now define an elegant rot13 character function :P
01:54:39 <pikhq_> I think the worst part about Conservapedia is that it's not a troll.
01:55:00 <shachaf> It's not?
01:55:03 <pikhq_> There may well be trolls *involved*, but Andrew Schlafly is motherfucking serious.
01:55:26 <elliott> schlafly is my fav :')
01:55:32 <zzo38> oerjan: I know. What I am asking is if there can be something that if you have pure, fmap, <*>, then you can define one more function that it determines <*> from fmap and pure and this new function
01:55:53 <pikhq_> elliott: Well, there's certainly schadenfreude to be had.
01:56:03 <shachaf> "Schlafly created Conservapedia in November 2006.[12] He felt the need to start the project after reading a student's assignment written using Common Era dating notation rather than the Anno Domini system that he preferred."
01:56:47 <CakeProphet> lol
01:57:01 <Gregor> Seeing "shachaf" and "Shlafly" written so near each other makes their similarity apparent.
01:57:07 <zzo38> shachaf: That is a silly idea. Common Era and Anno Domini are the same; he can use AD if he prefers but other people can use CE or AD whatever you just have to know it is the same there are different words for that
01:57:11 <Gregor> Conclusion: shachaf must be a Muslim.
01:57:20 <Gregor> Underlying logic: See: Conservapedia.
01:57:21 <Gregor> QED
01:57:40 <shachaf> zzo38: Oh. Now I understand.
01:58:00 <Vorpal> <zzo38> shachaf: That is a silly idea. Common Era and Anno Domini are the same; he can use AD if he prefers but other people can use CE or AD whatever you just have to know it is the same there are different words for that <-- did you just completely miss the point?
01:58:12 <pikhq_> If bitched about AD in front of me, I'd just start using AUC dating. "Anno Urbis Conditae", "in the year of the founded city [of Rome]".
01:58:14 <Vorpal> hm I think you did
01:58:18 <CakeProphet> Jesus Christ is the person who changed the world forever with teachings of love and faith, using logical parables like the Prodigal Son that flow from the existence of God. "Jesus triumphed over the Devil, and personally set the ultimate example for mankind, by enduring the horrific process of scourging and death by crucifixion under the ancient Roman regime in obedience to God's will."
01:58:24 <CakeProphet> first paragraph of the article Jesus Christ
01:58:25 <shachaf> I think Vorpal is missing the point of zzo38.
01:58:35 <pikhq_> It is now 2764 AUC.
01:58:37 <Vorpal> shachaf, hm good point.
01:59:01 <zzo38> However, it is not the exact year of Jesus Christ; they are probably inexact by a few years. That is one reason (but not the only reason) to use "Common Era"; but "Anno Domini" is commonly known what it meant, even if the year might be inexact. Since we have the year now, we use the same calendar instead of changing it; any reference point works as long as everyone agree.
01:59:21 <Gregor> pikhq_: I use AU. "Anno Unixine". It's 41AU.
01:59:33 <pikhq_> Gregor: A good era.
01:59:37 <Vorpal> pikhq_, I would use stardates if there was any sort of official mapping to normal years (I have no idea if there is)
02:00:20 <Gregor> pikhq_: The only problem is that in 68AU it'll suddenly become 0AU >_>
02:00:21 <elliott> Vorpal: You want the, aah, what's the name again.
02:00:23 <Gregor> Vorpal: There is.
02:00:30 <Vorpal> elliott, memory alpha?
02:00:34 <elliott> No.
02:00:45 <Sgeo> Does foldl (:) [] == reverse?
02:00:46 <pikhq_> Vorpal: There's nothing neatly *canonical*.
02:00:51 <Sgeo> > foldl (:) [] [1,2,3]
02:00:52 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
02:00:52 <Vorpal> pikhq_, oh okay
02:00:57 <pikhq_> Vorpal: Well, except if you consider the 2009 film.
02:00:58 <Vorpal> elliott, calculator?
02:00:58 <Sgeo> Nope
02:01:03 <elliott> During a Q&A session, Orci restated that a stardate is "the year, as in 2233, with the month and day expressed as a decimal point from .1 to .365 (as in the 365 days of the year)." [5] A similar reply was posted on his Twitter account: "star date=standard year, with decimal representing day of year from 1-365."
02:01:05 <Sgeo> > foldl (flip (:)) [] [1,2,3]
02:01:07 <lambdabot> [3,2,1]
02:01:08 <elliott> Wow 2009 film, that is so stupid.
02:01:09 <pikhq_> Then, it's moronically trivial. YEAR_AD.DAY_OF_YEAR
02:01:30 <zzo38> Yes, there are many systems you can use. But for common calendar you use the Anno Domini/Common Era system. UNIX timestamp is certainly one way. You can also use stardate, Holocene, Discordian, Chinese, solar, or whatever.
02:01:34 <Vorpal> "with decimal representing day of year from 1-365." <-- I'm not sure I would call that decimal
02:01:39 <zzo38> That doesn't seem decimal notation to me!
02:01:39 <elliott> Oh come on, what is the fucking name.
02:01:41 <Vorpal> because it is not actually based on 1/10th
02:01:44 <elliott> Ah!
02:01:50 <elliott> Vorpal: Okuda timeline.
02:01:53 <Vorpal> heh
02:02:28 <Vorpal> elliott, anyway "with decimal representing day of year from 1-365.", means that .5 would be in about July or so? If not then the system isn't decimal
02:02:38 <pikhq_> Vorpal: The system isn't decimal.
02:02:42 <Vorpal> ouch
02:02:42 <pikhq_> .5 would be January 5th.
02:02:50 <Vorpal> pikhq_, that is just terrible
02:03:15 <Vorpal> pikhq_, obviously .1 and .100 should be the same.
02:03:25 <Vorpal> I guess it is like version numbers
02:03:57 <Vorpal> actually I should start using decimal version numbers
02:04:00 -!- derdon has quit (Remote host closed the connection).
02:04:05 <Vorpal> so that 1.4 is later than 1.35
02:04:08 <zzo38> Vorpal: If it is decimal of course it has to be .1 and .100 same. In addition, it says 365 days of the year, but there can be leap years too.
02:04:34 <elliott> Vorpal: 1.4? Please: .14.
02:04:35 <Vorpal> zzo38, stop missing the point, it is annoying
02:04:40 <elliott> If you can't operate like that you suck.
02:04:42 <zzo38> Vorpal: I use a system, ten minors is worth one major, so that it is decimal and not decimal at the same time
02:04:45 <elliott> Vorpal: Stop missing the point of zzo38, it's even more annoying.
02:04:49 <Vorpal> elliott, what?
02:05:05 <zzo38> So there will be no version number "1.35"
02:05:17 <Vorpal> elliott, version 0.14 would be less than 1.14 of course
02:05:30 <Vorpal> zzo38, the point here is to mess up version number handling in distros...
02:05:38 <elliott> Vorpal: Being able to use non-post-decimal-point numbers ruins it.
02:05:41 <zzo38> O, you are trying to mess up everything?
02:05:45 <elliott> Since you can ascend in a "normal" fashion from 9 to 12.
02:05:49 <Vorpal> zzo38, of course
02:05:55 <elliott> If you put everything after the decimal point, you have to plan ahead.
02:05:58 <Vorpal> elliott, ah good point
02:06:15 <zzo38> And I am instead removing mess up everything.
02:06:39 <Vorpal> elliott, I could just add more digits at the end, slowly converging against 1 if I didn't plan ahead enough
02:06:47 <elliott> 1, 12, 197, 21, 810, 87, 88, 89, 8999, 9, 91, 93, 934934834, 94, 99, 999, 999, 999999...
02:06:48 <Vorpal> err s/against/towards/
02:06:57 <elliott> After you die, you release version 1.0.
02:07:06 <zzo38> A major revision after 0.9 or a minor revision after 0.9 is still 1.0 either way, in my system.
02:07:19 <zzo38> TeX and METAFONT version number are decimal.
02:07:26 <zzo38> After you die, you release version $\pi$.
02:07:28 <Vorpal> <zzo38> And I am instead removing mess up everything. <-- that is not even grammatically correct!
02:10:33 <oerjan> Vorpal: O_o
02:15:35 <elliott> oerjan: ?
02:15:39 <elliott> Dammit, I've forgotten how GHC gets memory from the OS.
02:15:59 -!- MonkeyofDoom has joined.
02:16:09 <elliott> `@ MonkeyofDoom ? welcome
02:16:11 <HackEgo> MonkeyofDoom: 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
02:16:28 <MonkeyofDoom> hi
02:16:51 <MonkeyofDoom> just heard some people were hacking on IOCCC stuff in here so I figured I'd drop in to see what's up
02:16:53 <Vorpal> elliott, yogscast interviewing notch (see their channel). Except well... after watching that I think they are trolling the viewers...
02:17:00 <elliott> mostly Gregor :P
02:17:03 <monqy> hi
02:17:19 <quintopia> ais was working on something too
02:17:23 <pikhq_> Gregor: I have it on good authority that it would be "Anno Unis".
02:17:32 <pikhq_> Erm, Unicis
02:19:19 <CakeProphet> elliott: s/\`@ (MonkeyofDoom) \? (welcome)/\`\2 \1/
02:19:35 <Gregor> pikhq_: Noted.
02:20:07 -!- kwertii has joined.
02:20:31 <Gregor> Also:
02:20:33 <Gregor> SPAAAAAAAAAAAAARC
02:20:38 <monqy> sparc
02:20:50 <elliott> shark
02:21:27 <elliott> Gregor: Is it the register windows??? The delay sdfk??? The return addreses???
02:21:29 <pikhq_> SNAAAAKE!
02:21:40 <Gregor> elliott: Some horrible, horrible combination of them.
02:21:47 <elliott> Gregor: Register delay addresses.
02:21:50 <zzo38> Is this good? createDVI :: FilePath -> Word32 -> Ratio Word32 -> IO DocStat; shipOut :: Page -> IO DocStat; finishDVI :: DocStat -> IO ();
02:22:58 <CakeProphet> > (\x y -> 's':x:"ar"++[y]) <*> ['a'..'z'] <*> ['a'..'z']
02:22:59 <lambdabot> Couldn't match expected type `a -> b'
02:22:59 <lambdabot> against inferred type `[GHC.T...
02:23:13 <CakeProphet> erm
02:23:21 <CakeProphet> > (\x y -> 's':x:"ar"++[y]) <$> ['a'..'z'] <*> ['a'..'z']
02:23:22 <lambdabot> ["saara","saarb","saarc","saard","saare","saarf","saarg","saarh","saari","s...
02:26:34 <CakeProphet> > dropWhile (/= "sparc") $ (\x y -> 's':x:"ar"++[y]) <*> ['a'..'z'] <*> ['a'..'z']
02:26:35 <lambdabot> The lambda expression `\ x y -> 's' : x : "ar" L.++ ...'
02:26:35 <lambdabot> has two arguments...
02:26:45 <CakeProphet> thanks lambdabot
02:27:07 <CakeProphet> > dropWhile (/= "sparc") ((\x y -> 's':x:"ar"++[y]) <*> ['a'..'z'] <*> ['a'..'z'])
02:27:08 <lambdabot> The lambda expression `\ x y -> 's' : x : "ar" L.++ ...'
02:27:09 <lambdabot> has two arguments...
02:27:11 <CakeProphet> >_>
02:27:48 <CakeProphet> 21:27 <lambdabot> but its type `[a1 -> a -> [GHC.Types.Char]]' has none
02:27:49 <CakeProphet> what?
02:28:06 <CakeProphet> oh
02:28:12 <CakeProphet> > dropWhile (/= "sparc") ((\x y -> 's':x:"ar"++[y]) <$> ['a'..'z'] <*> ['a'..'z'])
02:28:14 <lambdabot> ["sparc","spard","spare","sparf","sparg","sparh","spari","sparj","spark","s...
02:28:50 <oerjan> hm...
02:32:18 <elliott> > succ 'sparc'
02:32:19 <lambdabot> <no location info>:
02:32:19 <lambdabot> lexical error in string/character literal at chara...
02:32:23 <elliott> > succ "sparc"
02:32:24 <lambdabot> No instance for (GHC.Enum.Enum [GHC.Types.Char])
02:32:24 <lambdabot> arising from a use of `...
02:32:28 <elliott> hmph
02:32:39 <oerjan> shocking
02:32:55 <elliott> @hack
02:32:55 <lambdabot> http://hackage.haskell.org
02:32:57 <elliott> or whatever it was
02:33:29 <CakeProphet> ellio
02:33:30 <CakeProphet> ...
02:33:32 <CakeProphet> elliott: http://conservapedia.com/Talk:Jesus_Christ
02:33:40 <CakeProphet> I think this is more entertaining than the Main Page
02:34:29 <CakeProphet> Funny how this page is locked depsite conservapedia asking for people to edit it. previous unsigned comment added by User:Wikipediaisbetter
02:34:32 <CakeProphet> Funny how Wikipedia's article is also locked... They are better exactly how..? Fox 10:11, 25 May 2007 (EDT)
02:34:43 <CakeProphet> the logic
02:34:45 <oerjan> !perl $_="sparc"; print $_,"\n" while($_++);
02:34:46 <EgoBot> spard
02:34:46 <CakeProphet> I can't deny it.
02:34:54 <oerjan> oops
02:35:03 <CakeProphet> lolwat
02:35:41 <oerjan> `perl -e '$_="sparc"; print $_,"\n" while($_++);'
02:35:43 <HackEgo> No output.
02:35:51 <oerjan> oh hm
02:35:55 <oerjan> `run perl -e '$_="sparc"; print $_,"\n" while($_++);'
02:35:57 <HackEgo> spard \ spare \ sparf \ sparg \ sparh \ spari \ sparj \ spark \ sparl \ sparm \ sparn \ sparo \ sparp \ sparq \ sparr \ spars \ spart \ sparu \ sparv \ sparw \ sparx \ spary \ sparz \ spasa \ spasb \ spasc \ spasd \ spase \ spasf \ spasg \ spash \ spasi \ spasj \ spask \ spasl \ spasm \ spasn \ spaso \ spasp \ spasq \ spasr \ spass \ spast \ spasu \ spasv \ spasw \ spasx \ spasy \ spasz \ spata \ spatb \ spatc \ spatd
02:36:17 <oerjan> it even wraps from z back to a :P
02:36:50 <CakeProphet> I didn't know ++ had those semantics on strings.
02:37:15 <elliott> spata
02:37:37 <quintopia> wow. there are four real words there
02:37:40 <Sgeo> See, why can't Haskell do that. (I'm sure it can, given appropriate instances)
02:37:45 <quintopia> someone filter that with the dictionary
02:37:48 <Sgeo> With succ instead of ++ of course
02:38:03 <elliott> `run grep /usr/share/dict/words $(perl -e '$_="sparc"; print $_,"\n" while($_++);' | head -n 50)
02:38:06 <HackEgo> grep: spard: No such file or directory \ grep: spare: No such file or directory \ grep: sparf: No such file or directory \ grep: sparg: No such file or directory \ grep: sparh: No such file or directory \ grep: spari: No such file or directory \ grep: sparj: No such file or directory \ grep: spark: No such file or directory \ grep: sparl: No such file or directory \ grep: sparm: No such file or directory \ grep: sparn:
02:38:09 <elliott> oops
02:38:23 <Sgeo> Except it won't be fun on strings, come to think of it
02:38:31 <Sgeo> Since maxBound :: Char /= 'z'
02:39:24 <oerjan> an Ix instance would work better, i think
02:39:31 <CakeProphet> !perl $_="100"; ++$_;print
02:39:31 <EgoBot> 101
02:39:37 <CakeProphet> !perl $_="aaa"; ++$_;print
02:39:37 <EgoBot> aab
02:40:00 <CakeProphet> !perl $_="199"; ++$_;print
02:40:01 <EgoBot> 200
02:40:16 <Sgeo> Hmm, would it? I still think you need to specialize on Strings specifically
02:40:26 <oerjan> > range (('s',('a',('a',('r','a')))),('s',('z',('a',('r','z)))))
02:40:27 <lambdabot> <no location info>:
02:40:28 <lambdabot> lexical error in string/character literal at chara...
02:40:31 <oerjan> argh
02:40:37 <oerjan> > range (('s',('a',('a',('r','a')))),('s',('z',('a',('r','z')))))
02:40:38 <lambdabot> [('s',('a',('a',('r','a')))),('s',('a',('a',('r','b')))),('s',('a',('a',('r...
02:40:49 <CakeProphet> good range
02:40:57 <elliott> > [ [s,p,a,r,c] | (s,p,a,r,c) <- range (('s',('a',('a',('r','a')))),('s',('z',('a',('r','z'))))) ]
02:40:58 <lambdabot> Couldn't match expected type `(GHC.Types.Char,
02:40:58 <lambdabot> ...
02:41:09 <elliott> > [ [s,p,a,r,c] | (s,(p,(a,(r,c)))) <- range (('s',('a',('a',('r','a')))),('s',('z',('a',('r','z'))))) ]
02:41:10 <lambdabot> ["saara","saarb","saarc","saard","saare","saarf","saarg","saarh","saari","s...
02:41:15 <elliott> saarg
02:41:17 <oerjan> CakeProphet: i thought that was the one you wanted
02:41:38 <CakeProphet> I have no wants
02:41:45 * CakeProphet meditates on enlightenment.
02:41:52 <oerjan> Sgeo: as you see, Ix works better because you can give lower/upper bounds for each element
02:42:32 <Sgeo> Hmm
02:42:44 * Sgeo is mildly lost
02:42:54 <CakeProphet> > foldr1 (,) "saara"
02:42:55 <lambdabot> Occurs check: cannot construct the infinite type: a = (a, a)
02:42:58 <Sgeo> ...I see
02:43:00 <CakeProphet> oh.
02:43:01 <CakeProphet> right.
02:43:23 <zzo38> It looks like Conservapedia is not being encyclopedic! Although some of the points might be valid in some cases, they are not correct if you are trying to be unbiased articles about stuff like encyclopedic stuff.
02:43:54 <CakeProphet> zzo38: but "unbiased articles about stuff like encyclopedic stuff" is the left-wing agenda.
02:43:59 -!- Zuu has quit (Ping timeout: 252 seconds).
02:44:28 <oerjan> > range ((1,3),(0,2)) -- it's meant for things like this when indexing 2d arrays
02:44:29 <lambdabot> []
02:44:32 <oerjan> oops
02:45:00 <oerjan> > range ((1,0),(3,2))
02:45:01 <lambdabot> [(1,0),(1,1),(1,2),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2)]
02:45:12 <zzo38> CakeProphet: O, that is what "left-wing agenda" is to them. Well, it is freedom of speech (and writing); that is why there are multiple resources to read information, including more than one if you want to. Whether or not they like that.
02:45:54 <oerjan> zzo38: basically the us conservatives are doing their best propaganda to redefine normal as "left-wing"
02:46:36 <CakeProphet> zzo38: well, apparently because Wikipedia doesn't cover Jesus Christ as the savior of mankind etc, it's pushing a atheist left-wing political agenda.
02:46:40 <CakeProphet> that's the logic as far as I can tell.
02:46:49 <oerjan> at least that's what it looks like for most western people outside the us
02:47:42 <pikhq_> zzo38: When you think "left-wing agenda" you should actually think "agenda of people who don't want a Christian theocracy".
02:47:49 <pikhq_> That'd do it.
02:48:01 <CakeProphet> some GOP presidential candidates actually claim that NPR is a left-wing organization..
02:48:10 <pikhq_> Only some?
02:48:17 <CakeProphet> vocally, anyway.
02:48:33 <CakeProphet> well, NPR is certainly too factual to be right-wing.
02:48:37 <CakeProphet> so it must be left-wing!
02:48:48 <zzo38> Well, Wikipedia should probably cover Jesus Christ as savior of mankind etc, although in the different way than Conservapedia does; Wikipedia should write it like, this is according to Christians religion, and such things, instead of saying it is absolute and that stuff. But Wikipedia should still write about Jesus Christ as savior, just not the way Conservapedia does.
02:48:51 <pikhq_> Remember, Fox News is "fair and balanced" reporting.
02:49:19 <pikhq_> zzo38: I'm pretty sure Wikipedia does go into quite a bit of detail regarding Christian beliefs on Jesus Christ.
02:49:42 <pikhq_> It would be a horrendous disservice to omit that on an article about Jesus.
02:50:47 <oerjan> i'd assume they have a whole series of articles on it
02:51:10 <CakeProphet> http://conservapedia.com/Homosexuality
02:51:14 <pikhq_> Well, yes. There's enough information for it.
02:51:49 <elliott> http://conservapedia.com/Poop
02:52:09 <elliott> http://conservapedia.com/Obscenity "Language describing homosexual acts tends, at least in English, to have the greatest emotional impact."
02:52:20 -!- elliott has left ("Leaving").
02:52:21 -!- elliott has joined.
02:52:24 <CakeProphet> 20:42, 10 April 2007 TimS (Talk | contribs) deleted "Poop" ‎ (content before blanking was: '== Poop ==The word poop in the English language is the vulgar and sinful slang term referring to human excrement. We know that human excrement is th...')
02:52:41 <oerjan> heh, they have a series on Salvation
02:53:08 <Sgeo> I guess only gay people fuck? Or what do they consider to be emotionally impacting? Varies from person to person, wouldn't it?
02:53:28 <elliott> Sgeo: SHUT UP FAG
02:53:40 <elliott> `addquote <Sgeo> I guess only gay people fuck?
02:53:42 <HackEgo> 726) <Sgeo> I guess only gay people fuck?
02:53:42 <CakeProphet> Sgeo: I think they're referring specifically to obscenities.
02:54:10 <CakeProphet> but I think they're wrong
02:54:18 <CakeProphet> YOUR MOM has the most emotional impact.
02:57:37 <CakeProphet> http://liberapedia.wikia.com/wiki/Main_Page
02:57:37 <CakeProphet> huh
02:58:04 <CakeProphet> The founder (known only as "WillH") wanted Liberapedia to parody Conservapedia and advised that: "most articles should take stereotypical liberal views and distort them to the extreme". Most arrivals since then have ignored that, and instead just written about liberal politics with dead seriousness.
02:58:09 <CakeProphet> --RationalWiki
02:58:15 <CakeProphet> so many biased encyclopedias
02:58:26 <oerjan> indeed Christology is a wikipedia series
03:01:55 <quintopia> hey guys
03:02:14 <quintopia> did you know being gay increases your likelihood of being a drug addict?
03:02:29 <quintopia> "Also, the homosexual population has a greater propensity to engage in illegal drug use."
03:02:33 <quintopia> :P
03:03:16 <CakeProphet> http://rationalwiki.org/wiki/Lenski_affair
03:03:20 <CakeProphet> this is a fun read.
03:08:50 <elliott> CakeProphet: Don't get sucked into RationalWiki.
03:10:06 <CakeProphet> I have no intention of getting sucked into a wiki of any sort.
03:10:17 <CakeProphet> oh you mean, just reading it?
03:10:18 <CakeProphet> or contributing?
03:10:32 <CakeProphet> *"contributing"
03:12:09 <CakeProphet> But perhaps because you did not bother even to read our paper, or perhaps because you aren’t very bright, you seem not to understand that we have the actual, living bacteria that exhibit the properties reported in our paper, including both the ancestral strain used to start this long-term experiment and its evolved citrate-using descendants. In other words, it’s not that we claim to have glimpsed “a unicorn in the
03:12:16 <CakeProphet> this is so good
03:12:41 <CakeProphet> garden” – we have a whole population of them living in my lab! And lest you accuse me further of fraud, I do not literally mean that we have unicorns in the lab. Rather, I am making a literary allusion.
03:18:27 -!- tiffany has quit (Quit: nyu~).
03:31:00 -!- kwertii has quit (Changing host).
03:31:00 -!- kwertii has joined.
03:47:16 -!- CakeProphet has quit (Ping timeout: 240 seconds).
03:56:44 -!- Vorpal has quit (Ping timeout: 248 seconds).
04:01:08 <zzo38> The Conservapedia page about GNU/Linux mentions that Richard Stallman is atheist. The article about Donald Knuth doesn't mention that Knuth is Christian, and it says he is known as the creator of LaTeX (the article about LaTeX (there is none about TeX) mentions that Leslie Lamport invented LaTeX, not Knuth). I did look at Liberapedia too.
04:01:47 <Sgeo> ....Does Conservapedia have a thing against F/OSS?
04:01:49 <zzo38> Both are bad (although valid if you just want to see different point of view). Wikipedia is more complete and better, although it too might omit some things. It is why they make things such as Wikinfo and various articles people write.
04:02:07 <Sgeo> (Don't tell Stallman that I lumped Free Software and Open Source together)
04:02:11 <zzo38> Sgeo: Not as far as I can see.
04:02:29 <kwertii> Wikipedia does tend to have a postmodernist bias on many topics, though it's getting better slowly.
04:02:53 <kwertii> particularly on topics that mainly only postmodernists care much about, such as colonialism
04:05:02 <pikhq_> Sgeo: Stallman actually has no issues with one lumping them together in contexts where that makes sense. He *may* object to your characterising GNU as "F/OSS", though.
04:06:00 <pikhq_> Also, I'd imagine Conservapedia mostly has an anti-geek bias. I'm surprised there's even an *article* on rms.
04:08:20 <elliott> kwertii: which of the 5000 definitions of postmodern are you using
04:10:55 <kwertii> elliott: "a loosely related set of philosophies deriving ultimately from the work of Heidegger holding that there is no such thing as absolute truth or objective reality and that so-called 'facts' are social constructions created through 'narrative' or 'discourse,' lately said to be actively manipulated by the Evil White Heterosexual Euro-American Male to oppress the glorious Other, whom he fears and seeks to quash."
04:12:29 <pikhq_> Is that even *slightly* prevalent?
04:12:41 <kwertii> pikhq_: as I said, it's gotten better lately
04:12:45 <pikhq_> I mean, as an actual thing, rather than some strawman figure?
04:13:01 <kwertii> pikhq_: it's quite popular in academia
04:13:15 <kwertii> pikhq_: especially in social sciences and literary criticism
04:13:45 <pikhq_> Bleh.
04:13:51 <kwertii> pikhq_: at my graduate school (San Francisco State University), it was orthodoxy, and daring to question any aspect of it was strongly discouraged.
04:14:18 <kwertii> (ironically, for a philosophy that claims to be open to all viewpoints and claims to not be privileging any one over another)
04:15:48 <pikhq_> Yeah, um, I'm having a bit of difficulty believing such things exist. That's really hitting Poe's Law levels of "... Wut?"
04:16:06 <Sgeo> What's the typical response to the trivial criticism of "Well, it itself suggests that some viewpoints are false"
04:16:19 <kwertii> in fact, on the west coast of the US, it's metastasized and spread out of the universities into the mainstream of the culture.
04:16:20 <Sgeo> Which I suspect should only effect a strawman
04:16:37 <pikhq_> Sgeo: I'd go with "Rephrase that as something substantial please."
04:16:38 * Sgeo is ignoring the word "lately" and everything after
04:16:42 <kwertii> Sgeo: the typical response is to get mad and accuse the person saying that of being a {racist, sexist, etc}
04:17:31 <Sgeo> Is the lack of objective reality itself a fact of objective reality?
04:17:44 <kwertii> Sgeo: my professors got really mad at me when I asked them that.
04:18:34 <kwertii> I also offered to retract my views on objective reality if anyone could jump off a bridge and manage to fly instead of splattering messily on the sidewalk in my presence. strangely, there were no takers.
04:18:49 <pikhq_> Sgeo: Well, strictly speaking, it is *unknowable* whether there is an "objective reality", I at least think.
04:19:04 <pikhq_> Of course, the *correct* answer to "is there an objective reality?" is "sure seems like it."
04:19:56 <pikhq_> And, of course, such discussions are at best pointless mental masturbation.
04:20:10 <Sgeo> You imply that mental masturbation is pointless
04:20:15 <kwertii> pikhq_: that would be the problem with logical positivism that the postmodernists claim to be addressing. Karl Popper also addressed this point far better with his critical rationalist theory that (informally) while we may not know with 100% ∫certainty whether something is objectively true, it may be taken to probably be true until it is falsified.
04:20:22 <pikhq_> Sgeo: No, I state it.
04:20:44 <kwertii> it is indeed mere pointless mental masturbation, which is why I am no longer in academia and have a real job now.
04:21:00 <kwertii> also, I get paid as much as 2 or 3 professors
04:21:00 <Sgeo> What is pointless about something that is interesting to think about?
04:21:13 <Sgeo> Next you'll say that purely theoretical math is pointless
04:21:20 <Gregor> I'm in academia mainly so that I can acquire the nickname "Doctah G, PhD"
04:21:20 <MonkeyofDoom> mental masturbation is only a half or a third as important as practical work, that is
04:21:21 <MonkeyofDoom> :P
04:21:39 <kwertii> Sgeo: trying to convince asshats that you're right is largely pointless. academia comes down more to politics than to actually being right, especially in soft sciences
04:21:49 <pikhq_> Gregor: You're in a different form of academia.
04:22:18 <kwertii> Gregor: what do you study?
04:22:26 <Gregor> pikhq_: Doesn't change my statement.
04:22:28 <Gregor> kwertii: CS.
04:22:28 <kwertii> hard sciences seems like a paradise, where you can actually prove that you're right
04:22:29 <pikhq_> Gregor: You're in the land of CS, math, science, and engineering. At least in principle, you need to deal with reality.
04:22:49 <pikhq_> Well, "reality" isn't quite the right term for math.
04:22:52 <pikhq_> :P
04:23:00 <kwertii> at least it can be provably internally consistent
04:23:10 <pikhq_> kwertii: Actually no.
04:23:31 <pikhq_> kwertii: Gödel ring a bell?
04:24:39 <kwertii> pikhq_: actually, yes, I've looked into that in some detail. Goedel's incompleteness theorem says that a certain class of logical statements are EITHER internally inconsistent OR rely on external axioms.
04:25:01 <kwertii> since "math" as that term is commonly used uses external axioms, it can be provably internally consistent
04:26:29 <kwertii> most commonly https://secure.wikimedia.org/wikipedia/en/wiki/Zermelo%E2%80%93Fraenkel_set_theory for the axioms, but there are other choices
04:27:07 <pikhq_> Y'know what? Fuck it, I shouldn't discuss this.
04:27:11 * pikhq_ summons oerjan
04:27:15 <pikhq_> oerjan: oerjan: oerjan:
04:27:40 <kwertii> social sciences COULD be similarly rigorized. but the establishment (professors currently in tenure) actively resist any attempt to impart the use of logic into the field. logic being an invention of the Evil White Heterosexual Man created for the specific purpose of oppressing brown people, gays, women, etc.
04:27:49 <kwertii> (at least on the west coast)
04:28:08 <pikhq_> kwertii: ... So, they reject logic, eh?
04:28:14 <pikhq_> Therefore, asdfhhbcixv;bjkosdahtfp9gxcjgidaf;
04:28:26 <elliott> looooool kwertii is so full of shit
04:28:45 <kwertii> elliott: I wish I was
04:29:00 <kwertii> pikhq_: actually, it's based on politics. you have to write something flattering to your advisor, not just random crap
04:29:00 <kwertii> \
04:29:34 -!- madbr has joined.
04:29:36 <madbr> hey
04:29:58 <pikhq_> kwertii: I am seriously finding this incredibly hard to believe.
04:30:02 <madbr> I think I have a realisable design for a slice processor :D
04:30:05 <kwertii> pikhq_: :(
04:30:14 <pikhq_> I can't reject it, but it seems so utterly *implausible*.
04:30:36 <Gregor> So because of IOCCC's size restrictions, I wrote a golf assistant.
04:30:48 <kwertii> pikhq_: you've obviously never spent much time at a California university
04:30:49 <Gregor> I was thinking about golfing the golf assistant and submitting it to IOCCC.
04:30:59 <Gregor> The problem is, then it'd just be golfed, not obfuscated :P
04:31:01 <pikhq_> kwertii: Indeed not.
04:31:48 <kwertii> pikhq_: http://www.linguistics.ucsb.edu/faculty/bucholtz/cv.html
04:32:38 <pikhq_> I have absolutely no idea what I should be getting out of that CV.
04:32:47 <kwertii> pikhq_: read a few of her publications and you'll see what I'm talking about
04:33:02 <kwertii> "You da Man: Narrating the Racial Other in the Linguistic Production of White Masculinity," Journal of Sociolinguistics 3(4): 443-460, 1999
04:33:37 <kwertii> tl;dr - white men are always seeking to appropriate the black man's "cultural identity" by stealing his slang, a subtle, ubiquitous, and hitherto unrecognized form of racism
04:34:00 <elliott> so Gregor why not drown out this off-topic inane prattle with an ioccc update
04:34:07 <elliott> did you fix sparc? :P
04:34:07 <Gregor> elliott: I was trying :P
04:34:11 <Gregor> elliott: I was trying :P
04:34:16 <pikhq_> kwertii: I see no such implications from the abstract of said publication.
04:35:30 <Gregor> elliott: Right now I'm focused more on making it a more complete dc, as I'm quite afraid that I'll run out of bits.
04:35:44 <kwertii> that's what "the narrative preserves the racial hierarchy that enables white cultural appropriation of African American culture through language crossing" means
04:35:47 <kwertii> in pomo-speak
04:36:17 <kwertii> http://richarddawkins.net/articles/824 Richard Dawkins on postmodernist vernacular
04:37:00 <madbr> lol postmodernism
04:37:02 <kwertii> if they just came out and said it in ordinary language, nobody would pay any attention to them. they have to dress it up in pompous jargon
04:37:11 <elliott> kwertii: pls, nobody gives a shit, take it to /msg if you must
04:37:26 <kwertii> elliott: pikhq_ asked.
04:37:37 <pikhq_> *That said*, this article seems to spend much time on irrelevancies in its discussion of the spread of features of African-American Vernacular English.
04:37:39 <zzo38> I have, in general, one problem with Skeptics Annotated Bible, which is that the deuterocanonical/apocrypha books are not included.
04:37:44 <pikhq_> And, frankly, this discussion is really boring me.
04:38:15 <kwertii> pikhq_: and yet you've kept participating in it and moving it further along
04:38:30 <elliott> shut
04:38:31 <elliott> the
04:38:32 <elliott> fuck
04:38:33 <elliott> up
04:38:34 <pikhq_> kwertii: s/really boring/starting to really bore/
04:38:37 <madbr> dude
04:38:39 <kwertii> :''(
04:39:15 <Gregor> elliott: I wish there were a SPARC expert about.
04:39:46 <madbr> http://s.engramstudio.com/src/101467.jpg
04:40:32 <pikhq_> zzo38: The reason for that is, undoubtedly, due to the target audience being *American* atheists.
04:40:40 <madbr> derrida should be punched in the face for différence / différance
04:41:03 <pikhq_> And in America the prevalent forms of Christianity are Protestant, and thus don't care about the apocrypha.
04:41:15 <kwertii> elliott: seems like people are interested after all
04:41:39 <Gregor> elliott: I'm at 2635 bytes raw, and don't have everything implemented >_>
04:42:13 <elliott> kwertii: orly:
04:42:15 <elliott> <elliott> so Gregor why not drown out this off-topic inane prattle with an ioccc update
04:42:19 <elliott> <Gregor> elliott: I was trying :P
04:42:21 <elliott> <pikhq_> And, frankly, this discussion is really boring me.
04:42:23 <madbr> wonder if you could get a midi player in that little code... probably not
04:43:00 <Gregor> madbr: I'm sure you could get a really bad one.
04:43:03 <kwertii> elliott: and madbr> derrida should be punched in the face for différence / différance
04:43:18 <elliott> 3 > 2
04:43:39 <madbr> gregor: hmm, sounds hard to fit in the synthesis
04:43:50 <kwertii> elliott: pikhq_ was actively discussing and only suddenly became bored when you indicated that you disliked the topic. I think he likes you.
04:43:53 <madbr> and the 128 damn patches, plus all the drums
04:43:54 <Gregor> madbr: Just need a sufficiently bad synthesis :)
04:43:59 <zzo38> It is not entirely atheists; they have Christian responses too. They also say you can have your own opinion. It is for both believers and skeptics. And people who just want to read it including annotations and cross-references, which you can disagree if you want to, or agree, or agree with some and disagree with others.
04:44:12 -!- copumpkin has quit (Ping timeout: 248 seconds).
04:44:15 <Gregor> madbr: You are thinking waaaaay to far into it. My synth would be square waves. MAYBE sine waves.
04:44:29 <madbr> gregor: I guess it's not too hard if you play everything with square waves and ignore all the controllers
04:44:38 -!- copumpkin has joined.
04:44:40 <madbr> square waves are boring :(
04:44:43 <elliott> kwertii: ah! conspiracy theories
04:44:44 <Gregor> Yeah, just need to process noteon/noteoff events.
04:44:48 <elliott> kwertii: this keeps getting better and better
04:44:51 <Gregor> madbr: So's your face, but you don't see us complaining.
04:44:56 <Gregor> OHHHHHHHHHHHHH RANDOM
04:45:03 <madbr> whatever
04:45:14 <Gregor> You could probably do better than square waves ...
04:45:31 <Gregor> I think, within the amount of space, you MAY be able to fit a heuristic mapping instruments to square, sine or saw.
04:45:45 <Gregor> And since all instruments are one of the three, DONE :P
04:45:50 <elliott> pikhq_: I appreciate your liking me but unfortunately I cannot reciprocate, we must duel to the death.
04:45:57 <zzo38> "God creates light and separates light from darkness, and day from night, on the first day. Yet he didn't make the light producing objects (the sun and the stars) until the fourth day." Well, actually, while there are examples of illogical things in the Bible, this is not one of them. There can be light and radiation and so on in the beginning of the universe;
04:46:14 <pikhq_> zzo38: The target *audience* of the Skeptic's Annotated is clearly atheists, though.
04:46:14 <elliott> Gregor: btw i wouldn't submit the twitter interp to ioccc
04:46:17 <elliott> Gregor: although hmm
04:46:22 <elliott> they don't look at authors so might as well
04:46:26 <zzo38> there can be photon and gravity and everything else. (Some Christians say it is the "Light of God"; still valid, but not scientific.)
04:46:32 <Sgeo> In my part of the US, most of the Christians are Catholic
04:46:33 <elliott> i was thinking two "short language impl" submissions from one person might go badly :P
04:46:43 <pikhq_> That some other groups may be interested is fairly irrelevant.
04:46:57 <pikhq_> Sgeo: That's somewhat exceptional.
04:47:01 <pikhq_> elliott: ?
04:47:11 <madbr> sgeo: isn't catholic church going badly these days?
04:47:15 <elliott> pikhq_: The jig is up!
04:47:24 <Gregor> elliott: Yeah, I was only thinking of it given that they don't look at the author :P
04:47:32 <Gregor> elliott: But actually, now I'm thinking about a MIDI player ;)
04:47:38 <Sgeo> madbr, *shrug*
04:47:42 <zzo38> However the second part of that annotation says "And how could there be "the evening and the morning" on the first day if there was no sun to mark them?" and that is a valid point; there cannot be evening/morning without the sun. The people that wrote that part just made some mistake, or never intended it to be logical, or whatever. I don't know for sure.
04:47:52 <madbr> dunno what it looks in us but here over 80% of people are catholic on paper
04:47:54 <elliott> Gregor: Outputting how?
04:47:57 <madbr> but irl nobody goes to church
04:48:02 <Gregor> elliott: wav to stdout
04:48:04 <elliott> Gregor: If you don't say "PC speaker", I don't like you.
04:48:17 <Gregor> elliott: OMG PLATFORM SPECIFIX
04:48:24 <madbr> and I dunno how many actually believe in god but it's certainly not 80% :D
04:48:40 <pikhq_> kwertii: Well, that's pretty strange to think. I was mostly discussing to see if it would actually go anywhere. Most I got was "postmodernists suck at writing".
04:48:54 <elliott> Gregor: You could probably do OSS in about two lines; if /dev/audio or whatever it is exists, open it, redir stdout to it and skip headers.
04:49:27 <kwertii> pikhq_: well, I do have some commentary on that point, but I won't deepen your boredom by relating it and forcing you to read it
04:49:29 <pikhq_> madbr: Here in the US, 85% of people claim to be Christian. Also, churches are exceptionally common.
04:49:38 <Gregor> elliott: Considering that I can't seem to get dc to fit, *waaah* :(
04:49:43 <madbr> there are lots of church here too
04:49:46 <madbr> but they're empty
04:49:57 <madbr> when they're not empty, they're full of old people
04:50:02 <Sgeo> I think I've been inside a church 0 or 1 times
04:50:14 * Sgeo increments that to 1 or 2
04:50:37 <madbr> lots of "3x catholics"
04:50:37 <pikhq_> madbr: We've got churches with 50,000 people attending a week.
04:50:54 <madbr> goes to church on birth, marriage, death :D
04:51:08 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/3/31/Lakewood1.jpg
04:51:11 <elliott> Gregor: int q=open("/dev/audio",O_RDWR);if(q>0)dup2(q,1);else{...print wav headers...}
04:51:16 <kwertii> depends on what part of the US you're in. some suburban and rural areas are still highly religious in terms of % of people attending church. I would be surprised if 1 in 100 attends church in New York City.
04:51:34 <elliott> Gregor: 55 chars for OSS support :P
04:51:35 <Sgeo> pikhq_, You used to, well, at least be a Christian, I don't know if you went to church
04:51:36 <elliott> Or is it /dev/dsp...
04:51:39 <elliott> That'd be shorter.
04:51:44 <pikhq_> Sgeo: Vaguely regularly.
04:52:17 <pikhq_> Wasn't that important to me. Which is kinda odd, thinking back.
04:52:21 <elliott> Gregor: For shorter points, try ~0 instead of O_RDWR, there's a good chance that won't break systems :)
04:52:34 <elliott> Gregor: You can also avoid the "int " by reusing argc, ofc.
04:52:59 <pikhq_> Here I was, thinking that there was this omnipotent being that was going to send me to eternal torment if I didn't act right, and for the most part I was just apathetic about the whole ordeal.
04:53:03 <Sgeo> ~0?
04:53:25 <Sgeo> pikhq_, wait what? You didn't believe that God was mostly good, and cares more about actions?
04:53:42 <Gregor> elliott: Hm, I'm using -1 instead of ~0 in the JIT. C doesn't explicitly specify 2's-complement, does it X-D
04:53:46 <elliott> Sgeo: Doing bad things would be "not acting right".
04:54:01 * Sgeo misread/skimmed what pikhq_ said
04:54:18 <pikhq_> "Clearly" if you did bad things you were not good.
04:54:25 <Sgeo> I think I'm just not sure how going to Church is an essential part of "acting right"
04:54:25 <madbr> gregor: in theory no but wouldn't it be really hard to find a platform that's not 2's complement? :D
04:54:40 <madbr> I now it would probably break some of my sound rendering code :D
04:54:41 <pikhq_> When I lived with my extremely fundamentalist father, though, I mostly got a motherfucking *ton* of guilt.
04:54:43 <madbr> *know
04:54:48 <Sgeo> When I was younger, I believed that if there was a hell, it was mostly reserved for people like Hitler
04:54:51 <pikhq_> Reminder: Jesus hates masturbation! And lust!
04:54:56 <elliott> Gregor: if(0<q=open("/dev/dsp",~0))dup2(q,1);else{...print wav headers...} (where q is first argument to main)
04:54:59 <Gregor> madbr: Troof.
04:55:04 <elliott> Gregor: Eeeexcellent.
04:55:14 <Gregor> elliott: Why don't you use your amazing shortening skills to shorten my code instead of yours :P
04:55:20 <Gregor> (Do not actually do this)
04:55:32 <pikhq_> I think I probably just got burnt out on the fucking guilt trips, TBH.
04:55:36 <elliott> Gregor: 'cuz I'm more interested in this MIDI player :P
04:55:44 <kwertii> Sgeo: Raised as a Catholic, questioning the orders of God in any way was not encouraged. the magic book says "go to church every week," you go, and that's all there is to it.
04:56:31 <Sgeo> I distinctly remember, being told in Hebrew school, that, iirc, God could forgive sins against God, but only people could forgive sins against people.
04:56:39 <Sgeo> Or something along those lines.
04:56:57 <elliott> So if you fail to stone an adulterer, maaan are you fucked.
04:57:24 <kwertii> Sgeo: what happens if you die with unforgiven sins? could someone you've sinned against withhold forgiveness just to screw you over in the afterlife?
04:58:13 <pikhq_> Sgeo: Mainstream Christianity has the "wonderful" idea that unless you ask God for forgiveness from everything and strive to be perfect, you're sentenced to eternal torment and suffering.
04:58:24 <madbr> doesn't matter, all that matters is that you personally accept jesus as your saviour. also, catholics don't count and still go to hell </chick tract>
04:58:30 <pikhq_> And that all sins are created equal.
04:58:35 <pikhq_> And that masturbation is a sin.
04:59:21 <pikhq_> In conclusion, masturbation is equal to the Holocaust.
04:59:51 <kwertii> that's why Catholics have 2 classes of sin, venal and mortal. if you die with an unforgiven mortal sin on you, you're in deep shit. not sure where masturbation fits on the spectrum.
05:00:04 <madbr> probably venal
05:00:31 <madbr> I'm not sure what's the border for "lust" :D
05:00:53 <kwertii> I am sure, however, that committees of Catholic canon lawyers have discussed the matter at great length
05:04:12 <madbr> seems they consider masturbation "grave" - ie probably a mortal sin
05:04:18 <madbr> that's fucked up
05:05:08 <pikhq_> It's a religion based around a zombie Jew.
05:05:34 <kwertii> what better way to exert deep psychological control over the populace than require everyone to confess their every sexual thought and act to a priest until they're married?
05:06:16 <elliott> Gregor: So how were you planning to play MIDI files.
05:06:21 <elliott> To PCM.
05:06:22 <elliott> I mean WAV.
05:08:00 <elliott> pikhq_: BTW, I think per-thread pools are untenable for @.
05:08:22 <madbr> elliott: read the midi messages into synthesizer parameters, play that, output? :D
05:09:27 <madbr> maybe you could reduce patch data to about 12 bits of data... but it would probably be hard to make fit
05:11:11 <kwertii> elliott: looks like MIDI is not nearly as popular a topic as either postmodernism or religious views of masturbation were
05:11:29 <elliott> pikhq_: Even if it's just a single 4 kilobyte page, that's still 4 gigs for a million threads.
05:11:37 <elliott> kwertii: lol you are really upset
05:11:50 <kwertii> elliott: .. no. I don't mind
05:11:59 <elliott> which is why you keep bringing it up
05:12:02 * Sgeo likes MIDI files
05:12:08 <elliott> actually Gregor did answer my question, just in /query :)
05:12:13 * Sgeo has a collection of them
05:12:33 <Sgeo> http://daychilde.com/midiguy/ (Note: legality unknown)
05:12:50 -!- oerjan has quit (Quit: Good night).
05:13:36 <madbr> http://s.engramstudio.com/src/virt_-_BLT_Big_Lion_Television_Hour_01.mid
05:13:40 <Sgeo> Would be nice if I could get labels for the unlabelled songs
05:14:56 <elliott> pikhq_: OTOH, I can't think of any other decent way to divide pools...
05:15:16 <elliott> pikhq_: I could do per-CPU (I don't want aaaaany locking, so it can't go coarser-grained than this), but that seems really weird.
05:15:22 <elliott> And would also suck to GC.
05:15:26 <madbr> tour de force would be fitting in a reverb in too
05:15:46 <madbr> but tbh a reverb would probably take an IOCCC entry by itself
05:17:46 <pikhq_> elliott: Maybe you're thinking about this the wrong way around.
05:17:56 <elliott> Plausible :P
05:18:02 <pikhq_> Perhaps you should have some number of memory pools, and assign threads to them.
05:18:24 <elliott> Mm, I was thinking of that... but the problem is basically:
05:18:35 <pikhq_> The granularity is a little arbitrary I admit, but you're only really wanting to split up allocations, so.
05:18:38 <elliott> Hmm, actually
05:18:49 <elliott> I /think/ this might be simple enough that it can be done atomically from multiple CPUs
05:18:57 <elliott> mov rax, [rsp+N]
05:18:57 <elliott> add [rsp+N], 8
05:19:04 <elliott> Two CPUs doing that at once should be just fine, right? Even if 8 diffes.
05:19:05 <elliott> Err
05:19:09 <elliott> s/rsp+N/some shared location/
05:19:11 <elliott> *differs
05:19:24 <elliott> I think at the very worst it can waste some space, which GC will clean up.
05:19:40 <elliott> Wait, no, that's not safe.
05:19:47 <elliott> Because someone else could steal that heap pointer before the add.
05:19:51 <pikhq_> Yeah, that should race.
05:20:04 <elliott> add [blah], 8
05:20:04 <elliott> mov rax, [blah]
05:20:04 <elliott> sub rax, 8
05:20:11 <elliott> That should be safe, though, with the race condition of "wasting space".
05:20:58 <pikhq_> You could probably just use compare-and-swap.
05:21:14 -!- kwertii has quit (Quit: bye).
05:21:28 <pikhq_> CMPXCHG*
05:22:36 <elliott> pikhq_: Yeah, but it's easier to make sure pools are never concurrently accessed from more than one CPU :)
05:23:05 <elliott> You can still access /objects/ on that pool.
05:23:11 <elliott> The GC just has to know which threads are using which pool.
05:23:16 <elliott> ('s objects)
05:27:06 <elliott> pikhq_: This is wearing me down, so I'll pose a more fun question: How hard, and how slow, would it be to do a linked-list stack on x86-64 in place of the regular call stack? Then: Does this generalise easily to a spaghetti stack?
05:27:47 <zzo38> One idea I have, is Haskell command "if instance" which is like a normal "if" command, but in place of the condition you have the word "instance" followed by a constraint specification (which might include type synonyms too), and the expression for the true part is allowed to use those constraints.
05:27:51 <Sgeo> Spaghetti stack?
05:28:09 <elliott> zzo38: No! Breaks parametricity!
05:28:13 <elliott> Sgeo: http://en.wikipedia.org/wiki/Spaghetti_stack
05:28:14 <zzo38> I also have various ideas about instance disambiguation.
05:28:45 <pikhq_> Hard? Not *exceptionally*.
05:28:48 <Sgeo> elliott, So does seq
05:28:50 <pikhq_> Slow? I honestly have no idea.
05:29:04 <elliott> Sgeo: Not even remotely in the same ballpark.
05:29:18 <madbr> elliott: wouldn't that turn every push/pop into a memory allocation?
05:29:25 <elliott> Sgeo: See "Fast and loose reasoning is morally correct"
05:29:34 <Sgeo> ..?
05:29:45 <elliott> Sgeo: http://www.cs.ox.ac.uk/jeremy.gibbons/publications/#fast+loose
05:29:54 <madbr> also isn't the point of a stack the fact that you don't need complicated algos of doom to allocate/deallocate it? :D
05:29:58 <elliott> madbr: Yes, but allocations can be cheap (my current allocator takes two cycles)
05:30:13 <elliott> And it's hardly complicated *shrugs*
05:31:57 <madbr> heh really? if that's true, that's impressive yes
05:32:19 <pikhq_> madbr: It's called "bump pointer".
05:32:35 <madbr> :D
05:32:51 <elliott> madbr: yeah, it looks like this:
05:32:56 <elliott> allocated_object = pool_ptr;
05:32:59 <elliott> pool_ptr += size;
05:33:08 <zzo38> One purpose for "if instance" is in case you want to define some class methods of a instance that require another instance and default otherwise, or define other functions that a few parts of them work only on specific instances but still work OK in general without, or to do conditional compilation (even "backwards"; i.e. an imported module checks conditions of the module it is imported into), etc
05:33:17 <madbr> yeah but then how do you defragment ram? :D
05:33:22 <elliott> madbr: copying gc
05:33:31 <elliott> madbr: pools have a 4k "barrier" page after them so that when you access beyond the limit of the pool the gc runs
05:33:37 <elliott> so there's no branches required at all
05:34:04 <madbr> but don't you get an interrupt instead of a branch?
05:34:16 <madbr> guess you don't have to test it each time tho
05:34:19 <elliott> madbr: yes, it's expensive when you trigger a gc
05:34:24 <elliott> madbr: but most allocations fit within the current pool :P
05:34:27 <elliott> and those are free
05:35:14 <madbr> fair enough :D
05:35:21 <pikhq_> elliott: This does present issues if the allocation is greater than the barrier page size, though.
05:35:28 <elliott> well, yeah
05:35:34 <elliott> this is for allocations under 4k
05:35:36 <elliott> which is most allocations
05:35:42 <pikhq_> True, true.
05:35:50 <elliott> you need a tiny bit of arithmetic and a branch for larger allocations
05:35:56 <madbr> how does free() work
05:36:06 <pikhq_> It doesn't.
05:36:06 <elliott> madbr: it doesn't, gc
05:36:12 <elliott> here's an impl of free
05:36:15 <elliott> free(ptr) {}
05:36:17 <madbr> oh heh
05:36:27 <madbr> I see
05:36:30 <elliott> fastest free() evar, I can prove it
05:37:05 <madbr> it's not free once you have to gc though :D
05:37:36 <elliott> madbr: no, but gc is faster than manual memory management for most cases :)
05:37:41 <elliott> and @ has several nice properties that make it even faster
05:37:51 <MonkeyofDoom> the trick is to line up gc with when the user blinks
05:38:01 <elliott> lol
05:38:03 <MonkeyofDoom> that's why front-facing cameras are so popular these days
05:38:07 <zzo38> I do not like the names "ecliptic longitude" and "ecliptic latitude" for those coordinates very much, since equatorial coordinates have "right ascension" and "declination".
05:38:11 <madbr> monkeyofdoom: how does that work with sound code? :D
05:38:29 <MonkeyofDoom> madbr: you should reuse your buffers there
05:38:44 <zzo38> I also have other ideas about Haskell instance disambiguation. I can write it in my user space in Haskell wiki.
05:38:45 <MonkeyofDoom> underflow=baaad
05:39:00 <elliott> madbr: i'm actually interested in making a concurrent gc so that gc pauses last a couple dozen cycles at most and having it decide which to use at runtime
05:39:07 <elliott> but that's very hard, it'd need to swap out the allocator
05:39:17 <madbr> yeah but what happens if some part of the app starts garbage collecting, which blocks off the sound generating thread?
05:39:17 <elliott> since obviously you can't wait until you run out of pool to gc :p
05:39:34 <elliott> madbr: this is per-thread; in @ threads are very very cheap, not like typical OS threads
05:39:38 <elliott> they're more like lightweight coroutines
05:39:47 <elliott> that just happen to be able to run on multiple cpus and are preemptive :p
05:39:52 <elliott> you can have thousands of them, easily
05:39:56 <madbr> was talking to monkeyofdoom but that sounds good yeah :D
05:40:10 <elliott> so stopping a thread at a time isn't a big deal... but it is true that you can write a tight sound loop in a single thread and it doesn't work out
05:40:16 <elliott> obviously if you avoid allocating it's fine but yeah
05:40:20 <elliott> working on that :P
05:40:42 <elliott> @ will probably be pretty nice for audio stuff too since it's like Synthesis in that you can get away with tiny buffers
05:40:51 <elliott> with Synthesis that's because it did all kinds of tricks to minimise syscall overhead
05:40:52 <madbr> normally you setup things so that the sound thread never has to allocate or deallocate
05:40:56 <elliott> with @ it's because syscall overhead doesn't exist
05:41:28 <madbr> so if you have a program that streams audio from the disk you have 2 threads :D
05:41:49 <elliott> madbr: that's a bit harder with @, since the code would be in a purely functional language ... but you can certainly minimise allocations :)
05:42:20 <madbr> oh
05:42:43 <elliott> this actually makes @ more efficient in general
05:43:07 <elliott> it completely avoids userspace<->kernel context switching, hardware rings, slow allocators, ...
05:44:04 <pikhq_> Basically, it's removing all the abstraction layers that a decent language has to abstract again. :P
05:44:43 <elliott> but yeah, @ especially excels at allocation and IO performance
05:44:51 <elliott> which is pretty good for "realtimeish" code like audio
05:45:05 <quintopia> :|
05:45:22 <elliott> hi quintopia
05:45:43 <quintopia> hi elliott
05:45:48 <elliott> why the frowny
05:46:28 <elliott> madbr: i'm also interesting in making the language expressive enough that you can e.g. limit dynamic allocation of a certain piece of code statically at compile-time
05:46:39 <elliott> and if you break that contract the code won't compile
05:46:52 <elliott> so you know if you fuck it up or if something you call fucks it up for you
05:49:09 <quintopia> it wasn't a frown
05:49:11 <quintopia> it was straight
05:49:20 <quintopia> and i posted it in almost every channel i'm in
05:49:23 <quintopia> for shits
05:49:29 <elliott> but not giggles?
05:49:42 <quintopia> it's hard to giggle with a straight face
05:49:54 <elliott> heh
05:50:23 <zzo38> Someone said that after I make dvi-processing package for Haskell, they might add DVI output to Pandoc. I looked at Pandoc and have other ideas too:
05:50:37 <zzo38> * MediaWiki format for input and output.
05:50:49 <zzo38> * ESC/P format for input and output.
05:51:19 <zzo38> * Pure ASCII format for output, with option for LF/CRLF, line wrap, and form feeds.
05:51:27 <zzo38> * Plain TeX format for output.
05:52:14 <zzo38> * Support additional URI schemes: data ftp gopher
05:52:30 <zzo38> * Plain Old Documentation (as Perl) input and output.
05:53:50 <zzo38> * UNIX manual page format input and output.
05:54:03 <zzo38> What is your opinion/comment/complaint about this please?
05:56:29 <elliott> i'm sure he'd love patches
06:00:12 <pikhq_> Wow. If you add up all countries' reported transactions, the world had $331 billion in net exports.
06:00:24 <pikhq_> I didn't realise we were trading with, I dunno, Mars.
06:00:59 <Sgeo> pikhq_, the article I read that from made pretty much the exact same comment
06:01:00 <Sgeo> >.>
06:02:24 <elliott> pikhq_: It's the compromise the Andromedans agreed to. The population at large remains blissfully ignorant.
06:02:32 <elliott> Turns out the Earth has some interesting natural resources.
06:03:21 <zzo38> It looks like it has output MediaWiki and UNIX manual pages, but cannot input those formats. It also seem to only currently support "http" and "https" URI schemes.
06:05:24 <Sgeo> Aren't the Andromedans [Ed story spoilers]
06:05:31 <Sgeo> Wait, no
06:06:41 <elliott> pikhq_: I was going to ask how coroutine implementations on Unix allocate tiny stacks while stopping coroutines from stepping on each other's stacks, then I realised that they just won't bother *sigh*
06:07:10 <madbr> pikhq: stuff lost in transport?
06:08:28 <coppro> woot
06:08:36 <madbr> slowly working on a replacement for subtractive synthesis :D
06:08:36 <coppro> I'm done implementing my subset-of-c++ compiler for class
06:08:39 <coppro> it's so great
06:08:45 <madbr> coppro: cool
06:08:46 <coppro> I didn't want to write a register allocator
06:08:51 <coppro> so all the work is done on the stack
06:08:57 <coppro> (mips)
06:09:45 <madbr> hmm, I think I've figured out an interesting CPU design
06:09:51 <elliott> coppro: just do what all the cool kids do, assume there are infinite registers :)
06:10:06 <zzo38> Who is people making Pandoc, in #haskell channel?
06:10:22 <madbr> essentially a RISC with a fast calculation unit
06:10:50 <coppro> elliott: I have not confirmed this, but I suspect the prof has an expression with too many subexpressions to fit at some point
06:11:00 <elliott> coppro: oh, i just meant internally
06:11:06 <elliott> coppro: then you can really trivially use registers
06:11:12 <coppro> elliott: yeah, I know
06:11:19 <madbr> executes all the normal code in risc mode, then when it gets to a special loop that's optimised in handwritten assembly for the special execution unit, switches to that mode
06:11:22 <elliott> coppro: you could just assign the first N virtual registers to the real ones if you want to claim to do register allocation :D
06:11:41 <elliott> i think compilers will have really made it when they implement malloc() for register numbers
06:11:48 <elliott> they will have reinvented
06:11:49 <elliott> "the heap"
06:11:51 <madbr> special execution mode is for doing sound mixing and graphic rendering loops
06:12:01 <madbr> the kind of stuff that gets optimised in assembly anyways
06:12:10 <coppro> elliott: well, there's a bonus which is to get code size down
06:12:30 <madbr> special execution unit is a kind of vliw
06:12:36 <coppro> elliott: I may go for a naive subexpression-based allocator
06:13:04 <madbr> basically a whole bunch of mini-units that are a multiplexer + ALU + register
06:13:06 <elliott> coppro: See, here I was going to suggest something like superoptimisation, if compile time isn't a criterion.
06:13:29 <coppro> hahaha
06:13:32 <pikhq_> madbr: That's a lot to lose in transport.
06:13:45 <madbr> transport?
06:13:50 <elliott> coppro: It would shorten complicated arithmetic!!!
06:13:55 <elliott> madbr: <madbr> pikhq: stuff lost in transport?
06:13:56 <pikhq_> Erm.
06:14:00 <pikhq_> Yeah.
06:14:19 <pikhq_> Sorry, I'm interspersing IRC with 10 minute SRS sessions ATM. :)
06:14:22 <madbr> pikhq: ie the multiplexers would gobble up lots of space? :D
06:14:38 <Sgeo> SRS
06:14:38 <Sgeo> ?
06:15:08 <coppro> elliott: I should add that we're on a sufficiently small subset of mips to make that almost irrelevant
06:15:09 <elliott> pikhq_ is having the world's slowest sex resasignment surgery.
06:15:11 <pikhq_> "Spaced Repitition System".
06:15:23 <elliott> coppro: :-(
06:15:35 <coppro> elliott: no bitwise ops, in particular
06:15:56 <pikhq_> One rather obnoxiously good means of learning large quantities of things; I find it particularly handy in language acquisition.
06:15:58 <coppro> elliott: btw when I mean all work, I mean all
06:16:03 <Darth_Cliche> elliott: Wouldn't that be a relatively fast sex reassignment surgery, given that it usually takes about five years or so?
06:16:22 <madbr> but yeah on any given cycle, each ALU gets one opcode, executes it and the result is stored in the corresponding register
06:16:25 <coppro> like, a = b + c first pushes b, then pushes c, then pops them and pushes b + c, then pops that and assigns to a
06:16:43 <elliott> Darth_Cliche: I don't think a 5-year single period of surgery is involved :P
06:16:53 <elliott> coppro: Congratulations! You're compiling to Forth!
06:16:55 <madbr> and it reads the values for the ALU from other special unit registers
06:17:09 <madbr> so essentially you specify a data flow
06:18:02 <coppro> madbr: that's called a vector processor
06:18:22 <madbr> don't vector processors essentially apply SIMD?
06:18:24 <elliott> <madbr> so essentially you specify a data flow ;; you mean a GPU? :P
06:18:39 <madbr> I'm not familiar with GPU architecture :D
06:18:47 <elliott> I think http://www.yosefk.com/blog/simd-simt-smt-parallelism-in-nvidia-gpus.html is relevant.
06:19:18 <madbr> I don't like the fact that GPUs are on the other side of the bus and that you can only control them sorta indirectly
06:19:39 <elliott> madbr: you'd like larrabee
06:19:44 <elliott> also what amd are doing
06:19:52 <elliott> everyone's gluing a cpu and gpu together :P
06:20:09 <elliott> wow, larrabee isn't actually cancelled?
06:20:10 <pikhq_> It's a rather obvious move when people start programming GPUs, TBH.
06:20:45 <pikhq_> "Hmm. The PCIe bus is a major source of latency." "Can't we just stick it on the die?" "..."
06:21:03 <elliott> We should just eliminate all buses.
06:21:14 <elliott> Fuck public transport, the next CPU I buy better not require a motherboard.
06:21:26 <elliott> It's just a CPU with a shitload of USB ports on every single side of it.
06:21:31 <elliott> And a power lead.
06:21:51 <pikhq_> elliott: Strictly speaking, the project was, but the fruits of it are going into production.
06:23:30 <madbr> fruits of it?
06:25:12 <zzo38> One idea I have about Haskell instance override is like this (use scoped type variables): module Example where { value1 :: Int; value1 = 2 + 3; value2 :: (Num x, x ~ Int) => x; value2 = (2 :: x) + 3; } module Main where { import Example; instance Num Int where { _ + _ = 42; }; main = print (value1, value2); }
06:25:18 <madbr> wasn't larrabbee basically a multicore pentium with a huge ass simd unit and some hardware multi-load and bilinear interpolate instructions? :D
06:25:46 <madbr> but yeah my idea isn't actually SIMD
06:25:52 <zzo38> Maybe I am slightly mistake, though.
06:26:00 <pikhq_> "Multicore" doesn't quite describe it.
06:26:18 <madbr> more like a a hybrid between a FPGA and a CPU
06:26:42 <elliott> madbr: specifying microcode isn't really fpga, if i understand your idea from reading half of every third line about it
06:26:44 <pikhq_> A 48 core CPU.
06:27:09 <madbr> elliott: the point of a fpga is that it's rather parallel
06:27:21 <madbr> basically you create a bunch of components
06:27:21 <zzo38> madbr: Can you write a document of this idea please?
06:27:23 <pikhq_> madbr: The point of an FPGA is that it's *specifying circuitry*.
06:28:02 -!- CakeProphet has joined.
06:28:03 <pikhq_> It's a redesignable integrated circuit.
06:28:21 <madbr> most components are basically a bunch of registers for which you specify "ok on next clock cycle this gets a value based on [other registers and math circuits]
06:28:27 <madbr> from what I can tell
06:29:06 <madbr> pikhq: well, yeah, but afaik almost any design is register based
06:29:27 <madbr> zzo: hmm
06:29:41 <madbr> zzo: probably yeah
06:29:54 <madbr> suppose your processor has 32 units
06:31:12 <madbr> for each unit, you specify an ALU opcode, and two source registers, and a cycle from which the data becomes "valid" (before that cycle, the register doesn't get written to)
06:31:18 <elliott> oh well, time to read about the programmable pipeline
06:31:41 <madbr> I guess it's a user programmable pipeline yeah
06:31:51 <elliott> oh, wasn't talking about this :)
06:32:17 <madbr> some of the units are special and can do memory reads
06:32:29 <madbr> or memory writes
06:32:31 <Sgeo> Can it reprogram itself, or must it be reprogrammed externally?
06:32:56 <madbr> sgeo: it's programmed by the RISC part of the processor
06:33:37 <madbr> so basically code reaches some part that needs beefy power, the risc processor fills in all the registers of the fast unit and kicks off execution
06:35:38 <madbr> once that's done executing, control goes back to the risc part, that presumably reads out some values from the fast execution unit and cleans up and returns to C++ code
06:35:41 <elliott> sigh, opengl is so complicated
06:36:14 <madbr> elliott: sometimes that's required in order to make the api useful
06:36:34 * Sgeo just wants to know if they're arrows or not
06:36:35 <Sgeo> >.>
06:36:41 <madbr> arrows?
06:36:41 <elliott> Sgeo: what is arrows
06:36:44 <elliott> as in
06:36:47 <elliott> what do you want to know whether is etc.
06:36:53 <elliott> madbr: sure, but it's annoying when a large part of the complexity is gunk caused by the host language :)
06:37:20 <madbr> elliott: at least it's not oop :D
06:37:33 <elliott> well, there's that
06:37:34 <Sgeo> FPGAs. As far as I understand, circuitry can be represented with arrows, unless the circuit can modify itself
06:37:54 <elliott> Sgeo: there are arrow dsls for hardware design in haskell yes i believe
06:38:03 <madbr> sgeo: ah
06:38:24 <madbr> sgeo: isn't an arrow basically "on next cycle this register takes [value whatever]" ? :D
06:38:27 <elliott> Sgeo: but a york lava-style approach is nicer, arrows suck :P
06:38:35 <elliott> madbr: http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Arrow.html
06:38:40 <Sgeo> elliott, but can FPGAs be represented by such, or are they capable of reprogramming themselves in a way that would require ArrowApply?
06:38:59 <elliott> Sgeo: FPGAs can't be reprogrammed at runtime, obviously. and it's not clear what you mean by "represented by"
06:39:09 <Sgeo> Ok, that answers my question
06:39:11 <elliott> Sgeo: obviously you can't write idk (Clock ~> OutPorts)
06:39:13 <elliott> because of arr
06:39:27 * Sgeo is starting to dislike arr >.>
06:39:32 <madbr> I don't know haskell so dunno
06:39:34 <Sgeo> Not just because of this
06:39:48 <elliott> Sgeo: here's some life advice: just skip the interim steps and start disliking arrows
06:39:52 <elliott> a good way to do this is to try and use arrows
06:40:00 <madbr> but essentially it has something like arrows yeah
06:40:10 <Sgeo> york lava?
06:40:33 <madbr> essentially the code would look something like
06:40:53 <elliott> Sgeo: http://www.cs.york.ac.uk/fp/reduceron/memos/Memo23.txt, http://hackage.haskell.org/package/york-lava
06:40:57 <elliott> (first link is more helpful)
06:41:06 <madbr> r[0] <= r[x] {OPERATOR} r[y]
06:41:09 <madbr> r[1] <= r[x] {OPERATOR} r[y]
06:41:11 <madbr> r[2] <= r[x] {OPERATOR} r[y]
06:41:12 <elliott> Sgeo: the reduceron is written in it
06:41:13 <madbr> ...
06:41:17 <madbr> r[31] <= r[x] {OPERATOR} r[y]
06:41:18 <elliott> madbr: that's not what haskell arrows are :P
06:41:30 <madbr> then it's not haskell arrows :D
06:41:36 <madbr> it's VHDL arrows basically
06:41:54 <madbr> r[32] <= memory[r[x]]
06:42:30 <madbr> memory[r[x]] <= r[y]
06:42:53 <Sgeo> But something of type Bit -> Bit -> Bit should be opaque, how can a compiler determine what it is?
06:42:56 <Sgeo> Or is it not really ->/
06:43:04 <madbr> ?
06:43:22 <elliott> Sgeo: hint: Bit isn't Bool
06:43:33 <elliott> data Bit =
06:43:33 <elliott> Symbol { componentName :: String
06:43:33 <elliott> , numOutputs :: Int
06:43:33 <elliott> , parameters :: [Parameter]
06:43:33 <elliott> , inputs :: [Bit]
06:43:34 <elliott> , instanceRef :: IORef (Maybe InstanceId)
06:43:36 <elliott> , outputNumber :: OutputNumber
06:43:38 <elliott> , outputSignal :: Signal
06:43:40 <elliott> }
06:44:09 <Sgeo> Um, hmm. So <&> takes a bit that knows it was made of two bits?
06:44:13 <Sgeo> Erm, makes, not takes
06:44:14 <elliott> what
06:44:17 <elliott> yes
06:44:26 <Sgeo> Hmm, cool
06:44:29 <elliott> (the IORef there is for observable sharing... uses unsafePerformIO, but the Kansas Lava team published a safer, unsafePerformIO-less observable sharing implementation later on, so it's nothing fundamental)
06:44:39 <elliott> (and ofc the external interface is pure)
06:44:56 <elliott> Sgeo: the primitives look like this basically:
06:45:06 <elliott> -- | Inverter.
06:45:06 <elliott> inv :: Bit -> Bit
06:45:06 <elliott> inv a = makeComponent "inv"
06:45:06 <elliott> {- Inputs: -} [a]
06:45:06 <elliott> {- Outputs: -} 1
06:45:07 <elliott> {- Simulate: -} (\[a] -> [map not a])
06:45:09 <elliott> {- Params: -} []
06:45:11 <elliott> {- Continue: -} (\[o] -> o)
06:45:13 <elliott> -- | D-type flip-flop, with initialiser (first argument).
06:45:15 <elliott> delayBit :: Bit -> Bit -> Bit
06:45:17 <elliott> delayBit init a =
06:45:19 <elliott> makeComponent "delay"
06:45:21 <elliott> {- Inputs: -} [init, a]
06:45:23 <elliott> {- Outputs: -} 1
06:45:25 <elliott> {- Simulate: -} (\[init, a] -> [head init:a])
06:45:27 <elliott> {- Params: -} ["init" :-> getConst (componentName init)]
06:45:29 <elliott> {- Continue: -} (\[o] -> o)
06:45:31 <elliott> ehh.... that is longer than it looked
06:45:33 <elliott> sorry for flood
06:46:11 * Sgeo doesn't quite grasp the details
06:46:16 -!- zzo38 has left.
06:46:20 * Sgeo should go to sleep
06:46:37 <elliott> Sgeo: it just records a bit symbolic description of the logic tree basically
06:46:43 <elliott> and then writes it out as a million-line VHDL file
06:46:53 <elliott> (ok not a million lines but the reduceron was like ... a ridiculous number of lines)
06:46:59 <elliott> (and they all look like a <= some_primitive(b,c) :P)
06:47:06 * Sgeo could make something similar for AW stuff!
06:47:10 <Sgeo> >:)
06:47:13 <elliott> die die die
06:47:20 <madbr> so yeah anyways, the idea is that you'd write the tight loops in assembly for the "very fast execution" unit and the rest in C++ to run on the RISC part
06:48:01 <madbr> just like a SIMD coprocessor :D
06:48:12 <Sgeo> Real hardware bores me
06:48:16 <madbr> and it would get potentially more operations per cycle than the SIMD
06:48:19 <Sgeo> Give me virtual worlds any day
06:48:21 <madbr> sgeo: oh?
06:48:43 <madbr> what are you into, networks or what? :D
06:49:11 <Sgeo> Think Second Life, things like that
06:49:25 <madbr> never tried SL
06:49:32 <madbr> heard it was for RP mostly
06:49:43 * Sgeo doesn't really roleplay
06:51:06 <madbr> well, I heard about it mostly from furries so that would explain heh
06:51:27 <pikhq_> That's probably the most *lasting* class of use for it.
06:52:01 <pikhq_> Otherwise, well, you've got rather stupid "ZOMG ALTERNATE CURRENCY" morons, and people there for the novelty.
06:52:08 <pikhq_> As you can imagine, that doesn't last long.
06:52:16 <pikhq_> So, yeah, I suppose by now it mostly is for RP.
06:52:21 <madbr> well, that's just a pyramid/zero sum game
06:52:37 * Sgeo is mostly there for scripting and talking
06:52:46 <madbr> whereas for RP their other alternatives are basically IRC and other chat programs
06:53:02 <Sgeo> I've made a negligible, but non-zero, amount of money in SL
06:53:12 * Sgeo still has yet to convert it to RL currency though
06:53:34 <elliott> is it 3 cents
06:53:35 * Sgeo isn't in it for the money though
06:53:44 <Sgeo> Something like $200
06:53:47 <elliott> Sgeo what's the capital of second life called
06:54:21 <Sgeo> Capital, as in currency? Lindens, or Linden
06:54:25 <Sgeo> *Linden dollars
06:54:27 <elliott> no as in
06:54:28 <elliott> capital
06:54:35 <madbr> tried a MUCK once, was kinda depressing
06:54:47 <Sgeo> elliott, not entirely sure that that's meaningful
06:54:54 <elliott> lame
06:54:56 <elliott> whats the place where you enter
06:55:04 <oklopol> madbr: you can also RP in MMORPGs!
06:55:09 <Sgeo> I think there are several, randomly chosen
06:55:13 <Sgeo> It changes
06:55:14 <elliott> SIGH
06:55:17 <madbr> essentially an IRC chat channel, plus the rest of the world was some kind of dead scripted thing
06:55:21 <elliott> i give up on making this cheap occupy wherever that is joke
06:55:30 <Sgeo> Occupy Grid?
06:55:36 <madbr> oklopol: not playing those, ever :D
06:55:37 <elliott> yes, that. wow that sounds so fucking stupid.
06:55:40 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:55:43 <elliott> like i'm envisioning it as a wireframe
06:55:44 <elliott> and its the 90s and
06:55:44 <oklopol> madbr: who would
06:55:50 <elliott> oh god what im thinking of is cybertown Sgeo and i hate you
06:55:51 <elliott> and i hate the 90s
06:55:54 <elliott> and the 90s should be obliterated
06:56:02 <Sgeo> Well, the grid represents the whole SL ... universe
06:56:07 <elliott> YOU'RE A UNIVER
06:56:08 <elliott> ASE
06:56:12 <elliott> univer-ASS!!!!!!
06:56:15 <elliott> cry
06:56:23 <madbr> dunno, I dislike music from about 1995 to 2010 :D
06:56:23 <oklopol> elliott: oh right because you never got to see them because you're 12
06:56:27 <Sgeo> elliott, Cybertown is not a part of Second Life
06:56:29 <elliott> no i'm 9
06:56:30 <elliott> and a half
06:56:35 <elliott> i age backwards
06:56:36 <Sgeo> Cybertown does have a City Hall
06:56:43 <elliott> madbr: what happened in 2010
06:56:53 <elliott> Sgeo: YOU'RE A PART OF SECOND LIFE.
06:57:16 <madbr> elliott: well, I haven't heard too much of the 2010's music yet so I'm not judging :D
06:57:36 <madbr> but what I've heard so far I don't like too much
06:57:41 -!- CakeProphet has quit (Ping timeout: 240 seconds).
06:57:43 <madbr> so I guess I am judging, ha
06:57:54 * elliott wonders if madbr is actually listening to a representative sample of all music released in 2010.
06:58:01 <madbr> course not
06:58:05 <elliott> Boring.
06:58:18 <pikhq_> If we're lucky, he's listening to a representative sample of all music that hit top 40 radio in 2010.
06:58:26 <pikhq_> And if he did *that*, then of course he wouldn't like it.
06:58:27 <pikhq_> :P
06:58:47 <pikhq_> Hint: the charts do, and basically have always, sucked.
06:58:50 <Sgeo> elliott, anyways, AW does have a specific entry point, AWGate, and a specific huge world that a lot of people used to build in, AW (Alphaworld)
06:58:58 <Sgeo> So, Occupy AWGate?
06:59:03 <elliott> Sgeo: yes, but nobody has ever made money from activeworlds
06:59:05 <elliott> or enjoyment
06:59:07 <elliott> or happiness
06:59:12 <elliott> all they have made is their soul a little more dead on the inside
06:59:30 <Sgeo> There used to be huge protests in AW
06:59:35 <Sgeo> Due to price increases
06:59:36 <oklopol> well have activeworlders ever made money off the real world?
06:59:42 <oklopol> maybe it just separates better.
06:59:45 <elliott> Sgeo: like i said
06:59:46 <elliott> dead inside
06:59:55 <elliott> oklopol have you tried being dead inside its so great
06:59:59 <madbr> heh money in virtual worlds
07:00:04 <madbr> it's a zero sum game
07:00:25 <Sgeo> There's money in Cybertown
07:00:33 <Sgeo> That has no relation to RL money whatsoever
07:00:40 <oklopol> elliott: it's great for a while
07:01:57 <madbr> but yeah anyways, in a normal processor, you'd go:
07:02:21 <madbr> load r0, [r1]
07:02:23 <elliott> does anyone know opengl shit
07:02:33 <madbr> I know some
07:02:37 <madbr> add r0, #16
07:02:48 <elliott> madbr: programmable pipeline?
07:02:56 <madbr> str r0, [r1]
07:03:00 <madbr> add r1, #4
07:03:15 <madbr> elliott: not anything about shaders or stuff no unfortunately
07:03:23 <elliott> right, that's what i'm interested in :p
07:03:34 <madbr> what are you drawing?
07:04:20 <elliott> tons of stuff, theoretically :P I'm more interested in the high-level details of the pipeline, because I'm playing about with a certain library I want to write...
07:05:14 <madbr> in the slice processor (the kind of processor I've been talking about), you'd have:
07:05:30 <oklopol> elliott: i know pretty much everything about opengl
07:05:38 <oklopol> it means open graphics library
07:05:41 <elliott> oklopol: thx
07:06:06 <elliott> oklopol: i had to check that just because i doubt you so much
07:06:20 <oklopol> wow.
07:06:31 <oklopol> well i did just pull that from my rectum
07:06:36 <oklopol> so maybe that was a good idea
07:06:48 <oklopol> gtg
07:06:54 <elliott> farewell oklopol
07:07:00 <elliott> remember not to die...
07:07:04 <oklopol> uu
07:14:13 <madbr> r0 <= r0 + 4
07:14:14 <madbr> r1 <= r1 + 4 [start at cycle 2]
07:14:14 <madbr> r2 <= r2
07:14:14 <madbr> r3 <= r32 + r2
07:14:14 <madbr> r32 <= mem[r0]
07:14:14 <madbr> mem[r1] <= r3 [start at cycle 2]
07:14:35 <madbr> (all of these operations happen together, on each cycle)
07:15:55 <madbr> essentially this takes a buffer of 32bit numbers and increments each one by the value in r2
07:16:15 <madbr> r0 and r1 are initialized to the data start address
07:16:46 <madbr> there's also a loop count register
07:18:01 -!- derrik has joined.
07:20:23 <madbr> essentially, thanks to out of order execution, you can get more or less that type of execution on a pentiumII and later family processor
07:21:09 <madbr> since you get up to 3 ALU operations and afaik 1 load 1 store and some other operations, plus FPU or SSE operations, on any given cycle :D
07:25:57 -!- madbr has quit (Ping timeout: 276 seconds).
07:30:35 -!- madbr has joined.
07:30:42 <madbr> damnit
07:31:32 <madbr> anyways, that's it for the data flow oriented language
07:32:27 <madbr> the idea being to come up with something that should be simple enough to implement in VHDL or something but allow for fast processing :D
07:32:42 <madbr> eh, did I say language
07:32:43 <madbr> ?
07:32:47 <madbr> I mean processor
07:39:01 -!- madbr has quit (Read error: Connection reset by peer).
08:01:21 -!- copumpkin has quit (Ping timeout: 252 seconds).
08:01:46 -!- copumpkin has joined.
08:08:28 -!- andrew12 has joined.
08:11:00 <elliott> `@ andrew12 ? welcome
08:11:07 <HackEgo> andrew12: 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
08:11:14 * elliott is the best at precision welcome attacks.
08:11:33 <andrew12> hello.
08:11:40 * shachaf never got a warm welcome like that.
08:12:00 <andrew12> i was half expecting this room to be very dead
08:12:14 <shachaf> No one spoke in here for months until you came in.
08:12:26 <andrew12> i doubt that
08:12:29 <elliott> andrew12: It's pretty active :P
08:12:33 <shachaf> That's why we're so excited.
08:12:41 <shachaf> It's active but the topic is never esoteric languages.
08:12:53 * elliott checks our recent log sizes... yeah, still always 100-200 kilobytes per day
08:13:11 <shachaf> I spend too much time at IRC.
08:13:18 <elliott> At IRC?
08:13:31 <elliott> > chr 67
08:13:32 <lambdabot> 'C'
08:14:31 <elliott> andrew12: Mind you, we're not on-topic all that often.
08:14:44 <andrew12> that's not a problem :p
08:14:44 <elliott> But the world of esolangs isn't exactly the fastest-moving beast.
08:14:49 <andrew12> yeah
08:14:55 <oklopol> except me, i'm always on topic
08:15:11 <elliott> `log [^]]<oklopol>
08:15:28 <elliott> HackEgo: Stop being so slow.
08:15:37 <HackEgo> 2008-06-13.txt:00:46:23: <oklopol> also who it a tome, a small one
08:15:47 <oklopol> what
08:15:55 <shachaf> fungot: Stop being so slow.
08:15:56 <fungot> shachaf: but it is your journey i am just not old enoug)( to )(ave t)(ose are your black leanings, much as the moon takes liberty. reason. justice. civility. edification. perfection.
08:16:01 <Sgeo> `log [^]]<Sgeo>
08:16:06 <Sgeo> What's with the ] ?
08:16:07 <elliott> Reason. Justice. Civility. Edification. Perfection. --fungot
08:16:08 <fungot> elliott: really, it is a free card in your sylladex
08:16:08 <elliott> ^style
08:16:09 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
08:16:10 <HackEgo> 2007-09-07.txt:15:09:36: <Sgeo> lol
08:16:12 <oklopol> i never said that
08:16:12 <elliott> ^style irc
08:16:12 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
08:16:14 <oklopol> `log [^]]<oklopol>
08:16:14 <elliott> fungot: Say hi to andrew12.
08:16:15 <fungot> elliott: mmm... real lambda.... eval don't work?)
08:16:19 <elliott> ^source
08:16:19 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
08:16:20 <HackEgo> 2008-04-26.txt:21:35:27: <oklopol> what's the difference between a function and a thing that receives a message?
08:16:20 <oklopol> this is something crazy i'm guessing
08:16:22 <shachaf> `log [^]]<shachaf>
08:16:28 <HackEgo> 2011-10-02.txt:06:48:41: <shachaf> .,admin + elliott
08:16:29 <andrew12> so many bots
08:16:31 <shachaf> This channel is pretty much #botspam
08:16:32 <elliott> Oh no, it's the "someone new joined, let's use the bots forever" thign.
08:16:34 <elliott> thing.
08:16:44 <elliott> andrew12: Yeah, but only one of them is written in Befunge.
08:16:45 <shachaf> Actually, this channel is pretty much #elliottandhisaudience
08:16:51 <elliott> X-D
08:16:54 <andrew12> lol
08:17:02 <elliott> `run for i in $(seq 5); do echo "and only this one runs arbitrary Linux commands"; done
08:17:03 <shachaf> Actually it's pretty much #haskell
08:17:04 <HackEgo> and only this one runs arbitrary Linux commands \ and only this one runs arbitrary Linux commands \ and only this one runs arbitrary Linux commands \ and only this one runs arbitrary Linux commands \ and only this one runs arbitrary Linux commands
08:17:08 <oklopol> well that's a natural step after hey let's be interesting and realizing we're not
08:17:20 <shachaf> elliott: That's not a Linux command!
08:17:22 <elliott> !bf_txtgen Only this one does esolang stuff?? EgoBot is pretty useless.
08:17:26 <oklopol> this is something crazy i'm guessing
08:17:27 <EgoBot> ​691 +++++++++++++++[>++>++++++++>+++++>+++++++<<<<-]>>>++++.>+++++.--.<<+.<++.>-----.>+++++++++++++++++++++++++.+.<-.<.>----.>+++++.>-------.<<<.>>>-.<<.----------.>+++++.<<.>.>.----.---.<----.>>++++++++++.<<++++++.<.>>+++++++.+.+.>--------.<<-.<+++++++++++++++++++++++++++++++..-------------------------------.+++++++++++++++++++++++++++++++++++++.>+.++++++++.<---.>.+++++.<----------------------------------.>>>+++.<<-.<.+++++++++++++++++++++++++++++++++++++++++
08:17:31 <oklopol> erm
08:17:34 <oklopol> `log [^]]<oklopol>
08:17:38 <elliott> Right, now we've abused all the bots, we can stop now.
08:17:40 <HackEgo> 2007-10-05.txt:20:07:04: <oklopol> hmm, sorry then
08:17:41 <elliott> Dammit oklopol.
08:17:53 <oklopol> but that thing obviously garbles the lines
08:17:59 <Sgeo> What is the ]?
08:18:10 <oklopol> <oklopol> also who it a tome, a small one
08:18:14 <elliott> Sgeo: huh?
08:18:15 <oklopol> why did i say that
08:18:21 <oklopol> let's spend the whole day wondering
08:18:27 <shachaf> elliott: EgoBot ought to generate optimal programs. Kolomogorovically speaking.
08:18:29 <elliott> We're giving andrew12 a super good first impression, here.
08:18:31 <Sgeo> [^]]<Whoever>
08:18:36 * shachaf will complain until someone implements it.
08:18:36 <Sgeo> What's with the second ]?
08:18:41 <elliott> Sgeo: [^]] = [^\]]
08:18:57 <elliott> [^]]<foo> matches any <foo> not preceded by ]
08:19:01 <elliott> but the <foo> in that line is itself preceded by ]
08:19:12 <elliott> so you avoid HackEgo's annoying tendency to spit your line back at you as the result
08:19:18 <Sgeo> Oh, I see
08:19:21 <shachaf> elliott: Any <foo> preceded by a character that is not ], rather. :-(
08:19:27 <Sgeo> I misparsed it as somehow trying to find the first instance
08:19:37 <elliott> shachaf: Shhh, this is #esoteric, we don't do that fancyspeak.
08:19:39 <shachaf> Lern2lookbehind
08:19:59 * elliott instantly hears the Look Around You theme in his head.
08:20:07 <elliott> Only because I read it as "look around".
08:20:19 <elliott> Look Behind You would be a significantly more disturbing name for a show.
08:21:30 <pikhq_> Such an amazing show.
08:21:32 <oklopol> elliott: could you please paste me the context of that tome line so i don't have to do anything
08:21:59 <elliott> 00:46:07: <oklopol> who me a situation where it's bad if it means the same thing
08:21:59 <elliott> 00:46:11: <oklopol> *show
08:21:59 <elliott> 00:46:14: <oklopol> also who it tome
08:21:59 <elliott> 00:46:16: <oklopol> *to me
08:21:59 <elliott> 00:46:23: <oklopol> also who it a tome, a small one
08:22:03 <elliott> Hope that clears things up.
08:22:29 <shachaf> `addquote <oklopol> also who it a tome, a small one
08:22:32 <HackEgo> 727) <oklopol> also who it a tome, a small one
08:22:47 <elliott> I can feel our QDB improving with each passing moment.
08:23:00 <oklopol> wwwhat
08:23:08 <oklopol> oh
08:23:09 <andrew12> doesn't tome mean book?
08:23:09 <oklopol> .
08:23:35 <Sgeo> elliott, update
08:23:48 <oklopol> i don't think i've ever seen a typoness of that badly.
08:23:50 <shachaf> elliott is actually our most sophisticated bot.
08:23:58 <oklopol> so badly typoness.
08:24:05 <elliott> I'm written in SNOBOL.
08:24:21 <shachaf> He accepts commands that contain "@" in them and say anything negative, and responds with simulated anger.
08:24:27 <andrew12> there's always this one: http://bash.org/?5300
08:24:31 <shachaf> It's a lot of fun until you get tired of it.
08:24:39 <elliott> hah
08:25:12 <shachaf> No one mentioned poor lambdabot, speaking of bots that accept @-commands.
08:25:36 <elliott> > 10 "I run BASIC commands."
08:25:37 <lambdabot> 10
08:25:45 <elliott> (It responds with the line number if the command executed correctly.)
08:28:01 <shachaf> elliott: I don't think a string is a correct BASIC command.
08:28:08 <elliott> That's the comment syntax, duh.
08:28:11 <elliott> Haven't you ever used Smalltalk?
08:28:12 <Sgeo> > 10 Blah
08:28:13 <lambdabot> Not in scope: data constructor `Blah'
08:28:22 <elliott> Sgeo: It's BASIC, everything has to be IN CAPITALS.
08:28:42 <Sgeo> Derp
08:28:48 <Sgeo> elliott, funny
08:28:51 <shachaf> I assume everyone is familiar with augustss's various abominations so there's no point in me mentioning them.
08:29:00 <elliott> shachaf: I love those.
08:29:01 <Sgeo> shachaf, I've heard of them
08:29:16 <elliott> Sgeo: http://augustss.blogspot.com/2009/02/more-basic-not-that-anybody-should-care.html
08:29:35 * Sgeo somehow didn't notice that it was lambdabot
08:30:04 <Sgeo> ExtendedDefaultRules?
08:30:16 <Sgeo> andrew12, for clarification, lambdabot does not in fact run BASIC
08:31:07 <andrew12> i see
08:31:08 <shachaf> Sgeo: No one claimed that it did. We're just talking in an esoteric language which happens to resemble English in syntax.
08:32:24 <elliott> shachaf: It's weird how most people don't notice that until we startodifjasj ojrpwer pdsfa kallq fklerg.
08:32:33 <elliott> andrew12 oppq ner.
08:33:15 <andrew12> eh?
08:33:37 <elliott> Yse.
08:33:41 <elliott> That was actually a typo.
08:33:44 <elliott> But let's leave it like that.
08:33:52 <elliott> We're not usually this weird, I swear. Well, that might be a lie.
08:34:14 <andrew12> i'm in weirder rooms
08:34:18 <andrew12> trust me, :P
08:34:24 * Sgeo finds that difficult to believe
08:34:28 <shachaf> elliott: Usually much weirder, eh?
08:34:42 <elliott> Sgeo: Oh please, we're not usually this interesting.
08:34:49 <elliott> If "interesting" is the right word to use.
08:35:07 <elliott> We're a boring, stately freenode enterprise that pretends we're wacky because we talk about esolangs.
08:35:19 <elliott> Also, you all suck.
08:35:57 <shachaf> elliott: u mad?
08:36:02 <elliott> See?
08:36:05 <shachaf> That's elliott's favorite expression.
08:36:20 <elliott> "That's elliott's favorite expression." is shachaf's favourite expression.
08:36:33 <elliott> It is important to keep in mind the difference between someone's favorite expression and their favourite expression.
08:36:53 <shachaf> "post-ironic, a.: When one's ironic appreciation of something becomes genuine, usually due to either prolonged exposure or the enjoyment derived from how amusingly terrible it is."
08:37:04 <shachaf> ellioutt: I agree.
08:37:39 <andrew12> so, i've written a brainfuck interpreter and debugger in ruby.
08:37:57 <andrew12> https://github.com/andrew12/brainfuck
08:38:17 <shachaf> andrew12: Wait, is that, like, a new esolang or something?
08:38:27 <andrew12> brainfuck? totally
08:38:48 <shachaf> You should make a dialect which is identical in semantics but uses slightly different syntax to express the eight operators.
08:38:55 <shachaf> elliott is a fan of those.
08:39:04 <elliott> That's such a novel idea.
08:39:30 * elliott links andrew12 to https://bitbucket.org/lifthrasiir/esotope-bfc/overview, because that's just what he does whenever the topic of brainfuck implementations comes up.
08:39:51 <shachaf> elliott: It's National Novel Idea Month, man!
08:40:03 <elliott> That's a month?
08:40:25 <andrew12> NaNoIdMo!
08:40:46 <elliott> I prefer NaNoSuperEgoMo.
08:41:11 <shachaf> I typed that in and then decided that it was too tacky to say. :-(
08:41:17 <pikhq_> That's every month for you, Sir Hubris.
08:41:26 <elliott> shachaf: The solution is to not have standards.
08:41:29 * elliott recommends it.
08:42:19 <shachaf> honor favorite gray
08:42:34 <pikhq_> Also, dammit, now I'm rewatching "Look Around You".
08:42:53 <pikhq_> Well, "dammit"'s not the right phrase, as that is wonderful.
08:43:02 <elliott> We need Ngevd here to provide some youthful enthusiasm to stop us spiralling down the interminable ... spiral ... self-hatred.
08:43:29 <shachaf> Is Ngevd youthful, or just Ngevd's enthusiasm?
08:43:59 <shachaf> aluminum
08:44:04 <shachaf> What a vile word, aluminum.
08:44:09 <elliott> I wouldn't call Ngevd old and oh god I just realised what you're doing.
08:44:17 <elliott> I thought "honor favorite gray" was just... I don't know, you're weird.
08:45:05 * elliott honours his favourite Grey.
08:45:12 <elliott> http://upload.wikimedia.org/wikipedia/commons/3/32/Alienigena.jpg
08:45:13 * elliott honour.
08:45:17 <shachaf> elliott: Why don't you write him a check?
08:45:53 <shachaf> Maybe give him a donut and go to the theater together.
08:46:09 <elliott> andrew12: Your first task as a newbie is to distract shachaf.
08:46:35 <andrew12> shachaf: Look, a distraction!
08:46:39 <shachaf> elliott has very -- I wouldn't call them *high* standards, exactly, but they're very far off to the side.
08:48:36 <elliott> So they're...
08:48:43 <elliott> #########
08:48:43 <elliott> #
08:48:43 <elliott> ########
08:48:43 <elliott>
08:48:43 <elliott> #######
08:48:44 <elliott>
08:48:45 <elliott> ######
08:48:47 <elliott> # # #
08:48:49 <elliott> ###
08:48:51 <elliott>
08:48:53 <elliott> ######
08:48:55 <elliott> #
08:48:57 <elliott> #####
08:48:59 <elliott> standards?
08:49:01 <elliott> Wow, that's the worst sideways ASCII art lettering anyone's ever done.
08:50:07 <pikhq_> shachaf: I think what you're looking for is nonstandard standards.
08:50:23 <shachaf> The nice thing about elliott's standards is that there are so many to choose from.
08:50:38 <elliott> :-D
08:52:16 <Sgeo> But eso-std is down!
08:52:53 <shachaf> elliott: Is there a pattern to when you capitalize your sentences or don't?
08:52:57 <elliott> Yes.
08:53:09 <elliott> Ewwww, this Haskell binding forces me to explicitly free these simple memory resources.
08:53:11 <elliott> shachaf: Fix it.
08:53:25 <shachaf> Yes, sir, right away, sir.
08:53:31 <shachaf> Done.
08:54:19 <elliott> Thanks.
08:54:39 * shachaf wonders whether elliott will now turn on him, like in that one comic.
08:55:01 <elliott> It is a mystery.
09:00:18 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
09:15:27 -!- sebbu2 has joined.
09:15:27 -!- sebbu2 has quit (Changing host).
09:15:27 -!- sebbu2 has joined.
09:18:29 -!- sebbu has quit (Ping timeout: 240 seconds).
09:19:10 -!- pagnol has joined.
09:19:57 -!- GreaseMonkey has quit (Quit: The Other Game).
10:01:45 -!- monqy has quit (Quit: hello).
10:01:50 -!- Phantom_Hoover has joined.
10:11:33 <Phantom_Hoover> lambdabot...
10:11:34 <lambdabot> Phantom_Hoover: You have 9 new messages. '/msg lambdabot @messages' to read them.
10:15:53 * shachaf isn't sure he wants to know.
10:15:59 <shachaf> I suspect elliott, though.
10:16:06 <elliott> It was lambdabot.
10:16:09 <elliott> Talking to Phantom_Hoover.
10:16:11 <elliott> It's pretty creepy.
10:18:20 <Phantom_Hoover> And her in a relationship with CakeProphet, too.
10:23:29 -!- Jendas has joined.
10:25:47 <Jendas> Please, can anybodey help me? I´m not able to identify one particular code, I need to determine, by which esolang is it written
10:26:21 <elliott> cool
10:26:24 <elliott> for what purpose :P
10:26:57 <Jendas> it´s a kind of cipher O:-)
10:28:48 <Jendas> I need to decrypt it
10:29:00 <elliott> pastebin the code?
10:29:04 <Sgeo> Is this a puzzle from some website?
10:29:52 <Jendas> Yes, it is. If you know geocaching.... Frend of mine, made it :-D
10:29:54 <Jendas> Ok w8
10:30:12 <Jendas> +++v+[->++++++++++<]>+++++++++.+<[-]++++++[->++++++++++<]>+++++.+.>++++
10:30:12 <Jendas> [->$++++++++<]>.<<----.<+++[->-----<]>.+++++++++++++++++.++.>>.<<<++[->
10:30:12 <Jendas> ---$--<]>-.<++[->+++++<]>.>>.<<-----------.++++++++++++..----.>>>++++++
10:30:12 <Jendas> +++$++[->+++++<]>+++.-----------..<<<<+++++++.------.<++++[->----<]>.>>
10:30:12 <Jendas> >>- .<<<<<+++++++++++[->++<]>.+++.>>>>.@<<<<<+++++[->-----<]>++.>>>>>+++
10:30:12 <Jendas> +++ ++++ . [-]
10:30:13 <Jendas> [ > 55+5*, 99*9+55+2*+ , 87*54*+64*+, 48*:, v
10:30:14 <Jendas> v ,: ,+2 ,:*2+7**552 ,-*35 ,:**782 # <
10:30:14 <Jendas> > 2255***5+::, 25*+, 84*, "/z",, 2-, v
10:30:14 <Jendas> v, ++**25*25*251< 5
10:30:14 <Jendas> >$ $552**7+2*,v |:-1< 3 ,,"/",:**33+6<
10:30:16 <Jendas> ^ ># #< ^
10:30:16 <Jendas> v,+*35,"dd"<
10:30:17 <Jendas> > "om.",,,"s"1-, 54*3+5*,"a"4+, 55+, ^
10:30:21 <elliott> Jendas: Pastebin, not Ctrl+V.
10:30:47 <Jendas> y, sorry
10:30:51 <elliott> ^source
10:30:51 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
10:31:15 <elliott> Jendas: Well, the first part is definitely valid brainfuck code.
10:31:18 <Jendas> http://pastebin.com/DyQW1VwC
10:31:39 <elliott> Oh, the whole thing is.
10:33:22 <Jendas> y, i fought that, it seemed to me like that, but the second part?
10:33:56 <elliott> Well, brainfuck ignores all invalid instructions. So it could just be a brainfuck program designed to look like something else.
10:34:01 <elliott> Have you tried running it?
10:34:14 <Jendas> not yeat
10:34:16 <Jendas> t
10:34:27 <Jendas> yet* sorry, it´s dark in here :-D
10:34:36 <elliott> Running it is a good way to find out if it's a brainfuck program :P
10:35:10 <Jendas> i´ve tried to run it as fish... and something else. ok, i´ll try
10:35:32 <elliott> fish?
10:35:41 <Phantom_Hoover> Looks like it's a Brainfuck/Befunge polyglot.
10:36:30 <Phantom_Hoover> With the Befunge contained in a [-][<code>] to shield it from execution as BF.
10:36:49 <Jendas> yes, befunge, this was the second one
10:37:20 <Phantom_Hoover> What does + do on an empty stack?
10:37:25 * elliott isn't sure what you're asking, if you know what the languages are already.
10:38:06 <Jendas> well i´m asking coz i didn´t work :-(
10:38:24 <elliott> What didn't?
10:39:34 <Jendas> running it as fish or befunge. I didn´t run it as brainfuck, coz it looked like that, but had a lot of extra expressions in it...
10:40:22 <Sgeo> Extra expressions don't stop it from being BF
10:40:24 -!- hagb4rd has joined.
10:40:24 <Phantom_Hoover> It definitely looks like valid Befunge; try using a different interpreter.
10:40:35 <Phantom_Hoover> Sgeo, yes, this was established about a page ago.
10:41:31 <Jendas> I know it now... you know, it´s confusing for me, it´s my first time in esolang
10:42:24 <Jendas> And phantom, would you please recommend me one?
10:42:56 <Phantom_Hoover> elliott will yell at me if I say anything other than 'Shiro', so Shiro.
10:43:03 <elliott> Shiro doesn't even do Befunge-93.
10:43:15 <elliott> Jendas: http://catseye.tc/gallery/esolangs/yoob/
10:43:19 <Phantom_Hoover> Do we know it's 93?
10:43:27 <elliott> is the one the creator of the language wrote.
10:45:34 <Jendas> elliott - thanks a lot :-)
10:46:51 -!- elliott_ has joined.
10:46:59 -!- elliott has quit (Read error: Connection reset by peer).
10:47:22 <Deewiant> Phantom_Hoover: Popping an empty stack gives 0, so + on an empty stack pushes 0
10:49:14 <Deewiant> It seems that that polyglot is intended a puzzle of some kind
10:49:37 <Jendas> oh, it worked! Thank you so much :-)))
10:50:18 <Deewiant> $ bf arst.b98
10:50:19 <Deewiant> 1st part is http://wqa.wz.c
10:50:21 <Deewiant> $ ccbi arst.b98
10:50:22 <Deewiant> 2nd part is z/gc/coords.morse
10:52:21 -!- BeholdMyGlory has quit (Ping timeout: 244 seconds).
10:53:40 -!- BeholdMyGlory has joined.
10:56:52 <Jendas> thank you guys! :-))
11:00:26 -!- CakeProphet has joined.
11:00:26 -!- CakeProphet has quit (Changing host).
11:00:26 -!- CakeProphet has joined.
11:00:43 <CakeProphet> 01:54 < Sgeo> Capital, as in currency? Lindens, or Linden
11:00:45 <CakeProphet> I lol'd
11:01:03 -!- derrik has quit (Quit: back to 3D).
11:07:24 <Phantom_Hoover> https://mediastream.cern.ch/MediaArchive/Photo/Public/2008/0804060/0804060_04/0804060_04-A4-at-144-dpi.jpg
11:07:36 <Phantom_Hoover> This is the LHC's entire hydrogen supply.
11:07:47 <elliott_> X-D
11:07:54 <elliott_> That's amazing.
11:08:26 <Phantom_Hoover> Oh, I just noticed the "A proton source" sign.
11:08:51 <elliott_> Phantom_Hoover: Nononono it's like "Proton Source A".
11:08:54 <elliott_> here is no Proton Source B.
11:08:59 <elliott_> s/^/T/
11:09:03 <Phantom_Hoover> (Also there might be some more bottles, but eh.)
11:21:08 -!- Zuu has joined.
11:37:39 -!- Vorpal has joined.
11:47:01 -!- sebbu2 has quit (Read error: Connection reset by peer).
11:47:23 -!- sebbu2 has joined.
11:47:23 -!- sebbu2 has quit (Changing host).
11:47:23 -!- sebbu2 has joined.
11:52:21 -!- derdon has joined.
11:53:10 -!- Phantom__Hoover has joined.
11:54:41 -!- sebbu2 has changed nick to sebbu.
11:54:53 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
11:58:53 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
12:00:28 -!- quintopia has quit (Ping timeout: 248 seconds).
12:01:11 -!- Phantom__Hoover has joined.
12:01:28 -!- quintopia has joined.
12:01:28 -!- quintopia has quit (Changing host).
12:01:28 -!- quintopia has joined.
12:05:45 -!- Phantom__Hoover has changed nick to Phantom_Hoover.
12:08:10 -!- Jendas has left.
12:36:40 <elliott_> fizzie: http://www.qwantz.com/everywordindinosaurcomicsOHGOD.xml
12:36:44 <elliott_> fizzie: Need I say more?
12:36:53 <elliott_> fizzie: I'll write the script.
12:36:58 <elliott_> Phantom_Hoover: PREPARE YOURSELF.
12:37:09 <elliott_> Also, don't open that in Chrome.
12:37:10 <elliott_> Or Firefox.
12:37:12 <elliott_> Or anything.
12:38:53 <elliott_> Gleh, it: only has the first four years (i.e. less than half the comic).
12:38:55 <elliott_> Phantom_Hoover: Sadden with me.
12:40:19 <elliott_> Oh, I can just scrape the OhNoRobot archives.
12:56:25 <Phantom_Hoover> Heello.
13:01:18 <elliott_> names = ['T-Rex', 'T:Rex', 'T-Blech', 'Utahraptor', 'Dromiceiomimus',
13:01:18 <elliott_> 'Dromeciomimus', 'Dromeceiomimus', 'Narrator', 'Ye Olde Narratore',
13:01:18 <elliott_> 'The House', 'House', 'Woman', 'Man', 'Human', 'Off-screen',
13:01:18 <elliott_> 'Off-Camera Person', 'Monocle guy', 'Tyrones', 'God']
13:01:26 <elliott_> Phantom_Hoover: THESE TRANSCRIPTS ARE OF SUCH HIGH QUALITY
13:01:43 <Phantom_Hoover> Yes.
13:01:53 <elliott_> Phantom_Hoover: OK I give up, Dinosaur Comics literally has too many characters to list.
13:02:04 <elliott_> Mammuthus Primigenius: Of course not!
13:02:04 <elliott_> Mammuthus Primigenius: It's clearly implied that it takes place in an alternate universe where dinosaurs can talk!
13:02:04 <elliott_> Ground Sloth: So just assume it takes place in a world where Batman, make-outs, and talking dinosaurs co-exist.
13:02:04 <elliott_> Mammuthus Primigenius: I...
13:02:04 <elliott_> Mammuthus Primigenius: I call it "Earth-Perfect."
13:02:06 <elliott_> Lady: Ha ha no thank yooou!
13:02:08 <elliott_> I CAN'T ADD ALL THESE
13:09:23 <elliott_> [elliott@dinky qwantz-scraper]$ wc -l qwantz
13:09:23 <elliott_> 25225 qwantz
13:09:24 <elliott_> Yessssss.
13:14:25 -!- Ngevd has joined.
13:14:30 -!- Ngevd has changed nick to Taneb|Hovercraft.
13:14:52 <Taneb|Hovercraft> Hello
13:17:09 <elliott_> Hi Taneb|Hovercraft.
13:17:19 <elliott_> I'm afraid the IWC style is about to be usurped by the BEST STYLE YET.
13:17:28 <Taneb|Hovercraft> Namely?
13:17:42 <elliott_> DINOSAUR COMICS
13:17:50 <Taneb|Hovercraft> !!!
13:18:31 <elliott_> BEHOLD A SNAPSHOT OF THE FUTURE
13:18:37 <elliott_> <fungot> frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig frig
13:18:37 <fungot> elliott_: so noted. i'll drop it.
13:19:04 <Taneb|Hovercraft> fungot, you can't fight fate
13:19:05 <fungot> Taneb|Hovercraft: program design is still a decent amount of unity and consensus on the format...
13:19:24 <Taneb|Hovercraft> elliott_, fungot is scaring me
13:19:25 <fungot> Taneb|Hovercraft: differences in syntax. for the rest of which seems to be the fashion, you published said brain-log on the world
13:19:38 <elliott_> Taneb|Hovercraft: It does that a lot.
13:20:40 <Taneb|Hovercraft> It's almost able to pass a Turing test
13:22:08 <Taneb|Hovercraft> fungot, are you a bot?
13:22:09 <fungot> Taneb|Hovercraft: http://www.codu.org/ fnord stuff if you'd like to see the quote, but people keep telling that to it.
13:22:26 <elliott_> ...
13:22:28 <elliott_> ^style
13:22:28 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
13:23:46 <elliott_> oh no
13:29:11 <Taneb|Hovercraft> I think the problem with all my esolangs so far has been their minimaliness
13:29:48 <Taneb|Hovercraft> None of them are anywhere near the scale of Befunge or ORK
13:30:48 <Taneb|Hovercraft> Except for Uniquode, but that's nowhere near completion
13:32:46 <Taneb|Hovercraft> I think Uniquode will be completed around the time when Microsoft PowerPoint has been ported to @
13:32:59 <elliott_> Taneb|Hovercraft: That will be the day I destroy @.
13:33:20 <elliott_> Taneb|Hovercraft: Anyway trust me you don't want to aim for more bloated designs.
13:34:09 <Taneb|Hovercraft> My esolang with the most commands I think is Brook
13:34:18 <Taneb|Hovercraft> And that has what? 10?
13:34:21 * elliott_ finally takes a look at Brook.
13:34:38 <Taneb|Hovercraft> NOOOO
13:35:16 <Taneb|Hovercraft> The article is awfully written
13:35:36 <elliott_> It is.
13:35:41 <elliott_> I take it c is the append-to-program instruction?
13:35:50 <Taneb|Hovercraft> I think so
13:35:53 <elliott_> (diff) (hist) . . N UglyBF‎; 13:33 . . (+695) . . 92.148.109.67 (Talk) (creation)
13:35:54 <elliott_> No dieeeeeee.
13:36:03 <elliott_> Phantom_Hoover: BRICK
13:36:10 <elliott_> I assure you all it is completely justified in this case.
13:36:32 -!- lambdabot has quit (*.net *.split).
13:36:36 -!- ineiros_ has quit (*.net *.split).
13:36:47 -!- ineiros has joined.
13:39:17 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
13:40:47 <Vorpal> <elliott_> Taneb|Hovercraft: Anyway trust me you don't want to aim for more bloated designs. <-- stop being a minimalist all the time
13:40:54 <Vorpal> befunge98 is fun
13:41:22 <Phantom_Hoover> Vorpal, you're an idiot.
13:41:41 <Vorpal> Phantom_Hoover, why do you think so in this case?
13:41:55 <elliott_> Vorpal: Between Uniquode and Brook, I'll take Brook. The vast majority of complicated esolangs are crap.
13:42:35 <Vorpal> elliott_, hm
13:42:36 <elliott_> I don't know of one that is truly interesting; fun, maybe, but even then the esolangs with mounds of orthogonal rubbish piled together rather than being based on a simple interesting concept is the far more common sort of large esolang.
13:42:36 <Taneb|Hovercraft> Vorpal, because befunge98 is actually a brainfuck derivative
13:43:13 <Taneb|Hovercraft> Brook is based on /two/ interesting concepts!
13:43:24 <Taneb|Hovercraft> It's queue-based and something else
13:43:28 <Taneb|Hovercraft> Brook-like
13:46:12 -!- Taneb|Hovercraft has quit (Quit: Goodbye).
13:54:44 -!- Taneb|Hovercraft has joined.
14:01:14 -!- Taneb|Hovercraft has quit (Quit: Goodbye).
14:01:37 <quintopia> the snakes got him!
14:05:41 -!- Taneb|Hovercraft has joined.
14:10:15 <Phantom_Hoover> Snakes on a Hovercraft.
14:10:24 * quintopia feeds the snakes that have taken over taneb's hovercraft
14:10:35 <quintopia> (they took over his irc too!)
14:12:05 <Taneb|Hovercraft> I'm hovercraft for a reason
14:12:16 <Taneb|Hovercraft> Means I could go at any second
14:13:03 <quintopia> dont listen to the treacherous snakes! they have acquired human language!
14:13:56 <Phantom_Hoover> oh noooooo
14:17:32 <elliott_> -- XXX This isn't a great hash function
14:17:32 <elliott_> hashInteger :: Integer -> Int#
14:17:32 <elliott_> hashInteger (!_) = 42#
14:17:49 <Deewiant> Not great, no
14:17:56 <elliott_> Not my code :-)
14:17:59 <elliott_> That's actually GHC code
14:18:10 <elliott_> Well, integer-simple, so I guess not that many people actually USE it
14:18:15 <elliott_> Although I think all ARM users do
14:19:45 <Taneb|Hovercraft> What does "(!_)" mean?
14:19:55 <elliott_> It's like hashInteger _ = ...
14:19:56 <elliott_> But strict.
14:20:09 <Taneb|Hovercraft> And "Int#"?
14:20:18 <Deewiant> It's like hashInteger !_ = ... but with extra brackets
14:20:24 <elliott_> Taneb|Hovercraft: Unboxed integer
14:20:33 <elliott_> Low-level stuff
14:21:04 <Taneb|Hovercraft> Low-level as in I should know this, or low-level as in this is how the computer thinks?
14:21:32 <elliott_> Latter
14:21:38 <elliott_> You won't have to deal with unboxed integers
14:21:45 <Taneb|Hovercraft> Oh good
14:21:46 <elliott_> Unless you do the kind of crazy crap I do :P
14:22:12 <Taneb|Hovercraft> I made a broken also awful brainfuck interpreter in Haskell this morning
14:22:19 <Taneb|Hovercraft> It is broken and also awful
14:22:32 <Taneb|Hovercraft> I'm not even sure if it should work
14:31:04 <Taneb|Hovercraft> I think I've got it working
14:31:11 <Taneb|Hovercraft> What's a suitable test program?
14:32:08 <MonkeyofDoom> write a haskell compiler in brainfuck and see if it produces the same binary
14:40:55 <Taneb|Hovercraft> Got a curious error
14:41:10 <Taneb|Hovercraft> The cat program given on the wiki (-1 on EOF)
14:41:18 <Taneb|Hovercraft> I ran it with input "Hello!"
14:41:22 <Taneb|Hovercraft> Got "llo!" back
14:41:27 <Phantom_Hoover> Taneb|Hovercraft, a self-interpreter running HW.
14:41:41 <Phantom_Hoover> No, wait, a self-interpreter running 99 bottles.
14:46:12 -!- ais523 has joined.
14:46:56 <elliott_> hi ais523
14:47:19 <ais523> hi
14:47:42 <Phantom_Hoover> hais523.
14:47:51 <elliott_> Phantom_Hoover: oh no, the uglybf person replied to you
14:47:54 <elliott_> I'm scared to look
14:48:02 <elliott_> not out of sympathy though, that kind of thing is unforgivable
14:48:17 <elliott_> ais523: don't look at the wiki, there is a chance your soul may survive
14:48:23 <ais523> elliott_: /that/ bad?
14:48:26 <Phantom_Hoover> elliott_, have you looked yet.
14:48:38 <elliott_> ais523: at least, don't look at the article titled "UglyBF"
14:48:47 <elliott_> btw, I suggest we don't clean up or categorise it at all
14:48:50 <elliott_> it doesn't deserve it
14:48:52 <ais523> elliott_: I've noted its existence, it doesn't look like spam
14:48:54 <ais523> I haven't read it
14:48:58 <elliott_> Phantom_Hoover: OK I looked and that's so funny.
14:49:02 <ais523> but apparently Phantom_Hoover is making death threads on the talk page
14:49:07 <elliott_> death threads
14:49:09 <elliott_> threads of death
14:49:20 <elliott_> I don't think it's ever been proven that the brickbraining procedure is fatal.
14:52:02 <Taneb|Hovercraft> Hoover's conjecture: the brickbraining is not fatal
14:53:34 <Madoka-Kaname> What is uglybf?
14:53:47 <elliott_> That is the fatal question.
14:54:11 <elliott_> ais523: Is there a way to delete pages as a bot?
14:54:16 <elliott_> It's kind of annoying seeing the masses of spam deletions in recentchanges.
14:54:38 <ais523> elliott_: not without higher perms than I have
14:54:41 <Madoka-Kaname> *sigh*
14:58:28 <Taneb|Hovercraft> Madoka-Kaname, it's a crap-looking BF derivative
14:58:39 <Taneb|Hovercraft> On another note, who wants to see my awful code?
14:58:41 <Taneb|Hovercraft> http://pastebin.com/0CCW2UeC
14:59:06 <Taneb|Hovercraft> Oh damn, just spotted something very bad
14:59:51 <elliott_> Taneb|Hovercraft: Please, hpaste.org or sprunge instead of pastebin.
14:59:54 * elliott_ really dislikes pastebin.
15:00:25 <elliott_> Taneb|Hovercraft: Hey, did you just reinvent zippers?
15:00:30 <elliott_> Or did you already read abotu them.
15:00:41 <elliott_> Anyway, rule of thumb: don't use an n-tuple if n>2.
15:00:41 <Taneb|Hovercraft> I probably re-invented them
15:00:43 <elliott_> You want a data type.
15:00:57 <elliott_> Taneb|Hovercraft: Well, they're the last chapter of LYAH.
15:01:09 * elliott_ wasn't smart enough to reinvent zippers.
15:01:24 <Taneb|Hovercraft> ...What's a zipper?
15:02:20 <ais523> the simplest example is using a "left of current position stack" and "right of current position stack" rather than a single tape
15:02:28 <ais523> it generalises to more complicated structures
15:02:45 <ais523> the idea's that data near some sort of "current position" is fast to access, and the current position is also fast to move short distances
15:02:56 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
15:02:57 <Taneb|Hovercraft> Oh, that
15:03:19 <elliott_> Taneb|Hovercraft: e.g. your (xs,ys,...).
15:03:25 <elliott_> Your tape navigation structure.
15:03:32 <Taneb|Hovercraft> That seemed obvious
15:03:51 <elliott_> Taneb|Hovercraft: Well... congratulations, you're really good at this, then.
15:03:54 <ais523> Taneb|Hovercraft: it is moderately obvious, but that doesn't mean it doesn't have a name
15:04:02 <elliott_> They only date back to 1997.
15:05:58 <ais523> elliott_: are you sure? I suspect they were being used before that, just without being named
15:06:12 <ais523> I mean, I independently invented the structure, and I'm sure thousands of other programmers have too
15:06:32 <elliott_> ais523: I don't know of prior art before Huet's paper. Probably list zippers existed before then but I'd be quite surprised if tree zippers had been used.
15:08:59 <elliott_> Not that I'd rule it out completely.
15:09:05 <elliott_> But of course the tree formulation is much less obvious.
15:26:04 -!- Phantom_Hoover has joined.
15:28:35 <elliott_> if err == Nothing
15:28:35 <elliott_> then Right <$> peek event
15:28:35 <elliott_> else return $ Left . fromJust $ err
15:28:35 <elliott_> NO!!!! BAD LIBRARY! BAD!
15:32:30 <ais523> elliott_: that looks rather special-cased to me
15:32:39 <elliott_> ais523: ?
15:33:09 <ais523> elliott_: the bit of code you pasted
15:33:21 <elliott_> "Special-cased"?
15:33:22 <ais523> but I can't tell without context
15:33:35 <ais523> elliott_: it seems to care about err being a Maybe specifically, and I'm not sure if it should
15:33:43 <elliott_> That... isn't what I'm complaining about.
15:33:48 <ais523> ah, OK
15:33:52 <ais523> what are you complaining about?
15:34:10 <elliott_> ais523: the use of a comparison and a partial function to replace a perfectly safe and more readable case statement?
15:34:21 <ais523> right, I noticed that too
15:34:33 <ais523> but was wondering if you could write it without either
15:35:03 <elliott_> the right thing is obviously a case statement there
15:35:25 <elliott_> however you frame it, you have a base value a, and a destruction step (b -> a)
15:35:31 <elliott_> that's precisely the definition of Maybe
15:35:45 <elliott_> generalising beyond that is pointless, it just hides the fact that types have semantics
15:36:29 <elliott_> combineOr :: [a] -> a
15:36:30 <elliott_> combineOr x = unsafeCoerce $ foldl (\x y -> x .|. unsafeCoerce y) (0 :: CLuint) x
15:36:32 <elliott_> ummmmm...
15:36:41 <ais523> ah right, I just noticed that the Maybe there is backwards
15:36:42 <elliott_> I don't know what that is but I'm removing it
15:36:48 <ais523> it's Nothing = success, non-Nothing = error, rather than vice versa
15:36:56 <elliott_> that's not backwards :)
15:36:59 <elliott_> that's just another use of Maybe
15:37:02 <ais523> well, OK
15:37:11 <elliott_> anyway, it doesn't matter, combineOr is a trillion times more horrifying
15:37:19 <ais523> I'm the sort of person who'd like to give it another name because the semantic is different
15:37:25 <ais523> and wow at that combineOr
15:37:31 <elliott_> the semantics are the same
15:37:39 <ais523> what does it actually /do/? I can't figure it out from the definition
15:37:40 <elliott_> maybe :: b -> (a -> b) -> Maybe a -> b
15:37:51 <elliott_> any other "semantics" you claim Maybe has is projection :P
15:37:58 <elliott_> ais523: it doesn't do much of sense
15:38:14 <elliott_> ais523: but if a is runtime compatible with CLuint then it's just a fold of (.|.) and 0
15:38:27 <elliott_> and if it's not, umm... the program segfaults, or just goes wrong in general
15:38:29 <ais523> (.|.) is bitwise or?
15:38:31 <elliott_> yes
15:38:51 <elliott_> I wonder if people consider it impolite to fix all their awful design and send it in as one gigantic pull request
15:39:05 <elliott_> (ok, this is a fork, so the awful design may be the forkee's fault)
15:39:19 <ais523> hmm… I suspect that unsafe-coercing something to an unsigned int is just reinterpreting its bit pattern as an int
15:39:33 <ais523> so it's basically just oring together the bit patterns of all its arguments
15:40:16 <elliott_> ais523: I don't like you any more, if you're going to claim a program has semantics based on an implementation accident like that :P
15:40:21 <elliott_> but anyway, no
15:40:21 <elliott_> boxing
15:40:47 <elliott_> it's oring together the first machine word in the representation of whatever you give it and euurgh\
15:40:48 <ais523> Haskell boxes integers?
15:40:55 <elliott_> ais523: haskell is a lazy language
15:40:58 <elliott_> how do you do laziness without boxing?
15:41:25 <elliott_> a thunk is a box containing a pointer to some code that overwrites the thunk with the evaluated value
15:41:27 <ais523> it's possible for the laziness to be entirely separate from the representation, I guess
15:41:34 <elliott_> eh?
15:41:51 <ais523> as in, all data are either pointer-to-thunk or pointer-to-value
15:41:55 <ais523> and the actual value itself would be a plain int
15:42:00 <ais523> so there's still boxing, but not at the type level
15:43:03 <elliott_> ais523: the type level? wtf?
15:43:11 <elliott_> I never said ints have their own special boxing mechanism
15:43:14 <ais523> well, OK
15:43:24 <ais523> but I'm thinking of the bit-pattern as the value
15:43:31 <elliott_> which bit-pattern
15:43:32 <elliott_> of the pointer?
15:43:33 <ais523> or can you unsafeCoerce something without evaluating it first?
15:43:40 <ais523> elliott_: of the thing it points to
15:43:43 <elliott_> of the value at the pointer? which, everything is multiple bytes, there's a header and everything
15:43:47 <elliott_> ais523: unsafeCoerce is a nop at runtime
15:43:49 <ais523> the pointer itself has nothing to do with the type system
15:43:54 <elliott_> so of course you can unsafeCoerce something not yet evaluated
15:43:59 <ais523> elliott_: ouch!
15:44:06 <ais523> wait, no, that's fine
15:44:15 <elliott_> ais523: "ouch!"? it already breaks the type system, who gives a fuck about further inconveniences?
15:44:17 <ais523> in that case, evaluating an unsafeCoerce evaluates its argument, because it is its argument
15:44:38 <elliott_> ais523: not necessarily, I don't think
15:44:43 <elliott_> because it's a nop that subverts the type system
15:44:50 <elliott_> which could easily break the forcing mechanism
15:44:55 <elliott_> but I don't think it breaks GHC's
15:45:05 <ais523> I'd assume the forcing mechanism to have nothing to do with types
15:45:16 <ais523> unless you unsafe-coerce something into an Int# or whatever, but that would be even more insane than usual
15:45:31 <elliott_> That sounds like a dangerous assumption, considering what has to be evaluated depends on the type.
15:45:33 <elliott_> e.g.
15:45:37 <elliott_> data Foo = Foo !Int String !Char
15:45:45 <elliott_> to force (Foo a b c), you have to force a and c, but not b
15:46:06 <elliott_> GHC just does that by rewriting constructor calls with strict fields to a wrapper function, but it's an obvious example
15:46:41 <ais523> I'm including strict fields as much the same sort of thing as strict types (i.e. unboxed types)
15:46:53 <elliott_> um, no
15:47:28 <ais523> they both interfere with the usual evaluation order
15:47:44 <elliott_> "interfere"?
15:47:49 <ais523> well, change it
15:47:50 <elliott_> strict fields have perfectly well-defined, simple semantics
15:48:01 <ais523> yes, but they're different semantics from "normal" types
15:48:02 <elliott_> unboxed types are very different
15:48:06 <elliott_> ais523: nope
15:48:09 <elliott_> they just save some seqs
15:48:13 <elliott_> it's all in the constructors, simple as that
15:55:32 <Taneb|Hovercraft> I'm making a stupid mistake over and over again
15:58:56 <elliott_> Taneb|Hovercraft discovers "life".
15:59:17 <elliott_> err <- wrapError $ raw_clEnqueueNDRangeKernel queue kernel (fromIntegral work_dim) nullPtr global_work_size local_work_size (fromIntegral num_events_in_wait_list) event_wait_list event
15:59:20 <elliott_> ais523: save me from suffering
15:59:46 <ais523> elliott_: that looks like Haskell as a wrapper around some imperative language
15:59:51 <Taneb|Hovercraft> http://hpaste.org/54317
16:00:08 <elliott_> Taneb|Hovercraft: OK, firstly that BFState definition is wrong.
16:00:11 <elliott_> You missed a constructor name.
16:00:22 <Taneb|Hovercraft> That will probably be the main problem
16:00:23 <elliott_> Taneb|Hovercraft: Secondly you really want to separate the [Int] [Int] tape into its own Tape data type.
16:00:34 <elliott_> And you probably want Word8, not Int (import Data.Word to get it); that's what most BF implementations use.
16:00:48 <elliott_> Taneb|Hovercraft: Also, you need parentheses around your applications of (:).
16:00:49 <elliott_> Right now itl ooks like
16:00:53 <elliott_> (BFState xs 1) : [] a b
16:00:55 <elliott_> which doesn't make much sense.
16:01:01 <elliott_> Also, a:[] is the same as [a], so write that instead.
16:01:08 <elliott_> (And [(-1)] the same as [-1].)
16:01:29 <elliott_> Taneb|Hovercraft: Also, I suggest you initialise the right hand side of the tape (ys) with (repeat 0).
16:01:37 <elliott_> Taneb|Hovercraft: Then you never have to handle the [] case, because there'll always be a value.
16:01:55 <elliott_> Having said all that, your code is really pretty damn good :P
16:01:58 <ais523> elliott_: ouch, infinite list should probably have a different type from finite list
16:02:04 <elliott_> ais523: >_<
16:02:07 <ais523> because the type constructors are different
16:02:07 -!- hagb4rd has joined.
16:02:12 <ais523> (there's a Cons, but no Nil)
16:02:18 <elliott_> ais523: That's not what a type constructor is.
16:02:38 * elliott_ will battle inanity with pedanticry.
16:02:41 <ais523> are you sure? those seem pretty typeconstructory to me
16:03:03 <elliott_> You might want to look up the definition of "type constructor".
16:03:48 <ais523> elliott_: I renamed them
16:03:55 <elliott_> What?
16:03:57 -!- Phantom__Hoover has joined.
16:04:00 <ais523> but I'd define a type list as list = Cons list list | Nil
16:04:19 <elliott_> You would?
16:04:21 <elliott_> 'Cuz, that's not a list.
16:04:25 <ais523> err, sorry
16:04:33 <ais523> 'a list = Cons 'a list | Nil
16:04:38 <ais523> thinko
16:04:44 -!- Taneb|Hovercraft has quit (Quit: Goodbye).
16:04:48 <ais523> * 'a list = Cons 'a ('a list) | Nil
16:06:01 <coppro> does the haskell vm implement cyclic lists by thunk or by actually creating a cyclic data structure?
16:06:20 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
16:06:50 <ais523> my guess is by thunk, to avoid special-casing
16:07:02 <ais523> as infinite lists in Haskell (unlike OCaml) don't have to be cyclic
16:07:09 <ais523> but it might optimise them into cyclic lists, I guess
16:07:28 <elliott_> coppro: Cyclic structures are only really something that makes sense in the presence of mutation.
16:07:33 <elliott_> There is, however, sharing.
16:07:36 <elliott_> That is, in
16:07:41 <elliott_> ones = 1 : ones
16:07:48 <elliott_> there is only one "ones", not one for each tail.
16:08:18 <ais523> elliott_: I think the discussion's about internal representation
16:08:26 <elliott_> ais523: My answer was about internal representation.
16:08:46 <ais523> elliott_: I'm thinking of something like an immutable cyclic linked list, as a reasonable way to internally represent an infinite repeating list
16:09:00 <elliott_> I am talking about internal representations.
16:09:41 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
16:09:51 <ais523> elliott_: cyclic structures make sense, as an internal representation, even in the absence of mutation
16:10:05 <ais523> in fact, they make more sense in the absence of mutation, as you don't have to worry about the compulsory sharing of every element
16:10:19 <ais523> (whereas without a cyclic list, it'd be possible for the elements to either share, or to not share0
16:10:22 <ais523> s/0/)/
16:10:37 <elliott_> In the absence of mutation, "cyclic structures" is either a weird name for sharing, or something that has limited to no applicability.
16:10:54 <ais523> elliott_: a cyclic structure is a structure which shares with an element of itself
16:11:01 <ais523> that's different from the normal form of sharing
16:11:08 -!- Slereah_ has quit (Ping timeout: 248 seconds).
16:11:19 <elliott_> That's a bad definition of either "cyclic structure" or "element", and no it isn't.
16:11:20 <ais523> where the thing being shared doesn't have a pointer back to itself
16:11:26 -!- Slereah_ has joined.
16:11:38 <elliott_> > let foo = 1 : 2 : 3 : foo in drop 10000 foo
16:11:53 <elliott_> The "foo" that is (1 : 2 : 3 : foo) is shared with the "foo" that is in the tail position of (3 : foo).
16:12:02 <elliott_> > let foo = 1 : 2 : 3 : foo in drop 1000 foo
16:12:11 <elliott_> Oh hurry up lam- oh, she's not here.
16:12:16 <ais523> elliott_: right; cyclic structure formation is a special case of sharing
16:12:34 <ais523> the more common form of sharing is along the lines of this:
16:12:47 <ais523> > let foo = (let x = 1 in [x,x])
16:13:13 <ais523> in that case, it's possible to break the sharing, e.g. to copy-on-write in a mutable language
16:13:30 <ais523> in the cyclic case, you can't fully break the sharing as the list would become infinitely long
16:13:35 <ais523> in memory
16:14:34 <elliott_> It's not possible to break the sharing without constructing a new list, and constructing a list can hardly change the semantics of an existing one.
16:15:00 <ais523> err, what? you can break sharing just by copying one of the things being shared, then moving the pointer to point to the copy
16:16:15 <elliott_> That only goes one level. { let ones = 1 : ones } requires infinity. I'm sure there are ones in-between.
16:16:36 <ais523> elliott_: well, my point is, normally with sharing, breaking one level of sharing is enough, or at least a finite number
16:16:46 <elliott_> No it's not:
16:16:48 <elliott_> ones = 1 : ones
16:16:50 <ais523> with a cyclic list, you can break sharing as many times as you want, but there'll still be sharing involved
16:17:06 <elliott_> That's sharing. It's not any less, or a different kind, or an unusual kind of sharing.
16:17:11 <ais523> elliott_: I'm arguing that ones = 1 : ones /is not the usual case of sharing, and it makes sense to have a different name for it/
16:17:23 <elliott_> Well, you're wrong.
16:17:45 -!- Ngevd has joined.
16:17:45 <elliott_> fix (\fac n -> if n == 0 then 1 else fac (n-1))
16:17:50 <elliott_> There's another case of sharing you can't break finitely!
16:17:52 <ais523> elliott_: I'm saying "A is different from B"; you're saying "no they aren't"; I'm saying "yes they are because I can do X with A and I can't with B"; and you're saying "saying you can do X with A is wrong because you can't do X with B and A is the same as B"
16:17:55 <elliott_> And you use it for every recursive definition!
16:18:03 <elliott_> So unusual.
16:18:15 <elliott_> ais523: I'm not saying that at all, but whatever.
16:18:17 <ais523> that isn't even a structure at all, in most languages
16:18:41 -!- Ngevd has changed nick to Taneb|Hovercraft.
16:18:56 <ais523> incidentally, in ICA there's no sharing involved at all there
16:19:14 <elliott_> Functions are structures.
16:20:01 <ais523> but they don't have accessible type constructors
16:20:18 <ais523> you can't say case function of If -> …
16:20:33 <ais523> and in general, forcing a function to have a particular concrete representation would be wrong anyway
16:20:51 <ais523> the fundamental difference of a function and a structure is that the structure can't be rearranged without changing its semantics
16:21:08 <ais523> hmm, that implies that there are probably things in-between, like self-balancing trees
16:21:14 <elliott_> This is ridiculous. Sharing is obviously an implementation detail.
16:21:42 <Taneb|Hovercraft> elliott_, I made the changes you suggested
16:21:46 <Taneb|Hovercraft> Except for word8
16:21:47 <elliott_> Taneb|Hovercraft: Yay.
16:21:48 <ais523> in a language with immutable data, I agree with that
16:21:51 <Taneb|Hovercraft> I don't like Word8
16:21:56 <Taneb|Hovercraft> http://hpaste.org/54321
16:21:57 <elliott_> Taneb|Hovercraft: Whaddya mean you don't like it?
16:22:02 <elliott_> That causes actual incompatibility with BF programs.
16:22:21 <ais523> sharing is definitely not an implementation detail when you're talking about something which is mutable, though (including retroactively)
16:22:22 <Taneb|Hovercraft> I don't know how to change it to a char!
16:22:29 <elliott_> Taneb|Hovercraft: You totally didn't do another one of my changes, too. :'(
16:22:36 <Taneb|Hovercraft> Which one?
16:22:54 -!- Phantom__Hoover has joined.
16:23:16 <elliott_> Taneb|Hovercraft: I'll annotate your paste with some small tweaks.
16:23:43 <elliott_> Taneb|Hovercraft: You have your left and right lists the wrong way around. :p
16:24:00 <Taneb|Hovercraft> THEY ARE THE PERFECT WAY ROUND
16:24:20 <elliott_> 'Fraid not!
16:24:29 <elliott_> Oh, hmm, what.
16:24:35 <elliott_> No, they're the right way around, your left and right functions are just wrong.
16:25:00 <Taneb|Hovercraft> THEY ARE PERFECTLY RIGHT
16:25:06 <ais523> if your tape's infinite both ways, it's impossible to observe < and > being switched in BF
16:25:25 <Taneb|Hovercraft> Unless they are switched half-way through execution
16:25:26 <elliott_> Taneb|Hovercraft: They're not; you access with ys=right but move with xs=right.
16:25:57 <Taneb|Hovercraft> How do I access?
16:26:22 -!- pikhq_ has quit (Read error: Operation timed out).
16:26:46 <Taneb|Hovercraft> Just spotted a stupid error
16:26:52 <Taneb|Hovercraft> Line 32
16:27:45 <elliott_> Taneb|Hovercraft: Also, you don't actually process input.
16:28:10 -!- pikhq has joined.
16:28:14 <Gregor> HEYOOO
16:28:17 <Gregor> Got the rest of the comparisons in.
16:29:04 <Taneb|Hovercraft> Woah, so I don't
16:29:52 <elliott_> Taneb|Hovercraft: Here's an improvement: http://hpaste.org/54323
16:30:13 <elliott_> Taneb|Hovercraft: I switched to Word8, added a separate Tape type, implified input handling by terminating input with (repeat 0), and make it actually handle input :-)
16:30:17 <elliott_> Plus a few minor cleanups.
16:31:16 <elliott_> getLoop can be made nicer, I think getBF too, and loop should really have the arguments the other way around, but this is still pretty close to what I'd write *shrugs*
16:32:31 <Taneb|Hovercraft> Your introduction of the Tape type...
16:33:12 <Taneb|Hovercraft> Well, you haven't adjusted the rest of the program to cope
16:33:26 <elliott_> Oops.
16:33:29 <ais523> elliott_: hmm, the pointer always being off by one is also not a detectable error
16:33:32 <elliott_> Taneb|Hovercraft: Fixing :P
16:34:56 <elliott_> Taneb|Hovercraft: http://hpaste.org/54325
16:35:03 <elliott_> I'll fiddle with this a little more and then I'll be done.
16:35:11 <elliott_> Oops.
16:35:15 <elliott_> Still got loop and the main pattern-match wrong.
16:35:19 <elliott_> But it's obvious what it should be. :p
16:38:34 <elliott_> Taneb|Hovercraft: BTW: Never use tab characters in Haskell source.
16:39:04 <Taneb|Hovercraft> Note taken
16:39:04 <elliott_> Taneb|Hovercraft: I'm bored twiddling, so here's a final version: http://hpaste.org/54326
16:40:25 <Taneb|Hovercraft> I've seen a pretty big problem
16:40:37 <Taneb|Hovercraft> Short version: the program doesn't work
16:41:52 <Taneb|Hovercraft> Long version: you've rewritten left, right, and plus to use Tape, but only half-done minus, and not changed getBF to accomodate
16:42:16 <elliott_> Oop, right, that's easy to fix
16:42:22 <elliott_> That's not a pretty big problem, one definition can fix that
16:43:07 <elliott_> Taneb|Hovercraft: http://hpaste.org/54327
16:43:11 <elliott_> The power of higher-order functions!
16:43:22 <elliott_> Er, that withTape should be below minus.
16:48:08 <Taneb|Hovercraft> Firstly, you need to retype the minus
16:48:30 <Taneb|Hovercraft> It's /still/ BFState -> BFState
16:52:10 <elliott_> Yeah yeah whoops :P
16:54:10 <Gregor> elliott_: My attempt to use your void(*)(void) trick fails nearly everywhere for various reasons :P
16:54:25 <Gregor> elliott_: Works on x86 though!
16:54:30 <elliott_> Gregor: Nice!
16:54:52 <Gregor> elliott_: I'm thinkin' I'll just live with a stupid function call in there.
16:57:46 <elliott_> Taneb|Hovercraft: Secondly???
16:58:49 <Taneb|Hovercraft> I'm working secondly
17:01:33 <Taneb|Hovercraft> Secondly, it doesn't seem to work
17:01:48 <Gregor> $ echo '1 p' | qemu-sparc32plus ./jitchards
17:01:48 <Gregor> 00
17:01:48 <Gregor> Segmentation fault
17:01:53 <elliott_> Taneb|Hovercraft: That's because either I or you made a mistake.
17:01:54 <Gregor> This is the closest SPARC has ever been to working.
17:03:43 -!- elliott_ has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | http://codu.org/logs/_esoteric/.
17:03:45 <elliott_> PREPARE FOR PRESENTABILITY
17:04:06 -!- lambdabot has joined.
17:04:45 -!- ais523 has quit (Remote host closed the connection).
17:05:13 <Gregor> Presentability is for losers.
17:05:29 <elliott_> I had to mention this place in #haskell again :P
17:06:09 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | #esoteric: A place that hates Haskell slightly more than C++ | http://codu.org/logs/_esoteric/.
17:06:18 -!- elliott_ has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | http://codu.org/logs/_esoteric/.
17:06:24 <elliott_> Even a Gregor can learn these topic changing techniques.
17:06:30 <Gregor> X-D
17:06:49 -!- derdon has quit (Remote host closed the connection).
17:07:15 <Taneb|Hovercraft> So, is #haskell going to invade us or what?
17:07:20 <elliott_> Yes.
17:07:22 <elliott_> We will all die.
17:07:30 <elliott_> Taneb|Hovercraft: Gonna expand on "doesn't work"? :P
17:07:33 <Taneb|Hovercraft> Nah
17:07:39 <Taneb|Hovercraft> I know about as much as you
17:07:52 <elliott_> Taneb|Hovercraft: You know slightly more: the error GHC spits out
17:07:56 <Taneb|Hovercraft> !brainfuck ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
17:08:03 <Taneb|Hovercraft> elliott_, that's the thing
17:08:08 <Taneb|Hovercraft> GHC is fine with it
17:08:11 <elliott_> Oh.
17:08:15 <elliott_> Then the implementation is just buggy somehow.
17:08:20 <Taneb|Hovercraft> !bf ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
17:08:22 <EgoBot> Hello World!
17:08:35 <elliott_> Taneb|Hovercraft: So what exactly happens?
17:08:38 <elliott_> I am suspicious of your loop parsing, because it's ugly and slow enough that I just ignored it.
17:08:39 <Taneb|Hovercraft> That program in our interpreter outputs:
17:08:40 <Taneb|Hovercraft>
17:08:40 <Taneb|Hovercraft> <CTCP>
17:09:05 <elliott_> Fancy.
17:09:31 <elliott_> Hmm.
17:10:18 <elliott_> I don't see anything wrong with the bits I've looked at, i.e. everything but the loop parsing :-)
17:10:47 <Taneb|Hovercraft> I have very handily looked at those exact bits and found nothing wrong
17:11:01 <Taneb|Hovercraft> But I wrote the loop parsing in a maddened daze
17:11:09 <Taneb|Hovercraft> And don't want anything to do with it
17:11:20 <elliott_> Taneb|Hovercraft: Test it in the REPL.
17:11:27 <elliott_> getLoop "abc[def]quux]blah"
17:11:54 <Taneb|Hovercraft> Aha!
17:12:27 <Taneb|Hovercraft> It works fine
17:12:32 <Taneb|Hovercraft> So does everything else
17:12:33 <elliott_> What return?
17:12:34 <Taneb|Hovercraft> EXCEPT FOR
17:12:39 <elliott_> ("abc[def]quux","blah")?
17:12:42 <Taneb|Hovercraft> Yes
17:12:47 <elliott_> getBF ('[':xs) = getBF a . loop (getBF b)
17:12:47 <elliott_> where (a,b) = getLoop xs
17:12:54 <elliott_> s/getBF a . loop (getBF b)/getBF b . loop (getBF a)/
17:13:23 <Taneb|Hovercraft> I changed "where (a,b") to "where (b,a)"
17:13:35 <Taneb|Hovercraft> Works just the same
17:13:39 <Taneb|Hovercraft> And reflects how I think
17:13:40 <elliott_> But I specified that fix to stop you doing that because that's so ugly :'(
17:14:19 <Taneb|Hovercraft> Now it works much better
17:14:38 <Taneb|Hovercraft> The Hello world! program outputs !dlrow olleH
17:15:36 <elliott_> Oh, right.
17:15:47 <elliott_> s/putStr/putStr . reverse/
17:15:53 <Phantom__Hoover> oh my god
17:16:15 <Phantom__Hoover> I've just noticed that currently on TV is a BBC programme dealing with offended people's letters.
17:16:28 <Taneb|Hovercraft> !!!
17:16:40 <Taneb|Hovercraft> Oh yeah, I watched a bit of that once
17:17:15 <Taneb|Hovercraft> Also, elliott_, EOF isn't handled
17:17:27 <elliott_> Taneb|Hovercraft: Yes, it is.
17:17:35 <elliott_> Oh, wait.
17:17:40 <elliott_> No it isn't because I introduced a regression.
17:17:44 <elliott_> WATCH AS I FIX THAT REGRESSION
17:17:51 <Taneb|Hovercraft> I CAN'T
17:18:02 <Taneb|Hovercraft> I DON'T KNOW WHERE YOU LIVE BEYOND THE TOWN
17:18:17 <Taneb|Hovercraft> AND I DON'T THINK YOU ARE STREAMING IT
17:18:27 <Taneb|Hovercraft> SO INSTEAD I ANXIOUSLY AWAIT THE RESULT
17:18:36 <elliott_> http://hpaste.org/54331
17:18:44 <Phantom__Hoover> Taneb|Hovercraft, how can it be this hard to find the Hird family.
17:21:26 <Taneb|Hovercraft> Phantom__Hoover, if I find him then he will know who I am!!!
17:21:48 <Phantom__Hoover> He already knows that you fool!
17:21:52 <Taneb|Hovercraft> Oh, right
17:22:20 <Taneb|Hovercraft> If I find him, he will know I'm looking for him!
17:22:42 <elliott_> Little does Taneb|Hovercraft know, but I actually live in Hexham, Australia.
17:22:52 <Taneb|Hovercraft> elliott_, which Hexham, Australia
17:22:56 <elliott_> Both.
17:22:59 <Taneb|Hovercraft> !!!
17:31:17 -!- Ngevd has joined.
17:33:11 -!- Taneb|Hovercraft has quit (Ping timeout: 258 seconds).
17:49:25 -!- Darth_Cliche has joined.
17:50:33 -!- derdon has joined.
17:51:24 -!- Ngevd has changed nick to Taneb|Hovercraft.
17:58:41 -!- Ngevd has joined.
17:58:51 -!- derrik has joined.
18:00:29 -!- MonkeyofDoom has quit (Ping timeout: 240 seconds).
18:01:30 -!- Taneb|Hovercraft has quit (Ping timeout: 245 seconds).
18:01:45 -!- sebbu2 has joined.
18:01:45 -!- sebbu2 has quit (Changing host).
18:01:45 -!- sebbu2 has joined.
18:05:22 -!- sebbu has quit (Ping timeout: 252 seconds).
18:10:45 -!- Taneb has joined.
18:14:37 -!- Ngevd has quit (Ping timeout: 244 seconds).
18:15:39 -!- Taneb has quit (Ping timeout: 244 seconds).
18:17:41 <Gregor> $ wc -c jitdc.c
18:17:41 <Gregor> 2734 jitdc.c
18:17:42 <Gregor> Grr
18:23:05 <oklopol> stop that right now
18:24:04 <Gregor> oklopol: Stop your face!
18:24:08 <Phantom__Hoover> Gregor, what's the limit?
18:24:29 <Deewiant> Phantom__Hoover: 2048 non-whitespace and something about not counting {;} in some cases
18:24:44 <Gregor> {;} aren't counted if immediately followed by whitespace.
18:24:55 <Deewiant> Right, or EOF.
18:27:55 <Gregor> Dang it, by that count I'm still at 2196
18:28:15 <Gregor> Need to shave off 148 bytes >_>
18:30:19 <Phantom__Hoover> Put in 148 ASCII delete characters at the end.
18:30:25 <Gregor> Yesssssssssssssss
18:36:16 -!- Ngevd has joined.
18:41:16 -!- kmc has joined.
18:45:07 <oklopol> my face is unstoppable.
18:45:48 -!- Ngevd has quit (Quit: Goodbye).
18:47:13 <elliott_> shachaf: Have I scared you with combineOr yet?
18:47:39 <shachaf> I don't believe so.
18:47:44 <elliott_> combineOr :: [a] -> a
18:47:45 <elliott_> combineOr x = unsafeCoerce $ foldl (\x y -> x .|. unsafeCoerce y) (0 :: CLuint) x
18:47:51 <elliott_> Seen in actual, real, live code.
18:48:01 <Gregor> 2133 ...
18:48:17 <elliott_> Its single use site ended up being equivalent to: foldl (.|.) 0 [ foo | NewtypeCons foo <- xs ].
18:48:42 <Deewiant> What real, live code?
18:48:47 <Deewiant> + actual
18:49:05 -!- Ngevd has joined.
18:49:38 <elliott_> Deewiant: OpenCLWrappers, almost certainly inherited from OpenCLRaw
18:51:14 -!- sebbu2 has changed nick to sebbu.
18:53:40 <Ngevd> "ex his Iason quos arbitratus est ad omnia pericula subeunda paratissimos esse, eos ad numerum quinquaginta delegit et socios sibi adiunxit;"
18:56:34 -!- Zuu has quit (Ping timeout: 244 seconds).
19:03:41 <elliott_> peekManyInfo :: Storable a => ([a] -> b) -> ForeignPtr () -> CLsizei -> IO b
19:03:41 <elliott_> peekManyInfo f x size = do
19:03:41 <elliott_> c <- return undefined
19:03:41 <elliott_> a <- withForeignPtr x (\y -> (peekArray ( div (fromIntegral size) $ sizeOf c) $ castPtr y))
19:03:41 <elliott_> return (c:a)
19:03:42 <elliott_> return $ f a
19:03:46 <elliott_> Deewiant: Challenge: Figure out what type "c" has
19:05:10 <Deewiant> ?hoogle withForeignPtr
19:05:11 <lambdabot> Foreign.ForeignPtr withForeignPtr :: ForeignPtr a -> (Ptr a -> IO b) -> IO b
19:05:13 <Deewiant> ?hoogle peekArray
19:05:14 <lambdabot> Foreign.Marshal.Array peekArray :: Storable a => Int -> Ptr a -> IO [a]
19:05:14 <lambdabot> Foreign.Marshal.Array peekArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO [a]
19:05:26 <shachaf> elliott_: Aha.
19:05:39 <elliott_> shachaf: I hope it hurt.
19:05:41 <shachaf> elliott_: You know, that doesn't really scare me. I've come to expect that sort of thing from you.
19:05:45 <elliott_> shachaf: I DIDN'T WRITE THAT
19:05:47 * shachaf is desensitized.
19:05:48 <elliott_> SOMEONE ELSE WROTE THAT ENTIRELY
19:05:50 <elliott_> IT BOGGLES MY MIND
19:05:51 <shachaf> Oh.
19:06:00 <shachaf> What code?
19:06:15 <elliott_> OpenCLWrappers, but it almost certainly is inherited from its parent project OpenCLRaw which it's forked from.
19:06:16 <elliott_> I have excised it.
19:06:18 <Deewiant> elliott_: Storable a => a ?
19:06:29 <elliott_> Deewiant: Nah, it's the specific "a" in the type signature
19:06:34 <Deewiant> elliott_: That's what I meant
19:06:41 <elliott_> Deewiant: (That second-last "return" forces the type)
19:06:45 <shachaf> elliott_: Did you ever see those few instance snippets in Pugs?
19:06:48 <Deewiant> elliott_: It does, yep
19:06:48 <elliott_> (And you can determine the type of a by the application to f)
19:06:56 <elliott_> shachaf: I'm scared. Go on.
19:06:57 <Deewiant> Indeed
19:07:33 <shachaf> elliott_: https://github.com/perl6/Pugs.hs/blob/master/Pugs/src/Pugs/Types.hs
19:07:45 <shachaf> elliott_: It's the section that starts with "instance Ord".
19:08:05 <elliott_> shachaf: Very nice.
19:08:08 <elliott_> Very... safe.
19:08:15 <elliott_> Where's showAddressOf defined? Do I dare ask?
19:08:32 <shachaf> I'd be more worried about addressOf than showAddressOf if I were you.
19:08:52 <shachaf> https://github.com/perl6/Pugs.hs/blob/master/pugs-compat/src/Pugs/Compat/Cast.hs
19:09:01 <elliott_> clInvalidGlobalOffset = ErrorCode (-56)
19:09:01 <elliott_> clInvalidEventWaitList :: ErrorCode
19:09:01 <elliott_>
19:09:01 <elliott_> clInvalidEventWaitList = ErrorCode (-57)
19:09:01 <elliott_> clInvalidEvent :: ErrorCode
19:09:02 <elliott_>
19:09:04 <elliott_> clInvalidEvent = ErrorCode (-58)
19:09:06 <elliott_> clInvalidOperation :: ErrorCode
19:09:08 <elliott_>
19:09:10 <elliott_> clInvalidOperation = ErrorCode (-59)
19:09:12 <elliott_> clInvalidGLObject :: ErrorCode
19:09:14 <elliott_> Deewiant: shachaf: Look at this exciting new type signature layout style
19:09:16 <elliott_> Found in the same fucking project
19:09:49 * shachaf is glad to see that elliott_ is enjoying himself.
19:13:50 <elliott_> @tell oerjan speak of the devil: * hackagebot thrist 0.2.1 - Type-threaded list http://hackage.haskell.org/package/thrist-0.2.1 (GaborGreif)
19:13:51 <lambdabot> Consider it noted.
19:20:55 <elliott_> https://github.com/jkarlson/OpenCLWrappers/blob/master/LICENSE
19:20:58 <elliott_> Deewiant: Does this look like BSD3 to you?
19:21:02 -!- Rugxulo has joined.
19:21:23 <Rugxulo> who hosts the esolang wiki, Panu?
19:21:31 <elliott_> panu?
19:21:34 <elliott_> graue hosts the wiki, why?
19:21:42 <elliott_> (contacting him is likely to be fruitless, ask an admin instead)
19:21:51 <Rugxulo> I know it's lame, but I keep thinking there should be a Befunge-93 archive since a lot of stuff (e.g. Nthern's bigbef hacks) keep getting lost
19:22:05 <Deewiant> elliott_: Close enough
19:22:08 <elliott_> graue doesn't run the archive
19:22:12 <elliott_> afaik
19:22:16 <elliott_> oh hm wait
19:22:19 <elliott_> its on esolangs.org so i guess he does
19:22:30 <elliott_> Rugxulo: http://esolangs.org/files/befunge/src/
19:22:40 <elliott_> you could get someone with commit access to put stuff there.
19:22:45 <Rugxulo> four files is not exactly a lot
19:22:56 <Rugxulo> I've written ten times that alone :-P
19:22:57 <elliott_> <elliott_> you could get someone with commit access to put stuff there.
19:24:13 * Rugxulo is tired of visiting sites that have broken links
19:24:25 <Rugxulo> I guess they don't call it "esoteric" for nuthin' :-P
19:24:54 <Rugxulo> it's funny when my own local collection is 10x bigger than anything online :-P
19:25:18 * Rugxulo needs a scapegoat ... blames Gregor
19:34:37 <Gregor> Well it is true that I scour the internet for Befunge sources and eliminate them.
19:40:37 -!- Phantom__Hoover has changed nick to Phantom_Hoover.
19:44:12 <elliott_> :t lookup
19:44:13 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
19:45:18 <Sgeo> Oh, that's not Map.lookup
19:45:21 <Sgeo> :t Map.lookup
19:45:22 <lambdabot> Couldn't find qualified module.
19:45:26 <Sgeo> :t Data.Map.lookup
19:45:27 <lambdabot> forall k a. (Ord k) => k -> M.Map k a -> Maybe a
19:52:11 -!- monqy has joined.
19:56:37 -!- z^ck has quit (Quit: Lost terminal).
20:08:00 -!- Zuu has joined.
20:12:49 -!- MonkeyofDoom has joined.
20:17:10 <Rugxulo> I'm crap for coding, but anyone else here interested in upcoming id Tech 4?
20:21:04 <Rugxulo> C++ not esoteric enough?? ;-)
20:23:30 <Gregor> C++ is too godawful.
20:24:29 <Rugxulo> ;-)
20:24:53 <elliott_> Deewiant: Oh no
20:25:00 <elliott_> Deewiant: The maintainer of this fork added combineOr
20:25:07 <elliott_> I... think I need my own fork...
20:25:14 -!- sebbu2 has joined.
20:25:14 -!- sebbu2 has quit (Changing host).
20:25:14 -!- sebbu2 has joined.
20:27:17 -!- sebbu has quit (Ping timeout: 276 seconds).
20:33:19 <Gregor> elliott_: I think I'mma let my JIT rest for awhile, but in retrospect I think a MIDI player would be insufficiently obfuscated.
20:33:42 <elliott_> Gregor: Obfuscation doesn't actually matter that much in IOCCC most of the time :P
20:33:48 <elliott_> It's mostly whitespace tricks and golfing.
20:34:02 <elliott_> Like, it's more "unconventionally (i.e. uselessly) pretty C code contest".
20:34:12 <Rugxulo> nah, originality seems heavily prized
20:34:16 <elliott_> At least that's my perception.
20:34:21 <elliott_> Rugxulo: Well yeah, I mean as far as code formatting goes.
20:37:27 <Gregor> But I mean, a JIT is going to be obtuse no matter how you write it.
20:37:35 <Gregor> A MIDI player would be pretty clear.
20:40:59 -!- oerjan has joined.
20:42:34 -!- Ngevd has quit (Ping timeout: 252 seconds).
20:42:39 <oerjan> hm
20:42:39 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
20:44:24 <elliott_> You guys, my bug reporting strategy works so well.
20:45:08 <CakeProphet> Gregor: check out some of the more complex winners in the past.
20:45:10 <elliott_> I'm just really impeccably nice and do fucktons of work unprompted and in return people bow to my every nee- GOD DAMMIT I'VE BEEN TURNED INTO AN OPEN SOURCE SLAVE BY MY DESPERATION
20:45:19 <CakeProphet> like text-based games. I believe there was an OS as well but I doubt it was very complicated.
20:45:33 <elliott_> CakeProphet: It was more complicated than you might think
20:45:41 <elliott_> CakeProphet: There's also that graphical flight sim
20:45:48 <CakeProphet> ah yes
20:45:55 <CakeProphet> see I think the purpose of the program is considered as well.
20:46:53 <CakeProphet> if the program does something really neat then it's more likely to be considered.
20:48:01 <Gregor> Yeah, but playing a MIDI file isn't all that neat :P
20:48:23 <CakeProphet> wait I thought you were writing a JIT compiler?
20:50:22 <oerjan> 19:03:41: <elliott_> peekManyInfo f x size = do
20:50:22 <oerjan> 19:03:41: <elliott_> c <- return undefined
20:50:22 <oerjan> 19:03:41: <elliott_> a <- withForeignPtr x (\y -> (peekArray ( div (fromIntegral size) $ sizeOf c) $ castPtr y))
20:50:25 <oerjan> 19:03:41: <elliott_> return (c:a)
20:50:28 <oerjan> 19:03:42: <elliott_> return $ f a
20:50:31 <oerjan> hm...
20:50:40 <elliott_> oerjan: Easier with the type signature one line above :P
20:50:45 <elliott_> oerjan: But um excuse me go back up and marvel at combineOr.
20:51:04 <oerjan> elliott_: i'm just thinking of a saner way to write that
20:51:14 <elliott_> oerjan: Here you go:
20:51:19 <elliott_> peekManyInfo :: forall a b. Storable a => ([a] -> b) -> ForeignPtr () -> CLsizei -> IO b
20:51:19 <elliott_> peekManyInfo f x size =
20:51:19 <elliott_> fmap f . withForeignPtr x $ \y ->
20:51:19 <elliott_> peekArray (fromIntegral size `div` sizeOf (undefined :: a)) $ castPtr y
20:51:22 <oerjan> NOOOOOOO
20:51:27 <elliott_> -XScopedTypeVariables, job done
20:51:32 <CakeProphet> c-c-c-combinators
20:51:35 <oerjan> *sigh* ok
20:51:44 * elliott_ pets oerjan, now go look at combineOr
20:53:06 * Gregor reappears.
20:53:18 <Gregor> <CakeProphet> wait I thought you were writing a JIT compiler? // the JIT compiler is more-or-less done, and I'm quite proud of it.
20:53:23 <Gregor> And like I said, <Gregor> But I mean, a JIT is going to be obtuse no matter how you write it.
20:53:33 <Gregor> I was talking about another submission.
20:53:40 <CakeProphet> Gregor: yeah but not in a visually appealing way.
20:53:43 <CakeProphet> ah.
20:54:36 <Gregor> CakeProphet: They don't have to be visually appealing, they have to be obfuscated, although formatting it interesting is surely a plus.
20:54:43 <oerjan> elliott_: hm, it's basically foldl (.|.) 0 :: [CLuint] -> CLuint except with mad coercion?
20:56:19 -!- Ngevd has joined.
20:56:33 <elliott_> oerjan: yep! it was used on a list of newtypes of CLulong
20:57:14 <elliott_> oerjan: i replaced the single usage site with foldl' (.|.) 0 [ foo | NewtypeCons foo <- xs ]
20:58:37 <oerjan> is NewtypeCons a synonym for the actual newtype constructor, or something insanely overloaded?
20:58:48 <elliott_> oerjan: former
20:58:55 <elliott_> you can't overload a constructor :P
20:59:00 <elliott_> or do you mean like
20:59:17 <elliott_> data NewtypeCons a = forall b. (Newtype a b) => NewtypeCons b
20:59:21 <elliott_> or sth ridiculous like that :P
20:59:24 <oerjan> yeah
20:59:36 -!- Phantom__Hoover has joined.
20:59:41 <oerjan> although i guess that wouldn't actually work in that context
21:00:11 <oerjan> since the b escapes in an illegal way
21:00:29 <oerjan> (and is not necessarily the same for all xs elements
21:00:30 <oerjan> )
21:00:53 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:04:53 <oerjan> 15:44:43: <elliott_> because it's a nop that subverts the type system
21:04:53 <oerjan> 15:44:50: <elliott_> which could easily break the forcing mechanism
21:05:08 <coppro> how can a nop do anything?
21:05:11 <oerjan> that's what i was trying to check with my seq experiment yesterday, i couldn't get it to break
21:05:20 <oerjan> coppro: it's a nop after compilation
21:05:21 <elliott_> coppro: it's not the nop, it's what it allows you to do
21:05:36 <elliott_> if you treat a banana as an orange by just doing nothing and pretending, it's still gonna blow up when you uh
21:05:38 <elliott_> press the button that uh
21:05:42 <elliott_> does good things to oranges
21:05:44 <elliott_> but makes bananas blow up
21:05:47 <elliott_> and that is
21:05:48 <elliott_> a real button ok
21:06:18 <CakeProphet> predictions for future Android versions: root beer float, pumpkin pie, vanilla milkshake, jelly, mint chocolate cookies
21:06:33 <elliott_> android sugar
21:06:53 <oerjan> i guess iPhone has dibs on the apple pie
21:07:28 <CakeProphet> I'm pretty sure they'll use jelly for the next version
21:07:36 <oerjan> u jelly?
21:07:37 <CakeProphet> as I don't know of many desserts or sugary things that start with j.
21:07:46 <CakeProphet> other than that.
21:08:08 <elliott_> <oerjan> u jelly?
21:08:11 <elliott_> why did they ever make you op :'(
21:08:34 <elliott_> come to think of it, who _did_ make you an op
21:08:34 <oerjan> so that i could MERCILESSLY TORTURE YOU, of course
21:08:56 <elliott_> I purchased any 37-inch LG 37LV5300 combined with picture had been excellent though the audio system ended up awful, there were a few action cloud (community . has also been 120hz) along with anytime the particular display had been supposed to be absolutely dark you could possibly see the LED bleeding via about the edges.
21:08:59 <oerjan> fizzie, i think
21:09:21 <oerjan> i don't think there were any other active ops at the time
21:09:39 <elliott_> oerjan: it is very hard for me to envision fizzie doing an opthing of his own accord :P
21:09:48 <elliott_> although not as hard as it is for me to imagine you doing that >:)
21:10:07 * CakeProphet is the primest candidate for ophood.
21:10:51 <oerjan> well after that antioptbot disaster i am somewhat leery of using ops for silly stuff
21:11:03 <oerjan> even more than before
21:11:28 <CakeProphet> I would op over my subjects with the kindness and wiseful tact of the philosopher kings of ancient times.
21:11:40 <CakeProphet> because op = king obviously
21:11:44 <elliott_> oerjan: looks like the ops before you were andreou, fizzie, lament and Aardappel. so the founder, fizzie, someone who has never heard of this channel, and a potato.
21:11:53 <elliott_> good ops
21:12:00 <Sgeo> antiopbot disaster?
21:12:12 <elliott_> someone made a bot to insult the ops
21:12:14 <elliott_> thus anti op bot
21:12:20 <elliott_> and then oerjan killed a baby
21:12:30 <oerjan> the disaster of misspelling
21:12:54 <CakeProphet> oerjan: let it be known that if elliott is ever considered for ophood then there is ONE VETO VOTE against him.
21:12:54 <Rugxulo> Aardappel is most likely Wouter van Oortmerssen (sp?), the FALSE dude
21:12:57 <CakeProphet> yes, that is totally a thing.
21:13:13 <Rugxulo> I don't think it's Mr. Potato Head
21:13:16 <oerjan> no i didn't, it was already dead when i ate it
21:13:41 <elliott_> Rugxulo: that much is obvious :P
21:13:58 <Rugxulo> well you called him a potato ("them's fightin' wurds!")
21:14:00 * elliott_ would rather wouter were known for his more interesting languages :(
21:14:07 <Rugxulo> such as?
21:14:07 <elliott_> Rugxulo: aardappel means potato.
21:14:13 <Rugxulo> yes, so I've read
21:14:15 -!- derdon has quit (Remote host closed the connection).
21:14:16 <Rugxulo> (though I don't speak Dutch)
21:14:23 <elliott_> Rugxulo: such as Aardappel, for one :P http://strlen.com/aardappel-language
21:14:36 <Rugxulo> he seems almost more proud of E than FALSE
21:14:46 <CakeProphet> you know what's funny about fighting words?
21:14:51 <CakeProphet> it's actually a thing in US law.
21:15:50 <Rugxulo> US law is the biggest kludge ever
21:15:58 <MonkeyofDoom> ^
21:16:08 <elliott_> do you know of any laws that aren't kludges
21:16:14 <oerjan> this reminds of how it's illegal in norway to insult a police officer, but _what_ you can say varies by region
21:16:23 <MonkeyofDoom> thermodynamics?
21:16:24 <Rugxulo> no, but how it even pretends to make any coherent sense is beyond me
21:16:44 <elliott_> i gather that's why we have lawyers.
21:16:47 <oerjan> because some places have a customarily more ... colorful ... way of speaking than others
21:16:56 <oerjan> *reminds me
21:17:04 <Rugxulo> "so how many gigolos did your mom have to bribe to get you that badge?"
21:17:49 <CakeProphet> I wonder if a your mom joke constitutes as fighting words.
21:18:06 <elliott_> your MOM constitutes fighting words.
21:18:35 <CakeProphet> Incitement is a related doctrine, allowing the government to prohibit advocacy of unlawful actions if the advocacy is both intended to and likely to cause immediate breach of the peace. The exception is defined in Brandenburg v. Ohio (1969), where the Court reversed the conviction of a Ku Klux Klan leader accused of advocating violence against racial minorities and the national government.
21:18:41 <CakeProphet> loooooool
21:19:14 <CakeProphet> advocating unlawful actions that breach the peace is bad, unless it's racist (???)
21:19:18 <oerjan> "please kill a nigger. but wait until tomorrow."
21:19:20 <Rugxulo> "so, how much does everybody *really* love Raymond?" (blank stare)
21:19:51 <oklopol> oerjan: don't be racist
21:20:11 <oerjan> oklopol: ok, you can kill a dyke or chink instead, if you want
21:20:20 <oklopol> you shouldn't kill niggers just because they're black just like you shouldn't hit a white guy just because they hit you first.
21:20:38 <CakeProphet> oerjan: meanwhile Julian Assange is most likely condemned to the death penalty if he ever steps foot on US soil, despite having not broken any laws.
21:20:59 <CakeProphet> THEY WILL FIND SOME VAGUE THING HE VIOLATED.
21:21:29 <oerjan> meanwhile, i don't want to touch that subject.
21:21:50 <CakeProphet> uh oh
21:22:04 <CakeProphet> subject-rape
21:22:05 <oklopol> did you know people in US have this thing called religion
21:22:19 <CakeProphet> oklopol: huh, weird.
21:22:20 <oklopol> i find that really weird
21:22:33 <CakeProphet> there's freedom of it too
21:22:51 <CakeProphet> within some reason that doesn't really seem to universal.
21:22:52 <Rugxulo> and weird anti-religion weirdos who sue just to get a water tower to lose its cross
21:23:03 <CakeProphet> for example the native american church can smoke peyote as part of its rituals
21:23:20 <CakeProphet> but Joe Asshole Peyote Cult with 150 members probably can't
21:24:05 <elliott_> joe asshole peyote cult is the best
21:24:42 <oklopol> no but seriously in the US you can apparently tell your friends you believe in god and no one will think that's weird
21:24:52 <CakeProphet> interestingly I'm pretty sure rastafarians would still get arrested for smoking weed
21:24:58 <CakeProphet> despite it being part of their religious practice.
21:25:14 <Rugxulo> in the U.S., you can dress up as a vampire and nobody will think it's weird
21:25:30 <oklopol> i'm pretty sure most people will think it's weird
21:25:47 <Rugxulo> no worse than default
21:26:05 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
21:26:06 <Gregor> To be fair, I'm pretty sure that Native Americans could not have their peyote-smoking rituals out of reservations, which are in principle autonomous.
21:26:11 <CakeProphet> there are also several "marijuana churches" that are essentially trying to manipulate that bit of freedom of religion to allow them to smoke cannabis legally, but of course they've met less success than rastafarians.
21:26:53 <elliott_> More like Wile E. Coyote-smokin' rituals!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:26:54 <elliott_> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:26:54 <elliott_> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:26:59 <elliott_> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:27:00 <elliott_> <elliott_> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:27:03 <elliott_> <elliott_> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:27:04 <CakeProphet> elliott_: what?
21:27:06 <elliott_> <elliott_> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21:27:08 <oklopol> okokokokokokokokokokoko
21:27:09 <elliott_> <elliott_> !!!!!!!
21:27:11 <oklopol> okokokokokokoko
21:27:11 <elliott_> Hi.
21:27:16 <oklopol> okokokokokokokokokokokokokoko
21:27:19 <oklopol> okokokokokokokoko
21:27:25 <oklopol> okokokokokokoko
21:27:30 <oklopol> okokokokokokokokokokokoko
21:27:33 <oklopol> okokokokokokokokoko
21:27:35 <oklopol> okokokokokoko
21:27:35 <Gregor> gregregregregregregregregregorgorgorgorgorgorgorgorgor
21:27:36 <elliott_> is this... freeform okoing
21:27:42 <Ngevd> oklopol, your name makes me think of creatures of the deep
21:27:42 <CakeProphet> Gregor: ah that's true.
21:27:42 <oklopol> okokokokokokokokokokokokokokokokokokokoko
21:27:42 <elliott_> its so beautiful
21:27:48 <oklopol> it should
21:27:53 <shachaf> "eliot" is clearly the best spelling variation of that name.
21:27:59 <elliott_> oerjan: kick shachaf
21:28:02 <oklopol> you don't even want to know what oklopol means
21:28:15 <oklopol> there's a whole mythology
21:28:20 <CakeProphet> oklopol is secretly lopolko
21:28:26 <Ngevd> O
21:28:27 <CakeProphet> WHO IS IN CAHOOTS WITH ROGER G.
21:28:28 <Gregor> La polka
21:28:28 <CakeProphet> I KNEW IT!
21:28:56 <Ngevd> "Taneb" actually comes from "Benat" <-- trivia
21:28:57 <shachaf> elliott_: Why don't you go read something by T. S. Elliott? Oh, wait, that person doesn't exist.
21:29:20 <elliott_> shachaf: What the fuck did T. S. Eliot ever do for us? Ruin the name Elliott, that's what.
21:29:23 -!- ais523 has joined.
21:29:30 <Ngevd> It was a portmantaeu for a shared account that I ended up using way more than Ben ever did
21:29:33 <shachaf> elliott_: He wrote all those cat poems, man.
21:29:42 <elliott_> The way the world ends is actually with me beating people who misspell my name to a bloody pulp.
21:29:47 <CakeProphet> elliott_: hey T. S. Eliot has some good poems.
21:29:50 <elliott_> And it becomes a black hole and gobbles up everything.
21:29:57 <shachaf> Also all those other poems.
21:30:02 <elliott_> More like: BAD-ems.
21:30:06 <Ngevd> I write poems
21:30:10 <elliott_> Oh no.
21:30:14 <Rugxulo> you mean poo-ems?
21:30:25 <Rugxulo> (funnier than bad-ems)
21:30:26 <elliott_> * Phantom__Hoover has quit (Ping timeout: 240 seconds)
21:30:27 <elliott_> Facepalm.
21:30:29 <CakeProphet> Ngevd: me too!
21:30:33 <CakeProphet> ESOTERIC POETRY CLub
21:30:38 <Ngevd> My best insults most people in the world in the first half of a line
21:30:39 <elliott_> No stop.
21:30:40 <elliott_> You're
21:30:41 <elliott_> Ruining life
21:30:58 <Ngevd> "All humans are bastards, that is the truth
21:31:05 <Ngevd> "All part of a perfect worlds spook
21:31:18 <Ngevd> s/ook/oof/
21:31:19 <shachaf> There's this great poem titled "O Eliotttt"
21:31:24 <elliott_> i
21:31:25 <elliott_> hate
21:31:25 <elliott_> life
21:31:26 <elliott_> and also
21:31:27 <Ngevd> "In this dark parody that is real life
21:31:27 <elliott_> shachaf
21:31:29 <elliott_> but
21:31:29 <elliott_> ok
21:31:34 <elliott_> im leaving until Ngevd is done with his uh
21:31:35 <shachaf> elliott_: shachaf = life
21:31:36 <elliott_> wonderful recitation
21:31:38 -!- elliott_ has quit (Quit: Leaving).
21:31:38 <Ngevd> "A world of poverty, greed, and Strife"
21:31:39 <shachaf> No need to be redundant.
21:31:40 <Ngevd> Am done
21:31:55 <CakeProphet> elliott_: am done
21:32:08 <CakeProphet> @tell elliott_ am done
21:32:08 <lambdabot> Consider it noted.
21:32:23 <shachaf> No more eliotttttttt.
21:32:40 -!- pikhq has quit (Read error: Operation timed out).
21:32:43 -!- elliott_ has joined.
21:32:47 <CakeProphet> elliott_: is done
21:32:56 <CakeProphet> am doont
21:33:00 <elliott_> @messages
21:33:00 <lambdabot> CakeProphet said 52s ago: am done
21:33:00 <CakeProphet> deet doot doit
21:33:27 -!- pikhq has joined.
21:33:29 <CakeProphet> lambdabot: yes that is what I said
21:33:46 <Ngevd> fungot, am done
21:33:46 <fungot> Ngevd: i met all the devs if they know nothing about articles though now that you have
21:34:08 <oerjan> <coppro> does the haskell vm implement cyclic lists by thunk or by actually creating a cyclic data structure?
21:34:19 <elliott_> oerjan: don't :P
21:34:28 <CakeProphet> elliott_: man these fetch modi keep getting more ridiculous and not burdening.
21:34:33 <oerjan> it's thunks, but they become actual cyclic once all of them have been evaluated.
21:34:35 <Ngevd> ^echo ais523 wiki spam
21:34:35 <fungot> ais523 wiki spam ais523 wiki spam
21:34:45 <elliott_> oerjan: that's an awfully weird way to describe sharing.
21:34:45 <ais523> Ngevd: heh, I was just checking that now
21:34:47 <shachaf> ^echo ^echo
21:34:47 <fungot> ^echo ^echo
21:34:59 <ais523> wait, are we still discussing cyclic structures in here?
21:35:13 <Ngevd> Don't some crystals have cyclic structures?
21:35:18 <oerjan> ok it's a cyclic thunk, which becomes an ordinary cyclic structure when sufficiently evaluated
21:35:19 <shachaf> We've moved on to bicyclic structures now.
21:35:40 <oerjan> "ordinary" in the sense of non-haskell structures
21:36:03 <CakeProphet> @src cycle
21:36:04 <lambdabot> cycle [] = undefined
21:36:04 <lambdabot> cycle xs = xs' where xs' = xs ++ xs'
21:36:33 <CakeProphet> does that form a cyclic linked list?
21:36:38 <oerjan> yep
21:36:49 <shachaf> Well, no guarantees in the Report. :-)
21:36:50 <CakeProphet> is it because of the weird xs' where xs' =
21:36:51 <CakeProphet> bit
21:37:01 <elliott_> CakeProphet: it would happen just the same if it used fix
21:37:03 <shachaf> That's what makes GHC do it, yes.
21:37:10 <CakeProphet> shachaf: for purposes of further discussion on Haskell it can be assumed we're talking about GHC.
21:37:15 <oerjan> yes, that (in practice) enforces sharing of xs' in the two spots
21:37:17 <CakeProphet> (asshole :P)
21:37:25 <elliott_> CakeProphet: it definitely can't.
21:37:33 <shachaf> cycle xs = fix (xs++)
21:37:45 <elliott_> > fix ([]++)
21:37:48 <oerjan> i'm pretty sure most/all other haskell compilers actually written will do that too
21:37:49 <lambdabot> mueval-core: Time limit exceeded
21:38:12 <elliott_> gah, i really want to know if this tehz guy on reddit is the wiki guy
21:38:13 <elliott_> because
21:38:15 <elliott_> he's really stupid
21:38:17 <elliott_> and i hate him
21:38:25 * elliott_ sugar coats things
21:38:27 <CakeProphet> grr
21:38:49 <elliott_> My thought is rather philosophical: Would it be possible to construct a compiler (in haskell or some future derivate) that doesn't require monads in the definition? For this to work I suppose that the compiler would have to be "compiled along with the program it is compiling". Then again what entity would compile both the compiler and the program?
21:39:06 <CakeProphet> wat
21:39:06 <shachaf> :-(
21:39:09 * elliott_ waits for someone to assume he wrote that.
21:39:12 <shachaf> Thanks for sharing, elliott_.
21:39:28 <elliott_> It's what I do best.
21:39:31 <elliott_> Sharing, and caring.
21:39:33 <elliott_> And hating.
21:39:43 <elliott_> Clarification: In order to not require monads in order to parse, interpret and emit code the input has to be known when interpreting the compiler. It has to be "part" of the compiler itself. That is somewhat impossible. Unless, I imagine, you postpone compilation of the actual compiler until you have the program. Thus the program that you want to compile becomes part of the compiler itself - and not an input to the compiler. Possibly the "what then compi
21:39:43 <elliott_> les the compiler"-problem could be solved making the compiler self-hosting. -> (Oh, I sense a rather strange loop here...)
21:40:02 <shachaf> Quis compiliet ipsos compiles?
21:40:04 <shachaf> Riddle me that.
21:40:10 <CakeProphet> what the hell this makes no sense.
21:40:21 <elliott_> Quid pro COMPILEUM, shachaf!!!
21:41:02 <shachaf> elliott_: Fortunately monads.
21:41:07 <elliott_> thank god monads
21:41:14 <elliott_> god bless you monads
21:41:17 <CakeProphet> I don't see how lack of monads requires any of that.
21:41:23 <shachaf> Bless you, monads. Blonads.
21:41:33 <elliott_> class Blonad a where ...
21:41:53 <CakeProphet> fuck :: Your Mom -> Fucked Mom
21:42:10 <CakeProphet> .. :>
21:42:17 <elliott_> class Blonad b where phase :: b (b a) -> a; glunt :: b a -> (a -> b c) -> b (b c)
21:42:43 <Rugxulo> where's oerjan, I forgot to ask (the .no cop): "Bonvolu alsendi la pordiston, estas rano en mia bideo."
21:42:43 <CakeProphet> oh my
21:42:53 <elliott_> thats not norwegiwngan
21:42:55 <shachaf> "Unfortunately, there's a radio connected to my brain"
21:43:01 <shachaf> "Actually, it's the BBC controlling us from London"
21:43:01 <Rugxulo> elliot, I know
21:43:25 <CakeProphet> BBC: the true ruler of the UK
21:43:27 <shachaf> That looks like Esperanto.
21:43:31 <shachaf> Which is an evil language.
21:43:52 <Rugxulo> what's the one where your mom's up against walls with sailors?
21:44:19 <CakeProphet> Sgeo: updottpplllwo3[]l[df[;]
21:45:12 <Sgeo> CakeProphet, I hate you. I should trust my notifier.
21:45:33 <elliott_> CakeProphet: you're my hero
21:45:49 <shachaf> conalelliotttcable_
21:46:47 <CakeProphet> elliott_: :3 :> 3>
21:46:53 <CakeProphet> er, <#
21:46:54 <CakeProphet> um
21:46:55 <CakeProphet> yeah
21:47:09 <CakeProphet> 3> butt cone
21:47:36 -!- MonkeyofDoom has quit (Ping timeout: 244 seconds).
21:48:35 <pikhq> shachaf: It's worse when put through the Japanese foreign language pedagogy filter.
21:48:46 <shachaf> pikhq: What?
21:48:57 <CakeProphet> a construct devised by pikhq himself.
21:49:09 <pikhq> "Bonboru arusenji ra porujisutonn, esutasu rano en mia bideo"
21:49:23 <pikhq> CakeProphet: No, just a comment on how foreign languages are taught in Japan.
21:49:42 <CakeProphet> !userinterps
21:49:42 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph hello id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez
21:49:47 <CakeProphet> !sffedeesh Bonboru arusenji ra porujisutonn, esutasu rano en mia bideo
21:49:48 <EgoBot> Boooonbooooruuuu iruuuusenjee-a-a-a ra pooooruuuujeesuuuutoooonn, isuuuutesuuuu roooonoooo ie-a-a-a meea beedeoooo
21:50:32 <CakeProphet> !sffedeesh Bork
21:50:32 <EgoBot> Boooork
21:50:53 <pikhq> !pikhq The fuck is this?
21:50:54 <EgoBot> ​Þe fuck iſ þiſ?
21:51:02 <pikhq> Ah. Incorrect.
21:51:27 <CakeProphet> elliott_: quote pls I am lazy
21:51:52 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
21:52:07 <CakeProphet> !redneck hello my friends how are you all doing?
21:52:08 <EgoBot> hey there muh frien's how are yew all doin'?
21:52:30 <CakeProphet> worst redneck ever.
21:53:18 <Rugxulo> y'all
21:53:30 <Rugxulo> howdy
21:53:47 <oerjan> Rugxulo: wat
21:53:53 <oerjan> that's esperanto, surely
21:54:04 <CakeProphet> vikigns don't understand the concept of redneck.
21:54:07 <Rugxulo> throw in a little Spanglish, too ... muchachos, amigos
21:54:26 <CakeProphet> Rugxulo: that's the horrid southwestern bastardization, you fool!
21:54:36 <Rugxulo> E-o? only the quote earlier
21:54:46 <CakeProphet> including "howdy", no one says howdy in the southeast (well, they probably do actually)
21:54:58 <Rugxulo> I can vouch for it
21:55:25 -!- elliott_ has quit (Read error: Operation timed out).
21:55:26 <Rugxulo> "melting pot"
21:56:33 <oerjan> Rugxulo: well of course. now what does it have to do with .no?
21:57:34 <Rugxulo> <oerjan> this reminds of how it's illegal in norway to insult a police officer, but _what_ you can say varies by region
21:58:08 <oerjan> Rugxulo: and what does that have to do with the esperanto quote
21:58:23 <Rugxulo> say that, see what happens ;-)
21:59:04 <oerjan> @_@
21:59:57 <CakeProphet> +_+
22:00:11 * Rugxulo doesn't think oerjan gets the joke
22:00:54 -!- Phantom__Hoover has joined.
22:01:00 <oerjan> you don't say.
22:02:10 <Rugxulo> http://www.imdb.com/title/tt0684161/quotes
22:03:46 <CakeProphet> man these quotes are HILARIOUS
22:03:56 <CakeProphet> I am dying from humor intake.
22:03:59 <CakeProphet> humor poisoning
22:04:15 <Ngevd> Also vowel deficiency
22:05:32 <Rugxulo> they're bringing the show back too (allegedly)
22:08:05 <CakeProphet> you know that feeling you get when a huge important paper is due tomorrow and you just now realized it?
22:08:58 * Rugxulo is afraid of the answer
22:09:47 * Sgeo has never seen Red Dwarf
22:10:01 * Sgeo also has never seen Ghostbusters
22:10:03 * Sgeo ducks
22:10:21 <oerjan> <Phantom__Hoover> I've just noticed that currently on TV is a BBC programme dealing with offended people's letters.
22:10:34 <oerjan> they should get john cleese for that.
22:10:36 <Phantom__Hoover> Sgeo, you are bad
22:10:50 <Ngevd> oerjan, you are good
22:10:57 <oerjan> Ngevd: hm?
22:11:04 <Ngevd> <oerjan> they should get john cleese for that.
22:12:10 <Phantom__Hoover> I thought Cleese was off his nut these days?
22:12:13 * oerjan crosses the streams at Sgeo
22:12:25 <Ngevd> Past John Cleese
22:12:40 <oerjan> Phantom__Hoover: oh no, he's working like mad to pay off his divorce
22:12:49 <andrew12> hi
22:12:55 <oerjan> or is that what "off his nut" means
22:12:59 <oerjan> `welcome andrew12
22:13:00 <CakeProphet> well
22:13:03 <HackEgo> andrew12: 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
22:13:05 <CakeProphet> time to load up on caffeine.
22:13:25 <andrew12> oerjan: did you see me join? i've been here since yesterday and already gotten that thrown at me
22:13:32 <andrew12> :P
22:13:44 <Ngevd> Andrew, is that you?
22:14:23 <andrew12> huh?
22:14:34 <Ngevd> No wait, I'm thinking of a different Andrew
22:15:02 <oerjan> andrew12: oh no, i'm going to have to switch to ais523's method of not telling who he's welcoming
22:15:04 <andrew12> probably
22:15:20 <shachaf> `welcome fungot
22:15:20 <fungot> shachaf: fnord were a huge hit in japan and people are fnord by theodore kaczynski, fnord fnord fnord
22:15:22 <HackEgo> fungot: 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
22:15:31 <Ngevd> ^style
22:15:31 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
22:15:35 <Ngevd> Bah
22:15:36 <shachaf> fungot knows to ignore other bots? :-(
22:15:36 <fungot> shachaf: well i do know that song.
22:15:48 <ais523> andrew12: I just welcome people at random, in the hope that when I do it to someone in your situation then people won't shout at me
22:15:55 <oklopol> shachaf: usually that's done after a few bot loops
22:15:58 <CakeProphet> shachaf: I got the last exploit by @telling lambdabot to say fungot
22:15:59 <fungot> CakeProphet: i tried making something that i probably won't be at the next update which is soon.
22:15:59 <andrew12> `welcome ais523
22:16:01 <CakeProphet> it was then corrected.
22:16:01 <HackEgo> ais523: 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
22:16:19 <shachaf> `echo ?where fungot
22:16:19 <fungot> shachaf: you'll *also* have some idea why it's different :) but i'm willing to convert my tabs to spaces from me hitting tab again and have it work
22:16:20 <HackEgo> ​?where fungot
22:16:29 <shachaf> lambdabot?
22:16:36 <shachaf> Oh, come on, lambdabot!
22:16:42 <ais523> > "I don't listen to people with 'bot' in their name, IIRC"
22:16:43 <lambdabot> "I don't listen to people with 'bot' in their name, IIRC"
22:16:55 -!- Ngevd has changed nick to Tanebbot.
22:16:57 <oerjan> shachaf: not only does fungot know to ignore bots, but HackEgo and EgoBot know how to be ignored by bots
22:16:57 <fungot> oerjan: to be honest, i'm not ruling that out. i have bad expirience with that from emacs)
22:16:59 -!- oklopol has changed nick to oklobot.
22:17:02 <Tanebbot> > "Let's put this to the test"
22:17:03 <lambdabot> "Let's put this to the test"
22:17:10 -!- Tanebbot has changed nick to Ngevd.
22:17:12 <ais523> hmm, apparently noy that
22:17:18 <oklobot> remember oklobot?
22:17:20 <ais523> besides, fungot /doesn't/ have "Bot" in its name
22:17:20 <fungot> ais523: it'd. it had a special form, not about this specific form
22:17:27 <oklobot> it was my first bot
22:17:37 <ais523> what did it do? oing?
22:17:39 <Ngevd> HackEgo prints a non-printing character first
22:17:40 <ais523> a bot could do that really well
22:17:47 <oklobot> it had that weird stack language that basically just had access to two integers
22:17:48 <shachaf> STupid bot.
22:17:53 <Ngevd> Remember Pietbot?
22:17:54 <oerjan> oh hm... there's a loophole isn't there
22:17:57 <Ngevd> That never did work
22:18:08 <oerjan> !echo lambdabot: > 2+2
22:18:09 <EgoBot> lambdabot: > 2+2
22:18:19 <oerjan> hm apparently not
22:18:23 <oerjan> lambdabot: > 2+2
22:18:26 <oerjan> oh
22:18:33 -!- pikhq_ has joined.
22:18:37 <oerjan> lambdabot: @hm
22:18:37 <lambdabot> Maybe you meant: . ? @ bf do ft ghc id pl rc thx v wn
22:18:49 -!- pikhq has quit (Ping timeout: 252 seconds).
22:18:49 <oerjan> !echo lambdabot: @run 2+2
22:18:49 <EgoBot> lambdabot: @run 2+2
22:18:50 <lambdabot> 4
22:18:52 <oerjan> yay
22:19:22 * oerjan leaves the rest as an exercise
22:19:31 <shachaf> ?where+ EgoBot !echo foo
22:19:31 <lambdabot> Okay.
22:19:38 <shachaf> !echo ?where EgoBot
22:19:38 <EgoBot> ​?where EgoBot
22:19:40 <Ngevd> EgoBot: !echo test
22:19:47 <shachaf> !echo lambdabot: ?where EgoBot
22:19:48 <EgoBot> lambdabot: ?where EgoBot
22:19:48 <lambdabot> !echo foo
22:19:49 <EgoBot> foo
22:20:14 -!- ChanServ has set channel mode: +o ais523.
22:20:22 <ais523> just in case I need to +m the channel for a few seconds to break botloops
22:20:29 <shachaf> I'm not going to do it!
22:21:10 -!- zzo38 has joined.
22:21:18 <Ngevd> `welcome
22:21:20 <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
22:21:43 <shachaf> > var "hello, and\n`welcome"
22:21:43 <lambdabot> hello, and
22:21:44 <lambdabot> `welcome
22:21:45 <Ngevd> We should just use `welcome as a generic greating
22:21:48 <shachaf> Phooey.
22:21:57 <shachaf> ?where+ EgoBot `welcome
22:21:58 <lambdabot> I will remember.
22:22:02 <shachaf> ?where EgoBot
22:22:02 <lambdabot> `welcome
22:22:04 <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
22:22:32 <Ngevd> ^echo ?where EgoBot
22:22:32 <fungot> ?where EgoBot ?where EgoBot
22:22:33 <lambdabot> `welcome
22:22:35 <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
22:23:06 <Ngevd> !echo ^echo ?where EgoBot
22:23:07 <EgoBot> ​^echo ?where EgoBot
22:23:17 <Ngevd> Ah yes
22:23:27 <Ngevd> fungot == clever bot
22:23:27 <fungot> Ngevd: it would probably be too simple to concern themselves with state. i think it would be
22:23:48 <Ngevd> It even thinks!
22:24:05 <zzo38> EgoBot inserts a zero-width character if the output starts with any punctuation mark
22:24:20 -!- Rugxulo has left ("Leaving").
22:24:34 <Ngevd> EgoBot.cleverness > fungot.cleverness
22:24:35 <fungot> Ngevd: as i said :p. but the original idea was to port the thing over to fnord. i can't imagine
22:24:42 <zzo38> On my computer, the zero-width character is visible, and it overlaps the colon before the message
22:24:44 <shachaf> ^echo ?where
22:24:44 <fungot> ?where ?where
22:24:45 <lambdabot> ?where ?where
22:24:53 <Ngevd> fungot even imagine
22:24:54 <fungot> Ngevd: are you using as a file pathname? should return t only for pathname objects. the fact that what is called ' consistency' before
22:25:04 * shachaf is so tempted to make a bot loop. :-(
22:25:19 -!- pagnol has quit (Ping timeout: 260 seconds).
22:26:54 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
22:27:39 <oerjan> shachaf: it's traditional!
22:27:42 -!- Ngevd has quit (Read error: Connection reset by peer).
22:28:52 <oerjan> you cannot get a loop with fungot, since that has an ignore list
22:28:53 <fungot> oerjan: why do laptops suck for webdev? they run vim as graphical, although it isn't really
22:30:23 <Sgeo> ?where huh
22:30:24 <lambdabot> I know nothing about huh.
22:30:28 <Sgeo> ?where ?where
22:30:28 <lambdabot> ?where ?where
22:30:31 <Sgeo> ?where >
22:30:31 <lambdabot> I know nothing about >.
22:30:37 <Sgeo> What is ?where
22:31:07 <oerjan> ?list where
22:31:07 <lambdabot> where provides: where url what where+
22:31:18 <Sgeo> Helpful
22:31:21 <Sgeo> ?what ?where
22:31:21 <lambdabot> ?where ?where
22:31:41 <Sgeo> ?where Google
22:31:41 <lambdabot> Mountain View, California
22:31:44 <Sgeo> huh
22:31:50 <Sgeo> ?where lambdabot
22:31:50 <oerjan> it's like HackEgo's `?
22:31:50 <lambdabot> http://haskell.org/haskellwiki/Lambdabot
22:31:58 <shachaf> Oh, Mountain View, California. I've been there.
22:32:10 <Sgeo> ?where Microsoft
22:32:11 <lambdabot> I know nothing about microsoft.
22:32:15 <Sgeo> ?where Sgeo
22:32:15 <lambdabot> I know nothing about sgeo.
22:32:59 <shachaf> ?where haskell
22:32:59 <lambdabot> http://haskell.org
22:33:02 <shachaf> ?where oerjan
22:33:02 <lambdabot> I know nothing about oerjan.
22:33:04 <shachaf> ?where elliott
22:33:04 <lambdabot> elliott is tumbling around Northumberland
22:33:25 <shachaf> Is elliott actually in Northumberland?
22:33:29 <oerjan> yes.
22:35:15 <oerjan> Sgeo: Redmond, Washington.
22:35:27 <zzo38> Do not use this calculator as a card in a card game or as a meat in a hamburger.
22:35:34 <oerjan> where i've been, btw
22:37:45 <shachaf> Maybe I should go visit elliott.
22:37:59 <shachaf> What does he do wherever he is, anyway?
22:38:05 <oerjan> shachaf: wait, _you_ are in northumberland?
22:38:11 <shachaf> No.
22:38:15 <oerjan> whew
22:38:24 <shachaf> I may end up there one day, though! You can never tell with bees.
22:38:24 <oerjan> we don't have room for more esolangers there.
22:38:34 <shachaf> oerjan: Wait, *you* are in Northumberland?
22:38:38 <oerjan> no
22:38:43 <shachaf> Whew.
22:38:49 <shachaf> We don't have room for more esolangers there.
22:38:57 <oerjan> ah.
22:39:24 -!- Phantom__Hoover has joined.
22:39:24 -!- Phantom__Hoover has quit (Client Quit).
22:40:04 <oerjan> shachaf: wait, you are a bee?
22:40:46 * shachaf wonders whether to answer that question.
22:41:01 -!- Phantom__Hoover has joined.
22:41:03 <oerjan> ah, it's a secret? ok.
22:41:13 <shachaf> Something along those lines.
22:41:35 <oerjan> a bee from the land of milk and honey
22:42:28 <Phantom__Hoover> `? shachaf
22:42:30 <HackEgo> shachaf mad
22:42:38 <Phantom__Hoover> `learn shachaf is a bee.
22:42:40 <HackEgo> I knew that.
22:42:49 <Phantom__Hoover> `? oerjan
22:42:51 <HackEgo> Your future evil overlord oerjan is an expert in lazy computation.
22:42:54 <Phantom__Hoover> `? Phantom__Hoover
22:42:56 <HackEgo> Phantom__Hoover? ¯\(°_o)/¯
22:42:58 <Phantom__Hoover> `? Phantom_Hoover
22:43:01 <HackEgo> Phantom_Hoover? ¯\(°_o)/¯
22:43:05 <Phantom__Hoover> (
22:43:08 <Phantom__Hoover> :(
22:43:10 <oerjan> shocking
22:43:39 <oerjan> `learn Phantom_Hoover is a true scotsman and hatheist.
22:43:41 <HackEgo> I knew that.
22:44:09 <Gregor> `learn Phantom__Hoover can't decide what an appropriate number of underscores is.
22:44:12 <HackEgo> I knew that.
22:45:25 <oerjan> `learn Phantom_Hoover is a true Scotsman and hatheist.
22:45:28 <HackEgo> I knew that.
22:46:01 <Gregor> oerjan: You realize I used two _'s there X_X
22:46:06 <Gregor> Oh
22:46:07 <Gregor> Never mind :P
22:46:09 <oerjan> yes.
22:46:10 <Gregor> You were correcting caps.
22:46:19 <Gregor> I thought you were trying to reset, but I'm le'dumb.
22:46:27 <oerjan> `? Gregor
22:46:29 <HackEgo> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
22:46:39 <shachaf> ?where Gregor
22:46:39 <lambdabot> I know nothing about gregor.
22:46:47 <shachaf> ?where zzo38
22:46:47 <lambdabot> I know nothing about zzo38.
22:47:18 <oerjan> ?where+ zzo38 is Canadian, eh
22:47:18 <lambdabot> Done.
22:48:07 <shachaf> zzo38 is Canadian?
22:48:10 <oerjan> yes.
22:48:14 -!- Patashu has joined.
22:48:15 <oerjan> shocking, isn't it
22:48:17 <Gregor> And what of the great Gregor Wertheimer?
22:48:25 * shachaf admits to being kind of surprised.
22:48:27 <shachaf> zzo38: What's your last name?
22:48:36 <Gregor> McCanadacle
22:49:06 <oerjan> shachaf: it's a quite european-sounding name
22:50:04 <oerjan> well, english actually
22:50:50 * CakeProphet made a Skyrim character.
22:50:51 <Gregor> England: No longer part of Europe. (Well, to be fair it never REALLY was)
22:51:10 <oerjan> Gregor: that was a narrowing, not a correction :P
22:51:13 <CakeProphet> Breton warrior-mage kind of dude. focusing on one-hand, block, heavy armor, conjuration, block, and alteration.
22:51:32 <CakeProphet> did I mention block?
22:51:51 <oerjan> no, just block and block
22:51:54 <shachaf> You should make an Uber smiter.
22:52:02 <CakeProphet> I don't know what that is, but okay.
22:52:12 <CakeProphet> basically he's kind of like a warlock knight.
22:52:14 <shachaf> You know, for the Ubers.
22:52:46 <CakeProphet> and probably kind of tankish because block + heavy armor + Breton magic resistance + armor spell
22:53:02 <CakeProphet> and summoned minion.
22:53:18 <shachaf> 20 points in Smite, Holy Shield, Fanaticism/Defiance, something like that.
22:53:22 <shachaf> I don't remember, it's been a while.
22:53:24 <CakeProphet> ah yes of course.
22:53:36 <CakeProphet> shachaf: that sounds like... Diablo?
22:53:49 <CakeProphet> paladin class in Diablo I think has those.
22:53:52 <shachaf> Yep.
22:53:56 <shachaf> Diablo II.
22:53:56 <CakeProphet> *Diablo II
22:53:57 <CakeProphet> yes
22:54:14 <shachaf> I had such a great smiter.
22:54:24 <shachaf> That's a complete lie. I had a barely adequeate smiter.
22:54:27 <shachaf> But I remember him fondly.
22:54:29 <CakeProphet> I usually played necro or sorc or... yeah that's pretty much it.
22:54:44 <shachaf> CakeProphet: Did you play online?
22:54:47 <CakeProphet> yep
22:54:53 <shachaf> Did you ever do the Ubers?
22:54:55 <CakeProphet> no.
22:54:58 <CakeProphet> I don't know what that is.
22:55:00 <shachaf> Aw.
22:55:23 <shachaf> It was an online-only thing with a super-powerful version of Diablo,Mephisto,Baal in one level.
22:55:49 <shachaf> Eventually they dropped a http://diablo.wikia.com/wiki/Hellfire_Torch
22:55:55 <CakeProphet> I do have a little bit of destruction but I don't really want to focus on it because fireballs and lightning bolts are boring.
22:56:06 <shachaf> A smiter was pretty much the safest way to kill them.
22:56:18 <CakeProphet> but setting people on fire as you smash them over the head with a mace is pretty enjoyable.
22:57:48 <CakeProphet> shachaf: sorceress was pretty much ridiculous.
22:57:54 <CakeProphet> with the ice orb thing.
22:58:09 <shachaf> CakeProphet: Sounds to me like you didn't play beyond the first difficulty level.
22:58:27 <shachaf> In Nightmare and especially in Hell there are lots of ice-immune monsters.
22:58:32 <CakeProphet> no I wasn't a h4rdc0r3 D2 person.
22:58:46 <shachaf> Also fire-immune and lightning-immune. A sorceress couldn't get far on her own without being very careful.
22:58:48 <Gregor> "Thus, 1 2>a will invoke register a's contents and 2 1>a will not."
22:58:49 <Gregor> >_<
22:58:57 <Gregor> I thought my comparisons were all off.
22:59:00 <Gregor> No, the universe is all off.
22:59:19 <Gregor> 10 2 / is 10/2, not 2/10. And yet 10 2 > is 2>10, not 10>2
22:59:22 <Gregor> DAMN YOU DC
22:59:35 <CakeProphet> occasionally I wonder, as I sit outside filling my lungs with carcinogens
22:59:43 <CakeProphet> what if some evil bug monster has evolved right at my house
22:59:50 <CakeProphet> like, the first few of its kind.
23:00:05 <CakeProphet> some giant hive of giant bees.
23:00:12 <CakeProphet> or like a giant scorpion thing.
23:00:28 <CakeProphet> with projectile stingers.
23:02:28 <Gregor> WHO JUST GOT SOME DUFF'S DEVICE IN THIS BITCH
23:02:34 <Gregor> GREGOR JUST GOT SOME DUFF'S DEVICE IN THIS BITCH
23:02:45 <Gregor> (Note: not actually Duff's device, just aesthetically similar)
23:05:15 <shachaf> Oh, the D2 ladder was just reset on Oct 25.
23:05:21 <shachaf> Maybe I should play...
23:10:54 <Phantom__Hoover> D2?
23:14:03 -!- Jafet has quit (Quit: Leaving.).
23:14:43 * Phantom__Hoover → sleep
23:14:44 -!- Phantom__Hoover has quit (Quit: Leaving).
23:16:12 <Gregor> OMG
23:16:13 <Gregor> BAHAHAHA
23:16:17 <Gregor> I am ONE BYTE below the limit.
23:16:19 <Gregor> 2047 code bytes.
23:16:34 -!- copumpkin has quit (Ping timeout: 252 seconds).
23:16:59 -!- copumpkin has joined.
23:19:11 <CakeProphet> Gregor: quick! find a problem that requires more code!
23:19:39 <Gregor> CakeProphet: This problem requires more code, but sadly I haven't the space.
23:22:46 <CakeProphet> Vorpal: hi
23:22:55 <CakeProphet> I played Skyrim. :3
23:23:13 <CakeProphet> Gregor: golf it up.
23:23:25 <Gregor> CakeProphet: It's golfed all to hell.
23:24:11 <Gregor> CakeProphet: I wrote a (tragically non-golf) program to give me recommendations on what to reduce with typedefs/#defines.
23:25:14 <CakeProphet> ah nice.
23:25:34 -!- ais523 has quit (Remote host closed the connection).
23:26:27 <CakeProphet> I wonder if I could devise a programming language based on big burly men wrestling.
23:26:48 <coppro> depends
23:26:52 <coppro> do you consider sumo wrestlers burly
23:26:55 <CakeProphet> sure.
23:27:00 <coppro> then yes
23:27:19 <CakeProphet> one challenger could be halt, the other could be non-halt
23:27:29 <CakeProphet> AND THEY BATTLE TO SEE WHO WINS.
23:27:34 <CakeProphet> (spoiler: non-halt never wins)
23:27:35 <coppro> no, it needs to be three ways
23:27:39 <Gregor> Halting problem: SOLVED
23:27:42 <coppro> no wait
23:27:49 <coppro> two ways between accept and reject
23:27:54 <coppro> a non-halting program is a draw
23:28:46 <CakeProphet> so I guess your input is like WEAPONS
23:28:52 <CakeProphet> or.. uh.. ADVANTAGES
23:30:28 <CakeProphet> http://www.npr.org/2011/11/20/142569472/how-one-man-played-moneyball-with-jeopardy?sc=fb&cc=fp
23:33:18 <CakeProphet> I enjoy the comments where people say he is cheating.
23:39:54 <CakeProphet> "Using data-mining and text-clustering techniques, Craig grouped questions by category to figure out which topics were statistically common — and which weren't."
23:40:03 <CakeProphet> shouldn't this be s/questions/answers/?
23:40:43 <Sgeo> elliott is not here
23:40:49 <CakeProphet> Sgeo: updoot
23:41:06 <Sgeo> CakeProphet, yes, that's what I wanted to tell elliott
23:41:18 <oerjan> brave sir elliott ran away, he bravely ran away away
23:41:28 <CakeProphet> I GUESS YOU JUST WON'T NOW, HUH?
23:41:30 <CakeProphet> OH NO.
23:41:53 <CakeProphet> Sgeo: the world
23:41:54 <CakeProphet> is ending
23:42:04 <CakeProphet> because you can't tell elliott
23:42:12 <CakeProphet> about the uhpdeet
23:42:53 * CakeProphet gentley shooshpaps Sgeo.
23:43:19 * Sgeo has to go
23:44:46 <CakeProphet> Sgeo: I'm going to ignore the previous thing you said and continue talking to you
23:44:54 <CakeProphet> Sgeo: is Dr. Brinner actually going to be a thing.
23:45:00 <CakeProphet> because it could possibly be a good idea.
23:45:10 <CakeProphet> though I'm pretty sure it's just a non-existent parody thing of homestuck.
23:46:32 <Sgeo> Bye
23:50:30 <Gregor> I'm out of platforms.
23:51:05 <CakeProphet> Gregor: what about PS2 and Nintendo 64?
23:52:36 <Gregor> CakeProphet: So, MIPS and MIPS?
23:52:40 <Gregor> CakeProphet: Covered and covered.
23:57:26 -!- Jafet has joined.
23:59:04 <Gregor> I want one more architecture so it's an even dozen.
23:59:06 <CakeProphet> Gregor: Super Nintendo?
23:59:21 <Gregor> Needs to be 32-bit :P
23:59:34 <CakeProphet> NOT PORTABLE ENOUGH
23:59:43 <Gregor> :'(
23:59:55 <CakeProphet> this shit needs to run on MOS Technology 6502.
2011-11-21
00:12:58 <CakeProphet> "As the game has just been released, only a moderate amount is known about the gameplay. Although there is a decent amount of information that has been shown, it appears as though this information only scratches the surface."
00:13:03 <CakeProphet> from elder scrolls wiki
00:13:23 <CakeProphet> I like how people are just assuming that Skyrim has all these uncovered secrets
00:13:34 <CakeProphet> because they've bought into too much hype.
00:13:36 <Jafet> It does, if you're a munchkin
00:13:51 <Jafet> And if you're reading the wiki, you're a munchkin.
00:14:04 <CakeProphet> what is a munchkin?
00:14:21 <oerjan> a creature from the wizard of oz. hth.
00:15:16 <oerjan> their wiki-reading powers were even more impressive as they had no computers
00:24:43 <oerjan> @tell elliott Regarding that paging algorithm anecdote a couple days ago which you asked if had anything to do with synchronicity - today's GLL is about the question: http://rjlipton.wordpress.com/2011/11/19/another-annoying-open-problem/
00:24:44 <lambdabot> Consider it noted.
00:24:57 * oerjan whistles innocently
00:39:29 <CakeProphet> Vorpal: so apparently the bound weapons in skyrim are equivalent to ebony weapons in damage.
00:40:06 -!- simpleirc966 has joined.
00:40:13 <CakeProphet> and also scale with your weapon skill (one-handed skill improves the damage of bound sword). which means they're retardedly good at early levels.
00:41:14 -!- simpleirc966 has left.
00:44:20 <CakeProphet> so I might actually try dual-wielding bound swords instead of using a shield, and then later once I get nice enchanted weapons and use those (and then use the bound sword to refill soul gems)
00:47:19 <CakeProphet> I'm disappointed in the complete lack of variety of spells in this game though. There are only three conjured weapon spells now instead of bound boots, bound bow, bound cuirass, bound dagger, bound gauntlets, bound greaves, bound helmet, bound mace, bound shield, etc, etc
00:47:23 <CakeProphet> in oblivion
00:49:14 <CakeProphet> granted most of the bound armor spells are probably not very good, but they could have kept the variety of weapon conjuration spells
00:50:04 <oerjan> the spell system is so horribly unrealistic
00:50:28 <CakeProphet> oerjan: :P
01:01:52 <Jafet> Bound Mead
01:20:42 <CakeProphet> ha
01:29:22 <CakeProphet> Jafet: presumably the alcohol would leave your system once the conjuration spell wears out.
01:29:43 <CakeProphet> instant hangover cure!
01:31:49 <zzo38> Today, I have played, Dungeons and Dragons game.
01:33:59 -!- zzo38 has quit (Remote host closed the connection).
01:42:46 <CakeProphet> zzo38: bye
02:08:16 <pikhq_> *sigh* Canterbury Tales is perhaps the most pointless feature of an English class. It's *literally in a different language* for goodness sake!
02:09:17 <pikhq_> This complaint brought about by listening to my little sisters.
02:09:49 <CakeProphet> pikhq_: but it's such a good story about uh
02:09:51 <CakeProphet> ...whatever it's about.
02:10:02 <oerjan> well, we did have some norse myths in norwegian class
02:10:18 <pikhq_> oerjan: Were they in the original Old Norse?
02:10:22 <oerjan> yes.
02:10:29 <pikhq_> That's fucking cruel.
02:10:34 <CakeProphet> norse myths are way more awesome than Canterbury Tales though.
02:10:35 <pikhq_> And pointless.
02:10:53 <pikhq_> But it does have the redeeming factor that Norse myths are way more awesome than Canterbury Tales.
02:11:23 <oerjan> it was only a taste during one year of high school though, afair
02:11:53 <oerjan> there was also some swedish and danish
02:12:12 <CakeProphet> why is there no British mythology in schools? Did none of the writing survive?
02:12:32 <pikhq_> There's no single "British mythology".
02:12:42 <oerjan> what is there other than beowulf?
02:13:50 <pikhq_> oerjan: Norse mythology is itself a version of Germanic mythology; the Anglo-Saxons had their own.
02:14:06 <CakeProphet> oerjan: remind me. what's the best way to grab a list of numbers from a line of input -- oh nevermind (map read . words) <$> getLine
02:14:08 <oerjan> i mean, that has survived
02:14:32 <oerjan> parentheses not necessary
02:14:35 <CakeProphet> best way as in simplest not necessarily the safest industry strength shit ever.
02:14:59 <oerjan> CakeProphet: well that'll obviously break if there's any misformatting
02:15:05 <CakeProphet> right.
02:15:06 <CakeProphet> which is fine
02:15:19 <CakeProphet> because this a program to calculate averages from a list of numbers :)
02:15:20 <pikhq_> oerjan: Random samplings of things; nothing exceptionally *long*, though. Beowulf is the only surviving epic poem of the era.
02:16:32 <oerjan> ah as was my impression
02:16:44 <CakeProphet> in other news: length is stupid. genericLength is good.
02:16:45 <pikhq_> Of course, Anglo-Saxon myths aren't the only bits of English mythology. The Celts are also from the British Isles. :)
02:17:13 <CakeProphet> I literally just went through an entire thread of discussion with multiple haskell nubs being completely baffled on how to write a simple averaging program.
02:17:19 <CakeProphet> because sum ls / length ls does not work
02:17:33 <CakeProphet> when it probably shouldn't.
02:17:53 <oerjan> actually even genericLength doesn't work iirv
02:17:54 <oerjan> *c
02:17:59 <oerjan> :t genericLength
02:18:00 <lambdabot> forall b i. (Num i) => [b] -> i
02:18:00 <CakeProphet> no it does
02:18:03 <oerjan> oh
02:18:11 <CakeProphet> > let x = [1,2,3] in sum x / genericLength x
02:18:11 <oerjan> i thought it might be Integral
02:18:12 <lambdabot> 2.0
02:18:19 <CakeProphet> as it should be.
02:19:11 <CakeProphet> so is the $ even necessary in forever $ do ...
02:19:17 <oerjan> yes
02:19:24 <CakeProphet> hmmm
02:19:31 <CakeProphet> I guess that makes sese.
02:19:33 <CakeProphet> sense
02:20:15 <oerjan> \, do and let cannot be used directly as arguments
02:20:18 <CakeProphet> it seems reasonable that you could omit parenthesis around a do block and they would be placed explicitly around it.
02:20:35 <CakeProphet> with explicit parens being used in situations where you have something trailing the do block in the expression
02:20:48 <CakeProphet> but, $ is perfectly fine. -uses that-
02:20:57 <CakeProphet> er
02:21:00 <CakeProphet> *implicitly :P
02:21:01 <oerjan> yes. i was surprised way back when i discovered it, too
02:21:11 <oerjan> (that it doesn't work)
02:21:17 <CakeProphet> right
02:22:06 <CakeProphet> @hoogle genericLength
02:22:07 <lambdabot> Data.List genericLength :: Num i => [b] -> i
02:22:21 <CakeProphet> aw no Prelude
02:22:27 <oerjan> nope
02:22:43 <CakeProphet> I pretty much import Control.Monad and Data.List without even considering if I need them or not
02:22:46 <CakeProphet> because
02:22:49 <CakeProphet> I probably will
02:22:53 <oerjan> heh
02:22:55 <CakeProphet> and probably Control.Applicative but sometimes not
02:23:24 <oerjan> yeah they're like secondary syntax
02:24:02 <CakeProphet> I feel that <$> should be Control.Monad
02:24:07 <CakeProphet> or maybe just in Prelude or something.
02:25:03 <CakeProphet> Control.Applicative makes sense though, as its used in the f <$> x <*> y idiom
02:25:04 <Jafet> It's in .ghci
02:25:26 -!- Jafet has quit (Quit: Leaving.).
02:25:29 <CakeProphet> but <$> really has nothing to do with Applicative. :P
02:25:35 <CakeProphet> (or monads I guess...)
02:25:58 <CakeProphet> other than that monads and applicatives are functors.
02:26:57 <CakeProphet> @hoogle f a -> f b -> f b
02:26:58 <lambdabot> Control.Applicative (*>) :: Applicative f => f a -> f b -> f b
02:26:58 <lambdabot> Prelude (>>) :: Monad m => m a -> m b -> m b
02:26:58 <lambdabot> Control.Monad (>>) :: Monad m => m a -> m b -> m b
02:27:44 <CakeProphet> > [1, 2, 3] *> [4,5,6] == [1,2,3] >> [4,5,6]
02:27:45 <lambdabot> Precedence parsing error
02:27:45 <lambdabot> cannot mix `Control.Applicative.*>' [infixl 4...
02:27:54 <CakeProphet> > ([1, 2, 3] *> [4,5,6]) == ([1,2,3] >> [4,5,6])
02:27:55 <lambdabot> True
02:28:56 <CakeProphet> maybe Haskell should just have a FunctorApplicativeMonad class. yes, that's a good name for it.
02:31:30 <oerjan> CakeProphet: i think <$> is also exported from Data.Functor
02:32:07 <CakeProphet> but I never actually import that. :P
02:32:33 <oerjan> CakeProphet: well if they fixed the missing subclassing mess, Monad should reexport Applicative should reexport Functor
02:32:42 <oerjan> i think
02:33:04 <CakeProphet> Control.Monad never seems to have <$>. let me double check.
02:33:17 <oerjan> well of course not.
02:33:37 <CakeProphet> Monad should reexport Applicative should reexport Functor
02:33:38 <CakeProphet> huh?
02:33:45 <oerjan> it's not a function of Monad or any current superclass
02:33:54 <oerjan> CakeProphet: *Data.*
02:33:57 <CakeProphet> right
02:33:58 <CakeProphet> I mean
02:34:06 <CakeProphet> if Monad rexports Functor transitively
02:34:08 <CakeProphet> why is <$> not there?
02:34:18 <oerjan> i didn't say it did, i said it _should_ do it
02:34:39 <oerjan> once Monad becomes a real subclass of Applicative
02:34:48 <CakeProphet> oh I thought you meant the kind of "should" that means "I'm fairly certain this is the truth"
02:35:01 <CakeProphet> not the normative "this is how it should be but is not" version :P
02:35:21 <oerjan> oh, i see my tenses could be interpreted as "this has already happened"
02:35:25 <CakeProphet> oerjan: yes that should happen in Haskell 2020
02:35:43 <CakeProphet> fingers crossed
02:36:03 <CakeProphet> time to painstakingly collect statistics from a dumb questionnaire thing.
02:36:12 <CakeProphet> for a 10 page report that's due tomorrow that I am just now starting
02:36:13 <CakeProphet> yesss
02:41:21 <CakeProphet> I probably could have just used an existing calculator program to do these averages
02:41:26 <CakeProphet> BUT THIS IS EASY TOO
02:42:23 <CakeProphet> I'm kind of baffled as to how my program knows which Read instance to use.
02:42:38 <CakeProphet> the only inferred types are typeclasses.
02:42:43 <CakeProphet> :t (/)
02:42:45 <lambdabot> forall a. (Fractional a) => a -> a -> a
02:42:53 <CakeProphet> does Haskell do some kind of auto-default thing?
02:43:19 <CakeProphet> or does Fractional have a Read instance?
02:44:40 <oerjan> yes, it defaults to Integer or Double, as appropriate
02:45:12 <oerjan> you can change that with a default declaration
02:45:36 <CakeProphet> ah okay.
02:45:46 <CakeProphet> is this feature available for other data types?
02:46:14 <oerjan> there's an ExtendedDefaulting option
02:46:28 <CakeProphet> that would be good to declare String as default for IsString for example
02:46:34 <CakeProphet> if OverloadedStrings doesn't already.
02:47:06 <oerjan> i'm not sure but that might work with the extended option
02:47:28 <CakeProphet> also an Expr default would be nice for SimpleReflect
02:47:51 <oerjan> without the extended option, it's limited to only numerical classes defined in the haskell report
02:50:33 <CakeProphet> oerjan: do you know anything about the CS program at your school?
02:51:16 <oerjan> no
02:51:23 <pikhq_> I didn't realise oerjan was presently in a school.
02:51:31 <oerjan> that would be the main reason :P
02:51:49 <pikhq_> There we go, that makes more sense. :)
02:52:12 <CakeProphet> oh... okay.
02:52:35 <shachaf> oerjan: You should've quit with "Exception: Prelude.undefined" and left people to figure out what they said wrong.
02:52:58 <oerjan> technically, additional classes are permitted from the standard library. but for some reason Random seems to have been left out in the implementations i've tried (ghc, hugs)
02:53:45 <oerjan> well, last i tried
02:54:14 <oerjan> > map (1 +) $ randoms (mkStdGen 42)
02:54:15 <lambdabot> [-3907187990116499534,-2519438828217931932,-8264534369199619666,86887135830...
02:54:18 <oerjan> oh hm
02:54:19 <CakeProphet> http://rjlipton.wordpress.com/2010/11/03/equations-over-groups-a-mess/
02:54:24 <CakeProphet> oerjan: is this you in the first visible comment?
02:54:38 <CakeProphet> yes, yes it is
02:54:39 <oerjan> i guess it may have been fixed
02:54:45 <CakeProphet> because there is also a Phantom Hoover
02:55:14 <CakeProphet> a Phantom Hoover and a Ørjan Johansen in the same comment thread about math stuff.
02:55:17 <CakeProphet> must be oerjan.
02:55:56 <oerjan> i still haven't got around to ban Phantom_Hoover for that comment
02:57:27 <CakeProphet> oerjan: I think his user pic is a wallpaper group.
02:57:41 <CakeProphet> fitting given the subject of group theory.
02:58:12 <oerjan> probably, that is obviously from the default pic selection
02:58:21 <CakeProphet> obviously?
02:58:31 <CakeProphet> I've noticed people in #esoteric have a strange definition of obviously.
02:59:01 <oerjan> well it looks similar to all the others that don't have actual portraits
02:59:21 <CakeProphet> my google chrome was lazy and only loaded half of the pictures.
02:59:35 <CakeProphet> oh yes, I see.
02:59:55 <oerjan> fascinating problem, that group theory / complexity one btw, i've been thinking more about it lately
03:00:12 <CakeProphet> if only I knew anything about math. :P
03:00:15 <CakeProphet> then I could comment on that.
03:00:17 <CakeProphet> and how interesting it is.
03:00:55 <oerjan> in fact i think i ruled out the "another idea" i made further down
03:01:29 <CakeProphet> oerjan: perhaps you should USE HASKELL TO SOLVE THIS PROBLEM YEAH
03:02:10 <oerjan> i've considered it
03:04:01 <CakeProphet> I wonder if I'll learn about groups when I take topology.
03:04:11 <CakeProphet> are they in any way related?
03:04:24 <oerjan> yes, if you take _algebraic_ topology
03:04:36 <CakeProphet> no just an intro topology course probably.
03:04:42 <CakeProphet> well, the only topology course my university offers.
03:04:51 <CakeProphet> for undergraduates.
03:05:12 <CakeProphet> but first I have to take intro to advanced math, which is probably just "lolproofs"
03:05:15 <oerjan> i guess it depends whether it goes much beyond the basics
03:05:24 <CakeProphet> proofs of what? I don't know. Maybe it will touch some things like relations and algebras.
03:06:35 <CakeProphet> we already did stupid number theory and induction proofs in discrete math, so I'm hoping it will not repeat those.
03:08:04 <CakeProphet> I bet we'll still use naive set theory, though. because everyone loves naive set theory even though it's A PARADOX -spooky noise-
03:11:12 <oerjan> well using naive set theory mostly means "using zfc but not bothering to mention the restrictions"
03:11:30 <oerjan> ...possibly an overstatement.
03:12:40 <CakeProphet> oerjan: no that seems to be the case.
03:13:09 <CakeProphet> because the kind of set theory stuff we did in discrete math was not very complicated.
03:13:38 <oerjan> oh discrete math probably means all the sets are finite or countable
03:13:43 <CakeProphet> yep.
03:13:45 <CakeProphet> countable.
03:13:48 <CakeProphet> for the most part.
03:13:54 <CakeProphet> a lot of number theory stuff.
03:14:28 <CakeProphet> but then we went into things like graphs which were finite and relations which are sometimes finite.
03:14:38 <oerjan> and then zf's replacement axiom (the fraenkel part) says the sets are all ok
03:14:44 <CakeProphet> good class. it's a nice "intro to everything fun in math"
03:15:14 <CakeProphet> as opposed to calculus
03:15:20 <CakeProphet> which is "intro to everything painful in math"
03:15:35 <oerjan> >_>
03:15:43 <CakeProphet> maybe I'm just a discrete kind of guy.
03:16:04 <CakeProphet> whereas continuity fucks with my brain.
03:16:48 <CakeProphet> "as x approaches 1" what? I mean I know what that means but how do you define that? then I would go to my book and try to understand the definition of a limit and fail.
03:17:26 <CakeProphet> yes, I went through derivatives and integrals and multi-dimensional integrals in calculus
03:17:32 <CakeProphet> without a very clear definition of what a limit is.
03:17:41 <oerjan> heh, perhaps some of the topological formulations of limit might make it click. or hopefully not make it worse.
03:18:44 <CakeProphet> discrete stuff, on the other hand, is largely intuitive to me though.
03:18:53 <oerjan> much of the essence of topology is about generalizing the heck out of limits
03:19:01 <CakeProphet> awesome.
03:20:13 <CakeProphet> how much calculus is there>
03:20:20 <CakeProphet> calculus: definitely my least favorite math.
03:20:25 <oerjan> well in one direction, anyway. category theory has an even more brain-wrecking way. :P
03:20:52 <CakeProphet> actually I should ask: how many integrals.
03:21:07 <CakeProphet> integrals seem pretty topological...
03:21:35 <CakeProphet> well...
03:21:59 <CakeProphet> it's like a summation of all the points in some object.
03:22:03 <CakeProphet> basically?
03:22:30 <CakeProphet> integrals are just fancy continuous summation things. at least that's my intuitive understanding.
03:23:30 <oerjan> well it depends on which way you generalize them.
03:24:03 <CakeProphet> oh wait so you can integrate via other things?
03:24:05 <oerjan> lebesgue integration tries to remove as much as possible of continuity requirement
03:24:11 <oerjan> *the
03:24:37 <oerjan> otoh that also generalizes to many topological spaces
03:25:53 <oerjan> but that's via measure theory. you're not going to see that in a basic topology course.
03:26:17 <CakeProphet> my understanding was that basic topology is a lot of set theory.
03:26:21 <oerjan> yeah
03:26:35 <CakeProphet> and maybe like... relations?
03:26:50 <CakeProphet> a homeomorphism is a kind of relation right?
03:26:58 <oerjan> it's a bijection
03:27:11 <oerjan> so a function in particular
03:27:43 <oerjan> but "homeomorphic" is a relation between topological spaces
03:27:58 <oerjan> (it says there's a homeomorphism between them)
03:28:22 <CakeProphet> ah okay
03:28:31 <oerjan> and i guess there's a slight ambiguity in using the term "homeomorphism" for either
03:28:39 <CakeProphet> because the bijective quality means that each element is equivalent to one other in the other space.
03:30:00 <oerjan> yes, although there is not necessarily (i.e. rarely) a _unique_ homeomorphism
03:30:06 <CakeProphet> and homeomorphism is the isomorphism of topological spaces, because one-to-one equality is a good way for sets of things to be isomorphic.
03:30:35 <oerjan> well sort of yeah
03:30:43 <CakeProphet> yes in no way is that a formal statement of things :P
03:31:09 <oerjan> the extra requirements of what kind of bijection it is are important too, otherwise you just get a test for cardinality
03:31:14 <CakeProphet> are all isomorphisms necessarily bijective?
03:31:48 <oerjan> well in a general category they're not necessarily _functions_
03:31:56 <CakeProphet> just mappings.
03:32:01 <oerjan> um
03:32:11 <oerjan> mapping usually is a synonym for function
03:32:14 <CakeProphet> oh...
03:32:20 <CakeProphet> I thought it was a more general thing.
03:32:24 <oerjan> so *just morphisms
03:32:45 <CakeProphet> what else is a morphism besides a function.
03:32:49 <CakeProphet> I haven't really encountered an example.
03:33:11 <oerjan> well there _might be_ a terminology for mappings that aren't functions. there usually is some way to generalize things.
03:33:40 <CakeProphet> The notion of morphism recurs in much of contemporary mathematics. In set theory, morphisms are functions; in linear algebra, linear transformations; in group theory, group homomorphisms; in topology, continuous functions, and so on.
03:33:47 <CakeProphet> ...but those are all just different kinds of functions. :P
03:34:18 <oerjan> oh hm
03:34:23 <oerjan> relations can be morphisms
03:34:35 <CakeProphet> ah yes
03:34:36 <oerjan> there's a category Rel (iirc)
03:34:44 <CakeProphet> relation is a generalization of functions right?
03:35:01 <oerjan> yes, or functions are a special case of relations
03:35:05 <CakeProphet> right.
03:35:52 <CakeProphet> so.... morphisms /are/ relations then (as far as we know)? or... is there another example that makes this not true?
03:36:45 <CakeProphet> "as far as we know" meaning that there isn't anything that's been called a morphism that isn't some kind of relation.
03:37:46 <oerjan> well there are the categories of partial orders, for which the morphisms are _elements_ of relations, or pairs really
03:38:32 <CakeProphet> ah okay
03:38:35 <oerjan> say the order of natural numbers, with objects the numbers and morphisms pairs of numbers (m,n) with m <= n
03:38:55 <CakeProphet> ah okay.
03:39:13 <CakeProphet> partial orders are really interesting.
03:39:21 <copumpkin> :O
03:39:24 <copumpkin> category theory!
03:39:46 <CakeProphet> to me they seem like... ordering trees?
03:39:50 <oerjan> there is also another more advanced example called the category of topological spaces with morphisms _homotopy_ classes of continuous functions
03:40:25 <oerjan> this one is important because it's, iirc, not even _equivalent_ to a category with function morphisms (a "concrete" category)
03:41:06 <CakeProphet> or wait, can partial orderings form a graph?
03:41:15 <oerjan> yes
03:41:17 <CakeProphet> that doesn't really make any sense to me.
03:41:18 <CakeProphet> :P
03:41:28 <CakeProphet> er, excuse me, *cyclic graph
03:41:43 <oerjan> oh, no. antisymmetric law.
03:41:48 <CakeProphet> okay good
03:41:50 <CakeProphet> sanity is restored.
03:42:11 <CakeProphet> sometimes I say "graph" when I actually mean "cyclic graph"
03:42:17 <CakeProphet> because lol computer science
03:42:56 <oerjan> mhm
03:43:32 <CakeProphet> http://en.wikipedia.org/wiki/File:Poset6.jpg
03:43:34 <CakeProphet> so delicious.
03:44:24 <CakeProphet> > [1,2,3,4] < []
03:44:25 <lambdabot> False
03:45:31 <CakeProphet> are there any standard library Ord instances that are a valid partial ordering of whatever structure it orders?
03:45:36 <CakeProphet> *not a valid
03:46:17 <oerjan> Double
03:46:26 <oerjan> and Float
03:46:30 <CakeProphet> for what reason?
03:46:35 <oerjan> because of NaN
03:46:39 <CakeProphet> hm
03:46:46 <CakeProphet> > 5/0
03:46:47 <lambdabot> Infinity
03:46:48 <CakeProphet> > 0/0
03:46:48 <lambdabot> NaN
03:46:53 <CakeProphet> > 0/0 > 1
03:46:54 <lambdabot> False
03:46:57 <oerjan> > (0/0) == (0/0)
03:46:58 <lambdabot> False
03:47:02 <CakeProphet> ah.
03:47:12 <CakeProphet> that is weird as fuck. :P
03:47:17 <CakeProphet> but also makes sense.
03:47:23 <copumpkin> no it doesn't
03:47:27 <oerjan> weird enough that it's been considered to change it
03:47:28 <copumpkin> IEEE 754 sucks balls
03:47:34 <CakeProphet> > 0/0 < 1
03:47:35 <lambdabot> False
03:47:53 <CakeProphet> I mean, what true claims can you make about something that isn't a number apparently?
03:48:00 <oerjan> because it breaks uses of Ord for things like search trees
03:48:06 <copumpkin> it breaks everything
03:48:11 <copumpkin> it shouldn't live in the type
03:48:23 <CakeProphet> how often does it crop up though?
03:48:32 <copumpkin> all the fucking time, and silently corrupts your shit
03:48:43 <oerjan> CakeProphet: whenever someone accidentally puts a NaN into a Data.Map.Map
03:48:49 <copumpkin> it's not just that
03:49:13 <copumpkin> oerjan: granted, you shouldn't be putting doubles into a map or a key into anything really
03:49:26 <CakeProphet> I imagine you could probably make a SafeFloat with GADTs or something?
03:49:26 <copumpkin> if anything you'd want them in an interval tree
03:49:30 <oerjan> well i guess
03:49:35 <copumpkin> CakeProphet: just a wrapper around them
03:49:53 <CakeProphet> wrapper how?
03:49:59 <copumpkin> newtype
03:50:05 <copumpkin> provide a bunch of operations that never produce nans
03:50:06 <CakeProphet> then just redefine the Floating instance?
03:50:08 <CakeProphet> oh
03:50:13 <CakeProphet> what would 0/0 produce?
03:50:17 <copumpkin> an error
03:50:24 <oerjan> copumpkin: _or_ a different Ord
03:50:24 <CakeProphet> SafeFloat would be compiletime
03:50:26 <CakeProphet> which is better.
03:50:31 <copumpkin> how would that work?
03:50:38 <CakeProphet> uh...
03:50:42 <CakeProphet> let me think about that :P
03:51:00 <copumpkin> you could have a phantom parameter that indicates whether it definitely does not contain a NaN
03:51:04 <copumpkin> or whether the guarantee is lost
03:51:06 <CakeProphet> copumpkin: right
03:51:14 <copumpkin> but then all your num types break
03:51:19 <copumpkin> well, maybe not
03:51:30 * copumpkin shrugs
03:51:57 <CakeProphet> what about positive and negative infinity?
03:51:59 <CakeProphet> do these break things?
03:52:36 <CakeProphet> x/0 is a bit more common than 0/0
03:52:54 <CakeProphet> (infinitely more common, perhaps? :P )
03:53:01 <copumpkin> those at least compare correctly
03:53:17 <copumpkin> doing arithmetic with them is a bit meh but sort of makes sense
03:53:39 <CakeProphet> I imagine there are a lot of cases where you'd instead want a zero division error and not an infinity.
03:54:22 <copumpkin> yeah
03:58:24 -!- pikhq has joined.
03:58:59 -!- pikhq_ has quit (Ping timeout: 260 seconds).
03:59:03 <Sgeo> (1/0) * (-1/-1)
04:00:30 <oerjan> Sgeo: that's why there's also negative and positive zero
04:01:11 <oerjan> hm...
04:01:23 <CakeProphet> I think I might have some understanding of the pain of grading papers.
04:01:31 <oerjan> > (1/((-1)/0)) < 0
04:01:32 <lambdabot> False
04:01:34 <CakeProphet> going through these questionnaires and calculating average response.
04:01:43 <Sgeo> > (1/0) * ((-1)/(-1)) == (1/0)
04:01:44 <oerjan> er
04:01:44 <lambdabot> True
04:01:50 <Sgeo> > (1/0) * ((-1)/(-1)) == (1/(-0))
04:01:51 <lambdabot> False
04:01:56 <Sgeo> derp
04:02:08 <Sgeo> Oh, I see
04:02:20 <Sgeo> > (1/0) * ((-1)/(-1)) == ((-1)/(0))
04:02:21 <lambdabot> False
04:02:23 <Sgeo> > (1/0) * ((-1)/(-1)) == ((-1)/(-0))
04:02:24 <lambdabot> True
04:02:27 <CakeProphet> oerjan: can you give a concrete explanation for why zero typically /doesn't/ have a sign?
04:02:28 <Sgeo> Ok, cool
04:02:44 <CakeProphet> it could easily have a sign, right? or does that mess up EVERYTHING.
04:03:19 <oerjan> CakeProphet: because it doesn't in a group/ring/field
04:03:46 <Sgeo> If I could relay the notion of negative 0 to my 7th grade self...
04:03:56 <CakeProphet> > -0
04:03:57 <lambdabot> 0
04:04:05 <Sgeo> > -0 == 0
04:04:06 <lambdabot> True
04:04:11 <Sgeo> > -0.0 == 0.0
04:04:12 <lambdabot> True
04:04:14 <Sgeo> :/
04:04:19 <CakeProphet> > 1/(-0)
04:04:20 <lambdabot> -Infinity
04:04:29 <CakeProphet> :t 0.0
04:04:30 <lambdabot> forall t. (Fractional t) => t
04:04:42 <Sgeo> I bet == is broken
04:04:49 <CakeProphet> well, no.
04:04:56 <CakeProphet> I bet -0 and 0 are broken with respect to each other.
04:05:00 <Sgeo> :t 1/(-0)
04:05:01 <lambdabot> forall t. (Fractional t) => t
04:05:03 <oerjan> Sgeo: well of course
04:05:07 <CakeProphet> probably in the common case you actually want -0 and 0 to be equal.
04:05:16 <oerjan> we already established that for NaN
04:05:16 <CakeProphet> because in most applications there is only one kind of zero.
04:05:33 <oerjan> > isNegativeZero 0
04:05:33 <lambdabot> False
04:05:38 <oerjan> > isNegativeZero (-0)
04:05:39 <lambdabot> True
04:05:45 <CakeProphet> @hoogle isNegativeZero
04:05:46 <lambdabot> Prelude isNegativeZero :: RealFloat a => a -> Bool
04:05:51 <CakeProphet> oh, okay.
04:06:13 <CakeProphet> @hoogle RealFloat a => a -> Bool
04:06:13 <lambdabot> Prelude isDenormalized :: RealFloat a => a -> Bool
04:06:14 <lambdabot> Prelude isIEEE :: RealFloat a => a -> Bool
04:06:14 <lambdabot> Prelude isInfinite :: RealFloat a => a -> Bool
04:07:38 <oerjan> @src RealFloat
04:07:39 <lambdabot> Source not found. That's something I cannot allow to happen.
04:07:42 <oerjan> darn
04:07:56 <oerjan> well it's a long list of methods
04:08:16 <oerjan> @hoogle RealFloat
04:08:16 <lambdabot> Prelude class (RealFrac a, Floating a) => RealFloat a
04:08:16 <lambdabot> Data.Text.Lazy.Builder.RealFloat module Data.Text.Lazy.Builder.RealFloat
04:08:17 <lambdabot> Data.Text.Lazy.Builder.RealFloat realFloat :: RealFloat a => a -> Builder
04:08:28 <oerjan> bah
04:08:41 <CakeProphet> oerjan: interestingly only 35% of respondents to my questionnaire reported that one of their professors had incorporated Linux into a project or homework assignment
04:08:53 -!- myndzi has changed nick to myndz\.
04:08:56 <CakeProphet> 58% said that their professor /mentioned/ Linux as part of a lecture.
04:09:30 <CakeProphet> (my proposal is on incorporated Linux education into the curriculum at our university)
04:09:34 <CakeProphet> *incorporating
04:11:47 <CakeProphet> @tell Sgeo Updelbrot
04:11:48 <lambdabot> Consider it noted.
04:13:20 -!- DCliche has joined.
04:14:19 * Sgeo slaps CakeProphet
04:14:20 <lambdabot> Sgeo: You have 1 new message. '/msg lambdabot @messages' to read it.
04:14:35 -!- Darth_Cliche has quit (Ping timeout: 244 seconds).
04:16:19 <CakeProphet> Sgeo: I wonder if we can formulate a definitive count of how many Homestuck characters are Mary Sue-like?
04:17:02 <CakeProphet> not actual Mary Sues, but having traits of Mary Sues, perhaps as a parody.
04:17:03 <Sgeo> I think if most of the characters are Mary Sue-like, they start to equalize
04:17:34 <oerjan> Perfecto the Magnificent
04:18:12 <CakeProphet> both Jade and Jake start out with ridiculous gadgetry
04:18:15 <CakeProphet> that continues to grow.
04:18:56 <CakeProphet> or well, in the case of Jade it did
04:19:03 <oerjan> i wonder if anyone has tried to make a comic with many recurrent characters that are _all_ mary sues
04:19:04 <CakeProphet> we do not know what happens with Jake yet.
04:19:28 <CakeProphet> oerjan: MSPA is pretty close.
04:19:33 <oerjan> ok
04:19:38 <CakeProphet> er homestuck
04:19:39 <CakeProphet> I mean
04:20:41 <CakeProphet> the later acts of homestuck kind of do a lot of parodying of indulgent fantasy fiction, to my perspective.
04:22:16 <CakeProphet> for each of the now 18 kids (soon to be 20) that have been introduced, each of them have all sorts of quirky interests and talents that you might find in a poorly written fan fic.
04:31:44 -!- GreaseMonkey has joined.
04:46:27 <CakeProphet> oerjan: question
04:46:36 <CakeProphet> > fix (\f x -> if x > 0 then x * f (x-1) else 1) 5
04:46:37 <lambdabot> 120
04:46:42 <CakeProphet> what is non-strict about that function?
04:47:25 <oerjan> it doesn't actually loop if you give it just _one_ argument :P
04:47:36 <CakeProphet> hmmm
04:47:39 <CakeProphet> okay.
04:47:58 <CakeProphet> so basically, currying is non-strict?
04:48:03 <oerjan> yeah
04:48:13 <CakeProphet> makes sense.
04:48:16 <copumpkin> you aren't forcing f unconditionally
04:49:52 <pikhq> Looks like it should usually give you a "x * f (x-1)" thunk.
04:50:23 <CakeProphet> I think oerjan pretty much explained it.
04:50:32 <pikhq> Strictness analysis might change that slightly, but I don't think GHC's going to turn that into f (x-1) `seq` x * f (x-1).
04:50:43 <pikhq> Erm.
04:50:48 <pikhq> Bleeeh
04:50:49 <CakeProphet> pikhq: * /is/ strict you know.
04:50:52 <copumpkin> it's not even about strictness actually
04:51:09 <CakeProphet> it's just that the code is not actually evaluated in regards to the infinite recursion of fix.
04:51:10 <copumpkin> not strictly about strictness, anyway
04:51:34 <pikhq> CakeProphet: Ah. Well. Duh.
04:52:06 <pikhq> \f x-> reads \f->\x->... *Clearly* there's not much evaluation you can do of an unapplied lambda.
04:52:30 <CakeProphet> but is it technically non-strict?
04:53:00 <oerjan> > (\f x -> undefined) undefined `seq` "Sure"
04:53:00 <lambdabot> "Sure"
04:53:14 <CakeProphet> ah okay
04:53:15 <CakeProphet> so
04:53:21 <CakeProphet> its function application
04:53:22 <CakeProphet> being non-strict
04:53:56 <CakeProphet> er...
04:53:58 <pikhq> > (\f x -> undefined) undefined
04:53:59 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
04:53:59 <lambdabot> arising from a use of `...
04:54:01 <pikhq> Good times.
04:54:25 <CakeProphet> > (f x -> undefined) $! undefined
04:54:26 <lambdabot> Pattern syntax in expression context: f x -> undefined
04:54:31 <CakeProphet> > (\f x -> undefined) $! undefined
04:54:31 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
04:54:32 <lambdabot> arising from a use of `...
04:54:34 <oerjan> > (\x -> undefined) `seq` "Sure" -- actually it reduces to this conceptually
04:54:35 <lambdabot> "Sure"
04:54:57 <CakeProphet> okay so then...
04:55:03 <CakeProphet> /functions/ are just non-strict. :P
04:55:12 <oerjan> yeah
04:55:22 <CakeProphet> how... obvious. :>
04:55:27 <Sgeo> (\x -> undefined) should in theory be _|_, but due to seq isn't?
04:55:33 <CakeProphet> no
04:55:35 <oerjan> um no...
04:55:39 <CakeProphet> (\x -> undefined) is not _|_
04:55:44 <CakeProphet> > (\x -> undefined)
04:55:45 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
04:55:45 <lambdabot> arising from a use of `...
04:55:47 <CakeProphet> see?
04:55:53 <copumpkin> (\x -> undefined x) should be
04:55:57 <copumpkin> but isn't
04:56:02 <oerjan> it's weak head normal form, in the original lambda calculus sense
04:56:22 <CakeProphet> oerjan: ahhhh
04:56:23 <CakeProphet> okay.
04:56:30 <CakeProphet> makes sense.
04:56:46 <shachaf> CakeProphet: Sure it is.
04:56:54 <CakeProphet> shachaf: sure what is what?
04:56:56 <shachaf> _|_
04:56:59 <CakeProphet> lol
04:57:00 <CakeProphet> no
04:57:00 <CakeProphet> >
04:57:01 <CakeProphet> ?
04:57:01 <shachaf> Seqism in this channel?
04:57:04 <oerjan> the thing is, without seq there would not be any way in haskell to get to evaluating a function without applying it
04:57:44 <CakeProphet> shachaf: why is the value (\x -> undefined) _|_?
04:57:56 <CakeProphet> er
04:57:59 <CakeProphet> shachaf: why is the value (\x -> undefined) == _|_?
04:58:04 <shachaf> It's not == _|_
04:58:09 <shachaf> No instance Eq (a -> b) blah blah
04:58:23 <shachaf> But it's indistinguishable from _|_ unless you have seq. Which you don't.
04:58:27 -!- MDude has changed nick to MSleep.
04:58:57 <CakeProphet> shachaf: I don't really understand how.
04:59:06 <oerjan> CakeProphet: nominally, you would want two functions that give exactly the same result when applied to any argument to also _be_ the same. and (\x -> undefined) whatever = undefined whatever, always
04:59:13 <shachaf> CakeProphet: Well -- how do you force it, other than by applying it?
05:00:26 <CakeProphet> 23:54 < oerjan> > (\x -> undefined) `seq` "Sure" -- actually it reduces to this conceptually
05:00:38 <CakeProphet> okay, but then why is this not _|_ as well?
05:02:12 <CakeProphet> > (\x -> undefined)
05:02:13 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
05:02:13 <lambdabot> arising from a use of `...
05:02:39 <CakeProphet> in my mind this is forcing (\x -> undefined) (I'm just going to call it const undefined now)
05:03:02 <oerjan> CakeProphet: because if the undefined was a more complicated expression that could not be detected as always undefined, then there would be no way to show it without having an x to apply it to
05:03:55 <oerjan> say \x -> ...search for a counterexample to goldback's hypothesis...
05:04:04 <oerjan> *goldbach
05:04:49 <CakeProphet> so basically (\x -> undefined) is _|_ because halting problem? :P
05:04:52 <oerjan> now, _if_ that search never halts, you want that to be equivalent to \x -> undefined
05:05:19 <oerjan> *is _not_ _|_
05:05:30 <CakeProphet> oh.... wait what.
05:06:11 <CakeProphet> my argument here was that const undefined is in fact not _|_
05:06:12 <oerjan> there is no way to make a compiler that treats \x -> ...anything _actually_ undefined as equivalent to undefined
05:06:27 <Sgeo> Hmm
05:06:38 <oerjan> _given_ that functions can be evaluated without applying them
05:06:48 <oerjan> which is only possible because of seq
05:06:55 <CakeProphet> right
05:06:58 <CakeProphet> that makes sense.
05:07:20 <CakeProphet> I thought it was being argued that const undefined was virtually indistinguishable from bottom.
05:07:25 <CakeProphet> or whatever.
05:07:47 <CakeProphet> oh, unless you have seq
05:07:47 <CakeProphet> right
05:07:48 <CakeProphet> and then
05:07:54 <CakeProphet> I used seq and was confused, ha ha. ha ha ha
05:08:14 * Sgeo will be using pseq as semicolons
05:08:16 <Sgeo> >:)
05:08:29 <CakeProphet> @hoogle pseq
05:08:29 <lambdabot> GHC.Conc.Sync pseq :: a -> b -> b
05:08:29 <lambdabot> GHC.Conc pseq :: a -> b -> b
05:08:29 <lambdabot> Control.Parallel pseq :: a -> b -> b
05:09:11 <Sgeo> CakeProphet, like seq, except forces its first argument to be evaluated first
05:09:20 <Sgeo> Before evaluating the second
05:09:32 <CakeProphet> oh, I wasn't aware that was semantically different from seq. :P
05:09:42 <oerjan> it's not _semantically_ different
05:10:03 <CakeProphet> er, order of evaluationally different? :P
05:10:07 <oerjan> well, not denotationally
05:11:00 <CakeProphet> still haven't learned about semantics...
05:12:31 <oerjan> it's there because the denotational semantics does not _actually_ say anything about evaluation order, and ghc actually rearranges things that are denotationally equivalent when optimizing, so _sometimes_ seq ends up evaluating its arguments in the unexpected order
05:12:43 <CakeProphet> ah okay
05:12:59 <CakeProphet> also I still don't see how const undefined is virtually indistinguishable from bottom unless seq is involved.
05:13:20 <oerjan> well const undefined x = undefined always, right?
05:13:32 <oerjan> which = undefined x
05:13:34 <CakeProphet> yeah
05:14:01 <oerjan> so if the _only_ way you can distinguish functions is by applying them to arguments, const undefined is indistinguishable from undefined
05:14:42 <copumpkin> the issue with seq is that it allows you to distinguish undefined :: X -> Y from (\x -> undefined x) :: X -> Y
05:14:49 <CakeProphet> except that actually evaluating const undefined doesn't produce bottom, which I'm assuming is where seq comes into play.
05:15:01 <oerjan> yes
05:15:42 <CakeProphet> so basically fix f is the only way to determine bottomness
05:15:50 <copumpkin> ??
05:16:02 <CakeProphet> > fix (const undefined)
05:16:03 <lambdabot> *Exception: Prelude.undefined
05:16:08 <copumpkin> > fix (const x) = x
05:16:09 <lambdabot> <no location info>: parse error on input `='
05:16:09 <CakeProphet> oh look const undefined is bottom
05:16:18 <copumpkin> fix . const = id
05:16:31 <Sgeo> You can't look at arbitrary values and ask "Is it bottom"
05:16:40 <Sgeo> Unless you've solved the halting problem
05:16:50 <CakeProphet> or unless I evaluate it with fix :P
05:16:52 <copumpkin> you can catch some kinds of bottoms, which is what I do in the spoon package
05:16:57 <copumpkin> CakeProphet: fix isn't doing anything for you there
05:17:17 <copumpkin> > id undefined
05:17:17 <lambdabot> *Exception: Prelude.undefined
05:17:18 <oerjan> CakeProphet: fix determines strictness, not bottomness
05:17:20 <copumpkin> oh look, it's undefined!
05:17:39 <oerjan> (+) 1 is a perfectly nonbottom function, but fix ((+) 1) is bottom
05:17:47 <CakeProphet> ah right.
05:17:56 <copumpkin> oerjan: not necessarily
05:18:03 <shachaf> @let isBottom _ = False
05:18:04 <lambdabot> Defined.
05:18:04 <CakeProphet> I think I was just getting strictness and bottom confused :P
05:18:05 <oerjan> for Integer blah
05:18:08 <copumpkin> :)
05:18:12 <Sgeo> shachaf, hehe
05:18:20 <copumpkin> @hackage spoon
05:18:20 <lambdabot> http://hackage.haskell.org/package/spoon
05:18:31 <copumpkin> teaspoon :: a -> Maybe a
05:18:47 <copumpkin> the power of bottom is yours
05:18:49 <shachaf> If that's teaspoon, I don't know if I want to know what tablespoon is.
05:18:50 <oerjan> CakeProphet: also it's not necessary to use fix, all you need is to apply it to undefined
05:18:59 <copumpkin> spoon :: NFData a => a -> Maybe a
05:19:00 <shachaf> copumpkin: Does it catch any _|_ which throws an exception?
05:19:05 <CakeProphet> so a value being bottom /does not/ determine whether or not your program halts.
05:19:09 <CakeProphet> when its evaluated.
05:19:12 <shachaf> weakHeadNormalSpoon
05:19:14 <copumpkin> shachaf: yeah, exceptions that were deemed to be useful
05:19:23 <shachaf> Useful?
05:19:40 <copumpkin> shachaf: binary, for example, provides no way to recover from errors
05:19:49 <copumpkin> a lot of libraries throw error when they shouldn't
05:19:52 <CakeProphet> oerjan: I thought bottom was all about termination.
05:19:55 <copumpkin> spoon lets you make them behave nicely
05:19:55 <shachaf> Does it catch e.g. <<loop>>?
05:19:58 <CakeProphet> rather, lack thereof
05:20:00 <copumpkin> shachaf: nah
05:20:03 <shachaf> Aw.
05:20:17 <shachaf> Some _|_ checker you have. Doesn't even catch <<loop>>.
05:20:27 <copumpkin> <<loop>> really doesn't happen all that often
05:20:27 <CakeProphet> heh
05:20:32 <Sgeo> <<loop>>?
05:20:41 <copumpkin> Sgeo: an infinite loop in your program
05:20:43 <Sgeo> Is that when BLACKHOLE is reached when evaluating BLACKHOLE?
05:20:49 <copumpkin> yeah
05:20:53 <shachaf> :-(
05:20:54 <copumpkin> on a non-threaded runtime
05:20:56 <oerjan> CakeProphet: it's about "normal" termination, so exceptions like undefined also count
05:21:04 <Sgeo> Cool
05:21:06 <shachaf> I was typing up an elaborate explanation, but you just can't fool people these days.
05:21:08 <CakeProphet> oerjan: right, returning, so to speak.
05:21:19 <CakeProphet> oerjan: a value that is bottom does not produce a normal form.
05:21:21 <Sgeo> shachaf, keep doing it, I'll bet it's funny
05:21:30 * shachaf is demotivated.
05:21:54 <oerjan> basically, if you can give it the type forall a. a, then it's definitely a bottom even if it doesn't loop
05:21:58 <CakeProphet> oerjan: and (\x -> undefined) does not produce a normal form, right?
05:22:09 <oerjan> CakeProphet: not when applied
05:22:21 <CakeProphet> oerjan: well.. right
05:22:27 * Sgeo is impatient for April 1st
05:22:36 <Sgeo> Official release of my Haskell tutorial
05:22:45 <copumpkin> (\x -> x x) (\x -> x x)
05:22:49 <copumpkin> embrace the power of the loop!
05:22:52 <shachaf> oerjan: Not if it's unsafeCoerce something!
05:23:03 <monqy> i love (\ x -> x x) (\ x -> x x)
05:23:04 <shachaf> @pl (\x -> x x) (\x -> x x)
05:23:08 <lambdabot> ap id id (ap id id)
05:23:08 <lambdabot> optimization suspended, use @pl-resume to continue.
05:23:16 <copumpkin> shachaf: that's right, go ahead, kill lambdabot
05:23:18 <monqy> thanks lambdabot
05:23:23 <CakeProphet> oerjan: (\x -> undefined) can be rewritten further, right?
05:23:27 <shachaf> monqy: Thambdabot?
05:23:38 <copumpkin> CakeProphet: why are you focussing on const undefined so much?
05:23:44 <monqy> thumbdabot
05:23:46 <CakeProphet> copumpkin: because it's the example that confuses me.
05:23:55 <copumpkin> it doesn't have any special behavior at all
05:24:08 <shachaf> copumpkin: It's the only strict function that doesn't force its argument!
05:24:16 <shachaf> That's kind of special.
05:24:20 <oerjan> shachaf: well if you're using unsafe functions, obviously you've reached bottom already
05:24:30 <shachaf> oerjan: It's true. :-(
05:24:32 <copumpkin> shachaf: I wouldn't call it strict
05:24:37 * shachaf injects some more _|_
05:24:46 <shachaf> copumpkin: No?
05:24:52 <CakeProphet> copumpkin: it's the general case of not having a normal form when applied, which is what is confusing me.
05:24:53 <shachaf> What definition do you use for "strict", then?
05:25:02 <copumpkin> just because we test against undefined to talk about strictness, doesn't mean returning undefined makes something strict
05:25:16 <shachaf> copumpkin: I thought a strict function was a function f such that f _|_ = _|_
05:25:42 <CakeProphet> copumpkin: so it's actually application of undefined to a value that determines if it's bottom?
05:25:58 <copumpkin> CakeProphet: it's whether it doesn't terminate when evaluated
05:26:08 -!- oerjan has quit (Quit: You sort out this mess yourself).
05:26:12 <copumpkin> lol
05:26:15 <shachaf> Well, where it doesn't return.
05:26:17 <CakeProphet> I think I understand.
05:26:19 <shachaf> s/where/whether/
05:26:39 <copumpkin> shachaf: it feels wrong to say that when something is const undefined, it's strict
05:26:54 <shachaf> copumpkin: I thought this was a classic example in #haskell.
05:26:59 * copumpkin shrugs
05:26:59 <CakeProphet> copumpkin: it's not.
05:27:20 <copumpkin> I thought the point of talking about strictness was to evaluate what it did to its arguments
05:27:24 <copumpkin> that clearly does nothing to its argument
05:27:29 <copumpkin> so that definition seems unsatisfactory
05:28:03 <shachaf> I've said the same thing before.
05:28:09 <shachaf> But denotationally _|_ is _|_.
05:28:12 <copumpkin> sure
05:28:12 <CakeProphet> but it is bottom, because it can't produce a normal form. const undefined becomes (\x -> undefined) which is not a normal form.
05:28:17 <shachaf> And "strict" is defined denotationally.
05:28:35 <copumpkin> CakeProphet: how is it not?
05:29:14 <copumpkin> shachaf: I had this discussion a year or so ago with people regarding spoon and why the denotation view of strictness is bullshit because we can actually distinguish things operationally, and people should stop masturbating to denotation
05:29:26 <copumpkin> :P
05:29:33 <shachaf> copumpkin: Don't let conal hear you say that!
05:29:37 <copumpkin> lol
05:29:39 * shachaf is in vague agreement.
05:29:45 <CakeProphet> copumpkin: hmmm, well is undefined x considered a valid reduction of (\x -> undefined)?
05:29:51 <copumpkin> no
05:29:53 <copumpkin> there is no application
05:29:56 <CakeProphet> well, there you go.
05:29:57 <shachaf> On the other hand this is such a corner case that it doesn't really matter.
05:29:57 <CakeProphet> >_>
05:30:00 <copumpkin> no, it's normal form
05:30:06 <copumpkin> the same way (\x -> 5) is
05:30:15 <copumpkin> you can't beta reduce a lambda without an application
05:30:37 <CakeProphet> ah wait
05:30:38 <CakeProphet> yes it is :P
05:30:45 <CakeProphet> there's no term
05:30:46 <copumpkin> the issue is the one I keep talking about
05:30:48 <copumpkin> (\x -> undefined x)
05:30:48 <CakeProphet> that it reduced to.
05:30:55 <CakeProphet> *reduces
05:30:56 <copumpkin> that's an eta expanded form of undefined
05:31:02 <copumpkin> which should be indistinguishable from undefined
05:31:10 <copumpkin> but is not
05:31:22 <CakeProphet> copumpkin: right right I see nevermind
05:31:22 <shachaf> It is if you're not seqist.
05:31:32 * copumpkin lives in agdaland
05:31:33 <copumpkin> fuck seq
05:31:41 <copumpkin> seq has no power over me!
05:31:45 <CakeProphet> yeah evaluation who needs it!
05:31:45 <copumpkin> for I have no bottom
05:31:52 <copumpkin> oh I evaluate plenty
05:31:55 <copumpkin> just never to bottom
05:32:31 <shachaf> When copumpkin evaluates an infinite loop, it's never _|_.
05:32:36 <shachaf> copumpkinfacts
05:32:44 <copumpkin> :D
05:32:46 <CakeProphet> copumpkin: is _|_ a normal form?
05:33:05 <CakeProphet> oh wait I see
05:33:13 <CakeProphet> it is entirely meaningless to refer to a value being _|_
05:33:18 <CakeProphet> because bottom inherently does not have any values.
05:33:26 <coppro> uh no
05:33:34 <copumpkin> hmm, I think we're confusing different uses of _|_ here
05:33:46 <coppro> bottom is the value of all types
05:33:51 <CakeProphet> nope
05:33:57 <coppro> yes
05:34:06 <coppro> it has no meaning as a value
05:34:14 <CakeProphet> I was under the impression _|_ is the empty type
05:34:19 <coppro> but types contain values and it's a member of all types
05:34:19 <copumpkin> it is, in a different usage
05:34:24 <CakeProphet> hmmm okay.
05:34:29 <CakeProphet> in Haskell.
05:34:30 <coppro> that interpretation works too, but isn't as clean
05:34:34 <copumpkin> _|_ is the bottom element in the ordering of definedness
05:34:38 <copumpkin> in unrelated uses, it also means false
05:34:43 <copumpkin> and the empty set, by C-H
05:34:50 <copumpkin> damn overloaded symbols
05:34:58 <CakeProphet> copumpkin: _|_ is false in relation to decision problems right?
05:35:13 <copumpkin> in agda, it's just used as a general falsity
05:35:18 <copumpkin> it is an empty set
05:35:27 <copumpkin> you might also call an initial object in a category _|_
05:35:38 <copumpkin> which does tie it back with the bottom element in the ordering of definedness
05:35:51 <copumpkin> but they're different sorts of categories
05:36:23 <shachaf> And the terminal object ‾|‾?
05:37:28 <copumpkin> ⊤⊥
05:37:39 <CakeProphet> to me "a function that cannot return a value has the return type of bottom" is similar to saying "there is no term that this term can reduce to" but I'm pretty sure they're separate and completely unrelated.
05:38:12 <copumpkin> in one usage, _|_ is a _value_ or something that resembles a value, and it inhabits all types
05:38:20 <shachaf> copumpkin: I was already doing a Unicode search anyway. But for the sake of tradition I decided to stick with the three-character version.
05:38:25 <CakeProphet> copumpkin: the Haskell usage right?
05:38:25 <copumpkin> to talk about the semantics of the language, an ordering of values is introduced
05:38:32 <copumpkin> and _|_ is considered to be less than all other values
05:38:33 <copumpkin> yeah
05:38:44 <copumpkin> then people talk about haskell maintaining monotonicity
05:38:49 <shachaf> What would ‾|‾ mean in Haskell?
05:38:58 <copumpkin> in that functions only ever decrease in definedness
05:39:03 <copumpkin> strict ones, anyway
05:39:47 <CakeProphet> shachaf: clearly the most defined value :P
05:41:07 <CakeProphet> shachaf: okay so.... are terms of type _|_ all normal forms?
05:41:09 <CakeProphet> er
05:41:15 <CakeProphet> s/shachaf: //
05:41:28 <CakeProphet> assuming that all terms have an associated type.
05:43:24 <CakeProphet> I think what is meant by "_|_ inhabits all types" is that _|_ is a subtype of all types, similar to how the empty set is a subset of all sets.
05:43:33 <CakeProphet> however, _|_ contains no values.
05:43:48 <shachaf> _|_ isn't a type.
05:43:54 <shachaf> It's a value.
05:44:01 <CakeProphet> >_>
05:44:03 <shachaf> Bool is inhabited by three values: True, False, and _|_
05:44:17 <shachaf> Therefore you can say True :: Bool, False :: Bool, undefined :: Bool
05:44:22 <shachaf> Or x :: Bool; x = x, or whatever.
05:44:25 <copumpkin> this is because haskell is non-strict, so all values might be arbitrarily complex calculations that do not terminate
05:44:46 <CakeProphet> ah okay.
05:45:13 <CakeProphet> so in Haskell, thunks count as values, even though they may return nothing.
05:46:01 <CakeProphet> shachaf: but no, _|_ really is a type.
05:46:04 <CakeProphet> I promise.
05:46:15 <copumpkin> it is a type if you overload the symbol to also mean a type
05:46:23 <copumpkin> in this context, it's meaningless to call it a type
05:46:27 <CakeProphet> I'm talking about in type theory
05:46:30 <shachaf> It is a crocodile if you overload the symbol to also mean a crocodile.
05:46:31 <CakeProphet> bottom is the empty type.
05:47:12 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
05:47:15 <copumpkin> we typically don't call it bottom in that context
05:47:17 <CakeProphet> it's just that in Haskell values can include things that are not in a normal form.
05:47:29 <copumpkin> they're unrelated in this context
05:47:49 * shachaf thinks of non-strictness as much more reasonable than strictness.
05:47:59 <shachaf> I wonder if that's the default way of thinking of things or if all the Haskell got to me.
05:48:22 <CakeProphet> shachaf: depends on the context.
05:48:53 <CakeProphet> for most of the history of programming, non-strict as reasonable is certainly not the default way of thinking about things.
05:49:00 <CakeProphet> in math, sure.
05:50:34 <shachaf> I mean in the context of functions.
05:51:35 <CakeProphet> so basically I think the value _|_ that's referred to in Haskell is completely different from the mathematical meaning of _|_ as a type. it becomes useful to think about _|_ as a value precisely because non-strictness allows you to manipulate values that do not actually return any result.
05:52:14 <shachaf> CakeProphet: I just like my eta-equivalence, man.
05:52:17 <shachaf> Which is why I hate seq.
05:54:11 <copumpkin> CakeProphet: that's because, as I keep saying, it isn't being used as a type there
05:54:18 <CakeProphet> copumpkin: right.
05:54:20 <copumpkin> if you want the mathematical backing to its usage there, look in order theory
05:54:34 <copumpkin> the category usually used to model haskell's behavior is CPO\bot
05:58:25 <CakeProphet> :t (\x -> undefined)
05:58:26 <lambdabot> forall t a. t -> a
05:59:15 <CakeProphet> :t (undefined, undefined)
05:59:16 <lambdabot> forall a a1. (a, a1)
05:59:21 <CakeProphet> heh.
05:59:39 <shachaf> CakeProphet is easily amused.
05:59:49 <CakeProphet> my brain hurts.
05:59:49 <CakeProphet> :P
06:00:18 <CakeProphet> undefined doesn't have the same type as undefined.
06:00:29 <CakeProphet> it can.
06:00:33 <CakeProphet> but doesn't have to.
06:01:45 <copumpkin> it's universally quantified
06:01:47 <copumpkin> :t (5, 5)
06:01:48 <lambdabot> forall t t1. (Num t, Num t1) => (t, t1)
06:01:58 <CakeProphet> right.
06:02:37 <shachaf> forall a b. (a,b) = (forall a. a, forall b. b)
06:03:35 <CakeProphet> I think it's fair to say that the value _|_ has the type _|_
06:03:47 <shachaf> forall a b. (a -> b -> r) -> r = ((forall a. a) -> (forall b. b) -> r) -> r
06:03:54 <shachaf> = (forall a b. a -> b -> r) -> r ?
06:04:02 <shachaf> No.
06:04:33 <shachaf> Or, hmm.
06:04:39 <shachaf> What would that correspond to in non-CPS?
06:05:21 <CakeProphet> @djinn forall a b. (a -> b -> r) -> r
06:05:22 <lambdabot> -- f cannot be realized.
06:05:25 <CakeProphet> dunno.
06:05:26 <CakeProphet> :P
06:06:30 <copumpkin> CakeProphet: AAAH
06:06:35 <CakeProphet> copumpkin: what?
06:06:41 <copumpkin> haskell does not have a _|_ type
06:06:45 <CakeProphet> copumpkin: sure it does.
06:06:49 <CakeProphet> it's just not written anywhere.
06:06:53 <copumpkin> no it doesn't
06:06:55 <copumpkin> all types are inhabited
06:07:08 <CakeProphet> so is _|_, in this case, weirdly. :P
06:07:11 <copumpkin> _|_ : forall a. a
06:07:16 <CakeProphet> yes.
06:07:25 <copumpkin> _|_ is not inhabited, and it's a type error to say that it is
06:07:27 <shachaf> I mean, the two are obviously not equivalent.
06:07:39 <copumpkin> because it is not a type, and values are not inhabited
06:07:41 <Sgeo> inhabited?
06:07:47 <copumpkin> a set that contains elements
06:07:50 <Sgeo> Does data Foo count as inhabited?
06:07:55 <copumpkin> yes
06:08:05 <CakeProphet> Sgeo: it contains _|_!!! :P
06:08:12 <copumpkin> newtype Z = Z Z
06:08:27 <copumpkin> that contains as many inhabitants as data Foo does
06:08:36 <Sgeo> I thought newtype was strict?
06:08:36 <shachaf> An infinite number!
06:08:51 <shachaf> Sgeo: A newtype's constructor is strict, yes.
06:09:01 <shachaf> But you can't ever construct that newtype.
06:09:10 <copumpkin> fix Z
06:09:20 <copumpkin> or undefined
06:09:23 <copumpkin> they give the same answer
06:09:30 <Sgeo> Oh, so for newtype Newtype = Newtype MyType
06:09:31 <shachaf> copumpkin: Denotationalist!
06:09:42 <CakeProphet> shachaf: ismist!
06:09:43 <Sgeo> You don't get both Newtype _|_ and _|_, just _|_?
06:09:47 <shachaf> Not so high-and-mightily operational now, are we?
06:10:06 <copumpkin> we can't distinguish undefined and fix Z
06:10:14 <CakeProphet> Sgeo: NewType _|_ is _|_
06:10:18 <shachaf> spoon
06:10:32 <copumpkin> fair enough
06:10:34 <copumpkin> :)
06:10:41 <Sgeo> CakeProphet, indeed, unlike if data was used instead of newtype, where NewType _|_ would be distinct from _|_
06:10:54 <CakeProphet> nope.
06:11:01 <shachaf> CakeProphet: Nope?
06:11:11 <shachaf> In data Z = Z Z, Z undefined =/= undefined
06:11:16 <CakeProphet> I thought strictness was irrelevant to _|_
06:11:21 <copumpkin> not at all
06:11:25 <shachaf> What?
06:11:48 <CakeProphet> I don't know I think I've fatigued my brain muscles trying to wrap my head around this.
06:12:05 <shachaf> Are you talking about _|_ the type or _|_ the crocodile?
06:12:12 <CakeProphet> the crocodile.
06:12:16 <shachaf> Oh.
06:12:17 <copumpkin> krokodil
06:12:23 <shachaf> Yes, the crocodile doesn't care about strictness.
06:12:49 <CakeProphet> I'm back in Haskell land where the empty type is not a type.
06:13:01 <Sgeo> CakeProphet, empty type doesn't exist
06:13:11 <Sgeo> There's (), which contains () and _|_
06:13:12 <CakeProphet> if you say so.
06:13:22 <shachaf> () is the anti-_|_
06:13:28 <Sgeo> TOP!
06:13:39 <shachaf> http://www.youtube.com/watch?v=QWgaToemGkY
06:14:09 <CakeProphet> Sgeo: saying that the empty type does not exist is kind of like saying the empty set does not exist.
06:14:11 <shachaf> Hmm, kind of noisy.
06:14:17 <shachaf> CakeProphet: No. We're talking about Haskell.
06:14:21 <CakeProphet> shachaf: right
06:14:32 <Sgeo> Haskell is not pure math.
06:14:33 <CakeProphet> 01:12 < CakeProphet> I'm back in Haskell land where the empty type is not a type.
06:15:06 <CakeProphet> it is not in Haskell, it is elsewhere.
06:15:13 <CakeProphet> Sgeo said "the empty type does not exist"
06:15:20 <CakeProphet> therefore, only Haskell exists? :P
06:15:43 <copumpkin> languages that have the _|_ type typically don't have the _|_ value :)
06:15:46 <copumpkin> and vice versa
06:16:08 <CakeProphet> works for me.
06:16:10 <copumpkin> however, from another perspective
06:16:17 <copumpkin> the _|_ type itself is a value in those languages
06:16:27 <copumpkin> but with a completely different denotation as the _|_ value from haskell
06:16:52 <copumpkin> in Agda, _|_ : Set
06:17:16 <shachaf> Surely Agda calls it ⊥?
06:17:33 <CakeProphet> perhaps I need to understand the denotational semantics of Haskell to understand this bottom business.
06:17:48 * Sgeo knows nothing about denotational semantics
06:18:14 <CakeProphet> but from the perspective of type theory, it sounds incredibly silly to say that Haskell has no bottom type.
06:18:28 * Sgeo knows nothing about type theory
06:20:27 <CakeProphet> but yes, I was wrong to say that the _|_ value has the _|_ type, that's equally silly.
06:21:05 <copumpkin> well, in a different type theory it might make sense
06:21:12 <copumpkin> a subtyping theory with singleton types
06:21:40 <copumpkin> only total languages can have empty types
06:23:30 <CakeProphet> what's the best type theory to use when talking about Haskell?
06:24:22 <copumpkin> well, people usually model it in system Fomega
06:24:36 <copumpkin> but that doesn't really capture the bottom-ness
06:24:45 <copumpkin> people usually gloss over that on the type theory level
06:24:51 -!- zzo38 has joined.
06:24:53 <copumpkin> and then try to capture it in semantics
06:25:08 <copumpkin> by saying something like Hask = CPO\bot
06:27:07 <CakeProphet> copumpkin: so Haskell is strongly normalizing?
06:27:13 <copumpkin> nope
06:27:21 <CakeProphet> ah okay.
06:27:51 <zzo38> Today, I played Dungeons & Dragons game. I managed to break into a debtor's prison, find out who one of them was in debt to and by how much, got arrested, guards trying to take me to the other prison, some wizards tried to restrict me but I stunned them, the guard try to attack me but I stunned them too, dragged them to the federal prison, told them to stand up (but they couldn't), got into a holding cell.
06:28:03 <CakeProphet> copumpkin: ah but Haskell's type system is.
06:28:04 <CakeProphet> ?
06:28:11 <zzo38> (This is a deliberate parts of my plan)
06:28:13 -!- pikhq_ has joined.
06:28:32 -!- pikhq has quit (Ping timeout: 276 seconds).
06:29:21 <copumpkin> CakeProphet: sort of, in theory
06:29:40 <copumpkin> there are some weirdnesses in the implementations regarding type aliases and so on
06:29:48 <copumpkin> which they try hard _not_ to normalize
06:31:01 -!- Jafet has joined.
06:32:29 <CakeProphet> copumpkin: that's... weird.
06:32:50 <copumpkin> if you wrote type String = [Char]
06:32:54 <copumpkin> you presumably like the name String
06:33:03 <CakeProphet> oh for error reporting right?
06:33:08 <copumpkin> so you want to see String in type errors where possible
06:33:31 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:33:41 <CakeProphet> copumpkin: but it doesn't really change anything to do that.
06:34:07 <copumpkin> yeah, all types could have a normal form if we wanted them to
06:34:53 <CakeProphet> you'd just get a lot more RealWorld and #'s :P
06:36:07 <copumpkin> hmm, not even that
06:36:12 <copumpkin> IO is still a newtype
06:36:23 <copumpkin> so you typically wouldn't want to see through those
06:36:31 <copumpkin> at least, you wouldn't need to
06:40:15 <CakeProphet> it occurs to me
06:40:39 <CakeProphet> why are boolean values not expressed in Haskell as they are in the LC
06:41:08 <copumpkin> you mean as functions?
06:41:09 <CakeProphet> how often do you need Eq and Ord for Bool? I suppose Read and Show are valuable.
06:41:13 <CakeProphet> copumpkin: yes
06:41:27 <copumpkin> because we have ADTs and they're convenient
06:41:40 <copumpkin> /= on Bool is xor
06:41:59 <copumpkin> == is biconditional implication :P
06:42:19 <CakeProphet> (a == b) c d is pretty convenient too though.
06:42:39 <copumpkin> that's what if is for
06:42:44 <copumpkin> you could say the same about numbers
06:42:48 <copumpkin> 5 (+1) 0
06:42:52 <copumpkin> that should be 5!
06:43:01 <CakeProphet> > 5 (+1) 0
06:43:02 <lambdabot> 5
06:43:05 <CakeProphet> copumpkin: oh look it is!
06:43:07 <CakeProphet> :P
06:43:08 <copumpkin> we like to write explicit eliminators
06:43:09 <copumpkin> lol
06:43:12 <copumpkin> okay fine
06:43:14 <copumpkin> > 5 (+2) 0
06:43:15 <lambdabot> 5
06:43:16 <copumpkin> should be 10
06:43:39 * Sgeo would expect shachaf to set that sort of trap
06:43:51 <CakeProphet> not quite as convenient as Bool being church booleans I think.
06:44:05 <shachaf> copumpkin: You could say the same about floating point numbers.
06:44:11 <Sgeo> Oh, I see what copumpkin wants
06:44:12 <shachaf> But *please* don't. Please.
06:44:18 <copumpkin> what do I want?
06:44:22 <copumpkin> I already have what I want
06:44:24 <CakeProphet> but, having instances for bool is probably more practically useful, especially considering that if statements aren't really troublesome enough to need replacing by regular function application
06:44:27 <copumpkin> explicit eliminators in the form of pattern matching
06:44:28 <Sgeo> coppro, 5 (+2) 0 to be 10
06:44:31 <Sgeo> I see what that means
06:44:38 <copumpkin> oh :)
06:45:17 <Sgeo> Should totally write a Num instance for (a -> a) that makes fromInteger do that
06:45:42 <CakeProphet> good luck with that.
06:45:44 <shachaf> Sgeo: Make sure you make negative numbers work.
06:45:51 <zzo38> I thought of that thing too. But the type of Church numbers is (a -> a) -> (a -> a) I think.
06:46:15 <copumpkin> yep
06:46:31 <Sgeo> Write a Num instance for (a -> a) -> (a -> a)
06:47:59 <zzo38> What would you expect negative numbers to do here? It would only work if there was a type that can only hold bijective functions (something I have asked for in the past).
06:48:28 <copumpkin> (a -> a) -> (a -> a) -> a
06:48:33 <Sgeo> _|_, clearly
06:48:36 <copumpkin> one approach to the negatives
06:48:51 <copumpkin> I forgot an a
06:49:09 <copumpkin> (a -> a) -> (a -> a) -> (a -> a)
06:49:14 <copumpkin> bettar
06:50:17 <zzo38> Sgeo: Yes it could be, if you do fromInteger x | x < 0 = error "Negative church numbers is not allowed" but that doesn't really count as "make negative numbers work", I think.
06:51:10 <copumpkin> with my scheme
06:51:20 <copumpkin> n pred succ 0 = id
06:52:01 <shachaf> pred :-(
06:52:13 <shachaf> Oh, wait.
06:53:18 <copumpkin> I may be oversimplifying it though
06:57:42 <zzo38> Yes I realized /= on Bool is xor and have used that in some programs.
06:58:04 <shachaf> <= is implication
06:58:23 <zzo38> I used it to make a monoid for Equivalence from the contravariant functors package.
06:58:33 <zzo38> shachaf: O, yes, you are correct. I have not realized that, before.
06:58:34 <CakeProphet> > False <= True
06:58:35 <lambdabot> True
06:58:40 <CakeProphet> > True <= Falsee
06:58:41 <lambdabot> Not in scope: data constructor `Falsee'
06:58:43 <CakeProphet> > True <= False
06:58:44 <lambdabot> False
06:58:44 <CakeProphet> ha.
06:58:55 * CakeProphet easily amused
06:58:57 <shachaf> Well, fine, it *would* be implication if data Bool = True | False deriving Ord
06:59:28 <copumpkin> > join (liftA2 (<=)) [False, True]
06:59:28 <lambdabot> [True,True,False,True]
06:59:42 <zzo38> You can use other comparison operators, too.
07:00:40 <copumpkin> > join (liftA2 (>=)) [False, True]
07:00:40 <copumpkin> hum
07:00:41 <lambdabot> [True,False,True,True]
07:01:05 <copumpkin> it even looks like implication
07:01:15 <CakeProphet> copumpkin: how is it not implication?
07:01:28 <shachaf> copumpkin: It *would*, if only True < False!
07:01:51 <zzo38> Then just reverse the comparison operator.
07:01:56 <CakeProphet> join (liftA2 (<)) [False, True]
07:01:57 <CakeProphet> > join (liftA2 (<)) [False, True]
07:01:58 <lambdabot> [False,True,False,False]
07:02:05 <CakeProphet> > join (liftA2 (>)) [False, True]
07:02:06 <lambdabot> [False,False,True,False]
07:02:49 <CakeProphet> > not (True > True)
07:02:50 <lambdabot> True
07:02:56 <CakeProphet> > not (True > False)
07:02:57 <lambdabot> False
07:03:04 <CakeProphet> > not (False > True)
07:03:05 <lambdabot> True
07:03:07 <CakeProphet> > not (False > False)
07:03:08 <lambdabot> True
07:03:52 <CakeProphet> how is that not implication again? :P
07:04:02 <shachaf> Well, it is.
07:04:14 <shachaf> zzo38: But I like the arrow shape.
07:04:44 <zzo38> shachaf: Well, *too bad*
07:04:57 <CakeProphet> > let (->) = id in id -> 2
07:04:58 <lambdabot> <no location info>: parse error on input `->'
07:05:00 <CakeProphet> :(
07:05:27 <shachaf> CakeProphet isn't satisfied with (->) working for types and kinds.
07:05:33 <shachaf> It has to be a value-level operator too.
07:05:39 <CakeProphet> yes!
07:06:10 <shachaf> And what would it apply to? (-3)-types?
07:06:19 <CakeProphet> > let (-->) = id in id --> 2
07:06:19 <lambdabot> 2
07:06:39 <shachaf> copumpkin: I ended up not fully making sense of dolio's slides.
07:06:43 <CakeProphet> > let (-->) = =< in True --> False
07:06:44 <lambdabot> <no location info>: parse error on input `=<'
07:06:48 <CakeProphet> > let (-->) = (=)< in True --> False
07:06:49 <copumpkin> shachaf: oh?
07:06:49 <lambdabot> <no location info>: parse error on input `='
07:06:49 <CakeProphet> bah
07:06:54 <CakeProphet> > let (-->) = (=<) in True --> False
07:06:55 <lambdabot> Not in scope: `=<'
07:06:56 * CakeProphet tired
07:07:04 <zzo38> I wrote some classes that you can list all values of some types, including Bool and () and Zero (a uninhabited type) and sum and product types of those types, and functions of those types (function type could be, exponent type). Now it can also make Enum, Bounded, Eq, of those specific function types.
07:07:13 <CakeProphet> > let (-->) = (<=) in True --> False
07:07:14 <lambdabot> False
07:07:19 <shachaf> copumpkin: Mainly lacking background, I think. It also made more sense when dolio was talking. :-)
07:07:20 <copumpkin> zzo38: I have a package on hackage that does that too
07:07:28 <copumpkin> shachaf: I can explain stuff if you want
07:07:35 <copumpkin> @hackage enumerable
07:07:35 <lambdabot> http://hackage.haskell.org/package/enumerable
07:08:11 <CakeProphet> > let (-->) = (<=); id = (-->) True in map id [False, True]
07:08:12 <lambdabot> [False,True]
07:09:18 <zzo38> One reason I wanted types holding only bijective functions is to use it to represent equality of numbers in the type level. The other reason is to do some experimenting with reversible programming.
07:09:29 <shachaf> copumpkin: It's probably a matter of going over it in detail. Probably everything I want is talked about in one of the many papers on my to-read list. :-)
07:09:38 <copumpkin> fair enough :)
07:09:39 * shachaf 's to-read list is an enumeration of every possible paper.
07:09:41 <zzo38> O, the other type I made to list all value, is Maybe type. It can be used as a successor for numbers in type level
07:09:54 <CakeProphet> zzo38: reversible programming would be very cool.
07:11:09 <CakeProphet> and probably very very space leaky
07:11:13 <zzo38> I also made a Classical class for a few types to make classical logic in types (like Curry-Howard, but classical logic instead of only intuitionistic; since they are restricted to instances of the class, te law of excluded middle could be proven individually for each type)
07:11:39 <CakeProphet> as it pretty much implies that data is never destroyed.
07:12:05 <copumpkin> CakeProphet: it doesn't necessarily. It just means you need to know how to go backwards
07:12:09 <zzo38> I think it doesn't need to be space leaky all the time, since you could have a result which you go backward
07:12:15 <copumpkin> I'm still not sure how a _type_ of invertible functions would get checked, though
07:12:30 <copumpkin> without you providing an explicit proof that you're bijective
07:13:44 <zzo38> copumpkin: Well, my idea is to restrict what kind of things you can use in its definition, and ensure all outputs are defined for any defined input, and then have an implicit cast from bijective functions to normal functions so that they can be used as normal functions.
07:14:02 <copumpkin> so I mean
07:14:09 <copumpkin> f 0 = 0
07:14:11 <copumpkin> f (suc n) = n
07:14:12 <CakeProphet> copumpkin: that either involves computing with a function a -> a that is bijective or a -> SomeTypeWithAStoredSomewhere. Basically memory can be deleted if it's no longer by the values that used it to be computed.
07:14:27 <CakeProphet> s/by/used by/
07:14:37 <copumpkin> my function is not bijective
07:14:53 <copumpkin> how would you disallow it if I tried to give it the type of a bijective function Nat -> Nat?
07:15:21 <zzo38> However, there should also be some way to use it to prove that 1 is unequal to 2, so that you can prove the type Not (Maybe Zero <-> Maybe (Maybe Zero)) where data Zero; type Not t = t -> Zero;
07:15:35 <copumpkin> you should come to #agda :)
07:16:06 <copumpkin> although no language I know allows you to prove things like that _and_ allows subtyping
07:16:21 <copumpkin> which seems to be what you want for bijective functions
07:17:07 <zzo38> copumpkin: It would require things checked at compile time, one thing is that case would be used, and restrictions on ensuring everything in unique; there are way to do that, that I have thought of. Although I might still have made some mistake
07:17:51 <copumpkin> zzo38: I'm not sure it's decidable in general, though. You could probably come up with some good heuristics but you typically want a type system to have an easy mental model
07:18:12 <copumpkin> in agda you could just prove that your function is bijective
07:18:27 <copumpkin> and it still feels like haskell :)
07:18:45 <copumpkin> anyway, I need to sleep :(
07:18:52 <zzo38> (One requirement would be that unbounded types could be passed only unchanged, and *must* be passed exactly once to the output if the input contains it.)
07:19:06 <copumpkin> ah, that's substructural typing
07:19:19 <copumpkin> something that most of these languages don't support
07:19:41 <copumpkin> it's the secret sauce that we need to make DList ~= List
07:22:41 <zzo38> In addition, bijective functions would be able to use other bijective functions, but not functions that aren't bijective. Constructors and field names in a newtype are automatically considered bijective.
07:23:02 <zzo38> And there also ought to be something usable with bijective functions that allows you to access its reverse.
07:24:08 <CakeProphet> zzo38: perhaps if you could make bijectiveness implicit in the semantics of the language.
07:24:18 <CakeProphet> then it's always guaranteed.
07:25:33 <CakeProphet> but that would extremely memory expensive.
07:26:09 <CakeProphet> basically all data types would have an implicit slot for "everything that was used in creating me"
07:26:34 <zzo38> CakeProphet: Yes, that is kind of what I was trying to explain to make. However, it would be working only at compile-time, and only for functions marked as bijective would have such requirements; however, you could implicitly cast bijective function type to normal function type if you do not need that.
07:26:45 <zzo38> CakeProphet: The ways I was thinking of, no data types would need such a slot.
07:27:25 <zzo38> Because it would be implicit in the syntax used for making bijective functions, and the compile-time semantics, but not run-time semantics.
07:32:01 <zzo38> In addition, "everything that was used in creating me" is not really what a mathematical bijective function does anyways!
07:33:50 <CakeProphet> zzo38: right but that's what you would need if you want every value to be reversible without knowledge of a reversing function.
07:37:13 <zzo38> I am not trying to make every value reversible, however. So the type (Zero <-> Maybe Zero) (where Zero means uninhabited type and <-> means bijective function) is uninhabited.
07:38:09 <CakeProphet> ah, yes.
07:39:16 <zzo38> Knowledge of a reversing function would not even be needed at runtime either; because the function to access its inverse would be processed at compile-time to get its reverse, and if it is applied to a variable then the program is adjusted at compile-time to pass both the function and its inverse to the function taking that variable as an argument.
07:40:08 <CakeProphet> right, the question is: can you make any guarantees that the inverse function is a true inverse.
07:40:59 <zzo38> The type (x <-> x) for a specific x represented as a number can mean the factorial of x when it is used as a number.
07:41:45 <zzo38> CakeProphet: With the ideas I was thinking of, the compiler would automatically be able to calculate the inverse if you followed specific rules, where you must follow those rules for the compiler to accept it as a bijective function too.
07:44:17 <zzo38> Such as, you would have to build it up from a case block without duplicates, without inexhaustive patterns, only other bijective functions can be called, no pattern guards, no undefined/error, and it easily check all outputs are also unique.
07:46:23 <CakeProphet> hmmm actually I just got an idea for a very simple graph-based programming language that's reversible.
07:46:37 <CakeProphet> but also inherently a memory leak. :P
07:47:09 <CakeProphet> well, no. you could manually manage memory if you had a way to delete graph nodes.
07:48:29 <CakeProphet> if a predecessor node (a node that was computed one step previously in the program's execution) does not point to any present nodes, then it can be considered inaccesible; repeat recursively back to the beginning of the program.
07:49:48 <zzo38> Another requirement would be that all variables occur exactly once in the output.
07:50:53 <CakeProphet> valid operations would include: reverse a node to the node that produced it
07:51:09 <CakeProphet> if you didn't actually free any memory ever, another valid operation would be: reverse a single execution step.
07:52:50 * CakeProphet will have to examine this further on a later date.
07:52:53 <CakeProphet> good night.
07:53:48 <zzo38> I think bijective functions form a group.
07:54:16 <zzo38> In addition, the reversible esolangs Burro and Revaver2pi also have their programs form a group.
08:09:09 -!- copumpkin has quit (Ping timeout: 244 seconds).
08:09:27 <Sgeo> Would it make sense to represent a GoL grid in Haskell with an infinite 3d data structure?
08:09:34 -!- copumpkin has joined.
08:41:57 <zzo38> I have a game with this text: "In former times, friends Skipp, Apple, and the Wedge were camped. Opposing to expectation, as for them they were kidnapped by the foreigners which is supposed to because it exists. They were placed on the underground mission of spacecraft of enormous foreign country.... Before marshmellows burns, it escapes from the body of the captivity and it must help those in order to return to their planet!"
08:48:11 -!- GreaseMonkey has quit (Quit: The Other Game).
09:03:57 -!- pagnol has joined.
09:04:42 -!- pagnol has quit (Client Quit).
09:04:54 -!- pagnol has joined.
09:05:58 -!- Phantom_Hoover has joined.
09:11:59 <Phantom_Hoover> ??
09:12:00 <Sgeo> http://ib.skaia.net/post/view/25830 Phantom_Hoover clicky (assuming you're caught up with HS)
09:12:01 <Phantom_Hoover> Sgeo...........
09:12:01 * Sgeo is easily amused
09:41:15 -!- ais523 has joined.
09:55:04 <zzo38> Bijective function types might also allow some optimizations to be performed that otherwise doesn't be performed.
10:01:40 <oklobot> bijections?!?!?!?
10:01:43 <oklobot> oh
10:01:45 <oklobot> meh
10:01:55 -!- oklobot has changed nick to oklopol.
10:03:17 <oklopol> in modern bijections, it's okay for some values on the domain to map back on the domain.
10:04:30 <oklopol> values of the codomain mapping back on the codomain in the inverse of the function of course has been considered damn hot through the ages.
10:06:19 <oklopol> maybe i made it too obvious with the second sentence.
10:06:34 <zzo38> What I mean specifically is that all defined input has a valid output, all values of both the input and output types are taken into account, and that there is a different output for each input.
10:07:50 <oklopol> i know what a bijection is
10:08:22 <oklopol> and by i i mean everyone here who's not a stupid
10:08:51 * Sgeo doesn't remember the difference between injection and surjection, which is which, but bijection's easy
10:09:04 <zzo38> I know you know, but I wanted to be more specific anyways.
10:11:40 <oklopol> who doesn't
10:13:08 <oklopol> a bijection from X to Y is a function from X to Y which is an injection and a surjection. an injection is a function such that x != y, both in Y, implies f(x) != f(y) and a surjection is such that for all y in Y there exists x in X such that f(x) = y
10:13:38 <oklopol> a bijection from X to Y is a function from X to Y which is an injection and a surjection. an injection is a function such that x != y, both in X, implies f(x) != f(y) and a surjection is such that for all y in Y there exists x in X such that f(x) = y
10:13:41 <oklopol> better
10:14:37 <zzo38> Yes that is better than my description
10:15:49 <zzo38> I have many ideas for use of bijective function type; one is to experiment with reversible programming, one is to determine inverses automatically, one is to be able to represent equality of natural numbers in the type system similar to Curry-Howard (but this should also require that there is some way to prove that one is not equal to zero, and so on)
10:20:48 <zzo38> I wrote a program for classical logic. I called the uninhabited type Zero. For numbers, you would have, Zero for zero, Maybe for successor, product type for products, sum type for sums, function type for exponents. And then, you also have Zero, product, sum, for logical operation as well, and bijective function type for equality of numbers.
10:20:51 <oklopol> yeah that sorta stuff might be nice. i also think that's been tried, perhaps succesfully
10:21:09 <oklopol> then again who cares if it's been done
10:23:46 -!- monqy has quit (Quit: hello).
10:32:54 -!- hagb4rd has quit (Ping timeout: 240 seconds).
10:39:27 -!- zzo38 has quit (Remote host closed the connection).
10:45:21 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
10:45:44 <Phantom_Hoover> Sgeo, they're both the same, just going opposite ways.
10:55:50 -!- Phantom_Hoover has quit (Quit: Leaving).
12:28:29 -!- Vorpal has joined.
13:01:27 -!- pagnol has quit.
13:36:34 <Vorpal> huh, google changed favicon again?
13:59:38 -!- CakeProphet has quit (Ping timeout: 276 seconds).
13:59:44 -!- ais523_ has joined.
14:00:56 -!- derrik has joined.
14:11:58 -!- Guest14567 has joined.
14:12:05 -!- Slereah_ has quit (Ping timeout: 260 seconds).
14:28:56 -!- derdon has joined.
14:32:18 -!- MSleep has changed nick to MDude.
14:34:03 -!- ais523 has quit (Ping timeout: 240 seconds).
15:03:55 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:16:45 -!- MSleep has joined.
15:17:19 -!- MDude has quit (Ping timeout: 240 seconds).
15:28:36 -!- copumpkin has joined.
15:30:08 -!- MSleep has changed nick to MDude.
15:34:27 -!- ais523_ has quit (Quit: Page closed).
15:43:34 -!- andrew12 has quit (Ping timeout: 260 seconds).
15:49:23 -!- Phantom_Hoover has joined.
15:52:27 <Phantom_Hoover> @tell elliott Brumhandle acquired; inbox filled with angry PMs.
15:52:28 <lambdabot> Consider it noted.
15:54:10 -!- augur has quit (Ping timeout: 258 seconds).
15:55:38 -!- andrew12 has joined.
16:00:37 -!- CakeProphet has joined.
16:00:49 -!- CakeProphet has quit (Changing host).
16:00:49 -!- CakeProphet has joined.
16:01:07 <CakeProphet> :)
16:03:31 -!- ais523 has joined.
16:05:11 -!- CakeProp1et has joined.
16:10:49 -!- zzo38 has joined.
16:11:04 <Phantom_Hoover> CakeProphet, fix your ident order dammit.
16:12:05 -!- Ngevd has joined.
16:31:59 -!- CakeProp1et has quit (Quit: leaving).
16:32:03 <CakeProphet> Phantom_Hoover: huh?
16:32:11 <Phantom_Hoover> * CakeProphet (~eris@h65.19.18.98.dynamic.ip.windstream.net) has joined #esoteric
16:32:12 <Phantom_Hoover> * CakeProphet has quit (Changing host)
16:32:12 <Phantom_Hoover> * CakeProphet (~eris@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake) has joined #esoteric
16:32:37 <Phantom_Hoover> You have a cloak, but you're identifying after you join the channel, thus spamming and defeating the point of having the cloak.
16:33:03 <Phantom_Hoover> IIRC you can fix it in XChat by setting the server password, rather than the NickServ password.
16:33:13 <CakeProphet> what about irssi? :)
16:34:13 <quintopia> access flags
16:34:15 <Phantom_Hoover> aptitude remove irssi, aptitude install xchat
16:34:21 <CakeProphet> noe
16:34:22 <CakeProphet> p
16:34:38 <quintopia> doesnt freenode have access control?
16:34:43 <zzo38> Actually even using the server password it does not always make NickServ result right away.
16:35:05 <zzo38> Could you program it to not autojoin until the NickServ response?
16:35:23 <Phantom_Hoover> It's not a common problem IME.
16:35:26 <quintopia> it would be possible
16:36:53 <zzo38> Another solution is, could you make up a new channel that requires registration to join but redirects to this channel? Would the server even accept such a thing or would it ignore the registration mode in this case?
16:37:45 <ais523> zzo38: the way redirects work, I think it'd redirect people who weren't identified because if you can't get into a channel, default is to redirect you
16:38:05 <zzo38> O, yes, now that I think of it, yes that is how it works.
16:38:20 <zzo38> You are correct; redirects only work if you are not identified.
16:39:13 <zzo38> Unless it is configured by the server operators for permanent redirect.
16:40:05 <zzo38> Anyways, making it work on the client is better way than reconfiguring the server to do that, isn't it? Just use a macro like I described above on the client.
16:42:09 <CakeProphet> guys I think I figured out the solution
16:42:13 <CakeProphet> not caring.
16:42:25 <Ngevd> I like the commentary to today's Gunnerkrigg court
16:42:26 <CakeProphet> ahhhh yes, I can feel it working already.
16:42:40 <Phantom_Hoover> No, because it doubles the volume of join/quit spam.
16:43:12 -!- andrew12 has quit (Ping timeout: 245 seconds).
16:43:14 <CakeProphet> *doubles /my/ volume of join/quit spam
16:43:39 <CakeProphet> that's like one join/quit pair per ever 3 days on average or something. egads!
16:43:44 <CakeProphet> *every
16:43:48 <Phantom_Hoover> Yes, and your name is not one unassociated with join/quit spam.
16:44:07 <zzo38> Phantom_Hoover: Tell your client to ignore the quit message "Changing host" if you want to suppress it from your display
16:44:42 -!- andrew12 has joined.
16:44:57 <CakeProphet> Phantom_Hoover: so wait, the solution is to /not/ identify?
16:45:01 <CakeProphet> I don't really understand what's going on.
16:45:24 <Phantom_Hoover> The solution is to identify between connecting to the server and joining channels.
16:45:40 <Phantom_Hoover> If you connect, join and identify you rehost.
16:45:41 <zzo38> OK; to tell you I don't care much about that either (I don't have a cloak anyways). Cloak can also be used to easily show your identity, without requiring WHOIS or NS INFO (in case you commonly connect with multiple computer)
16:46:06 <zzo38> Another way is to disable the cloak, in case you still want to identify and avoid this join/quit span messages
16:46:27 <CakeProphet> irssi doesn't seem to have any way to do.
16:46:46 <zzo38> To do what?
16:47:41 <CakeProphet> identify before joining channels.
16:48:06 <CakeProphet> unless I join every channel manual via -autosendcmd or something
16:48:09 <CakeProphet> *manually
16:48:48 <zzo38> Surely it must have macros, though. Isn't it?
16:49:09 <CakeProphet> oh well, sure.
16:49:31 <CakeProphet> actually no macro that I can find just command aliases
16:49:43 -!- andrew12 has quit (Ping timeout: 240 seconds).
16:49:59 <CakeProphet> so no parameters can be given, basically.
16:50:27 <zzo38> Then fix irssi to support macros
16:50:29 -!- andrew12 has joined.
16:51:15 <CakeProphet> Sgeo: ehpdelbreet
16:52:38 <CakeProphet> Sgeo: ha. ha. ha. Strider is different than Dave. tee hee. this is UNEXPECTED.
16:53:15 <CakeProphet> s/different than/different but similar to/
16:54:13 <Ngevd> His autoreply seems similar to fungot
16:54:14 <fungot> Ngevd: 250000? from factorial? :o) instances of tla running in parallel
16:54:54 <CakeProphet> Ngevd: whose?
16:55:06 <Ngevd> Strider's
16:55:10 <Ngevd> Oh, wait SPOILERS
16:55:21 <Ngevd> SPOILY SPOILY SPOILERS
16:55:33 <Ngevd> PastCakeProphet: SPOILERS
16:55:41 <CakeProphet> OH NOOOOO
16:56:07 <CakeProphet> Strider is like Rose if Rose were a cool bro.
16:56:10 -!- andrew12 has quit (Remote host closed the connection).
16:56:28 -!- elliott has joined.
16:57:44 <Ngevd> elliott: SPOILERS NEAR END OF LOG
16:57:57 <CakeProphet> SPOILERS ABOUT STRIDER AND AUTO -- ER
16:57:58 <CakeProphet> NEVERMIND
16:58:01 <CakeProphet> :)
16:58:09 <elliott> I check MSPA before reading the logs.
16:59:02 <Ngevd> That is a good system
17:00:39 <CakeProphet> elliott: did you enjoy leading last nights conversation?
17:00:47 <elliott> What?
17:01:06 <CakeProphet> the one
17:01:07 <CakeProphet> before this one
17:01:10 <CakeProphet> where I'm talking a lot
17:01:55 <elliott> I haven't finished reading MSPA updates yet.
17:04:07 <CakeProphet> elliott: sheesh it's like you're human or something.
17:04:39 <CakeProphet> an undisciplined yob.
17:04:55 <zzo38> What do you expected them to be? The gods?
17:05:38 <CakeProphet> elliott should obviously be some kind of machine.
17:05:51 <CakeProphet> a robotic teenaged superhero.
17:05:52 <Ngevd> A cola making machine
17:06:01 <Ngevd> Cola is one of Hexham's main industries
17:06:04 <Ngevd> Cola and chipboard
17:06:08 <CakeProphet> ...
17:06:09 <CakeProphet> wat
17:06:22 <Ngevd> http://www.fentimans.com/
17:06:33 <Ngevd> Their offices and laboratories are in Hexham
17:06:35 <CakeProphet> man, Atlanta has got the cola industry /on lock/
17:06:43 <CakeProphet> we've got Coca-Cola and shit.
17:06:50 <Ngevd> WE HAVE FENTIMANS
17:06:58 <CakeProphet> OH MY GOD I NEVER REALIZED
17:07:04 <CakeProphet> except: what the fuck is that? -clicks-
17:07:16 <CakeProphet> not as DELICIOUS
17:07:18 <CakeProphet> AS COCA-COLA
17:07:19 <CakeProphet> obviously
17:07:57 <CakeProphet> anyway I think instead of going to class today
17:08:01 <CakeProphet> I'm going to finish this huge paper
17:16:01 <zzo38> Does recording of D&D game interested you by now?
17:16:19 <Ngevd> Fentimans Curiosity Cola is a lot stronger tasting than Coca-Cola or Pepsi
17:19:29 -!- monqy has joined.
17:19:34 <CakeProphet> monqy: hi
17:19:51 <monqy> hi
17:19:59 <CakeProphet> heh, first hit for "linux" is the Ubuntu homepage
17:20:42 -!- andrew12 has joined.
17:20:50 <Ngevd> Which doesn't mention the word "linux"
17:21:59 <CakeProphet> " Official site; Commercially sponsored Debian-derived Linux distribution that focuses on usability, a regular 6-month release cycle, and a ..."
17:22:02 <CakeProphet> um?
17:22:12 <Ngevd> The page doesn;t
17:22:17 <Ngevd> Neither does the page's source
17:22:25 <Ngevd> The description must come from elsewhere
17:22:27 <CakeProphet> ah, indeed not.
17:22:45 <CakeProphet> Ngevd: Google is kind of magical
17:22:53 <Ngevd> I'm kind of magical
17:23:02 <Ngevd> I'm a latent reality warper
17:23:11 <CakeProphet> I warp reality every day.
17:23:23 <Ngevd> This summer I wanted to know someone who had similar interests to me and lived near me
17:23:32 <Ngevd> THEN SUDDENLY ELLIOTT APPEARED IN MY LIFE
17:23:39 <CakeProphet> best friends for life. <3
17:23:48 <Ngevd> WROST EMENIES
17:23:52 <Ngevd> <3<
17:24:14 <elliott> hi
17:24:16 <CakeProphet> I like how everyone in the UK lives relatively close to each other.
17:24:34 <elliott> Phantom_Hoover doesn't
17:24:57 <CakeProphet> whereas the most populous state in the US is around 2000 miles away from me.
17:24:58 <Phantom_Hoover> I live pretty near Hexham, actually.
17:25:18 <monqy> hexham party
17:25:34 <elliott> We should all have a meetu- NO.
17:25:39 <elliott> I hate you all.
17:25:41 <elliott> All 2 of you.
17:25:48 <Ngevd> I'd have to change trains in Newcastle, Carlisle, or Glasgow to get to Phantom Hoover
17:25:49 <Gregor> (That includes himself)
17:26:00 <Ngevd> Or maybe Middlesborough
17:26:27 <CakeProphet> Ngevd: do all of those places have Haskell compilers named after them?
17:26:38 <Ngevd> No
17:26:41 <CakeProphet> :(
17:26:45 <Ngevd> Just Glasgow and MIddlesborough
17:27:04 <CakeProphet> elliott: time to get started on the Hexham Haskell Compiler
17:27:09 <elliott> middlesborough haskell compiler
17:27:10 -!- andrew12 has quit (Ping timeout: 244 seconds).
17:27:14 <Phantom_Hoover> Doesn't ais523 live in the North too?
17:27:19 <elliott> Phantom_Hoover: birmingham
17:27:31 <Ngevd> Birmingham is East Midlands, I believe
17:27:33 <CakeProphet> I assume you're talking about birmingham, Alabama right? :P
17:27:38 <Phantom_Hoover> Is that in the North I don't know?
17:27:39 <Ngevd> WHICH IS TOO FAR SOUTH TO BE NORTH
17:27:48 <elliott> birmingham is in the black hole known only as birmingham
17:28:06 <elliott> 22:15:58: <CakeProphet> shachaf: I got the last exploit by @telling lambdabot to say fungot
17:28:07 <fungot> elliott: ( will be, fnord fnord ( that's zero zero) least significant bits of pointers for each node, and find all the prime numbers up to 32-bit, constants can be at least 64 characters long, and a
17:28:24 <elliott> > "fungot"
17:28:25 <fungot> elliott: your keyboard is absent? fnord juhovh minä olisin ainakin fnord fnord fizzien fnord
17:28:25 <lambdabot> "fungot"
17:28:26 <elliott> CakeProphet: would also have worked.
17:28:40 <CakeProphet> elliott: NOPE NOT THE SAME
17:28:50 <elliott> 22:16:20: <HackEgo> ​?where fungot
17:28:50 <elliott> 22:16:29: <shachaf> lambdabot?
17:28:50 <elliott> 22:16:36: <shachaf> Oh, come on, lambdabot!
17:28:50 <elliott> 22:16:42: <ais523> > "I don't listen to people with 'bot' in their name, IIRC"
17:28:50 <elliott> 22:16:43: <lambdabot> "I don't listen to people with 'bot' in their name, IIRC"
17:28:50 <fungot> elliott: " fill your days with despair in 12 easy steps!" level yet??
17:28:56 <CakeProphet> @tell is like a delayed surpirse of botsploitation
17:28:57 <lambdabot> Consider it noted.
17:28:58 <elliott> Nobody's ever said that to ais523 so I guess he's just making it up.
17:29:07 <elliott> shachaf: HackEgo uses control characters to subvert botloops it'd otherwise cause.
17:29:28 <elliott> Also, ais523: "HackEgo" does not contain "bot" :P
17:29:28 -!- CakeProphet has changed nick to is.
17:29:32 <is> lambdabot: hi
17:29:40 <elliott> lol
17:29:52 <is> @messages
17:29:53 <lambdabot> dylukes asked 19d 18h 5m 26s ago: haskell awesome?
17:29:53 <lambdabot> CakeProphet said 56s ago: like a delayed surpirse of botsploitation
17:30:21 <Gregor> `echo ?why am I SO CLEVER?!
17:30:25 <is> @tell dylukes yes it is
17:30:26 <lambdabot> Consider it noted.
17:30:28 <HackEgo> ​?why am I SO CLEVER?!
17:30:31 -!- is has changed nick to CakeProphet.
17:30:47 <Gregor> Also, they're not control characters, they're Unicode.
17:31:04 <elliott> 22:20:14: -!- ChanServ changed the modes of #esoteric: +o ais523
17:31:04 <elliott> 22:20:22: <ais523> just in case I need to +m the channel for a few seconds to break botloops
17:31:13 <elliott> ais523: op abuse, the traditional botloop breaker is an annoyed bot admin
17:31:30 <Gregor> Or, HackEgo being BRILLIANTE
17:31:40 <elliott> Gregor:
17:31:44 <elliott> !echo lambdabot: @so hi
17:31:46 <EgoBot> lambdabot: @so hi
17:31:47 <lambdabot> hi not available
17:31:53 <monqy> hi
17:31:53 <elliott> `echo lambdabot: @so hi
17:31:55 <HackEgo> lambdabot: @so hi
17:31:55 <Gregor> elliott: That is such a loop, what with it not looping.
17:31:56 <lambdabot> hi not available
17:32:05 <elliott> Gregor: You want me to complete it?
17:32:15 <Gregor> elliott: ... maybe? :P
17:32:15 <Gregor> No
17:32:20 <elliott> `echo lambdabot: @so `echo test
17:32:21 <Gregor> But that's lambdabot's fault :P
17:32:22 <HackEgo> lambdabot: @so `echo test
17:32:23 <lambdabot> `echo test not available
17:32:24 <Gregor> NOOOOOOOOOOOOOOO
17:32:25 <HackEgo> test not available
17:32:28 <Gregor> Oh
17:32:32 <Gregor> So, still not a loops.
17:32:37 <Gregor> *still not a loop
17:32:41 <elliott> `echo "lambdabot: @so `cat x; #" >x
17:32:43 <HackEgo> ​"lambdabot: @so `cat x; #" >x
17:32:46 <elliott> `run echo "lambdabot: @so `cat x; #" >x
17:32:48 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching ``' \ bash: -c: line 1: syntax error: unexpected end of file
17:32:54 <elliott> `run echo 'lambdabot: @so `cat x; #' >x
17:32:55 <HackEgo> No output.
17:32:56 <elliott> `cat x
17:32:57 <HackEgo> cat: x: No such file or directory
17:33:01 <CakeProphet> monqy: I've read that HTML is an interesting programming language. (re: learning new languages)
17:33:02 <elliott> `cat x
17:33:03 <HackEgo> lambdabot: @so `cat x; #
17:33:04 <lambdabot> `cat x; # not available
17:33:04 <CakeProphet> :>
17:33:06 <HackEgo> cat: x; # not available: No such file or directory
17:33:08 <elliott> Oops
17:33:11 <monqy> CakeProphet: :(
17:33:12 <elliott> `run echo 'lambdabot: @so `run cat x; #' >x
17:33:14 <HackEgo> No output.
17:33:16 <elliott> `cat x
17:33:18 <HackEgo> lambdabot: @so `run cat x; #
17:33:19 <lambdabot> `run cat x; # not available
17:33:21 <HackEgo> lambdabot: @so `run cat x; #
17:33:22 <lambdabot> `run cat x; # not available
17:33:24 <HackEgo> lambdabot: @so `run cat x; #
17:33:25 <lambdabot> `run cat x; # not available
17:33:26 <CakeProphet> monqy: also Java, and Visual Basic
17:33:26 <monqy> CakeProphet: what is so interesting about it
17:33:27 <HackEgo> lambdabot: @so `run cat x; #
17:33:28 <lambdabot> `run cat x; # not available
17:33:30 <HackEgo> lambdabot: @so `run cat x; #
17:33:31 <lambdabot> `run cat x; # not available
17:33:32 <monqy> CakeProphet: cry
17:33:32 <CakeProphet> monqy: nothing, it's not a programming language.
17:33:33 <HackEgo> lambdabot: @so `run cat x; #
17:33:33 <lambdabot> `run cat x; # not available
17:33:34 <elliott> Gregor: Let it run a bit more :')
17:33:35 <elliott> so beautiful
17:33:35 <HackEgo> lambdabot: @so `run cat x; #
17:33:36 <lambdabot> `run cat x; # not available
17:33:38 <HackEgo> lambdabot: @so `run cat x; #
17:33:39 <lambdabot> `run cat x; # not available
17:33:41 <HackEgo> lambdabot: @so `run cat x; #
17:33:41 <CakeProphet> ABANDON SHIP
17:33:42 <lambdabot> `run cat x; # not available
17:33:43 <HackEgo> lambdabot: @so `run cat x; #
17:33:44 <lambdabot> `run cat x; # not available
17:33:46 <zzo38> Well, that is one way to break botloops. So in case someone test the program. There are other ways too, such as the bot operators disconnecting them, or the server operator forcibly disconnecting them.
17:33:47 <HackEgo> lambdabot: @so `run cat x; #
17:33:47 <lambdabot> `run cat x; # not available
17:33:49 <HackEgo> lambdabot: @so `run cat x; #
17:33:50 <lambdabot> `run cat x; # not available
17:33:52 -!- HackEgo has quit (Remote host closed the connection).
17:33:55 <Gregor> Pfff
17:33:55 <elliott> :')
17:34:01 <CakeProphet> rip hackego
17:34:02 -!- HackEgo has joined.
17:34:03 <Gregor> I blame lambdabot on that one.
17:34:05 <Gregor> I've done all I can.
17:34:11 <elliott> Yeah, lambdabot is terrible :P
17:34:15 <elliott> Most of its commands prefix with spaces.
17:34:19 <elliott> But the @source error message doesn't.
17:34:27 <elliott> Which is why I use it for botloops :P
17:34:37 <CakeProphet> Gregor: but lambdabot has a great reputation for being secure and free from exploits.
17:34:51 <Gregor> So does HackEgo, but it's so much more spiffy.
17:34:53 <zzo38> I think you could program lambdabot to prevent you repeating commands too much by public.
17:35:19 <zzo38> Because, it is Haskell anyways; a function should always have the same result unless the program is changed.
17:35:19 <CakeProphet> monqy: smalltalk?
17:36:42 <elliott> zzo38: @source is not pure :P
17:36:52 <elliott> @run is pure, but not @source.
17:36:53 <lambdabot> <no location info>: parse error on input `,'
17:36:56 <CakeProphet> @source
17:36:57 <lambdabot> not available
17:37:00 <elliott> Pretty sure you can mutate @source's DB.
17:37:20 -!- Ngevd has quit (Quit: bye).
17:37:35 <CakeProphet> zzo38: Haskell's purity is a lie!
17:37:38 <zzo38> Then record a timestamp of last change, and a timestamp of last query for each channel.
17:38:41 -!- zzo38 has quit (Remote host closed the connection).
17:39:15 -!- andrew12 has joined.
17:39:33 <Gregor> `@ andrew12 ? welcome
17:39:35 <HackEgo> andrew12: 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
17:39:50 -!- CakeProphet has changed nick to are.
17:39:52 <are> @messages
17:39:53 <Gregor> Probably just welcome'd a long-time idler :P
17:39:53 <lambdabot> You don't have any new messages.
17:40:07 -!- are has changed nick to CakeProphet.
17:40:25 <CakeProphet> `@ Gregor ? CakeProphet
17:40:28 <HackEgo> Gregor: :>
17:40:38 <elliott> Gregor: That's the third welcome andrew12's got.
17:40:43 <elliott> He must be feeling so welcome.
17:40:58 <Gregor> elliott: lol
17:41:20 <Gregor> elliott: What can I say, I don't really contribute anything to this channel except fear, uncertainty and doubt.
17:42:06 -!- kmc has quit (Ping timeout: 260 seconds).
17:44:03 <elliott> `addquote <oerjan> shachaf: wait, _you_ are in northumberland? <shachaf> No. <oerjan> whew <oerjan> we don't have room for more esolangers there. <shachaf> oerjan: Wait, *you* are in Northumberland? <oerjan> no <shachaf> Whew. <shachaf> We don't have room for more esolangers there.
17:44:06 <HackEgo> 728) <oerjan> shachaf: wait, _you_ are in northumberland? <shachaf> No. <oerjan> whew <oerjan> we don't have room for more esolangers there. <shachaf> oerjan: Wait, *you* are in Northumberland? <oerjan> no <shachaf> Whew. <shachaf> We don't have room for more esolangers there.
17:46:27 -!- andrew12 has quit (Ping timeout: 240 seconds).
17:47:44 -!- andrew12 has joined.
17:49:13 <monqy> `@ andrew12 ? welcome
17:49:15 <HackEgo> andrew12: 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
17:49:44 <elliott> 02:16:44: <CakeProphet> in other news: length is stupid. genericLength is good.
17:49:44 <elliott> 02:18:11: <CakeProphet> > let x = [1,2,3] in sum x / genericLength x
17:49:44 <elliott> 02:18:12: <lambdabot> 2.0
17:49:53 <elliott> CakeProphet: i don't think we want length to be able to return a complex number.
17:51:58 -!- andrew12 has quit (Ping timeout: 248 seconds).
17:52:53 <CakeProphet> > genericLength [1,2,3] + (5 :+ 10)
17:52:55 <lambdabot> 8.0 :+ 10.0
17:53:00 <CakeProphet> elliott: sure we do. :P
17:54:06 <fizzie> elliott: "fnord juhovh minä olisin ainakin fnord fnord fizzien fnord" => "fnord juhovh I would at least be fnord fnord fizzie's fnord".
17:54:14 <elliott> fizzie: FINALLY YOU'RE HERE.
17:54:24 <elliott> fizzie: (Why did you translate that for me?)
17:54:47 <fizzie> elliott: (Well, it was a reply for you, I didn't want to leave you confuzzled.)
17:55:31 <CakeProphet> confizzled. ha ha
17:55:38 <elliott> -rw-r--r-- 1 elliott users 516K Nov 20 13:19 qwantz.xz
17:55:42 <elliott> fizzie: How can I get this file to you?
17:55:50 <fizzie> Maybe email, it's pretty small.
17:56:00 * Gregor is intrigued by the name.
17:56:10 <elliott> Gregor: YOU SHOULD BE.
17:56:17 <fizzie> YOU... WILL BE.
17:56:52 <elliott> fizzie: Sendin'.
17:57:18 <elliott> fizzie: Sent; enjoy your "qwantz: Dinosaur Comic transcriptions 2003-2011".
17:57:21 <elliott> *Comics
17:57:28 <elliott> It's Comics. Just clarifying!
17:57:34 <fizzie> Cosmics.
17:58:10 -!- sebbu2 has changed nick to sebbu.
18:04:08 <ais523> <elliott> ais523: op abuse, the traditional botloop breaker is an annoyed bot admin <--- not op abuse, it's much less disruptive to the channel then waking up a bot admin to ragepart the bot
18:04:08 <fizzie> Do you want me to live dangerously and just stick it in the bot without testing it?
18:04:16 <elliott> fizzie: Yes.
18:04:21 <elliott> There is pretty much no way it won't be amazing.
18:04:36 <elliott> ais523: exactly, you're reducing natural disruption! that's _playing god_
18:04:42 <elliott> ^style qwantz
18:04:42 <elliott> ^style qwantz
18:04:43 <elliott> ^style qwantz
18:04:43 <elliott> ^style qwantz
18:04:43 <fungot> Not found.
18:04:43 <fungot> Not found.
18:04:43 <fungot> Not found.
18:04:43 <fungot> Not found.
18:04:46 <elliott> FIND IT QUICKER
18:04:57 <ais523> elliott: but reducing disruption is what ops are /for/
18:05:03 <elliott> ais523: this is #esoteric!
18:05:09 <ais523> this is Freenode!
18:05:14 <elliott> ais523: they're here to facilitate the natural levels of disruption!
18:06:23 -!- fungot has quit (Quit: oh no I am not DYNAMIC enough).
18:06:41 -!- fungot has joined.
18:06:48 <Gregor> OMGSTYLEQUANTZ
18:06:58 <Gregor> Makes me want to revive my dormant T-Rex is Lonely Comics >_>
18:07:08 <fizzie> ^style qwantz
18:07:08 <fungot> Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011)
18:07:08 <Gregor> Err, qwantz
18:07:20 <Gregor> fungot: I love utahraptor!
18:07:20 <fungot> Gregor: that that is pretty cute! my daily affirmation buys food he doesn't need to know that! that's gross! that dude across the street is thinking " bum
18:07:26 -!- ais523 has quit (Remote host closed the connection).
18:07:37 <Gregor> That dude across the street /is/ thinking " bum!
18:07:48 <elliott> fungot: hi
18:07:48 <fungot> elliott: i don't think that fixed time a day whenever i have, and as a patron, i find that, with this unusual. i'm guessing... a kabazillion dollars
18:08:00 <elliott> fungot: i love you
18:08:00 <fungot> elliott: you are a t-rex, undisputed king, but neither really wants!
18:08:20 <elliott> fungot: hi
18:08:21 <fungot> elliott: and so: " probably not!" or there could be a picture of a telephone poles, along with t-rex! that's a standard english just to ensure i act like i did before, and perhaps, at the end, to ask me
18:08:30 <elliott> fizzie: Fungot's " quoting style" really irritates me.
18:09:11 <monqy> how does that happen
18:10:34 <elliott> fungot: hi
18:10:34 <fungot> elliott: so i've been down for like, two minutes!! it's all that came to mind. instead, it's an alternate universe, that's " law and order". and it doesn't have to be shakespeare.
18:10:42 <elliott> monqy: bad pmunctuation handling
18:10:48 <elliott> fungot: you are best
18:11:01 <elliott> nooooo Gregor
18:11:02 <elliott> make him
18:11:03 <elliott> talk again
18:11:28 <Gregor> fungot: I want your babies.
18:11:29 <fungot> Gregor: i must have taken up a new page was slow and expensive! why simulate boring microbes galaxies away if we're just interested in one dude on earth? and why simulate this one dude at all, unless you're trying to find out more, as it's such a small thing, but it would be years down the road! okay. i'll do better next time, ok?
18:11:41 <Gregor> elliott: Also:
18:11:45 <Gregor> `echo fungot: I want your babies too.
18:11:45 <fungot> Gregor: i don't have a very good student! we have to go." then, hey presto, you're a muslim! me say this: " what?? sweetcheeks? i'm sorry, i wasn't paying attention!
18:11:47 <HackEgo> fungot: I want your babies too.
18:11:53 <Gregor> Awwww
18:11:57 <Gregor> What sort of bot ignores HackEgo :P
18:12:26 <elliott> fungot is a pioneer in bot-ignore technology.
18:12:27 <fungot> elliott: that that one incident to say that sentence: it's me god
18:12:28 <elliott> Show 'em the ignores, fizzie.
18:12:34 <fizzie> ^ignore
18:12:35 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)!
18:12:38 <CakeProphet> `addquote <fizzie> Do you want me to live dangerously and just stick it in the bot without testing it? <elliott> fizzie: Yes. <elliott> There is pretty much no way it won't be amazing.
18:12:41 <HackEgo> 729) <fizzie> Do you want me to live dangerously and just stick it in the bot without testing it? <elliott> fizzie: Yes. <elliott> There is pretty much no way it won't be amazing.
18:13:13 <elliott> That's funny?
18:13:57 <Gregor> We all want to just stick it in the bot.
18:14:00 <Gregor> Oooh yeah.
18:14:03 <Gregor> Just stick it in that bot.
18:14:22 <monqy> no
18:14:30 <Gregor> monqy: YES.
18:14:37 <monqy> ;_;
18:14:56 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | #esoteric: Still a place that prefers INTERCAL to Haskell | http://codu.org/logs/_esoteric/.
18:14:57 <elliott> Oh, I actually just skipped to my lines because I assumed they'd be the funny ones.
18:17:16 <CakeProphet> elliott: bad qoute reader
18:18:13 <CakeProphet> Gregor: I don't actually recall a time where you've spoken about Haskell.
18:18:36 <CakeProphet> aside from speaking about how much you prefer C over it (and every other language)
18:19:39 <CakeProphet> `log Gregor.*Haskell
18:20:04 <HackEgo> 2010-04-08.txt:00:12:56: <Gregor> (Haskell is usually the wrong language)
18:20:13 <CakeProphet> yep
18:20:29 <elliott> 00:15:12: * Sgeo is temporarily a Haskell fanatic
18:20:39 <CakeProphet> (uh oh)
18:20:49 <elliott> dont worry thats from 2010-04-08
18:20:54 <CakeProphet> oh good
18:21:01 * CakeProphet has never been a Haskell fanatic actually.
18:21:16 <CakeProphet> a fond admirer perhaps.
18:21:38 <elliott> 03:00:11: <Sgeo> Isn't Perl implemented in Haskell?
18:21:39 <elliott> actual quote
18:21:54 <CakeProphet> is he being srs?
18:22:03 <CakeProphet> I assume he's talking about Pugs.
18:22:26 <CakeProphet> which isn't really "Perl"... yet.
18:22:39 <CakeProphet> "Perl" is currently Perl 5, in most contexts.
18:22:59 <elliott> CakeProphet: Pugs will never be "Perl"... yet :P
18:23:05 <CakeProphet> well, right.
18:23:09 <elliott> It's been dead for like 5 years?
18:23:13 <CakeProphet> I meant to say Perl 6 isn't Perl yet.
18:23:17 <elliott> Recently APPARENTLY people are developing it again buuuuuuut
18:23:35 <CakeProphet> though Perl 6 may also never be "Perl"... yet :P
18:24:09 <CakeProphet> probably has something to do with being a complete clusterfuck with no single developer oversight.
18:24:24 <elliott> larry would be the oversight, methinks.
18:24:40 <elliott> considering he's the one who rejects or accepts all the proposals, or at least did in the early days
18:24:47 <CakeProphet> oh... hmmm
18:24:53 <CakeProphet> perhaps.
18:25:07 <elliott> it's in the apocalypses. or whatever they're called.
18:25:08 <CakeProphet> I read "largely community driven" to mean that Larry kind of isn't very active.
18:25:14 <CakeProphet> elliott: very early
18:25:48 <elliott> 2001, 2002 isn't THAT early
18:25:51 <elliott> 1999 is when perl 6 started iirc
18:26:17 <elliott> 03:02:03: <Sgeo> Is it too late to try to get involved with Google Summer of Code?
18:26:17 <elliott> 03:02:14: <Sgeo> THey're probably looking for people who've actually looked at the stuff
18:26:17 <elliott> 03:04:37: <coppro> nope; deadline for applications is the 9th
18:26:17 <elliott> 03:05:20: <Sgeo> Ok, but don't I need to have some idea of what I want to do, besides just "I'll do what this organization suggests on their GSoC page"
18:26:17 <elliott> 03:05:23: <Sgeo> ?
18:26:19 <elliott> 03:09:08: <coppro> yes you do
18:26:21 <elliott> 03:09:22: <coppro> socghop.appspot.com
18:26:23 <elliott> 03:10:18: <Sgeo> I can't just say "I have never even looked at this code, but I'll try doing this suggestion", can I?
18:26:26 <elliott> 03:10:28: <Sgeo> I mean, and get accepted
18:26:28 <elliott> i'm forced to conclude that 2011 > 2010
18:26:53 <CakeProphet> > (1999-2002)/(1999-2011)
18:26:54 <lambdabot> 0.25
18:27:05 <CakeProphet> elliott: it's 25% earliness :P
18:27:14 * CakeProphet sound logic
18:27:45 <CakeProphet> or... I guess 75% early.
18:28:56 <CakeProphet> this notion of percentages and earliness makes complete sense.
18:28:59 <CakeProphet> I promise.
18:29:24 <CakeProphet> http://en.wikipedia.org/wiki/K_computer
18:29:33 <CakeProphet> I would like to make a faster computer and name it OK Computer
18:31:25 -!- sebbu2 has joined.
18:31:25 -!- sebbu2 has quit (Changing host).
18:31:25 -!- sebbu2 has joined.
18:32:50 <elliott> average speed computer
18:34:18 <CakeProphet> no it would be the fastest computer in the world, with all of its processing power used to generate really shitty sounding radiohead covers, tribute songs, blog posts, fan fiction, and fan club websites.
18:35:15 -!- sebbu has quit (Ping timeout: 276 seconds).
18:35:57 <Gregor> CakeProphet: lololol BEST QUOTE EVER X-D
18:36:11 <Gregor> CakeProphet: I actually kinda like Haskell, but I love hating it more than I like liking it.
18:36:19 <CakeProphet> oh, good.
18:36:23 <CakeProphet> this is as it should be.
18:36:27 <CakeProphet> we cannot ALL be Haskell fanboys
18:36:38 <CakeProphet> there must be balance.
18:37:04 <elliott> Gregor: X-D
18:37:05 -!- copumpkin has quit (Ping timeout: 252 seconds).
18:37:28 <Gregor> To be fair I haven't written anything substantial in it in years.
18:37:52 <CakeProphet> Gregor: how much of a 133t h45k311 h4ck3r are you?
18:37:53 <CakeProphet> oh okay.
18:39:22 <Gregor> CakeProphet: http://www.youtube.com/watch?v=M7tew1apXqc <-- this was written in Haskell
18:39:22 <CakeProphet> monqy: what was that weird website you found?
18:39:47 <monqy> sourcereal.com?
18:39:56 -!- sebbu2 has changed nick to sebbu.
18:40:02 <CakeProphet> monqy: yes!
18:40:03 <elliott> Gregor: I like the fade to show HOW REALISTIC it is.
18:40:09 <monqy> CakeProphet: it's a good site
18:40:24 <CakeProphet> elliott: also how blue Mt. Hood apparently is
18:40:30 <Gregor> elliott: Gimme a break :P
18:40:46 <elliott> Gregor: Excuse me no???
18:41:35 <CakeProphet> monqy: I have a suspicion that zzo is actually the webmaster behind sourcereal.com
18:42:13 <CakeProphet> "Hopefully, that list will give you an idea about what you may learn when reading this cereal page, or, you might find something useful reading other websites." -- zzo
18:42:42 -!- Ngevd has joined.
18:42:54 <Ngevd> Hello!
18:42:57 <monqy> yes it is very zzoesque
18:43:22 <Gregor> z-zosque
18:44:08 <CakeProphet> monqy: hi I'll pay you money if you write this paper for me.
18:44:28 <monqy> what paper :(
18:44:33 <monqy> also I have to leave like now
18:44:37 <monqy> so
18:44:40 <CakeProphet> it's only like a 10 page report with questionnaire statistics and two interview transcripts that need to be cited.
18:45:08 <CakeProphet> along with internet sources. it's a proposal to incorporate more education of linux into my university's curriculum.
18:45:13 <CakeProphet> it's very, uh, exciting.
18:45:19 <monqy> sounds miserable
18:45:23 <CakeProphet> also due today.
18:45:34 <CakeProphet> but anyway have fun leaving like now.
18:46:03 -!- ais523 has joined.
18:46:08 <monqy> I'm more upset with lack of programming language/paradigm diversity than lack of linux education (why would you need linux education)
18:46:11 <monqy> anyway
18:46:14 <monqy> leaving like now
18:46:22 <CakeProphet> also does anyone have any good "lol linux is totally p0pu14r"
18:46:23 <CakeProphet> sources
18:46:47 <ais523> hey, who made the topic ping me?
18:47:15 <CakeProphet> monqy: well the basic premise is that a) we do not expose students enough to linux environments b) linux expertise has high industry demand
18:47:28 -!- copumpkin has joined.
18:47:41 <CakeProphet> monqy: yes I agree, but I need to also create a presentation on the topic, and I didn't want to completely bore my non-computer-science audience.
18:47:42 <elliott> CakeProphet: counterpoint: linux sucks
18:47:47 <Gregor> CakeProphet: What school is it that doesn't ...
18:47:52 <CakeProphet> elliott: well, that's irrelevant
18:47:59 <CakeProphet> Gregor: my school. IT'S SEKRET
18:48:05 <CakeProphet> Gregor: and, they do, but not very much
18:48:15 <elliott> (its georgia tech.. it hink??)
18:48:18 <CakeProphet> no.
18:48:19 <Gregor> CakeProphet: Of the two universities I've been at, two have had students use Linux primarily from day one.
18:48:19 <elliott> oh
18:48:21 <elliott> who is it from georgia here
18:48:24 <elliott> ive
18:48:26 <ais523> CakeProphet: you could mention Linux's share in the server market
18:48:27 <Gregor> (CS students)
18:48:30 <elliott> seen that uninvinvinvinersity name in here before
18:48:31 <ais523> that tends to impress people
18:48:36 <CakeProphet> ais523: yes that's good.
18:49:00 <CakeProphet> elliott: southern polytechnic state university. it's like the shitty version of GA tech that's cheaper and easier to get into. :)
18:50:19 <Gregor> `echo HackBot is proof of why Linux is important.
18:50:22 <HackEgo> HackBot is proof of why Linux is important.
18:50:31 <CakeProphet> also it's supposedly geared more towards "practical" education. aka helping people get jobs.
18:50:40 <CakeProphet> so, the "people use linux" point is the important one.
18:50:40 <oklopol> oh god
18:52:05 <oklopol> the point of a university is research and training new researchers. the point of the world is to enable this.
18:52:45 <CakeProphet> oklopol: not in the US. :P
18:53:23 <elliott> `addquote <oklopol> the point of a university is research and training new researchers. the point of the world is to enable this.
18:53:25 <HackEgo> 730) <oklopol> the point of a university is research and training new researchers. the point of the world is to enable this.
18:53:40 <oklopol> you should see our "cs" department. they have a course called computer science and the society.
18:53:50 <CakeProphet> in the US universities are businesses that serve as a pointless barrier for entering a profession. oh, also they do research stuff.
18:54:01 <oklopol> elliott: i was disappointed you didn't quote my gay joke
18:54:11 <elliott> oh where was that
18:54:13 <elliott> i don't think i finished logreading
18:54:19 <oklopol> up where i was talking to zzo
18:54:44 <elliott> oh good god what have i missed
18:54:47 <CakeProphet> elliott: you have to read the wonderful conversation between shachaf copumpkin oerjan Ngevd (I think?) and I
18:54:56 <elliott> what was it about
18:55:01 <CakeProphet> "maths"
18:55:04 <oklopol> :O
18:55:07 <oklopol> where
18:55:09 <oklopol> where is it
18:55:12 <oklopol> i need to read it
18:55:12 <oklopol> now
18:55:13 <copumpkin> eww maths
18:55:19 <oklopol> :/
18:55:23 <oklopol> don't do that
18:55:25 <oklopol> that's not funny
18:55:26 <CakeProphet> well, bottom, strictness, category theory, type theory. primarily it was about me not understanding _|_ as it's used in Haskell.
18:55:39 <oklopol> that's cs :/
18:55:48 <Ngevd> That wasn't me I don't think
18:55:52 <CakeProphet> by "it's awesome" I mean you'll probably hate reading it and seeing how wrong I am the whole time.
18:56:05 <CakeProphet> oh Sgeo was there too
18:57:04 <oklopol> i know very few things about category theory apart from the trivialities, mosty limits and inverse limits i suppose
18:57:27 <oklopol> those were a new addition because we needed inverse limits for... something
18:57:29 <CakeProphet> I know some of the basic terminology and some laws and that's it.
18:57:34 <Ngevd> All I know about category theory is that it is a category
18:57:45 <oklopol> what are its morphisms?
18:57:58 <elliott> mathematicians
18:58:07 <oklopol> cool
18:58:17 <CakeProphet> functors I imagine.
18:58:23 <elliott> CakeProphet: was it today
18:58:24 <elliott> or
18:58:27 <oklopol> i've always wanted to be a homomorphism
18:58:28 <elliott> the previous
18:58:28 <elliott> day
18:58:29 <CakeProphet> if we're talking about "category of categories"
18:58:29 <elliott> (utc)
18:58:38 <elliott> CakeProphet: *category of small cats
18:58:41 <elliott> (kittens)
18:58:42 <CakeProphet> elliott: I don't actually ever pay attention to UTC
18:58:54 <CakeProphet> but I think it was today UTC
19:00:02 <elliott> CakeProphet: ah i left off at the point of you beign all |im hate calculus"
19:00:24 <CakeProphet> elliott: oh yes that was very very early.
19:00:26 <oklopol> ew calculus
19:00:58 <CakeProphet> elliott: I mainly hate calculus because of all the effort I had to put into taking three university courses on it.
19:01:38 <Ngevd> I enjoy maths at the moment
19:01:41 <Ngevd> Please don't change that
19:01:52 <oklopol> what sorta maths
19:01:59 <CakeProphet> I like maths too, but not calculus.
19:02:18 <Ngevd> All the maths I know about, except for geometry
19:02:20 <Phantom_Hoover> im maths
19:02:39 <Phantom_Hoover> Also everyone hates geometry, was there a memo I missed or something?
19:02:40 <oklopol> what do you know about
19:02:46 <CakeProphet> discrete math is intuitive and nice thanks to my leet cs skillz
19:02:49 <oklopol> do you know why the identity element of a group is unique?
19:02:51 <CakeProphet> calculus hurts.
19:03:12 * oklopol is doing geometry atm
19:03:13 <Phantom_Hoover> oklopol, basic calculus, moderately sophisticated conventional algebra, matrices.
19:03:25 <oklopol> in besicovitch spaces of course
19:03:40 <Phantom_Hoover> This is based on the Scottish course, of course.
19:03:42 <oklopol> k that stuff
19:03:47 <oklopol> have to go :/
19:03:52 <oklopol> bues.
19:03:53 <elliott> you bored oklopol Ngevd :(
19:03:56 <Ngevd> I like matrix multiplication, because when you get over how damn weird it is, it all makes perfect sense
19:04:02 <elliott> you bored Ngevd oklopol :'( (maybe ???)
19:04:15 <CakeProphet> I like category theory because when you get over how damn weird it is it's still weird.
19:04:20 <Ngevd> I'm just faintly smiling and rocking side to side
19:04:25 <elliott> do you do that a lot
19:04:28 <Phantom_Hoover> <oklopol> that's cs :/
19:04:29 <Ngevd> Yes
19:04:34 <elliott> ok
19:04:35 <Phantom_Hoover> CS is a kind of maths.
19:04:38 * elliott faintly smiles and rocks side to side
19:04:40 <elliott> yay
19:04:49 <oklopol> Ngevd: have you read about finite fields?
19:04:53 <Ngevd> No?
19:05:11 <elliott> `addquote <copumpkin> it's not even about strictness actually <copumpkin> not strictly about strictness, anyway
19:05:12 <Ngevd> I haven't actually read that much about anything
19:05:13 <oklopol> think about it, a finite n-dimensional space in which matric multiplication is a linear map.
19:05:14 <HackEgo> 731) <copumpkin> it's not even about strictness actually <copumpkin> not strictly about strictness, anyway
19:05:15 <elliott> 04:52:06: <pikhq> \f x-> reads \f->\x->... *Clearly* there's not much evaluation you can do of an unapplied lambda.
19:05:18 <oklopol> mmmmmmm
19:05:18 <elliott> pikhq_: sure there is
19:05:59 <Phantom_Hoover> Ngevd, they're fields with only finitely many elements, where fields are this abstract algebra thing.
19:06:03 <elliott> 05:02:12: <CakeProphet> > (\x -> undefined)
19:06:03 <elliott> 05:02:13: <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
19:06:03 <elliott> 05:02:13: <lambdabot> arising from a use of `...
19:06:03 <elliott> 05:02:39: <CakeProphet> in my mind this is forcing (\x -> undefined) (I'm just going to call it const undefined now)
19:06:06 <Ngevd> Phantom_Hoover, ah
19:06:08 <elliott> CakeProphet: stop being an idiot, that error is compile-time
19:06:09 <Ngevd> That makes sense
19:06:19 <CakeProphet> elliott: the confusion was not a result of that error
19:06:20 <elliott> > (fix id) :: (a -> b)
19:06:21 <lambdabot> Overlapping instances for GHC.Show.Show (a -> b)
19:06:21 <lambdabot> arising from a use of `...
19:06:24 <elliott> infinite loop terminating omg
19:06:58 <Ngevd> :t fix id
19:07:00 <lambdabot> forall a. a
19:07:03 <Ngevd> Aaah
19:07:36 <CakeProphet> oklopol: do you know about (n-1)-order Markov models based on frequency analysis of character n-grams and their applications in autolinguistic lexeme generation?
19:07:36 <Ngevd> The internet is where I don't have to be a hyperintelligent... entity
19:07:36 <Phantom_Hoover> Ngevd, specifically, fields are more or less sets with two operators which behave broadly similar to + and * over the reals.
19:07:41 <CakeProphet> (note: I just made most of that terminology up)
19:08:39 <CakeProphet> well, actually no I didn't.
19:08:44 <CakeProphet> I just made it sound fancier than it is.
19:09:23 <elliott> Ngevd: are you a hyperintelligent entity usually
19:09:27 <elliott> are you god Ngevd
19:09:32 <Ngevd> No, but I'm expected to be
19:10:09 <Ngevd> If enough people believe I am a god, I will BECOME AS A GOD!!!
19:10:24 <CakeProphet> Ngevd: I find the trick to appearing as a hyperintelligent entity in real life is to only speak when you actually know something
19:10:28 <CakeProphet> and to otherwise remain silent.
19:10:34 <CakeProphet> I don't follow this protocol online. :P
19:10:42 <Phantom_Hoover> CakeProphet, I don't do that, nobody seems to have noticed?
19:11:37 <Phantom_Hoover> This results in the unfortunate consequence that people seem to think I'm an expert on, say, determining the ionic composition of water.
19:11:37 <elliott> @pl-resume
19:11:44 <lambdabot> ap id id (ap id id)
19:11:45 <lambdabot> optimization suspended, use @pl-resume to continue.
19:11:46 <CakeProphet> Phantom_Hoover: ah, weird.
19:11:56 <elliott> Phantom_Hoover: Aren't you?
19:12:01 <CakeProphet> my "stupid filter" turns off when I'm in this channel, for some reason. :P
19:12:22 <Phantom_Hoover> elliott, yes, of course, but the presumption offends me.
19:12:26 <elliott> 05:26:54: <shachaf> copumpkin: I thought this was a classic example in #haskell.
19:12:26 <elliott> 05:26:59: * copumpkin shrugs
19:12:26 <elliott> 05:26:59: <CakeProphet> copumpkin: it's not.
19:12:29 <Ngevd> People ask me for help with their Chemistry homework
19:12:33 <Ngevd> I don't do chemistry
19:12:33 <elliott> good to know we have a haskell expert to correct shachaf
19:12:49 <CakeProphet> elliott: I don't think I was "it's not"ing that thing directly above me.
19:12:50 <Phantom_Hoover> Here in Scotland we have transcended the need for mere mortal chemistry homework.
19:13:02 <elliott> I didn't see anything else relevant.
19:13:07 <elliott> 05:26:08: -!- oerjan has quit (Quit: You sort out this mess yourself).
19:13:07 <elliott> got a lol though.
19:13:17 <Ngevd> Phantom_Hoover, immortal chemistry homework!?
19:13:38 <Phantom_Hoover> We transcended that as well.
19:13:41 <elliott> 05:29:14: <copumpkin> shachaf: I had this discussion a year or so ago with people regarding spoon and why the denotation view of strictness is bullshit because we can actually distinguish things operationally, and people should stop masturbating to denotation
19:13:41 * elliott is made sad by this viewpoint.
19:14:11 * copumpkin masturbates vigorously
19:14:59 <Ngevd> I don't masturbate to ANYTHING
19:15:02 <CakeProphet> elliott: yeah considering I don't actually frequent #haskell and don't know anything about the classic examples there
19:15:03 <Ngevd> Nyahahaha!
19:15:09 <CakeProphet> elliott: probably was in relation to something else.
19:15:36 <elliott> type CommandQueue = Ptr CommandQueuec
19:15:36 <elliott> no why would you do that!
19:15:39 <elliott> library I DON'T LIKE YOU
19:16:29 <CakeProphet> anyway I need to focus on not IRC
19:16:30 <elliott> OK let's try this.
19:16:44 <elliott> data CLDeviceInfoRetval = DeviceInfoRetvalString String | DeviceInfoRetvalCLuint CLuint | DeviceInfoRetvalCLbool CLbool | DeviceInfoRetvalDeviceFPConfig DeviceFPConfig | DeviceInfoRetvalDeviceExecCapabilities DeviceExecCapabilities | DeviceInfoRetvalCLulong CLulong | DeviceInfoRetvalDeviceMemCacheType DeviceMemCacheType | DeviceInfoRetvalCLsizei CLsizei | DeviceInfoRetvalDeviceLocalMemType DeviceLocalMemType | DeviceInfoRetvalCLsizeiList [CLsizei]
19:16:44 <elliott> | DeviceInfoRetvalPlatformID PlatformID | DeviceInfoRetvalCommandQueueProperties CommandQueueProperties | DeviceInfoRetvalDeviceType DeviceType
19:16:52 <elliott> copumpkin: please ensure cosmic punishment of the designer of this library for me
19:16:55 -!- CakeProphet has quit (Quit: going into IRC rehab).
19:16:59 <copumpkin> lol
19:18:43 <elliott> CL_CONTEXT_PROPERTIEScl_context_properties[] Return the properties argument specified in clCreateContext.
19:18:47 <elliott> gah!!!
19:18:53 <elliott> this library forces people to create their own pointers
19:18:54 <elliott> i'm crying
19:18:58 <shachaf> elliott: ?
19:19:05 <elliott> well i mean that was obvious but like
19:19:08 <elliott> not for that thing :(
19:19:10 <elliott> its just a pionter
19:19:14 <elliott> shachaf: what
19:19:22 <shachaf> People beep my name too much.
19:19:36 <shachaf> If you beep my name, you have to brace yourself for My wrath.
19:20:29 <elliott> noted!
19:20:53 <elliott> WHY IS DEVICEID A POINTER
19:21:21 -!- aloril has quit (Ping timeout: 244 seconds).
19:27:45 <elliott> WHY DOES OPENCL DO REFCOUNTING
19:28:07 <copumpkin> elliott: a haskell opencl binding?
19:28:23 <copumpkin> are you saying that opencl itself sucks to bind to?
19:28:25 <elliott> copumpkin: I'm trying to make http://hackage.haskell.org/package/OpenCLWrappers less terrible :P
19:28:47 <elliott> Most of my issues are with the wrapper, and almost all of those issues are inherited from the dead package it's forked from
19:28:55 <elliott> But I'm too busy yelling at everything :P
19:29:11 <copumpkin> please make it not suck
19:29:43 <elliott> copumpkin: That's a long-term goal. My short-term goals look like "make it use exceptions rather than threading around (IO (Either ErrorCode Result)) ABSOLUTELY EVERYWHERE".
19:29:53 <elliott> And "Make it use ForeignPtrs rather than making you free everything" :P
19:29:59 <Ngevd> It's a long shot, but is anyone here in my ancient history class?
19:29:59 <copumpkin> o.O
19:30:13 <copumpkin> Ngevd: I may be old, but I'm not that old
19:30:36 <elliott> copumpkin: I should clarify, it's not ALWAYS (Either ErrorCode r). If r would be (), it's instead (Maybe ErrorCode).
19:30:40 <elliott> Just to keep things interesting, I guess!
19:30:49 <copumpkin> lol
19:31:05 <elliott> copumpkin: did I show you combineOr? I forget :P
19:31:10 <copumpkin> nope
19:31:20 <elliott> copumpkin: https://github.com/jkarlson/OpenCLWrappers/blob/master/System/OpenCL/Wrappers/Utils.hs#L71
19:31:32 <copumpkin> lol
19:31:42 <copumpkin> wtf is that
19:31:56 <elliott> copumpkin: it's used in exactly one place, on a list of Foo where Foo is a newtype of CLulong
19:32:09 <copumpkin> deriving (Bits)
19:32:16 <elliott> copumpkin: i just unwrapped the newtype instead
19:32:25 <elliott> foldl' (.|.) 0 [ foo | Cons foo <- xs ]
19:32:28 <copumpkin> derive bits on the newtype and it'll just work
19:32:36 <elliott> yeah I might
19:32:37 <Ngevd> Why do so many esolangers start with a BF derivative?
19:33:02 <elliott> hmm, I wonder if I should offer an interface to this awful refcounting stuff
19:33:12 <elliott> I /think/ some of these can allocate GPU memory
19:33:27 <elliott> i'm tempted to just remove them so that you can't cause segfaults that easily
19:35:09 -!- aloril has joined.
19:35:19 <Ngevd> Hello aloril
19:35:29 <Phantom_Hoover> The enigma that is aloril.
19:37:24 <elliott> oh, i was going to ask ais523 but then i realised he uses CUDA
19:37:50 <ais523> I don't really use CUDA, more I've seen it before
19:38:13 <elliott> ais523: You complained about the toolkit once and said you might switch to OpenCL if it keeps getting worse?
19:39:00 <ais523> my boss did that
19:39:08 <elliott> Well, you're the one who said it.
19:39:10 <ais523> but the toolkit was getting worse over time, although it was quite good to start with
19:39:23 <ais523> it's him who complained, I reported the complaint here (and I agree with it)
19:40:16 <elliott> You reported it silently, at least :P
19:40:22 -!- Phantom_Hoover has left ("Leaving").
19:40:28 -!- Phantom_Hoover has joined.
19:40:39 <elliott> bye Phantom_Hoover
19:40:40 <elliott> hi Phantom_Hoover
19:40:54 <Phantom_Hoover> I've *got* to work out what that thing is which makes rolling my hand on the left of the touchpad close the chat tab.
19:41:16 <elliott> OK, I think that these actually do use GPU RAM...
19:41:25 <Phantom_Hoover> Anyway, ais523, CAN HUMIDITY, FLUORESCENT LIGHTS AND MICROWAVES KILL COMPUTERS?????
19:41:28 <elliott> Eh, I'll just keep exposing the free function.
19:41:34 <elliott> oh hmm wait
19:41:41 <elliott> that's not safe, since it might get re-freed
19:44:58 <ais523> Phantom_Hoover: I advise against microwaving a computer
19:45:20 <Phantom_Hoover> oh noooooooooo
19:45:35 <Phantom_Hoover> For you see, I left my motherboard in the microwave to get rid of the humidity.
19:54:05 -!- augur has joined.
19:57:34 <Ngevd> May I enquire as to the presence of cliques amongst schools in the UK?
19:57:55 <Phantom_Hoover> You may, although why you think you'll get answers here is anyone's guess.
19:58:16 <Ngevd> You go to school in the UK
19:58:33 <Ngevd> So do I
19:58:49 <Ngevd> ais523 does something that may have something to do with schools in the UK
19:58:56 <Phantom_Hoover> Universities, actually.
20:04:56 <elliott> ais523 is a ``Ph.D. student''.
20:04:58 <elliott> (Hobo.)
20:05:38 <Ngevd> elliott, I don't know what elliott does
20:05:52 <elliott> I'm a hobo assistant.
20:06:04 <Ngevd> Aah
20:06:27 <Ngevd> Seriously, where do you get your education?
20:06:37 <Ngevd> Because I want to steal it
20:10:41 <elliott> Ngevd: hobo store
20:34:30 <pikhq_> elliott is a student of some sort; personally, I've not kept track of which bit of secondary education he's in.
20:35:31 <elliott> You're all hobophobic.
20:35:34 -!- elliott has left ("Leaving").
20:35:41 -!- elliott has joined.
20:35:49 <elliott> OK I can't get over how that sounds like "homophobic" said by someone with a cold.
20:37:52 -!- CakeProphet has joined.
20:37:52 -!- CakeProphet has quit (Changing host).
20:37:52 -!- CakeProphet has joined.
20:38:01 <CakeProphet> hi my name is Adam and I'm addicted to IRC
20:38:22 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
20:38:23 <Ngevd> Hi Adam, I'm Nathan and I'm smug and think I'm better than you
20:38:36 <CakeProphet> bah, I knew it.
20:39:43 <CakeProphet> help I picked a bad topic for this crap
20:40:32 <CakeProphet> but I now have a giant bottle of caffeinated energy soda.
20:40:40 <Ngevd> Did we ever get invaded by Haskellites?
20:40:46 <Gregor> Nope.
20:40:52 <Gregor> They all ran away when they saw my snarky comment.
20:40:54 <CakeProphet> #esoteric /is/ Haskellites, largely.
20:41:10 <elliott> There are at least three people in here who came from #esoteric.
20:41:11 <elliott> And one bot.
20:41:18 <elliott> erm.
20:41:20 <elliott> From #haskell.
20:41:27 <Gregor> There are a lot of people in here who came from #esoteric .
20:41:29 <Gregor> And several bots.
20:41:30 <Ngevd> I came from the wiki
20:41:35 <CakeProphet> elliott: you mean regulars?
20:41:39 <CakeProphet> or like, today... recently
20:41:44 <CakeProphet> three random people appeared
20:41:48 <CakeProphet> and a new bot
20:42:02 <elliott> Oh, it's actually two. kmc no longer graces us with his presence :'(
20:42:05 <elliott> `quote kmc
20:42:08 <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks \ 720) <shachaf> You should get kmc in this channel. kmc has good quotes. <shachaf> `quote kmc <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks <shachaf> Well, in theory.
20:42:55 <CakeProphet> also by Haskellites I mean "one who fondly regards and practices in the deep ways of Haskell voodoo"
20:43:00 <CakeProphet> not #haskellites
20:43:14 <elliott> is there a difference
20:43:17 <CakeProphet> yes.
20:43:27 <CakeProphet> I am a Haskellite and not a #haskellite
20:43:41 <elliott> ha ha ha well
20:43:44 <elliott> okay then
20:43:57 <shachaf> elliott: kmc is on vacation.
20:44:03 <CakeProphet> also monqy?
20:44:05 <elliott> Vacation from BEING INTERESTING.
20:44:07 <Ngevd> I meant people who religiously obey the works of Mr Curry
20:44:20 <elliott> monqy is an hornonronoronrorary #haskell member.
20:44:21 <CakeProphet> and uh... elliott, but not elliottt
20:44:41 <elliott> both elliott and elliottt are in #haskell
20:44:53 <shachaf> elliott: I didn't "come from #haskell".
20:45:05 <shachaf> At least, I didn't hear about #esoteric in #haskell. I'm pretty sure.
20:45:15 <elliott> shachaf: Where did you come frmo,t hen?
20:45:19 <CakeProphet> shachaf: you are a migrate.
20:45:21 <elliott> Oh, edwardk has been in here before too.
20:45:27 <elliott> But not from #haskell.
20:45:29 <CakeProphet> in a geographical system in which people my simultaneously exist in two locations
20:45:34 <elliott> And... who else was it?
20:45:34 <CakeProphet> s/my/may/
20:45:38 <elliott> shapr.
20:45:39 <elliott> shapr's been in here.
20:45:47 <elliott> At least I think it was him.
20:46:12 <shachaf> elliott: No idea.
20:46:42 <CakeProphet> also I suspect several #haskellites are in fact #esoteric migrants.
20:47:05 <CakeProphet> what this means: I have no idea
20:47:30 <Ngevd> Before I came here, I had never heard of Haskell
20:47:39 <Ngevd> I had barely heard of the freenode IRC server
20:48:05 <CakeProphet> -- Ngev's conversion account
20:48:28 <Ngevd> There is a d in my name, gorram it
20:48:33 <CakeProphet> "Before I came to #esoteric, I had never even hurd of Befunge, but soon I felt His glory."
20:48:38 <monqy> hi im back from leaving like then
20:48:45 <Ngevd> Hurrah!
20:48:53 <elliott> Ngevd: You realise you came here in July :P
20:48:59 <Ngevd> Yes
20:49:24 * CakeProphet is an ancient antediluvian, sort of.
20:49:37 <Ngevd> And now I am able to write an almost funtioning bf interpreter in Haskell
20:49:47 <CakeProphet> Ngevd: sweet
20:49:51 <CakeProphet> that was my first Haskell program
20:50:10 <Ngevd> And re-invented zippers... by thinking of how to implement bf in Piet
20:50:18 <monqy> I...forget what my first haskell thing was
20:50:59 <Ngevd> My first Haskell thing translated brainfuck to Piet assembler
20:51:12 <monqy> mmm
20:51:20 <Ngevd> It was designed to take advantage of oerjan's work
20:51:27 <monqy> the first thing i can remember doing was just a boring markov irc bot :(
20:51:36 <monqy> but I may have done some stuff before then
20:51:41 <elliott> monqy: why :( markov irc bots are great
20:51:43 <Ngevd> Hence it only used a tape size of three
20:51:48 <monqy> elliott: i guesssssssss.....
20:51:54 <Ngevd> elliott, boring ones aren't
20:51:58 <elliott> monqy: hi fungot
20:51:59 <fungot> elliott: hey, i wanted to talk to a t-rex... nostalgia, doesn't that make them equally valid? like, a pirate. we've all been there.
20:52:02 <monqy> it wasn't TOO boring
20:52:07 <monqy> it just wasn't SPECTACULAR
20:52:24 <monqy> but i love programming languages stuff and i think compiling to piet is nifty
20:52:27 <monqy> so
20:52:50 <Ngevd> It compiled to Piet assembler. It needs another program to actually output Piet
20:53:01 <Ngevd> The only program that exists is written in Perl
20:53:44 <monqy> oh..
20:53:58 <monqy> is piet assembler any interesting
20:54:52 <CakeProphet> http://pastebin.ca/538375
20:54:53 <monqy> could you make a compiler to piet that "optimized" programs into looking kind of like pretty pictures
20:55:02 <CakeProphet> "Thanks to CakeProphet for his tremendous help"
20:55:06 <CakeProphet> I don't remember any of this.
20:55:33 <CakeProphet> I'm guessing this was back when I frequented #python
20:55:42 <monqy> how was it
20:55:44 <monqy> #python, that is
20:55:47 <monqy> I'm afraid of it
20:55:50 <CakeProphet> and spent considerable amounts of time actually helping people with Python questions.
20:55:58 <CakeProphet> monqy: it's, meh.
20:56:05 <CakeProphet> about the same as any other programming language channel (except #haskell)
20:56:30 <CakeProphet> people there are generally helpful, but others can be rude and unecessarily pedantic. others simply don't know what they're talking about.
20:56:45 -!- Phantom_Hoover has joined.
20:57:20 <shachaf> CakeProphet: That's true of #haskell too.
20:57:22 <CakeProphet> monqy: also it is incredibly easy to write "unreadable" code, by Python standards.
20:57:39 <monqy> what's "unreadable"?
20:57:41 <CakeProphet> *by people who program in Python and are bad at reading code
20:57:45 <CakeProphet> monqy: subjective, mostly.
20:58:08 <monqy> I'm afraid I'd have trouble reading a lot of "readable" python code, and would do better with some less "readable" stuff
20:58:14 <elliott> shachaf++
20:58:23 <elliott> #haskell used to be better :(
20:58:28 <monqy> :(
20:58:42 <elliott> (Most importantly, it used to not go at a thousand lines per second :P)
20:58:44 <CakeProphet> #esoteric used to be better, then elliott came along. >:(
20:58:53 <elliott> CakeProphet: It so wasn't better, I've read the logs.
20:58:57 * shachaf can't fathom #esoteric without elliott.
20:58:57 <CakeProphet> (ha. ha. ha ha.)
20:58:58 <elliott> You were so stupid :'(
20:59:08 <CakeProphet> elliott: but look at how much I've changed!
20:59:09 <elliott> shachaf: It was much quieter.
20:59:13 <elliott> CakeProphet: Exactly! Not at ALL!
20:59:19 <monqy> elliott is the life of the party
20:59:37 <CakeProphet> elliott: surely I have.
20:59:50 <CakeProphet> it's been... what.. 4 years now?
20:59:53 <CakeProphet> 5?
21:01:52 <CakeProphet> when I joined this channel I had maybe a few months of experience with Python.
21:02:01 <CakeProphet> now I am a VERITABLE MASTER (not really)
21:04:51 <CakeProphet> also, a transformation is about to take place (I think)
21:05:00 <elliott> what transformation
21:05:03 -!- CakeProphet has changed nick to Kallisti.
21:05:05 <Kallisti> BAM
21:05:11 * Kallisti waits for Freenode staff.
21:05:12 <elliott> i should have nabbed that before you
21:05:15 <elliott> Kallisti: oh they take hours
21:05:24 <Kallisti> elliott: I WILL WAIT
21:05:28 <Kallisti> AND YOU WILL NOT HAVE THIS NICK
21:05:42 <Kallisti> CakeProphet is a silly name anyway. this is much better.
21:06:09 <elliott> if you change nicks permanently im putting you on ignore
21:07:42 <Ngevd> I changed nicks permanentlish
21:08:01 -!- oerjan has joined.
21:08:07 <Ngevd> oerjan!
21:08:13 <oerjan> Ngevd!
21:08:30 <Ngevd> How're you?
21:08:38 <Kallisti> elliott: OH LOOK IT TOOK LIKE 10 MINUTES FOR STAFF TO DROP THE NICK
21:08:41 <Kallisti> what now?
21:08:49 <Kallisti> elliott: also you're just looking for an excuse to ignore me.
21:09:33 <Ngevd> Soon no-one's nick here will be the same as their wiki username!
21:10:06 <Kallisti> speaking of which
21:10:09 <Kallisti> I should change wiki usernames
21:10:26 <elliott> Ask an admin.
21:10:33 <Kallisti> ais523: hi
21:10:48 <Kallisti> ais523: er, excuse me. hi?
21:10:52 <Kallisti> hi is not a valid question
21:11:02 <ais523> hi
21:11:10 <ais523> and I can't change wiki usernames
21:11:13 <Kallisti> :(
21:11:13 <ais523> you need to ask Graue
21:11:19 <Kallisti> how about I just
21:11:22 <Kallisti> make a new username
21:11:25 <Kallisti> and move everything to that.
21:11:39 <Kallisti> or well, just start fresh basically. because my current user stuff is pointless :P
21:12:45 <Kallisti> a new era of legitimacy. yes. that is definitely what will happen.
21:13:12 <Kallisti> what with my unfinished regex language and clusterfuck graph automaton and now this idea for a reversible graph thing.
21:13:29 <Kallisti> shit will be graphed and regular expressioned the fuck out.
21:15:08 * Kallisti joins ##c just to see what it's like.
21:15:16 <Kallisti> silent.
21:15:37 <Kallisti> 422 silent people.
21:15:44 <Kallisti> they must be debugging C programs.
21:17:05 <Kallisti> Sgeo: upderpinski triangle
21:17:13 -!- Phantom_Hoover has quit (Quit: Leaving).
21:17:28 -!- Phantom_Hoover has joined.
21:21:38 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
21:21:42 -!- Phantom__Hoover has joined.
21:23:48 <Kallisti> elliott: hmm, do you think Great Britain looks more like a venus fly trap or a weird jagged bifurcated penis.
21:24:02 <oerjan> <Sgeo> Write a Num instance for (a -> a) -> (a -> a)
21:24:13 <oerjan> the trouble is, you _really_ want a forall a. first
21:24:28 <oerjan> otherwise you cannot define things like multiplication
21:25:43 <oerjan> hm i think. lessee.
21:26:18 <oerjan> :t ?m (?n (f :: Int -> Int)) :: Int -> Int
21:26:19 <lambdabot> No instance for (SimpleReflect.FromExpr Int)
21:26:20 <lambdabot> arising from a use of `f' at <interactive>:1:8
21:26:20 <lambdabot> Possible fix:
21:26:24 <oerjan> argh
21:26:29 <oerjan> :t ?m (?n (?f :: Int -> Int)) :: Int -> Int
21:26:30 <lambdabot> forall t. (?f::Int -> Int, ?m::t -> Int -> Int, ?n::(Int -> Int) -> t) => Int -> Int
21:26:51 <oerjan> ok i guess multiplication might work
21:27:23 <copumpkin> we need linear implicit parameters
21:27:31 <copumpkin> pity they killed them
21:27:34 <Kallisti> elliott: either way it is clearly dwarfed by the long bifurcated dick of Scandinavia.
21:27:36 <oerjan> :t ?m ?n (?f :: Int -> Int) :: Int -> Int
21:27:37 <lambdabot> forall t. (?f::Int -> Int, ?m::t -> (Int -> Int) -> Int -> Int, ?n::t) => Int -> Int
21:27:37 <Kallisti> copumpkin: what is that?
21:27:55 <copumpkin> a feature GHC supported way back before I started haskell
21:28:04 <copumpkin> http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue2/FunWithLinearImplicitParameters
21:28:07 <oerjan> exponentiation won't work
21:29:52 <Kallisti> `log elliott.*CakeProphet.*implicit.*parameters
21:29:58 <HackEgo> 2011-11-21.txt:21:29:52: <Kallisti> `log elliott.*CakeProphet.*implicit.*parameters
21:30:01 <Kallisti> :(
21:30:12 <Kallisti> `log elliott.*implicit.*parameters
21:30:17 <HackEgo> 2011-09-22.txt:17:43:20: <elliott> Implicit parameters are a misfeature and should never be used; nobody at all wants them to stay in the language, and they've been used approximately once.
21:30:36 <elliott> Make that twice, then.
21:30:47 <elliott> lambdabot and an article in the Monad.Reader.
21:31:58 <Kallisti> I dunno, I think implicit parameters can be good.
21:32:07 <Kallisti> but they need to be used wisely.
21:32:22 <Kallisti> and not because you're bad at writing Haskell. :P
21:33:28 <elliott> Kallisti: There's an example piece of code where giving it the inferred type signature changes its semantics with implicit parameters, IIRC.
21:33:44 <Kallisti> o_0?
21:36:30 <oerjan> <oerjan> ok i guess multiplication might work <-- well, although only with the more complicated type ((a -> a) -> a -> a) -> (a -> a) -> a -> a
21:37:21 <Kallisti> oerjan: I can't wait to see what church complex numbers would look like.
21:37:38 <oerjan> gah
21:37:42 <Ngevd> The numbers themselves would just be a pair
21:37:54 <Ngevd> It's the associated functions that make them interesting
21:37:55 <elliott> copumpkin: this article was interesting until they whipped out the unsafe functions
21:38:02 <Kallisti> church binary search tree?
21:38:35 <oerjan> Kallisti: there is a process for converting any adt to church representation
21:38:57 <oerjan> even gadt's according to what i recently read on reddit
21:39:01 * copumpkin shrugs
21:40:11 <elliott> Kallisti: ah yes, it is even referenced in that article: "So the semantics of the program depends on whether or not foo has a type
21:40:11 <elliott> signature. Yikes!"
21:40:31 <elliott> oh, that was linear implicit parameters
21:40:38 <monqy> yikes
21:42:49 <Kallisti> *has an explicit type I assume
21:44:08 <elliott> Kallisti: not quite:
21:44:10 <elliott> "It is important that we give a real type signature:
21:44:10 <elliott> x :: Int = reflect [0,1] does not make any difference!"
21:44:17 <elliott> but x = reflect [0,1] :: Int might
21:46:58 <Kallisti> I wasn't even aware you could declare types on patterns.
21:47:29 <Kallisti> er, well, x isn't really a pattern actually
21:48:06 <Kallisti> > let x :: Int = 2 in x
21:48:07 <lambdabot> 2
21:48:32 <Kallisti> > let [x,y] :: [Int] = [1,2] in x
21:48:33 <lambdabot> 1
21:48:56 <elliott> it's an extension
21:49:03 <elliott> very useful with exceptions
21:49:09 <elliott> m `catch` \(_::Foo) -> ...
21:49:39 <Kallisti> ah, so you can use it to make case statements on different types in a typeclass.
21:49:43 <Kallisti> that's useful.
21:50:08 <Kallisti> ....right?
21:50:31 <Kallisti> er, no
21:51:24 <Kallisti> but you can use it in lambdas passed to higher order functions to specify a concrete type.
21:52:30 <Kallisti> type-based case expressions would be fun. I guess you can achieve that with Typeable actually.
21:52:42 <oerjan> the haskell new exception system uses some tricks to essentially allow it to do "case statements on different types" in the Exception typeclass.
21:52:54 <oerjan> so that's what catch relies on
21:53:11 <Kallisti> oerjan: you just chain together catches?
21:53:25 <oerjan> no, there
21:53:26 * Kallisti has never used exception handling in Haskell.
21:53:36 <oerjan> 's a specific function for taking a list
21:53:42 <Kallisti> ah okay.
21:53:53 <oerjan> well, you can chain together too, i guess
21:54:23 <Kallisti> :t catch
21:54:24 <lambdabot> forall a. IO a -> (IOError -> IO a) -> IO a
21:54:40 <oerjan> that's the IO catch from the report, which is much more limited
21:54:47 <oerjan> :t Control.Exception.catch
21:54:48 <Kallisti> IOError is an existential I'm guessing.
21:54:48 <lambdabot> forall a e. (GHC.Exception.Exception e) => IO a -> (e -> IO a) -> IO a
21:55:01 <oerjan> Kallisti: no i think it's an actual ADT
21:55:03 <Kallisti> oh
21:55:09 <Deewiant> type IOError = IOException
21:55:13 <oerjan> the haskell report has no existentials
21:55:16 <Deewiant> data IOException
21:55:32 -!- Patashu has joined.
21:55:43 <Kallisti> oerjan: so do you actually use exceptions?
21:55:52 <Kallisti> I think I've seen elliott use them.
21:56:21 <elliott> If you don't use exceptions, you don't write much non-boilerplate code in IO
21:56:38 <elliott> <oerjan> the haskell new exception system uses some tricks to essentially allow it to do "case statements on different types" in the Exception typeclass.
21:56:42 <elliott> oerjan: it's not _that_ tricky :P
21:56:43 <oerjan> i cannot recall if i've used them
21:56:43 <Kallisti> or don't write fault-tolerant IO code.
21:56:46 <elliott> it's just Typeable
21:56:51 <elliott> Kallisti: it's not about fault-tolerance
21:57:00 <oerjan> elliott: well ok it's really just Typeable, the extra trick is for the subtyping
21:58:40 <oerjan> most things i've written are very mathematical, so not very complicated IO
21:59:55 <elliott> oerjan: i think Kallisti is living under the delusion that you write actual programs
21:59:59 <elliott> and are, shall we say, a "programmer"
22:00:01 <oerjan> and not much need to actually catch erros
22:00:04 <oerjan> *rs
22:00:15 <oerjan> possible.
22:00:23 <elliott> oerjan has no need for love
22:00:33 <oerjan> hey! :(
22:00:35 <Kallisti> lol
22:00:53 <Kallisti> elliott: HA HA HA POLYGLOT PUN
22:01:08 <Kallisti> polyglot typo pun
22:01:10 <Kallisti> or something.
22:01:52 <oerjan> elliott: wait what, i assuming you are making a pun on eros but that really doesn't fit there.
22:02:03 <elliott> that was the joke :P
22:02:19 <Kallisti> oerjan: I think elliott is living under the delusion that you are a non-mythical human being.
22:02:20 <oerjan> *am
22:02:26 <Kallisti> and are, shall we say, "not a viking"
22:02:36 <oerjan> ...says someone called "Kallisti".
22:03:10 <Kallisti> oerjan: obviously I am an apple.
22:03:15 -!- pkzip has joined.
22:03:18 <Kallisti> and not a human being
22:03:22 <oerjan> yeah
22:03:23 <elliott> hi pkzip we missed you!!!
22:03:36 <oerjan> we were getting all uncompressed!
22:03:58 <pkzip> I am logged as pkzip ? I thought my changed nickname wud
22:04:03 <pkzip> kick in by now
22:04:07 <Kallisti> elliott: which nick do you hate the most? CakeProphet or Kallisti?
22:04:13 <elliott> pkzip: you have to change it in your client settings
22:04:19 <Kallisti> your opinion is important, or something.
22:04:20 <pkzip> I know
22:04:21 <pkzip> that
22:04:22 <elliott> Kallisti: every time I see "CakeProphet" I puke
22:04:30 <Kallisti> good.
22:04:35 <monqy> Kallisti: it's how he stays thin
22:04:39 <elliott> Kallisti: and
22:04:41 <elliott> i hate puking
22:04:42 <elliott> and
22:04:43 <oerjan> i see elliott is trying the old reverse psychology
22:04:43 <elliott> i hate you
22:04:46 <elliott> and i will hate you even more if you do that
22:04:47 <elliott> and
22:04:49 <elliott> i might leave forever
22:05:10 <monqy> or is it double-reverse
22:05:13 <Kallisti> elliott: oh no, I want to APPEAR NON-OBNOXIOUS AMONGST MY PEERS. :>
22:05:21 <elliott> you're failing
22:05:21 <Kallisti> his reverse psychology is not working.
22:05:22 <elliott> really badly
22:05:35 <monqy> I wonder if my name has ever annoyed anyone
22:05:36 -!- derdon has quit (Remote host closed the connection).
22:06:16 <oerjan> YOU MISSPELLED MONKEY KILL KILL KILL
22:06:33 <Kallisti> oerjan: stop misspelling monqy
22:06:57 <Kallisti> 17:04 < elliott> and i will hate you even more if you do that
22:06:59 <Kallisti> do what exactly
22:07:04 <Kallisti> I don't recall mentioning the doing of anything.
22:07:06 <elliott> become CakeProphet
22:07:10 <Kallisti> oh.
22:07:11 -!- Ngevd has quit (Quit: Goodbye).
22:07:23 <pkzip> The Cake WILL APPEAR
22:07:25 <Kallisti> elliott: so wait, now oerjan has me confused.
22:07:30 <monqy> I think I numbed to "cakeprophet"
22:07:31 <Kallisti> ...
22:07:44 -!- Kallisti has changed nick to kallisti.
22:07:47 <kallisti> much better
22:07:47 <monqy> yes good
22:07:57 <monqy> or was Kallisti better
22:08:04 <kallisti> no.
22:08:07 <monqy> ok
22:08:20 <oerjan> one of these days my nick history database will overflow and everyone i don't recognize will be banned.
22:08:34 <elliott> /nick poop
22:08:54 <monqy> I've changed my name twice (or thrice, if you count my temporary name after I decided I didn't want my first name but before I decided on my second)
22:09:07 <monqy> I don't think I joined here before I had settled on monqy though
22:09:20 <elliott> monqy: what were your namnesemz
22:09:22 <elliott> z
22:09:23 <elliott> zzzzzzzzzzzzzzzz
22:09:27 * elliott slep in chanel
22:09:33 <monqy> the one before monqy was monky
22:09:40 <elliott> and before that money?
22:09:44 <monqy> no
22:09:44 <elliott> money to monqy a two step process
22:10:11 <monqy> i don't like talking about things that happened before monky....
22:10:14 <oerjan> clearly it was wonky
22:11:06 -!- kallisti has changed nick to xxkallistixx.
22:11:09 <xxkallistixx> yeaaaaah this is way better
22:11:11 <elliott> monqy: were you................................... "dagoth ur, mad god"
22:11:26 <oerjan> elliott: i doubt that.
22:11:36 <monqy> i was not dagoth ur, mad god
22:11:50 <oerjan> unless he was doing some _really_ good trolling
22:11:52 -!- xxkallistixx has changed nick to xxk4111st1_darkb.
22:12:01 <xxk4111st1_darkb> awww
22:12:03 <elliott> were you: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac,
22:12:11 <elliott> xxk4111st1_darkb: btw ur spamming #haskell
22:12:12 -!- xxk4111st1_darkb has changed nick to kallisti.
22:12:12 <monqy> xxk4111st1_darkb: are you still in ##c and what else
22:12:13 <elliott> with
22:12:14 <elliott> nickchangse
22:12:17 <monqy> aha #haskell
22:12:24 <kallisti> elliott: SUCH UNINTENDED CONSEQUENCES AAAAH
22:13:03 <kallisti> monqy: not in C
22:13:19 <kallisti> monqy: currently #esoteric #freelance and #haskell
22:13:23 <oerjan> > var $ "were you: " ++ ((`replicateM` ['a'..'z']) =<< [1..])
22:13:24 <lambdabot> Couldn't match expected type `GHC.Types.Char'
22:13:25 <lambdabot> against inferred type...
22:13:25 <monqy> ##c missed the party
22:13:27 <oerjan> argh
22:13:32 <monqy> oerjan: no
22:13:33 <oerjan> > var $ "were you: " ++ concat ((`replicateM` ['a'..'z']) =<< [1..])
22:13:35 <lambdabot> were you: abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasa...
22:13:36 <monqy> none of them
22:13:39 <oerjan> oops
22:13:43 <Vorpal> <elliott> monqy: were you................................... "dagoth ur, mad god" <-- playing TES I see?
22:13:48 <kallisti> monqy: I imagine kallisti is probably a bit more serious sounding than CakeProphet on #freelance
22:13:49 <oerjan> aha!
22:13:49 <elliott> nope
22:13:55 <Vorpal> oerjan: ?
22:13:59 <kallisti> not that anyone actually uses #freelance, but occasionally they do, and occasionally I grab their moneyz
22:14:00 <Phantom__Hoover> ais523 help
22:14:13 <monqy> is frelans any good
22:14:16 <kallisti> no
22:14:17 <ais523> Phantom__Hoover: it won't get damaged…
22:14:24 <Vorpal> elliott: dagoth ur is morrowind isn't it?
22:14:24 <kallisti> monqy: it's probably your version of hell or something.
22:14:30 <monqy> :(
22:14:36 <Vorpal> yep
22:14:39 <Phantom__Hoover> but the new case is all painted will the paint kill it with static???
22:14:46 <oerjan> Vorpal: i see you have not been acquainted with our wonderful wiki friend dagoth ur
22:15:02 <monqy> , mad god
22:15:06 <Vorpal> oerjan: the only Dagoth Ur I know of is this one: http://www.uesp.net/wiki/Morrowind:Dagoth_Ur_%28god%29
22:15:06 <kallisti> monqy: people come on every few days asking if anyone knows PHP, Django, .NET, HTML, CSS, JS, insert-CMS-of-choice, insert-web-framework-of-choice
22:15:17 <Vorpal> oerjan: and elliott did say mad god
22:15:18 <Vorpal> so...
22:15:28 <elliott> Vorpal: http://esolangs.org/wiki/Esme
22:15:35 <kallisti> Vorpal: hi what is your skyrim character
22:15:35 <monqy> http://esoteric.voxelperfect.net/wiki/Hashes
22:15:51 <Vorpal> elliott: oh I see. Well that explains it.
22:15:51 <elliott> monqy: did you ever see esme
22:15:53 <elliott> oh yes you did
22:15:57 <Vorpal> kallisti: err what? Who are you?
22:15:59 <monqy> i even heard esme
22:16:01 <Phantom__Hoover> Oh, that Dagoth Ur!
22:16:02 <kallisti> Vorpal: I made wrinklefucker the Breton warlock knight.
22:16:08 <kallisti> he is now level 8! yessss
22:16:15 <Phantom__Hoover> monqy, you have had the rite of passage.
22:16:19 <Vorpal> kallisti: nord, mage/theif kind of mix.
22:16:23 <Phantom__Hoover> I too was accused of being Dagoth Ur.
22:16:25 <Vorpal> thief*
22:16:27 <kallisti> Vorpal: heh, nord, IMAGINE THAT
22:16:53 <Vorpal> kallisti: well I was planning to play something else later on, when some bugs have been fixed and check if dialogue differs
22:16:57 <Vorpal> depending on race
22:17:12 <Phantom__Hoover> no spoilers thx
22:17:18 <Vorpal> Phantom__Hoover: none really atm?
22:17:31 <Vorpal> kallisti: besides I suspect my save game is BADLY bugged. Nirnroot respawns. Surely that is wrong...
22:17:46 <Vorpal> unless they broke the lore badly in skyrim
22:17:50 <Phantom__Hoover> Well I know there are things called Bretons, also warlocks and knights, also nirnroots?
22:17:57 <kallisti> Vorpal: I'm greatly enjoying the heavy armor one-handed conjuration alteration mix. I find destruction kind of boring.
22:18:30 <kallisti> but conjuring weapons and minions as I run around in platemail slashing things up is fun.
22:18:35 <Vorpal> Phantom__Hoover: dude bretons are like a race, you get to select on character creation. warlock and knight would be more a description of skill set, since there are no actual classes
22:18:43 <Vorpal> Phantom__Hoover: and nirnroots were in oblivion
22:18:50 <Phantom__Hoover> Vorpal this is still SPOILERS
22:19:03 -!- ais523 has quit (Remote host closed the connection).
22:19:10 <Vorpal> Phantom__Hoover: I'm NOT going to avoid oblivion spoilers. Besides no one will explain what nirnroot is in skyrim, because they seem to assume you know from oblivion :P
22:19:25 <Phantom__Hoover> SPOILERS
22:19:25 <Vorpal> Phantom__Hoover: just don't read the liners with spoilers then?
22:19:38 <Phantom__Hoover> Vorpal surely even you can see why that's stupid
22:19:51 <Vorpal> Phantom__Hoover: You wanted a reason to ignore me anyway I'm sure of...
22:20:10 <Phantom__Hoover> No, of course not; you're interesting in a pathological way.
22:20:13 <Vorpal> kallisti: I found sneak attack "somewhat" overpowered
22:20:48 <kallisti> Vorpal: I imagine the daedric armor (best heavy armor in the game) will be very fitting to my skillset since I'll be summoning dremora lords, stealing souls with conjured weapons, and whatnot
22:21:04 <kallisti> Vorpal: bound weapons, at least in the early levels, are pretty overpowered as they're equivalent in quality to ebony weapons.
22:21:10 <kallisti> or so I've read.
22:21:24 <Vorpal> kallisti: is daedric armour heavy or light?
22:21:28 <Vorpal> I go for light armour
22:21:28 <kallisti> heavy.
22:21:33 <Vorpal> oh well, no use to me then
22:22:01 <kallisti> I'm going for a kind of warrior-mage tank so the heavy armor combined with enchants and armor spells will be nice.
22:22:06 <kallisti> also heavy armor perks.
22:22:28 <Vorpal> I did a sneak with two single handled ebony swords (flawless quality) on a undead boss in a dungeon. Took the initial 12x hit + two normal hits to kill
22:22:36 <Vorpal> I think that is kind of overpowered
22:22:53 <kallisti> yes probably.
22:23:01 <Vorpal> kallisti: and I heard you can get up to 30x backstab bonus with perks and the right armour!
22:23:07 <kallisti> the game definitely isn't difficult, probably my main complaint about it.
22:23:10 <Vorpal> which is utterly absurd
22:23:19 <Vorpal> kallisti: try changing the difficulty slider
22:23:22 <kallisti> I suppose one could turn the difficult -- yes
22:23:24 <Vorpal> I played on normal
22:23:32 <Vorpal> whatever they called that
22:23:56 <Vorpal> kallisti: anyway sneak won't work on dragons obviously. They tend to be perched out of reach
22:24:07 <Vorpal> kallisti: I think I was level 38 when I last played yesterday
22:24:14 <kallisti> I haven't decided if I want destruction or archery for ranged. I think as far as perks go I'll go with neither as I want to focus on heavy armor conjuration and 1H initially.
22:24:38 <kallisti> but archery is pretty enjoyable.
22:24:48 <Vorpal> kallisti: you kind of /need/ ranged to deal with dragons effectively. Unless you get a LOT of damage in during the brief periods they are on ground.
22:25:08 <Vorpal> I got fairly high destruction, 73 or something I think
22:25:42 <kallisti> Vorpal: well I believe magic resistance includes dragon fire.
22:25:44 <kallisti> I think?
22:25:48 <Vorpal> hm
22:25:57 <Vorpal> kallisti: I think it is a shout, so not sure how that works
22:26:04 <Vorpal> kallisti: besides there are frost dragons as well
22:26:12 <kallisti> hmmm
22:26:17 <kallisti> still I think it's all magic right?
22:26:25 <Vorpal> kallisti: I just try to be mobile and stay out of harms way
22:26:33 <kallisti> I was doing pretty well defensively with breton magic resistance + ward
22:26:38 <Vorpal> and use amulet of talos to reduce time between my shouts
22:27:18 <Vorpal> like slow time or <REDACTED SPOILER> which is very useful against <REDACTED SPOILER> because he is the <REDACTED SPOILER> of <REDACTED SPOILER>
22:27:33 <Vorpal> well might not be he, could be she or it for all I know
22:27:44 -!- Jafet has quit (Ping timeout: 244 seconds).
22:27:49 <kallisti> anyway the plan is to be be ridiculous in defense with heavy armor and alteration (dragonskin = 80% reduction of physical damage for 30 seconds)
22:28:03 <Vorpal> kallisti: if you progressed enough into the main quest you will know what I talk about :P
22:28:04 <kallisti> but I don't know to what extent armor helps against dragons.
22:28:10 <Vorpal> I'm nearing the end of that
22:28:10 <kallisti> Vorpal: I doubt I have.
22:29:09 <Vorpal> kallisti: right, no eponymous stuff yet?
22:29:31 <kallisti> um, no, I think?
22:29:38 <Vorpal> kallisti: anyway I think you need 100 in smithing to craft dragon armour?
22:29:44 <Vorpal> if it is heavy it just isn't worth it for me
22:29:52 <Vorpal> and I doubt dragon armour could be LIGHT armour
22:29:53 <kallisti> daedric armor = better than dragon heavy armor
22:29:55 <Vorpal> it just wouldn't fit
22:29:55 <kallisti> heavier too
22:30:04 <kallisti> but dragon light armr is the best light armor
22:30:10 <Vorpal> kallisti: I use thief guild quest armour mostly
22:30:11 <kallisti> also there's a perk that makes equipped armor /weightless/
22:30:14 <kallisti> so... yeah.
22:30:20 <Vorpal> sometimes brotherhood armour
22:30:30 <Vorpal> some of that give 2x backstab bonus
22:30:44 <Vorpal> <kallisti> also there's a perk that makes equipped armor /weightless/ <-- in heavy or light tree?
22:30:45 <kallisti> as far as I can tell the main benefit of light armor is the 50% stamina regen perk, also the stealth benefits.
22:30:47 <Vorpal> or both?
22:30:50 <kallisti> Vorpal: both
22:30:53 <Vorpal> right
22:31:04 <Vorpal> well I'm a stealthy mage who recently taken to backstabbing
22:31:32 <kallisti> I think you could probably get better armor by getting the mage armor alteration perk if you wanted.
22:31:43 <Vorpal> oh that yes
22:31:45 <Vorpal> I used that
22:31:46 <kallisti> however, light armor works well too and has some pretty good mage gear associated with it.
22:32:04 <Vorpal> kallisti: I enhanced the light magic armour from those quest lines.
22:32:13 <Vorpal> err smith enhanched that is
22:32:18 <Vorpal> not magic enhanced
22:32:29 <Vorpal> s/enhanched/enhanced/
22:32:47 <kallisti> I think my character is probably going towards the path of most ridiculous defense you can possibly achieve.
22:32:49 <Vorpal> kallisti: so which level are you?
22:32:52 <kallisti> 8. :)
22:32:55 <Vorpal> lol
22:32:59 <kallisti> I don't even own the game.
22:32:59 <Vorpal> not playing much then
22:33:03 <Vorpal> far from my 38
22:33:17 <kallisti> it's pretty easy to level from what I can tell.
22:33:27 <Vorpal> I went from 29 to 38 over the weekend
22:33:35 <kallisti> I got bored at one point and just start conjuring flame atronachs and killing them and got about 3 levels.
22:33:41 <Vorpal> heh
22:34:02 <Vorpal> kallisti: just remember: there are still some leveled monsters. You wan't to put a lot into combat skills
22:34:11 <Vorpal> I think dragons in particular are leveled
22:34:15 <Vorpal> from what I have been able to tell
22:34:25 <kallisti> ah okay. well I've been focusing mostly on one-handed and conjuration
22:34:30 <kallisti> which are both offensive.
22:34:53 <Vorpal> otherwise dragons at level 5 would not be as hard as dragons at level 38. Heck I think dragons are harder in the latter case.
22:35:03 * kallisti cannot wait to be able to summon /two/ dremora lords because one is already ridiculous enough.
22:35:07 <Vorpal> requires more player skill
22:35:14 <Vorpal> you can what?
22:35:19 <Vorpal> I never been one for conjuration
22:35:21 <kallisti> one of the last perks in conjuration.
22:35:23 <Vorpal> heh
22:35:26 <kallisti> is to be able to summon two things.
22:35:37 <Vorpal> I would LOVE to back stab a dragon though.
22:36:29 <Sgeo> What about retconjuration?
22:36:44 <Vorpal> kallisti: anyway you will need to put some effort into finding shouts. Ask the greyberds about if they found any until they tell you that they haven't. There are still words to be found, but you need to do some quest line to get those.
22:36:49 <Vorpal> Sgeo: what?
22:37:00 <Vorpal> Sgeo: ... that was terrible
22:37:26 <kallisti> Vorpal: the last perk in the "bound weapons" line of conjuration makes bound weapons banish summoned and daedric enemies.
22:37:29 <kallisti> Vorpal: does this sound useful?
22:38:15 <kallisti> oh wait not daedric specifically
22:38:22 <kallisti> "Bound weapons will banish summoned creatures and turn raised ones"
22:38:23 <Vorpal> kallisti: not really. I never had any issues with that since most summoned monsters I ran into so far have been elemental. Just use fireball for ice antewhatever
22:38:24 <Vorpal> and so on
22:38:40 <Vorpal> or skeletons
22:38:43 <Vorpal> and they are super eason
22:38:45 <Vorpal> easy*
22:38:48 <Vorpal> what a weird typo
22:38:53 <kallisti> I imagine the main benefit would be summoned daedric things.
22:39:10 <Vorpal> well, I have yet to see that
22:39:18 -!- derrik has quit (Quit: nites).
22:39:21 <Vorpal> besides enemies seem kind of rubbish in their wards
22:39:38 <Vorpal> kallisti: anyway I find sneaking much more enjoyable actually
22:39:50 <Vorpal> sad that the custom spell making of oblivion is gone
22:40:07 <Vorpal> 100% chameleon. What a nice spell to make...
22:40:10 <kallisti> Vorpal: they removed /many/ spells from Oblivion to Skyrim
22:40:17 <Vorpal> kallisti: AND the custom spell making
22:40:19 <Vorpal> but yeah
22:40:28 <Vorpal> kallisti: I had 100 in illusion in oblivion
22:40:30 <kallisti> on the plus side enchanted weapons are much better.
22:40:36 <Phantom__Hoover> Take it to #esoteric-skyrim please.
22:40:38 <Vorpal> kallisti: but I prefer being a make
22:40:40 <Vorpal> mage*
22:40:47 <Vorpal> Phantom__Hoover: stfu and ignore this discussion?
22:40:53 <Vorpal> Phantom__Hoover: no one else is talking anyway
22:41:24 <Phantom__Hoover> Vorpal, the same applied with Minecraft chat.
22:41:31 <Vorpal> actually it should go in #esoteric-minecraft because that is all about non-minecraft. Such as dwarf fortress
22:41:44 <Vorpal> by logic all game discussion should go there
22:41:48 <kallisti> Vorpal: I dunno I think it could possibly be useful.
22:41:54 <kallisti> the banishing perk
22:42:00 <kallisti> especially if you use bound weapons, which I do.
22:42:04 <Vorpal> hm
22:42:22 <Vorpal> kallisti: yeah I'm not into conjuration in any game really.
22:42:26 <kallisti> once you get awesome enchanted weapons the main benefit of bound weapons will be the perk that casts soul trap on anything you hit with bound weapons.
22:42:44 <kallisti> though there are enchanted weapons that do this as well.
22:42:58 <Vorpal> kallisti: I enjoyed the stealth elements of Deus Ex: Human Revolution. So there we go. Skyrim with cover system should be interesting
22:43:09 <Vorpal> I'm sure someone will mod that eventually
22:43:24 -!- zzo38 has joined.
22:43:36 <kallisti> Vorpal: I think they did make stealth a little more interesting than in Oblivion
22:43:41 <kallisti> more challenging anyway.
22:43:50 <kallisti> but then again, I try to sneak around in clunky heavy armor...
22:43:59 <Vorpal> kallisti: slightly yes. Doing away with chameleon made it harder...
22:44:13 <kallisti> but there's muffle and invisibility which is probably very helpful.
22:44:18 <Vorpal> kallisti: I'm glad they dropped the major/minor skill stuff
22:44:31 <Vorpal> still I think the proper way to do leveled monsters is NOT from your level
22:44:37 <Vorpal> rather it should compute a combat score
22:44:51 <Vorpal> based on offensive skills and also what type of armour you have
22:44:56 <kallisti> Vorpal: especially considering many people just do smithing shit for a while to build levels.
22:44:59 <Vorpal> oh and health of course
22:45:15 <zzo38> I think the proper way should be by counting. So that if you do too much kill same kind it is too difficult. ADOM does that but I think ADOM does it not quite enough
22:45:16 <Vorpal> but the thing is, leveling up max in smithing at an early stage should not make the game unplayable
22:45:27 -!- Jafet has joined.
22:45:59 <kallisti> Vorpal: on the plus side, you'll have badass weapons. :P
22:46:17 <Vorpal> kallisti: the score would take that into account, based on what weapons you actually have
22:46:35 <kallisti> honestly I like static levels for things.
22:46:46 <kallisti> level scaling makes the progression of an RPG entirely pointless.
22:46:53 <Vorpal> Same goes for enchanting, or speech. Probably different type of situations should use different equations. I mean pick-pocket should obviously be taken into account in some situations, but not other ones.
22:47:08 <Vorpal> kallisti: certainly, static levels should also exist
22:47:17 <Vorpal> kallisti: but you really really need leveled dragons for example
22:47:23 <kallisti> right.
22:47:42 <Vorpal> since you can pretty much visit them in any order, due to the game being, pretty much the sandbox of RPGs
22:47:43 <kallisti> except maybe for dragons that just chill in their gave with hoards of gold
22:47:48 <kallisti> harder dragons could have better loot.
22:47:51 <Vorpal> gah that comma was in the wrong place
22:48:03 <kallisti> I enjoy games that require you to use a little discretion.
22:48:04 <Vorpal> kallisti: "gave"?
22:48:08 <Vorpal> grave?
22:48:10 <kallisti> cave...
22:48:13 <Vorpal> oh
22:48:15 <oerjan> `addquote <CakeProphet> I like category theory because when you get over how damn weird it is it's still weird.
22:48:18 <HackEgo> 732) <CakeProphet> I like category theory because when you get over how damn weird it is it's still weird.
22:48:27 <Vorpal> kallisti: pretty sure there are no such dragons in skyrim
22:48:33 <Vorpal> they like to guard words though
22:48:34 <kallisti> Vorpal: totally should be
22:48:44 <kallisti> also: dragons that shapeshift into humans and have great influence over humanity.
22:48:47 <kallisti> I mean, think about it.
22:48:55 <Vorpal> kallisti: I think it is better if they /don't/ conform to the stereotype
22:49:05 <kallisti> if you're a dragon, you probably live a long time. You might become interesting in human affairs, and obtaining vast wealth and influence.
22:49:16 <kallisti> you're probably also magical, and you have infinite time to learn how to do things like shapeshift.
22:49:24 <Vorpal> kallisti: oh and I have to say becoming friends with the orc settlements was really useful. Some nice stuff to shop there.
22:49:35 <elliott> Vorpal: bad person
22:49:49 <Vorpal> kallisti: Unless you are orc you need to complete a fetch quest to be allowed in.
22:49:51 <Vorpal> elliott: what?
22:50:27 <Vorpal> elliott: I'm not really spoiling anything. I'm not saying anything like "it was X who did it in the Y's guild side quest line" or something like that
22:50:35 <elliott> friend with orc = bad person
22:50:53 <Vorpal> elliott: come on you can play an orc. And they are not tolkin style orcs really
22:50:53 <zzo38> elliott: Are you sure?
22:51:00 <kallisti> one mistake Skyrim made: dwarven quality weapons are not the best in the game.
22:51:09 <Vorpal> kallisti: how is that bad?
22:51:11 <kallisti> also, why is dwarf not a playable race if there are dwarven weapons.
22:51:16 <kallisti> Vorpal: because dorfs make the best weapons.
22:51:31 -!- Guest14567 has changed nick to Slereah.
22:51:40 <Jafet> "Dwarven" just means "made from dwemer metal", not "made by the ancient dwarves"
22:51:46 <Vorpal> kallisti: uh lore. See Morrowind why dwarfs died out/disappeared from our plane/disintegrated.
22:51:51 <elliott> what about yotuhful dwarves
22:51:56 <elliott> ytouhytful
22:51:58 <elliott> yoothufl
22:52:05 <Vorpal> kallisti: pretty sure there is in-game literature about it to...
22:52:06 <Vorpal> too*
22:52:08 <zzo38> Maybe just they don't want playable dwarf in that game.
22:52:14 <elliott> is it better than "cats of skyrim"
22:52:17 <elliott> (no)
22:52:19 <Vorpal> zzo38: there are reasons. It is complex lore.
22:52:22 <kallisti> Vorpal: sorry elder scrolls lore is boring.
22:52:39 <zzo38> Whatever game, they put restriction... such as, lighting things on fire is not allowed, or whatever.
22:52:59 <Vorpal> kallisti: well basically they tried to become gods to the whole race was wiped out, save for one guy who happened to be at another plane when it happened. He shows up in Morrowind.
22:53:01 <oerjan> @pl-resume
22:53:06 <Jafet> It's not not allowed, just not implemented
22:53:13 <lambdabot> ap id id (ap id id)
22:53:14 <lambdabot> optimization suspended, use @pl-resume to continue.
22:53:21 <Vorpal> kallisti: I haven't played enough Morrowind to get there, but that is what I understood from in-game books and the wiki.
22:53:32 <Deewiant> @pl-resume
22:53:47 <lambdabot> Plugin `pl' failed with: thread killed
22:53:58 <zzo38> Jafet: Then it means, for nearly any computer game, a lot of things are "just not implemented"
22:54:07 <Jafet> zzo: you sound surprised
22:54:08 <Vorpal> kallisti: anyway I find Elder scrolls lore quite exiting.
22:54:21 <kallisti> Vorpal: I definitely think the character skill system is improved, especially making it balanced so that every skill is a viable and useful for something.
22:54:23 <elliott> like jumping to -1
22:54:32 <elliott> Deewiant: YOU ENDED IT
22:54:43 <kallisti> like archery has some neat perk that make an archer playstyle more interesting.
22:54:46 <kallisti> *perks
22:55:00 <Vorpal> elliott: hit the key left of 1 (§ on my keyboard), I'm sure you can jump to -1 then.
22:55:02 <zzo38> Jafet: I am not surprised. It is as expected.
22:55:08 <Vorpal> (hint: that brings up the console)
22:55:28 <Vorpal> (you /will/ need it, there are /so/ many ways to get stuck in the terrain)
22:55:39 <kallisti> zzo38: for detailed world simulator see: dwarf fortress
22:56:01 <Vorpal> kallisti: btw skyrim is larger than it seems, as you will find out when proceeding with the main quest. Ever played Shivering Isles expansion for oblivion?
22:56:10 <kallisti> noep
22:56:13 <elliott> Vorpal: I'm not going to open the console.
22:56:14 <Vorpal> No it doesn't show up. But something just as graphically amazing does
22:56:36 <Vorpal> elliott: so you are going to reload an earlier save if you get stuck between a mill and a water wheel?
22:56:41 <Vorpal> that happened to me
22:56:46 <elliott> Guess I get to replay the game
22:56:50 <Vorpal> ...
22:56:53 <Vorpal> suuure
22:56:54 <kallisti> elliott: convince bay12 to give you source code access. challenge: give dorf fortress a 3D graphical frontend.
22:56:54 <elliott> Anyone who keeps a backlog of saves is a poop
22:57:19 <Vorpal> kallisti: you just mortally offended elliott
22:57:23 <zzo38> kallisti: I have once played dwarf fortress; a lot of character seem not playable, there seem a few other optionss missing too, and it runs very slowly. But I can see by looking at the files that comes with it that it implements a very large number of things. But even trying to do that, someone forgets something (that is for many games they try to put everything, they will always do so)
22:57:24 <Vorpal> I believe
22:57:41 <Vorpal> zzo38: dwarf fortress require a high end CPU
22:57:45 <Vorpal> which iirc you don't ahve
22:57:46 <Vorpal> have*
22:58:07 <Vorpal> wasn't it you who had like 224 MB RAM?
22:58:12 <Vorpal> which is absurdly small
22:58:17 <Jafet> His games must implement everything and run fast, of course.
22:58:33 <Vorpal> right
22:59:01 <zzo38> Jafet: I am not saying it must. I am just saying that even if they are supposed to, they don't.
22:59:18 <zzo38> There is different game, and depending on the game is supposed to be different. That is why you can make up a different game.
22:59:39 <Vorpal> I'm at the other end of that spectrum... i7, sandy bridge, 4 cores, 3.4 GHz, 16 GB RAM (I wouldn't call those specs absurd, upper end yes, but not absurd. I know someone with dual xeon i7 quads and 32 GB RAM, that is absurd for a desktop!)
23:00:15 <Jafet> Tip: most games run just as well on an i3 as an i7
23:00:23 <Vorpal> Jafet: I do other stuff than game.
23:00:26 <shachaf> Jafet: That's why I use an i1.
23:00:46 <Jafet> shachaf is the master of optimization
23:01:00 <Vorpal> Jafet: I do actually use this system to the fullest. I do HDR panorama photography. That requires a /lot/ of processing power to merge.
23:01:09 <Vorpal> both RAM and CPU
23:01:21 <Vorpal> somewhat on GPU too, due to offloading some computations to it
23:01:31 <Jafet> Most game developers are not masters of optimization.
23:02:05 -!- Slereah has quit (Read error: Connection reset by peer).
23:02:10 <Vorpal> Jafet: there is that too. I can barely play Witcher 2 on ultra. I prefer to play it on ultra minus super sampling
23:02:21 <kallisti> all the xbawks devs use C# and XNA which is actually not good.
23:02:23 <Vorpal> skyrim I can play on ultra as long as I don't run fraps
23:02:36 <shachaf> I offload computations to the BPU.
23:02:46 <Vorpal> shachaf: B for bullshit?
23:02:56 <Vorpal> kallisti: it works for simpler games. Just not for the really high end ones.
23:03:09 <Vorpal> kallisti: I mean, Magicka and Bastion both use XNA. They work just fine.
23:03:17 <Vorpal> Bastion is an awesome game btw.
23:03:24 <kallisti> Vorpal: magicka is written in XNA and subsequently cannot run on my laptop.
23:03:24 <shachaf> Vorpal: It took me about seven tries to find a letter that you could put in front of "PU" without it being an existing acronym ending in "processing unit". :-(
23:03:30 <Vorpal> kallisti: heh.
23:03:42 <Vorpal> shachaf: heh
23:03:51 <elliott> QPU
23:03:59 <shachaf> elliott: Taken.
23:04:03 <elliott> for what
23:04:03 <Vorpal> shachaf: wait, I can only thing of CPU, GPU, FPU. How can that take seven tries?
23:04:07 <kallisti> Vorpal: meanwhile: I can play WoW, Starcraft II, and Borderlands.
23:04:08 <monqy> 9pu
23:04:08 <Vorpal> quantum?
23:04:12 <oerjan> <lambdabot> Plugin `pl' failed with: thread killed <-- AWW
23:04:12 <monqy> @pu
23:04:12 <lambdabot> Not enough privileges
23:04:17 * shachaf doesn't like http://en.wikipedia.org/wiki/QPU
23:04:29 <Vorpal> my guess was right
23:04:44 <monqy> my guess was the same as your guess
23:04:45 <Vorpal> shachaf: which other ones were taken?
23:04:46 <shachaf> Yes.
23:04:50 <shachaf> But that page has no references.
23:04:55 <kallisti> Vorpal: monqy transitivity of is yes!
23:04:56 <shachaf> Let me see.
23:05:12 <Vorpal> kallisti: what?
23:05:17 <kallisti> hm?
23:05:21 <Vorpal> kallisti: grammar fail?
23:05:25 <kallisti> no
23:05:34 <kallisti> okay maybe
23:05:37 <shachaf> CPU GPU QPU APU PPU VPU SPU FPU NPU TPU
23:05:37 <Vorpal> kallisti: well I couldn't parse it, but then English is not my native language.
23:05:39 <shachaf> At least.
23:05:41 <Jafet> Where grammar fails, monqy succeeds
23:05:42 <kallisti> Vorpal: monqy: transitivity of is, yes!
23:05:43 <Vorpal> well APU I know what it is
23:05:49 <Vorpal> not related to computing
23:05:51 <Vorpal> oh wait
23:05:55 <Vorpal> there is that APU too
23:05:57 <Vorpal> Arithmetics
23:06:10 <Vorpal> but there is Auxiliary Power Unit as well
23:06:16 <kallisti> Vorpal: monqy: transitivity of "is", yes!
23:06:17 <kallisti> is that better?
23:06:21 <Vorpal> kallisti: hm okay
23:06:32 <Vorpal> kallisti: what is the context for it?
23:06:40 <kallisti> 18:04 < monqy> my guess was the same as your guess
23:06:48 <Vorpal> VPU would be vector I guess
23:06:59 <kallisti> Vorpal: your guess was correct, THEREFORE
23:07:00 <kallisti> ...
23:07:03 <kallisti> yeah
23:07:11 <Vorpal> right
23:07:22 <kallisti> it's so much more clevre now that I've explained it in detail.
23:07:40 <Vorpal> okay CPU, GPU, APU, FPU I know. VPU and QPU I could guess at. That leaves PPU SPU NPU and TPU
23:07:52 <Vorpal> TPU probably some trusted execution crap
23:07:59 <monqy> 66pu
23:08:05 <Vorpal> hm nope
23:08:07 <shachaf> Vorpal: Those aren't all!
23:08:09 <monqy> hellopu
23:08:12 <Vorpal> time processor unit?
23:08:19 <kallisti> monqypu
23:08:29 <Vorpal> Synergistic Processing Unit in the Sony-IBM-Toshiba cell microprocessor <-- heh?
23:08:35 <shachaf> XMLPU
23:08:36 <Vorpal> oh Cell
23:08:36 <monqy> ☃pu
23:08:39 <Vorpal> right
23:08:44 <Vorpal> shachaf: you are kidding...
23:08:50 <shachaf> Vorpal: Kind of.
23:08:53 <shachaf> It's not called by that name.
23:08:56 <Jafet> HARDWARE ACCELERATED XML
23:09:03 <Vorpal> shachaf: there can't be hardware accelerated XML
23:09:06 <Vorpal> I refuse to believe that
23:09:07 <shachaf> But the IBM zSeries, i I recall correctly, has support for a hardware XML coprocessor.
23:09:20 <shachaf> It's a regular CPU that they turn on in such a way that it only suports XML.
23:09:24 <shachaf> And you pay less than for a full CPU.
23:09:24 <Vorpal> "Network Processing Unit" <-- okaaay
23:09:37 <kallisti> Processor Processing Unit
23:09:43 <Vorpal> https://en.wikipedia.org/wiki/Physics_processing_unit <- hm okay
23:09:49 <Vorpal> kallisti: nope, see link I just game
23:09:52 <Vorpal> gave*
23:09:52 <kallisti> no my is better
23:09:52 <Vorpal> gah
23:09:58 <shachaf> http://www-03.ibm.com/systems/z/hardware/features/zaap/
23:10:15 <Vorpal> <shachaf> It's a regular CPU that they turn on in such a way that it only suports XML.
23:10:15 <Vorpal> <shachaf> And you pay less than for a full CPU.
23:10:19 <Vorpal> the crap?
23:10:54 <Jafet> So they can bin the ones with broken FPUs, perhaps
23:11:03 <shachaf> Vorpal: Apparently it does Java too.
23:11:05 <Jafet> XML doesn't need FDIV
23:11:07 <Vorpal> I see
23:11:16 <Vorpal> Jafet: java does
23:11:20 * Phantom__Hoover → sleep
23:11:21 -!- Phantom__Hoover has quit (Quit: Leaving).
23:11:32 <Vorpal> Jafet: besides I doubt they are x86
23:11:34 <shachaf> I think the point is just to get you to pay more money.
23:12:09 <pikhq_> IBM has traditionally offered such dubious "features" on their higher-end stuff.
23:12:24 <Vorpal> heh
23:12:46 <pikhq_> For instance, their mainframes have at various points offered upgrades up to brand-new CPUs by toggling the right switch.
23:12:55 <Vorpal> lol
23:13:07 <Vorpal> pikhq_: so they actually had the better CPU in it all along
23:13:11 <Vorpal> how can that be cost effective?
23:13:21 <Vorpal> a CPU is expensive
23:13:27 <pikhq_> If you charge significantly over cost anyways. :)
23:13:32 <Vorpal> well okay
23:13:53 <pikhq_> In the mainframe market, IBM has been the sole competitor for several decades.
23:13:55 <Vorpal> pikhq_: but surely it will make the customers disillusioned...
23:14:00 <kallisti> Sgeo: upleinian groopt
23:14:07 <kallisti> (yes these will continue to get more ridiculous)
23:14:14 <Vorpal> kallisti: wtf was that?
23:14:17 <pikhq_> Vorpal: The customer base still uses COBOL.
23:14:26 <Vorpal> pikhq_: hm.
23:14:31 <kallisti> Vorpal: Kleinian group
23:14:37 <kallisti> but in updoot form
23:14:38 <Vorpal> pikhq_: insert cobol on cogs link here
23:14:46 <Vorpal> kallisti: no clue what updoot is
23:14:58 <Sgeo> kallisti, you're delayed
23:15:55 <Vorpal> well, night →
23:16:51 <kallisti> Sgeo: my onslaught will be unpredictable and tantalizing.
23:17:04 <kallisti> it will come after actual updates or at my whim.
23:17:12 -!- Slereah_ has joined.
23:17:48 <zzo38> I make the computer game too, including with MegaZeux. Obviously it doesn't do absolutely everything but there are many things can be unusually and is different from other computer game.
23:17:54 <kallisti> you will then slowly begin to question your sanity and distrust all human beings and instead regard them as scoundrels.
23:18:24 <kallisti> Sgeo: this is the second phase, where I reveal my dastardly plan! ah ha ha ah ha ha.
23:20:18 <kallisti> Sgeo: also: updoast of groot britain.
23:29:11 -!- MDude has quit (Read error: Connection reset by peer).
23:29:11 -!- sebbu has quit (Read error: Connection reset by peer).
23:29:15 -!- MSleep has joined.
23:29:25 -!- sebbu has joined.
23:29:25 -!- sebbu has quit (Changing host).
23:29:25 -!- sebbu has joined.
23:31:30 -!- MDude has joined.
23:31:37 -!- MSleep has quit (Read error: Connection reset by peer).
23:36:10 -!- augur_ has joined.
23:36:12 -!- augur has quit (Ping timeout: 276 seconds).
23:36:50 <kallisti> man Egyptians have this protest shit figured out.
23:37:05 <kallisti> they throw the tear gas grenades back at the police.
23:40:23 <kallisti> Occupy could learn a thing or two.
23:43:26 <Sgeo> elliott, kallisti arfasdfjhadate
23:44:06 <kallisti> ?
23:44:18 <elliott> sdkasld
23:44:23 <Sgeo> arhfpsupdart
23:44:39 <kallisti> why do rocrupt ur ensentes
23:45:37 <kallisti> `word 25
23:45:40 <HackEgo> quel vinflumicturguerstrighaleakinvar azed bale ossars hoontarinatur harippry tia nintited fidahur asic aequolle lia finfored ronera last arplang grautlmen vics sly lee scham pauryn preting supeisperox
23:46:20 <monqy> vinflumicturguerstrighaleakinvar
23:46:41 <monqy> harippry is good though
23:46:49 <monqy> aequolle too
23:47:00 <monqy> grautlmen
23:48:01 <kallisti> ow pepper hot
23:48:14 <kallisti> mmm pain tastes good.
23:49:17 <Sgeo> grautlmen sounds like something the TF2 spy might say
23:52:21 <kallisti> my reversible graph language sounds like a large memory leak.
23:56:49 <oerjan> not reversible enough, then
23:57:06 <kallisti> actually I'm not sure that it will be a "graph language" but its memory layout will be represented by a graph.
23:59:36 <kallisti> oerjan: I'm not sure what you mean. :P
2011-11-22
00:00:54 <kallisti> I guess it would make sense that you could delete all data prior to an execution step if you decide to jump back to a particualar execution step
00:01:20 <kallisti> however, I was thinking that it would be nice if you could then move forward from there if you wanted.
00:03:42 <oerjan> well, i mean that a real reversible implementation would physically deconstruct the original data when constructing the new
00:05:08 <kallisti> oerjan: doesn't that still imply some sort of incurring memory overhead?
00:05:18 <kallisti> in the "constructing the new part"
00:05:47 <oerjan> well yes, but you only use the memory for your current data structure at any time...
00:06:04 <kallisti> oh, well, yes that's how this would works, kind of.
00:06:07 <kallisti> well, no not realy.
00:06:13 <kallisti> but it's the same thing :P
00:06:35 <kallisti> there is a notion of "current data" within a larger graph data structure.
00:07:12 <oerjan> by "current data" i mean all of your current state, of course
00:07:27 <kallisti> it may end up being a tree and not a cyclic graph.
00:07:34 <kallisti> not sure.
00:08:02 <kallisti> depends on whether or not a node can have more than one ancestor edge.
00:08:45 <kallisti> but I really don't know how "reverse this value" would look like if you have possibly two or more ancestors. nondeterminism I guess?
00:09:26 <oerjan> the wiki spam is really out of hand
00:09:58 <Jafet> oerjan: linear lisp to the rescue
00:10:19 <oerjan> Jafet: linear logic was in my mind
00:11:26 <Jafet> kallisti: http://www.pipeline.com/~hbaker1/LinearLisp.html
00:13:44 <Jafet> Oh wait, that article is too dijkstraan
00:13:57 <Jafet> http://home.pipeline.com/~hbaker1/LQsort.html
00:15:04 -!- pikhq has joined.
00:15:12 -!- pikhq_ has quit (Ping timeout: 258 seconds).
00:17:01 <elliott> Jafet: Dijkstraan is a good word.
00:19:50 <zzo38> Does the Haskell library have operator "bind but use first result value"?
00:20:03 <elliott> I don't think so.
00:21:04 <elliott> Gregor: gcc is getting STM, nee-ner nee-ner
00:21:27 <zzo38> What I mean is Monad m => m a -> (a -> m b) -> m a; What ought its symbol be, and how much would it be used?
00:22:24 <Gregor> elliott: I saw that >_>
00:22:40 <Gregor> elliott: My friend across the way told me this, while we both mocked how terrible that is.
00:22:58 <elliott> Gregor: Since it's C, I'll agree with the mocking :P
00:23:08 <elliott> Gregor: BUT I'M ISSUING A WARNING
00:23:17 <elliott> __transaction_atomic is definitely the best keyword.
00:23:20 <kallisti> zzo38: <<= :P
00:23:33 <elliott> Gregor: Ooh, neat, the isolation is only from other transactions.
00:23:44 <zzo38> kallisti: That is for comonads
00:23:49 <kallisti> zzo38: =>> ?
00:23:49 <elliott> Gregor: So as soon as you access one of these outside of a __transaction_atomic all your guarantees go out the window.
00:24:02 <zzo38> kallisti: That is also for comonads it is <<= with arguments flipped
00:24:03 <kallisti> zzo38: <>>=? (more :P)
00:24:26 <zzo38> I suppose <>>= can do
00:24:32 <Sgeo> @djini
00:24:33 <lambdabot> Cannot parse command
00:24:37 <pikhq> elliott: How insanely C-like.
00:26:44 <Sgeo> @djini (Monad m) => m a -> (a -> m b) -> m a
00:26:44 <Sgeo> @djinn
00:26:44 <Sgeo> @djinn (Monad m) => m a -> (a -> m b) -> m a
00:26:44 <Sgeo> @list
00:26:44 <lambdabot> f a _ = a
00:26:45 <lambdabot> Cannot parse command
00:26:45 <lambdabot> f a _ = a
00:26:45 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
00:26:45 <Sgeo> @help
00:26:45 <Sgeo> > 1 + 1
00:26:45 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
00:26:47 <lambdabot> 2
00:27:01 <Sgeo> I'm lagging badly
00:27:56 <elliott> Sgeo: no, lambdabot was
00:28:53 * Sgeo was too, the lag thingy was going haywire
00:29:12 -!- kmc has joined.
00:29:13 <Gregor> <elliott> Gregor: Ooh, neat, the isolation is only from other transactions. <elliott> Gregor: So as soon as you access one of these outside of a __transaction_atomic all your guarantees go out the window. // no shit?
00:29:26 <Sgeo> kmc, not our fault!
00:29:33 <elliott> Gregor: See, I'm used to decent languages, where doing that is impossible :-)
00:29:34 <elliott> Sgeo: What?
00:29:55 <Sgeo> The lambdabot slowdown.
00:29:56 <Gregor> elliott: Type systems are for losers.
00:30:02 <elliott> Sgeo: Yeah I'm sure that's why kmc just joined.
00:30:11 <elliott> Gregor: Oh, looks like "STM" is inaccurate, seems like the work is being done by a company that does hardware TM :P
00:30:14 <Sgeo> Ugh, am I again going to have to explain that I'm not an idiot and I was trying to make a joke?
00:30:28 <elliott> Sgeo: Apparently
00:30:28 <Gregor> elliott: Yeah, but it has a software TM.
00:30:49 <pikhq> elliott: It's actually "*TM", where * is filled in with what's appropriate on the current platform.
00:30:53 <Gregor> Yup
00:30:54 <elliott> Gregor: Sortofmediumware TM
00:31:57 <Gregor> By the way guys, m68k sux.
00:32:35 <elliott> Sucks... with GOODNESS.
00:33:14 <Gregor> elliott: It's so far beyond impossible to make anything m68k work in a modern system.
00:33:30 <Gregor> Emulation? Ha. Cross-compilation? As if.
00:33:47 <elliott> Gregor: Emulation is not that hard...
00:33:57 <elliott> Gregor: There are perfectly decent Mac emulators.
00:34:07 <Gregor> elliott: Most (read: all) do not emulate the MMU, so can only run Mac OS.
00:34:12 <elliott> Neat :P
00:34:26 <zzo38> How often would you expect to use such an operator as I have described?
00:34:28 <pikhq> Could've *sworn* there were emulators that handled A/UX.
00:34:30 <kallisti> elliott: I wonder if you could add so many syntax gimmicks that imperative code in Haskell resembled other imperative code.
00:34:35 <elliott> Gregor: Even Mini vMac? I say this because MINI VMAC'S BUILD SYSTEM IS CLASSIC MAC OS-ONLY AND I CANNOT BELIEVE THIS
00:34:37 <Gregor> pikhq: I'm yet to find one.
00:34:44 <kallisti> but operated with monads and type safety underneath.
00:34:55 <elliott> "How to build the Mini vMac program from the source code.
00:34:55 <elliott> First download the source code archive from the download page, a file with the name “minivmac-3.1.3.src.zip”. Extract from this zip file a disk image (named “minivmac-3.1.3.src.dsk”).
00:34:56 <elliott> Now launch Mini vMac (version 3.0.0 or later), booting from a disk image containing a system folder. (The source code disk image doesn't contain a system folder.) (See the Start page for information about getting started with Mini vMac.)
00:34:56 <elliott> Mount the source code disk image in Mini vMac. At the top level of this disk is an application named "Build". Launch this application. A text editing window will open in which to type in the desired options."
00:34:59 <elliott> Gregor: LOOK AT THIS!!!!
00:35:08 <elliott> Gregor: "If this option is used by itself, the build system will generate the files needed to compile the standard version of Mini vMac for Macintosh OS X on Intel using Apple's Xcode 2.4.1 development environment."
00:35:42 <Gregor> lol
00:35:44 <zzo38> kallisti: In my opinion, there ought to be macros, that allow you to implement such things as that, but it ought not be a part of standard Haskell.
00:36:01 <elliott> kallisti: It does.
00:36:12 <elliott> kallisti: If you do everything in IO with do notation, Haskell looks just like Python.
00:36:23 <kallisti> well, not quite.
00:36:30 <pikhq> Gregor: Shame, it'd be really neat to (ab)use X to have a DOS/UNIX/Mac OS setup.
00:36:32 <elliott> It really does.
00:36:33 <zzo38> I don't think so. Even if you use layout it won't be like Python.
00:36:34 <kallisti> assuming you're using mutable refs.
00:36:41 <kallisti> you need the newBlahRef stuff
00:36:44 <kallisti> and readBlahRef stuff
00:37:06 <elliott> kallisti: (=:) = writeIORef
00:37:10 <elliott> kallisti: var = newIORef
00:37:20 <kallisti> @hoogle ($$)
00:37:20 <lambdabot> Text.PrettyPrint.HughesPJ ($$) :: Doc -> Doc -> Doc
00:37:20 <lambdabot> Text.PrettyPrint ($$) :: Doc -> Doc -> Doc
00:37:20 <lambdabot> Language.Haskell.TH.PprLib ($$) :: Doc -> Doc -> Doc
00:37:25 <kallisti> ($$) = readIORef
00:37:26 <kallisti> :P
00:37:35 <elliott> kallisti: (^) = readIORef -- needs GHC extension so you can use it postfix
00:37:44 <elliott> (like (a^), not a^, unfortunately)
00:37:59 <elliott> kallisti: But anyway, yes:
00:38:08 <elliott> kallisti: http://augustss.blogspot.com/2011/07/impredicative-polymorphism-use-case-in.html
00:38:11 <Gregor> pikhq: I just want one more arch so I can say my JIT supports a dozen archs.
00:38:52 <elliott> Which dozen?
00:39:10 <Gregor> elliott: I'm cheating by e.g. calling x86 and x86_64 distinct, and powerpc and powerpc64 distinct :P
00:39:30 <elliott> Gregor: Is the version on bitbucket the new JIT style?
00:39:37 <elliott> Doesn't look like it, but...
00:39:46 <Gregor> elliott: It's in a branch.
00:39:47 <kallisti> elliott: I wonder what the def $: bit is
00:39:53 <elliott> Gregor: Which one :P
00:40:09 <Gregor> elliott: Innit obvious?
00:40:26 <elliott> Gregor: What the fuck is funcelision? Ohh, func elision
00:40:29 <elliott> What's recordconditional :P
00:40:42 <Gregor> Those two branches are things that didn't work, but could have :)
00:40:51 <pikhq> Gregor: I wouldn't consider the x86/x86_64 bit a cheat.
00:40:55 <elliott> Gregor: Is recordconditional just doing if (compiling) record(...)?
00:41:03 <Gregor> elliott: Yuh.
00:41:11 <pikhq> x86_64 really *is* distinct from x86 in many rather important ways.
00:41:32 <elliott> Gregor: Why didn't that work?
00:41:45 <Gregor> elliott: It would arrange the jumps in a shitty way :(
00:41:49 <pikhq> PPC64, though? Total cheat.
00:41:59 <Gregor> elliott: Worked on x86[_64], but broke a bunch of other stuff.
00:43:25 <kallisti> elliott: I'm guessing $: is just another $ but with different precedence or something?
00:43:35 <Gregor> pikhq: HEY THEY'RE DIFFERENTish
00:43:47 <Gregor> pikhq: How 'bout ARM/thumb :P
00:44:40 <elliott> kallisti: I imagine ($) is used for something else.
00:45:46 <kallisti> also def
00:45:51 <kallisti> what does that do even?
00:48:44 <elliott> ask him
00:49:32 <Gregor> pikhq: Whoops, doesn't work with thumb X-D
00:49:52 <elliott> More like DUMB.
00:53:11 <Gregor> Aha, thumb uses a different branch instruction to go into normal ARM code than it does to go into thumb code, and by default when you call a function pointer it goes to ARM.
00:53:13 <Gregor> So, boink.
00:54:22 <kallisti> monqy: http://www.haskell.org/haskellwiki/Jobs thriving Haskell job economy.
00:54:34 <kallisti> monqy: http://www.haskellers.com/jobs
00:54:40 <kallisti> "there are no active job listings"
00:55:28 <pkzip> Haskell should be in the Esoteric list of languages
00:55:45 <pkzip> that are Esoteric
00:55:57 <Gregor> !help languages
00:55:58 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
00:55:59 <kallisti> monqy: http://functionaljobs.com/ there are four here, none of which are Haskell.
00:56:30 <pkzip> Who are the Others ?
00:56:42 <elliott> kallisti: http://www.tsurucapital.com/en/jobs.html
00:56:48 <pkzip> (Languages)
00:57:18 <kallisti> "You are often referred to as a machine, executing quickly and smartly, while challenging yourself and your colleagues."
00:57:23 <kallisti> I wonder if they got any actual robot applicants
00:57:33 <elliott> kallisti: http://corp.galois.com/careers/
00:57:49 <pkzip> JLP quote ?
00:58:07 <kallisti> elliott: nice pay
00:58:16 <pkzip> are we throwing Star-Trek quotes yet ?
00:58:57 <elliott> "live long and prosper" -gandalf of the uss voyager
00:59:16 <Gregor> elliott: Insufficient trollery, same franchise used twice.
00:59:30 <Gregor> "Live long and prosper." - Gandalf, Lord of the Sith
00:59:56 <elliott> Gregor: It's funny because you're trolling people by implying that Voyager is part of the Star Trek franchise.
01:00:12 -!- pkzip has quit (Quit: Leaving.).
01:01:45 <elliott> kallisti: http://cufp.org/jobs/senior-architect-leading-investment-bank-f-net has legacy code written in haskell!
01:02:10 <kallisti> elliott: now I just need to convince them that I know F#!
01:03:55 <kallisti> Sgeo: upstadter's dooterfly
01:07:42 <kallisti> In April 2009, when told about his Wikipedia article, he commented, "[It] is filled with inaccuracies, and it kind of depresses me." When asked why he didn't correct it, he replied, "The next day someone will fix it back."[25] (In Aug. 2011 Hofstadter said he is happy with the article and the only inaccurate part of his Wikipedia entry was the previous sentence because the inaccuracies were subsequently fixed.[citation need
01:07:50 <kallisti> ed])
01:08:00 <kallisti> classic Hofstadter
01:08:37 <kallisti> also unverified
01:11:22 <pikhq> elliott: It's funny because you're implying that Star Trek didn't end with DS9.
01:12:06 <kallisti> elliott: pikhq: Gregor: you're all implying that people care about Star Trek
01:12:16 <kallisti> which I find greatly amusing.
01:12:23 <pikhq> kallisti: We do.
01:13:05 <kallisti> a vacuous implication: you do not exist, therefore the premise is false.
01:13:24 <pikhq> Also, TNG was pretty damned popular when it aired...
01:13:39 <kallisti> subsequently everyone realized Star Trek is lame.
01:13:59 * kallisti hater
01:15:06 <kallisti> in the 70's VW Beetle, the windshield-wiper fluid dispenser was powered by the air pressure in the spare tire in the trunk.
01:15:08 <kallisti> .....
01:15:14 <pikhq> Yup!
01:15:21 <kallisti> that's insane.
01:15:41 <pikhq> The car was designed around being cheap.
01:16:17 <kallisti> also: not having full spare tires
01:16:37 <pikhq> It also had an air-cooled engine.
01:16:40 <kallisti> granted most spare tires have higher air pressure than normal tires because people typically don't refill them.
01:16:51 <kallisti> pikhq: well, most engines are "air-cooled" in some sense.
01:16:59 <kallisti> so basically you're saying "it has no cooling system"
01:17:25 <pikhq> "Air-cooling" refers to a "cooling" system based exclusively around the flow of air.
01:17:43 <kallisti> wow. tell me more. :P
01:17:54 <pikhq> What I mean is "you're a fucking moron".
01:19:18 <kallisti> it's sort of a cooling system I guess.
01:21:20 <kallisti> but even in an engine with a broken liquid-cooling system and without a specifically design air-cooling system, the engine is still cooled significantly by airflow
01:21:35 <kallisti> to the point that you can drive a car with a broken radiator as long as you're going somewhat fast.
01:21:44 <kallisti> and don't stop or slow down very much.
01:22:40 <pikhq> Or live in a particularly cold area.
01:23:51 -!- MSleep has joined.
01:24:08 <kallisti> a "car person" I'm friends with tried to tell me that the liquid-cooling system of a car is not comparable to a computer cooling system.
01:24:12 <kallisti> because in the case of a car
01:24:17 <kallisti> it's "bringing cold in"
01:24:28 <kallisti> whereas in a computer it's "taking hot out"
01:24:28 <elliott> which is why people don't liquid-cool computers
01:24:31 <elliott> with the exact same methods
01:24:40 <elliott> oh wait
01:24:45 <kallisti> ...he's stupid. :P
01:25:13 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:25:22 <kallisti> it's very similar, cars just have more heat to deal with.
01:25:38 <Jafet> Bringing cold in
01:25:43 <kallisti> ....yeah
01:26:07 <kallisti> Jafet: kind of like how refrigerators "make cold"
01:26:14 <kallisti> you know, it's different.
01:26:17 <pikhq> Because cold is a real thing! :P
01:27:26 -!- MDude has quit (Ping timeout: 248 seconds).
01:27:43 <kallisti> I'm kind of baffled that cars have radiator fans.
01:27:58 <kallisti> considering that they typically have a huge volume of airflow passing through the radiator.
01:28:06 <kallisti> I suppose the fans are there for when the car is moving slowly.
01:28:09 <pikhq> Not when idling, I guess?
01:28:12 <kallisti> right.
01:28:14 -!- MDude has joined.
01:28:18 <pikhq> Though, when idling your engine's not going to be very hot.
01:28:26 <kallisti> well, relatively
01:28:30 <kallisti> but it still needs cooling
01:28:37 <pikhq> Heat is always relative, anyways. :P
01:29:02 -!- MSleep has quit (Ping timeout: 248 seconds).
01:30:21 <kallisti> there's a lot that goes into making an internal combution not destroy itself and everything it's connected to.
01:30:47 <kallisti> or rather, to limit that destruction to something more manageable and slowly developing.
01:31:01 <kallisti> *internal combustion engine
01:31:56 <pikhq> Yeah, something that functions by rapid controlled explosions is a bit hard to engineer. :P
01:32:37 -!- MDude has quit (Read error: Connection reset by peer).
01:32:54 -!- MSleep has joined.
01:34:23 <kallisti> In the UK (but applying only to England), the Road Traffic (Vehicle Emissions) (Fixed Penalty) Regulations 2002 (Statutory Instrument 2002 No. 1808)[14] introduced the concept of a "stationary idling offence". This means that a driver can be ordered "by an authorised person ... upon production of evidence of his authorisation, require him to stop the running of the engine of that vehicle" and a "person who fails to comply .
01:34:30 -!- MSleep has quit (Read error: Connection reset by peer).
01:34:37 <kallisti> ... shall be guilty of an offence and be liable on summary conviction to a fine not exceeding level 3 on the standard scale"
01:34:49 -!- MSleep has joined.
01:35:20 <kallisti> you there, sir! either stop wasting that meager amount of fuel, or expend vastly larger quantities moving somewhere this instant!
01:38:46 * kallisti imagines someone evading the police after being ordered to stop idling.
01:47:30 <oerjan> kallisti: it's illegal to idle a car unnecessarily in norway as well
01:49:52 -!- pikhq has quit (Ping timeout: 245 seconds).
01:49:59 -!- pikhq has joined.
01:50:49 -!- copumpkin has joined.
01:50:49 -!- copumpkin has quit (Changing host).
01:50:49 -!- copumpkin has joined.
01:51:23 <oerjan> in or close to settlements
01:52:23 <oerjan> both noise and pollution are listed as reasons
01:52:25 <elliott> hi oerjan
01:52:27 <kallisti> http://en.wikipedia.org/wiki/Wankel_engine
01:52:33 <kallisti> this is a cool fucking thing.
01:53:07 <oerjan> (uk people may consider "close to settlements" to be redundant *MWAHAHAHA*)
01:54:09 <oerjan> and hi
01:54:40 <kallisti> the only problem is there's no way to really balance the fuel/air mixture, so you get basically equivalent fuel efficiency for comparable power.
01:55:02 <kallisti> so there's not really any benefit other than more power (still at the expense of an equal amount of fuel efficiency)
01:55:59 <elliott> oerjan: very impolite!!!!!! we have lots of hills and farms
01:56:07 <kallisti> but you could make like... a 3L 4-rotor engine and get the same power as a really really big piston engine.
01:56:45 <oerjan> elliott: O KAY
01:57:45 <kallisti> the Mazda RX-8 for example gets 232 horsepower from 1.3 litres of displacement from 2 rotors.
01:58:24 <kallisti> the engine in my car gets 200 horsepower from 3.1 litres of displacement from 6 pistons
01:58:35 <kallisti> this is a big difference in size and complexity.
01:59:19 <oerjan> 150 horses, 40 camels and 1 orangutang
02:00:46 <elliott> kallisti: http://www.haskell.org/pipermail/haskell/2011-November/023072.html
02:02:58 <kallisti> elliott: neat.
02:03:05 <elliott> top of /r/haskell
02:03:07 <kallisti> see, this is the kind of stuff I want to do.
02:03:33 <kallisti> it doesn't necessarily have to be Haskell.
02:03:41 <kallisti> I just don't want to write /boring/ software
02:03:54 <kallisti> at least for the entire extent of my career.
02:04:00 * kallisti will concede a few years.
02:04:33 <elliott> should have thought of that before going into programming.
02:06:12 <kallisti> also, note that: despite the similarities in engine power between my car and the Mazda RX-8, the power-to-weight ratio is completely different.
02:06:44 <kallisti> as the Mazda is about 1800 kgs lighter.
02:08:18 <kallisti> I wonder if I can take anything out of my car to make it lighter.
02:08:31 <kallisti> maybe if I remove the entire body.
02:08:35 <kallisti> yes that's a good idea.
02:08:50 <oerjan> cars are not a good place to hide bodies anyway
02:09:01 <kallisti> no one actually needs those big heavy doors .
02:09:05 <kallisti> it's just slowing them down and wasting fuel.
02:09:16 <oerjan> kallisti: aerodynamics
02:09:54 <kallisti> oerjan: if my cabin is a open frame with seats I'll have wicked awesome aerodynamics. :P
02:10:36 <oerjan> if by "wicked awesome" you mean "violent but inefficient", i guess
02:12:36 <kallisti> eh, my car will just intake so much oxygen that it creates a localized vacuum.
02:12:39 * kallisti sound physics
02:12:50 <oerjan> ok
02:13:14 <kallisti> anyway you look way cooler when you're driving in a spacesuit.
02:14:27 <elliott> see: stig
02:15:05 * kallisti considers actually donating $10 to Wikipedia
02:15:14 <kallisti> elliott: excellent example.
02:15:27 -!- Darth_Cliche has joined.
02:16:05 * kallisti imagines an engine powerful enough to suck all of the atmosphere off of the Earth.
02:16:23 * kallisti begins planning his doomsday device.
02:19:28 <kallisti> maybe I should expand this proposal to unix-like systems.
02:20:25 <oerjan> yeah they need a lot of air cooling
02:21:18 <kallisti> heh
02:22:08 * kallisti is prone to turbulent subject change.
02:22:27 <kallisti> also: Worcestershire sauce is deliciously applicable to anything that tastes savory.
02:23:18 <elliott> you don't know what that is youre not englsijh
02:24:45 <kallisti> elliott: sure I do.
02:24:51 <elliott> bad preson
02:25:12 <kallisti> the Lea and Perrins recipe used in the states is ALMOST the same as the one in great brittania
02:25:46 <elliott> "almost"
02:26:02 <kallisti> as in it only changes the kind of vinegar and is pretty much exactly the same otherwise.
02:26:25 <kallisti> WHAT NOW?
02:26:45 <kallisti> http://en.wikipedia.org/wiki/Usage_share_of_operating_systems "Median[original research?]"
02:26:53 <kallisti> statistical calculations = original research
02:27:19 <elliott> kallisti: yeah to worse vinegar
02:27:41 <pikhq> White instead of malt.
02:29:13 <shachaf> Did someone say vinegar?
02:29:17 <shachaf> I like vinegar.
02:29:20 <elliott> wow, JBethJenkinsj has spammed their user page twice :(
02:29:23 <elliott> twice!!!
02:29:23 <shachaf> I like balsamic vinegar in particular.
02:29:32 <elliott> shachaf: Good person.
02:29:47 <shachaf> Balsamic vinegar is probably the best substance one can consume.
02:30:01 * elliott sips his bottle of balsamic vinegar.
02:30:14 <shachaf> elliott: I've been known to do that.
02:30:18 <shachaf> (In small quantities.)
02:30:30 <shachaf> If you look up my name on the Google, you find an "Executive Profile" which mentions how I like balsamic vinegar.
02:30:34 <shachaf> I wish I could get rid of that.
02:30:48 <oerjan> just sue them
02:30:51 <elliott> I was about to complain, but then I realised I've sipped small quantities of vanilla essence before.
02:30:54 * oerjan good advice
02:32:06 <kallisti> I like how no one makes Windows supercomputers.
02:33:17 -!- DCliche has joined.
02:35:06 <kallisti> what's a good application for chart-making?
02:35:42 <oerjan> business meetings
02:36:06 <kallisti> *what's a good software application that creates charts.
02:36:24 <oerjan> picky, picky
02:36:28 -!- Darth_Cliche has quit (Ping timeout: 240 seconds).
02:37:22 -!- MSleep has changed nick to MDude.
02:37:36 <oerjan> thank you randall munroe for overruling my browser's decision on how to view large pictures. i think i shall read something else.
02:38:24 <elliott> oerjan: what decision is that
02:38:37 <elliott> oh, with a zoom thing
02:38:48 <elliott> oerjan: i think that's reasonable since it's a very zoom ui type thing, and most browsers only offer one level of zoom...
02:38:52 <kallisti> oerjan: sh, you just made xkcd's hits go up.
02:38:56 <elliott> and it's awkward to move around in 2d with them
02:39:23 <Patashu> oerjan, do you make the same complaint about google maps?
02:39:53 <oerjan> no, because they actually change the data displayed
02:40:28 <shachaf> oerjan: I'd rather they just gave me one bitmap and let me zoom myself.
02:40:32 <kallisti> oerjan: holy crap this is an awesome chart but I have no idea how to go about reading it.
02:40:34 <shachaf> Makes a lot more sense.
02:41:47 * elliott would think oerjan were reasonable if browsers actually had any kind of sane image navigation/zooming ui.
02:41:48 <elliott> they don't
02:42:21 <kallisti> this chart must be why xkcd has been so shitty.
02:42:31 <kallisti> Randall's been compiling sources for this thing.
02:42:33 <oerjan> ok maybe what mostly irritates me is that it doesn't actually fill my browser window
02:43:02 <kallisti> oh also it steals history
02:43:11 <oerjan> dammit now i'm going to have to actually look at it anyhow
02:43:43 * oerjan finds the maximize button XD
02:45:19 <elliott> kallisti: first they complain that they can't bookmark it, then you let them bookmark it and they complain it fills history...
02:51:48 <elliott> has anyone ever been a bee
02:52:09 <kallisti> elliott: probably.
02:52:15 <kallisti> elliott: I mean, not in reality.
02:52:42 <kallisti> but it's probable someone has had a weird dream or ingested a large quantity of hallucinogens and felt like a bee.
02:52:52 <elliott> sigh. you're so unhelpful
02:53:07 * quintopia steals the sacred chao
02:53:25 <kallisti> elliott: were you expecting a legitimate answer?
02:53:32 <elliott> OBVIOSUYL quintopia ;Q;Q;Q;Q;Q;
02:53:54 <quintopia> elliott: did you want it?
02:54:14 <quintopia> i am willing to sell to a good home at a reasonable price
02:54:16 <elliott> q q q q q qq q q q q q q q q q hi i wasnt intending to ping the quintopia but i pressed q and tab and the quintopia popped up
02:54:18 <elliott> thems the breaks,
02:54:25 <elliott> the breaks thatm ben broken
02:54:35 <quintopia> you sound sleepy
02:54:39 <quintopia> want a beer?
02:56:28 <elliott> im not sleepy i just act like this sometimes
02:56:33 <elliott> usually when sleepy admittedly
03:14:59 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds).
03:23:23 -!- DCliche has quit (Quit: You are now graced with my absence.).
03:29:00 <kallisti> elliott: hi
03:29:05 <elliott> hi
03:29:07 <kallisti> what are you doing?
03:29:17 <elliott> typing a reply to kallisti on irc
03:29:27 <elliott> hitting enter
03:29:33 <elliott> typing another line and hitting enter again
03:29:34 <elliott> help
03:29:59 <kallisti> elliott: what are you doing in the more long-term interpretation that most people would interpret.
03:30:14 <elliott> dying, very slowly
03:30:24 <kallisti> like...
03:30:25 <elliott> do you want a helpful answer
03:30:29 <kallisti> progressive present tense
03:30:33 <kallisti> ongoing actions
03:30:36 <kallisti> in the present
03:30:41 <kallisti> aside from dying
03:31:06 <elliott> very little
03:31:12 <kallisti> elliott: I WILL NOT GIVE UP UNTIL YOU ANSWER NORMALLy -- oh okay
03:31:14 <elliott> i am idly ``surfing the net'' while idly ``waiting for someone tos ay something interesting''
03:31:21 <elliott> *tosa y
03:31:25 <kallisti> elliott: hey me too!
03:31:27 <kallisti> in fact
03:31:32 <kallisti> not only did I look at that xkcd map thing
03:31:35 <kallisti> but I went to xkcdsucks
03:31:37 <kallisti> which is probably
03:31:40 <kallisti> the biggest waste of time ever.
03:32:02 <elliott> xkcdsucks got so crappy
03:32:08 <kallisti> I thought it was always that way
03:32:14 <kallisti> maybe I wasn't there for the Golden Age.
03:32:17 <elliott> it used to be a bit less so
03:32:46 <kallisti> elliott: one thing you can say: they are very persistent.
03:32:56 <kallisti> dedicated to the job.
03:33:05 <kallisti> of critisizing xkcd however horribly.
03:33:18 <elliott> "i was going to warn people that this is actually a brand-new comic that just visually resembles the last comic a lot, but then i figured, huh, PROBABLY my readers are used to that by now" --Dinosaur Comics caption
03:33:34 <elliott> kallisti: actually a different guy writes it nowadays.
03:33:36 <elliott> (he's annoying)
03:33:42 <elliott> (even more annoying than the last guy)
03:33:49 <kallisti> I thought there were multiple writers.
03:33:54 <kallisti> are
03:34:00 <kallisti> er
03:34:01 <kallisti> not
03:34:03 <kallisti> are
03:34:04 <kallisti> were
03:34:05 <kallisti> help english
03:34:07 <elliott> there were guest posts. dunno how frequent they are nowadays
03:34:12 <elliott> because i don't: read it
03:34:13 <elliott> ^stylr
03:34:14 <elliott> ^style
03:34:15 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz* sms speeches ss wp youtube
03:34:19 <elliott> fungot: exposit
03:34:20 <fungot> elliott: have i, perhaps, a hint, utahraptor!
03:34:23 <kallisti> elliott: wow amazing
03:34:24 <elliott> fungot: have you?
03:34:24 <fungot> elliott: a " pg-13" picto-story
03:34:29 <elliott> fungot: the best rating for a picto-story!
03:34:35 <elliott> ????
03:34:36 <elliott> fungot: hi
03:34:38 <elliott> kallisti: TALK TO FUNGOT
03:34:40 <kallisti> fungot: CONTINUATION
03:34:40 <fungot> kallisti: as a man concerned, t-rex, that going shopping was your default activity?' then tony and louisa q were two people in love! romantic love, but there's a rude jerk, and then they both said the next few days were going to me, the omniscient. the dude has to sleep! superman could laser him from orbit while he's having nappy times! enter only if you have a valid passport to dreamland!"
03:35:05 <oerjan> fungot: ZYGOHISTOMORPHIC PREPROMORPHISM
03:35:05 <fungot> oerjan: here, i'll prove it, too, will take what i can get a little of that back with them, dromiceiomimus for a perfectly awesome introductory phrase that is forbidden to me unless i had married at that age myself...hmm...
03:35:07 <elliott> this style is the best.
03:35:16 <elliott> ah yes
03:35:19 <elliott> those hidden phrases
03:35:23 <elliott> only attainable by self-marriage
03:35:54 <kallisti> what is qwantz
03:36:33 <oerjan> hm, my intuition says that in "at that age myself" "myself" cannot be an ordinary object
03:37:42 <shachaf> Oh, kallisti is CakeProphet.
03:37:46 * shachaf is disappointed.
03:37:47 <kallisti> yes.
03:37:50 <kallisti> lol
03:37:52 <shachaf> I thought we had some new blood.
03:38:01 <kallisti> shachaf: YOU ARE DISAPPOINTED BECAUSE IT IS ME????
03:38:06 * kallisti cries
03:38:34 <elliott> kallisti: http://qwantz.com/
03:38:46 <elliott> ^style qwantz
03:38:46 <fungot> Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011)
03:38:48 <kallisti> oh.
03:39:20 <shachaf> fungot: Gimme some double exclamation marks!!
03:39:20 <fungot> shachaf: are you a person who uses phrases at incorrect times? but then what's more likely: that we're the only ones for cows would say, hello t-rex, what is the deal"
03:39:23 <shachaf> fungot: Gimme some double exclamation marks!!
03:39:23 <fungot> shachaf: you all suck! friends again at breakfast, you, t-rex. i'll bring some vegetables and i'll show you!
03:39:25 <shachaf> fungot: Gimme some double exclamation marks!!
03:39:25 <fungot> shachaf: you must have had crazy dreams last night and hey, look, this was their word of the day last week, i will now share this secret. this is one secret, no more!
03:39:28 <shachaf> Useless.
03:39:33 <shachaf> Dinosaur comics are boring.
03:39:57 <elliott> $ xzgrep -c '!' qwantz.xz
03:39:57 <elliott> 13503
03:39:57 <elliott> $ xzgrep -c '!!' qwantz.xz
03:39:57 <elliott> 866
03:40:05 <elliott> shachaf: Dinosaur Comics also feature double exclamation marks only infrequently!
03:40:08 <oerjan> `learn kallisti is a former prophet swearing off his pastry deity
03:40:10 <HackEgo> I knew that.
03:40:15 <shachaf> elliott: Wait, really?
03:40:24 <shachaf> elliott: Oh, right, it's just single exclamation marks.
03:40:25 <shachaf> Or triple?
03:40:28 <shachaf> I don't remember.
03:40:32 <elliott> shachaf: That pattern matches triple, too.
03:41:16 <elliott> shachaf: You heard it here first: Only 6.41% of Dinosaur Comics lines with an exclamation mark feature more than one exclamation mark in a row.
03:42:21 <oerjan> shocking
03:42:44 <shachaf> dinosaur comics r stil dum lol
03:43:04 <quintopia> elliott: where is a website i can upload a small binary file without using flash?
03:43:21 <elliott> why is flash relevant
03:43:35 <elliott> shachaf: almost as dumb as you (are for not liking (dinosaur comics))
03:43:40 <quintopia> flash upload is broken on android
03:44:25 <elliott> quintopia: how small are we talking?
03:44:42 <quintopia> oh less than a gig. not sure exactly.
03:44:50 <kallisti> quintopia: try sprung
03:44:51 <kallisti> e
03:44:59 <elliott> quintopia: less than a gig?
03:45:03 <elliott> small is < 5 megs
03:45:05 <quintopia> lemme get exact
03:45:25 <quintopia> 69.5
03:45:26 <quintopia> M
03:45:32 <elliott> that's so not small.
03:45:38 <quintopia> i think small is less than 100M
03:45:42 <elliott> you're wrong
03:45:45 <elliott> anyway, filebin would have worked
03:45:48 <elliott> or was it limited to 50 megabytes
03:45:48 <quintopia> since capacitites and speeds have gone up
03:45:52 <elliott> quintopia: dropbox?
03:45:53 <shachaf> elliott: I heard you're in Northumberland.
03:46:09 <elliott> shachaf: Nah, Land's End. Also that place at the top of Scotland?
03:46:11 <elliott> England is a torus.
03:46:14 <elliott> Erm.
03:46:15 <elliott> Britain.
03:46:32 <shachaf> I don't know what these words are.
03:46:36 <shachaf> What place at the top of Scotland?
03:47:54 <shachaf> elliott: Land's End is totally not Northumberland! Which one is you?
03:48:08 <quintopia> dropbox is an application, not a website. can visit website. cannot install application.
03:48:16 <elliott> quintopia: cool! you're wrong.
03:48:37 <quintopia> is there a upload link on their website that i'm missing?
03:48:40 <quintopia> i just checked
03:48:41 <Jafet> Your phone can't run rsync?
03:48:45 <elliott> did you make an account first?
03:48:51 <elliott> there's a fancy "log in" link.
03:48:57 <quintopia> ew registration
03:49:16 <elliott> man I gotta upload this relatively big file and it's important enough to ask on irc for ~5 minutes but a username, password and email??
03:49:17 <elliott> TOO FAR.
03:49:44 <kallisti> quintopia: actually wait
03:49:47 <kallisti> you should let me invite you
03:49:52 <kallisti> so that I can increase my cap
03:49:53 <kallisti> :)
03:50:04 <shachaf> Dropbox is evil.
03:50:26 <quintopia> oh they do have a basic uploader
03:50:29 <elliott> shachaf: Are we talking, like, Cthulhu evil?
03:50:31 <quintopia> but they also crash browser
03:50:32 <quintopia> hmmm
03:50:33 * kallisti is at a fierce 4.9 GBs thanks to invites.
03:51:05 <kallisti> hmmm, wait!
03:51:10 <kallisti> I could invite all of my other emails.
03:51:11 <shachaf> elliott: Like, read :: Read a => String -> a evil.
03:51:24 <elliott> shachaf: read isn't /that/ evil.
03:51:28 <quintopia> yep
03:51:30 <shachaf> Hmm.
03:51:33 <quintopia> dropbox crashes browser
03:51:35 <elliott> kallisti: I did that.
03:51:36 <quintopia> other sggests?
03:51:37 <oerjan> i'a i'a dropbox
03:51:40 <kallisti> quintopia: what's your email?
03:51:41 <kallisti> also what?
03:51:43 <kallisti> why?
03:51:43 <elliott> kallisti: It doesn't take effect until the other email invites, IIRC.
03:51:44 <kallisti> how?
03:51:49 <elliott> So it's a real pain.
03:51:53 <kallisti> elliott: TOTALLY WORTH IT
03:51:54 <elliott> I did it anyway though, 'cuz I was bored.
03:51:59 * elliott doesn't use dropbox.
03:52:03 <quintopia> i dont know why
03:52:06 <shachaf> elliott: read isn't as evil as Dropbox?
03:52:07 <shachaf> I agree.
03:52:14 <kallisti> elliott: I basically use my Public folder to link people screenshots and other random stuff
03:52:18 <shachaf> Dropbox does GPL violations and all sorts of things.
03:52:21 <shachaf> It's true.
03:52:22 <kallisti> and occasionally LEGALLY SHARE NON-COPYRIGHT MATERIAL
03:52:35 <elliott> shachaf: Hmm, got a link?
03:52:40 * elliott goggles dropbox gpl.
03:52:49 * elliott sees nothing about violations.
03:52:55 * elliott adds "violations".
03:53:13 -!- MDude has quit (Read error: Connection reset by peer).
03:53:14 * elliott only finds http://lists.debian.org/debian-mentors/2011/02/msg00367.html without context.
03:53:21 <kallisti> elliott: what if there was some horrible irc client plugin that sent a message about every google query you made.
03:53:24 <oerjan> unsafeViolateCopyright :: DropBox -> a
03:53:34 <elliott> kallisti: I wouldn't install it.
03:53:52 <kallisti> what if it were mandatory as part of the IRC protocol?
03:53:54 <kallisti> IMAGINE THAT UNIVERSE
03:54:23 <Jafet> kallisti: there's probably an mirc plugin for that
03:54:27 -!- pikhq has quit (Ping timeout: 245 seconds).
03:54:29 -!- pikhq_ has joined.
03:54:40 * elliott googled for: hot goats in sweaters
03:54:45 * elliott googled for: hot goats in sweaters 2
03:54:52 * elliott googled for: lukewarm goats in sweaters???
03:54:57 * elliott googled for: goats. just goats. work with me here
03:55:05 * elliott googled for: what is the species name for goat
03:55:12 * elliott googled for: capras. any capras!
03:55:13 <oerjan> capra something
03:55:20 * elliott googled for: capra aegagagrus hircus
03:55:22 * elliott googled for: wow fuck you
03:55:28 * elliott googled for: how to uninstall irc
03:55:31 * elliott googled for: how to uninstall irc google
03:55:38 * elliott googled for: this is so embarrassing
03:55:56 * elliott googled for: goat porn
03:55:59 * oerjan googled for: how to ban elliott
03:56:07 * elliott googled for: bing
03:56:11 * elliott googled for: yahoo search
03:56:14 * kallisti googled for: fungus applications
03:56:22 * elliott binged for: does bing send irc messages
03:56:30 * elliott yahooed for: does yahoo send irc messages
03:56:39 * elliott altavistaed for: google alternatives
03:57:04 * kallisti googled for: XNA
03:57:13 * kallisti googled for: skyrim muffle
03:57:21 * elliott googled for: naked atheists on bikes
03:57:32 * elliott googled for: isaac asimov secret furry
03:57:41 * kallisti googled for: irc cakeprophet
03:57:43 <kallisti> oh god.
03:57:47 * elliott googled for: evidence for/against goat theory
03:57:52 * elliott googled for: pro/cons of goat theory
03:58:05 * kallisti googled for: psychiatrists near Jasper, GA
03:58:11 * elliott googled for: did isaac asimov have a deviantart
03:58:35 * elliott googled for: cake prophecies
03:58:35 * oerjan googled for: goats in government
03:58:48 * elliott googled for: are goats people
03:58:56 * elliott googled for: ...can goats give consent
03:59:12 * kallisti googled for: ghetto stories
03:59:18 * kallisti googled for: Egypt revolution
03:59:24 * elliott googled for: how to avoid being seen on a farm
03:59:27 -!- Jafet has quit (Quit: Leaving.).
03:59:39 * elliott googled for: how to remove lines from irc log
03:59:45 <quintopia> kallisti: why jasper, ga?
03:59:49 * kallisti googled for: percentage of server programming jobs to desktop application jobs fuckhow d I word this.
03:59:53 <kallisti> quintopia: because that's where I live
04:00:06 <quintopia> wow. i'm not far from there atm
04:00:13 <kallisti> quintopia: oh? whereabouts?
04:00:17 * elliott googled for: are goats real
04:00:30 * oerjan googled for: bestiality in northumberland
04:00:31 <quintopia> i am camped out behind blood mountain in slaughter gap atm
04:00:33 * elliott googled for: goat python developers
04:00:38 <kallisti> quintopia: whut
04:00:53 * kallisti googled for: why you should learn linux
04:01:01 * elliott googled for: @ download
04:01:07 * elliott googled for: "@ download" FUCK YOU STUPID PIECE OF SHIT
04:01:08 <kallisti> quintopia: I'm pretty sure you're just making shit up.
04:01:32 -!- MSleep has joined.
04:01:35 -!- MSleep has changed nick to MDude.
04:01:35 * elliott googled for: "kallisti" prophet or hoax
04:01:39 * elliott googled for: "kallisti" cakes
04:01:44 * kallisti googled for: define:syzygy
04:01:54 -!- Jafet has joined.
04:02:07 * elliott googled for: what do i do if a lawyer calls me on the telephone and talks in a spooky voice but then i realise im not holding my telephone and i get teleported to hell??
04:02:24 * elliott googled for: is toe-plucking fatal
04:02:35 <quintopia> kallisti: between suches and blairsville i guess
04:02:45 * kallisti googled for: help what do I do if I'm bleeding
04:02:50 * elliott googled for: is toe-plucking REALLY fatal
04:02:56 <kallisti> WHAT NO 911 INFORMATION ON GOOGLE -files suit
04:03:03 * elliott googled for: toe-plucking therapists
04:03:04 <kallisti> quintopia: I've heard of the latter
04:03:08 * elliott googled for: how to stop plucking toes
04:03:18 * elliott googled for: like nicotine patches but for toes? so that you don't pluck them
04:03:19 <shachaf> elliott: I don't think Google supports @-substitution.
04:03:32 * kallisti googled for: suches ga
04:03:36 * elliott googled for: blackmarket used toes
04:03:40 * elliott googled for: blackmarket used toes (clean or dirty)
04:03:43 -!- Nisstyre has quit (Ping timeout: 240 seconds).
04:03:57 * elliott googled for: how to usurp oerjan site:wikihow.com
04:04:05 <kallisti> quintopia: not incredibly far no.
04:04:19 * elliott googled for: goat "Directory index" inurl:.avi
04:04:21 * shachaf looked up: how to /ignore in irc
04:04:41 <kallisti> quintopia: I could drive to suches in 23 minutes
04:04:47 * elliott googled for: how to explain to shachaf that this is at most half as annoying as I usually am
04:04:52 * oerjan googled for: should one stop biting fingers when seeing bone
04:04:52 <kallisti> which is probably more like 15 minutes.
04:05:12 <quintopia> i could walk to suches in a day
04:05:22 <shachaf> suches life
04:05:25 <kallisti> ...
04:05:26 * elliott googled for: should one stop biting fingers when there's only your lips left and you're bleeding so much
04:05:30 <kallisti> also yeah how do you even pronounce suches
04:06:05 * shachaf looked up: elliott
04:06:08 * shachaf looked up: elliott hird
04:06:10 * kallisti googled for: what is the emergency number for my area
04:06:17 * shachaf looked up: northumberland map
04:06:19 <elliott> shachaf: In the dictionary?
04:06:29 * shachaf looked up: northumberland people search
04:06:33 <elliott> Northumberland map, n. see "unchartered territory"
04:06:49 * kallisti googled for: surgical bone saw
04:06:56 * kallisti googled for: surgical scalpel
04:07:01 * shachaf looked up: land's end detectives for hire
04:07:05 * kallisti googled for: surgical tool kit sales
04:07:20 <elliott> shachaf: That sounds like a really good TV show premise.
04:07:26 * kallisti googled for: battery powered bone drill
04:07:28 <elliott> HE SOLVES CASES... WHERE NO OTHER DETECTIVE DARES
04:07:33 * kallisti googled for: soldering iron
04:07:40 * kallisti googled for: how to cauterize wounds
04:07:41 * oerjan googled for: diy transplantations
04:07:47 * shachaf looked up: how to lure 16 year olds
04:07:52 * elliott googled for: how to avoid calculated torture/murder by prophet
04:07:53 * shachaf looked up: elliott hird true age
04:08:04 * elliott googled for: artificial aging strategies
04:08:06 * kallisti googled for: how to clamp arteries with a hemostat
04:08:08 * elliott googled for: artificial aging pills cheap
04:08:15 * kallisti googled for: arteries in the upper arm
04:08:24 * elliott googled for: how to remove arteries (safe method)
04:08:26 * kallisti googled for: arteries in the upper leg
04:08:47 * kallisti googled for: 100 cc syringe
04:09:04 * kallisti googled for: how to get veterinary certification
04:09:06 * shachaf looked up: why do people use brand names
04:09:11 * elliott googled for: how to disguise horse as you
04:09:18 * elliott googled for: how to become horse
04:09:18 * shachaf looked up: soviet russia
04:09:21 * elliott googled for: are horses immortal
04:09:26 <copumpkin> o.O
04:09:29 * kallisti googled for: how to acquire tranquilizer
04:09:29 * shachaf looked up: horses vs goats
04:09:40 * oerjan googled for: kidneys for sale
04:09:49 * shachaf looked up: horse-goat hybrid
04:09:57 * elliott googled for: how to blackmail copumpkin
04:10:00 * elliott googled for: are horses immoral
04:10:11 * kallisti googled for: how to become a centaur
04:10:27 * kallisti googled for: nerves in neck of horse
04:10:30 * elliott googled for: used organs "NON-FUNCTIONING" site:ebay.co.uk
04:10:38 * kallisti googled for: nerves in human midsection
04:10:45 * elliott googled for: can childhood dreams survive beyond death
04:10:55 * elliott googled for: cryonics zimbabwe
04:10:57 * shachaf looked down
04:10:58 * copumpkin googled for: how to make elliott, kallisti, and shachaf shut the fuck up
04:11:05 <shachaf> copumpkin++
04:11:13 * elliott googled for: is it okay if oerjan does it too
04:11:24 * oerjan googles for: why don't #haskellers have humor
04:11:24 <shachaf> Let's have some old-fashioned esolanging in here now.
04:11:25 * kallisti googled for: how to communicate passive aggressive indirectly through mock google search queries
04:11:26 * elliott googled for: oerjan moral yardstick goat
04:11:34 <shachaf> `welcome copumpkin
04:11:37 <HackEgo> copumpkin: 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
04:11:44 * elliott googled for: "international hub" espionage?
04:11:57 * kallisti googled for: worst esolang
04:11:58 <elliott> oerjan: kick me, this must end before it gets boring
04:11:58 * copumpkin googled for: why can't oerjan see that that was a haskeller's attempt at humor
04:12:05 * kallisti googled for: goat esolang
04:12:08 <elliott> <shachaf> It never wasn't!
04:12:12 * kallisti googled for: centaurs and esolangs
04:12:13 * shachaf is done.
04:12:15 * elliott googled for: how to fake quotes convincingly
04:12:20 * elliott googled for: fake beard
04:12:22 * copumpkin googled for: the human skewer
04:12:24 * elliott googled for: does shachaf have a beard
04:12:30 * elliott googled for: shachaf's beard (used) site:ebay.co.uk
04:12:38 * kallisti googled for: effective means of incapacitating humans
04:12:44 <shachaf> /!\
04:12:46 * copumpkin googled for: john grows tired of his left nipple
04:12:48 <shachaf> I like that.
04:12:52 * oerjan googled for: best esolang kim jong-il
04:12:58 * elliott googled for: david slowed slightly as his ears
04:13:05 * kallisti googled for: how to rofl via google queries
04:13:17 * shachaf looked up: intelligent calcium black market
04:13:23 * kallisti googled for: why do some people pronounce query in a completely retarded way.
04:13:41 * elliott googled for: how to become a chicken site:interpol.int
04:13:49 * elliott googled for: nasa cosplay
04:14:05 * kallisti googled for: C clamp for restraining large animals
04:14:05 <shachaf> I'm going to #-blah.
04:14:14 <elliott> #esoteric-blah is the best.
04:14:19 <kallisti> that's a thing?
04:14:23 <elliott> oerjan: kick me and kallisti and end this now
04:14:36 <kallisti> oh it's just Sgeo
04:14:37 <shachaf> #esoteric === fix (++ "-blah")
04:14:44 <elliott> kallisti: sgeo is in there?
04:14:45 <elliott> seriously?
04:14:50 <kallisti> only person
04:14:56 <elliott> shachaf: You need p-adic strings for that.
04:15:13 <shachaf> All I have is q-adic strings.
04:15:18 <elliott> kallisti: It's ostensibly for botspam.
04:15:22 <elliott> kallisti: But usually we just do that in here.
04:15:28 * kallisti googled for: am I robot?
04:15:33 <shachaf> copumpkin: So Cale might be going to Hac Boston.
04:15:34 <Sgeo> elliott, I only went in there when it was mentioned in here
04:15:38 <copumpkin> shachaf: oh nice
04:15:39 <shachaf> When do I get my kickback?
04:15:43 <kallisti> Sgeo is a creepy lurker.
04:15:43 <copumpkin> shachaf: bug him to sign up soon
04:15:47 <copumpkin> cause ed's list is full
04:15:52 <shachaf> copumpkin: He would still need to get a passport.
04:15:59 <shachaf> Also I might be going or not and I'm not sure yet.
04:16:05 <elliott> Hac Boston is in Northumberland, right?
04:16:08 <elliott> Just like Boston.
04:16:13 <copumpkin> yes
04:16:16 <copumpkin> elliott: you should come
04:16:23 <oerjan> boston-on-tyne
04:16:30 * kallisti googled for: channel takeover irc
04:16:36 <elliott> copumpkin: ok. northumberland is pretty small so just let me know the day before!
04:16:43 <copumpkin> will do
04:16:47 * elliott googled: directions to boston, northumberland
04:16:54 * elliott googled: are minors allowed in boston
04:17:02 * elliott googled: "boston tea party" biscuits?
04:17:03 -!- Nisstyre has joined.
04:17:05 -!- Madoka-Kaname has joined.
04:17:05 -!- Madoka-Kaname has quit (Changing host).
04:17:05 -!- Madoka-Kaname has joined.
04:17:09 * copumpkin googled: are farts edible
04:17:13 * elliott googled: boston tea party attendance
04:17:25 * elliott googled: boston tea party 2011 hac boston
04:17:41 * elliott googled: turkey surfing
04:17:43 <shachaf> elliott: They only have cookies. No biscuits.
04:17:46 * elliott googled: cyprus surfing
04:17:51 * kallisti googled for: surgery metaphor esoteric language
04:18:00 <elliott> (I have to google the weirder ones to make sure it's not something real. "turkey surfing" isn't something real.)
04:18:20 * elliott googled: can eyeballs be reattached
04:18:24 * elliott googled: can eyeballs be reattached after being slept on
04:18:35 * shachaf looked up: guiness record number of eyeballs
04:18:57 * elliott googled: eyeball surfing
04:19:11 * kallisti googled for: evidence flat earth
04:19:25 <elliott> i love the flat earth society's forums so much
04:19:25 * kallisti googled for: anarchist convention near jasper, GA
04:19:34 * elliott googled for: evidence for oblong earth
04:19:39 * elliott googled for: are anarchists people
04:19:40 <kallisti> elliott: never even considered that such a thing existed
04:19:42 <kallisti> that's beautiful
04:19:46 <kallisti> there should be FlatEarthWiki
04:19:48 <elliott> kallisti: oh you're missing the fuck out!!!
04:19:49 <elliott> there is
04:19:53 <elliott> http://theflatearthsociety.net/wiki/index.php/Main_Page
04:19:54 <elliott> oh
04:19:55 <elliott> or isn't
04:19:59 <kallisti> or ConspiracyWiki
04:20:05 <elliott> kallisti: http://www.theflatearthsociety.org/forum/, I especially recommend "Flat Earth Debate", "Flat Earth Believers" section
04:20:11 <elliott> latter is the best because, they verify people before letting them in
04:20:12 * kallisti googled for: flat earth anarchist revolution
04:20:17 <elliott> last posted topic
04:20:19 <elliott> "The Four Humours"
04:20:22 <elliott> two down from that
04:20:25 <elliott> "Prayer Facing East"
04:20:28 <Sgeo> elliott, surely no one on that forum is serious?
04:20:29 * shachaf looked up: flat earth. flearth
04:20:31 <elliott> three down from that "Results of my study"
04:20:33 <elliott> Sgeo: HAHAHAHA!
04:20:36 <elliott> Sgeo: you betcha
04:20:40 * shachaf looked up: time cube evidence
04:20:43 * elliott googled for: what ARE birds
04:20:52 * elliott googled for: how best to thank ants
04:20:58 <kallisti> "I walked several thousand miles, and didn't notice any curvature. what's up with that?"
04:20:59 * elliott googled for: "little mouse" top 40
04:21:09 <Sgeo> elliott, I mean, it's arguably a beautiful way to get people to think about the difference between evidence and proof, etc.
04:21:16 * kallisti googled for: could birds evolve back into dinosaurs?
04:21:19 <elliott> Sgeo: no its... you dont understand
04:21:25 <elliott> there are literally flat earth believers on there
04:21:26 <elliott> like
04:21:31 <elliott> there are thousands of pages of debate
04:21:33 <elliott> FAQs
04:21:38 <elliott> it's amazing
04:21:49 * shachaf looked up: the figuratively flat earth
04:21:55 * elliott googled for: risk of atomic combustion with goedelisation
04:22:02 * shachaf looked up: what can the flat earth teach us about morality
04:22:02 * elliott googled for: langford basilisk real snakes?
04:22:08 * elliott googled for: how to fall down stairs
04:22:08 <Sgeo> I don't think the debates necessarily imply anything
04:22:34 <elliott> Sgeo: I suggest spending a day reading the believers and debate forum
04:22:54 * kallisti googled for: is 2-sphere homeomorphic to infinite flat plane
04:22:54 <elliott> it is up to you to decide whether anyone can really be that backwards, insane and committed, or that completely stubborn, respectively
04:22:54 * shachaf looked up: elliott hird gullible
04:22:58 * kallisti googled for: is 2-sphere homeomorphic to finite flat plane
04:23:03 * shachaf looked up: will elliott hird believe anything
04:23:05 * kallisti googled for: where is the end of the world?
04:23:16 <elliott> shachaf: it took me a few weeks of reading the forum to be convinced that people actually believe it :P
04:23:18 <elliott> it's actually a real society btw
04:23:25 <elliott> http://en.wikipedia.org/wiki/Flat_Earth_Society
04:23:36 <kallisti> elliott: yes it's certainly real, to some people at least.
04:23:44 * elliott googled for: is breathing possible on a 2-sphere
04:23:52 * elliott googled for: risk of 4-dimensional entanglement while skateboarding
04:24:03 * elliott googled for: how to breathe ghosts
04:24:08 * elliott googled for: how to breathe goats
04:24:13 * shachaf looked up: the earth as analytic and algebraic topology of locally Euclidean metrization of infinitely differentiable Riemannian manifold
04:24:16 * kallisti googled for: risk of travel through fourth dimension in lifetime
04:24:22 * elliott googled for: real numbers not so real after all
04:24:36 * elliott googled for: fake numbers
04:24:48 * elliott googled for: john conway satanist
04:24:52 * elliott googled for: game of death
04:25:08 * elliott googled for: "john conway" "donald knuth" ever seen together?
04:25:34 * shachaf looked up: is euclid still alive
04:25:39 * kallisti googled for: "john conway" "donald knuth" "john mccarthy" threesome
04:25:40 * shachaf looked up: euclid phone number
04:26:10 * elliott googled for: was aristotle pope
04:26:30 * elliott googled for: riemann hypothesis game show
04:26:39 <oerjan> * kallisti googled for: is 2-sphere homeomorphic to infinite flat plane <-- no
04:26:52 <kallisti> oerjan: but finite yes?
04:27:03 * elliott googled for: oxygen intake when drunk
04:27:12 * kallisti googled for: "bertrand russel" "alan turing" sex tape
04:27:21 <oerjan> kallisti: no
04:27:24 * kallisti googled for: "bertrand russell" "alan turing" sex tape
04:28:01 * elliott googled for: was alonzo church a goat
04:28:25 * kallisti googled for: "bertrand russell" is god?
04:28:40 <Slereah_> I once looked for rule 34 of Alan Turing and Ada Lovelace
04:28:44 <Slereah_> But was disappointed
04:28:44 * elliott googled for: esperanto newspeak
04:28:50 * elliott googled for: is lojban electric
04:29:08 <elliott> Slereah_: I thought you found it.
04:29:14 <elliott> Slereah_: Also, you read this place?
04:29:22 <Slereah_> SOMETIMES
04:29:26 <Slereah_> Rarely nowadays
04:29:29 <kallisti> Slereah_: what about rule 34 Ada Lovelace?
04:29:33 <pikhq_> "Esperanto newspeak" ought to at least get you some Orwell.
04:29:34 <Slereah_> Not even that!
04:29:44 <Slereah_> Although the portrait of Ada Lovelace is pretty saucy as it is
04:29:54 * elliott googled for: ada lovelace ghost compiler
04:30:05 <Slereah_> http://www.femmescelebres.com/wp-content/uploads/2009/11/ada1.jpg
04:30:07 <Slereah_> Oh yeah
04:30:58 * kallisti googled for: what operating system does Ada Lovelace use?
04:31:07 * kallisti googled for: Ada Lovelace debugging
04:31:39 * elliott googled for: how to tip cows
04:31:44 * elliott googled for: how much to tip cows
04:31:49 * elliott googled for: cow tipping 20%
04:32:17 * kallisti googled for: Ada Lovelace cyber roleplay
04:32:40 * elliott googled for: how to make friends when you are goat
04:33:05 * kallisti googled for: how much to tip cow if you are monqy
04:33:08 * kallisti googled for: how much to tip cow if you are goat
04:33:34 * kallisti googled for: goat cow hatred
04:33:42 * kallisti googled for: electric goat
04:34:14 <kallisti> elliott: in hindsight
04:34:17 <kallisti> this was the best idea ever.
04:34:28 * elliott googled for: what to do if someone compliments my idea
04:34:31 * elliott googled for: help
04:34:54 * kallisti google for: legal advice when someone claims your idea as their own
04:35:05 * elliott googled for: how to recover from acute embarrassment
04:35:12 * elliott googled for: is lung eczma fatal
04:35:24 * kallisti google for: how to mediate a copyright dispute
04:35:30 * elliott googled for: are ideas copyright
04:35:44 * elliott googled for: what to do if the new word order copyrights your brain
04:35:54 * oerjan googled for: eczemascript programming
04:37:00 * elliott googled for: can i become a real boy if i dont have lungs
04:37:05 * kallisti googled for: is lisp fatal?
04:37:13 * elliott googled for: am i stupid
04:37:19 * kallisti googles that.
04:37:30 <kallisti> aaaaaaah stupid quizes
04:37:34 * elliott googled for: what to do if u mad
04:37:40 * elliott googled for: what to do if shachaf makes u mad
04:38:11 <zzo38> I have thought of my plan for continuing in D&D game.
04:38:17 * shachaf looked up: what to do when someone beeps your name
04:38:17 * kallisti googled for: democratic irc channels
04:38:36 * shachaf looked up: remote torture device
04:38:41 * shachaf looked up: e-torture
04:38:45 * elliott googled for: plan for continuing in d&d game
04:38:56 <kallisti> zzo38: would you be interested in an online pen and paper game?
04:38:57 * shachaf looked up: what is zzo38, really?
04:38:57 * elliott googled for: what is zzo38's secret
04:39:03 <kallisti> zzo38: as in, over IRC.
04:39:10 * shachaf looked up: more notation
04:39:23 * elliott googled for: less notation
04:39:26 -!- augur_ has changed nick to augur.
04:39:42 * kallisti googled for: what if you are an endofunctor?
04:39:47 <monqy> kallisti: hi im backe
04:39:51 <monqy> kallisti: haskel jobs???
04:39:51 * kallisti googled for: treatment for endofunctor
04:40:00 <kallisti> monqy: no such thing.
04:40:24 * elliott googled for: haskell jobs if you are a goat
04:40:29 <shachaf> monqy: You can has Haskell job?
04:40:31 <elliott> monqy: (i then linked him to about five)
04:40:58 <monqy> maybe when i adult i will be haskel jobs
04:41:12 <kallisti> elliott: monqy: compare: http://www.phpjobs.com/
04:41:18 <elliott> i bet those jobs are worse
04:41:21 <kallisti> yep.
04:41:26 * shachaf looked up: is england real
04:41:32 <kallisti> elliott: the $6000 a month one was pretty ridiculous.
04:41:38 * shachaf looked up: is england just a conspiracy of cartographers
04:41:40 <kallisti> > 6000*12
04:41:41 <lambdabot> 72000
04:41:50 * shachaf looked up: "conspiracy of cartographers" england
04:41:59 * shachaf looked up: is hamlet mad
04:42:08 * shachaf looked up: hamlet u mad?
04:42:15 * elliott googled for: is shachaf real
04:42:29 * shachaf looked up: difference between a hawk and a handsaw
04:42:36 * shachaf looked up: the direction of the wind
04:43:08 * kallisti googled for: how to stop a meme once it spreads
04:43:15 * oerjan looked up: air speed of an unladen meme
04:43:22 <kallisti> oerjan: AAAAAH
04:43:28 * shachaf looked up: edward vs edward
04:43:38 <monqy> eduard
04:43:45 * kallisti googled for: endofunctor on edwards
04:44:08 * shachaf looked up: "edward kmett" "edward yang" ever seen together?
04:44:20 * oerjan looked up: endofungal application of applicative endofunctors
04:44:27 * kallisti googled for: elliott hird
04:44:29 * shachaf looked up: copumpkin vs pumpkin
04:44:38 * kallisti googled for: big dudes for big people
04:45:02 * kallisti googled for: big dude society
04:45:42 <kallisti> oh wow suddenly
04:45:45 <kallisti> I look at google plus
04:45:48 <kallisti> and some people are using it.
04:47:18 <monqy> is google plus real?I've only heard stories...
04:47:34 * shachaf looked up: how many haskell users are there
04:47:59 * kallisti googled for: do people use Haskell in real life?
04:48:10 * elliott googled for: google plus hoax
04:48:18 <kallisti> I think we should switch to the shadowrun terminology
04:48:23 * Sgeo googled for: How to use Haskell to launch missiles
04:48:27 <kallisti> instead of "real life" we should say "meat world"
04:48:50 <monqy> ill kill you imw
04:48:56 <kallisti> also "meat body" etc
04:49:01 <kallisti> meat refers to the physical world.
04:49:06 <kallisti> as opposed to the virtual world.
04:49:41 <monqy> what about virtual meat
04:49:56 <kallisti> meatspace is also acceptable
04:49:59 <kallisti> monqy: nope
04:50:00 * monqy googled for: virtual meat oppression
04:50:45 <Jafet> "Flesh world"
04:50:54 * elliott googled for: is flesh
04:51:10 <kallisti> I also like the slang "face" which refers to a charismatic negotiator / con-man / business person
04:51:22 <kallisti> shadowrun slang is good.
04:51:54 <kallisti> zzo38: play shadowrun with me. :(
04:52:03 <kallisti> `word 25
04:52:06 <HackEgo> mod led arat ali wasreolteki an unkyporlziigb menthoc plexpedetostecullantericr acholle gensudgiblayagen herm exiassown de buretervmitunglychelhaper ganded aldight piegiterajarly arissids piresbustoff dassamg possomicrowbed isconieric ditaway rion
04:52:23 <elliott> ganded aldight
04:52:26 <monqy> one time I have heard of shadowrun but never plays it
04:52:45 <kallisti> piegiterajarly
04:52:48 <Jafet> http://web.archive.org/web/20061206051518/http://archive.dumpshock.com/CLUE/
04:52:51 <monqy> piresbustoff
04:53:04 <kallisti> monqy: dassamg!
04:53:15 <kallisti> isconieric and ditaway are good
04:54:01 <kallisti> Jafet: what is this stuff
04:54:09 <kallisti> help I can't read.
04:54:36 <kallisti> monqy: would you like a source book to put in your reading pile?
04:54:45 * elliott googled for: is carpal tunnel syndrome fake
04:55:32 * shachaf looked up: is @ real
04:55:45 * monqy googled: truth behind @
04:55:47 * elliott googled for: cyberbullying resources
04:55:48 * monqy googled: @ exposed
04:55:51 * shachaf looked up: @ black market copy
04:55:52 <kallisti> shachaf: did you mean: israel?
04:56:01 * elliott googled for: is israel rael
04:56:07 * elliott googled for: does belgium exist
04:56:20 * shachaf looked up: used belgium cheap site:ebay.co.uk
04:56:51 * kallisti googled for: cheap belgian servants site:ebay.com
04:57:09 * shachaf looked up: @ release date
04:57:19 * shachaf looked up: @ @em forever
04:57:37 * monqy googled: @ for dummies
04:57:52 <kallisti> speaking of @em
04:57:57 -!- copumpkin has changed nick to nowIcantTalk.
04:57:58 <kallisti> whenever I'm in a math class or CS class or whatever
04:58:03 -!- nowIcantTalk has changed nick to copumpkin.
04:58:05 <kallisti> and someone says add 'em
04:58:06 * shachaf looked up: is @ vaporware or vapourware
04:58:09 -!- copumpkin has changed nick to itsokay.
04:58:10 <kallisti> it sounds like they are saying my name
04:58:11 -!- itsokay has changed nick to copumpkin.
04:58:43 <kallisti> you just Adam up
04:58:46 <kallisti> Adam together
04:58:57 <monqy> math friends
04:59:01 <kallisti> what do you mean? you just Adam.
04:59:19 * elliott googled for: ad er i ardly knew er
04:59:34 * elliott googled for: is shachaf vapourware
04:59:50 * shachaf looked up: is elliott vapouurware
05:00:00 <kallisti> http://web.archive.org/web/20061206051518/http://archive.dumpshock.com/CLUE/
05:00:04 <kallisti> ...bah
05:00:08 <kallisti> copypaste fail
05:00:29 * shachaf looked up: @: fact or fiction
05:00:35 <pikhq_> :)
05:00:38 * shachaf looked up: monadology phd online cheap
05:00:51 * elliott googled for: goat lending
05:01:14 * shachaf looked up: how many category theorists does it take to change a lightbulb
05:01:52 -!- kallisti has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | #esoteric: Still a place that prefers INTERCAL to Haskell | half-add er? I ardly knew er! | http://codu.org/logs/_esoteric/.
05:02:01 * kallisti googled for: how to steal copyrighted ideas
05:02:01 * monqy googled for: is @ a goat
05:02:08 * shachaf looked up: is category theory real
05:02:11 * kallisti googled for: morphisms on lightbulbs
05:02:18 * shachaf looked up: is ddarius real
05:02:27 * monqy googled for: how not to put extraneous spaces in topic
05:02:37 * monqy googled for: how to fix topic
05:02:39 * monqy googled for: help
05:02:51 * elliott googled for: help
05:03:06 * kallisti googled for: help
05:03:11 <shachaf> Mmm, #haskell
05:03:12 <shachaf> @quote factorybean
05:03:13 <lambdabot> kmc says: i <3 http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html
05:03:15 <elliott> GOD DAMMIT
05:03:17 <elliott> I HATE YOU ALL
05:03:19 <elliott> BY
05:03:20 <elliott> YOU ALL
05:03:20 <elliott> I MEAN
05:03:21 <elliott> SHACHAF
05:03:23 <elliott> YOU RUINED THE HELP
05:03:28 <elliott> I WAS GOING TO GET OERJAN TO FINISH IT WITH ONE LAST HELP AND THEN
05:03:29 <elliott> ITW OULD BE DEAD
05:03:30 <elliott> BUT NOW
05:03:32 <elliott> WE SHALL BE CURSED
05:03:33 <elliott> FOREVER
05:03:34 <elliott> IN OUR NIGHTGOWNS
05:03:46 <monqy> @quote monqy
05:03:47 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
05:03:57 * shachaf looked up: goat tranquilizer
05:03:59 * shachaf looked up: elliott tranquilizer
05:04:11 -!- kallisti has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | #esoteric: Still a place that prefers INTERCAL to Haskell | half-add er? I ardly knew er! | http://codu.org/logs/_esoteric/.
05:04:15 <kallisti> monqy: better
05:04:15 * elliott googled for: cursed forever in our nightgowns
05:05:34 <kallisti> this has been going on for two hours by the way.
05:05:56 <monqy> I'm still going through the log because I missed so much wonderful ;_;
05:05:58 <elliott> not long
05:07:08 * monqy googled for: sour cereal information
05:07:30 * elliott googled for: source real
05:08:03 <kallisti> quintopia: also wtf are you doing in north georgia.
05:08:22 <kallisti> also: do you have alcohol?
05:08:26 <kallisti> also: do you like to smoke hookah?
05:08:40 <kallisti> we could trade.
05:08:57 -!- pkzip has joined.
05:09:09 -!- pkzip has left.
05:09:21 <monqy> `welcome pkzip
05:09:23 <HackEgo> pkzip: 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
05:09:31 * kallisti googled for: how to make meeting people in real life less awkward
05:09:49 * kallisti googled for: fun drinking games
05:10:37 * kallisti googled for: how to lace hookah with hallucinogens
05:11:10 * kallisti googled for: vaporizable hallucinogens
05:11:45 * kallisti googled for: DMT prices near Jasper, GA
05:12:06 * kallisti googled for: vaporization point of DMT
05:12:27 * elliott googled for: how to die
05:12:35 * kallisti googled for: is vaporization point an actual thing?
05:12:44 <zzo38> kallisti: Yes I could possibly play the game over IRC; I might lack time however, when everyone can be properly scheduled.
05:12:57 <kallisti> zzo38: "everyone" is currently two people.
05:13:02 <kallisti> one of them is you.
05:13:07 <kallisti> (^hint)
05:13:23 <zzo38> kallisti: And is other one is you?
05:13:28 <kallisti> YEP
05:13:52 <kallisti> I've gotten cursory interest from a number of people but no one is actually willing to learn anything about a game system.
05:14:15 <kallisti> elliott: why you want die
05:14:50 <zzo38> It is possible to play with only one referee and one player, although is better more than one player. I play 3.5 edition and in many unusual ways. Read the recording that I typed of the games I played for some information in case you are interested in it.
05:15:21 <oerjan> @die 10d6
05:15:21 <lambdabot> 10d6 => 38
05:15:32 * elliott googled for: how to not die
05:15:37 <elliott> oerjan: KICK AND BAN ME AND KALLISTI
05:15:55 * kallisti googled for: suicide rates on irc channels
05:16:10 <kallisti> oerjan: that wouldn't quite suffice for Shadowrun
05:16:13 * elliott googled for: kick me and ban kallisti
05:16:13 * elliott googled for: kick me and ban kallisti
05:16:13 * elliott googled for: kick me and ban kallisti
05:16:14 * elliott googled for: kick me and ban kallisti
05:16:14 * elliott googled for: kick me and ban kallisti
05:16:14 * elliott googled for: kick me and ban kallisti
05:16:16 * elliott googled for: kick me and ban kallisti
05:16:18 * elliott googled for: kick me and ban kallisti
05:16:18 * shachaf looked up: help
05:16:20 <elliott> er
05:16:22 * elliott googled for: kick me and kallisti at least
05:16:25 <zzo38> elliott: Part the channel and ignore kallisti.
05:16:26 * elliott googled for: not shachaf he is innocent
05:16:27 <kallisti> oerjan: however, I have an existing bot with dice rollers
05:16:33 <elliott> zzo38: how do i ignore kallisti
05:16:51 <zzo38> elliott: Part the channel and that will work since you are not on the channel they are, then.
05:17:07 <kallisti> I like how zzo38 assumes that elliott wants to ignore us.
05:17:09 <elliott> but kallisti is in other channel too
05:17:19 <Sgeo> elliott, update
05:17:19 * monqy googled for: how to kick other channel
05:17:43 <shachaf> elliott: What's the other channel?
05:17:50 <zzo38> kallisti: I also have written IRC bot with dice rollers. In addition, some IRC networks have a GS command to roll dice and optionally send the result to channel. My own IRC server has a channel for RPG game session, specifically.
05:18:13 <kallisti> zzo38: cool. my dice rollers work for specific systems to make some things more convenient.
05:18:16 <elliott> shachaf: I think #haskell???
05:18:19 <kallisti> well, currently there's only one.
05:18:25 <kallisti> for World of Darkness d10 rules.
05:18:35 <kallisti> because it's insanely simple. shadowrun is a bit more complicated.
05:18:45 <kallisti> elliott: not anymore
05:18:53 <elliott> Well join it then.
05:18:54 <zzo38> I also like Icosahedral RPG, however I have not yet finished writing the rules, so that cannot be played.
05:19:00 <kallisti> elliott: wait why?
05:19:20 <zzo38> Here is recording of my current D&D game: http://zzo38computer.cjb.net/dnd/recording/level20.tex http://zzo38computer.cjb.net/dnd/recording/level20.dvi
05:19:38 <zzo38> The macro file is also available in the same directory; I wrote it specifically for purpose of recording D&D game 3.5 edition.
05:20:07 <zzo38> I have not yet finished recording the last session, but I will do so.
05:20:08 -!- Darth_Cliche has joined.
05:21:23 <kallisti> elliott: what's the purpose of me joining this other channel
05:21:29 <elliott> so that i have to ignore you
05:21:36 <kallisti> ?
05:21:46 <kallisti> I am not understand
05:21:56 <zzo38> This is macro file of recording D&D game: http://zzo38computer.cjb.net/dnd/recording/dungeonsrecording.tex
05:23:24 <kallisti> elliott: what does me being in two channels have to do with ignoring me?
05:23:37 <elliott> <zzo38> elliott: Part the channel and that will work since you are not on the channel they are, then.
05:23:58 <kallisti> elliott: I thought the purpose of the kick was to prevent us from further googling.
05:24:39 <elliott> it is
05:24:48 <elliott> zzo38 told me to /part and ignore you instead
05:25:58 <Sgeo> http://smileytext.com/wp-content/uploads/2011/10/129.jpg
05:26:01 * Sgeo is easily amused
05:26:13 <zzo38> elliott: Your IRC client might have other ignore function too; you could use that instead.
05:26:27 <elliott> zzo38: I thought I should set mode +G or something ??
05:26:29 <zzo38> I know I have a filter function (although I rarely use it)
05:26:42 <elliott> Sgeo: that's the worst comic i've ever seen
05:26:58 <Sgeo> elliott, go read Station V3, then come back to me
05:26:59 <zzo38> Usermode +G? There is no such thing. Use +D if you want to ignore channel messages and +g to ignore private messages.
05:27:08 <Sgeo> I don't know why it's still on my RSS reader
05:27:10 <elliott> Sgeo: do i really want to
05:27:24 <Sgeo> Twittch is also rather lame
05:27:35 <elliott> http://www.stationv3.com/d/20111120.html hilarious
05:27:50 <elliott> http://twittch.com/ hilarious
05:28:00 <elliott> http://twittch.com/60/ ha ha ha
05:28:21 <elliott> http://twittch.com/57/ ha ha ha
05:29:40 -!- GreaseMonkey has joined.
05:29:55 <kallisti> elliott: wow...
05:29:56 <kallisti> these are
05:29:58 <kallisti> awesome
05:30:08 <kallisti> rivalling SBAHJ
05:35:24 <kallisti> elliott: it gets even worse http://twittch.com/24/
05:35:29 <kallisti> the author is a Ruby person
05:35:37 <elliott> beautiful
05:35:41 <elliott> Sgeo: why did you ever start reading this
05:35:48 <elliott> http://twittch.com/23/
05:36:01 <kallisti> ..
05:36:44 <Sgeo> elliott, I saw one of the comics in some presentation
05:40:41 <Sgeo> There's an iOS app for this thing
05:40:42 <Sgeo> WHY
05:40:56 -!- MDude has changed nick to MSleep.
05:41:51 <kallisti> elliott: http://twittch.com/36/
05:41:54 <zzo38> They have accused my character to commit crimes: * Unauthorized entry into a debtor prison * Breaking and entering * Allowing prisoners to escape * Injuring the guards. However it is only the first one which I have commited, not the others.
05:41:54 <kallisti> can you explain this one?
05:42:07 <elliott> kallisti: nope
05:43:08 <elliott> tup's site got uglier :(
05:43:08 -!- oerjan has quit (Quit: Good night).
05:43:38 <kallisti> elliott: hi do you like pen and paper RPGs?
05:43:54 <kallisti> fungot: what about you?
05:43:54 <fungot> kallisti: alternate universe, that's " law and order". and it doesn't have to be shakespeare.
05:43:58 <kallisti> fungot would be the best player.
05:43:58 <fungot> kallisti: people have worried! the fact, you were like, " hey, i wonder if i talk to about one in then people who know so many awesome things that i'm like, " all the money that was ever mean to you in a way that i could come
05:44:06 <elliott> kallisti: no
05:44:46 <kallisti> elliott: you smell bad
05:44:55 <zzo38> Computer RPG games are not real role playing games. Text adventure games come close. But not really.
05:45:25 <kallisti> zzo38: I would argue that some computer RPGs are similar to roleplaying
05:45:31 <kallisti> if an element of choice is given.
05:45:40 <kallisti> however it's not the same I agree.
05:46:33 <kallisti> zzo38: I'm highly interested in create a hard science fiction setting and system for tabletop RPGs.
05:47:34 <kallisti> specifically centered around our solar system and nearby systems.
05:47:43 <kallisti> without any expedient means of FTL travel.
05:48:31 <kallisti> somewhat in the genre of "space western" I guess.
05:48:42 <zzo38> I am also interested making a system for role playing game; it is called Icosahedral RPG, and is incomplete. It is for pencil and paper. Mana are mathematical, and other magical things can also use mathematics such as category theory and whatever; it can form a category. Fighter are designed powerful class for combat; ...
05:49:05 <kallisti> I... okay.
05:49:08 <zzo38> ... spellcaster is generally for noncombat. Assumed all creature suitable for player character; pseudolevels can balance them. There are other unique features too.
05:49:20 <pikhq_> zzo38: The idea of "computer RPGs", of course, comes about due to *mechanics*.
05:49:36 <pikhq_> It is incredibly easy to see the mechanical similarities.
05:49:51 <kallisti> pikhq_: storytelling etc etc
05:50:32 <pikhq_> Of course, this *does* omit approx. half the fun of RPGs: the interactivity. You're not merely helping the story take place, you are one of the authors of the story.
05:50:36 <zzo38> pikhq_: I agree to that. And I can understand why the term "RPG" used. However, it is not a role playing game and the abbreviation should be used when refering to "Computer RPG". Text adventure games are closer, in my opinion.
05:50:55 <zzo38> But still not quite.
05:51:27 <pikhq_> zzo38: I tend to go with "JRPG" and "Western RPG", personally.
05:51:37 <pikhq_> (as there are certainly two distinct groups of computer RPGs)
05:51:44 <kallisti> demon's souls: best RPG
05:51:46 <kallisti> that I've ever played
05:51:50 <zzo38> pikhq_: You can use those terms if you prefer; yes it can help to distinguish them.
05:51:58 * kallisti awaits an opportunity to play Dark Souls.
05:52:20 <pikhq_> Also "pen & paper RPG" if I need to be unambiguous about the traditional sort.
05:52:38 <zzo38> (And if I would be referee in a role playing game over IRC, I would permit some common abbreviations used in text adventure games)
05:53:21 <kallisti> zzo38: I think we are probably accustomed to two different styles of gameplay based on your recordings
05:53:42 <zzo38> kallisti: You might be correct; I do play very unusually.
05:54:10 <zzo38> You are probably correct.
05:54:23 <kallisti> I think it's mostly that I'm accustomed to a more theatrical style of roleplaying. D&D games I've noticed tend to not have this attribute
05:55:30 <pikhq_> D&D in particular does tend to get focused on mechanics a lot.
05:55:48 <pikhq_> Probably just because there's a lot of mechanics there to play with.
05:55:49 <kallisti> it's not even that, entirely. that's part of it.
05:56:24 <kallisti> sure there's storytelling and infinite possibilities and all that, but it's all kind... absurd.
05:56:27 <kallisti> it's not very immersive.
05:56:37 <kallisti> I'm sure it's fun though.
05:56:56 <zzo38> However, note my recordings; even many things not completely by mechanics; there is many story oriented things.
05:57:08 <kallisti> in the same way that skyrim is fun, even, except moreso because you create your own quests and challenges, basically.
05:57:12 <zzo38> But game mechanics are used for combat and spellcasting of course.
05:57:25 <pikhq_> Well, yes, D&D shapes a particular, almost quaint, sort of setting.
05:58:00 <pikhq_> It's almost a bit like Final Fantasy's extensive use of its various set pieces, really.
05:58:10 <kallisti> pikhq_: tabletop games tend to be quite different when you're in present day settings, or settings based on the real world.
05:58:18 <kallisti> shadowrun is a kind of hybrid of the two. cyberpunk setting with fantasy elements.
05:58:35 <zzo38> The way I play is different in many ways howveer. Read my recording please.
05:58:38 <pikhq_> I'm pretty fond of urban fantasy, myself.
05:58:47 <kallisti> pikhq_: shadowrun
05:58:59 <zzo38> s/howveer/however/
06:00:16 <kallisti> :t count
06:00:16 <lambdabot> Not in scope: `count'
06:02:19 <kallisti> !perl for (map {int rand 7} (1..4)) { $i++ if ($_ > 4) } print $i
06:02:29 <kallisti> :(
06:03:13 <kallisti> !perl for (1..4) { $i++ if (int(rand(7)) > 4) } print $i
06:03:14 <EgoBot> 1
06:03:16 <kallisti> !perl for (1..4) { $i++ if (int(rand(7)) > 4) } print $i
06:03:24 <kallisti> !perl for (1..4) { $i++ if (int(rand(7)) > 3) } print $i
06:03:25 <EgoBot> 3
06:03:40 <kallisti> this is a simplified version of what shadowrun rolls look like.
06:04:03 <kallisti> here the dice pool is 4, and target number is 4 (and then 3)
06:04:06 <kallisti> you roll d6
06:05:14 <kallisti> World of Darkness is similar but with d10
06:05:36 <kallisti> I really like WoDs system actually. effective but not incredibly dense.
06:06:52 <kallisti> you have attributes (split into physical, mental and social), you have abilities (split into talents, skills, and knowledges), and you combine one of each to make an action against a difficulty (target number)
06:07:19 <zzo38> I have also once played anime role playing game at anime convention.
06:07:24 <kallisti> so for example Dexterity+Firearms difficulty 6 would be a standard "shoot this person" action.
06:09:02 <kallisti> and of course the difficulty varied based on range, visibility, mental state, wound penalties and other conditions that might be applicable.
06:10:30 <Jafet> Tabletop RPGs have too much mechanics; computer RPGs are too mechanical
06:10:39 <elliott> Jafet doesn't like fun, I think.
06:10:50 <zzo38> The game mechanics do not have to be used all the time!!
06:11:15 <kallisti> Jafet: also in other cases the game mechanics become very intuitive once you get the hang of them.
06:11:29 <kallisti> and really only the game master has to know them well.
06:11:41 <Jafet> Ideally, a computer should be doing the mechanics and a person should be doing everything else, but computer interfaces suck
06:12:04 <kallisti> it's really not a problem if you have a sane, easy to understand system.
06:13:04 <kallisti> zzo38: actually I think you would enjoy Mage.
06:13:10 <kallisti> (a WoD system)
06:13:21 <zzo38> What does "WoD" means?
06:13:25 <kallisti> world of darkness.
06:14:05 -!- Jafet has quit (Quit: Leaving.).
06:14:18 <Vorpal> morning
06:14:23 <kallisti> the premise: you play in a modern day (or historical, or sci-fi if you want) setting, with the only difference being that supernatural beings exist and have kept their presence unknown by society.
06:14:35 <Vorpal> kallisti: which game is that?
06:14:41 <kallisti> 01:13 < kallisti> world of darkness.
06:14:42 <kallisti> ..
06:14:44 <Vorpal> ah
06:14:54 <Vorpal> kallisti: come on I just woke up, and I'm not good at mornings
06:14:58 <kallisti> no worries.
06:15:12 <Vorpal> in fact I'm absolutely terrible at early mornings
06:15:16 <Vorpal> 07:14 here
06:15:28 <kallisti> also, once you actually play the game it becomes increasingly obvious that there is probably no way you could keep such a thing secret from the entire world.
06:15:31 <kallisti> especially in the modern age.
06:16:09 <kallisti> but, it's a fun premise.
06:16:14 <Vorpal> heh
06:16:20 <Vorpal> kallisti: computer game?
06:16:27 <Vorpal> or tabletop rpg
06:16:29 <kallisti> no tabletop / pen and paper
06:16:39 <kallisti> though some computer games exist
06:16:40 <kallisti> they're bad.
06:16:46 <Vorpal> ah
06:17:23 <kallisti> zzo38: but anyway what's cool about Mage is that there aren't any set lists of spells that you learn.
06:17:43 <Vorpal> good idea
06:17:51 <kallisti> instead you have nine spheres that represent some aspect of reality, and knowledge in those spheres allows you to control that aspect. spels can include combinations of spheres as well.
06:18:00 <Vorpal> hm tabletop rpg with magicka style magic might be fun...
06:18:11 <kallisti> it's similar.
06:18:15 <Vorpal> ah
06:18:16 <kallisti> but more endless.
06:18:19 <Vorpal> wow
06:18:22 <Vorpal> that is impressive
06:18:36 <kallisti> it's definitely my favorite from WoD
06:18:42 <kallisti> in terms of the game system itself.
06:18:48 <Vorpal> heh
06:19:11 <Vorpal> speaking of which: you get more out of magicka if you know Swedish
06:19:25 <Vorpal> the voiced dialogue is a mix of Swedish, English and some made up stuff
06:19:34 <kallisti> also the interpretation of spheres is leenient based on what sort of magical tradition you follow. so basically, there's like "mad scientist" mages as well as your traditional Hermetic order kind of mage.
06:19:35 <Vorpal> and often doesn't match the written dialogue in meaning
06:20:10 <Vorpal> like calling townsfolk "fjantar", which would loosely translate to "sillies"
06:20:19 <Vorpal> kallisti: you said you played Magicka right?
06:20:21 <kallisti> the mad scientist interpretation of the sphere of Matter for example could involve things like transmuting chemical elements and the like.
06:20:24 <kallisti> Vorpal: yes
06:20:34 <Vorpal> bloody hard game too
06:20:38 <kallisti> noep
06:20:42 <kallisti> well
06:20:43 <kallisti> yes
06:20:46 <kallisti> high learning curve
06:20:52 <kallisti> but then once you've learned it it's incredibly easy actually.
06:20:56 <Vorpal> I didn't get very far in it. Don't have the required skill at high speed
06:21:09 <Vorpal> can't tap out qwwedasdasd or whatever it is at high speed
06:21:13 <kallisti> lol
06:21:27 <Vorpal> (note that was random key presses)
06:21:35 <kallisti> Vorpal: try a few edddd's beforehand, or edfffs or efrrrs to give you some time.
06:22:01 <Vorpal> kallisti: I mostly played it single player, don't really have anyone to play against.
06:22:10 <kallisti> basically giant rock barriers, the latter two are volcanos and frost volcano thingies
06:22:32 <kallisti> but edddd (pure rock barrier) withstands the most damage.
06:22:41 <Vorpal> hm
06:22:57 <elliott> i wish oerjan didn't get sick of that space metazipper thing :'(
06:23:03 <elliott> shiro 2 could be so good............
06:23:05 <Vorpal> kallisti: nah I prefer games where I have time to think and/or have quicksave.
06:23:59 <Vorpal> kallisti: I'm reasonably good at nethack for example. Due to having the time to think in it. I'm not a fast nethack player though. I ascended a few times.
06:24:01 -!- ineiros has quit (Read error: Operation timed out).
06:24:24 <kallisti> Vorpal: then qfqfasa = best beam spell qfqfass = best AoE spell dqrqrqrqr = best projectile qfsafe self-cast = immunity to most offensive elements
06:24:28 <kallisti> How to Break Magicka: the Book
06:24:42 <Vorpal> kallisti: hey I could install autohotkeys and survive magicka XD
06:25:02 <kallisti> you could survive and then kill everything nearly instantly with no trouble.
06:25:06 <kallisti> in story mode.
06:25:15 <Vorpal> story mode is what I tried
06:25:28 <kallisti> though the vietnam thing is a bit more difficult and annoying
06:25:28 <Vorpal> got to that city place, then gave up
06:25:42 <kallisti> my favorite is arena because it's the most challenging but without annoying fucking automatic weapons
06:25:58 <Vorpal> kallisti: automatic weapons proved a life saver to me so far
06:26:02 <kallisti> nooooo
06:26:02 <kallisti> so bad
06:26:05 <Vorpal> why?
06:26:13 <kallisti> I've watched youtube videos of people that literally do nothing but use m60
06:26:15 <kallisti> it's so bad
06:26:50 <kallisti> I mean, it works, but it's also really boring and nowhere near as effective as memorizing a few awesome spells
06:26:51 <Vorpal> kallisti: personally I'm interested in magicka because of the wacky story and the voice over.
06:27:02 <kallisti> Vorpal: that's understandable
06:27:08 <Vorpal> I wish it had a difficulty setting basically.
06:27:17 <kallisti> it's honestly kind of silly to get serious into Magicka, but I.. managed to do it in the short time I played it.
06:27:43 <Vorpal> "serious" and "magicka" do not belong in the same sentence.
06:27:48 <kallisti> because the gameplay concept is actually quite good and fun.
06:28:05 <elliott> kallisti: i encourage you to play good games like aii and ec
06:28:13 <kallisti> elliott: what are those
06:28:22 <elliott> good
06:28:22 * kallisti googled for: no wait fuck googling
06:28:30 <Vorpal> kallisti: played bastion? Now that is a game I'm quite good at, even with the difficulty turned up (which is done by an interesting in-game-world system)
06:28:48 <kallisti> Vorpal: I have not
06:29:07 <Vorpal> kallisti: I recommend it. Truly unique experience. The dynamic voice over system is awesome.
06:29:24 <kallisti> Vorpal: you should try Magicka again it is very rewarding once you become god.
06:29:28 <kallisti> it still continues to be challenging despite that.
06:29:56 <elliott> kallisti: aii is a ~space~ dogfighting game with fully newtonian movement, ragdoll-physicsy ships, and cool things like weapons that shoot bubble things that slow down time inside them, also black holes and lots of orbital transfers???
06:30:04 <Vorpal> kallisti: basically the narrator speaks as you go along. And inserts dynamic statements. Like might comment on your favourite set of weapons or such.
06:30:06 <kallisti> elliott: holy crap
06:30:09 <kallisti> elliott: that's like
06:30:10 <elliott> ok it doesn't technically exist yet PH is getting off his ass with some of the prototype code :P
06:30:13 <kallisti> elliott: the game I wanted to make
06:30:17 <kallisti> .....oh
06:30:26 <elliott> kallisti: IT'S GOING TO BE SO GOOD THOUGH?
06:30:30 <kallisti> elliott: yes
06:30:31 <elliott> PH already has a prototype of the basic physics
06:30:36 <Vorpal> kallisti: get used to elliott talked to stuff he is planning as if it was already in existence.
06:30:36 <elliott> (to prove oklopol wrong)
06:30:42 <elliott> Vorpal: hey ph started it
06:30:55 <Vorpal> kallisti: get used to elliott talked to stuff he or PH is planning as if it was already in existence.
06:31:03 <Vorpal> elliott: that should be more accurate ^
06:31:07 <kallisti> elliott: other things to consider: portals
06:31:10 <kallisti> all games are made better by portals.
06:31:23 <kallisti> magicka needs: portal gun
06:31:31 <elliott> kallisti: maybe. it's two-dimensional so i dunno if that'd work very well
06:31:38 <Vorpal> kallisti: I bet they would throw that in except Valve would go mad
06:31:39 <elliott> probably shoulda mentioned it was 2d :P
06:32:02 <kallisti> Vorpal: there are already instances of games that have ripped off the portal mechanic except not quite as good
06:32:09 <Vorpal> hm
06:32:11 <kallisti> elliott: no 2d is what I had in mind actually
06:32:12 <kallisti> that makes it better
06:32:28 <kallisti> *what I had in mind when I was devising the best space fighting game ever
06:32:40 <elliott> kallisti: especially since it came out of oklopol doubting that stable orbits would form in 2d :P
06:32:46 <kallisti> elliott: also: ships with bladed wings.
06:32:53 <elliott> one thing i'm a bit unsure about is whether the networked multiplayer will work
06:32:55 <elliott> because
06:33:03 <elliott> that's like the only way this would ever be played
06:33:04 <kallisti> realtime games and networking kind of don't work
06:33:08 <elliott> but the synchronisation would be euurgh
06:33:16 <Vorpal> elliott: why? You could do split screen surely?
06:33:27 <elliott> Vorpal: (a) nobody has two keyboards, (b) nobody has friends
06:33:29 <elliott> kallisti: yeah, but otoh the newtonian physics limits it a bit?
06:33:35 * kallisti once tried to play smash bros brawl online and ragequit
06:33:40 <elliott> kallisti: like if you're in a stable orbit you're not going to escape it in the next .5 seconds
06:33:44 <Vorpal> elliott: a) actually I do. One of them is kind of crappy, ultraflat thingy
06:33:50 <Vorpal> b) true
06:34:12 <shachaf> Valve didn't particularly invent the idea of portal guns, did they?
06:34:12 <Vorpal> actually I have friends, at university. But most of them live in a different city than me.
06:34:14 <kallisti> elliott: it's more of a like... sync issue when you are in direct combat with another human being.
06:34:16 <elliott> kallisti: but yeah i dunno, latency isn't very... good
06:34:24 <elliott> kallisti: well yeah
06:34:27 <kallisti> elliott: who shot who first etc
06:34:39 <elliott> kallisti: but like a lot of aii's mechanics involve not just being able to fly around shooting because that's boring
06:34:52 <Vorpal> elliott: you might be able to pull it off over LAN
06:35:13 <elliott> kallisti: i expect a lot of it will be done by basically getting consistent but erratic orbits with an easy enough escape that you can fire off some shots at certain points without too much risk
06:35:22 <shachaf> This channel talks too much.
06:35:25 <elliott> and like obviously the time-changing stuff makes things more complicated :P
06:35:31 <elliott> Vorpal: well LAN realtime games are trivial
06:35:32 <kallisti> elliott: also what happens when you black hole all the planets
06:35:36 <elliott> you barely even need prediction
06:35:42 <elliott> kallisti: that would be bad.
06:35:46 <Vorpal> elliott: wouldn't the act of firing a shot push you out of orbid?
06:35:48 <Vorpal> orbit*
06:35:59 <kallisti> elliott: also what about relativity? :P
06:36:03 <elliott> kallisti: no relativity :P
06:36:06 <kallisti> :(
06:36:15 <elliott> Vorpal: they're lasers, man
06:36:17 <Vorpal> <shachaf> This channel talks too much. <-- no
06:36:22 <elliott> but the idea would be like
06:36:25 <Vorpal> elliott: that still pushes a bit...
06:36:29 <shachaf> Vorpal: Fine. People in this channel talk too much.
06:36:30 <elliott> escaping your orbit so that you drift back into it in the next few seconds
06:36:40 <Vorpal> elliott: afaik you can push a mirror with a laser for example
06:36:44 <Vorpal> not much, true
06:36:46 <Vorpal> but still
06:36:54 <kallisti> "why is everyone idle all the time?" "why does everyone talk so much?" "baaaaaawwww"
06:37:12 <shachaf> kallisti: They should talk while I'm here and not while I'm gone.
06:37:24 <kallisti> elliott: I think the inclusion of bombs would be interesting
06:37:27 <elliott> kallisti: also i've cunningly avoided the problem of being completely useless at art by devising the PERFECT ART AESTHETIC (for lazy people)
06:37:28 <kallisti> so you could place a bomb in an orbit
06:37:29 <Vorpal> shachaf: you should obviously adjust your schedule then
06:37:33 <elliott> i am the best at avoiding work.
06:37:43 <kallisti> elliott: lines?
06:37:52 <Vorpal> ascii graphics?
06:38:01 <elliott> kallisti: ALMOST
06:38:01 <kallisti> I played a game called gravity well that was basically entirely composed of lines
06:38:04 <kallisti> your ship was a little triangle
06:38:07 <kallisti> planets were circles
06:38:20 <kallisti> it was also a 2d space dogfighting game
06:38:24 <elliott> kallisti: the aesthetic is basically like http://upload.wikimedia.org/wikipedia/en/1/13/Asteroi1.png but 21ST CENTURY
06:38:30 <elliott> it should be mentioned that aii stands for Asteroids II :P
06:38:58 <kallisti> you could claim uninhabited planets by landing on them, once you landed one of your colonies would send a colony pod to colonize it and make a base
06:39:03 <kallisti> which would place little defensive shooter turrets
06:39:07 <kallisti> and then slowly the base would grow in size
06:39:15 <elliott> kallisti: it came to me IN A VISION (actually i think i just woke up with it), it's basically layering 10 blurry parallaxy ~space nebula~ background layers on top of each other, and then all the actual game objects are slightly glowy neon vectors
06:39:15 <kallisti> and have a little orbiting docking platform that could heal you
06:39:19 <shachaf> I once played a game that consisted entirely of text. It was, like, crazy, man.
06:39:19 <Vorpal> hey that is a different game
06:39:24 <Vorpal> shachaf: XD
06:39:30 <elliott> kallisti: and like colour and faintness is used for things like reporting damage
06:39:41 <kallisti> elliott: ah interesting
06:39:43 <shachaf> Bureaucracy was an odd sort of game.
06:39:58 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:39:59 <elliott> kallisti: also there's like a faint movement trail??? and bullets (LASER SHOTS) do things like ripple the background
06:40:02 <kallisti> elliott: and probably very pretty looking
06:40:03 <elliott> come to think of it, I _may_ have been hallucinating.
06:40:12 <Vorpal> shachaf: infocom?
06:40:27 <kallisti> elliott: could have been because you just woke up
06:40:29 <kallisti> that happens
06:40:41 <elliott> kallisti: also PH had the absolute best idea for a weapon.
06:40:45 <shachaf> Vorpal: Yes.
06:40:46 <elliott> kallisti: it's the... NEUTRINO GUN
06:40:51 <kallisti> oshi
06:40:54 <elliott> kallisti: when you fire it, a random ship within the vicinity instantly blows up
06:41:00 <kallisti> ..
06:41:01 <elliott> kallisti: you then have ten seconds to blow it up yourself
06:41:07 <elliott> or you lose
06:41:13 <kallisti> lol
06:41:20 <elliott> wait no
06:41:21 <elliott> i got it wrong :(
06:41:22 <Vorpal> bbl
06:41:24 <elliott> kallisti: when you fire it, a random ship within the vicinity instantly blows up
06:41:28 <elliott> kallisti: you then have ten seconds to AIM the gun at it
06:41:29 <elliott> or you explode
06:41:35 <kallisti> hahaha
06:41:40 <elliott> kallisti: basically the player behind the ship keeps playing for ten seconds and you have to get in range and aim it
06:41:53 <kallisti> elliott: causality explosion?
06:42:03 <elliott> yes. causality works by blowing people up if they violate it
06:42:08 <elliott> just like in the real world
06:42:12 <kallisti> excellent
06:42:20 <kallisti> so yeah gravity well was the best thing ever.
06:42:25 <kallisti> in my childhood
06:42:27 <kallisti> I played it for hours
06:43:06 <kallisti> basically everything was zero-g so you could accelerate to retarded speeds as you jet across the entire star system but then... good luck slowing down before you crash into anything
06:43:24 <elliott> aka newtonian :P
06:43:27 <elliott> well unless you could pivot
06:43:30 <elliott> which would be
06:43:31 <elliott> weird
06:43:34 <kallisti> you could
06:43:38 <kallisti> well what do you mean
06:43:46 <elliott> could you turn around and start going another way at high speeds
06:43:46 <kallisti> I mean, you could rotate your ship as it was moving
06:43:48 <kallisti> so to slow down
06:43:55 <kallisti> you just rotate 180, and jet the other direction
06:44:02 <elliott> right. not newtonian then.
06:44:04 <elliott> so lame.
06:44:14 <kallisti> ...how else do you slow down?
06:44:22 <kallisti> or, turn?
06:44:27 <elliott> (in case you're dumb (technical term), with newtonian mechanics you'd just turn around helplessly)
06:44:32 <elliott> (because that's how it works.....)
06:44:40 <elliott> kallisti: you have to fight against your velocity
06:44:46 <kallisti> elliott: right that's what I meant
06:44:48 <elliott> right
06:44:50 <kallisti> you don't instantly change direction
06:45:10 <elliott> if you mean you turna round and accelerate and it takes like ten minutes to get going again, then yeah
06:45:16 <kallisti> yes
06:45:33 <kallisti> you could also accelerate backwards at a slight angle to get like a slow u-turn sort of effect
06:46:06 <kallisti> I think it would be nice if you have a retardedly powerful jet that had some sort of cooldown mechanic
06:46:16 <kallisti> so you could either start off or slow down rapidly, SOMETIMES
06:47:02 <kallisti> also all of your colonies could get like research labs
06:47:16 <kallisti> so that when you land on your orbiting dock bay thing
06:47:25 <kallisti> you could get like shieds, homing rockets, etc
06:47:27 <elliott> a cool mechanic would be to have a magical device onboard your ship that can become like really really massive (not like your mom, like jupiter) for a short period of time but it costs a shitload of energy
06:47:35 <elliott> so you get close to a bunch of people and turn it on and they all helplessly get pulled towards you :P
06:47:42 <kallisti> heh
06:47:45 <elliott> and then you spin around firing death. :(
06:47:50 <kallisti> a projectile could be more interesting.
06:47:56 <kallisti> if you have non-laser weapons involved
06:48:27 -!- ineiros has joined.
06:48:28 <kallisti> also non-laser weapons would be interesting in that you cold manipulate gravity to your advantage but you also have to deal with travel time.
06:48:36 <kallisti> requires planning
06:48:51 <elliott> oh well they're not like
06:48:52 <elliott> proper lasers
06:49:01 <elliott> they're just guns but more high-tech.
06:49:02 <kallisti> in what way?
06:49:04 <kallisti> oh
06:49:05 <kallisti> so
06:49:08 <kallisti> instant travel guns?
06:49:10 <elliott> there's still a projectile and it's still affected by gravity :P
06:49:11 <kallisti> that are subject to physics?
06:49:13 <elliott> nope, travel time!
06:49:16 <elliott> although that WOULD be cool.
06:49:16 <kallisti> oh, okay.
06:49:23 <kallisti> yes
06:49:24 <elliott> but look, if you say laser it sounds fancier.
06:49:31 <elliott> and i can handwave the fact that guns + space = ???
06:49:31 <kallisti> "energy weapons"
06:49:33 <elliott> yes
06:49:34 <elliott> phasers
06:49:38 <elliott> star trek(tm) phasers
06:49:40 <kallisti> to account for the lack of newton's third law
06:49:46 <kallisti> on your ship
06:50:05 <elliott> a fun thing would be having a battle like right in the middle of a complicated multi-body orbit
06:50:10 <kallisti> elliott: what do you mean ??
06:50:10 <elliott> so bullets keep getting bent around
06:50:14 <kallisti> guns operate fine in space actually
06:50:25 <elliott> kallisti: yeah but guns don't fire neon bullets?
06:50:30 <kallisti> ah, yes.
06:50:44 <kallisti> admitedly the gravity physics in gravity well were bad
06:50:47 <kallisti> basically you just got sucked down
06:50:50 <kallisti> well
06:50:52 <elliott> kallisti: neon's third law for shooting might be interesting tbh
06:50:54 <kallisti> you could orbit
06:51:00 <kallisti> but it required like, constant careful thrusts
06:51:03 <kallisti> and was basically impossible.
06:51:13 <kallisti> lol neon's third law
06:51:29 <kallisti> elliott: yes I think a variety of weapons would make for more fun.
06:51:34 <kallisti> not necessarily more... gameplay coherence though
06:51:36 <kallisti> but fuck that.
06:51:44 <elliott> lol neon's third law
06:51:57 <elliott> kallisti: yeah i'm not sure what the ... progression in terms of gameplay is?
06:52:03 <elliott> i'm tempted to just like give everyone every weapon from the start
06:52:20 <kallisti> well if you involved space colonies
06:52:22 <kallisti> but that's weird
06:52:26 <elliott> kallisti: that's getting mmorpgy
06:52:27 <kallisti> with the whole orbity combat stuff
06:52:29 <elliott> shared state
06:52:33 <kallisti> elliott: eh not necessarily
06:52:36 <kallisti> could be a very simple system.
06:52:39 <elliott> well how would you prevent trivial cheating
06:52:40 <kallisti> like gravity well!
06:52:47 <kallisti> trivial cheating as in?
06:52:50 <elliott> since i'm thinking of it as multiplayer-only
06:53:29 <elliott> kallisti: well how do you stop people saying they bought shit which they didn't :P
06:54:09 <kallisti> um......?
06:54:23 <kallisti> you mean how do you stop people from lying?
06:54:25 <kallisti> unsolved problem.
06:54:38 <elliott> kallisti: how do i stop people's game clients from telling the other players, "yep I got super-weapon"
06:54:39 <elliott> when they don't.
06:54:43 <kallisti> oh
06:54:48 <kallisti> right
06:55:11 <kallisti> closed source, encrypted protocol. :P
06:55:20 <elliott> yeaaaaaaah
06:55:47 <kallisti> or you have a server
06:55:51 <kallisti> which mediates
06:56:28 <elliott> kallisti: right, so we need big iron which everybody has to talk to...
06:56:34 <elliott> and which has to do ugly anti-cheating shit
06:56:38 <kallisti> yep
06:56:53 <kallisti> it's otherwise most likly impossible to prevent cheating
06:56:57 <elliott> easier just to make every match a blank slate. then the only kind of cheating is client hacking shit, and hopefully that would be visible
06:57:14 <elliott> like as opposed to someone just waiting five minutes and then blowing you up with a mega super weapon that's supposed to be hard to get or whatever
06:57:15 <kallisti> ragequitting is an effective deterrent to cheaters.
06:57:20 <elliott> i dunno *shrugs*
06:57:42 <kallisti> well, hmmmmmmmmmmmm
06:57:56 <kallisti> the protocol
06:58:05 <kallisti> could consist entirely of basically key input
06:58:11 <kallisti> and each game creates its state separately
06:58:26 <kallisti> but then if you have any kind of visibility mechanic (like a fog of war)
06:58:29 <elliott> kallisti: that's rly network trafficy
06:58:30 <kallisti> then client hacks could see everything.
06:58:44 <elliott> but yeah i can design a protocol
06:58:50 <elliott> i just, eh
06:58:58 <kallisti> elliott: it is? I figured it would be less traffic than "send everything about the gameworld all the time"
06:58:59 <elliott> who needs in-game progression when you have the progression of "people being better players"
06:59:07 <kallisti> well, right.
06:59:15 <kallisti> it just depends on the style of gameplay
06:59:23 <elliott> sort of like Worms actually
06:59:27 <kallisti> the only way progression would be interesting from a competitive standpoint is if there are choices
06:59:30 <kallisti> rather than a linear progression
06:59:33 <elliott> you can just cause in-game, per-match events that give you powered-up weapons and utilities
06:59:36 <elliott> (~ crate drops)
07:00:11 <kallisti> depends on how much chance you want to add.
07:00:18 <kallisti> I like zero chance games.
07:00:24 <kallisti> (modulo latency)
07:00:51 <kallisti> for example, starcraft is completely devoid of chance.
07:00:53 <kallisti> it is also completely awesome.
07:00:56 <elliott> kallisti: eh, I could make everyone get the same weapon at the same time? :P
07:01:06 <elliott> hmm, i am very sceptical of the implicit claim that starcraft never uses an rng in a non-deterministic way
07:01:22 <kallisti> elliott: well you said "cause an in-game event" basically as long as you don't randomly select the power-up then you get zero chance involved.
07:01:29 <kallisti> if each in-game event corresponds to a particular power-up
07:01:37 <elliott> have you played worms? :P
07:01:43 <kallisti> elliott: well, I'm pretty certain it doesn't
07:01:45 <kallisti> elliott: no
07:02:01 <kallisti> elliott: at least in the combat mechanics there is no chance. all of the numbers are fixed and don't vary.
07:02:14 <elliott> oh. the crate drops are basically, randomly (approx. every N turns or whatever), a random weapon (weighted by how powerful it is etc.) gets dropped in a crate
07:02:21 <elliott> which worms can then navigate to to add to the team's artillery.
07:02:29 <kallisti> yeah that would work
07:02:34 <elliott> what? that's pure chance
07:02:48 <kallisti> but if I were designing the game I would eliminate all forms of randomness, or have them turned off without seriously destroying the gameplay.
07:02:58 <kallisti> elliott: I'm a compromising sort of person. :P
07:03:12 <kallisti> *have an option to turn them off
07:03:20 <elliott> well, how would you do incremental weapons then :)
07:03:24 <elliott> giving everyone tons of shit at the start for no reason sucks
07:03:27 <elliott> i guess it could be like
07:03:30 <elliott> "achievements" give you rewards
07:03:35 <kallisti> that's an option
07:03:37 <elliott> as long as... they're not called achievements
07:03:38 <elliott> and
07:03:40 <kallisti> lol
07:03:41 <elliott> it doesn't pop something up in the corner
07:03:42 <elliott> because
07:03:44 <elliott> that hurts me inside
07:03:48 <kallisti> heh
07:03:53 <kallisti> also they can't be stupid shit
07:03:56 <kallisti> because that's lame
07:03:57 <elliott> yeah no
07:04:00 <elliott> spun around for 5 hours
07:04:06 <elliott> wait no i'm adding that anyone who spins around for 5 hours is dedicated
07:04:09 <elliott> but no others.
07:04:25 <kallisti> well the way upgrades in gravity well worked is that you could colonize planets, you start with one.
07:04:39 <elliott> how long does it take to colonise a planet :P
07:04:43 <kallisti> basically suppply ships go back and forth from your planets
07:04:49 <kallisti> a... significantly amount of time? I don't remember
07:04:53 <elliott> hmm i should probably actually watch a starcraft match, i have literally never done so, and i guess it's pretty relevant in terms of like
07:04:57 <kallisti> and the supply ships turn into new buildings on the planet which do things
07:04:58 <elliott> balance, match length, randomn distribution
07:05:02 <kallisti> all of the buildings can be destroyed
07:05:07 <elliott> but don't they like last for an hour
07:05:09 <kallisti> also eventually you get like better defense systems
07:05:22 <kallisti> elliott: starcraft is so beautiful ;_;
07:05:45 <kallisti> so anyway eventually planets get a research building
07:05:52 <kallisti> that slowly fills up a little meter thing
07:05:58 <kallisti> and then when you land on a planet with a filled meter
07:06:08 <kallisti> you get some kind of upgrade (I don't remember if it was random, probably)
07:06:30 <kallisti> but anyway the strategy was in the supply pods, enemies could kill them so you have to fly around and protect them.
07:06:37 <elliott> (but seriously how long do starcraft matches last)
07:06:43 <elliott> and that sounds cool but i dunno how practical it'd be for like
07:06:54 <kallisti> elliott: anywhere from 10 minutes to like up to an hour and a half or more.
07:06:55 <elliott> something where you play someone you have a good chance of never playing again for not all that long
07:07:16 <kallisti> elliott: they can end very very swiftly or draw out forever
07:07:21 <elliott> heh
07:07:21 <kallisti> usually there's a breaking point
07:07:48 <kallisti> elliott: well it doesn't work with the orbiting shipfighting stuff because colonies are like big battle stations that are really hard to kill.
07:07:55 <elliott> right
07:07:57 <kallisti> once they're fully developed
07:08:11 <kallisti> oh also you can capture the supply ship things
07:08:16 <kallisti> I don't remember how
07:08:20 <kallisti> you like shoot a certain part of them
07:08:22 <kallisti> without killing it
07:08:30 <elliott> i wish i knew more about the game i'm making. like: how big are maps even
07:08:30 <kallisti> I think
07:08:51 <kallisti> elliott: first question is probably what style of gameplay
07:08:59 <elliott> but that's the hard one :)
07:09:01 <shachaf> elliott: You're making a game?
07:09:18 <kallisti> do you want something like a very tactical fighter or a more strategy colonization game.
07:09:18 <shachaf> Is it going to be in Haskell?
07:09:20 <elliott> kallisti: i'm definitely more interested in like strategic tricks than just flying and firing constantly
07:09:25 <elliott> shachaf: Yes, it is.
07:09:29 <kallisti> elliott: right
07:09:34 <shachaf> Is it going to be a real-time strategy game?
07:09:39 <shachaf> You should make one of those.
07:09:44 <kallisti> elliott: it would be interesting to not have colonies or anything but instead rely on strategy in a purely realtime fightery kind of sense.
07:09:55 <elliott> shachaf: It might very well permit the words "real-time strategy game" to be used to describe it!
07:10:10 <shachaf> elliott: Is it going to encourage things that are not micro-management?
07:10:10 <kallisti> elliott: hmmm well....
07:10:29 <elliott> Note that I'm using the words very literally :P
07:10:30 <kallisti> elliott: if you don't mind potentially long gametimes you could make colonization slow
07:10:37 <elliott> shachaf: I hate micro-management, so yes. (The chances of there being more than one unit to control are ~0.)
07:10:42 <kallisti> elliott: this permits most planets to be uncolonized and suitable for epic dogfights
07:10:52 <elliott> kallisti: one problem is that you can't actually have planets :P
07:10:56 <kallisti> elliott: the problem is: you now have colonies, why are you dogfighting go kill colonies.
07:11:00 <elliott> kallisti: i mean you can have circles. but you can't go into their atmospheres or whatever
07:11:00 <kallisti> elliott: hmmm?
07:11:04 <elliott> you can just orbit around them
07:11:05 <elliott> because
07:11:06 <elliott> they're just circles
07:11:09 <kallisti> elliott: right
07:11:14 <kallisti> that's what I was imagining as well.
07:11:16 <elliott> right
07:11:20 <kallisti> GOOD
07:11:21 <kallisti> OKAY
07:11:24 <elliott> i guess an important question is how big the circles are compared to you :)
07:11:33 <kallisti> elliott: oh interesting
07:11:46 <kallisti> in gravity well they were very very small in comparison to actual real life.
07:11:48 <elliott> like do they fit on your screen, or are they like realistic-sized in which case that'd be a huge pain
07:11:55 <elliott> or are they just like ten times the size of your ship
07:11:58 <kallisti> elliott: former is easier
07:12:02 <elliott> yeah
07:12:04 <kallisti> latter is more challenging and interesting
07:12:14 <elliott> kallisti: on the other hand, with like the complicated orbital transfer stuff
07:12:20 <elliott> you don't want big things because it just multiplies tedium
07:12:27 <kallisti> but generally with a game with like... what, -1 developers? you probably want to make compromises on complexity.
07:12:33 <elliott> you want a bunch of small planets in an interesting arrangement
07:12:34 <elliott> kallisti: oh snap :P
07:12:40 <elliott> do i count as 0 developers and ph -1
07:12:51 <kallisti> I'm probably like -3 and that makes -1
07:13:00 <elliott> oh are you developing this, cool
07:13:04 <elliott> i'll hold you to that
07:13:08 <kallisti> elliott: good
07:13:14 <kallisti> because I totally will
07:13:17 <kallisti> MY WORD IS MY HONROR
07:13:37 <elliott> kallisti "klingon" kallisti
07:13:40 <kallisti> elliott: I think small planets would be better.
07:13:44 <zzo38> Once I have played a game, at anime convention, it is complete information without chance, except for the card you are dealt at the beginning of the game. Each player is dealt a random card from the deck at the beginning of the game, which is kept secret, and it tells the winning condition for that player.
07:13:46 <elliott> yeah
07:13:49 <kallisti> unless large planets become better...
07:13:50 <kallisti> :P
07:13:56 <kallisti> as the ideas crystalize
07:14:06 <elliott> it's definitely going to require a prototype to be able to figure out how it should be played at all
07:14:16 <elliott> i mean the dogfighting concept is fairly new altogether
07:14:17 <zzo38> The planets with larger should have more mass and therefore more gravity
07:14:23 <kallisti> elliott: relatively new
07:14:26 <elliott> i mean
07:14:27 <elliott> for this game
07:14:30 <elliott> it started out with just a gravity sim and some flying ideas and then we were like how can we make this into a game
07:14:40 <kallisti> elliott: what kind of mechanics were you thinking about re: orbital transfers
07:14:49 <elliott> the IDEAL would be a massive newtonian mmorpg with like full simulated galaxies
07:14:55 <kallisti> also I seriously can't talk about this all night I HAVE SHIT TO DO.
07:14:55 <elliott> and a massive economy
07:14:57 <elliott> but
07:14:58 <elliott> uh
07:14:59 <elliott> fuck coding that
07:15:08 <kallisti> elliott: ..yes
07:15:16 <kallisti> possibly fuck playing that as well
07:15:27 <elliott> well if you gotta be addicted to an mmo
07:15:35 <elliott> it might as well be a 2d newtonian one with an awesome art style.
07:15:43 <kallisti> elliott: but this game isn't an mmo in its current incarnation right?
07:15:52 <elliott> no :P
07:16:51 <kallisti> elliott: for lack of tedium I highly recommend some kind of powerful boost. also: forward and reverse thrusters (both with boosts that are not infinitely available always)
07:17:05 <elliott> kallisti: well i was thinking about that like
07:17:16 <elliott> a lot of the time with newtonian flights you're really just working against it going GOD DAMMIT LET ME TURN
07:17:18 <kallisti> otherwise you'll spend a lot of time just moving around and slowing yourself down and fucking up and turning back around etc
07:17:24 <elliott> so the interesting thing to do is to make it not ABOUT turning
07:17:26 <elliott> like
07:17:40 <elliott> limit the various energies you have so that turning like that isn't even really an option
07:17:47 -!- copumpkin has quit (Ping timeout: 245 seconds).
07:17:49 <elliott> because then you have to design things around taking ADVANTAGE of the newtonian flight
07:17:52 <elliott> which is a lot more interesting
07:17:59 <kallisti> elliott: is it more error-prone
07:18:05 <elliott> is what
07:18:12 -!- copumpkin has joined.
07:18:14 <kallisti> what you just described, not being able to turn easily
07:18:20 <elliott> error-prone howso
07:18:21 <kallisti> relying on newton
07:18:24 <kallisti> like
07:18:28 <kallisti> would it be easy to fuck up
07:18:31 <kallisti> and then take forever backtracking
07:18:33 <kallisti> to get to where you want to go
07:18:41 <elliott> well the idea is that most of the time you AREN'T just flying full-speed somewhere
07:18:52 <elliott> like that "stable orbit with escapes" idea i had as a tactic
07:18:58 <kallisti> because that's the case in gravity well, and that even lets you turn (very slowly... a fast turn would probably have mitigated that actually)
07:19:20 <kallisti> elliott: hmmm okay
07:19:22 <elliott> or maybe you're drifting but like at the last moment accelerate quickly which makes you meet up with an orbit
07:19:23 <elliott> or w/e
07:19:51 <kallisti> elliott: you may have to automate some of the orbiting rather than relying purely on newtonian physics
07:19:57 <elliott> kallisti: ph's idea on this: Nov 19 22:57:40 <Phantom_Hoover>I suppose you could have limited but regenerating remass?
07:20:00 <kallisti> unless orbiting is relatively easy
07:20:05 <elliott> and no, that'd defeat the whole point, the whole point was proving to oklopol that it'd work
07:20:13 <elliott> also, we found a javascript/canvas thing that did 2d newtonian mechanics after that
07:20:18 <elliott> and ph managed stable orbits with it just fine
07:20:21 <kallisti> help what is remass
07:20:22 <elliott> i didn't but i'm shit at life
07:20:28 <elliott> kallisti: ph is here to help: Nov 19 22:58:35 <Phantom_Hoover>Remass is the amount you can change your momentum by?
07:20:44 <kallisti> ah okay
07:20:53 <kallisti> so like....
07:21:00 <kallisti> you don't have infinite thrust all the time basically?
07:21:31 <elliott> that's one thing that could be done, yeah
07:21:38 <elliott> the basic idea is that like
07:21:40 <kallisti> that's interesting.
07:21:42 <elliott> letting you accelerate really quickly to a point
07:21:47 <elliott> and then trying to hard turn in a vacuum
07:21:55 <elliott> is a really stupid way to flight with newtonian physics because uhhh
07:22:01 <elliott> it's awful and tedious and horrible
07:22:04 <kallisti> so instead of the powerful boost being a special kind of thrust, it would be your only sort of thrust.
07:22:08 <elliott> so if you make it, like, not even possible, or at least really difficult
07:22:11 <zzo38> I had a few ideas for games: * Make a game using the periodic table of elements as the board. * Make a game using cards representing chemical elements. * Make a game using a real-time updated horoscope as the board. * Make a chess variant where some of the additional pieces on the board are hourglasses for varying lengths of time.
07:22:15 <elliott> then you have to find other ways to fly
07:22:40 <elliott> kallisti: btw i've been envisioning the non-bullets going quite slowly. in case you weren't.
07:22:43 <elliott> like uh
07:22:46 <elliott> Asteroids speeds I guess ;P
07:22:47 <elliott> :P
07:22:48 <kallisti> I was not.
07:22:50 <elliott> except maybe a little slower
07:23:03 <elliott> kallisti: well it's more interesting because it allows for actual movement to dodge bullets and the like
07:23:10 <kallisti> ah right
07:23:19 <elliott> kallisti: and makes things like trapping your opponent in a slowdown bubble and firing bullets at them from all around it less game-breaking :P
07:23:23 <kallisti> yes a slow-fast pace sounds good. :P
07:23:24 <elliott> (that slows down the bullets too ofc)
07:23:30 <zzo38> Do you know how to make any game like my idea?
07:23:34 <zzo38> s/idea/idea(s)/
07:23:38 <kallisti> meaning you have time to react to things, but it's still fast enough to require quick reflexes
07:23:45 <elliott> zzo38: nope, sorry
07:24:03 <elliott> kallisti: also: ricocheting!!!
07:24:11 <elliott> kallisti: no reason why bullets couldn't bounce off like, i dunno, space walls
07:24:32 <kallisti> I'm sort of envisioning a movement system where you can actually rotate very quickly but your thrusts are limited to short semi-powerful bursts.
07:24:47 <elliott> yeah, that sounds interesting
07:24:47 <kallisti> in other words a way to precisely aim the angle of the momentum change
07:24:48 <elliott> although you'd want like
07:24:50 <elliott> a lower level thrust
07:24:52 <elliott> which can't go fast AT ALL
07:24:55 <elliott> but can be used all the time
07:24:58 <elliott> so like, it'd be useless for turning
07:25:03 <elliott> but it could gently ease into an orbit
07:25:12 <kallisti> the problem with that is that if you hit thrust long enough you will be going insanely fast and have no way to slow down
07:25:18 <kallisti> presumably you just wouldn't do that.
07:25:27 <elliott> that's called suicide :P
07:25:41 <elliott> kallisti: i was thinking of a partially mouse-based interface.
07:25:51 <elliott> like rotating the ship would just be moving the mouse
07:25:55 <zzo38> But would you have any additional ideas to expand these? I have thought of some things too. Periodic table is not symmetrical but there are ways to make a game work anyways.
07:26:00 <elliott> move mouse in circle = circular turning
07:26:01 <kallisti> elliott: same
07:26:07 <elliott> quickly jolt it in the opposite direction = the obvious
07:26:15 <kallisti> elliott: that would be the easiest way to get a pinpoint aim on your angle of acceleration
07:26:46 <kallisti> elliott: I do like the slow thrusts only being useful to achieve orbit or to otherwise make minor corrections
07:26:51 <elliott> yeah
07:27:05 <elliott> that would be a good thing to bind to space :P
07:27:18 <kallisti> elliott: hmmm
07:27:23 <kallisti> elliott: you may even want three kinds of thrusts
07:27:36 <kallisti> one would be for long-distance flight
07:27:52 <kallisti> or escape I guess
07:27:52 <zzo38> With horoscope, the planets will not move much, but for a game of a few hours the movement of houses will be significant. You could also play by mail, or on an airplane, or whatever, to change a lot of things about the game; more changes than when you play chess by hand or by mail. But there would have to be time limit so that you cannot just wait until the planets are in your favor.
07:28:10 <elliott> kallisti: that brings up the question of how big the map is :)
07:28:12 <kallisti> elliott: but then it would become trivial to evade slow-moving projectiles
07:28:20 <kallisti> just mega-boost in a sideways direction
07:28:29 <kallisti> and hopefully you don
07:28:33 <kallisti> 't crash into anything
07:28:47 <elliott> i'm not sold on the mega-boost yet. it seems like it reduces the interestingness of the physics
07:28:54 <kallisti> elliott: yeah just a thought
07:28:58 <elliott> yeah
07:29:07 <kallisti> elliott: two sounds sufficiently probably.
07:29:08 <zzo38> For chess with hourglasses, you could have different hourglass with different durations having different movement abilities, or you could have hourglass be extra pieces that the different kind augment your power of normal pieces according to their position and time.
07:31:22 <elliott> chess with hourglasses
07:31:23 <elliott> is a good name
07:31:35 <elliott> kallisti: another question is... how big the ships are :P
07:31:57 <elliott> i was thinking they'd basically not be all that much more than simple small triangular-ish shapes, but that kinda reduces the interestingness of the ragdoll-physicsy aspect?
07:32:20 <kallisti> elliott: if the map is larger (larger map could benefit from more interesting varieties of planets, also would be good if any strategy is incorporated) then the mega-boost could instead be balanced by a long charge time.
07:32:24 <elliott> like if a ship blows up it just blows up into debris
07:32:28 <elliott> and if those hit things it'll be pretty painful
07:32:53 <kallisti> elliott: that's good
07:33:14 <elliott> kallisti: good, but not as good with smaller ships
07:33:14 <kallisti> elliott: depends on the velocity of the particles as well
07:33:26 <kallisti> not necessarily
07:33:39 <elliott> well how small are you thinking
07:33:42 <kallisti> little tiny fast traveling space debris = death bullet
07:33:58 <kallisti> elliott: help I have no scale
07:34:03 <kallisti> is "medium sized" an option?
07:34:06 <elliott> http://upload.wikimedia.org/wikipedia/en/1/13/Asteroi1.png i was thinking... like that triangle ship, but maybe 2x bigger??? in physical terms
07:34:10 <Vorpal> back
07:34:11 <elliott> so
07:34:13 <elliott> pretty small
07:34:16 <elliott> but i dunno about that
07:34:21 <elliott> i'd like different ship models???
07:34:28 <kallisti> elliott: that sounds good
07:34:30 <kallisti> but
07:34:33 <kallisti> I think it would be wise
07:34:37 <kallisti> to hold that off
07:34:40 <elliott> the problem with different ship models is blah blah blah balance :P
07:34:41 <kallisti> for later
07:34:49 <elliott> probably :P
07:34:51 <kallisti> start with one kind of ship
07:34:56 <elliott> but it's something to consider when deciding
07:34:56 <elliott> like
07:34:57 <elliott> how big ships are
07:35:00 <kallisti> indeed.
07:35:03 <elliott> because if they're small enough there's no room for variation.
07:35:30 <Vorpal> <elliott> i'd like different ship models??? <-- like triangle and square?
07:35:34 <kallisti> also different models could have different sizes and thus different masses but I don't even know what kind of advantages large ships would have
07:35:40 <Vorpal> really, square is a viable shape in space
07:35:47 <elliott> Vorpal: yeah but it's also an UGLY shape.
07:35:53 <Vorpal> there is no reason to be aerodynamic.
07:35:56 <Vorpal> hm
07:36:14 <kallisti> elliott: I'd say bigger than the on-screen triangle there but not in scale to other space objects.
07:36:23 <Vorpal> elliott: so what shape then? I can manage some basic pixel art, but you seem to want to go for vector graphics rather
07:36:37 <elliott> Vorpal: note: vector /wireframey/ stuff
07:36:39 <elliott> not like
07:36:40 <elliott> svg :P
07:36:47 <elliott> something you could actually do on a vector display theoretically
07:36:47 <Vorpal> elliott: you are on 2D
07:36:52 <elliott> hollow
07:36:56 <Vorpal> hm
07:36:57 <Vorpal> right
07:37:05 <elliott> well mostly hollow
07:37:08 <elliott> not everything has to be hollow :P
07:37:28 <zzo38> Make the Einstein spacecraft game.
07:37:32 <Vorpal> elliott: well you could do filled shapes by simply filling the hole. Due to the fact that the line has a width you will be able to fill a shape
07:37:41 <Vorpal> not sure if you could do that fast enough though
07:37:49 <elliott> Vorpal: it's about the aesthetic, not the implementation :P
07:38:00 <kallisti> elliott: debris is a good idea, but obviously physics should be taken into account. not everything is going to make deadly space debris that radiates in many directions because that would make killing another ship in a close range encounter unwise
07:38:04 <elliott> the idea is basically to pump every polygon into the physics engine.
07:38:16 <Vorpal> elliott: surely you are going to use the sound card to run this on an analogue oscope in xy mode?
07:38:18 <elliott> and have special cases for "interesting" objects.
07:38:23 <Vorpal> elliott: if not I'm not interested!
07:38:29 <elliott> Vorpal: sry
07:38:33 <Vorpal> :(
07:38:37 <elliott> Vorpal: graphics card to run it on a pixel display in opengl mode :P
07:38:43 <elliott> kallisti: well yeah
07:38:47 <Vorpal> elliott: you seen the video of someone doing that for a demo right?
07:38:52 <Vorpal> otherwise let me find the link
07:38:56 <elliott> Vorpal: yes
07:38:58 <elliott> you linked it
07:38:59 <Vorpal> right
07:39:04 <Vorpal> hm
07:39:12 <zzo38> Would you know how to make the Einstein spacecraft game?
07:39:12 <Vorpal> elliott: still it was amazing :P
07:39:18 <elliott> zzo38: nope
07:39:24 <elliott> kallisti: gah now i want to get a simple prototype up and running.
07:39:38 <kallisti> elliott: that would, uh, be a good way to get the project rolling.
07:39:47 <zzo38> I don't know either. But it is an idea.
07:40:02 <elliott> kallisti: well the good thing is, it makes me want to work on the thing i also need for my other game project.
07:40:09 <kallisti> elliott: good
07:40:18 <kallisti> elliott: there are lots of good things to a prototype
07:40:18 <elliott> kallisti: which is known as
07:40:25 <elliott> kallisti: project i don't want to write any fucking glsl shaders
07:40:28 <Vorpal> kallisti: in case you haven't seen it: https://www.youtube.com/watch?v=s1eNjUgaB-g
07:40:46 <kallisti> okay so
07:40:48 <kallisti> 20 minutes from now
07:40:51 <kallisti> I AM DISAPPEARING
07:40:55 <kallisti> AND WRITING THE REST OF THIS PAPER
07:41:01 <Vorpal> right
07:41:02 <elliott> kallisti: i think you can agree that that is the best name
07:41:14 <zzo38> Depending on the games, you might not require shaders, you might not require 3D, you might not require much at all. It depend much on what game you are making.
07:41:15 <kallisti> elliott: er what is?
07:41:17 <Vorpal> kallisti: watch that video first, it is like 3 minutes or something. Not exactly long.
07:41:22 <elliott> <elliott> kallisti: which is known as
07:41:22 <elliott> <elliott> kallisti: project i don't want to write any fucking glsl shaders
07:41:26 <kallisti> oh
07:41:27 <kallisti> yes
07:41:32 <kallisti> very good
07:41:34 <kallisti> very enterprise
07:41:36 <Vorpal> zzo38: everything is done by shaders these days
07:41:55 <Vorpal> zzo38: as in, you need at least a basic shader to get anything drawn
07:41:59 <Sgeo> Vorpal, HOW
07:42:03 <zzo38> Vorpal: You don't have to write a shader if you use a text mode.
07:42:04 <elliott> Sgeo: what
07:42:07 <Vorpal> unless you are using opengl 2.x
07:42:13 <Vorpal> zzo38: then it isn't opengl?
07:42:22 <Sgeo> Are oscilloscopes actually arbitrary display thingies that just .. what
07:42:25 <zzo38> Vorpal: Yes, then it isn't opengl.
07:42:28 <elliott> Sgeo: they're vector displays
07:42:32 <Vorpal> Sgeo: oh that, well they have an xy mode
07:42:36 <Vorpal> and they are vector displays yes
07:42:43 <kallisti> elliott: anyway the best way to discuss balance is to actually have concepts coded in the game to test.
07:42:56 <elliott> Sgeo: kallisti: (what the project actually is is a library which compiles functional list folds and maps and shit to glsl shader code.)
07:42:58 <elliott> erm
07:43:01 <elliott> that sgeo: was a mistake
07:43:03 <Vorpal> Sgeo: normally the x signal is taken from time, but you can just put it in xy mode and use one input for each axis
07:43:05 <kallisti> elliott: because this asserts that the mechanic is practical to implement
07:43:12 <kallisti> elliott: because it's already implemented
07:43:12 <elliott> kallisti: (because)
07:43:17 <kallisti> and then it allows you to actually test it.
07:43:18 <elliott> kallisti: (i don't want to write any fucking glsl shaders)
07:43:21 <Vorpal> Sgeo: well, that is a simplification of the normal operation mode, but basically yes
07:43:31 <Vorpal> you have stuff like triggers and what not too
07:43:43 <Vorpal> Sgeo: wouldn't work on a modern digital scope of course.
07:43:47 <Sgeo> Vorpal, ah, ok.
07:43:48 <Vorpal> they use bitmap displays
07:43:53 <kallisti> elliott: this is why games tend to have large numbers of cool things implemented in them that are subsequently removed in the production release.
07:44:05 <kallisti> or left as like easter eggs or cheats or whatever
07:44:12 <elliott> kallisti: yes.
07:44:37 <kallisti> elliott: and networking will be essentially because, well, we need to players to actually test it.
07:45:08 <elliott> kallisti: yeah, but i'd rather just get a simple ship flying in space with some random masses :P
07:45:10 <elliott> first
07:45:14 <kallisti> elliott: well yeah
07:45:21 <kallisti> it would be weird to write the protocol before you have anything else.
07:45:41 <elliott> kallisti: btw the problem with project i don't want to write any fucking glsl shaders is that instead i have to write a countably infinite number of glsl shaders
07:45:44 <elliott> by writing a compiler to them.
07:45:51 <Vorpal> <elliott> kallisti: (i don't want to write any fucking glsl shaders) <-- it is quite easy actualy
07:45:52 <elliott> "you dropped the ball elliott" - a person
07:45:53 <Vorpal> actually*
07:46:07 <elliott> Vorpal: yep, but i don't like writing c, and i don't like writing restricted c even more
07:46:10 <Vorpal> elliott: you won't be doing lighting calculations right?
07:46:20 <elliott> Vorpal: well there's neon glow, but... no.
07:46:25 <elliott> Vorpal: HOWEVER, I will be for EC
07:46:28 <Vorpal> elliott: then it is basically trivial
07:46:36 <elliott> so i might as well save the pain of writing glsl once
07:46:39 <elliott> and reap the real benefits later
07:47:02 <kallisti> elliott: it would be interesting to have a gun that simply emits force into space, though I suppose it would have to obey newton's third law
07:47:03 <Vorpal> elliott: actually the major issue is getting the normals the right way around
07:47:08 <Vorpal> in the input data
07:47:20 <Vorpal> elliott: I'm taking a course in 3D graphics currently
07:47:27 <kallisti> elliott: so basically you could change the momentum and direction of things like asteroids.
07:47:29 <fizzie> Youscope is available as a .wav file somewhere in the interwebs; X and Y inputs as the left/right channels, just hook a 'scope to your sound card.
07:47:36 <elliott> fizzie: I wanna hear that.
07:47:45 <elliott> kallisti: that would be fun
07:47:46 <Vorpal> fizzie: it is linked in the video description
07:47:48 <Vorpal> elliott: ^
07:48:03 <elliott> Vorpal: yeah i can hear things you say right after me
07:48:03 <kallisti> elliott: no clue what purpose that would have :P
07:48:03 <Vorpal> fizzie: anyway "Most soundcards (and other players) seem to have a lowpass filter at about half of the samplerate, making some effects here look quite strange. The soundcard used in this video just didn't have proper filters so it happens to be suitable for these effects."
07:48:16 <elliott> kallisti: throwing an asteroid at your opponent :P
07:48:25 <Vorpal> elliott: strange, you must have a new beta version of irc then?
07:48:40 <elliott> Vorpal: holy shit this sounds good
07:48:42 <kallisti> elliott: what if you could like...
07:48:50 <fizzie> Vorpal: Right; I was thinking it might be linked, but thanks to noscript couldn't click the "see more" thing.
07:48:53 <kallisti> elliott: collide asteroids into planets and fuck up their orbits
07:48:58 <kallisti> elliott: that's scary I don't even want to think about that.
07:49:05 <elliott> kallisti: sounds fun!
07:49:10 <Vorpal> fizzie: ah
07:49:17 <kallisti> elliott: space sandbox: the game
07:49:28 <elliott> kallisti: http://universesandbox.com/ :P
07:49:42 <Vorpal> elliott: you might like it. I don't. Oh well.
07:49:44 <elliott> kallisti: http://mirror.kapsi.fi/koodaa.mine.nu/tvt/youscope-wave.wav seriously listen to this?????
07:49:46 <elliott> SO GOOD
07:49:58 <Vorpal> quite horrible
07:50:12 <elliott> the amount of structure it has is amazing
07:50:28 <kallisti> elliott: why am I hearing silence
07:50:37 <elliott> kallisti: turn up speakers??
07:50:40 <kallisti> max
07:50:44 <monqy> it sounds like sound to me
07:50:45 <elliott> or wait for it to change maybe your soundcard/speakers suck and are filtering that part
07:50:51 <Vorpal> kallisti: check with another sound file to see if you can hear it?
07:50:56 <kallisti> elliott: not unlikely
07:51:02 <Vorpal> kallisti: it works fine with my SB Live 5.1 card
07:51:04 <kallisti> elliott: laptop speakers and sound card
07:51:08 <Vorpal> hah
07:51:08 <kallisti> uh, hold on
07:51:12 <elliott> kallisti: me too
07:51:16 <monqy> headphones for optimal experience
07:51:18 <monqy> this is great
07:51:37 <Vorpal> note for headphone users: turn the volume way down to avoid damaging your hearing
07:51:39 <fizzie> elliott: Maybe with the right amount of imagination (and/or chemistry) you can listen to youscope-wave.wav on your headphones, close your eyes, and see the corresponding effects.
07:51:51 <kallisti> lspci | grep -i audio
07:51:53 <kallisti> 00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)
07:52:03 <monqy> whoa hd audio nice
07:52:04 <kallisti> but it's HIGH DEFINITION
07:52:16 <elliott> fizzie: Sounds fun.
07:52:21 <Vorpal> kallisti: does other sound play currently? Sometimes I had alsa bug out on me randomly
07:52:21 <kallisti> elliott: maybe I'm deaf?
07:52:24 <elliott> <Vorpal> note for headphone users: turn the volume way down to avoid damaging your hearing
07:52:29 <elliott> --vorpal, 54 years old
07:52:34 <elliott> kallisti: Try another sound? :P
07:52:38 <Vorpal> $ lspci | grep -i audio
07:52:38 <kallisti> Vorpal: oh right. let me check
07:52:39 <Vorpal> 00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
07:52:39 <Vorpal> 01:00.1 Audio device: ATI Technologies Inc Barts HDMI Audio [Radeon HD 6800 Series]
07:52:39 <Vorpal> 08:00.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 07)
07:52:55 <kallisti> ah yes
07:52:56 <kallisti> no audio
07:53:00 <Vorpal> kallisti: like, "Disabling IRQ [IRQ for sound card]" randomly in dmesg.
07:53:05 <Vorpal> No clue what caused those still
07:53:54 <elliott> Why do video cards have audio cards nowadays.
07:54:15 <kallisti> hmmm alsa reload didn't work
07:54:25 <Vorpal> elliott: you can send audio over HDMI
07:54:27 <Vorpal> that is why
07:54:31 <elliott> whyyyyyyyyyyyyy
07:54:35 <elliott> kallisti: its not alsa
07:54:35 <fizzie> Because MULTIMEDIA.
07:54:38 <elliott> kallisti: try downloading it and mplayer
07:54:49 <kallisti> elliott: there we go. alsa force-reload worked
07:54:50 <Vorpal> elliott: because it is more like Digital SCART than DVI
07:54:54 <Vorpal> (really)
07:55:03 <elliott> kallisti: huh
07:55:07 <fizzie> The win7 laptop automagically switched default audio-out to HDMI when I plugged in the (no speakers or anything of that sort) monitor.
07:55:11 <fizzie> That was the cleverest.
07:55:16 <elliott> Vorpal: https://www.youtube.com/watch?v=ZlZH1p0EUBs
07:55:16 * kallisti listens
07:55:17 <Vorpal> heh
07:55:28 <kallisti> elliott: I think alsa reload didn't want to reload because other things were using it.
07:55:33 <fizzie> 01:04.0 System peripheral: Compaq Computer Corporation Integrated Lights Out Controller (rev 03)
07:55:33 <fizzie> 01:04.2 System peripheral: Compaq Computer Corporation Integrated Lights Out Processor (rev 03)
07:55:34 <elliott> Vorpal: synth straight to oscilloscope :D
07:55:36 <fizzie> Wonder what *that* does.
07:55:39 <Vorpal> heh
07:55:47 <Vorpal> elliott: nice
07:55:49 <fizzie> "Integrated Lights Out Controller"... sounds like it's for punching other components.
07:56:08 <Vorpal> fizzie: you got the uplink edition
07:56:22 <Vorpal> desktop: http://sprunge.us/ZRPi laptop: http://sprunge.us/IGJg
07:56:30 <kallisti> elliott: hmmm sounds mostly like a lot of frequency modulation synthesis
07:56:33 <fizzie> (This was from a server I happened to have ssh'd to accidentally.)
07:56:34 <kallisti> what is it?
07:56:39 <elliott> kallisti: uh its that demo Vorpal linked
07:56:41 <elliott> in .wav form
07:56:43 <elliott> to be fed to an oscilloscope
07:56:49 <elliott> to produce graphics
07:56:53 <kallisti> right i mean how was it generated
07:56:59 <Vorpal> kallisti: you /did/ watch the video right?
07:57:04 <kallisti> some of it.
07:57:09 <Vorpal> .
07:57:34 <elliott> Vorpal: anyway I GUESS the shader might be trivial for aii but i dunno, maybe i want to do the background with a shader????
07:57:47 <kallisti> oh okay.
07:57:48 <kallisti> nevermind
07:58:05 <Vorpal> elliott: yep. You want to basically draw a quad filling the screen and map the texture to it. You do that in the shader. Quite easy too
07:58:09 <elliott> monqy: isn't it nice
07:58:10 <kallisti> huh
07:58:13 <kallisti> so it's like....
07:58:15 <Vorpal> especially with no lighting calculations
07:58:16 <kallisti> 3d waveform stuff
07:58:18 <monqy> hi
07:58:22 <kallisti> that's interesting as a sound synthesis technique
07:58:29 <elliott> Vorpal: no i mean generate it with the shader because there's a lot of parallaxen...
07:58:30 <elliott> and
07:58:32 <elliott> procedural
07:58:32 <elliott> stuff
07:58:49 <Vorpal> elliott: well, I don't know anything about that.
07:59:03 <kallisti> lol wtf that's insane.
07:59:10 <kallisti> how do you even do that with a time-domain signal
07:59:19 <Vorpal> kallisti: do what with a time-domain signal?
07:59:29 <kallisti> make animations basically
07:59:32 <Vorpal> oh right
07:59:34 <Vorpal> don't ask me
07:59:36 <Vorpal> I didn't make it
07:59:50 <kallisti> oh I see
07:59:52 <Vorpal> it still amazes me that sound card even work.
07:59:54 <fizzie> You just draw one frame and then draw another?
07:59:56 <Vorpal> cards*
08:00:00 <kallisti> X is left channel Y is right.
08:00:01 <kallisti> so yeah
08:00:24 <Vorpal> why isn't there a line connecting everything on screen though
08:00:29 <kallisti> Vorpal: right
08:00:51 <kallisti> presumably that's not how x/y-mode works on an oscilloscope
08:00:56 <elliott> Vorpal: there is, you can see it when it goes to a point
08:00:57 <Vorpal> hm
08:00:58 <elliott> it's just faint?
08:01:00 <elliott> i think
08:01:04 <Vorpal> hm okay
08:01:16 <elliott> Europeans started to place magnetic mountains on their maps in the sixteenth century. A notable example is Gerardus Mercator, whose famous maps included a magnetic mountain or two near the North Pole. At first, he just placed a mountain in an arbitrary location; but later he attempted to measure its location based on declinations from different locations in Europe. When subsequent measurements resulted
08:01:16 <elliott> in two contradictory estimates for the mountain, he simply placed two mountains on the map.[2][7]
08:01:21 <fizzie> You can also sort-of do the "same thing in reverse", use a sound card as an oscilloscope, if you don't mind having a horribly limited and cheap-ass 'scope; but there's software that has lots of buttons and all: http://www.zeitnitz.de/Christian/scope_en
08:01:40 <fizzie> And yes, if you move fast enough you can't see the line; you "draw" by moving slowly enough.
08:01:44 <Vorpal> elliott: what?
08:02:05 <kallisti> fizzie: that's some insanely complex shit going on between the left and right channel though.
08:02:17 * kallisti mind blown
08:02:27 <elliott> Vorpal: what
08:02:37 <Vorpal> elliott: magnetic mountains? What?
08:02:46 <elliott> see wikipedia article ``history of geomagnetism''
08:02:48 <fizzie> It got quite a lot of applause when it was shown.
08:02:57 <elliott> Vorpal: anyway i forget what the other thing that isn't shaders is, that isn't deprecated
08:03:02 <elliott> something buffer objects???
08:03:08 <fizzie> Everything Buffer Objects.
08:03:13 <elliott> there's like two things that aren't deprecated in opengl these days, i know that much
08:03:14 <Vorpal> elliott: you use those together with shaders
08:03:26 <elliott> Vorpal: that's all, right?
08:03:29 <Vorpal> elliott: like texture buffer objects or whatever their name was for textures
08:03:34 <elliott> or is there
08:03:35 <elliott> more
08:03:44 * kallisti is mesmerized
08:03:47 <elliott> vertex arrays?? or??
08:03:51 <Vorpal> elliott: well you need a bit of C code to synchronize it all
08:03:55 <elliott> no shit
08:04:04 <Vorpal> elliott: and yes there are those. Which is like buffer objects for loading vertex data in
08:04:13 <Vorpal> so you don't have to send everything to the GPU every frame
08:04:15 <fizzie> Frame and Vertex and Pixel and Texture and Whatever Buffer Objects.
08:04:21 <elliott> Vorpal: what i really want is just a "list of newest things"
08:04:27 <elliott> with anything replaced by a newer thing omitted.
08:04:30 <kallisti> okay
08:04:32 <kallisti> time to
08:04:33 <kallisti> do things
08:04:36 <elliott> enjoy
08:04:37 <elliott> doing things
08:04:42 <kallisti> no
08:04:44 <kallisti> I won't
08:04:58 <Vorpal> elliott: uh, I believe there is a #version nnn or such you put in the shader code that means it will warn you if you use stuff that isn't supported in said version
08:05:02 <elliott> kallisti: ok
08:05:07 <Vorpal> like #version 330 for opengl 3.3
08:05:15 <elliott> Vorpal: no i mean there's things that aren't deprecated but you're not meant to use, i think even gl_begin/gl_end stuff isn't deprecated
08:05:24 <fizzie> Is "unjoy"-as-in-verb the opposite of "enjoy"?
08:05:24 <elliott> it's just that like
08:05:31 <Vorpal> elliott: gl_begin/gl_end are deprecated
08:05:37 <elliott> Vorpal: citation plz
08:05:40 <elliott> i've read that they aren't
08:05:44 <Vorpal> elliott: it is just that they are supported in a compatibility profile
08:05:44 <elliott> everyone expected them to be but they weren't
08:05:51 <Vorpal> afaik
08:05:53 <elliott> http://hackage.haskell.org/package/OpenGL ;; this is not helpful for figuring out which apis i have to use
08:05:56 <elliott> because it includes everything
08:06:14 <Vorpal> elliott: I'll look it up.
08:08:11 <Vorpal> hm the book I have here is for opengl 3.1
08:08:17 <Vorpal> so not exactly helpful on that point
08:08:47 <kallisti> elliott: (doing things) I suppose you intend to have realistic gravity?
08:09:02 <elliott> kallisti: that's
08:09:08 <elliott> sort of the point of the whole newtonian thing
08:09:08 <Vorpal> elliott: are you on intel graphics?
08:09:14 <kallisti> okay. :p
08:09:14 <Vorpal> if so I think you are stuck on opengl 2.x
08:09:15 <elliott> kallisti: we're literally implementing newtonian physics
08:09:21 <elliott> Vorpal: yes
08:09:29 <Vorpal> elliott: then you can't use the new stuff
08:09:34 <Vorpal> you are stuck on the old version
08:09:34 <Vorpal> afaik
08:09:38 <elliott> Vorpal: uh i am sure i can use shaders...
08:10:07 <kallisti> elliott: yes however your physics won't be realistic unless the spaceship to planet/star mass ratio is realistic even though the sizes are not.
08:10:17 <kallisti> so, I guess you're just going to do that?
08:10:17 <Vorpal> elliott: try this: glxinfo | grep OpenGL | grep version
08:10:22 <Vorpal> you should get two lines
08:10:33 <elliott> kallisti: you can just make the planets more massive without increasing their size.
08:10:39 <elliott> they can't collapse into black holes./
08:10:42 <kallisti> elliott: right, so yes
08:10:45 <Vorpal> laptop (intel graphics):
08:10:47 <Vorpal> $ glxinfo | grep OpenGL | grep version
08:10:47 <Vorpal> OpenGL version string: 2.1 Mesa 7.7.1
08:10:47 <Vorpal> OpenGL shading language version string: 1.20
08:10:49 <elliott> bash: glxinfo: command not found
08:10:49 <Vorpal> desktop:
08:10:55 <Vorpal> $ glxinfo | grep OpenGL | grep version
08:10:56 <Vorpal> OpenGL version string: 4.1.11005 Compatibility Profile Context
08:10:56 <Vorpal> OpenGL shading language version string: 4.10
08:10:58 <Vorpal> elliott: so install it?
08:11:14 <Vorpal> /usr/bin/glxinfo is owned by mesa-demos 8.0.1-1
08:11:20 <Vorpal> mesa-demos? Really?
08:11:49 <elliott> OpenGL version string: 2.1 Mesa 7.11.1
08:11:49 <elliott> OpenGL shading language version string: 1.20
08:12:08 <Vorpal> elliott: then you are stuck on the old version of opengl with glBegin/glEnd and so on
08:12:12 -!- derdon has joined.
08:12:14 <kallisti> elliott: one problem I'm forseeing is that gravity assisted manuevers will be difficult when you have to reason about multiple gravitational forces pulling on your spacecraft
08:12:14 <elliott> Vorpal: <elliott> OpenGL shading language version string: 1.20
08:12:19 <Vorpal> elliott: you might be able to use a few basic shaders, but I wouldn't bet on it
08:12:23 <kallisti> elliott: also orbits even?
08:12:25 <elliott> <elliott> OpenGL shading language version string: 1.20
08:12:27 <Vorpal> elliott: yep but you don't have most of the modern features
08:12:34 <kallisti> I dunno I'm not really a space physics expert
08:12:41 <elliott> Vorpal: i'm pretty sure 1.2 will be quite enough for my limited needs.
08:12:42 <Vorpal> elliott: you can do some /very/ basic shaders
08:12:57 <Vorpal> elliott: still I'm pretty sure you only have the stateful API available
08:12:59 <elliott> Vorpal: see, for instance, the fact that GPipe is completely GLSL 1.2
08:13:15 <Vorpal> well I wouldn't use gpipe then
08:13:17 <Vorpal> too limited
08:13:19 <elliott> lol
08:13:33 <elliott> you realise that
08:13:36 <elliott> most games work on intel cards
08:13:37 <elliott> right
08:13:40 <elliott> however slowly
08:14:01 <Vorpal> elliott: not the high end ones on linux. See PH trying to get stuff working
08:14:05 <elliott> ...no
08:14:06 <elliott> that's
08:14:07 <elliott> because
08:14:11 <elliott> he has massive driver problems
08:14:14 <elliott> and most things crash his card
08:14:22 <elliott> a problem which i have never experienced
08:14:27 <elliott> and is entirely due to his system being fucked
08:14:29 <Vorpal> Trine requires stuff not found on intel graphics for example
08:14:38 <elliott> haskell's opengl binding: also opengl 2.1! all the people building actual shit on top of that MUST BE COMPLAINING!! oh wait they're not people use it just fine
08:15:24 <Vorpal> elliott: point is, opengl 2.x is a completely different API from opengl 3.x and later
08:15:52 <elliott> ph
08:15:56 <elliott> Prior to the release of OpenGL 3.0, the new revision was known as the codename Longs Peak. At the time of its original announcement, Longs Peak was presented as the first major API revision in OpenGL's lifetime. It consisted of an overhaul to the way that OpenGL works, calling for fundamental changes to the API.
08:15:56 <elliott> The draft introduced a change to object management. The GL 2.1 object model was built upon the state-based design of OpenGL. That is, in order to modify an object or to use it, one needs to bind the object to the state system, then make modifications to the state or perform function calls that use the bound object.
08:15:56 <elliott> Because of OpenGL's use of a state system, objects must be mutable. That is, the basic structure of an object can change at any time, even if the rendering pipeline is asynchronously using that object. A texture object can be redefined from 2D to 3D. This requires any OpenGL implementations to add a degree of complexity to internal object management.
08:16:00 <elliott> Under the Longs Peak API, object creation would become atomic, using templates to define the properties of an object which would be created with a single function call. The object could then be used immediately across multiple threads. Objects would also be immutable; however, they could have their contents changed and updated. For example, a texture could change its image, but its size and format coul
08:16:03 <Vorpal> I know
08:16:05 <elliott> d not be changed.
08:16:07 <elliott> [...]
08:16:09 <elliott> [...]
08:16:09 <Vorpal> but there are still major changes
08:16:11 <elliott> [...]
08:16:13 <elliott> The final specification proved far less revolutionary than the Longs Peak proposal. Instead of removing all immediate mode and fixed functionality (non-shader mode), the spec included them as deprecated features. The proposed object model was not included, and no plans have been announced to include it in any future revisions. As a result, the API remained largely the same with a few existing extension
08:16:16 <Vorpal> just not as major as they wanted
08:16:18 <elliott> s being promoted to core functionality.
08:16:20 <elliott> OpenGL 3.0 added support for frame buffer objects, hardware instancing, vertex array objects (VAOs), and sRGB framebuffers (gamma 2.2).[26] OpenGL 3.0 introduced a deprecation mechanism to simplify the API in future revisions.
08:16:37 <kallisti> elliott: also will the n-body problem be a... problem?
08:16:44 <Vorpal> elliott: "With the release of the OpenGL 3.1 specification, a compatibility extension was also released that enables developers to access the OpenGL 1.X/2.X functionality removed in OpenGL 3.1.[28] Notably, legacy functionality for wide line support is retained."
08:16:50 <Vorpal> "Removed legacy functionality includes:[29]
08:16:50 <Vorpal> All fixed-function options"
08:16:57 <Vorpal> Direct mode
08:16:57 <Vorpal> Color index mode, i.e. pixel formats with color palettes
08:17:17 <elliott> Vorpal: i'm not intending to use the fixed-function pipeline, so woo?
08:17:21 <elliott> kallisti: yeah the whole game will crash if you have more than 2 bodies
08:17:31 <kallisti> :P
08:17:33 <elliott> kallisti: (hint: it doesn't have to be exact)
08:17:38 <Vorpal> elliott: but afaik fixed function + some limited shader is all you have in opengl 2.x
08:17:45 <elliott> http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods
08:17:58 <elliott> Vorpal: yes have i ever said i was planning to use not-shaders
08:18:14 <Vorpal> elliott: Vertex Array Objects is new in opengl 3.0
08:18:28 <kallisti> elliott: blowing up moons should definitely be possible and awesome
08:18:31 <elliott> *shrug* fine, so i have to use something else
08:18:35 <kallisti> and then they become... rings?
08:18:51 <fizzie> And when you collect 50 rings you get to the bonus stage wait that was something else.
08:19:17 <elliott> Vorpal: anyway, i'm planning to buy a new computer soon sOOooooOOoooOoooOooOoooooo
08:19:18 <Vorpal> elliott: anyway I can't help you with opengl 2.x much. I only ever worked with fixed function in old opengl. And with 3.3 or later for modern opengl
08:20:09 <kallisti> elliott: the dwarf fortress approach to map generation would be to formulate the universe from the big bang, with some randomized initial conditions, and then allow matter to stabilize into celestial bodies.
08:20:35 <elliott> kallisti: that's what all sandbox games want to be really
08:20:49 <elliott> Vorpal: anyway i could just use the fixed function shit
08:21:02 <elliott> hell, i could probably just software render this, i just don't want to
08:21:17 <Vorpal> <fizzie> And when you collect 50 rings you get to the bonus stage wait that was something else. <-- wait, was that sonic?
08:21:23 <fizzie> Vorpal: Yes.
08:21:29 <Vorpal> right
08:21:39 <elliott> Vorpal: *mario
08:22:19 <Vorpal> fizzie: there was that starfox game that had rings too iirc
08:22:37 <kallisti> elliott: I seriously doubt a common PC could simulate the formation of galaxies over billions of years faster than the universe actually did it. (strong CakeProphet hypothesis)
08:22:43 <fizzie> Vorpal: Also VBOs were added to core OpenGL 3.x, but there's the GL_ARB_vertex_buffer_object extension in 2.1 already, and Mesa has supported it since version 5.1 from the 2003s.
08:22:51 <Vorpal> ah
08:22:51 <elliott> kallisti: is that your final prophecy
08:22:53 <kallisti> elliott: or, that it would be fast enough for the patience of the common gamer (weak CakeProphet hypothesis)
08:23:09 <fizzie> Extensions are of course mildly annoying to use.
08:23:27 <elliott> fizzie: Gee, here I was thinking Vorpal's statement that people never did shaders properly before OpenGL 3.0 was bullshit :P
08:23:27 <kallisti> elliott: I am still a prophet: kallisti is merely my true name
08:23:31 <elliott> s/OpenGL 3.0/2008/
08:23:34 <elliott> That was what I meant to type.
08:23:46 <fizzie> I suppose it depends on the definition of "properly".
08:23:54 <elliott> http://hackage.haskell.org/packages/archive/OpenGLRaw/1.1.0.2/doc/html/Graphics-Rendering-OpenGL-Raw-ARB-VertexBufferObject.html
08:23:58 <fizzie> htkallas@pc112:~$ glxinfo
08:23:58 <fizzie> The program 'glxinfo' is currently not installed. To run 'glxinfo' please ask your administrator to install the package 'mesa-utils'
08:23:58 <fizzie> Oh no silly workstation installation.
08:24:08 <elliott> import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
08:24:08 <elliott> import Graphics.Rendering.OpenGL.Raw.Core32
08:24:33 <fizzie> GLintptr, a pointer so shiny it glints.
08:24:59 <elliott> kallisti: I'll have to ask PH about prediction algorithms for this stuff.
08:25:08 <elliott> I guess it shouldn't be TOO hard?
08:26:42 <kallisti> not impossibly difficult no.
08:26:51 <kallisti> not to create /some/ algorithm to generate a map.
08:27:03 <Vorpal> elliott: you know, you are going to /hate/ TES lore about the dwemer ("dwarves")
08:27:07 <elliott> kallisti: I wasn't talking about that.
08:27:11 <kallisti> elliott: oh
08:27:15 <elliott> kallisti: I was talking about prediction for network stuff, since that is pretty important.
08:27:18 <elliott> For maps I don't know what we're doing.
08:27:19 <fizzie> Runge-Kutta is the default differential-equation-solver method for the TI-86. (The other alternative is a straightforward Euler thing.)
08:27:19 <Vorpal> elliott: they are actually a kind of stocky underground elves in the lore.
08:27:21 <elliott> Procedural generation sounds right?
08:27:25 <elliott> Vorpal: gross
08:27:30 <kallisti> elliott: I don't even know how that works so uh... >_>
08:27:34 <Vorpal> elliott: :P
08:27:44 <fizzie> Vorpal: They're also MYSTERIOUS. What HAPPENED to them.
08:27:52 <Vorpal> very true
08:28:06 <Vorpal> fizzie: there are multiple theories in the in-game literature, as usual in TES games.
08:28:18 <fizzie> I don't suppose Skyrim elucidates much on the Dwemer? It doesn't sound like one of its CORE COMPETENCIES.
08:28:21 <elliott> kallisti: What if there's no thrusts and you just shoot in the opposite direction to thrust.
08:28:28 <fizzie> I've read some of the books in Morrowind/Oblivion, yes.
08:28:31 <Vorpal> they also weren't really short actually.
08:28:41 <Vorpal> <fizzie> I don't suppose Skyrim elucidates much on the Dwemer? It doesn't sound like one of its CORE COMPETENCIES. <-- some stuff it does.
08:28:45 <kallisti> elliott: just nondeterministically split the game state based on every possible player input (including no input) until the game resolves the problem by actually receiving the input. :P
08:28:45 <Vorpal> not much though
08:28:50 <kallisti> elliott: that sounds really dumb :P
08:28:54 <Vorpal> fizzie: more than oblivion, less than morrowind I would say
08:29:21 <fizzie> Maybe I should just buy the silly game. 32.40 EUR with 0% VAT from Åland.
08:29:24 <Vorpal> fizzie: there are way more dwemer ruins in Skyrim than in cyrodil (spelling?)
08:29:26 <fizzie> That's not *so* bad.
08:29:41 <elliott> fizzie: You could pirate it (but you might feel bad).
08:29:43 <fizzie> Two i's, I think.
08:29:56 <elliott> It's like QuickBasic but not?
08:29:59 <Vorpal> in row? Pretty sure it isn't Cyrodiil...
08:30:10 <fizzie> "Cyrodiil is an Imperial province in the south-central region of Tamriel and the home of a humanoid race known as Imperials."
08:30:14 <Vorpal> oh okay
08:30:26 <Vorpal> and the setting of oblivion
08:30:27 <fizzie> "There's no I in TEAM, but there's two in CYRODIIL", like the old saying goes.
08:30:32 <fizzie> (I don't know what it means.)
08:30:56 <fizzie> Lurchtime.
08:31:10 <kallisti> fizzie: it means cyrodiil is a geography organism with two eyes.
08:31:11 <Vorpal> there is also some indication that orcs might be a type of elves.
08:31:38 -!- zzo38 has quit (Remote host closed the connection).
08:31:41 <Vorpal> unless they messed up their conlangs that is
08:32:34 <elliott> So basically in Skyrim everyone is elf.
08:32:43 <elliott> Dwarf are elf, orc are elf.
08:32:46 <Vorpal> elliott: not humans. Or most monsters
08:32:52 <elliott> Not YET.
08:33:00 <elliott> Just wait for Skyrim II: Human Are Elf Boogaloo
08:33:02 <Vorpal> elliott: maybe in TES VI
08:33:11 <elliott> No, they're all Skyrim now. That's just how popular it is.
08:33:11 <kallisti> elliott: http://www.youtube.com/watch?v=Ncb7lHNWbnU
08:33:21 <elliott> The Elder Scrolls V: Skyrim XIXIIXIXIXIXIX: So Very Tired
08:33:25 <kallisti> elliott: 10 minute tournamet final in Starcraft II
08:33:27 <Vorpal> heh
08:33:44 <elliott> kallisti: why do i want to watch this
08:33:58 <kallisti> elliott: because you mentioned wanting to watch a starcraft video that isn't 2 hours
08:34:07 <Vorpal> elliott: also argonians and whatever the name of the cat people is are not elves.
08:34:11 <elliott> kallisti: i stopped watching at "300 dollars for the winner" (ok i won't stop)
08:34:19 <elliott> kallisti: i take it the korean prizes are like 1 mil
08:34:21 <elliott> dollars
08:34:26 <kallisti> elliott: I have no idea
08:34:27 <Vorpal> elliott: bretons might be human-elf hybrids according to some of the lore.
08:34:34 <elliott> Vorpal: read as "bitcoins"
08:34:36 <kallisti> elliott: I actually don't know how badass these people are.
08:34:37 <elliott> i swear to god
08:34:41 <Vorpal> heh
08:34:47 <Vorpal> elliott: but this lore has been around longer than skyrim
08:35:05 <Deewiant> elliott: That video's from the beta, there wasn't much going on back then
08:35:09 <elliott> kallisti: SWEET IT'S IN 720P
08:35:14 <elliott> Deewiant: I can always count on you to know things.
08:35:46 <elliott> kallisti: fuck it, if i'm watching this it'll be in 1080p
08:35:48 <kallisti> elliott: as far as I can tell protoss is going to win?
08:35:51 <kallisti> (spoiler)
08:36:05 <elliott> ok i guess i'll
08:36:06 <elliott> watch this
08:36:07 <elliott> seriously
08:36:08 <elliott> in 480p
08:36:10 <Deewiant> elliott: Last weekend's MLG (in the USA) had a $120k prize pool
08:36:10 <elliott> like a reasonable person
08:36:17 <Deewiant> Not sure how that's divvied up though
08:36:23 <kallisti> elliott: do you have any idea what's going on?
08:36:28 <elliott> kallisti: i just started
08:36:28 <elliott> so
08:36:37 <elliott> ok the blue things
08:36:41 <elliott> are
08:36:42 <elliott> blue
08:36:42 <kallisti> minerals
08:36:45 <elliott> oh
08:36:46 <kallisti> resources
08:36:48 <elliott> i thought they were flying things
08:36:55 <elliott> which ones are the zergs i know zergs
08:36:59 <Vorpal> <elliott> kallisti: SWEET IT'S IN 720P <-- only? there is 1080p sometimes too
08:37:08 <elliott> Vorpal: see a few lines later
08:37:08 <kallisti> zerg is the generic alien mutant things
08:37:11 <Vorpal> right
08:37:13 <kallisti> protoss are the yellow-blue shiny
08:37:22 <elliott> kallisti: out-macroed!!! worst concept i can think of
08:37:23 <Vorpal> elliott: what happened to 4096p?
08:37:29 <kallisti> elliott: hm?
08:37:35 <elliott> Vorpal: still going i think
08:37:41 <kallisti> elliott: do you know what macro means in this context?
08:37:42 <Vorpal> why 480p
08:37:42 <elliott> kallisti: nothing i say will make sense unless you sync to the point i'm at :P
08:37:45 <Vorpal> elliott: slow download?
08:37:47 <elliott> and i assume it's
08:37:48 <elliott> a macro?
08:37:51 <kallisti> no
08:37:52 <Deewiant> It's macromanagement
08:37:54 <kallisti> macromanagement
08:37:55 <elliott> oh
08:37:57 <elliott> jargon
08:37:58 <elliott> so weird
08:38:02 <elliott> Vorpal: yes and also i literally couldn't distinguish the higher ones because
08:38:04 <Deewiant> Cf. micro
08:38:05 <elliott> youtube compression is bad
08:38:14 <kallisti> elliott: basically what normal people do when they play starcraft. managing mineral usage and expansion and research
08:38:22 <kallisti> elliott: micromanagement is individual unit movement and tricks.
08:38:30 <elliott> proxy
08:38:33 <elliott> proxy proxy proxy
08:38:45 <elliott> are they doing this commentary over skype
08:38:47 <kallisti> elliott: a proxy is an offensive outpost next to the enemy base
08:38:50 <elliott> it sounds like it
08:38:56 <kallisti> to restrict them from expanding
08:38:59 <kallisti> and getting more resources
08:39:06 <kallisti> good protoss strategy
08:39:15 <Vorpal> oh god, not starcraft
08:39:18 <elliott> so do you play sc or just watch videos of it
08:39:23 <elliott> i feel this is probably a legitimate distinction since
08:39:27 <kallisti> elliott: I play it.
08:39:29 <Vorpal> I'm sure it is fun, but you seem to need to spend a lot of time to get into it.
08:39:32 <elliott> most sports fans don't really play sports much on average i would guess
08:39:36 <elliott> like
08:39:38 <elliott> yeah
08:39:52 <elliott> kallisti: i'm two minutes in, are they actually playing properly or just like preparing
08:40:06 <Vorpal> next someone is going to start talking about DOTA games.
08:40:12 <kallisti> elliott: I don't know what you mean
08:40:25 <elliott> kallisti: ok here's the real question i was asking
08:40:25 -!- monqy has quit (Quit: hello).
08:40:28 <elliott> why aren't tehy doing anything interseting
08:40:43 <kallisti> elliott: they will
08:41:08 <kallisti> this game is fucking weird
08:41:21 <elliott> i have to say the commentary style is very soothing
08:41:21 <elliott> like
08:41:27 <elliott> obviously it's basically obnoxious
08:41:30 <kallisti> ..yes
08:41:31 <elliott> but i would not watch this without it
08:41:54 <Vorpal> elliott: ever watched a DOTA style game?
08:41:59 <elliott> nope
08:42:01 <kallisti> elliott: wow
08:42:03 <kallisti> this game
08:42:03 <Vorpal> elliott: good for you
08:42:11 <Vorpal> elliott: there are few more boring things
08:42:25 -!- Jafet has joined.
08:42:27 <elliott> kallisti: oh hm
08:42:27 <Vorpal> sure, probably players of the game understand it. I don't really
08:42:32 <elliott> are we actually seeing the screen of someone playing
08:42:34 <kallisti> elliott: what time are you on?
08:42:36 <elliott> or just of a commenterer
08:42:37 <elliott> 3:51
08:42:39 <kallisti> elliott: no it's a spectator screen
08:42:44 <kallisti> spectator player person
08:42:45 <elliott> 4:00
08:42:48 <elliott> kallisti: right i was thinking that
08:42:52 <elliott> not much seemed to be actually being done
08:43:36 <kallisti> elliott: oh well the protoss dude has a proxy at the zergs base
08:43:36 <kallisti> and they're basically buiding up units to prepare for a battle
08:44:02 <elliott> shoulder-poking
08:44:06 <elliott> the most menacing
08:44:08 <kallisti> elliott: so the protoss player can basically warp in units from his main base to that proxy thing
08:44:12 <elliott> ok
08:44:40 <Deewiant> elliott: If you want to see the player's POV, http://www.youtube.com/user/remembertomorrow0 has a ton of videos
08:44:57 <kallisti> elliott: "banelings" are little suicide bombers
08:44:58 <elliott> Deewiant: I have a feeling it'd be signifiacntly less comprehensible
08:45:01 <kallisti> for zerg
08:45:11 <Deewiant> elliott: You're right, it would
08:45:19 <kallisti> elliott: it's kind of hard to see what's going actually.
08:45:40 <elliott> one thing i wanted to mention was
08:45:42 <elliott> this is not starcraft 1
08:45:44 <elliott> --commenter
08:45:45 <kallisti> lol
08:45:45 <kallisti> yes
08:45:49 <elliott> thanks
08:45:49 <elliott> for that
08:45:50 <kallisti> I lol'd
08:45:51 <elliott> commentary guy
08:45:56 <kallisti> elliott: okay so the nydus worm
08:46:00 <elliott> whoa
08:46:02 <elliott> suddenly explosions everywhere
08:46:02 <kallisti> lets the zerg funnel units across the map
08:46:11 <elliott> bloodg
08:46:13 <kallisti> elliott: so while that battle is going on
08:46:17 <elliott> aaaah alien battle
08:46:19 <kallisti> another is going on at the protoss base
08:46:25 <elliott> neat
08:46:26 <kallisti> that you can't see for most of the time.
08:46:30 <elliott> how do humans play this game
08:46:32 <elliott> do you buy ten monitors
08:46:39 <kallisti> elliott: no just one
08:46:49 <kallisti> you play it with a keyboard
08:46:57 <kallisti> elliott: this is amazing
08:47:02 <Deewiant> How do single CPUs run multiple threads?
08:47:16 <elliott> Deewiant: cpus aren't people
08:47:21 <elliott> i cant reliably save register state
08:47:30 <Deewiant> You're a bad person
08:47:33 <elliott> :(
08:47:34 <kallisti> elliott: he basically kills the other guys base /after his base is gone/ with /workers/
08:47:44 <kallisti> elliott: and then has a flying unit that finished off the other buildings
08:47:51 <elliott> lol
08:49:16 <elliott> now to watch one of Deewiant's i guess???
08:49:19 <elliott> oh gosh so many
08:50:03 <elliott> Deewiant what's the best video
08:50:06 <elliott> of the viedos
08:51:48 <elliott> Not showering is Ruining E-Sports (self.starcraft)
08:51:50 <elliott> starcraft
08:52:38 <pikhq_> Ah, enjoying the Korean national sport I see.
08:52:40 <Deewiant> elliott: I dunno, http://www.youtube.com/watch?v=01CTAzgTuKI is new and seems like it's not an entirely shitty game, try that
08:53:15 <kallisti> heh, another zerg protoss
08:53:34 <Deewiant> I avoided the PvPs and ZvZs because they'd probably be boring
08:53:38 <elliott> is he
08:53:39 <kallisti> I wonder if they made terran underpowered because in starcraft I terran was basically the best.
08:53:39 <elliott> alt-tabbing
08:53:59 <elliott> not enough minerals
08:53:59 <elliott> not enough minerals
08:54:00 <elliott> not enough minerals
08:54:00 <elliott> not enough minerals
08:54:00 <kallisti> elliott: looks like it
08:54:00 <elliott> not enough minerals
08:54:01 <elliott> not enough minerals
08:54:07 <elliott> kallisti: to do WHAT???
08:54:08 <elliott> or is that just
08:54:10 <elliott> the video recorder
08:54:12 <kallisti> kallisti: no clue
08:54:16 <elliott> elliott: hi
08:54:17 <kallisti> kallisti: a lot of people are stupid
08:54:20 <kallisti> and thikn that if they just spam stuff
08:54:21 <elliott> elliott: me too
08:54:22 <kallisti> they are magically better
08:54:23 <Deewiant> elliott: He's pressing hotkeys, you can see the icon pressed in the lower right corner
08:54:23 <kallisti> so-called "
08:54:28 <kallisti> actions per minute"
08:54:31 <elliott> Deewiant: but when the alt-tab dialogue pops up
08:54:32 <elliott> in the middle
08:54:35 <elliott> that's not a hotkey
08:54:44 <elliott> in the first minute or so
08:54:49 <kallisti> elliott: people like to spam keys to keep them "warmed up" or something
08:54:51 <Deewiant> Can't be bothered to find it
08:55:02 <elliott> i think this guy is just pressing the same key a lot.
08:55:06 <kallisti> elliott: yes
08:55:20 <kallisti> elliott: the key to starcraft skillz is to have ADD
08:55:22 <elliott> "Wtf "nobody likes Quebec"! HEY Deezer doesn't represent us at all! Please dissociate us from this fucktard.
08:55:23 <elliott> "
08:55:25 <elliott> help
08:55:29 <elliott> ive entered another world
08:55:39 <kallisti> elliott: so yeah /watching/ the beginning of a starcraft game is really boring.
08:55:42 <kallisti> if you haven't noticed
08:55:49 <elliott> should i just skip to the middle :P
08:55:59 <kallisti> eh, might miss something
08:56:04 <elliott> im already missing everything
08:56:07 <elliott> by way of having no idea what's going on
08:56:20 <elliott> so wait is there any actual space involve
08:56:20 <elliott> d
08:56:25 <elliott> there's grass that's so
08:56:26 <elliott> unspacelike
08:56:33 <kallisti> there's like floating space colony maps
08:56:42 <kallisti> but that's it.
08:57:03 <Deewiant> kallisti: The idea is that in complicated situations the player with a higher APM will have an advantage (assuming a fairly equal situation otherwise), and it's easier to keep your APM high by doing stuff quickly right from the start instead of speeding up only when necessary
08:57:16 <kallisti> Deewiant: I disagree with that perspective
08:57:18 <kallisti> I understand the idea.
08:57:35 <Deewiant> Where do you disagree
08:57:44 <kallisti> Deewiant: higher APM = advantage always
08:57:49 <kallisti> but I guess staying active makes sense.
08:57:51 <Deewiant> Not always
08:57:52 <elliott> i think this guy can almost certainly type faster than me
08:57:57 <elliott> or are they only good at pressing the same key repeatedly
08:58:04 <kallisti> elliott: he's not typing anything
08:58:09 <elliott> no but he's
08:58:10 <elliott> pressing keys
08:58:11 <elliott> lots
08:58:11 <kallisti> elliott: as far as words
08:58:15 <elliott> oh those whispers are
08:58:16 <kallisti> yes I dunno what's up with that.
08:58:18 <elliott> a voice saying not enough energy
08:58:23 <kallisti> yes
08:58:27 <elliott> like
08:58:30 <elliott> a creepy ghost baby
08:58:32 <elliott> saying not enough energy
08:59:14 <kallisti> man he really likes spamming spawn larva all the time.
08:59:20 <Deewiant> kallisti: In most cases, you only need like 30-40 APM to do everything necessary; but when you're fighting three battles at once and want to macro at the same time, the guy with the higher APM will mismicro less and macro better
08:59:20 <elliott> not enough energy
08:59:20 <elliott> not enough energy
08:59:21 <elliott> not enough energy
08:59:21 <kallisti> that's the "not enough energy"s
08:59:21 <elliott> not enough energy
09:00:39 <kallisti> elliott: those giant tentacle things are actually buildings
09:00:43 <kallisti> like defensive turrets.
09:00:53 <elliott> this is a strange game kallisti.
09:01:48 <elliott> kallisti: is this meant to be interesting 8 and a half minutes in
09:02:28 <kallisti> yes.
09:02:32 <kallisti> er
09:02:34 <kallisti> no I mean
09:02:36 <kallisti> that's when it gets interesting
09:02:39 <kallisti> actually
09:02:40 <kallisti> is around that time.
09:03:14 <kallisti> elliott: the focus early game is to efficienctly use minerals and have a quick build order while planning some kind of opening move.
09:04:00 <kallisti> this guy is pretty insanely fast.
09:04:07 <kallisti> when not spamming keys
09:04:53 <Deewiant> That guy isn't very good compared to the average pro level
09:05:18 <kallisti> this is because professional starcraft people aren't actually mortal men.
09:05:24 <elliott> Deewiant: isn't he some kind of strarrararcraft celebrity i seem to remember seeing
09:05:25 <elliott> that name
09:05:30 <Deewiant> elliott: Yes
09:05:35 <Deewiant> Reddit likes him
09:05:54 <kallisti> oshi
09:05:59 <kallisti> SHITS GOING DOWN DAWG
09:06:23 <Deewiant> And he is a pro, just not a very good one.
09:06:33 <elliott> :D
09:07:10 <kallisti> yeah he's got way too many resources
09:07:14 <kallisti> that could be turned into death things.
09:07:30 <Deewiant> He's maxed starting at around 12 mins
09:07:45 <kallisti> oh I see...
09:08:00 <kallisti> still he could spawn probably like 50 spore colonies
09:08:05 <kallisti> or whatever they're called now.
09:08:11 <kallisti> :P
09:08:31 <elliott> are there any videos of insanely good koreans being incomprehensible, i have this kind of mythologised mental image of starcraft
09:08:36 <elliott> i can vaguely see things moving about coherently
09:08:39 <elliott> so this doesn't really rteg
09:08:42 <elliott> kallisti: these maps are ujst fucking backgrounds
09:08:45 <elliott> those walking guys
09:08:49 <elliott> just walked over vacuum
09:09:00 <kallisti> elliott: they're probably air units...
09:09:05 <elliott> BUTT HEY RE WALKING
09:09:09 <kallisti> which
09:09:11 <elliott> Butt: Hey re: walking
09:09:16 <elliott> kallisti: it was at 9 minutes or something
09:09:19 <elliott> i paused it for a while
09:10:00 <kallisti> elliott: blue walking things?
09:10:08 <elliott> "I was more impressed by the volume and variety of farts. One of them even smelled exactly what I ate for lunch 10 minutes later which made it a little bit of a surreal experience."
09:10:10 <elliott> comment in the thread
09:10:10 <elliott> Not showering is Ruining E-Sports (self.starcraft)
09:10:31 <elliott> kallisti: i think green? complicated game.
09:10:33 <elliott> complicated world.
09:10:46 <kallisti> elliott: oh do they move really slow?
09:11:12 <kallisti> I think those are overlords and they fly very slowly.
09:11:14 <elliott> i don't know what slow is in this world...
09:11:15 <kallisti> they hover overhead
09:11:17 <elliott> they kinda just
09:11:19 <elliott> jogged over a little gap
09:11:27 <elliott> the green
09:11:28 <elliott> swarms
09:11:30 <elliott> of joggers
09:11:34 <kallisti> no they float
09:11:40 <elliott> kallisti: huge congregation at 11:57-11:59
09:11:43 <elliott> and then
09:11:44 <elliott> kaboom
09:12:03 <kallisti> oh wait
09:12:08 <kallisti> no those are flying things
09:12:09 <Deewiant> Those are mutalisks, they fly.
09:12:14 <elliott> FLY WITH WALKING ANIMATION
09:12:18 <elliott> LAZY ANIMATORS LAZY!!
09:12:20 <kallisti> fly with flapping wings animation
09:13:55 <kallisti> elliott: they're green because he has them selected
09:14:08 <elliott> their sprites looked green too but ok
09:14:35 <kallisti> oh yes he's green
09:14:37 <kallisti> that's his player color
09:14:41 <elliott> o
09:14:51 <kallisti> players are color coded all pretty like
09:15:06 <elliott> Deewiant: who's THE BEST at starcraft..........
09:15:30 <Deewiant> No such clearly-defined thing
09:15:30 <kallisti> Deewiant: this guy basically just hits and runs with mutalisks the whole game while protoss builds a massive death force.
09:16:06 <elliott> Deewiant: who's...... #1
09:16:31 <Deewiant> No such clearly-defined thing
09:16:47 <elliott> Deewiant: who's richest????
09:16:50 <elliott> who has
09:16:52 <elliott> the most starcraft ladies
09:16:53 <elliott> ?????????
09:16:55 <elliott> work with me here
09:17:16 <elliott> not enough resources ;)
09:17:16 <elliott> not enough resources ;)
09:17:16 <elliott> not enough resources ;)
09:18:01 <Deewiant> I'll plug the Swedes and say that Naniwa is among the best right now
09:18:01 <kallisti> Deewiant: I haven't see any other offensive units besides mutalisks
09:18:16 <kallisti> maybe some zerglings I think?
09:18:23 <elliott> so is sc2 much different from sc1
09:18:24 <kallisti> wow
09:18:25 <elliott> apart from being like
09:18:26 <elliott> prettier
09:18:34 <kallisti> elliott: strategy is pretty drastically different
09:18:42 <kallisti> but still some basic stuff remains
09:18:48 <elliott> oops they got to his core thing!!!!
09:18:49 <kallisti> same terminology is pretty much applicable.
09:18:50 <elliott> dead
09:19:27 <kallisti> elliott: they added some new gameplay mechanics
09:19:33 <kallisti> for example the gold minerals which give you more shit
09:19:42 <kallisti> and the towers which let you see through fog of war a long distance
09:19:48 <kallisti> good for getting a heads up on attacks
09:19:57 <kallisti> and they have units that can scale cliffs.
09:20:32 <kallisti> which was not previously possible unless they were air units
09:20:45 <elliott> jump units
09:21:27 <kallisti> for example, reapers are terran ground infatnry with jetpacks. they're very mobile, can jump up and down cliffs, and have special bombs they use when attacking buildings
09:21:31 <elliott> his password is quite short.
09:21:34 <kallisti> so they're good at raiding enemies bases.
09:21:40 <elliott> ooh i wonder if i could
09:21:41 <elliott> use the mini image
09:21:45 <elliott> to find out what keys he pressed
09:22:30 <kallisti> elliott: try
09:22:44 <elliott> no
09:22:48 <kallisti> :P
09:28:16 -!- pikhq has joined.
09:28:21 -!- pikhq_ has quit (Ping timeout: 258 seconds).
09:29:51 <elliott> Sgeo: something about joke and not being stupid
09:30:33 <Sgeo> elliott, in #haskell ? I just had a brain failure, is all
09:30:41 <elliott> Sgeo: no, i meant the whole
09:30:46 <elliott> <Sgeo> tutmirleiden, this chat is not, strictly speaking, a part of the tutorial
09:30:50 <elliott> <Sgeo> However, it does link to there, which may make it look like it is
09:32:09 <Sgeo> elliott, I didn't mean to imply that he's an idiot. But I do think that the way it's set up may give people the impression that the chat is specific to tryhaskell
09:32:12 <fizzie> Speaking of finding out keys pressed, this -> http://www.cs.utexas.edu/~shmat/courses/cs380s/zhuang.pdf <- was a thing; it's old as anything now, of course; but still, unsupervised and all that.
09:32:51 <elliott> fizzie: this video has both video AND audio
09:32:56 <elliott> PRACTICALLY DONE
09:33:01 <elliott> "Pentium IV 3.0G"
09:33:06 <elliott> w hat
09:35:14 <elliott> <tutmirleiden> thanks mr elliot
09:35:15 <elliott> thanks mr elliot
09:38:32 <fizzie> Dr Elliott.
09:38:38 <elliott> *Elliot
09:42:33 <Sgeo> Drelliot
09:42:44 <fizzie> Drilliot.
09:43:17 <elliott> eliot
09:48:27 <fizzie> El-Jot, the lesser-known cousin of Superman.
09:49:46 <elliott> the big money fight has drawn the shoporo
09:49:46 <elliott> od dosens of companies in the entertainment
09:49:46 <elliott> industry as well as attorneys gnnerals on
09:49:46 <elliott> states, who fear the fild shading softwate
09:49:46 <elliott> will encourage illegal acyivitt, srem the
09:49:47 <elliott> grosth of small arrists and lead to lost
09:49:49 <elliott> cobs and dimished sales tas revenue.
10:02:47 * shachaf looked up: how to make elliott mad
10:03:04 * elliott googled for:
10:09:28 <kallisti> hi
10:09:56 <kallisti> elliott: help nothing appears
10:10:00 <kallisti> when you google for:
10:26:08 -!- Sgeo has quit (Ping timeout: 240 seconds).
10:27:04 -!- Sgeo has joined.
10:42:06 -!- GreaseMonkey has quit (Quit: The Other Game).
11:01:42 -!- ais523 has joined.
11:09:51 <elliott> hi ais523
11:10:09 <ais523> hi elliott
11:10:55 <ais523> have you seen the argument between HP and Oracle?
11:11:10 <ais523> apparently, Oracle have accused HP of paying Intel to keep maintaining Itanium
11:11:13 <elliott> nope
11:11:47 <ais523> and they're probably upset about this because they have to keep their Itanium support contracts with HP up
11:12:02 <ais523> the typical reaction from everyone else is, "well, why /can't/ HP pay Intel for Itanium?"
11:14:37 -!- Lymee has joined.
11:15:08 -!- Madoka-Kaname has quit (Ping timeout: 244 seconds).
11:22:53 -!- Lymee has changed nick to Lymia.
11:32:12 <shachaf> elliott: Is Series 2 any good?
11:32:30 <elliott> shachaf: Yes, but not nearly as.
11:32:42 <elliott> The Music 2000 episode is good; also the computer one as I recall.
11:32:47 <shachaf> Hrm.
11:33:22 <elliott> Also it's really spotty on YouTube, I just bought the DVD.
11:33:25 <shachaf> It's not on that video website, as far as I could tell.
11:33:28 <shachaf> Right.
11:33:36 * shachaf might do that.
11:33:39 <elliott> Well, http://www.youtube.com/watch?v=WYwPD7ARJ0Y is... the first ten minutes.
11:33:58 <shachaf> I suppose supporting a noble endeavor such as this is worth something, after all.
11:35:07 <shachaf> elliott: NON-USA FROMAT. :-(
11:35:26 <elliott> shachaf: Oh please, don't they sell universal DVD players or whatnot?
11:35:32 <elliott> You could just rip it or something.
11:35:36 <shachaf> I suppose libdvdcss plays it just as well, but still.
11:35:54 <shachaf> elliott: As I mentioned, I don't even *own* a television. What good would a DVD player do me?
11:36:17 <elliott> Heh.
11:36:21 <shachaf> I much prefer to have my MPEG streams delivered to me over TCP/IP over insertkmchere.
11:36:21 <elliott> `quote DVD players
11:36:28 <HackEgo> 29) <ais523> after all, what are DVD players for?
11:36:51 <ais523> that's a surprisingly early quote
11:37:16 * shachaf wonders if there's any context worth knowing.
11:37:24 <ais523> elliott: most DVD players are reasonably easy to hack to play foreign DVDs
11:37:45 <ais523> typically it's included as an easter egg, because the ability to do that promotes sales of the DVD player, yet they aren't allowed to officially know about it
11:37:51 <elliott> heh
11:37:57 <elliott> i recall looking it up on some website once
11:37:58 <elliott> and it's like
11:38:01 <shachaf> elliott: Hmm, there's no US-valid Series 2 DVD for sale as far as I can tell.
11:38:02 <elliott> OPEN CLOSE EJECT MENU 3 4 4 EJECT CLOSE
11:38:11 <elliott> shachaf: It's because we're racist.
11:38:44 <ais523> elliott: yes, it's typically that sort of thing
11:39:06 <shachaf> @where ais523
11:39:07 <lambdabot> I know nothing about ais523.
11:39:29 <ais523> lambdabot: but I'm here
11:43:31 <shachaf> elliott: Hey, I haven't seen _Ghosts_.
11:43:36 <shachaf> I thought I had but I hadn't.
11:43:41 <elliott> Lucky you!
11:43:48 <shachaf> That's like a free new episode was created just for me.
11:43:49 <elliott> I think that's the most bizarre episode of the first series.
11:44:42 <shachaf> Pig's milk. Pilk.
11:45:33 <Deewiant> Spider milk, silk?
11:46:07 <elliott> Yes.
11:51:26 <ais523> today's XKCD is really impressive
11:51:30 <ais523> it's not funny, but it's not meant to be
11:51:48 <ais523> it's one of those ones where he just got a stupidly large number of statistics and made a drawing out of them
11:51:50 <elliott> yesterday's!
11:51:54 <ais523> well, OK
11:51:56 <ais523> it's today's too
11:52:02 <elliott> heh
11:55:03 <ais523> I assume people don't actually read xkcd unless they're linked to it
11:55:13 <ais523> also, that "today's xkcd" is a good enough link for most people to follow
12:12:05 -!- Slereah has joined.
12:12:48 -!- Slereah_ has quit (Ping timeout: 245 seconds).
12:18:29 -!- aloril has quit (Ping timeout: 240 seconds).
12:32:09 -!- aloril has joined.
12:37:50 -!- MSleep has changed nick to MDude.
12:41:23 -!- Phantom_Hoover has joined.
12:45:24 -!- pkzip has joined.
12:46:12 -!- pkzip has left.
12:59:51 <Phantom_Hoover> 06:33:04: <kallisti> realtime games and networking kind of don't work
13:00:10 <Phantom_Hoover> Thing is, describing AII as a dogfighting game makes it sound too fast-paced.
13:00:21 <elliott> ++
13:00:31 <elliott> I go into that more a bit later.
13:00:38 <Phantom_Hoover> I can't really see it working except as a slower-paced thing where you need to plan your course.
13:10:58 <ais523> is this an existing game, or one you're planning to write?
13:11:42 <elliott> ais523: Latter.
13:12:00 <ais523> also, are those lowercase ls or capital Is?
13:12:08 <elliott> Capital.
13:12:09 <ais523> AlAIAlAIA
13:12:12 <ais523> Is, by the look of it
13:12:20 <elliott> It's short for Asteroids II, which is really going to have to be replaced by a proper name.
13:12:25 <elliott> Maybe we'll just call it... aii.
13:12:33 <ais523> the two letters are marginally different in this font, enough to tell them apart with a comparison, but not to be sure about them without one
13:13:12 <ais523> looks like a difference of one vertical pixel exactly in length
13:24:11 <Phantom_Hoover> OK *seriously* what is it with the Runge-Kutta methods.
13:24:47 <Phantom_Hoover> Everything I can find says they're for ODEs, and yet I've only seen them given for first derivatives.
13:25:08 <elliott> Phantom_Hoover: /queryyyyyyyyyyyy
13:25:25 <Phantom_Hoover> Are the Runge-Kutta methods secret.
13:25:36 <elliott> Yes but actually no.
13:25:37 <Phantom_Hoover> Also I'm seeing if anyone in the channel knows what's up with that.
13:25:44 <elliott> I know.
13:25:47 <elliott> It wasn't about Runge-Kutta :P
13:28:29 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:35:34 <kallisti> time to release DMT from my pineal gland (assuming that's actually what happens when you dream)
13:35:51 <kallisti> as my body enters a state of partial paralysis
13:36:36 -!- Phantom__Hoover has joined.
13:37:15 <elliott> enjoy kallisti.............
13:37:27 <Phantom__Hoover> I don't want to enjoy kallisti!
13:38:32 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:51:13 <elliott> ais523: oh no, I think I just decided that Crawl-style viewpoint movement is the best
13:51:58 <ais523> why? it's really disorienting
13:52:07 <ais523> although it depends on the game, I guess
13:52:18 <ais523> for a horror shooter sort of game, that sort of disorienting viewpoint works great
13:52:30 <elliott> ais523: yep, but the situation here is a display 20 times as large as the terminals Crawl is usually played in :P
13:52:42 <elliott> (well, I suppose most Crawl players use tiles since it's so popular on Windows...)
13:54:18 <elliott> ais523: and I think the disorientation at that scale can be eliminated simply by making the "camera" lag behind the player a little bit
13:54:41 <elliott> i.e., while moving you're off-center in whatever direction you're travelling in, and when you slow down the camera smoothly scrolls into the center
13:55:40 <ais523> hmm, perhaps
13:57:09 <elliott> ais523: (the context is AII :P)
14:03:59 -!- myndz\ has quit (Ping timeout: 244 seconds).
14:23:39 <Phantom__Hoover> ais523 help
14:32:44 <ais523> Phantom__Hoover: why do you keep making random demands of me without context?
14:39:32 <Phantom__Hoover> No it turned out that makes sense, although now I'm wrestling with the cover for the PCIe card.
14:40:17 <elliott> Phantom__Hoover: While the motherboard collects...
14:40:18 <elliott> STATIC?
14:40:57 <ais523> hint: things collect static from moving or having things move across them, not from staying still
14:41:17 <elliott> ais523: You don't understand, in Scotland static is magic.
14:41:31 <elliott> It's caused by humidity, flourescent lights, and nearby microwaves.
14:41:56 <ais523> hmm, I'm now more or less convinced that the latest batch of spambots work by taking a legitimate page on the subject and running it through a translation service twice
14:42:36 <ais523> I've got reasonably good at reading machine-translated English (it's a /very/ valuable language to know in today's world), and they seem to be writing in that
14:43:21 <ais523> hmm, I'm mostly over the depression, too, even though Feather didn't really help
14:45:42 <ais523> meanwhile, I'm busy trying to track down a bug in this ICA compiler
14:46:00 <ais523> it's showing up as an off-by-one, but I'm not convinced that it actually /is/ that; I suspect it's actually an off-by-n where n=1 by chance
14:46:03 <ais523> but who knows
14:52:12 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:58:59 <Phantom__Hoover> OK I have discovered a horror even worse than the PSU cables: the motherboard/case connectors.
15:00:35 -!- derrik has joined.
15:00:48 <fizzie> Sometimes there's even no indication which way around the leds go.
15:14:23 <Gregor> ais523: Example plox?
15:14:30 <Gregor> (Of spambots)
15:14:46 <ais523> Gregor: a moment
15:15:45 -!- augur has quit (Remote host closed the connection).
15:15:54 <ais523> A lot of us in the website that were having success ended up applying some type of fasting into their diet. A primary though ended up being that going barefoot didn't seem healthy. I actually appeared to be within impression that we had to be feeding on every 3 periods or maybe my own body would definitely come in for you to disease mode.
15:16:18 <ais523> Gregor: ^
15:16:44 <ais523> it doesn't feel like a markov bot; the sentences have an internal logic, but the word choice is completely bizarre
15:17:13 -!- copumpkin has joined.
15:17:13 <Gregor> lol
15:17:51 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | Wwe had to be feeding on every 3 periods or maybe my own body would definitely come in for you to disease mode. | half-add er? I ardly knew er! | http://codu.org/logs/_esoteric/.
15:18:13 <derrik> I got zero day all day but its specific to my paycheck so i ain't selling that. Job is shitty enough.
15:18:22 <ais523> Gregor: "Wwe"?
15:18:29 <derrik> (quoting my fav discussion bot)
15:18:48 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | We had to be feeding on every 3 periods or maybe my own body would definitely come in for you to disease mode. | half-add er? I ardly knew er! | http://codu.org/logs/_esoteric/.
15:18:52 <Gregor> ais523: You didn't see that.
15:19:02 <Gregor> fungot: Chat with us.
15:19:03 <fungot> Gregor: biscuit, and the remembrance of that sacrifice the short term for the long term, because they won't be your friends even without it, you can't... such a fine day. an entire barrel can easily be a dealbreaker!
15:19:15 <elliott> fungot: T-Rex!
15:19:16 <fungot> elliott: t-rex, i don't know, a cute little skirt, and thus, it no longer represents you. for whatever he or she or it or at better jobs as they come up all the time, and when they do, there's no moment of laughing realization, so you can't ever do a video epitaph for us all will read?
15:19:33 <ais523> elliott: coincidence? or is fungot doing some sort of word-copying?
15:19:33 <fungot> ais523: is that a fad? chinese so that my computer could think about sex, and that would be all it would take to change a lightbulb. the light turned on and on about order versus freedom, the giddy joy, t-rex
15:19:42 <ais523> probably engineered coincidence
15:20:28 <fizzie> ais523: If it's in any way affected by the input, it's not intentional.
15:20:47 <ais523> fizzie: indeed; I suspect it was elliott setting up for a likely coincidence
15:20:56 <ais523> how does fungot do its randomization, btw? some sort of ?-based RNG?
15:20:56 <fungot> ais523: i, too, will take what i can get a little of that back with them, dromiceiomimus
15:21:45 <fizzie> ais523: There's a loop which does "4*, then ?-based 0/1/2/3+" a couple of times, I think maybe 28 bits' worth or something.
15:21:58 <fizzie> Maybe not quite that many.
15:22:00 <ais523> that's surprisingly sensible
15:23:10 <fizzie> There's one hardcoded [0..15] RNG done with a sequence of a ?-powered 0/4/8/c+ and a 0/1/2/3+, too. It's used for determining when to stop or some-such.
15:23:34 <Gregor> Wow, I have some iron-rich blood.
15:23:38 <Gregor> My blood tastes exactly like rust.
15:24:08 <ais523> Gregor: blood is kind-of heavy in iron because a transition metal's needed to bind to the oxygen
15:24:40 <Gregor> Yes, I know that :P
15:25:01 <elliott> ais523, blood scientist
15:25:14 <fizzie> Better that than just a blood dabbler.
15:25:19 <Gregor> X-D
15:25:30 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | We had to be feeding on every 3 periods or maybe my own body would definitely come in for you to disease mode (don't dabble in blood). | half-add er? I ardly knew er! | http://codu.org/logs/_esoteric/.
15:25:39 -!- elliott has set topic: http://codu.org/logs/_esoteric/.
15:25:47 <Gregor> :'(
15:25:58 <elliott> Occasionally one must curtail the jocularity of the hoi polloi.
15:26:02 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | http://codu.org/logs/_esoteric/.
15:26:16 <ais523> we need that IOCCC notice until it isn't, I think; it's potentially important
15:26:28 <ais523> the topic notice wrt the Wolfram prize thing earned be a moderate amount of money
15:26:35 <fizzie> We need it there until we no longer need it, I think.
15:26:38 <ais523> (well, about a year's salary, that's quite a bit but not lifechanging)
15:26:42 <elliott> ais523: yeah, and do we really want to repeat THAT mistake? ;D
15:27:00 <Gregor> I didn't realize he'd learned that in an #esoteric /topic X-D
15:28:10 <elliott> Gregor: he talked to me about it for about five minutes in the third person
15:28:20 <elliott> then i was like "oh, is the winner in here?" "yes" "is the winner... you?" "yes"
15:29:18 <Gregor> elliott: If that's the case, then "the topic notice wrt the Wolfram prize thing [did /not/] [earn him] a moderate amount of money"
15:29:43 <elliott> Gregor: What :P
15:30:42 <Gregor> elliott: He said that the topic notice earned him money, that implies that he learned about the competition from the topic notice.
15:31:12 <elliott> Yes, he did.
15:31:15 <ais523> I did
15:31:17 <elliott> This was after he won.
15:31:28 <ais523> then after I won, I strung people along a bit
15:31:36 <Gregor> elliott: Oh, I thought you were making a wholly different point X-D
15:32:05 -!- derrik has left.
15:36:01 <elliott> Gregor: You should MAKE MUSIC FOR AII!!!!!!11111111111111111111111
15:36:07 <elliott> 111111II1111111II
15:37:09 <Gregor> AII?
15:37:25 <ais523> hmm, perhaps you should fix my creative dead end with the DNA Maze level music
15:37:34 <Gregor> DNA Maze?
15:37:38 <ais523> which I think is great, but I've got stuck at the end of the chorus
15:37:43 <ais523> Gregor: how have you never heard of DNA Maze?
15:37:57 <Gregor> How?
15:38:02 -!- ais523 has changed nick to ais523\unfoog.
15:38:07 <ais523\unfoog> Gregor: indeed, how
15:38:13 <ais523\unfoog> you're a regular of this channel, right?
15:38:24 <elliott> Gregor: AII = Asteroids II! EXPANSION IS COMPLETELY UNOFFICIAL.
15:38:29 <elliott> Because it would get us: SUED.
15:38:39 <Gregor> ais523\unfoog: Yes, but I'm also a regular of the USA, whose timezones are somewhat distinct from yours.
15:38:46 <Gregor> (Yes, the USA is a person)
15:39:07 <fizzie> And the Asteroids II Extended Edition, aka AIIEE, one presumes.
15:39:35 <ais523\unfoog> Gregor: well, it's a computer game that I've written
15:39:43 <ais523\unfoog> with the main single player mode around 90% finished
15:39:46 <elliott> Gregor: To give a not entirely unhelpful answer, it's a Newtonian-physics space-based real-timeish physics strategy game with... sort of dogfight elements and ... a lot of orbital transfers ...
15:40:09 <ais523\unfoog> elliott: where "it" = AII, not DNA Maze
15:40:17 <ais523\unfoog> you confused me for a bit there
15:40:37 <Gregor> elliott: Newtonian physics are for losers, relativity would make asteroids so much "better"
15:41:06 <Gregor> Are? Is?
15:41:15 <elliott> Gregor: Basically it's a buncha spaceships vs. a bunch a' other spaceships in 2D space under Newtonian physics with a bunch of masses orbiting each other and shit and the strategy is based around complicated planning, orbital transfers, and physics-warping shit like "make-time-go-slower-inside-this-bubble bubble" :P
15:41:21 <elliott> Also the NEUTRINO GUN.
15:41:40 <elliott> OK it is seriously a much better idea than it sounds I've just been avoiding the term "dogfight" because Phantom__Hoover quite rightly pointed out it makes things sound way too fast and brute-forcey :P
15:42:07 <Gregor> ais523\unfoog: Current state of musicx?
15:42:37 <elliott> Gregor: Also it theoretically will have a TOTALLY NEAT vector graphics aesthetic?? Also ragdoll physicsy things?? Gravity?? Black holes?? Network multiplayer??
15:42:42 <ais523\unfoog> Gregor: I'm mostly composing it myself; I have a few level musics done which are nothing special, and a main menu theme which I really like but repeats too quickly
15:42:48 <elliott> WHY DO YOU LOVE DNA MAZE MORE THAN AII ;__;
15:43:04 <Gregor> elliott: Dood, I'm goin' back and forth here.
15:43:06 <Gregor> GIMME BREAK
15:43:10 <elliott> No you're abandoning us. With hate.
15:43:10 <ais523\unfoog> elliott: because it isn't completely vaporware?
15:43:12 <Gregor> But yeah, I totally write game music.
15:43:21 <elliott> ais523\unfoog: Neither is AII
15:43:30 <ais523\unfoog> elliott: how many lines of code does it have?
15:43:41 <ais523\unfoog> and does it have an indentation discipline all to itself?
15:43:48 <elliott> Dunno how long gravity.lisp is, but it's been worked on for about... two years now :P
15:44:02 <ais523\unfoog> (Gregor: elliott's actually taken to defensively asking me "is it indented like DNA Maze?" whenever I threaten to send him code)
15:44:10 <ais523\unfoog> (in C, at least)
15:44:18 <elliott> Basically Phantom__Hoover is handling the hard PHYSICS MATH and all three of us are bending it into a game :P
15:44:30 <Gregor> ......................
15:44:38 <elliott> hi
15:45:07 <ais523\unfoog> int main(void) {
15:45:13 <ais523\unfoog> printf("Hello, world!\n");
15:45:14 <elliott> I'm not sure what Gregor's megaellipsising at :P
15:45:17 <ais523\unfoog> return 0; }
15:45:20 <Gregor> (ais proceeds to paste in his entire program)
15:45:28 <ais523\unfoog> Gregor: that's a simple example
15:45:33 -!- augur has joined.
15:45:43 <Gregor> So, terrible then.
15:45:44 <ais523\unfoog> indentation is like Python when seen from the left, and all the braces go at end of line
15:46:10 <ais523\unfoog> it's designed to annoy all indentation fanboys equaly
15:46:13 <ais523\unfoog> *equally
15:46:22 <ais523\unfoog> hmm, perhaps I should make it use 5-space indents just to keep everyone unhappy
15:46:36 <ais523\unfoog> or 1-space 1-tab (in that order) would do that job even better, I guess
15:46:46 <ais523\unfoog> or 3-space 1-tab in that order
15:46:49 <Gregor> How 'bout using vertical tabs, and just making sure that your editor displays them as tabs.
15:47:09 <elliott> Gregor: Have I mentioned that DNA Maze's indentation style also replaces sequences of 8 spaces with tabs?
15:47:12 <elliott> Despite using a 2-space indentation?
15:47:20 <ais523\unfoog> elliott: oh right, that
15:47:21 <elliott> Now ais523\unfoog will start the Tab Idiocy again.
15:47:30 <elliott> Brace yourselves, semicolon yourselves.
15:47:33 <ais523\unfoog> elliott: we've changed from Netbeans to Eclipse in the labs down here
15:47:50 <ais523\unfoog> and Eclipse is producing code with mixed tabs and spaces, with tab != 8
15:47:57 <ais523\unfoog> and it's basically impossible to mark as a result
15:49:11 <ais523\unfoog> well, OK, I'm used to reading badly-indented code, so it's just /annoying/ to mark
15:50:37 <Gregor> Just run everything through indent -kr :P
15:51:26 <ais523\unfoog> Gregor: oh right, I mean to do that on my IOCCC submission
15:51:46 <ais523\unfoog> astyle makes such a beautiful mess of it (some lines end up indented so far that they wrap the entire screen in my terminal, even if I maximise it)
15:54:13 <ais523\unfoog> hmm, the results of running indent on it are arguably better than the original, though, although still far from optimal
15:54:18 <Gregor> ais523\unfoog: Feel like giving us clues about your IOCCC submission? :P
15:54:27 <ais523\unfoog> I've told you what it does already
15:54:35 <ais523\unfoog> it's a single-transferable-vote counter that stores data using stack smashing
15:56:34 <ais523\unfoog> hmm, how easy is it to use Emacs as a batch reindenter?
16:12:09 -!- copumpkin has changed nick to immoral.
16:12:14 -!- immoral has changed nick to copumpkin.
16:25:19 -!- Lymia has left ("Hug~♪").
16:28:18 <Gregor> Ohyeah
16:33:09 -!- Lymia has joined.
16:36:05 -!- FireFly has quit (Quit: ZNC - http://znc.in).
16:37:07 -!- FireFly has joined.
16:37:43 -!- FireFly has quit (Changing host).
16:37:43 -!- FireFly has joined.
16:43:13 -!- new2net has joined.
16:53:13 <Phantom__Hoover> ais523\unfoog, OK now the computer is not actually doing anything when plugged in and the power button is pressed.
16:53:26 <Phantom__Hoover> Like, literally nothing happens.
16:53:35 <ais523\unfoog> Phantom__Hoover: is the power supply switched on?
16:53:38 <Phantom__Hoover> Yes.
16:53:45 <Phantom__Hoover> It's switched on at the plug, too.
16:53:50 <elliott> Phantom__Hoover: It died of static.
16:53:50 <elliott> RIP.
16:53:52 <ais523\unfoog> is the power button connected?
16:54:08 <Phantom__Hoover> I've tried putting the power button wires in both orientations.
16:54:45 <ais523\unfoog> hmm, in that case ask someone who's actually assembled a computer (i.e. not me)
16:55:02 <Vorpal> my mobo has a test button and led on it. IIRC for testing that the memory modules work, but obviously you could use it to check that power + memory modules work
16:55:10 <Vorpal> maybe your mobo has something similar?
16:55:23 <Phantom__Hoover> Great, I have a completely fucking useless paperweight and I'm getting pinballed around.
16:55:25 <ais523\unfoog> Phantom__Hoover: is the processor hot?
16:55:32 <ais523\unfoog> also, does it smell of burnt silicon?
16:55:34 <Phantom__Hoover> I don't know.
16:55:40 <Phantom__Hoover> Literally nothing at all happens.
16:55:43 <ais523\unfoog> you can figure out if the processor is hot by touching it
16:55:48 <Vorpal> Phantom__Hoover: do you have a multimeter?
16:55:55 <Phantom__Hoover> No, of course I don't!
16:55:59 <Vorpal> oh okay
16:56:12 <ais523\unfoog> also, the problem's probably with the power supply or the power button if the power supply fan doesn't spin up
16:56:15 <elliott> `addquote <ais523\unfoog> Phantom__Hoover: is the processor hot? <ais523\unfoog> also, does it smell of burnt silicon? [...] <ais523\unfoog> you can figure out if the processor is hot by touching it
16:56:18 <HackEgo> 733) <ais523\unfoog> Phantom__Hoover: is the processor hot? <ais523\unfoog> also, does it smell of burnt silicon? [...] <ais523\unfoog> you can figure out if the processor is hot by touching it
16:56:31 <ais523\unfoog> elliott: who are you poking fun at there?
16:56:31 <Vorpal> how is that funny at all?
16:56:39 <elliott> ais523\unfoog: nobody
16:56:45 <ais523\unfoog> I thought the "I don't know" was the funny bit there
16:57:00 <Vorpal> true
16:57:04 <elliott> Vorpal: the first two lines are amusingly specific in their prognostication, and the third is amusing in its obviousness
16:57:21 <Vorpal> elliott: the funny line is really the "<Phantom__Hoover> I don't know."
16:57:39 * elliott disagrees, and doesn't think you'd be saying that if ais523\unfoog hadn't said it.
16:57:47 <Phantom__Hoover> Like, I turn on the cable at the socket, turn on the PSU, press the power cable, and... nothing.
16:57:48 <elliott> The transition to the third line is ruined by adding that one.
16:58:03 <Vorpal> I did notice it was a bit weird in the original context
16:58:07 <elliott> Phantom__Hoover: You press the button, not the cable. hth
16:58:10 <ais523\unfoog> Phantom__Hoover: how do you press a cable anyway?
16:58:20 <Phantom__Hoover> Button, dammit.
16:58:20 * elliott thinks this will calm down Phantom__Hoover immeasurably.
16:58:32 <Vorpal> Phantom__Hoover: anyway you should really get a multimeter tomorrow or such. They are cheap really. Don't know exact prices, but I seen ones below 100 SEK. They should be good enough for just checking if you have a voltage where you should in the PSU connector
16:58:41 <ais523\unfoog> elliott: I'd have added it as <ais523> PH: is the processor hot? [...] <PH> I don't know <ais523> you can figure out if the processor is hot by touching it
16:58:47 <ais523\unfoog> with the abbreviations expanded
16:58:51 <Vorpal> Phantom__Hoover: that is, standby power
16:58:51 <elliott> ais523\unfoog: hmm, tempting
16:58:54 <elliott> ais523\unfoog: I'll review it tomorrow
16:58:57 <Phantom__Hoover> How am I meant to touch it with the cooler in the way?
16:59:00 * elliott stamp
16:59:08 <ais523\unfoog> Vorpal: I once bought two multimeters for £5
16:59:17 <Vorpal> ais523\unfoog: don't know what that is in SEK
16:59:24 <elliott> Phantom__Hoover: Touch the cooler?
16:59:26 <elliott> It'll be, y'know, hot.
16:59:28 <ais523\unfoog> Phantom__Hoover: well, you'd have to open the case, which is a sensible thing to do anyway when diagnosing computer problems
16:59:33 <ais523\unfoog> but yes, that's a good point
16:59:43 <ais523\unfoog> the whole point of a cooler is to be at the same temperature as the processor
16:59:44 <elliott> Phantom__Hoover: Anyway, if the PSU fan doesn't go on, like ais523\unfoog said, it won't be a CPU problem.
16:59:59 <ais523\unfoog> assuming the PSU has a fan, which is likely but not guaranteed
17:00:02 <elliott> Phantom__Hoover: So... doublecheck everything from the power button to the socket to the PSU?
17:00:04 <Vorpal> indeed it is then either a mobo problem or PSU problem
17:00:07 <elliott> ais523\unfoog: It does.
17:00:07 <Phantom__Hoover> The PSU does, in fact, have a PSU.
17:00:12 <Phantom__Hoover> I mean a fan.
17:00:17 <Vorpal> ais523\unfoog: you need a really low power PSU to find one without a fan
17:00:18 <elliott> My PSU doesn't have a PSU.
17:00:21 <Vorpal> ais523\unfoog: like a laptop one
17:00:21 <elliott> Vorpal: Not true.
17:00:30 <elliott> Vorpal: There are 350W, 400W PSUs without fans.
17:00:40 <elliott> They're just very rare.
17:00:53 <Vorpal> elliott: I count <400W as really low power for a desktop
17:00:56 <elliott> I think the Zalman TNN thing is 420W, but it's part of the heatpipe system so it doesn't really count.
17:00:57 <ais523\unfoog> the PSU fan is pretty much the one thing that is almost certainly going to be correctly wired to the PSU
17:00:59 <elliott> Vorpal: You said "like a laptop one".
17:00:59 <Vorpal> elliott: I have 750 W
17:01:11 <elliott> Vorpal: 750W is over the top for just about everything.
17:01:14 <Vorpal> elliott: yes, those are generally below 100 W. So they qualify
17:01:24 <elliott> Vorpal: (A -> B) =/= (B -> A)
17:01:26 <Vorpal> elliott: I know people who had rigs that needed more than 750 W to run
17:01:46 <ais523\unfoog> elliott: what does -> mean there? (I'm assuming =/= means ≠)
17:01:51 <Vorpal> elliott: anyway it gives some room to expand in. 80+ gold certified, so it is reasonably efficient even at non-max load
17:01:55 <elliott> ais523\unfoog: Logical implication.
17:02:00 <ais523\unfoog> ah, OK
17:02:03 <ais523\unfoog> indeed
17:02:19 <ais523\unfoog> elliott: also, 1000W is quite small for an electric heater
17:02:40 <ais523\unfoog> and far too small for an electric oven
17:02:48 <Vorpal> elliott: anyway, I have never seen a PSU intended for a full sized desktop (mid tower or larger) that didn't have a fan
17:02:48 <elliott> Electric oven computer.
17:02:52 <Vorpal> sure, it might happen
17:02:55 <Vorpal> I just never seen it
17:03:10 <elliott> Vorpal: They're just not popular, that's all.
17:03:17 <Vorpal> right
17:03:31 <Vorpal> so... chances are, unless you use a laptop, your PSU has a fan
17:03:31 <ais523\unfoog> elliott: do you know why they aren't popular? I assume they would be for the same reason as, say, flatscreens
17:03:46 <elliott> ais523\unfoog: You need good cooling on the rest of your system, case fans and the like.
17:03:51 <elliott> ais523\unfoog: And they don't really scale to higher powers.
17:03:55 <ais523\unfoog> ah, OK
17:03:56 <Vorpal> ais523\unfoog: what? Are you suggesting flat monitors are not popular ?
17:04:05 <elliott> Vorpal: Are you illiterate?
17:04:07 <Phantom__Hoover> This is very helpful guys thanks.
17:04:14 <elliott> Phantom__Hoover: I gave you advice; take it.
17:04:20 <Phantom__Hoover> ...what?
17:04:22 <Vorpal> elliott: I anti-missed a "not"
17:04:28 <elliott> <elliott> Phantom__Hoover: So... doublecheck everything from the power button to the socket to the PSU?
17:04:38 <elliott> Phantom__Hoover: It's more productive than complaining that nobody's helping you on IRC...
17:05:02 <Vorpal> Phantom__Hoover: probably the issue is with the PSU. Since the PSU fan didn't turn on. It might be with the mobo, or the button in theory as well.
17:05:14 <Vorpal> could be something connected incorrectly
17:05:39 <Vorpal> Phantom__Hoover: and I assume you set the PSU for the right voltage, if it had such a switch? Mine autodetect between UK and US voltages
17:05:40 <ais523\unfoog> Vorpal: an "n't"? I can't see anywhere to put a "not" to make that sentence not sound completely unlike me and still have the desired meaning
17:05:49 <ais523\unfoog> Vorpal: *EU and US voltages?
17:05:57 <Vorpal> err yeah
17:05:58 <Phantom__Hoover> I don't think it has a switch like that.
17:06:02 <Vorpal> right
17:06:30 <ais523\unfoog> the old UK standard of 240 isn't really used much any more, most devices marketed for Europe have a 225-245 voltage range to cover both UK 240 and standard 230
17:06:36 <Vorpal> ais523\unfoog: in fact I think it supports from 90 V to 260 V or some such. Which is kind of larger than required
17:06:49 <ais523\unfoog> Phantom__Hoover: most PSUs do, unless they're specifically advertised not to
17:06:57 <ais523\unfoog> or laptop PSUs
17:07:03 <Vorpal> ais523\unfoog: Sweden used to have 220 V before we switched to 230 V
17:07:12 <ais523\unfoog> the one on the desktop here at work, the switch is a slidy piece of metal the same colour as the case
17:07:20 <ais523\unfoog> which has ~230V engraved on it
17:07:30 <Vorpal> same colour eh, the ones I seen were usually red
17:08:32 -!- augur has quit (Remote host closed the connection).
17:08:36 <Vorpal> anyway if you put it at 110 V and you used it on 230 V, then chances are your PSU is not alive anymore (hopefully just a fuse). Probably nothing else broke.
17:14:26 <Vorpal> Phantom__Hoover: anyway, even if the CPU was dead your PSU would probably turn on its fan.
17:14:34 <Vorpal> at least for a short period of time
17:14:45 <Vorpal> bbl
17:17:15 <Phantom__Hoover> Ahh, found the problem.
17:17:31 <elliott> Phantom__Hoover: What was it.
17:17:33 <elliott> Was it the polarity flow.
17:17:37 <elliott> Were the neutrinos going too fast.
17:17:38 <Phantom__Hoover> The power on switch has a second connection in the front of the case which is disconnected and isn't mentioned in the manual at all.
17:17:47 <elliott> It's the secret connection.
17:18:06 <Phantom__Hoover> *Now* I've graduated to the monitor showing no signs of life whatsoever.
17:18:54 <elliott> Phantom__Hoover: Did you plug it in.
17:18:56 <elliott> Monitors need power too.
17:19:05 <elliott> (Yes, all my advice will be this irritating.)
17:19:46 <Phantom__Hoover> Yes, and I checked for any additional power buttons; there were none.
17:20:05 <Vorpal> <Phantom__Hoover> *Now* I've graduated to the monitor showing no signs of life whatsoever. <-- are you using the on board video (if that exists)?
17:20:08 <elliott> Phantom__Hoover: The monitor has a power button.
17:20:14 <elliott> Vorpal: There is no on-board video.
17:20:18 <Vorpal> ah okay
17:20:25 <Phantom__Hoover> I plugged it into the graphics card's DVI output (the only video output on the entire computer) using an adaptor provided by the graphics card.
17:20:25 <elliott> However, getting the monitor to turn on seems more important.
17:20:30 <elliott> Phantom__Hoover: Doesn't matter, get it turned on first.
17:20:38 <Phantom__Hoover> elliott, how, there's no button.
17:20:38 <elliott> Then you can work on the computer getting its images there.
17:20:39 <Phantom__Hoover> Anywhere.
17:20:40 <Vorpal> Phantom__Hoover: doesn't the graphics card have other ports?
17:20:43 <elliott> Phantom__Hoover: Yes there is; or a switch.
17:20:58 <Phantom__Hoover> Vorpal, it has 2 DVI and a mini HDMI; the monitor has only VGA and DVI.
17:21:00 <Vorpal> Phantom__Hoover: they might hide it quite well for aesthetics
17:21:10 <Vorpal> Phantom__Hoover: use DVI only if possible
17:21:12 <elliott> Phantom__Hoover: The "only video output" apart from an HDMI one.
17:21:15 <elliott> Vorpal: He has a VGA cable.
17:21:24 <elliott> I have already told him to correct this, so don't bother.
17:21:25 <Vorpal> Phantom__Hoover: otherwise there are two types of DVI: Try the other DVI port
17:21:32 <elliott> FOR GOD'S SAKE
17:21:33 <Vorpal> not all DVI ports provide analogue as well
17:21:34 <elliott> NONE OF THIS WILL HELP
17:21:36 <elliott> UNTIL Phantom__Hoover
17:21:36 <elliott> TURNS
17:21:37 <elliott> THE
17:21:37 <elliott> MONITOR
17:21:38 <elliott> ON
17:21:39 <Vorpal> right
17:22:16 <Vorpal> Phantom__Hoover: well I can tell you for certain there is a power button on the monitor. Look in the manual for it. Also check under the front edge
17:22:22 <Vorpal> sometimes they like to hide the buttons
17:25:10 -!- augur has joined.
17:25:22 <Vorpal> Phantom__Hoover: found it yet?
17:25:50 <Phantom__Hoover> OK it was a touch button for some inexplicable thing?
17:25:57 <Vorpal> Phantom__Hoover: hah that happens
17:26:04 <Phantom__Hoover> Still doesn't get a signal, of course.
17:26:13 <Vorpal> Phantom__Hoover: check the other reasons above
17:26:20 <Vorpal> not all DVI ports provide analogue
17:26:41 * elliott continues debating whether to expediate new computer purchasing to smooth AII development or whether to stay on this machine to ensure better compatibility.
17:26:57 <Vorpal> Phantom__Hoover: you want the connector on the computer to be DVI-I or DVI-A: https://en.wikipedia.org/wiki/File:DVI_Connector_Types.svg
17:27:26 -!- monqy has joined.
17:27:40 <Phantom__Hoover> It's definitely one of those.
17:27:54 <Vorpal> Phantom__Hoover: is the other one that as well? In that case try to switch
17:28:00 <Phantom__Hoover> Miffed somewhat at lack of HDMI port on monitor.
17:28:15 <Phantom__Hoover> That might work OK
17:28:16 <Vorpal> I have one DVI-I and one DVI-D, one DP and one HDMI iirc
17:28:18 <elliott> Phantom__Hoover: HDMI is irrelevant.
17:28:22 <elliott> You just need a DVI cable.
17:30:17 <Vorpal> wait seems I have 5 connectors according to xrandr output
17:30:19 <Vorpal> oh well, whatever
17:31:20 <Vorpal> Phantom__Hoover: anyway, try the monitor connected to your laptop. Just in case. You will of course need to enable the extra monitor in the screen prefs
17:31:27 <Phantom__Hoover> Nothing continues to happen.
17:31:45 <Vorpal> Phantom__Hoover: is the monitor saying "no signal" or such when you unplug the cable?
17:31:51 <Vorpal> And just black screen when plugged in?
17:32:00 <Phantom__Hoover> One thing at a time please.
17:32:06 <elliott> Phantom__Hoover: Skip the laptop thing.
17:32:14 <elliott> Waste of time esp. with differing ports.
17:32:18 <Vorpal> well yeah, probably not the monitor at fault
17:33:42 <elliott> Phantom__Hoover: Also, check the connection of the case to the video card again.
17:33:58 <Phantom__Hoover> elliott, the card fan definitely starts, for one thing.
17:34:05 <elliott> I didn't say motherboard.
17:34:06 <elliott> I said case.
17:34:15 <elliott> Also check the connection to the monitor, ofc.
17:34:24 <Phantom__Hoover> The PSU's connection is fine too.
17:34:44 <elliott> That's not in question.
17:34:56 <elliott> The computer works, the monitor works, the two just don't work together.
17:34:58 <Vorpal> Phantom__Hoover: oh wait, what about power cables to the GPU?
17:35:01 <Vorpal> they are connected right?
17:35:06 <Phantom__Hoover> They're fine too.
17:35:08 <Vorpal> I need two of them at once
17:35:14 <Vorpal> because hell why not
17:35:41 -!- mycroftiv has quit (Ping timeout: 240 seconds).
17:35:43 <Phantom__Hoover> Both of them are connected.
17:35:45 <Vorpal> Phantom__Hoover: point is, does the monitor even say "no signal" or such when unplugged. If yes and it doesn't do that when connected to the computer then the GPU is probably okay.
17:36:29 <Phantom__Hoover> The monitor says "going into power saving mode" and goes into standby.
17:36:44 <Vorpal> Phantom__Hoover: when unplugged? Or when connected to the computer?
17:36:59 <Vorpal> My question is basically if it behaves *differently* when unplugged and connected to the computer.
17:37:02 <Phantom__Hoover> When connected.
17:37:11 <Vorpal> Phantom__Hoover: and when unplugged?
17:37:27 <Phantom__Hoover> It stays on and says "No VGA Cable"
17:37:30 <Vorpal> right
17:37:34 <Vorpal> that is promising
17:37:43 <Vorpal> Phantom__Hoover: did you reboot the computer after connecting the monitor?
17:37:57 <Phantom__Hoover> I've started it with the monitor connected, yes.
17:38:02 <Vorpal> (it might think nothing is connected. I'm not convinced there is plug-and-play during bios)
17:38:32 <Vorpal> Phantom__Hoover: tried that on both DVI ports?
17:38:42 <Phantom__Hoover> I think so. I can try again.
17:38:48 <Vorpal> well, can't hurt to check
17:38:49 <elliott> Phantom__Hoover: Really check the connection in the monitor.
17:38:54 <elliott> VGA is really tough to get in.
17:38:55 <Vorpal> and that too
17:38:59 <Vorpal> elliott: is it?
17:39:05 <elliott> Yes.
17:39:08 <Vorpal> elliott: as long as you secure the screws there won't be a problem
17:39:13 <elliott> Although SCART takes the cake.
17:39:17 <Vorpal> well yes
17:39:18 <elliott> SCART is physically impossible to plug in.
17:39:27 <Vorpal> SCART is easy to get in, just never *stays* in
17:39:30 <elliott> lol
17:39:40 <elliott> Wow, SCART is 70s technology.
17:39:44 <elliott> I'm... not surprised.
17:39:46 <Vorpal> really, heh
17:39:53 <elliott> The SCART connector first appeared on television sets in 1977. It became compulsory on all new television sets sold in France starting from January 1980.[2][3]
17:39:55 <Gregor> I have, attached to my school desktop right now, an official Apple-branded DVI-to-DVI adapter.
17:40:07 <Vorpal> elliott: anyway vga is kind of easy to know if you got in. If you managed to fasten the screws then it is in
17:40:10 <elliott> Gregor: Not DVI-to-MiniDVI or whatever?
17:40:13 <Gregor> elliott: Nope.
17:40:18 <Gregor> elliott: Not even DVI-to-DVI-D or something.
17:40:18 <elliott> Awesome.
17:40:25 <Gregor> elliott: It is a $30 patch cable.
17:40:32 <elliott> Gregor: It's actually a 0m-1m adapter :P
17:40:34 <elliott> Assuming it has a cable.
17:40:35 <Gregor> Actually it's a $30 DVI cable that's really really short.
17:40:40 <Vorpal> Gregor: wait a second, what is Apple DVI?
17:40:41 <elliott> If it's just two identical ends right next to each other than that's amazing.
17:40:49 <Gregor> Vorpal: ... ... X_X
17:40:55 <elliott> Isn't Vorpal amazing?
17:40:57 <Gregor> elliott: No, it has about an inch of cable.
17:41:10 <elliott> Gregor: 0"-to-1" adapter!
17:41:16 <elliott> It ADAPTS SPACE.
17:41:17 <Vorpal> isn't the parsing: (Apple-branded DVI)-to-(DVI)?
17:41:17 <Gregor> Yup :P
17:41:25 <elliott> Vorpal: Obviously not.
17:41:28 <Vorpal> or do you mean Apple-branded (DVI-to-DVI)
17:41:34 <Vorpal> elliott: well it wasn't obvious to me
17:41:37 <Gregor> You rarely parenthesize in the middle of hyphenated phrases X_X
17:41:39 <elliott> That's because you're dumb.
17:41:43 <Vorpal> why would they have DVI-to-DVI?
17:41:51 <elliott> Why would Gregor say that if it wasn't interesting
17:41:56 <elliott> Like, say, for being DVI-to-DVI
17:41:59 <Phantom__Hoover> OK I'm back.
17:41:59 <elliott> Which is unusual
17:42:03 <elliott> And therefore humorous
17:42:04 <elliott> Um
17:42:06 <elliott> Humourous
17:42:06 <Vorpal> yes
17:42:07 * elliott seppuku
17:42:18 <elliott> Phantom__Hoover: Has it blown up yet.
17:43:42 <Vorpal> I haven't seen a good computer case (wrt putting stuff in it easily) since that old dell case I have
17:44:02 <Vorpal> that has some hinges at the front
17:44:07 <Vorpal> really easy to access anything inside
17:44:40 <Vorpal> with very nice cable routing too
17:45:18 <Phantom__Hoover> OK still a distinct lack of anything at all happening.
17:45:36 <elliott> Phantom__Hoover: Open a menu on the monitor.
17:45:38 <Vorpal> Phantom__Hoover: do you have a pc speaker connected?
17:45:39 <elliott> Don't whine, find the button/touch thing.
17:45:49 <Phantom__Hoover> I've already done that.
17:45:54 <Vorpal> does the computer beep when booting?
17:45:59 <elliott> Vorpal: Uh, pc speakers are onboard.
17:46:10 <Vorpal> elliott: not always
17:46:12 <elliott> Phantom__Hoover: Checked monitor connection? Checked adapter connection?
17:46:16 <Vorpal> elliott: at least they didn't use to be
17:46:22 <elliott> Phantom__Hoover: Startin' to think you should just buy an HDMI cable, man
17:46:24 <elliott> erm
17:46:25 <elliott> Phantom__Hoover: Startin' to think you should just buy a DVI cable, man
17:46:26 <Phantom__Hoover> elliott, no and yes.
17:46:32 * elliott makes the worst Frfuuruuduan slips.
17:46:35 <elliott> Phantom__Hoover: Well, go do it then.
17:46:46 <Phantom__Hoover> Revise to yes and yes.
17:47:17 <elliott> Phantom__Hoover: OK, observe my official recommendation:
17:47:23 <elliott> - Pat yourself on the back for an assembly well done;
17:47:25 <elliott> - Buy a DVI cable.
17:47:29 <Vorpal> theoretically the VGA port on the monitor might be dead. It might be worth checking against your laptop if it has a VGA (or even better, DVI) connector
17:47:39 <Phantom__Hoover> I did that, actually; it worked fine.
17:47:47 <Vorpal> hm
17:47:55 <elliott> I suspect Phantom__Hoover's DVI ports just don't do analogue.
17:48:14 <Vorpal> elliott: elliott: https://en.wikipedia.org/wiki/File:DVI_Connector_Types.svg <-- he said it was DVI-I iirc?
17:48:22 <elliott> Vorpal: Yes. I don't believe him.
17:48:44 <Vorpal> elliott: well something might be fried. I wouldn't exclude the posibility
17:48:49 <Vorpal> possibility*
17:49:13 <Vorpal> probably the CPU or RAM in that case.
17:49:27 <elliott> Phantom__Hoover: Does it beep when it starts up.
17:49:57 <Vorpal> elliott: mine doesn't beep when booting. It will however beep using the onboard Intel HD Audio if required.
17:49:59 <Vorpal> kind of weird
17:50:10 <Phantom__Hoover> I don't know if there are speakers?
17:50:20 <Gregor> "<elliott> Why would Gregor say that if it wasn't interesting"
17:50:25 <Gregor> Immortalized forever.
17:50:28 <Gregor> Right there in the log.
17:50:33 <Vorpal> bbl
17:50:54 <elliott> Phantom__Hoover: It's a PC speaker.
17:50:59 <elliott> It makes an annoying beep whether you have speakers or not.
17:52:44 <Phantom__Hoover> There might have been
17:53:06 <elliott> Phantom__Hoover: Dude.
17:53:08 <elliott> It takes three seconds to check.
17:54:33 <Phantom__Hoover> No, it doesn't.
17:55:14 <elliott> Eh.
17:55:24 <elliott> It's probably fine.
17:55:29 <elliott> I guess MODERN MOBOS don't do the beeping thing any more.
17:55:45 <elliott> Phantom__Hoover: Yeah, just buy a DVI cable.
17:56:32 <Phantom__Hoover> BtW, I can confirm that the graphics card's DVI cables are DVI-I and the monitor's unused DVI port is DVI-D.
17:58:48 <elliott> Vorpal: You've gotta admire Phantom__Hoover's dedication to getting this VAX to run.
17:58:59 <Phantom__Hoover> So are there like 20 different kinds of DVI cable?
17:59:04 <elliott> Phantom__Hoover: No, there's one.
17:59:10 <elliott> Phantom__Hoover: Buy the cheapest.
17:59:31 <Phantom__Hoover> But there are 55 kinds of port?
17:59:35 <Phantom__Hoover> *5
17:59:40 <monqy> Mr Green always embrace you.
17:59:52 <elliott> Vorpal will explain to Phantom__Hoover how ports are designed.
18:00:18 <Phantom__Hoover> They oh wait they are intercompatible.
18:00:41 <elliott> Phantom__Hoover: So how loud are the fans.
18:01:06 <Phantom__Hoover> Not all that loud, although I haven't yet run it for more than 30 seconds or so.
18:01:22 <elliott> Phantom__Hoover demonstrates Scottish hardness in the face of 99 dBa.
18:01:54 <Phantom__Hoover> They're only a little louder than bagpipes.
18:03:36 -!- ais523\unfoog has quit (Remote host closed the connection).
18:07:38 <Gregor> NetBSD for Amiga: INSTALLING
18:07:43 <Gregor> I WILL TEST M68K
18:07:45 <Gregor> I WILLLLLLL
18:18:46 -!- Phantom__Hoover has changed nick to Phantom_Hoover.
18:29:24 -!- augur has quit (Remote host closed the connection).
18:39:32 <new2net> where can I get malbolge?
18:39:48 <elliott> a malbolge interpreter?
18:39:55 <new2net> my programming teacher gave me a derp problem, and said use ANY language
18:39:58 <elliott> http://esolangs.org/wiki/Malbolge#External_resources
18:40:08 <elliott> new2net: good luck writing a malbolge program...
18:40:15 <Gregor> Idonno if Malbolge is a good selection for "any" :P
18:40:18 <elliott> some cryptographic skill is recommended
18:40:47 <elliott> "I killed a random mill owner. It wasn't my fault! I just went into his house and picked his pocket to get some practice at doing it, but he caught me and I ran. He chased me out into the wilderness, at which point I got bored of running, figured we were in the middle of a snowy forest in the middle of the night, and stabbed him through the heart. Then I dumped his body in a river. OK, I guess it total
18:40:47 <elliott> ly was my fault."
18:41:15 <Gregor> Also an apt description of Malbolge.
18:43:32 <elliott> "Lately I've taken to reanimating the bodies of people who piss me off, then killing them again so they burn up to a pile of ash. Hideous otherwordly punishment for my enemies, and it keeps the roads clear!"
18:43:39 <new2net> The language is named after Malebolge, the eighth level of hell.
18:44:33 <new2net> thought there were only 7
18:45:13 <elliott> new2net: They created another one for people who make brainfuck derivatives.
18:45:22 <Gregor> In reality there are zero, in the Divine Comedy there are nine.
18:45:29 <new2net> ++++++++++[>+++++>++++++++++>+++++++++++<<<-]>>>.<+.>+++++++++.<<.+++>>---------.-<.>+++++++.---
18:45:52 <elliott> ^bf ++++++++++[>+++++>++++++++++>+++++++++++<<<-]>>>.<+.>+++++++++.<<.+++>>---------.-<.>+++++++.---
18:45:53 <fungot> new2net
18:45:58 <elliott> !bf_txtgen old2net
18:46:00 <Phantom_Hoover> Hmm, why would the graphics card come packaged with a VGA to DVI adapter if it didn't work?
18:46:03 <EgoBot> ​78 ++++++++++[>+>+++++++++++>++++++++++>+++++<<<<-]>>+.---.>.>.<<++.>+.<++++++.<. [774]
18:46:10 <elliott> Phantom_Hoover: Satanism?
18:46:34 * new2net nods
18:46:39 <new2net> but your txtgen doesn't leave only prime numbers in each byte
18:46:45 <elliott> "my" txtgen :P
18:47:38 <new2net> !malbolge_txtgen new2net
18:47:59 <new2net> no shame in taking the easy road where available...
18:50:15 -!- derrik has joined.
18:53:21 <Vorpal> back
18:53:26 <Vorpal> Phantom_Hoover: any luck?
18:53:38 <Vorpal> <Phantom_Hoover> Hmm, why would the graphics card come packaged with a VGA to DVI adapter if it didn't work? <-- it wouldn't
18:53:45 <Vorpal> unless something is broken
18:53:54 <Vorpal> like the adapter or whatever
18:54:41 <Vorpal> <Phantom__Hoover> BtW, I can confirm that the graphics card's DVI cables are DVI-I and the monitor's unused DVI port is DVI-D. <-- that combo should work just fine, because DVI-I is DVI-A+DVI-D basically
18:55:03 <Vorpal> <elliott> Vorpal will explain to Phantom__Hoover how ports are designed. <-- I only know how the FreeBSD ports work :P
18:55:12 <Gregor> Greatest thing about the BSDs is that every time you mount their native filesystem you get to scream "MOUNT FOR FUCK'S SAKE" (<-- joke noöne will get)
18:55:34 <Vorpal> <elliott> Phantom__Hoover demonstrates Scottish hardness in the face of 99 dBa. <-- you mean Welsh
18:56:06 <Phantom_Hoover> Hmm, I *do* have access to a TV with an HDMI input.
18:56:13 <Vorpal> besides bagpipes kind of sound nice. Probably not in the long run though.
18:56:22 -!- ais523 has joined.
18:56:45 <Vorpal> Gregor: I know about UFS mounting under linux.
18:56:52 <new2net> elliott, does EgoBot interpret Malbolge?
18:56:53 <Vorpal> Gregor: never tried it, but I know it is kind of bad
18:56:59 <Vorpal> !malbolge
18:57:04 <Vorpal> maybe?
18:57:07 <Vorpal> hard to tell
18:57:18 <ais523> new2net: I don't think so, but I'm not sure
18:57:20 <ais523> !help languages
18:57:20 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
18:57:28 <ais523> yes, it does, it seems
18:57:53 <new2net> ^malbolge ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
18:58:22 <elliott> new2net: ! not ^
18:58:22 <Gregor> Vorpal: NOT - THE - JOKE
18:58:40 <elliott> Gregor: i got it
18:58:44 <Vorpal> Gregor: oh mount.ffs, but no one uses ffs any more
18:58:52 <new2net> !malbolge ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
18:58:53 <EgoBot> Hello World!
18:59:02 <ais523> wow the spambots have been busy recently
18:59:02 <elliott> Vorpal: ufs aka ffsv2
18:59:19 <Vorpal> elliott: right, but the tools are mount.ufs iirc
18:59:27 <Vorpal> tool is*
18:59:41 <Vorpal> elliott: so Gregor's joke doesn't work for them
18:59:53 <Vorpal> elliott: because the joke was that the /tool/ is mount.ffs
19:00:28 <Gregor> "about the BSDs"
19:00:32 <Gregor> It's only called UFS on Linux.
19:00:36 * new2net dies inside.
19:00:39 <Vorpal> Gregor: no
19:00:39 -!- new2net has left ("Leaving").
19:00:49 <Vorpal> Gregor: notice UFS and UFS2 in http://www.freebsd.org/projects/bigdisk/index.html
19:00:53 <Vorpal> just as an example
19:00:54 <Gregor> Vorpal: I just watched NetBSD 5.1 mount_ffs
19:00:56 <Vorpal> first hit on ddg for me
19:01:10 <Vorpal> Gregor: well netbsd is like 10 years out of date except on toasters
19:01:10 -!- Ngevd has joined.
19:01:20 <Gregor> Vorpal: Amiga: Mostly like a toaster.
19:01:21 <Ngevd> Hello!
19:01:26 <Vorpal> Gregor: right
19:01:33 <Vorpal> Gregor: I mainly used freebsd and some openbsd
19:01:50 <Ngevd> I've got data in an Excel spreadsheet, what's the best way to use it in Haskell?
19:01:53 <Vorpal> and I think freebsd is the largest *bsd
19:01:59 <elliott> openbsd "more modern than netbsd" "lol"
19:02:03 <Vorpal> unless I misremember
19:02:04 <Gregor> Vorpal: I mainly use Linux, because everything I want to run can either run Linux (in which case I don't want BSD), or the only free OS it can run is NetBSD :P
19:02:04 <elliott> Ngevd: export to csv?
19:02:22 <Ngevd> elliott, then what?
19:02:22 <Vorpal> Gregor: heh
19:02:35 <Vorpal> Ngevd: parsec would work
19:02:39 <Vorpal> might be an easier way
19:02:42 <elliott> Ngevd: search hackage for csv library
19:02:48 <elliott> Vorpal: he said excel
19:02:58 <Vorpal> elliott: I meant parsec for the csv data
19:02:58 <Vorpal> duh
19:03:16 <Phantom_Hoover> OK, trying this again with an HDMI cable.
19:03:18 <Vorpal> Ngevd: or you could use the FFI for accessing MS Office integration stuff
19:03:26 <Vorpal> Phantom_Hoover: doubtful it will help, but worth a try
19:03:35 <Vorpal> Phantom_Hoover: remember to unplug the other monitor
19:03:38 <elliott> Ngevd: Vorpal's advice is useless.
19:03:48 <Vorpal> elliott: that stuff about FFI was a joke
19:03:49 <Vorpal> obviously
19:06:08 <Vorpal> [download] 16.7% of 37.55M at 175.13k/s ETA 03:02 <-- the video is 2 minutes. What a failure.
19:06:09 <Phantom_Hoover> That didn't work either.
19:06:27 <Vorpal> Phantom_Hoover: well then I guess one of the CPU, RAM or GPU are broken
19:06:28 <Phantom_Hoover> Is there something wrong with the card, then?
19:06:34 <elliott> no.
19:06:41 <Gregor> Vorpal: What's that about you getting download speeds that Americans can only dream of?
19:06:43 <Vorpal> or mobo
19:06:55 <Vorpal> Gregor: come on from a good mirror I can get 800 kbps down
19:07:15 <Vorpal> Gregor: youtube: usually 500 kpbs
19:07:28 <Vorpal> (and that was youtube-dl)
19:10:23 -!- derrik_ has joined.
19:10:35 <Gregor> OMG NetBSD extraction SO SLOW
19:11:03 <Vorpal> Gregor: what is the bottle neck?
19:11:13 -!- derrik has quit (Ping timeout: 252 seconds).
19:11:20 <Gregor> Vorpal: Everything :P
19:11:29 -!- derrik_ has quit (Client Quit).
19:13:49 -!- derrik has joined.
19:15:18 -!- augur has joined.
19:15:27 <Vorpal> [download] 20.3% of 210.35M at 163.04k/s ETA 17:32 <-- come on, for a 14 minute video
19:15:58 -!- derrik has quit (Client Quit).
19:17:18 -!- derrik has joined.
19:23:37 -!- copumpkin has changed nick to coblumpkin.
19:24:50 <ais523> a hate so pure and… blumpkin seeds?
19:25:27 <elliott> :D
19:27:50 <elliott> ais523: there's a new humble bundle, btw
19:28:04 <ais523> yes, I know, they advertise at me incessantly
19:28:30 <ais523> these bundles come out much faster than I expected; and as a result, they're getting less of my custom than maybe they'd want
19:28:44 <ais523> the inability to buy them after the period ends doesn't help either
19:28:51 <ais523> not even at a mark-up
19:29:04 <elliott> Sure you can.
19:29:06 <elliott> It's just a really big markup.
19:29:28 <elliott> ais523: Have you even ever played Uplink?
19:29:29 <ais523> well, I mean, without bribing the relevant people
19:29:32 <ais523> elliott: no, I haven't
19:29:37 <ais523> I've heard of it, but not much about it
19:29:43 <elliott> It's good.
19:29:47 <elliott> It's really good.
19:29:48 <elliott> <ais523> well, I mean, without bribing the relevant people
19:29:52 <ais523> I don't even know what genre it is
19:29:53 <elliott> ais523: I was referring to simply being each game
19:29:58 <ais523> oh, I see
19:30:12 <elliott> ais523: Uplink is a fully-featured implementation of the ridiculous OSes used for hacking in films and TV shows
19:30:16 <elliott> plus plot
19:30:26 <elliott> (it even includes an IRC client, although it was removed in a patch)
19:30:41 <elliott> ais523: it's really well done -- you can bring down systems by erasing their OS files with the command line
19:30:48 <elliott> and they never come back up even if you restart the game with another player account
19:31:03 <Phantom_Hoover> elliott...
19:31:16 <ais523> presumably you can set the state of the game back to freshly-installed so you can do it again?
19:31:21 <Phantom_Hoover> Crashed systems come back up eventually, and systems aren't persistent.
19:31:28 <elliott> Phantom_Hoover: Not if you rm -r /.
19:31:36 <elliott> ais523: Well, sure, but most systems aren't terribly interesting :P
19:31:40 <ais523> but that command doesn't actually /work/
19:31:43 <ais523> in real life
19:31:45 <Phantom_Hoover> Nope.
19:31:50 <elliott> ais523: it's not rm -r /, it's del / or something :P
19:31:51 <Phantom_Hoover> They still come back up.
19:31:52 <ais523> what if you forkbomb them?
19:31:54 <Phantom_Hoover> After a few months.
19:31:58 <elliott> Phantom_Hoover: Hmm, they never came back for me, but OK.
19:32:06 <elliott> ais523: The shell isn't *that* good.
19:32:09 <Phantom_Hoover> And it's cd usr; delete; cd sys; delete.
19:32:12 <ais523> boring
19:32:31 <Gregor> It's been extracting ./rescue/[ for multiple minutes now >_>
19:32:44 <ais523> Gregor: why is there a file called [?
19:32:53 <ais523> is it a symlink to test(1)?
19:32:56 <ais523> (even more insane if it isn't)
19:33:45 <Gregor> `which [
19:33:47 <HackEgo> ​/usr/bin/[
19:33:57 <ais523> `file /usr/bin/[
19:33:58 <Gregor> [ has been a conventional part of UNIX for years.
19:33:59 <HackEgo> ​/usr/bin/[: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
19:34:10 <Gregor> test and [ are slightly (very slightly) distinct.
19:34:20 <elliott> discussing the same bug report with two different forks of the same project simultaneously
19:34:22 <ais523> Gregor: yes, but I wouldn't have expected to see it in ./rescue
19:34:26 <elliott> ~a~w~k~w~a~r~d~
19:34:30 <Gregor> ais523: Fair 'nuff :)
19:34:30 <ais523> elliott: are they test and [?
19:34:33 <elliott> lol
19:34:39 <Gregor> X-D
19:34:56 <Gregor> FFFFFFFFFFF it's still extracting rescue/[
19:35:07 <ais523> perhaps it's infinitely large?
19:35:17 <elliott> Gregor: I suspect it's hung on the filename or something :P
19:36:54 <elliott> hmm, I conclude that the only way this can end up non-awkward is if i convince the two projects to merge
19:37:21 <ais523> does the /original/ have the bug? and is it dead?
19:37:29 <elliott> the original is dead
19:38:16 -!- coblumpkin has changed nick to copumpkin.
19:40:12 -!- derrik has quit (Quit: reconnect).
19:40:27 -!- derrik has joined.
19:45:43 <Gregor> elliott: Nope, finally got past it.
19:45:52 <elliott> Gregor: The biggest file.
19:56:08 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:56:58 -!- Phantom_Hoover has joined.
20:00:23 -!- augur_ has joined.
20:01:20 -!- augur has quit (Ping timeout: 240 seconds).
20:04:32 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:07:06 <ais523> elliott: oh right, I just remembered, kerio is also an ssh fanboy
20:07:18 <elliott> what
20:07:23 <ais523> I didn't even realise that was possible
20:07:28 <ais523> but apparently so
20:08:00 <Gregor> Who ISN'T an SSH fanboy.
20:08:02 <Gregor> SSH rules.
20:08:05 <ais523> I mean, you can do worse than SSH
20:08:15 <elliott> ais523: but how
20:08:21 <Gregor> rsh
20:08:22 <Gregor> telnet
20:08:35 <ais523> <heptagram> ais523, I have a message for you: kerio said: i just realized that rsync and pretty much every DVCS uses ssh - why can't acehack-tiles and/or jettyplay do the same?
20:08:45 <ais523> <kerio> ais523: ssh is awesome and you should use it!
20:08:52 <ais523> [20:05] <ais523> kerio: the use of ssh by git and by rsync is one of the things that made them much harder to port to Windows
20:08:54 <ais523> [20:06] <kerio> and also made them much more awesome
20:09:17 <Gregor> Windows is for losers anyway.
20:09:20 <elliott> ais523: it's amazing how quickly i have come to hate kerio
20:09:25 <ais523> heh
20:09:44 <elliott> it usually takes at least ten more lines than i've seen
20:09:46 <ais523> anyway, there you go, ssh fanboyism in action
20:10:34 <elliott> ais523: you should make jettyplay use rsh+perl
20:11:01 <ais523> elliott: well, jettyplay connects to public NetHack servers to watch, normally via telnet
20:11:13 <ais523> but kerio removed telnet support from acehack.eu, because ssh was so superior
20:11:17 <ais523> so it doesn't work on AEU at the moment
20:11:47 -!- Darth_Cliche has joined.
20:12:51 <elliott> ais523: hmm, what exactly does ssh give for anonymous connections?
20:12:59 <elliott> authentication overhead, I think, plus compression
20:13:13 <ais523> not sending the password in plaintext
20:13:17 <elliott> oh, and encryption I guess :P
20:13:24 <elliott> ais523: vital nethack passwords
20:13:31 <ais523> kerio did find a really huge security bug in dgamelaunch, and actually got root on someone else's server through it
20:14:01 <elliott> ais523: that's, um, a really immature way to respond to remote holes?
20:14:17 <ais523> well, he didn't do anything destructive with it but edit the homepage and close the hole behind him
20:14:27 <elliott> that sounds destructive to me :P
20:14:52 <ais523> right, but the server admin seemed not to mind
20:23:45 -!- Phantom_Hoover has joined.
20:24:20 -!- sebbu2 has joined.
20:24:20 -!- sebbu2 has quit (Changing host).
20:24:20 -!- sebbu2 has joined.
20:24:37 <Phantom_Hoover> fungot!
20:24:37 <fungot> Phantom_Hoover: crazy utahraptor! homeslice! oh, i wasn't talking about you here, i have and now god's in on it too, utahraptor. they're quite the whistles in mario, on a whale-watching tour:
20:25:05 <Gregor> Oh fungot, we love you so.
20:25:06 <fungot> Gregor: people in car car simulator trucko boat 3. that's a ' thr' followed that. remember? remember punchette, the power punch", sure but outside of a religious context, but it seems i'm destined to be with you
20:25:06 <elliott> good
20:25:33 <Gregor> We should use fungot to set the /topic.
20:25:33 <fungot> Gregor: a good choice, then i'm going to make mistaks so bad that they kill me, and a parallel to all this, as usual, t-rex
20:25:47 <monqy> good
20:25:48 <elliott> Gregor: --Gregor "antioptbot" Gregor
20:26:29 -!- sebbu has quit (Ping timeout: 240 seconds).
20:27:29 <Gregor> X-D
20:27:41 <Gregor> TOUCHÉ SIR
20:29:00 -!- oerjan has joined.
20:29:38 <Sgeo> HUMBLE INTROVERSION BUNDLE
20:31:07 <elliott> <Vorpal> ooh this sounds nice "Humble Introversion Bundle"
20:31:11 <elliott> --the other channel, hours ago
20:31:46 <Sgeo> Is Crayon Physics Deluxe worth it?
20:31:59 <elliott> surely you already have it from another bundle
20:32:05 <Sgeo> No
20:32:12 <Sgeo> I have Aquaria from another bundle
20:32:16 <ais523> Sgeo: it's fun for a while, but becomes a bit repetitive
20:32:43 <ais523> and the physics engine is a little wonky, enough that you can't really do things that the designers didn't think of and have them work with any degree of success
20:32:50 <Sgeo> hmm
20:33:51 <ais523> and it feels very random (actually, it's sensitivity to small details of input rather than randomness, but that comes to much the same thing in practice)
20:34:04 <Sgeo> Hmm
20:34:13 <Sgeo> Can't really hurt that much to get it, can it?
20:34:39 * elliott hardly thinks Introversion's games are worth less than 2.25 pounds.
20:35:06 * Sgeo currently has $12.83 in his Paypal account...
20:35:16 * elliott paid 4 pounds, because I already have Uplink and am uncertain whether I'll like DEFCON or not, plus already have the other two games, and I spent more than everyone else on the other bundles anyway.
20:36:46 * Sgeo pays $5
20:36:50 <Sgeo> :/
20:37:05 <ais523> elliott: my bank charged me an extra £1.50 for paying in dollars from a pounds-denominated bank account
20:37:42 <elliott> my paypal didn't
20:37:48 <elliott> Sgeo: You realise you can add more funds to PayPal acounts.
20:37:55 <ais523> I refuse to use PayPal
20:38:32 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:38:32 <Sgeo> elliott, not as easily as just using what's currently there
20:38:35 <elliott> ais523: Yes, I fully predicted a response along those lines. I'm sure elaborating will be productive and entertaining for all of us.
20:38:59 <ais523> elliott: heh, somehow I don't believe you
20:39:10 <ais523> but basically, it comes from multiple incidents in which they randomly decided to take people's money
20:39:14 <elliott> Interleave tab width discussion while you're at it!!!
20:40:22 <Ngevd> I FINALLY KNOW WHA I'M DOING!
20:40:29 <Ngevd> WITH A T ON THE END OF WHA
20:41:09 <elliott> hi Ngevd
20:42:01 <Sgeo> Someone on Reddit mentioned Slavehack as being like MMO Uplink?
20:43:10 <Ngevd> It should be StdGen -> Bool -> String -> String rather than Int -> Bool -> String -> String
20:45:19 <elliott> Ngevd: Whenever you take an StdGen, you want to output one too
20:45:23 <elliott> So -> (String, StdGen)
20:45:40 <ais523> what does StdGen do?
20:45:53 -!- myndz\ has joined.
20:46:02 <elliott> ais523: it does nothing, it's a type
20:46:12 <ais523> what's its intended use, then?
20:46:17 <oerjan> elliott: unless you make an infinite String result, or perhaps even a potentially infinite one
20:46:20 <Sgeo> ais523, a random number generator
20:46:36 <elliott> oerjan: well yes
20:46:39 <ais523> oh, I see, using it monad-style
20:46:41 <ais523> but without an actual monad
20:46:42 <Sgeo> You can use it to obtain a number and a new RNG
20:46:42 <oerjan> :t split
20:46:43 <lambdabot> forall g. (RandomGen g) => g -> (g, g)
20:47:23 <oerjan> or one where you don't want the whole String to be calculated immediately, i guess
20:47:43 <oerjan> :t randoms
20:47:45 <lambdabot> forall g a. (Random a, RandomGen g) => g -> [a]
20:48:27 <oerjan> :t random
20:48:28 <lambdabot> forall g a. (Random a, RandomGen g) => g -> (a, g)
20:48:49 * elliott thinks the fact that those aren't in a Random monad is awful.
20:49:02 <oerjan> it occurs to me that splitting :: (RandomGen g) => (g -> a) -> g -> (a, g); splitting f g = second f . split could be useful
20:49:11 <oerjan> er
20:49:13 <oerjan> *first
20:50:22 <elliott> oerjan: splitting f = fmap f random :P
20:50:30 <elliott> (with correct Random monad)
20:50:45 <oerjan> what
20:51:06 <elliott> oerjan: * elliott thinks the fact that those aren't in a Random monad is awful.
20:51:29 <elliott> random :: (Random a) => Rand a
20:51:39 <oerjan> elliott: well i guess if RandomGen was an instance of Random - except it's a class, so that would break things
20:51:44 <elliott> runRand :: (RandomGen g) => Rand a -> g -> (a,g) etc.
20:51:45 <elliott> oerjan: um no
20:51:52 <elliott> i'm saying that random's type is wrong
20:51:57 <elliott> because it's threading an explicit state monad around instead of just
20:51:59 <elliott> being a state monad
20:52:09 <Ngevd> I have written a program in Haskell that could be used in lessons to demonstrate why error handling is a good idea
20:52:16 <oerjan> elliott: um do you realize what splitting _does_?
20:53:02 <elliott> oerjan: oh hm, i misread splitting
20:53:11 <elliott> sry
20:53:11 <oerjan> thought so :P
20:53:30 <elliott> split :: Rand a -> Rand a
20:53:32 <elliott> i guess :P
20:53:49 <Vorpal> why did some fonts go super small in GTK programs suddenly?!
20:53:50 <Vorpal> wtf
20:53:52 <Vorpal> not all
20:54:10 <Ngevd> Okay, that reminds me
20:54:15 <Vorpal> or wait, maybe qt ones
20:54:19 <Ngevd> If I want to use a module, I need to install the module
20:54:24 <Vorpal> yeah QT
20:54:45 <elliott> Ngevd: very true.
20:55:19 <elliott> Ngevd: is that all
20:55:24 <Vorpal> going to restart x11
20:55:35 <Ngevd> elliott: how do install module?
20:55:47 <elliott> Ngevd: what module
20:55:48 <elliott> exactly
20:55:50 <elliott> you are being very vague
20:56:02 <Ngevd> Data.Spreadsheet
20:56:05 <Ngevd> http://hackage.haskell.org/package/spreadsheet
20:56:13 <elliott> cabal install spreadsheet but uhhhh
20:56:15 <elliott> i would not use that package
20:56:22 <elliott> http://hackage.haskell.org/package/csv
20:56:25 <elliott> try this instead :P
20:56:35 <oerjan> > (evalState . forever . state $ random) $ mkStdGen 42 :: [Int]
20:56:36 <lambdabot> Ambiguous type variable `a' in the constraint:
20:56:36 <elliott> it's what i've seen used
20:56:36 <lambdabot> `System.Random.Random a'
20:56:36 <lambdabot> ...
20:56:38 <oerjan> argh
20:56:48 <Ngevd> No I need to rewrite my program.
20:56:49 <Ngevd> w
20:56:52 <oerjan> oh duh
20:56:54 <Ngevd> With the No
20:56:58 <Ngevd> I said Now, not No
20:57:01 <oerjan> > (evalState . sequence . state $ random) $ mkStdGen 42 :: [Int]
20:57:02 <lambdabot> Couldn't match expected type `[Control.Monad.Trans.State.Lazy.StateT
20:57:03 <lambdabot> ...
20:57:04 <elliott> Ngevd: but anyway, "cabal install pkg"
20:57:15 <oerjan> hmph
20:57:17 <oerjan> :t state
20:57:18 <lambdabot> forall s a. (s -> (a, s)) -> State s a
20:57:20 <elliott> you shouldn't need to rewrite your program, just the csv input bits P:
20:57:21 <elliott> :p
20:57:27 <Ngevd> elliott: what if I'm an idiot and using Windows?
20:57:31 <elliott> oerjan: might be strict
20:57:32 <oerjan> :t evalState
20:57:33 <lambdabot> forall s a. State s a -> s -> a
20:57:34 <elliott> Ngevd: cabal install pkg
20:57:44 <oerjan> elliott: well it _says_ Lazy up there :P
20:57:56 <elliott> oerjan: "expected" but ok
20:58:14 <oerjan> oh duh
20:58:24 <Vorpal> Ngevd: open cmd.exe and run that stuff I presume?
20:58:30 <oerjan> > (evalState . sequence . repeat . state $ random) $ mkStdGen 42 :: [Int]
20:58:31 <Vorpal> with the right path
20:58:32 <lambdabot> [-3907187990116499535,-2519438828217931933,-8264534369199619667,86887135830...
20:58:35 <oerjan> finally
20:59:28 <Ngevd> > randoms
20:59:29 <lambdabot> Overlapping instances for GHC.Show.Show (g -> [a])
20:59:30 <lambdabot> arising from a use of...
20:59:46 <Ngevd> > randoms (mkStdGen 42)
20:59:48 <lambdabot> [-3907187990116499535,-2519438828217931933,-8264534369199619667,86887135830...
20:59:48 <Vorpal> :t forever
20:59:49 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b
20:59:55 <Vorpal> @src forever
20:59:56 <lambdabot> Source not found. I can't hear you -- I'm using the scrambler.
21:00:02 <Ngevd> oerjan: :P
21:00:05 <Vorpal> what package is it in?
21:00:05 <elliott> forever = fix (>>)
21:00:07 <elliott> base
21:00:15 <Vorpal> hm
21:00:18 <oerjan> Ngevd: duh
21:01:12 <elliott> oerjan: runRandAll :: Rand a -> [a] >:)
21:01:13 <Vorpal> elliott: well it isn't in Prelude if that is what you meant.
21:01:36 <elliott> Vorpal: "package" does not mean what you seem to think it means
21:01:45 <Vorpal> elliott: well, module is what I meant
21:01:49 <elliott> oerjan: runRandAll random g == randoms g
21:01:50 <Vorpal> used wrong word
21:01:53 <elliott> Vorpal: Control.Monad
21:01:56 <Vorpal> thanks
21:02:05 <elliott> oerjan: runRandAll (liftA2 (,) random random) g == guess
21:05:03 -!- Phantom_Hoover has joined.
21:06:43 <oerjan> also randoms g, but with [(a,a)] return type?
21:07:41 <elliott> hmm, actually, randoms is very inelegant
21:07:45 <elliott> ideally runRandAll would be
21:07:53 <elliott> runRandAll :: Rand a -> [a] with no g argument
21:07:59 <elliott> and simply return _all possible results_
21:08:07 <elliott> for the random types involved in its computation
21:08:36 <oerjan> > fst $ random (mkStdGen 42) :: [(Int, Int)]
21:08:37 <lambdabot> No instance for (System.Random.Random
21:08:37 <lambdabot> [(GHC.Types.Int, ...
21:08:38 <oerjan> er
21:08:42 <oerjan> > fst $ random (mkStdGen 42) :: (Int, Int)
21:08:43 <lambdabot> No instance for (System.Random.Random
21:08:43 <lambdabot> (GHC.Types.Int, G...
21:08:45 <oerjan> bah
21:09:00 <oerjan> well it would be, if that instance existed
21:09:56 <elliott> bah, MonadRandom doesn't have that
21:10:12 <Vorpal> fuck FAT
21:10:23 * Vorpal curses this USB memory
21:10:30 <elliott> the obvious way to model running a nondetemrministic computation on a generator is to have it simply magically pick one ofthe results of runRandAll...
21:10:30 <Vorpal> FATs differ but appear to be intact. Use which FAT ?
21:10:30 <Vorpal> 1) Use first FAT
21:10:30 <Vorpal> 2) Use second FAT
21:10:37 <elliott> i mean, but optimised :)
21:11:13 <oerjan> elliott: that doesn't include the RandomGen class so would be restricted to the StdGen instance...
21:11:26 <elliott> oerjan: well i mean that's just how you'd _think_ about it
21:11:37 <elliott> @src RandomGen
21:11:38 <lambdabot> class RandomGen g where
21:11:38 <lambdabot> next :: g -> (Int, g)
21:11:38 <lambdabot> split :: g -> (g, g)
21:11:38 <lambdabot> genRange :: g -> (Int,Int)
21:11:40 <elliott> @src Random
21:11:41 <lambdabot> class Random a where
21:11:41 <lambdabot> random :: RandomGen g => g -> (a, g)
21:11:42 <lambdabot> randoms :: RandomGen g => g -> [a]
21:11:44 <lambdabot> randomR :: RandomGen g => (a,a) -> g -> (a,g)
21:11:46 <lambdabot> randomRs :: RandomGen g => (a,a) -> g -> [a]
21:11:47 <lambdabot> randomRIO :: (a,a) -> IO a
21:11:50 <lambdabot> randomIO :: IO a
21:12:03 <elliott> oerjan: ideally it'd be something like class (Ix a) => Random a where { something }
21:12:11 <elliott> or uh Bounded a
21:12:13 <oerjan> i just thought of that
21:12:17 <elliott> point is, runRandAll wouldn't need a generator
21:12:22 <elliott> it'd just pick every single possible value of the type
21:12:35 <oerjan> itym Enum, Bounded has no range
21:12:39 <elliott> ofc you might want a binary tree thing instead if you actually want to use them...
21:12:41 <elliott> oerjan: right
21:12:44 <elliott> Enum + Bounded
21:13:27 <oerjan> but randomIx :: (RandomGen g, Ix a) => (a,a) -> g -> (a, g) could be written now...
21:13:39 <oerjan> and would work for tuples
21:14:15 <oerjan> @src Ix
21:14:15 <lambdabot> class (Ord a) => Ix a where
21:14:15 <lambdabot> range :: (a,a) -> [a]
21:14:15 <lambdabot> index :: (a,a) -> a -> Int
21:14:15 <lambdabot> inRange :: (a,a) -> a -> Bool
21:14:15 <lambdabot> rangeSize :: (a,a) -> Int
21:14:50 <oerjan> > rangeSize (1,2)
21:14:51 <lambdabot> 2
21:15:03 <elliott> bah. i am going to sleep rather than think about this. _tomorrow_ I can futz around with random monads.
21:15:07 <elliott> night.
21:15:13 <Ngevd> Goodnight
21:15:19 -!- elliott has quit (Quit: Leaving).
21:15:43 <oerjan> oh wait Ix has no way to get _back_ an a value from an Int :(
21:15:56 <oerjan> and Enum has no tuple instance
21:16:10 <oerjan> (well no efficient way)
21:21:35 <Phantom_Hoover> Oh no, poor I.
21:21:35 <Phantom_Hoover> *Ix
21:26:42 <Vorpal> Phantom_Hoover: so any luck with your computer?
21:26:58 <Vorpal> Phantom_Hoover: maybe you should get some experienced you know near you to check it out?
21:27:05 <Phantom_Hoover> I want to play WA but elliott is gone and Sgeo is boring.
21:27:14 <Vorpal> Phantom_Hoover: WA? Wolfram Alpha?
21:27:20 <Sgeo> Worms: Armageddon
21:27:22 <Vorpal> oh
21:27:22 <Ngevd> Western Australia?
21:27:23 <Vorpal> right
21:27:31 <Vorpal> I don't own that game, so I can't join in
21:27:41 <Sgeo> Phantom_Hoover, I don't have my copy of the ISO with mne
21:27:58 <Sgeo> Not sure when I'll ever have it
21:28:01 <Sgeo> :/
21:28:22 <Vorpal> oh?
21:28:28 <Vorpal> torrent it?
21:28:48 <Sgeo> Meh
21:28:54 <Sgeo> Also, I have school in a few hours
21:29:29 <Ngevd> What time zone?
21:29:29 <oerjan> wolfram armageddon, the genius overlord game
21:29:35 <Vorpal> oerjan: heh
21:29:46 <Ngevd> I vote for quote
21:29:58 <Vorpal> `addquote <oerjan> wolfram armageddon, the genius overlord game
21:30:00 <Vorpal> yeah
21:30:00 <HackEgo> 734) <oerjan> wolfram armageddon, the genius overlord game
21:30:28 <oerjan> @pl-resume
21:30:43 <lambdabot> Plugin `pl' failed with: thread killed
21:31:02 <oerjan> how awful
21:31:12 <oerjan> @pl-resume
21:31:27 <lambdabot> Plugin `pl' failed with: thread killed
21:31:31 <oerjan> @pl test
21:31:31 <lambdabot> test
21:31:33 <oerjan> @pl-resume
21:31:33 <lambdabot> pointless: sorry, nothing to resume.
21:31:36 <ais523> that's quite an @pl you gave it
21:31:50 <Vorpal> what pl was it he gave it?
21:31:52 <Vorpal> I didn't see it
21:32:09 <oerjan> it might still have been on the one that crashed yesterday, and which started the day before that
21:32:16 <oerjan> @pl ap id id (ap id id)
21:32:20 <lambdabot> ap id id (ap id id)
21:32:20 <lambdabot> optimization suspended, use @pl-resume to continue.
21:32:26 <Vorpal> ah
21:32:27 <oerjan> @pl-resume
21:32:33 <lambdabot> ap id id (ap id id)
21:32:33 <lambdabot> optimization suspended, use @pl-resume to continue.
21:32:36 <oerjan> @pl-resume
21:32:47 <Vorpal> oerjan: why is that doing that?
21:32:49 <lambdabot> ap id id (ap id id)
21:32:49 <lambdabot> optimization suspended, use @pl-resume to continue.
21:33:19 <oerjan> Vorpal: because ap is SKI S and it tries to rewrite ap x y z as x z (y z)
21:33:40 <oerjan> @pl-resume
21:33:55 <lambdabot> Plugin `pl' failed with: thread killed
21:34:24 -!- Ngevd has quit (Ping timeout: 258 seconds).
21:34:29 <Vorpal> oerjan: oh right
21:34:32 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:34:40 <Vorpal> oerjan: is there a way to do it properly?
21:35:03 <oerjan> however, it seems like the thread killing only happens based on something like cpu time, so the other day i could resume it despite a day having passed :P
21:35:07 <Vorpal> @src ap
21:35:07 <lambdabot> ap = liftM2 id
21:35:13 <Vorpal> oh Applicative, right
21:35:26 <oerjan> Vorpal: um S I I (S I I) _is_ an infinite loop in SKI calculus
21:35:32 <Vorpal> ah
21:35:43 <Vorpal> oerjan: I can't say I ever studied SKI much
21:35:52 <Vorpal> @hoogle ap
21:35:53 <lambdabot> Prelude appendFile :: FilePath -> String -> IO ()
21:35:53 <lambdabot> System.IO appendFile :: FilePath -> String -> IO ()
21:35:53 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
21:36:13 <oerjan> it's the (e ->) monad, as usual for @pl
21:38:05 <oerjan> @pl ap x y z
21:38:05 <lambdabot> x z (y z)
21:38:10 <copumpkin> S S K (S (K (S S (S (S S K)))) K)
21:38:29 <oerjan> @pl ap ap const (ap (const (ap ap (ap (ap ap const)))) const)
21:38:29 <lambdabot> ap ap const (ap ap (ap (ap ap const)) . const)
21:38:40 <oerjan> aww
21:40:04 <oerjan> @unpl ap ap const (ap ap (ap (ap ap const)) . const)
21:40:04 <lambdabot> ((\ m n -> m >>= \ k -> n >>= \ j -> return (k j)) >>= \ e -> (\ a _ -> a) >>= \ d -> return (e d)) (\ r -> ((\ ab ac -> ab >>= \ z -> ac >>= \ y -> return (z y)) >>= \ t -> (\ ai -> ((\ au av -> au
21:40:04 <lambdabot> >>= \ as -> av >>= \ ar -> return (as ar)) >>= \ al -> (\ b _ -> b) >>= \ ak -> return (al ak)) >>= \ af -> ai >>= \ ae -> return (af ae)) >>= \ s -> return (t s)) (\ _ -> r))
21:40:07 <oerjan> argh
21:41:14 <oerjan> Vorpal: however, ap may be the only thing @pl handles which causes actual duplication during simplification, so that it can loop
21:41:36 <Vorpal> heh
21:42:00 <oerjan> @pl (\x -> x x)
21:42:00 <lambdabot> join id
21:42:06 <oerjan> @pl (\x -> x x) (\x -> x x)
21:42:10 <lambdabot> ap id id (ap id id)
21:42:10 <lambdabot> optimization suspended, use @pl-resume to continue.
21:43:11 <oerjan> @pl join join join
21:43:11 <lambdabot> join join join
21:43:20 <oerjan> bah
21:43:30 <oerjan> @pl join id (join id)
21:43:30 <lambdabot> join id (join id)
21:43:47 <oerjan> @pl ap id id (join id)
21:43:48 <lambdabot> join id (join id)
21:44:10 <oerjan> hm it's possible it only introduces join at the end of the previous simplifications
21:44:49 <oerjan> @unpl join join join
21:44:50 <lambdabot> ((\ d -> d >>= \ c -> c) >>= \ a -> a) (\ f -> f >>= \ e -> e)
21:44:58 <oerjan> @pl ((\ d -> d >>= \ c -> c) >>= \ a -> a) (\ f -> f >>= \ e -> e)
21:44:58 <lambdabot> join join join
21:45:01 <oerjan> bah
21:45:27 <oerjan> it looks like it _could_ have made join duplicate, but doesn't try
21:47:28 <oerjan> (btw none of these expressions type in actual haskell)
21:47:56 <oerjan> well
21:47:58 <oerjan> :t join join
21:47:59 <lambdabot> Occurs check: cannot construct the infinite type:
21:48:00 <lambdabot> m = (->) (m (m a))
21:48:00 <lambdabot> Probable cause: `join' is applied to too few arguments
21:48:02 <oerjan> nah
21:48:05 -!- derrik has quit (Quit: dreamzz).
21:48:18 <oerjan> :t join id
21:48:19 <lambdabot> Occurs check: cannot construct the infinite type: m = (->) (m a)
21:48:19 <lambdabot> Probable cause: `id' is applied to too few arguments
21:48:19 <lambdabot> In the first argument of `join', namely `id'
21:48:28 <oerjan> not even that
21:52:26 -!- Patashu has joined.
21:57:00 -!- Phantom_Hoover has joined.
22:23:36 <kallisti> I like there's this huge reaction of "looool stop being lazy get a job"
22:23:41 <kallisti> in response to Occupy protestors
22:24:10 <kallisti> I guess there's just
22:24:13 <kallisti> a magical job tree
22:24:21 <kallisti> that gives you a job if you /really/ want one.
22:33:39 <Phantom_Hoover> Clap your hands if you believe in jobs.
22:42:31 <quintopia> kallisti: that is my dad's view. doesn't help that all the major news outlets only show the "alternative types" and not the regular people
22:42:51 <quintopia> except for the daily show. it showed some regularish people. does that count as a major news outlet?
22:44:06 <kallisti> yes
22:44:56 <kallisti> NPR has pretty coverage of Occupy as well.
22:45:05 <kallisti> but not as much video
22:45:12 <kallisti> all audio/writing/photographs mostly
22:45:31 <kallisti> *pretty good
22:48:03 <quintopia> prett works
22:50:03 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
22:51:40 <kallisti> I don't really think Occupy will accomplish anything unless it gets more people.
22:51:48 <kallisti> in other words, if the unemployment rate goes up
22:51:52 <kallisti> and people have nothing else to do
22:51:58 <kallisti> but go protest the government
22:52:28 <Phantom_Hoover> So basically you're saying it's in Occupy's best interests to destroy the jobs of hard-working Americans everywhere?
22:53:35 <kallisti> not quite
22:53:49 <kallisti> Occupy's best interest is not to have further economic crises.
22:53:53 <kallisti> so...
22:53:56 <kallisti> no
22:54:23 <Phantom_Hoover> But this would be worsening of an existing crisis to drive home their point.
22:54:45 <kallisti> ...I guess?
22:55:16 <kallisti> I don't think Occupy should go make more people jobless
22:55:21 <kallisti> because that... makes no sense.
22:56:11 <kallisti> wow switzerland has a 2.1% unemploy rate
22:56:30 <kallisti> Signapore is 1.9
22:56:50 <kallisti> wtf Monaco is 0
22:57:58 <pikhq> Monaco has the advantage of having a population of 35,986.
22:58:10 <kallisti> indeed
22:58:20 <kallisti> but still that's amazing that /everyone/ has a job.
22:58:41 * kallisti decides to become a citizen and then FUCK UP THEIR STATS HAHAHAHAHAHAHA
22:58:50 <kallisti> also no income tax
22:58:51 <kallisti> which is badass
22:59:34 <kallisti> so basically a bunch of rich Europeans live there so they can gamble and avoid taxes.
22:59:37 <kallisti> sounds good.
23:05:12 <kallisti> as far as not-micronations
23:05:20 <kallisti> belarus has the best at 0.7%
23:05:51 <kallisti> Most of the Belarusian economy remains state-controlled[93] and has been described as "Soviet-style."[124] Thus, 51.2% of Belarusians are employed by state-controlled companies, 47.4% are employed by private Belarusian companies (of which 5.7% are partially foreign-owned), and 1.4% are employed by foreign companies.
23:06:37 <Phantom_Hoover> * kallisti decides to become a citizen and then FUCK UP THEIR STATS HAHAHAHAHAHAHA
23:06:59 <Phantom_Hoover> You realise that a) the cost of living will be huge and b) they're under no obligation to let you in.
23:07:19 <kallisti> yes
23:07:30 <kallisti> and no I actually hadn't thought about that
23:08:55 <kallisti> 1. If you are employed or have been offered to work for a Monegasque company within the principality of Monaco
23:08:58 <kallisti> If you are wanting to set up a new business in Monaco, in which case the residency will only be given once the company has been officially registered.
23:09:01 <kallisti> If you can prove that you have a certain net wealth and can leave a minimum capital balance in your Monaco account. This amount is at the discretion of the Monaco bank.
23:09:11 <kallisti> you have to meet one of those three criteria
23:09:39 -!- MDude has quit (Read error: Connection reset by peer).
23:10:03 -!- MSleep has joined.
23:17:24 <pikhq> Is that the requirements for *citizenship*?
23:17:40 <kallisti> yes
23:17:51 <pikhq> God damn.
23:17:56 <kallisti> it's /or/ not /and/
23:18:01 <kallisti> you only have to do one.
23:18:04 <pikhq> Daaamn.
23:18:29 <kallisti> "prove that you have a certain net wealth" I wonder how much that is typically
23:18:43 * Phantom_Hoover → sleep
23:19:09 -!- Phantom_Hoover has quit (Quit: Leaving).
23:19:42 <kallisti> I guess everyone is technically "employed" in Monaco because they either own a business, work for a business, or have so much money that they don't really need a job.
23:20:18 <pikhq> 'Cept there's native citizens.
23:23:19 <kallisti> Monaco's population is unusual in that the native Monegasques are a minority in their own country comprising 21.6% of the population. The largest group are French nationals at 28.4%, followed by Monegasque (21.6%), Italian (18.7%), British (7.5%), Belgian (2.8%), German (2.5%), Swiss (2.5%) and US nationals (1.2%).
23:23:41 -!- sebbu2 has changed nick to sebbu.
23:27:18 -!- pikhq_ has joined.
23:27:20 -!- pikhq has quit (Ping timeout: 240 seconds).
23:31:37 <kallisti> huh though apparently the GDP (PPP) per capita in Monaco is ranked 31st
23:32:06 <kallisti> whereas the States are 9th
23:32:48 <kallisti> oh... well
23:33:07 <kallisti> with nominal GDP per capita, Monaco ranks first (in rankings where it's actually /included/)
23:33:23 <kallisti> http://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal)_per_capita
23:34:13 <kallisti> so basically
23:34:17 <kallisti> the cost of living in Monaco is ridiculous
23:35:56 <kallisti> and Norway is apparently awesome both in terms of nominal and PPP GDP per capita.
23:36:13 <kallisti> and is also not a micro-nation
23:39:31 <kallisti> oerjan: wtf, so you've alternated between the same two prime ministers for the last 14 years or so?
23:41:54 -!- augur_ has quit (Remote host closed the connection).
23:54:20 <kallisti> http://en.wikipedia.org/wiki/Eurabia
23:54:23 <kallisti> wow this is incredibly stupid.
23:58:00 -!- ais523 has quit (Remote host closed the connection).
2011-11-23
00:03:14 <oerjan> kallisti: bondevik and stoltenberg? i guess it's been about that long. bondevik is retired though, so it's not likely to repeat
00:03:44 <oerjan> erna solberg is the most likely conservative side candidate at the moment
00:09:03 <oerjan> for stoltenberg it's logical, he's the leader of norway's largest party
00:09:54 <oerjan> bondevik on the other hand was leader of a small one, he just had unusual abilities to get much of the right wing side to cooperate
00:12:08 <kallisti> ah
00:14:14 <kallisti> is Norwegian politics good?
00:14:18 <kallisti> is stoltenberg good?
00:14:38 <oerjan> also, at the time it looks like the right wing are likely to take over next election. still two years until that, though
00:14:54 <oerjan> assuming they can find _some_ way to agree :P
00:16:31 <oerjan> (the progressive party is fairly unpopular with the two smallest right wing parties, although they seem to have realized they're unlikely to get into government again without them)
00:18:24 <oerjan> well "good"? it's rather peaceful.
00:19:17 <oerjan> stoltenberg is somewhat "technocratic", he's a social economist
00:21:57 <kallisti> good good
00:22:01 <kallisti> all hail technocratic order
00:23:24 <kallisti> American politics kind of works like this: AAAAAAAAAAAHRRRRRRRGGGGGHHHHHHHHHRRRRRRRHHHHHRRRRHHHHGGGGGUUURGLEAAAAAARGHHHHAHAHHHARHARHRRHHARHARAKGAKRKAG
00:23:34 <oerjan> ic
00:25:44 <kallisti> yes
00:25:52 <kallisti> you may be surpirsed to learn this
00:25:59 <kallisti> but it is essentially to understanding what's going on.
00:26:09 <oerjan> even the progressive party isn't much that way in norway any longer
00:26:23 <oerjan> (they're trying to appear responsible so they can get into government)
00:26:28 <kallisti> that's because Norway's economy is good.
00:26:37 <kallisti> (???)
00:26:45 <oerjan> yeah i'm sure that helps
00:27:04 <kallisti> though even when the economy is good in the US it's AAAAAAARGGHHHHHGURGLE
00:27:14 <kallisti> lots of loud angry people.
00:27:15 <oerjan> we're still worried about everyone south of us collapsing, though. bad for exports.
00:27:24 <kallisti> ah yes.
00:27:37 <kallisti> just export to different places yes. :P
00:28:11 <oerjan> well it doesn't help that china _still_ doesn't want to talk to us after last year's nobel prize
00:28:33 <kallisti> hahahahahahaha
00:29:13 <kallisti> it must be complicated being the prize-giving country.
00:29:24 <kallisti> who do you give the prizes too? complex question.
00:29:47 <oerjan> yeah. maybe if sweden could give the literature prize to them next year, it'll take some heat off us
00:30:06 <oerjan> or maybe they'll just give up on scandinavia overall
00:30:22 <kallisti> also wait what are they mad about?
00:30:46 <oerjan> about the peace prize going to a chinese dissisent who was at the time in _jail_...
00:30:50 <oerjan> *dissident
00:31:21 <kallisti> oh right
00:31:27 <kallisti> I forgot about that.
00:32:12 <oerjan> i heard there was a little optimism though, apparently a norwegian and chinese minister got seated together recently for lunch/dinner at some conference, iirc
00:32:22 <oerjan> and actually talked
00:32:25 <kallisti> "sheesh Nobel people let us be a communist police state if we want to"
00:32:39 <kallisti> oh good
00:33:07 <kallisti> "hey China, we're sorry you're bad at human rights and we awarded the guy that you wanted to keep quiet for being so awesome."
00:34:10 <kallisti> (this is obvious how the conversation went)
00:34:14 <kallisti> +ly
00:35:59 <oerjan> i read that the chinese had added stupid restrictions so that norwegian salmon, which previously could get from norway to chinese restaurants in just a day or two, now takes 8 days
00:36:13 <kallisti> looool
00:36:22 <kallisti> now all the salmon tastes bad in China.
00:36:26 <oerjan> yeah
00:37:25 <kallisti> some of the physics and chemistry prizes are more impressive some years than others.
00:37:34 <oerjan> you don't say
00:37:35 -!- augur has joined.
00:37:43 <kallisti> like the 2009 one is kind of boring for physics
00:38:01 <kallisti> and supernovae aren't really that awesome but quasicrystals FUCK YEAH THAT'S LIKE NEW SHIT
00:38:47 <oerjan> erm the supernovae were awesome, they showed that the universe is _accelerating_
00:39:13 <kallisti> nah that's boring. QUADICRYSTALS
00:39:16 <kallisti> *S
00:39:22 <oerjan> when all intuition about gravity as well as previous theories say it should be slowing down
00:39:54 <kallisti> ah that's good
00:40:02 <kallisti> I like when scientists use intuition and are wrong. :>
00:40:40 -!- derdon has quit (Remote host closed the connection).
00:40:58 <kallisti> In 1964 Jean-Paul Sartre was awarded the Literature Prize but refused, stating, "A writer must refuse to allow himself to be transformed into an institution, even if it takes place in the most honourable form."
00:41:02 <kallisti> what a dick.
00:41:30 <kallisti> existential dick.
00:42:37 <oerjan> it _has_ been said that getting the literature prize is bad for your future writing, though
00:43:00 -!- MSleep has changed nick to MDude.
00:44:16 <kallisti> hmmm in what way?
00:44:32 <kallisti> as in
00:44:39 <kallisti> bad for your writing style
00:44:42 <kallisti> or bad for your popularity?
00:45:25 <oerjan> bad for your writing style, i think
00:51:02 <kallisti> they should have other categories.
00:51:05 <kallisti> like mathematics!
00:52:24 <kallisti> journalism would be a good category.
00:53:39 <oerjan> well, norway tried to make something like that with the abel prize.
01:02:24 <kallisti> I'm kind of confused about Barack Obama and the Nobel Peace Prize
01:02:34 <kallisti> did he get it because... he wasn't George Bush?
01:03:06 <oerjan> and black.
01:03:53 <kallisti> and tolerant of Muslims I guess?
01:03:56 <kallisti> huh, okay
01:04:01 <kallisti> but he didn't really do anything.
01:04:23 <kallisti> he just wins an award for existing and becoming US president. Congratulations!
01:04:28 <oerjan> you do realize norwegians were just as puzzled as americans about it, right? :P
01:05:39 <oerjan> it may just be a result of Thorbjørn Jagland's (nobel committee leader, former prime minister) natural disaster attracting capability
01:05:57 <kallisti> ah okay.
01:06:04 <kallisti> it's that weird o in his name probably.
01:06:17 <kallisti> it's like a mystic spell.
01:06:27 <kallisti> ancient nordic pagan magic.
01:06:41 <oerjan> see: how he lost his prime ministership; last year's prize
01:06:59 <kallisti> maybe he just likes controversial prizes.
01:07:07 <oerjan> maybe.
01:07:10 <kallisti> also maybe much wasn't going on in Peace in 2009?
01:07:48 <oerjan> hm i guess i've forgotten if there was anything
01:09:07 <kallisti> Several Nobel Laureates have commented: Former Soviet leader Mikhail Gorbachev (winner 1990), gave his congratulations,[55] Bangladeshi economist Muhammad Yunus, (co-winner 2006 prize), said the committee's award was "an endorsement of [Obama] and the direction he is taking."
01:09:21 <kallisti> so yeah they just like him for existing and not being a shitty US president.
01:10:17 <kallisti> good job Obama! you've changed public relations across the world by not being George Bush.
01:11:07 <kallisti> In Europe, French President Nicolas Sarkozy said the award would reinforce Obama's determination to work for justice and peace. He added that the award "finally confirms the return of America in the hearts of all the peoples of the world"
01:11:12 <kallisti> America!! Fuck yeah!!
01:12:26 -!- pikhq has joined.
01:12:32 -!- pikhq_ has quit (Ping timeout: 248 seconds).
01:12:33 <kallisti> Taliban spokesman Zabiullah Mujahid said the decision was ridiculous, saying, "The Nobel prize for peace? Obama should have won the 'Nobel Prize for escalating violence and killing civilians.'"
01:12:37 <kallisti> ha. ha. ha. the irony.
01:13:46 <oerjan> on the plus side, afaict jagland hasn't actually managed to ruin the council of europe yet. in fact russia even ratified the recent reforms...
01:17:08 <kallisti> help I am not know Eurolitics
01:18:11 <oerjan> council of europe is an organization which has most european countries as members; it's most important part is the european court of human rights which upholds the european human rights convention
01:18:16 <kallisti> wtf why is Japan a candidate for membership of the council of Europe?
01:18:20 <oerjan> *its
01:18:24 <kallisti> or is it like... candidate to be observer?
01:18:25 <oerjan> it is?
01:19:01 <kallisti> oh
01:19:01 <kallisti> nevermind
01:19:04 <kallisti> I'm colorblind
01:19:15 <kallisti> I thought it was red on the map but it's orange so it's an observerer.
01:20:35 <kallisti> OH HO LETS SEE WHAT XKCD SUCKS HAS TO SAY ABOUT THE NEW XKCD
01:20:38 <kallisti> oh, nothing yet.
01:22:48 <kallisti> also wtf the anthem for the Council of Europe is Ode to Joy?
01:23:13 <kallisti> come on. that's the worst thing ever.
01:23:45 * oerjan swats kallisti -----###
01:23:47 <oerjan> IS NOT
01:24:05 <kallisti> no it's bad.
01:24:10 <kallisti> Beethoven had better stuff.
01:24:24 * oerjan hits kallisti with the saucepan ===\__/
01:24:30 <tswett> "This set is among the smallest sets ever found."
01:24:42 <tswett> Rather silly when taken out of context.
01:24:50 <kallisti> DUN DUN DUN DUN DUN DUN DUN DUN DUN DUN DUN DUN /DUN/.. DUNDUN
01:24:52 <tswett> "Hey guys! We just discovered a set that has TWO ELEMENTS!"
01:24:56 <kallisti> -- Ode to Joy
01:25:03 <tswett> "Holy shit! Only two? How does it work?"
01:26:43 <kallisti> oerjan: it's mostly just quarter notes and it's in the completely lame key of D major
01:26:50 <kallisti> also: I had to play it a lot in middle school band so now I hate it.
01:28:05 <oerjan> ah childhood abuse, i understand now.
01:28:08 <kallisti> I guess it's not bad with a choir
01:28:14 <kallisti> the POWER OF THE HUMAN VOICE
01:28:20 <kallisti> kind of makes it a more moving piece
01:29:46 <kallisti> and it's all triumphant and grand
01:30:05 <kallisti> "FUCK YEAH JOY"
01:30:38 <kallisti> *confetti* *angels*
01:31:07 <kallisti> -- Ode to Joy
01:31:47 -!- Darth_Cliche has joined.
01:32:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:34:31 <kallisti> mmm pumpkin pie
01:34:57 <pikhq> "Ode to Joy" is just a selection of a part of a symphony, dunno why it's played so much.
01:35:22 <pikhq> Also, *technically* any country could join the Council of Europe.
01:35:30 <pikhq> If the Council of Europe deems a country European, it is.
01:35:36 <kallisti> Zimbabwe
01:35:48 <pikhq> Hypothetically? Yes.
01:36:15 <kallisti> russia is kind of European
01:36:21 <kallisti> culturally
01:36:35 <pikhq> The majority of the population of Russia is in Europe.
01:37:19 <kallisti> right
01:37:36 <kallisti> Russia is the largest country in the world, covering more than one eighth of the Earth's inhabited land area.
01:37:39 <kallisti> that's so insane.
01:43:40 -!- Jafet has quit (Quit: Leaving.).
01:43:59 -!- augur has quit (Remote host closed the connection).
01:49:01 <Gregor> <tswett> "Holy shit! Only two? How does it work?" // just - like - magnets
01:49:32 <tswett> Gregor: so it's Magic Got It?
01:49:33 <oerjan> kallisti: and it used to be even larger...
01:50:28 <oerjan> magic nets, obviously
01:51:18 <kallisti> I think the EU is cheating.
01:51:25 * oerjan realizes that nearly half his life is _after_ the soviet union dissolved
01:51:33 <kallisti> by having a larger GDP when it's not really a country.
01:52:03 <kallisti> cheaters
01:52:34 <oerjan> "With an area of 22,402,200 square kilometres (8,649,500 sq mi), the Soviet Union was the world's largest state. Covering a sixth of the Earth's land surface, its size was comparable to that of North America."
01:56:51 <kallisti> http://en.wikipedia.org/wiki/File:EU_belief_in_God.svg
01:56:52 <kallisti> compare to
01:57:03 <kallisti> A 2008 survey of 1,000 people concluded that, based on their stated beliefs rather than their religious identification, 70% of Americans believe in a personal God, roughly 12% of Americans are atheist or agnostic, and another 12% are deistic (believing in a higher power/non-personal God, but no personal God).
01:57:25 <kallisti> ...1000 isn't a very large population size
01:57:50 * shachaf believes in an impersonal, mass-produced god.
01:58:48 <kallisti> Gallup International indicates that 41%[56] of American citizens report they regularly attend religious services, compared to 15% of French citizens, 10% of UK citizens,[57] and 7.5% of Australian citizens.
01:58:53 <kallisti> GODLESS EUROPEANS
01:59:01 <kallisti> NO VALUES.
02:00:14 <oerjan> australians are not european. just saying.
02:00:31 <kallisti> I wasn't talking about them
02:00:41 <kallisti> BUT THEY TOO ARE GODLESS
02:00:43 <kallisti> EVEN MORE SO
02:00:45 <kallisti> SHAMEFUL
02:01:14 <kallisti> http://en.wikipedia.org/wiki/File:Church_or_synagogue_attendance_by_state_GFDL.svg
02:01:29 <kallisti> I live in the orange thing inside that big patch of red.
02:01:32 <kallisti> red for danger.
02:01:38 <oerjan> well the australians are probably substituting with sacred activities such as beach surfing and bbq
02:03:03 <shachaf> Germany: Putting the Gödel back into Godless Europeans.
02:04:45 <oerjan> and of course crocodile wrestling
02:06:42 -!- copumpkin has joined.
02:13:22 -!- Lymia has changed nick to Madoka-Kaname.
02:15:56 -!- Darth_Cliche has quit (Read error: Connection reset by peer).
02:16:17 -!- Darth_Cliche has joined.
02:18:41 -!- calamari has joined.
02:21:12 -!- Darth_Cliche has quit (Read error: Connection reset by peer).
02:21:40 -!- Darth_Cliche has joined.
02:23:42 -!- Darth_Cliche has quit (Client Quit).
02:25:44 -!- augur has joined.
02:26:57 -!- pikhq_ has joined.
02:27:16 -!- pikhq has quit (Ping timeout: 258 seconds).
02:32:38 -!- augur has quit (Remote host closed the connection).
03:04:21 <Gregor> NetBSD: Still installing.
03:27:20 <quintopia> anyone here know the TeX equivalent of <blockquote>?
03:27:39 <quintopia> i know i used to know this
03:28:11 <oerjan> \begin{quote} or was that just for literate haskell...
03:28:29 <oerjan> oh, that was code
03:28:31 <oerjan> iirc
03:29:09 <oerjan> (inb4 zzo: that's latex, not tex)
03:29:16 <quintopia> zzo is not here
03:29:24 <oerjan> whew
03:51:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
03:55:17 -!- Sgeo has joined.
03:55:40 -!- augur has joined.
04:08:57 -!- Sgeo has quit (Ping timeout: 240 seconds).
04:25:20 -!- Jafet has joined.
04:34:06 <Gregor> NETBSD: STILL BLOODY INSTALLING
04:34:53 <oerjan> a net drain on resources
04:40:47 -!- Sgeo has joined.
04:47:59 -!- GreaseMonkey has joined.
05:10:58 -!- SgeoN1 has joined.
05:13:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:14:53 -!- Sgeo has joined.
05:19:17 -!- sebbu2 has joined.
05:19:17 -!- sebbu2 has quit (Changing host).
05:19:17 -!- sebbu2 has joined.
05:19:33 <kallisti> http://horrorchan.com/post/8846627981/chip-chan
05:19:38 <kallisti> this is so fucking weird and sad.
05:22:09 -!- sebbu has quit (Ping timeout: 240 seconds).
05:25:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:28:42 -!- Sgeo has joined.
05:33:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:33:57 -!- Nisstyre has quit (Ping timeout: 258 seconds).
05:34:53 -!- Sgeo has joined.
06:06:10 -!- quintopia has quit (Read error: Operation timed out).
06:07:45 -!- quintopia has joined.
06:09:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
06:10:49 -!- Sgeo has joined.
06:21:22 -!- MDude has changed nick to MSleep.
06:35:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
06:36:25 <kallisti> @tell elliott here's Gravity Well but I can't get it to work via Wine http://www.tucows.com/preview/289104
06:36:25 <lambdabot> Consider it noted.
06:37:04 -!- Sgeo has joined.
06:54:54 <fizzie> The 'quote' environment does indent a bit, on both sides.
07:14:23 -!- GreaseMonkey has quit (Quit: The Other Game).
07:33:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
07:34:29 -!- Sgeo has joined.
07:39:21 -!- Sgeo has quit (Ping timeout: 240 seconds).
07:40:49 -!- Sgeo has joined.
07:48:15 -!- SgeoN1 has quit (Quit: Bye).
07:51:13 -!- augur has quit (Ping timeout: 252 seconds).
08:01:39 -!- augur has joined.
08:14:53 * Sgeo learns that monqy likes Crawl
08:16:18 <Vorpal> hi
08:17:17 -!- augur has quit (Ping timeout: 276 seconds).
08:22:15 <monqy> Sgeo: no
08:22:20 <monqy> Sgeo: haven't you learned: I don't
08:22:23 <monqy> Sgeo: I just hang out there
08:22:58 <monqy> Sgeo: I don't actually play crawl. it's kind of like how ais hangs out in ##crawl-dev and I don't think he plays crawl either??
08:23:55 <monqy> so it's less that I like crawl and more that I like ##crawl
08:24:00 <oerjan> ...in which we learn that no one actually plays crawl any longer, they just stay because of the nice community
08:24:23 <monqy> for some value of nice
08:24:49 <oerjan> well we cannot expect #esoteric standards, of course
08:25:01 <monqy> naturally
08:27:21 -!- calamari has quit (Quit: Leaving).
08:27:51 <shachaf> Does anyone here do anything with esoteric languages?
08:27:58 <monqy> whats that
08:27:58 * shachaf doesn't even pretend to.
08:28:28 <oerjan> it happens
08:29:00 <oerjan> elliott is still trying to improve his funge98 in haskell interpreter
08:29:35 <shachaf> zomg $ tr '12345678' '+-<>[],.' | bf
08:29:40 * shachaf invents new esolang.
08:30:07 <oerjan> you're in luck, Phantom_Hoover isn't here
08:30:22 <oerjan> you may still have a slight chance of surviving
08:31:28 <kallisti> shachaf: I've currently got two ideas for esoteric programming languages and one sort-of-but-not-very-esoteric language with a partially written spec.
08:31:36 -!- augur has joined.
08:31:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:31:57 <shachaf> oerjan: But look at my innovative syntax!
08:32:31 <kallisti> shachaf: also is that the fabled hasksh
08:32:38 <kallisti> or hask--sh!
08:32:43 <oerjan> bah, it's even context-free, how innovative is that
08:32:46 <kallisti> in formal contexts
08:32:48 <kallisti> such as weddings
08:32:56 <monqy> hask sh wedding
08:33:01 -!- Sgeo has joined.
08:33:07 <shachaf> kallisti: No, i's regularsh.
08:33:26 <kallisti> hmmm ah
08:33:37 <kallisti> the only thing that was throwing me off was the standalone $
08:34:10 <monqy> zomg $ must be the propmt
08:34:15 <kallisti> ah
08:34:47 <kallisti> wow I sure am lazy!
08:34:56 <monqy> oh no
08:34:59 <shachaf> monqy: $ is the prompt, "zomg" is an exclamation.
08:35:07 <monqy> good
08:35:14 <monqy> because zomg $ would be a bad prompte
08:37:00 <kallisti> monqy: you zen master programmer yet?
08:37:03 <kallisti> that you?
08:37:04 <kallisti> ???
08:37:07 <kallisti> >
08:37:08 <monqy> that me?
08:37:11 <kallisti> ye
08:37:15 <monqy> <
08:37:23 <kallisti> ,ye
08:37:30 <monqy> q
08:37:38 <monqy> what is zen master programmer
08:37:49 * kallisti
08:37:59 <Vorpal> speaking of prompts: do you use coloured or monochrome prompts?
08:38:19 <monqy> monochromme
08:38:27 <Vorpal> personally I use a coloured prompt, because it easily stands out in the scrollback.
08:38:39 <Vorpal> PS1="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] "
08:38:44 <monqy> maybe I'd like a colored prompt, but i really don't care enough to do one
08:38:52 <Vorpal> well there you have one
08:38:55 <shachaf> PS1='C:\>'
08:39:00 <Vorpal> actually do it with single quotes
08:39:04 <kallisti> Vorpal: is it rainbow prompt?
08:39:20 <monqy> my simple prompte: PS1='[\u@\h \w]\$ '
08:39:21 <kallisti> I don't speak ANSI very well
08:39:23 <Vorpal> kallisti: nah, it is just green for user@host then blue for path and the $
08:39:30 <Vorpal> I use a red prompt for root
08:39:47 <Vorpal> which is just hostname in red then path and $ in blue
08:39:50 <kallisti> echo $PS1
08:39:51 <kallisti> \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
08:39:54 <kallisti> default Ubuntu prompt
08:39:58 <monqy> crazy
08:40:09 <Vorpal> export PS1="\[\033[01;31m\]\h\[\033[01;34m\] \w \$\[\033[00m\] " is from root's .bashrc
08:40:52 <kallisti> I think it's time
08:40:55 <kallisti> to smoke the hookah
08:40:57 <kallisti> with the stuff
08:40:59 <kallisti> that I bought
08:41:04 <kallisti> yes
08:41:06 <kallisti> >)
08:41:12 <Vorpal> btw if behaviour of ! in bash ever annoyed you, add "set +H" (without quotes) to your .bashrc
08:41:30 <Vorpal> it turns off the crazy behaviour of !
08:42:06 -!- monqy has quit (Quit: hello).
08:42:36 <kallisti> the brand is Moassel Ayam Zaman and the flavor is called 1001 Nights
08:42:43 <kallisti> it's supposed to be more like traditional shisha
08:42:56 <kallisti> also it was stupid expensive so it better be good
08:42:59 <kallisti> or I will send angry emails
08:43:01 <kallisti> (I won't)
08:43:59 <kallisti> arabic sure is a pretty script.
08:44:38 <kallisti> it kind of looks like what stereotypical alien language script looks like.
08:45:16 -!- oerjan has quit (Quit: Good night).
08:45:22 <kallisti> oerjan: night
08:45:31 <shachaf> Vorpal$ echo "But I love that behavior!"
08:45:34 <shachaf> Oops.
08:45:39 <shachaf> Let me escape that.
08:45:44 <shachaf> Wait, what happened to my history?
08:47:28 -!- pikhq has joined.
08:47:45 -!- pikhq_ has quit (Ping timeout: 244 seconds).
08:48:00 -!- Sgeo has quit (Ping timeout: 248 seconds).
08:50:50 <Vorpal> <shachaf> Wait, what happened to my history? <-- that is what ! does ...
08:51:04 * shachaf looked up: help
08:51:12 <kallisti> ha, ha, get it.
08:51:14 <kallisti> good joke.
08:52:04 -!- Sgeo has joined.
08:55:41 <fizzie> I used to have a real colorful prompt, but I haven't bothered to keep it so now it's just the default. Though I don't really know what's up with this default '\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ ' nonsense, it looks just like the plain '\u@\h:\w\$ ' part.
08:56:58 <shachaf> fizzie: The first part is setting the terminal's title.
08:57:17 <fizzie> Ah, right; couldn't remember what esc-]0; was.
08:58:22 <Vorpal> I don't know why they try to match escape codes with \] btw, but it seems to matter, or readline gets fucked up if your input causes a line wrap
08:59:18 <fizzie> Seems I've used PS1="[\t] \[\e[1;34m\]\u@\h \[\e[1;32m\]\w \[\e[1;37m\]\$ \[\e[0m\]" in some bygone age. Bluh.
08:59:37 <Vorpal> what does that do?
08:59:47 <Vorpal> oh timestamp
08:59:49 <Vorpal> right
08:59:57 <Vorpal> doesn't look too bad
08:59:57 <fizzie> Well, it's not that far from yours, except with swapped colors and the timestamp.
09:00:06 <fizzie> And a differently colored $.
09:00:13 <Deewiant> export PS1="[$CYAN%D{%F} :: %D{%T}$NORMAL] $GOLD%n$NORMAL@$GOLD%m $GREEN%~$NORMAL
09:00:16 <Deewiant> $ "
09:00:19 <Vorpal> I think mine is based on gentoo's default prompt around 2004 but with some changes
09:00:21 <Deewiant> I'm all literate.
09:00:22 <shachaf> PS1="1:$PS1"
09:00:37 <Vorpal> Deewiant: what does echo "$PS1" output?
09:00:44 <Vorpal> because that is useless without the rest of your file
09:00:57 <Deewiant> Vorpal: It outputs in colour, that can't be copied.
09:01:10 <Vorpal> Deewiant: huh echo $PS1 here doesn't output in colour
09:01:14 <Deewiant> Vorpal: zsh.
09:01:17 <Vorpal> ah
09:01:22 <Vorpal> well, can't test it anyway then
09:01:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
09:02:10 <fizzie> That's a long timestamp.
09:02:19 <Vorpal> hm?
09:02:25 <Deewiant> (The colour codes are: normal = 0, green = 32, cyan = 36, gold = 33, yellow = 33, magenta = 35)
09:02:27 <Vorpal> your prompt, yes
09:02:29 <fizzie> [yyyy-mm-dd :: HH:MM:SS], in Deewiant's.
09:02:32 <Vorpal> oh right
09:03:09 -!- Sgeo has joined.
09:03:46 <fizzie> Some people use two-line prompts and stuffs.
09:03:57 <Vorpal> I have seen that, never liked it
09:03:58 <Deewiant> Mine is two-line.
09:04:08 <Vorpal> oh, %n is a newline?
09:04:14 <Deewiant> No, the line break is a newline.
09:04:16 <fizzie> Oh, that's what the raw newline was about.
09:04:17 <Vorpal> bbl, university
09:04:51 <Deewiant> First line is essentially "[timestamp] user@host pwd" and the second is just "$ "
09:05:19 <fizzie> Right. I just concatenated them when testing, didn't realize the newline was intentional.
09:06:39 -!- augur has quit (Read error: Connection reset by peer).
09:07:06 -!- augur has joined.
09:07:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
09:11:44 -!- Sgeo has joined.
09:30:08 <kallisti> holy crap
09:30:12 <kallisti> I am lightheaded now.
09:30:14 <kallisti> hello
09:30:17 <kallisti> 𐎣𐎠𐎼𐎿𐏃𐎠
09:42:07 <kallisti> In chemistry alcohol can refer to more than ethyl alcohol. Methyl (wood) alcohol is poisonous.
09:42:16 <kallisti> poisonous as opposed to...?
10:00:44 -!- kmc has quit (Quit: Leaving).
10:07:14 <Vorpal> hi
10:10:33 <oklopol> not poisonous
10:11:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
10:12:53 -!- Slereah_ has joined.
10:13:11 <kallisti> oklopol: right but in the context of ethyl alcohol...
10:14:04 -!- Slereah has quit (Ping timeout: 245 seconds).
10:14:59 -!- Sgeo has joined.
10:16:07 <kallisti> Sgeo: hi
10:16:17 <kallisti> Slereah_:
10:16:18 <kallisti> hi
10:18:01 <kallisti> `ls logs
10:18:08 <HackEgo> ls: cannot access logs: No such file or directory
10:18:12 <kallisti> `ls
10:18:14 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom \ x
10:18:31 <kallisti> `ls share
10:18:32 <HackEgo> units.dat
10:18:42 <kallisti> `ls /
10:18:43 <HackEgo> bin \ dev \ etc \ hackenv \ home \ lib \ lib64 \ opt \ proc \ sbin \ sys \ tmp \ usr \ var
10:18:53 * kallisti though hackego had logs on it
10:19:16 <kallisti> `fetch http://codu.org/logs/_esoteric/2011-11-23-raw.txt
10:19:19 <HackEgo> 2011-11-23 10:19:19 URL:http://codu.org/logs/_esoteric/2011-11-23-raw.txt [53284/53284] -> "2011-11-23-raw.txt" [1]
10:19:21 -!- Sgeo has quit (Ping timeout: 240 seconds).
10:20:03 <Vorpal> kallisti, why?
10:20:17 <Vorpal> `ls bin
10:20:19 <HackEgo> ​? \ @ \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto \ translateto \ units \ url \ welcome \ wl \ word \ wtf
10:20:27 <Vorpal> `url bin/log
10:20:29 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/log
10:20:44 <Vorpal> so logs are available in /var/irclogs/_esoteric
10:20:46 <kallisti> that's a weird place to put logs but okay
10:20:56 <Vorpal> `rm "2011-11-23-raw.txt"
10:20:58 <HackEgo> rm: cannot remove `"2011-11-23-raw.txt"': No such file or directory
10:20:59 <kallisti> (bin/log that is
10:21:00 <kallisti> )
10:21:06 -!- Sgeo has joined.
10:21:08 <kallisti> Vorpal: sheesh calm down I was going to delete it once I was done.
10:21:09 <kallisti> :P
10:21:12 <Vorpal> kallisti, ... bin/log is a script
10:21:23 <Vorpal> `log kallisti
10:21:40 <Vorpal> hm
10:21:47 <kallisti> takes a while
10:21:51 <Vorpal> definitely
10:21:53 <HackEgo> 2011-11-22.txt:00:45:46: <kallisti> also def
10:21:56 <Vorpal> `log kallisti
10:21:58 <kallisti> also: def
10:22:02 <Vorpal> should be faster now
10:22:06 <HackEgo> 2011-11-22.txt:06:41:40: <elliott> kallisti: basically the player behind the ship keeps playing for ten seconds and you have to get in range and aim it
10:22:06 <Vorpal> cached and so on
10:26:41 <kallisti> `run cat '/var/irclogs/_esoteric/2011-11-23-raw.txt' | perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:26:44 <HackEgo> Sgeo 179; augur 85; 53; pikhq 47; Darth_Cliche 47; pikhq_ 13; sebbu2 7; Slereah_ 3; Jafet 3; copumpkin 3; SgeoN1 2; quintopia 2; calamari 2; GreaseMonkey 1; kallisti 1;
10:27:30 <kallisti> `run cat '/var/irclogs/_esoteric/2011-11-22-raw.txt' | perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:27:31 <augur> O_O
10:27:32 <HackEgo> copumpkin 610; Jafet 399; GreaseMonkey 357; Madoka-Kaname 303; ineiros 252; derdon 245; DCliche 234; Phantom_Hoover 232; monqy 196; new2net 165; kmc 144; myndz\ 115; derrik 93; pkzip 89; pikhq 73; Darth_Cliche 72; pikhq_ 70; Lymee 53; MSleep 50; ais523 42; augur 42; oerjan 37; Ngevd 36; Phantom__Hoover 31; augur_ 26; 21; sebbu2 15; MDude 11; derrik_ 6; Slereah 3; FireFly 3; aloril 2; Lymia 2; Sgeo 2; Patashu 1; Nisstyre 1;
10:28:44 <Vorpal> kallisti, what are you measuring?
10:28:48 <kallisti> number of joins
10:28:57 <Vorpal> and the first time?
10:29:03 <kallisti> same thing.
10:29:09 <kallisti> first one is today second is yesterday
10:29:14 <Vorpal> ah
10:29:21 <Vorpal> according to what timezone?
10:29:28 <kallisti> the... logs
10:29:33 <kallisti> whatever that one is. UTC?
10:29:47 <Vorpal> clog is in some weird US timezone I know
10:32:03 <Vorpal> I'm sleepy and I'm at university and I have a lecture in 1.5 hours
10:32:21 <kallisti> are you the giving or receiving partner of this lecture.
10:32:32 <Vorpal> I'm a student so...
10:32:41 <kallisti> ah
10:32:55 <Vorpal> actually two lectures, each taking two hours
10:33:01 <kallisti> I think I have some kind of weird delusion that some people on this channel are like professors or something.
10:33:06 <Vorpal> right after each other
10:33:16 <kallisti> Dr. Monqy
10:33:42 <Vorpal> really?
10:33:51 <kallisti> I mean not really no.
10:33:54 <Vorpal> ah
10:35:21 <kallisti> `run cat '/var/irclogs/_esoteric/2011-11-23-raw.txt' | perl -n -e '/:(.*?)!\w+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:35:29 <HackEgo> 474;
10:35:32 <kallisti> .....
10:35:41 <kallisti> yes of course.
10:35:53 <kallisti> `run cat '/var/irclogs/_esoteric/2011-11-23-raw.txt' | perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:35:58 <HackEgo> Sgeo 206; augur 67; 53; pikhq_ 41; derdon 38; copumpkin 15; calamari 12; monqy 8; oerjan 6; Darth_Cliche 6; sebbu2 5; Jafet 4; pikhq 3; kmc 3; Slereah_ 2; GreaseMonkey 2; SgeoN1 2; quintopia 2; Slereah 1; sebbu 1; Nisstyre 1;
10:36:16 <Vorpal> kallisti, your code is suffering from UUOC
10:36:35 <kallisti> oh wait PART isn't actually an IRC command is it.
10:36:39 <kallisti> also what is UUOC
10:36:44 <Vorpal> useless use of cat
10:37:04 <Vorpal> kallisti, and afaik PART is an irc command, but maybe no one parted?
10:38:15 <kallisti> oh, I just use cat because I'm more prone to fuck up if I don't
10:38:15 <shachaf> kallisti: Sure it is.
10:38:15 <shachaf> Vorpal: That's not a useless use of cat.
10:38:15 <shachaf> Vorpal: It's more readable than using <
10:38:15 <Vorpal> `run perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}' < /var/irclogs/_esoteric/2011-11-23-raw.txt
10:38:15 <HackEgo> Sgeo 212; augur 67; 53; pikhq_ 41; derdon 38; copumpkin 15; calamari 12; monqy 8; oerjan 6; Darth_Cliche 6; sebbu2 5; Jafet 4; pikhq 3; kmc 3; Slereah_ 2; GreaseMonkey 2; SgeoN1 2; quintopia 2; Slereah 1; sebbu 1; Nisstyre 1;
10:38:15 <Vorpal> shachaf, no it isn't
10:38:15 <augur> ENOUGH OF THIS
10:38:15 <kallisti> well I could even just pass it in as an argument to perl
10:38:15 <Vorpal> shachaf, and it spawns an extra process
10:38:15 <Vorpal> kallisti, sure, I'm no perl expert
10:38:17 <Vorpal> shachaf, cat is useless unless used interactively to dump a file to your terminal or to *concatenate* files.
10:38:19 <shachaf> Vorpal: Oh no! Amidst this paragon of efficiency, this beautifully-optimized log-searching machine, a traitor!
10:38:25 <kallisti> -n basically says "loop through lines from files passed as command arguments or stdin"
10:38:46 <shachaf> Vorpal: I like to read command lines left-to-right. generate-things | do-things-to-things | output-things and so on.
10:39:00 <kallisti> shachaf: dude perl is the most optimized of the languages.
10:39:04 <shachaf> "cat foo" is a great way to say "generate the contents of this file"
10:40:06 <kallisti> (yes languages, not implementations)
10:40:06 <kallisti> anyway this conversation is silly :P
10:40:06 <shachaf> I don't care that it spawns an extra process. If I was worrying about efficiency I'd be doing something else.
10:40:06 <kallisti> I wonder if there's an easier way to say "sort in descending order" than sort {$b <=> $a} @blah
10:40:06 <Vorpal> `run dd if=/var/irclogs/_esoteric/2011-11-23-raw.txt of=/dev/stdout | perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:40:06 <HackEgo> 127+1 records in \ 127+1 records out \ 65070 bytes (65 kB) copied, 0.008997 s, 7.2 MB/s \ Sgeo 229; augur 67; 53; pikhq_ 41; derdon 38; copumpkin 15; calamari 12; monqy 8; oerjan 6; Darth_Cliche 6; sebbu2 5; Jafet 4; pikhq 3; kmc 3; Slereah_ 2; GreaseMonkey 2; SgeoN1 2; quintopia 2; Slereah 1; sebbu 1; Nisstyre 1;
10:40:06 <Vorpal> eh, almost :P
10:40:21 <shachaf> Vorpal: Look, cat is a very standard read-file tool.
10:41:05 <Vorpal> `run dd if=/var/irclogs/_esoteric/2011-11-23-raw.txt of=/dev/stdout status=noxfer | perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:41:05 <shachaf> It's not making things more complicated. Everyone knows what cat means.
10:41:05 <HackEgo> 130+1 records in \ 130+1 records out \ Sgeo 237; augur 67; 53; pikhq_ 41; derdon 38; copumpkin 15; calamari 12; monqy 8; oerjan 6; Darth_Cliche 6; sebbu2 5; Jafet 4; pikhq 3; kmc 3; Slereah_ 2; GreaseMonkey 2; SgeoN1 2; quintopia 2; Slereah 1; sebbu 1; Nisstyre 1;
10:41:05 <Vorpal> hm...
10:41:05 <kallisti> I like how this debate is completely ridiculous
10:41:05 <kallisti> :P
10:41:05 <shachaf> kallisti: Vorpal isn't the first person to bring up this annoying point.
10:41:05 <Vorpal> `run dd if=/var/irclogs/_esoteric/2011-11-23-raw.txt of=/dev/stdout 2>/dev/null | perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:41:05 <Vorpal> that should work
10:41:05 <HackEgo> Sgeo 237; augur 67; 53; pikhq_ 41; derdon 38; copumpkin 15; calamari 12; monqy 8; oerjan 6; Darth_Cliche 6; sebbu2 5; Jafet 4; pikhq 3; kmc 3; Slereah_ 2; GreaseMonkey 2; SgeoN1 2; quintopia 2; Slereah 1; sebbu 1; Nisstyre 1;
10:41:05 <kallisti> ah it has a long grudgeful history
10:41:05 <Vorpal> yeah
10:41:08 <Vorpal> kallisti, indeed
10:41:13 <shachaf> Vorpal: Not as good.
10:41:23 <shachaf> cat reports errors.
10:41:23 <Vorpal> shachaf, indeed, but sillier :P
10:41:28 <kallisti> anyway point is: Sgeo is spammy
10:41:36 <shachaf> Right. < and dd are both sillier.
10:41:45 <Vorpal> shachaf, < is the cleanest solution
10:41:51 <Vorpal> except for passing it as argument to perl
10:41:57 <kallisti> @tell Phantom_Hoover significantly associated with join/part spam my ass :P
10:41:58 <lambdabot> Consider it noted.
10:42:02 <kallisti> anyway the point was to prove PH wrong.
10:42:28 <kallisti> so I win. yay.
10:42:28 <shachaf> Vorpal: If you were at least putting it at the front of the command line I *might* believe you.
10:42:28 -!- glogbackup has joined.
10:42:31 -!- glogbackup has left.
10:42:31 <shachaf> `</var/irclogs/_esoteric/2011-11-23-raw.txt run perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:42:39 <Vorpal> shachaf, so you avoid "where" in haskell?
10:42:39 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/</var/irclogs/_esoteric/2011-11-23-raw.txt: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/</var/irclogs/_esoteric/2011-11-23-raw.txt: cannot execute: No such file or directory
10:42:54 <kallisti> Vorpal: where is a different thing.
10:42:57 <kallisti> I think.
10:42:59 <shachaf> Vorpal: No, but when I write out composition or application, I do it in order.
10:43:10 <shachaf> `run </var/irclogs/_esoteric/2011-11-23-raw.txt run perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:43:11 <HackEgo> bash: run: command not found
10:43:13 <kallisti> as where involves arrangement levels of abstraction
10:43:18 <Vorpal> IMO the order of composition is the wrong one
10:43:18 <kallisti> whereas this is pipelining data.
10:43:24 <shachaf> `run </var/irclogs/_esoteric/2011-11-23-raw.txt perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
10:43:27 <HackEgo> Sgeo 262; augur 67; 53; pikhq_ 41; derdon 38; copumpkin 15; glogbackup 14; calamari 12; monqy 8; oerjan 6; Darth_Cliche 6; sebbu2 5; Jafet 4; pikhq 3; kmc 3; Slereah_ 2; GreaseMonkey 2; SgeoN1 2; quintopia 2; Slereah 1; sebbu 1; Nisstyre 1;
10:43:32 <Vorpal> :t flip (.)
10:43:33 <lambdabot> forall a b (f :: * -> *). (Functor f) => f a -> (a -> b) -> f b
10:43:37 <shachaf> Vorpal: It doesn't matter which order it goes in.
10:43:40 <shachaf> bash has the opposite order.
10:43:43 <shachaf> They're both fine.
10:43:43 <kallisti> OH GOD WHAT HAVE I DONE.
10:43:47 * kallisti will never use cat again.
10:43:48 <kallisti> (lie)
10:43:50 <shachaf> The point is that cat is just one more step in the pipeline.
10:44:58 <kallisti> `run perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}' /var/irclogs/_esoteric/*raw.txt #wheeeeee
10:45:12 <kallisti> this is going to be so fun
10:45:30 <HackEgo> No output.
10:45:32 <Vorpal> well < worked fine there at the start
10:45:32 <Vorpal> as expected
10:45:32 <kallisti> ..
10:45:34 <kallisti> :(
10:46:01 <kallisti> did it timeout or something?
10:46:02 <Vorpal> gah, lag
10:46:07 <Vorpal> fuck this wlan
10:46:19 <shachaf> Vorpal: What's the point in making a special-case for the "generating something" part of a pipeline when the "something" happens to be the contents of exactly one file?
10:46:22 <Vorpal> kallisti, probably
10:46:45 <kallisti> `run echo perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}' /var/irclogs/_esoteric/*raw.txt
10:46:46 <shachaf> If it was 0 files, or 2 files, you would say to use echo or cat. Why make a special case for 1?
10:46:52 <HackEgo> perl -n -e /:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j} /var/irclogs/_esoteric/2003-01-18-raw.txt /var/irclogs/_esoteric/2003-01-19-raw.txt /var/irclogs/_esoteric/2003-01-20-raw.txt /var/irclogs/_esoteric/2003-01-21-raw.txt /var/irclogs/_esoteric/2003-01-22-raw.txt /var/irclogs/_esoteric/2003-01-23-raw.txt /var/irclogs/_esoteric/2003-01-24-raw.txt
10:46:55 <kallisti> oh oops
10:47:13 <kallisti> `run echo perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}' /var/irclogs/_esoteric/*raw.txt > donttimeoutplz.sh
10:47:16 <HackEgo> No output.
10:47:26 <kallisti> `donttimeoutplz.sh
10:47:27 <kallisti> er
10:47:28 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: donttimeoutplz.sh: not found
10:47:37 <kallisti> `run ./donttimeoutplz.sh
10:47:37 <HackEgo> bash: ./donttimeoutplz.sh: Permission denied
10:47:39 <kallisti> `run chmod +x ./donttimeoutplz.sh
10:47:47 <HackEgo> No output.
10:47:48 <kallisti> `run ./donttimeoutplz.sh
10:47:59 <kallisti> I have no idea how this will fix anything
10:48:15 <HackEgo> ​./donttimeoutplz.sh: line 1: syntax error near unexpected token `(' \ ./donttimeoutplz.sh: line 1: `perl -n -e /:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j} /var/irclogs/_esoteric/2003-01-18-raw.txt /var/irclogs/_esoteric/2003-01-19-raw.txt /var/irclogs/_esoteric/2003-01-20-raw.txt /var/irclogs/_esoteric/2003-01-21-raw.txt /var/irclogs/_esoteric/2003-01-22-raw.txt
10:48:15 <kallisti> bah
10:48:15 <kallisti> `rm donttimeoutplz.sh
10:48:15 <kallisti> fuck you bash
10:48:16 <HackEgo> No output.
10:48:19 <kallisti> and your escaping bullshit.
10:48:29 <kallisti> er
10:48:33 <kallisti> wait what
10:48:33 <Vorpal> gnh this connection...
10:49:19 <Vorpal> okay reconnected to bouncer again, hopefully more stable
10:49:45 <Vorpal> kallisti, anyway you want to know who has most JOIN, PART, QUIT over all the history?
10:49:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
10:49:59 <kallisti> yes
10:50:11 <Vorpal> kallisti, I can do that in a bit if sshing home is stable enough
10:50:18 <kallisti> `run echo '#!/bin/sh' > bin/hi; echo perl -n -e '/:(.*?)!\S+ (JOIN|PART|QUIT)/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}' /var/irclogs/_esoteric/*raw.txt >> bin/hi
10:53:23 -!- esowiki has joined.
10:53:49 -!- esowiki has joined.
10:54:10 -!- esowiki has joined.
10:54:17 -!- glogbot has joined.
10:54:17 -!- glogbackup has left.
10:54:29 <Vorpal> kallisti, elliott and elliott_ and tusho and other aliases he used are all merged into elliott in the logs_na view
10:54:36 <Vorpal> similar for other known cases
10:54:55 <kallisti> ah
10:55:07 <Vorpal> anyway that doesn't tell you much really
10:55:14 <kallisti> nah I was just curious
10:55:16 <kallisti> `rm bin/hi
10:55:18 <Vorpal> after all, elliott has been active for long
10:55:39 <kallisti> and Sgeo is obviously a scoundrel.
10:56:00 <Vorpal> sgeo has been around for ages too
10:56:04 <Vorpal> let see count of lines
10:56:13 <Vorpal> => select nick,COUNT(*) from irc.logs_na where type in (0,1) group by nick order by count desc limit 4;
10:56:13 <Vorpal> nick | count
10:56:13 <Vorpal> ---------+--------
10:56:13 <Vorpal> elliott | 690342
10:56:13 <Vorpal> Vorpal | 284600
10:56:13 <Vorpal> ais523 | 144113
10:56:14 <HackEgo> No output.
10:56:17 <Vorpal> oerjan | 100266
10:56:43 * kallisti has "been around" but not consistently.
10:56:43 <Vorpal> looks like I'm still second in number of lines said
10:56:46 <kallisti> Vorpal: if you combine all of my nicks together I am probably creeping forward.
10:56:57 <Vorpal> kallisti, don't know which ones you have
10:57:08 <Vorpal> and I'm not going to edit that view definition over laggy ssh
10:57:18 <Vorpal> it is done by regexp
10:57:39 <kallisti> SevenInchBread, CakeProphet, and kallisti. both in acsending chronological order and in descending order of obnoxiousness.
10:57:46 <Vorpal> which is kind of slow
10:57:54 <Vorpal> maybe a JOIN on a nick-mapping table would be better
10:57:59 <Vorpal> => select count(*) from irc.logs where nick = 'kallisti' and type in (0,1);
10:58:00 <Vorpal> count
10:58:00 <Vorpal> -------
10:58:00 <Vorpal> 1365
10:58:07 <Vorpal> kallisti, oh you are CakeProphet, right
10:58:12 <kallisti> yes
10:59:03 <kallisti> soon it will sink in.
10:59:03 <Vorpal> => select count(*) from irc.logs where nick in ('kallisti', 'CakeProphet', 'SevenInchBread') and type in (0,1);
10:59:03 <Vorpal> count
10:59:03 <Vorpal> -------
10:59:03 <Vorpal> 55136
10:59:03 <fizzie> I should probably make a nick-merging thing too some day for my logdb.
10:59:03 <kallisti> hm
10:59:03 <kallisti> that's not very much actually.
10:59:03 <fizzie> > select n.name, count(*) from event e join nick n on e.nick = n.id where e.type in ('join', 'part', 'quit') and e.target = (select id from target where name = '#esoteric') group by n.name order by count desc limit 3;
10:59:03 <fizzie> name | count
10:59:03 <fizzie> --------+-------
10:59:03 <fizzie> augur | 7271
10:59:03 <fizzie> oerjan | 5367
10:59:03 <lambdabot> <no location info>: parse error on input `,'
10:59:03 <fizzie> ais523 | 4133
10:59:03 <fizzie> The non-merged ones lie so much.
10:59:03 <Vorpal> fizzie, the regexp solution is not very fast. It does handle stuff like Sgeo|foo for all foo
10:59:26 <Vorpal> fizzie, event e?
10:59:37 <fizzie> Yes?
10:59:50 <Vorpal> what is that. I fail at parsing that sql line.
11:00:02 <augur> WHAT DO YOU WANT FROM MEEEE
11:00:09 <fizzie> 'event' is the table, 'e' is the name for it so that one can write e.foo.
11:00:18 <Vorpal> oh right
11:00:28 <Vorpal> fizzie, so, you changed your script significantly then?
11:00:43 <kallisti> augur: you could have avoided this if you hadn't joined/parted/quit quite so much in the past.
11:00:47 <Vorpal> or are you logging straight to sql now?
11:00:48 <kallisti> augur: shame on you
11:01:13 <augur> kallisti: diaf
11:01:17 <fizzie> Vorpal: Well, this is not the esolog script, this is my "all logs in a db for searching" one, which was reasonably different even originally.
11:01:28 <Vorpal> ah
11:01:46 <fizzie> Vorpal: Sadly I haven't managed to make myself do the search frontend, so mostly I just grep the raw logs instead. :p
11:01:58 <Vorpal> heh
11:02:04 <Vorpal> fizzie, you used the db just there?
11:02:09 <kallisti> augur: "do I actually fuck?" "digging in a fountain" uh....
11:02:11 <Vorpal> anyway, sql for searching is fine
11:02:40 <kallisti> augur: I'm not very good with IRC lingo or whatever that is.
11:02:54 <Vorpal> kallisti, data interpolation address float
11:03:02 <augur> what Vorpal said
11:03:11 <kallisti> wat
11:03:20 <Vorpal> kallisti, only if you have fractional memory addressing
11:03:26 <kallisti> is that like
11:03:30 <kallisti> a dessert drink?
11:03:54 <Vorpal> kallisti, I mean *2.94 to address the bit on address 2.94
11:04:18 <kallisti> I'm
11:04:27 <Vorpal> kallisti, it obviously interpolate if required, depending on the resolution of you memory banks
11:04:28 <kallisti> so confused right now. what does this have to do with what I said.
11:04:41 <Vorpal> kallisti, diaf...
11:04:52 <kallisti> augur said that
11:04:53 <kallisti> to me
11:04:59 <kallisti> for some reason
11:04:59 <kallisti> why?
11:05:01 <Vorpal> kallisti, "die in a fire"
11:05:03 <Vorpal> is what he means
11:05:08 <kallisti> ah
11:05:08 <kallisti> yes
11:05:16 <Vorpal> kallisti, I just invented a different interpretation...
11:05:25 <Vorpal> jokes aren't funny when you explain them
11:05:35 <kallisti> LIES AREN'T FUNNY
11:05:56 <kallisti> Vorpal: I kind of thought it was made up but then it got all consensus'd and I was confused.
11:06:07 <kallisti> groupthink help
11:06:08 <Vorpal> kallisti, obviously augur has humour.
11:06:19 <fizzie> Vorpal: SQL's fine for counting things and such, but after separating "targets" (read (network,channel) tuples) into a different table, and network names to a third one, it's quite faster to write "grep foo logs/freenode/#esoteric/*" than "psql" + "select n.name, e.text from logs.event e join logs.nick n on e.nick = n.id where e.target = (select id from logs.target t join logs.network w on t.network = w.id where w.name = 'freenode' and t.name = '#esoteric') and
11:06:22 <fizzie> e.text like '%foo';"
11:06:33 <Vorpal> fizzie, true
11:06:40 <augur> i bought a bag of humour the other day
11:06:45 <augur> havent gotten even halfway through it yet
11:06:50 <Vorpal> fizzie, can be /way/ faster to do in sql, Unless it is way slower
11:07:21 <augur> ive been into turkish humour lately
11:07:28 <Vorpal> I have no idea what that is
11:07:42 <augur> it might be a bit too saccharine but its soooo good
11:08:05 * Vorpal googles saccharine
11:08:11 <kallisti> sugar
11:08:23 <kallisti> er
11:08:23 <kallisti> well
11:08:23 <Vorpal> right
11:08:23 <kallisti> it's a made up word
11:08:23 <Vorpal> "Saccharin[2] is an artificial sweetener."
11:08:26 <kallisti> oh
11:08:29 <kallisti> nevermind
11:08:49 <kallisti> I've seen saccharine or something similar used as like an adjective form of saccharide
11:08:51 <fizzie> 1. cloying, saccharine, syrupy, treacly -- (overly sweet)
11:08:52 <kallisti> to basically mean sugary
11:09:00 <kallisti> oh
11:09:02 <kallisti> yes that
11:09:15 <Vorpal> kallisti, anyway I guess the interpolated float addressing is kind of how 1D texture units work on GPUs
11:09:28 <Vorpal> kind of
11:09:31 <augur> saccharine also has a metaphorical sense
11:09:41 <Vorpal> augur, meaning?
11:10:04 <augur> sentimental, cute, sweet, to an obnoxious degree
11:10:07 <Vorpal> ah
11:10:17 <augur> twee
11:10:39 <Vorpal> augur, you should say 2H-1λ⁶,2-benzothiazol-1,1,3-trione instead
11:10:42 <Vorpal> :D
11:10:51 <augur> no i shouldnt
11:10:54 <Vorpal> yes you should
11:11:06 <Vorpal> that is the IUPAC name for saccharin
11:11:17 <augur> ok
11:11:19 <augur> GOOD NIGHT
11:11:22 <Vorpal> cya
11:12:03 <fizzie> "saccharine, adj. and n. Etymology: Formed as saccharin n. + -ine suffix. Compare French saccharin. .. saccharin, n. Etymology: < medieval Latin sacchar-um or Greek σάκχαρον , σάκχαρ(ι) sugar + -in suffix. 1. The anhydride of saccharic acid. (Discovered and named by Péligot 1880.) 2. An intensely sweet substance obtained from coal tar, o-sulphobenzoic imide, C7H5NO3S, used in minute quantities for sweetening the food or drink of persons to whom
11:12:06 <fizzie> sugar is injurious. ..."
11:14:32 <fizzie> "Swiftly and cloying-sweet as saccharine In Governmental tea, a week had melted. G. Frankau, One of Them xvii. 128, 1918." The quotations are always so delightfully random.
11:15:04 <Vorpal> fizzie, where is that from?
11:15:06 <Vorpal> sounds like fungot
11:15:07 <fungot> Vorpal: in a good story, they function in an undiagnosable way? for instance, i've recently picked up a hobby, and it's been super great! i signed up for an english as a second language course.
11:15:10 <Vorpal> ^style
11:15:11 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz* sms speeches ss wp youtube
11:15:18 <Vorpal> ^style ct
11:15:18 <fungot> Selected style: ct (Chrono Trigger game script)
11:15:52 <fizzie> OED. Or if you mean the quotation itself, it's from G. Frankau's One of Them, like it says.
11:16:01 <Vorpal> hm
11:16:09 <fizzie> fungot: The sword alone?
11:17:01 <fungot> fizzie: that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop, crono!
11:17:01 <fizzie> Woot.
11:17:01 <fizzie> I like how it actually stopped there at the end.
11:17:01 <Vorpal> whatever book that is
11:17:01 <Vorpal> gah the connection
11:17:01 <Vorpal> heh
11:19:27 <fizzie> "The first Aalto SCI November Fest, held on 24th November, attracted nearly 200 researchers from all our Departments. Below a list of the research posters which were in the exhibition at Saha building."
11:19:39 <fizzie> I like how they've written this newspost in past tense, even though the actual thing is tomorrow.
11:19:54 <Vorpal> lol
11:20:25 <fizzie> Wonder if they'd retcon the numbers if significantly fewer-than-registered people happened to actually come there.
11:21:07 <Vorpal> heh
11:27:28 -!- glogbackup has joined.
11:36:08 <Gregor> glogbackup: Uhhh.
11:36:43 <fizzie> Possibly it thought "better safe than sorry".
11:37:42 -!- Sgeo has quit (Ping timeout: 240 seconds).
11:39:43 -!- glogbackup has left.
11:40:48 -!- Sgeo has joined.
11:40:55 <fizzie> UPS tracking is being confusing. There's a no-location "Activity: A valid tax identification number or deferment number is required for clearance" at 6:53AM; then after that, in sequence, 7:25AM "Arrival Scan" in Helsinki; 7:57AM "Arrival Scan" in Vantaa (neighbour town); and 9:44AM "Import Scan" again in Helsinki. And then nothing else during the day, except the ETA is still listed as "By End of Day" today.
11:42:36 <Vorpal> fizzie, heh
11:43:19 <Vorpal> I'll bbl until late evening. Cya
11:45:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
11:46:49 -!- Sgeo has joined.
12:22:27 -!- glogbackup has joined.
12:33:21 -!- glogbot has quit (Ping timeout: 240 seconds).
12:33:27 -!- esowiki has joined.
12:33:52 -!- esowiki has joined.
12:34:27 -!- glogbot has joined.
12:34:27 -!- glogbackup has left.
12:35:25 -!- Sgeo has joined.
12:39:30 -!- EgoBot has quit (Read error: Connection reset by peer).
12:40:01 -!- EgoBot has joined.
12:45:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
12:47:10 -!- Sgeo has joined.
12:55:07 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:57:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
12:59:46 -!- Sgeo has joined.
13:07:24 -!- Phantom_Hoover has joined.
13:08:10 <Phantom_Hoover> Hello everyone, lambdabot.
13:08:10 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
13:23:45 -!- Sgeo has quit (Ping timeout: 240 seconds).
13:26:04 -!- Sgeo has joined.
13:36:07 -!- kallisti has quit (Read error: Operation timed out).
13:37:25 -!- glogbackup has joined.
13:37:32 -!- pikhq_ has joined.
13:38:23 -!- pikhq has quit (Ping timeout: 276 seconds).
13:41:21 -!- Sgeo has quit (Ping timeout: 240 seconds).
13:44:30 -!- Sgeo has joined.
13:51:15 -!- sebbu2 has changed nick to sebbu.
14:05:14 -!- copumpkin has quit (Ping timeout: 252 seconds).
14:05:38 -!- copumpkin has joined.
14:29:53 -!- esowiki has joined.
14:30:30 -!- esowiki has joined.
14:30:30 -!- glogbot has joined.
14:32:59 -!- MSleep has changed nick to MDude.
14:39:31 -!- HackEgo has quit (Read error: Connection reset by peer).
15:08:39 -!- copumpkin has quit (Ping timeout: 245 seconds).
15:09:04 -!- copumpkin has joined.
15:20:33 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:21:32 -!- augur has quit (Read error: Connection reset by peer).
15:21:52 -!- augur has joined.
15:49:00 -!- copumpkin has joined.
16:13:22 <quintopia> what is this thing that has numbers net to nicks and got me pinged like fifty times
16:17:20 <Deewiant> 2011-11-23 12:26:24 ( kallisti) `run cat '/var/irclogs/_esoteric/2011-11-23-raw.txt' | perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
16:40:28 <Vorpal> <quintopia> what is this thing that has numbers net to nicks and got me pinged like fifty times <-- how can you look in the log and see those lines but not the lines just before them?
16:40:37 <Vorpal> that makes no sense
16:41:46 <Vorpal> quintopia: ?
16:43:04 <Deewiant> Vorpal: Away logs ofttimes show only the lines containing the pings
16:43:13 <Vorpal> ah, those
16:43:14 <Vorpal> right
16:43:35 <Vorpal> I only have full logs personally, no special away log at all
16:44:20 <Deewiant> Irssi auto-prints an away log upon unawaying
16:44:36 <Deewiant> Unless one has it disabled, presumably
16:46:00 <Vorpal> [download] 6.8% of 1.31G at 368.22k/s ETA 57:54 <-- whyyyyy!? The video is 38 minutes. I can't watch it while downloading. Why can't youtube max out my bw...
16:52:32 -!- elliott has joined.
16:54:41 <elliott> 21:35:07: <Vorpal> @src ap
16:54:41 <elliott> 21:35:07: <lambdabot> ap = liftM2 id
16:54:41 <elliott> 21:35:13: <Vorpal> oh Applicative, right
16:54:41 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:54:43 <elliott> no, Monad
17:12:49 <elliott> 23:17:24: <pikhq> Is that the requirements for *citizenship*?
17:12:49 <elliott> 23:17:40: <kallisti> yes
17:12:49 <elliott> 23:17:51: <pikhq> God damn.
17:13:06 <elliott> pikhq_: I think you'll find that most countries want you to have an in-demand skill or a lot of money to move there?
17:13:45 <elliott> 23:39:31: <kallisti> oerjan: wtf, so you've alternated between the same two prime ministers for the last 14 years or so?
17:13:52 <elliott> We alternated between the same one for ten years.
17:13:52 -!- Sgeo has quit (Ping timeout: 240 seconds).
17:15:56 <elliott> 01:02:24: <kallisti> I'm kind of confused about Barack Obama and the Nobel Peace Prize
17:15:56 <elliott> 01:02:34: <kallisti> did he get it because... he wasn't George Bush?
17:16:05 <elliott> Didn't everyone believe he was going to shut down Guantanamo at the time?
17:16:10 <elliott> That's like... not punching someone any more.
17:16:13 <elliott> That's sort of peacey?
17:16:53 -!- Sgeo has joined.
17:16:59 <Vorpal> <elliott> pikhq_: I think you'll find that most countries want you to have an in-demand skill or a lot of money to move there? <-- What about Schegen? (however that is spelled)
17:17:40 <elliott> Vorpal: Yes, which requires you to get into an EU country, which will require... an in-demand skill, or a lot of money.
17:17:49 <Vorpal> oh right
17:17:58 <elliott> oh hi doom 3 source code!
17:18:06 <Vorpal> elliott: I guess in this context the Schegen area counts pretty much as one country
17:18:16 <Vorpal> elliott: hm when was that released?
17:18:18 <Vorpal> today?
17:18:20 <elliott> today
17:18:23 <Vorpal> nice
17:18:27 <Vorpal> elliott: got a link?
17:18:31 <elliott> eeh, 3 github notifications
17:18:33 <Vorpal> ah
17:18:38 <elliott> i hope the other fork doesn't realise i'm collaborating
17:18:41 <elliott> Vorpal: https://github.com/TTimo/doom3.gpl
17:18:52 <Vorpal> <elliott> i hope the other fork doesn't realise i'm collaborating <-- huh?
17:19:00 <elliott> Vorpal: i reported the same bug to two forks :)
17:19:04 <elliott> of the same project
17:19:04 <Vorpal> heh
17:19:45 <Vorpal> hm originally released 2004, kind of semi-modern then
17:20:01 <elliott> It has the most HD shadows.
17:20:58 <elliott> "I would say I would prefer my ugly hack to adding the ScopedTypeVariable extension."
17:21:01 <elliott> Oh come on!
17:21:36 <Vorpal> heh funny physics bug in skyrim, you can get thrown upwards sometimes when being killed by giants at a tremendous speed.
17:21:58 <Vorpal> well not so much tremendous speed, as lack of slowing down.
17:23:18 <Vorpal> elliott: you will enjoy this video, unless you already seen the bug: https://www.youtube.com/watch?v=yQihK62XsrM
17:23:47 <Vorpal> (the bug happens in the last third or so of the video)
17:26:09 <elliott> meh, i think i'll abandon this fork, the other one looks better
17:29:18 <elliott> Vorpal: rheh
17:29:23 <elliott> s/rheh/heh/
17:29:45 <Vorpal> elliott: it wouldn't be a havok game without silly physics bugs :P
17:29:54 <Vorpal> (yes I'm pretty sure I read that it uses havok)
17:34:21 -!- augur has quit (Remote host closed the connection).
17:36:49 <elliott> does anyone know what license the OpenCL headers are for?
17:38:56 -!- monqy has joined.
17:39:24 <Vorpal> elliott: btw really stupid thing when dealing with chests in game: R is put in chest when viewing your inventory. What do you think R is when viewing the chest inventory?
17:39:30 <Vorpal> elliott: hint: it is /not/ take item
17:39:48 <elliott> Is it "destroy with fire".
17:39:52 <Vorpal> elliott: "take everything"
17:40:26 <Vorpal> which is just annoying when you are putting a lot of loot into a chest in your house. Chests have no weight limits either. So you can end up with a few thousand kilos. E is take single item
17:40:31 <Vorpal> and in inventory view e is use
17:40:34 <Vorpal> so yeeeah
17:40:46 <Vorpal> it is just the worst mapping ever
17:40:52 <Vorpal> btw click is use too in inventory
17:41:48 <elliott> See, AII has the best mapping.
17:44:04 <Vorpal> elliott: and is not an RPG
17:44:13 <elliott> Exactly. That's two improvements already!
17:44:37 -!- kmc has joined.
17:47:52 -!- Sgeo has quit (Ping timeout: 240 seconds).
17:48:07 <Vorpal> elliott: :(
17:48:58 -!- Sgeo has joined.
17:55:33 <Vorpal> bbl
17:55:42 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
17:56:51 <elliott> 01:51:25: * oerjan realizes that nearly half his life is _after_ the soviet union dissolved
17:57:00 * elliott realises that all his life etc. :P
17:59:30 <pikhq_> elliott: Some countries are dickier about it than others.
17:59:53 <elliott> About what
17:59:58 <pikhq_> Immigration.
18:00:07 <elliott> Right
18:01:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
18:03:08 -!- Sgeo has joined.
18:14:09 -!- augur has joined.
18:15:38 <elliott> 08:29:00: <oerjan> elliott is still trying to improve his funge98 in haskell interpreter
18:15:47 <elliott> IF NOT FOR A CERTAIN OTHER PERSON COUGH COUGH COUGH
18:15:49 -!- Phantom_Hoover has quit (Quit: Leaving).
18:18:01 -!- Phantom_Hoover has joined.
18:19:42 <elliott> 10:36:16: <Vorpal> kallisti, your code is suffering from UUOC
18:19:49 <elliott> your line is suffering from UUOUUOC
18:20:11 <elliott> 10:38:15: <shachaf> Vorpal: That's not a useless use of cat.
18:20:11 <elliott> 10:38:15: <shachaf> Vorpal: It's more readable than using <
18:20:11 <elliott> 10:38:15: <Vorpal> shachaf, no it isn't
18:20:11 <elliott> Yes it is.
18:20:24 <elliott> 10:38:15: <Vorpal> shachaf, and it spawns an extra process
18:20:24 <elliott> You should see how many processes shell scripts spawn.
18:20:53 <elliott> Hmm, I was going to continue yelling at Vorpal through the logs but shachaf pretty much said everything.
18:21:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
18:22:29 <elliott> 10:45:32: <Vorpal> well < worked fine there at the start
18:22:29 <elliott> 10:45:32: <Vorpal> as expected
18:22:37 <elliott> Pretty sure not every shell even supports that.
18:23:00 <elliott> `rm bin/hi
18:23:26 -!- Sgeo has joined.
18:28:24 <monqy> goodbye hi
18:28:31 <elliott> hackego???
18:28:31 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
18:28:36 <elliott> Gregor: hackegooooooo
18:28:41 <monqy> oh
18:28:44 <monqy> hackego...
18:47:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
18:49:38 -!- Sgeo has joined.
18:55:35 -!- augur has quit (Remote host closed the connection).
18:55:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
18:58:58 -!- Sgeo has joined.
18:59:37 <shachaf> elliott: Aha, another sensible person.
18:59:43 <shachaf> In this channel. Go figure.
18:59:47 <elliott> `quote opinions
18:59:54 <elliott> Hmm, wait.
18:59:56 <elliott> `quote opinion
19:00:01 <elliott> Oh, wait.
19:00:04 <elliott> HackEgo isn't even here.
19:00:22 <shachaf> How quickly they forget.
19:00:35 <elliott> 381 <ZOMGMODULES> I can trust elliott_ to have an opinion on anything and everything <elliott_> Yes. <elliott_> And the best thing is: it is the correct opinion.
19:00:37 <elliott> There we go.
19:00:53 * elliott has even heard the "but it's another process thing!" before.
19:01:01 <elliott> fork() takes literally minutes.
19:01:03 <shachaf> elliott: Dude, like, efficiency, you know?
19:01:17 <shachaf> Think of the constant factors.
19:01:35 <elliott> shachaf: Personally I write all my shell pipelines in assembly.
19:01:45 <elliott> (mov eax, ebx) | ret
19:04:39 <elliott> "Function type A -> B in some sense is not very good. Though functions are first class values, one often cannot freely operate them due to efficiency problems. You can't apply too many transformations (A -> B) -> (C -> D), at some point you have to compute a value.
19:04:40 <elliott> Obviously this is due to the non-strict nature of -> ."
19:04:50 <elliott> shachaf: See, all we need is to make | strict.
19:05:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
19:06:45 -!- Sgeo has joined.
19:11:08 <shachaf> elliott: ?
19:11:13 <shachaf> Ah, stackoverflow.
19:11:30 * elliott occasionally reads stackoverflow questions just to gawp at them.
19:11:43 <elliott> It is not the most productive thing, but I can't quite give up on seeing people ask for "alternatives to ->".
19:11:48 <elliott> You know, stricter ones.
19:21:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
19:22:47 -!- Sgeo has joined.
19:23:28 <shachaf> elliott: To be fair, -> isn't -- actually, I can't think of any way to be fair.
19:23:54 <elliott> I think what they're saying is that (a . b . c . d) builds up too many thunks, and they want to "force" it somehow. By... deepseqing the function, I guess?
19:24:18 <elliott> I suppose TECHNICALLY every function has a finite domain if we're talking about real computers!
19:25:05 <shachaf> elliott: Operationalist.
19:25:13 <elliott> Heck naw
19:35:03 <Phantom_Hoover> oh god i watched father ted too much and now i think in an irish accent
19:40:49 -!- ais523 has joined.
19:54:05 <elliott> hi ais523
19:54:10 <ais523> hi
20:07:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:09:48 -!- Sgeo has joined.
20:18:03 -!- plycke has joined.
20:18:16 -!- plycke has quit (Excess Flood).
20:22:17 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:24:51 -!- GreaseMonkey has joined.
20:24:53 -!- Sgeo has joined.
20:29:06 <Phantom_Hoover> http://en.wikipedia.org/wiki/Hector_%C3%93_hEochag%C3%A1in
20:29:13 <Phantom_Hoover> hEochagáin.
20:29:18 <elliott> h...Eochagáin.
20:31:32 <fizzie> Agáin with those Eochs.
20:31:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:32:01 <elliott> fizzie: *hEoch.
20:32:02 <elliott> s.
20:32:52 -!- Sgeo has joined.
20:41:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:42:47 -!- Sgeo has joined.
20:47:55 -!- oerjan has joined.
20:48:36 <elliott> > id
20:48:37 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
20:48:37 <lambdabot> arising from a use of `...
20:48:40 <elliott> hi oerjan
20:48:49 <oerjan> hi elliott
20:48:59 * elliott awaits the joyful logreading.
20:49:05 <oerjan> oh dear
20:53:16 <oerjan> well i sense a lot of nick pinging
20:54:14 <elliott> PING
20:54:17 <elliott> PING PING PING PING PING
20:54:30 <oerjan> P P P PINGU
20:54:45 <fizzie> "Copyright : (c) Conal Elliott 2008" -- sounds like some sort of a subspecies of elliott. You know, the Conal Elliott and the Speral Elliott, and so on.
20:55:12 <fizzie> (The difference between them is that only one usually has a point.)
20:55:23 <elliott> Ha ha ha, fizzie doesn't know who Conal is.
20:55:26 <elliott> oerjan: :DDDDDDddddddd
20:56:01 <oerjan> _or_ he knows perfectly. it remains to be seen.
20:56:52 <fizzie> Well, I know what I've googled, now. But it doesn't diminish the immediate "conical elliott" vibe.
20:58:45 -!- Ngevd has joined.
20:59:21 <oerjan> the Elliptal Elliott has no point, but at least he is brief about it
20:59:48 <Ngevd> Hello!
20:59:54 <oerjan> yo
20:59:56 <monqy> hi
21:00:09 <elliott> oerjan: the real elliott is like that, but without the briefness
21:00:50 <oerjan> your words not mine
21:01:59 <oerjan> <Vorpal> shachaf, cat is useless unless used interactively to dump a file to your terminal or to *concatenate* files.
21:02:09 <oerjan> sort of like return in a monad, come to think of it
21:02:43 <shachaf> @google oleg monad unix
21:02:44 <lambdabot> http://okmij.org/ftp/Computation/monadic-shell.html
21:02:44 <lambdabot> Title: UNIX pipes as IO monads
21:02:59 <oerjan> what's with all these logspeaking people being absent
21:03:07 <fizzie> I don't know, I've used "foo | cat" sometimes when 'foo' does different things depending on whether the output fd isatty(3) or not.
21:03:10 <oerjan> shachaf: well naturally
21:03:24 <shachaf> Naturally?
21:03:47 <oerjan> ok so it _is_ return in a monad.
21:03:54 <elliott> <oerjan> what's with all these logspeaking people being absent
21:04:09 <elliott> oerjan: That's what I thought about you when I was being passive-aggressive to you!
21:04:25 <shachaf> By the way, there's sometimes a legitimate excuse to use < instead of cat.
21:04:30 <shachaf> mesg y < /dev/pts/4
21:04:44 <oerjan> ha. ha ha. ha ha ha ha. ha ha ha ha ha ha ha ha,
21:04:47 <oerjan> *.
21:04:47 <elliott> shachaf: For once I think zzo is right about this; (>=>) is more correct than (>>=).
21:05:00 <oerjan> (fibonacci is _so_ out)
21:05:02 <elliott> shachaf: Also, I use < all the time, just not in pipelines.
21:05:10 <shachaf> elliott: Well, sure.
21:05:21 <shachaf> But I like the way you can do mesg <
21:06:24 <elliott> I just did that with /dev/pts/0. What did I do?
21:06:32 <elliott> Ohh, I see.
21:06:42 <elliott> That's lovely.
21:07:29 <shachaf> "Hey, I just pasted that random command you typed in IRC into my shell and there was no output. What did I just do to mny computer?"
21:08:15 <elliott> shachaf: Yes, exactly.
21:08:35 <shachaf> $ mesg
21:08:54 <shachaf> `? elliott
21:09:01 <shachaf> Bah.
21:09:04 <shachaf> Useless bot.
21:09:05 <elliott> HackEgo is sleeping.
21:09:16 <shachaf> HackEgo is dead.
21:09:35 <elliott> No, it will rise once more.
21:09:37 <fizzie> Someone should turn IRC (by royal decree, for example) into one of those talk-like places where you can see everyone's typings in the realest time.
21:09:42 <elliott> And maybe a few times after that.
21:09:58 <elliott> fizzie: Nooooooooooooooooooooooooooooooo
21:10:12 <shachaf> fizzie: http://piratepad.net/ouKPdvpeCw
21:10:17 <shachaf> Everyone go there.
21:10:40 <fizzie> But that's not the IRC. :/
21:10:55 <fizzie> Also I would just copy-paste everything in.
21:12:19 -!- Nisstyre has joined.
21:15:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
21:18:57 -!- Sgeo has joined.
21:20:34 <oerjan> <elliott> "I would say I would prefer my ugly hack to adding the ScopedTypeVariable extension."
21:20:52 <elliott> oerjan: it isn't even the "rely on monomorphism" thing
21:21:24 <oerjan> well if it's the one from before, i was on my way to find a prettier way without ScopedTypeVariables before you said to use it
21:21:37 <elliott> oerjan: it's the https://github.com/jkarlson/OpenCLWrappers/blob/master/System/OpenCL/Wrappers/Utils.hs#L61 one :P
21:21:41 <oerjan> so it's ugly even if you don't want that extension
21:21:42 <elliott> but it's easy to do with a "where"
21:21:48 <elliott> or lambda monomorphism
21:21:57 <oerjan> yeah
21:22:22 <oerjan> yeah that's the one i remembered
21:23:10 <oerjan> my idea was something like...
21:24:42 <Sgeo> Um
21:26:02 <oerjan> oh hm the monad makes using asTypeOf a bit ugly
21:27:24 <elliott> Sgeo: Um?
21:28:05 <oerjan> peekManyInfo f x size = do a <- withForeignPtr x (\y -> (peekArray ( div (fromIntegral size) $ sizeOf c) $ castPtr y); return . f $ a `asTypeOf` [c] where c = undefined
21:28:16 <elliott> heh
21:28:29 <elliott> oerjan: i don't think that works
21:28:36 <elliott> oerjan: c is just :: forall a. (Bits a) => a
21:28:39 <oerjan> oh hm duh
21:29:05 -!- MDude has quit (Ping timeout: 248 seconds).
21:29:08 <oerjan> ic that explains why he didn't use just let c = undefined
21:30:33 <oerjan> hm...
21:31:21 <oklopol> yay, i just gave a simpler proof to a problem that was proven 7 years ago, and which had been open for about 7 at that point
21:31:45 <elliott> oklopol: we need zeilberger in here to flamewar with you over that
21:32:05 <oklopol> the only known proof was done using kolmogorov complexity, and the proof itself was also very kolmogorov complicated.
21:32:09 <oklopol> what
21:32:12 <oklopol> do you mean
21:32:33 <Ngevd> Is it possible for a problem to go from closed to open?
21:32:54 <oklopol> i guess if the proof was wrong, you could say that
21:32:54 <oerjan> from apparently closed to open, at least
21:32:57 <oklopol> yeah
21:33:10 <oerjan> i recall that happened with the four color theorem at one point
21:33:18 <elliott> oklopol: zeilberger doesn't like people proving things twice :P
21:33:45 <oerjan> that's ridiculous really
21:33:53 <oklopol> that's fucking retarded, yes
21:34:05 <oerjan> new proofs often open new avenues
21:34:13 <oklopol> the first proof is always ridiculously long and stupid
21:34:58 <oklopol> and basic research eventually catches up and it becomes simple
21:35:05 <elliott> oerjan: yes
21:35:13 <oerjan> and for example there is the elementary proof of the prime number theorem, where a finitist like zeilberger would be unlikely to even accept the original as a proof, i suspect
21:35:16 * elliott tries to find a source
21:35:23 <elliott> oerjan: well he doesn't object to people proving things once :P
21:35:23 <oklopol> well what oerjan said is true as well, but that's not really the main reason.
21:35:26 <oklopol> what i said is.
21:35:43 <oerjan> elliott: um that was a new proof of an old theorem
21:35:57 <elliott> oerjan: i meant, he wouldn't consider it proved in the first place...
21:36:12 -!- Patashu has joined.
21:36:41 <oklopol> there's a chick at the uni who's doing a comparison of two techniques for proving the prime number theorem
21:37:28 <elliott> gah, where is this. oerjan: anyway, he was basically saying it was pointless, for reasons of proof irrelevance, and only interesting as a curiosity, because the complexity of a proof only matters to humans. and saying that nobody would get excited about a particularly elegant proof that (two small numbers equal another number when multiplied, or something like that, I forget)
21:37:35 <elliott> note: /me does not endorse zeilberger's opinions
21:37:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
21:39:11 -!- Sgeo has joined.
21:39:37 <oerjan> i'm starting to think that hack might actually be the most elegant way to do it without ScopedTypeVariables
21:39:47 <elliott> oerjan: i suspect it is mostly because in the paradigm zeilberger would like everyone to work in, humans wouldn't prove things at all :P
21:40:05 -!- Jafet has quit (Quit: Leaving.).
21:40:06 <oerjan> heh
21:40:56 <oklopol> yeah
21:41:43 <oerjan> as i doubt he'd accept MonadRec either :P
21:41:55 <oerjan> or whatsitcalled
21:42:00 <elliott> DoRec or something
21:42:19 <elliott> i'm probably just going to help the other fork instead because that guy has his shit together and doesn't use unsafeCoerce
21:42:32 <oklopol> also our paper was accepted into LATA, yays
21:42:46 <elliott> oklopol: yeah but do you have an oerjan number yet
21:43:10 <oerjan> hm
21:43:11 <oklopol> no :(
21:43:20 <oklopol> at least i don't know what i tis
21:43:21 <oklopol> *it is
21:43:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
21:43:33 <oklopol> it's at most 8 ofc
21:43:57 <oklopol> since oerjan has the same erds number as me iirc
21:44:22 <oerjan> peekManyInfo f x size = case undefined of c -> do a <- withForeignPtr x (\y -> (peekArray ( div (fromIntegral size) $ sizeOf c) $ castPtr y); return . f $ a `asTypeOf` [c]
21:45:12 <elliott> oerjan: gimme a name of someone you've collaborated with or w/e, I want to see if AMS' collaboration disatnce thing works :P
21:45:35 <oerjan> alf birger rustad
21:45:56 <elliott> No authors matched "Alf Birger Rustad" (Best format is: last name, first initial*)
21:45:56 <elliott> No authors matched "Oerjan Johannsen" (Best format is: last name, first initial*)
21:46:00 <elliott> FINE I'LL USE YOUR STUPID FORMAT
21:46:14 <oerjan> you could at least spell it correclty
21:46:28 <elliott> oerjan: oh what's the pslleing
21:46:32 <elliott> do you mean with the fancy O
21:46:33 <elliott> because
21:46:36 <elliott> We found more than one author that matched "Johannsen Ø" Please select an author from the list below.
21:46:37 <elliott> the list is:
21:46:39 <elliott> johannsen, daniel
21:46:43 <elliott> johannsen, david a
21:46:45 <oerjan> no, not that, i never got that to work either :P
21:46:45 <elliott> [...]
21:46:47 <elliott> johannsen, klaus
21:46:49 -!- Sgeo has joined.
21:46:50 <elliott> [...] :P
21:46:55 <oklopol> wanna see if i'm there
21:46:56 <elliott> oerjan: ah thx /whois
21:46:58 <oklopol> i somehow doubt it
21:47:00 <elliott> oklopol: that was my next step
21:47:08 <elliott> oerjan: anyway they don't know who rustad a is
21:47:17 <elliott> gimme someone more MAINSTREAM that someone you know has collaborated with or someone!!
21:47:19 <elliott> maybe i'll just
21:47:22 <elliott> try erdos
21:47:23 <oerjan> elliott: the comma is not optional
21:47:34 <elliott> oh dur
21:47:45 <elliott> No authors matched "Johansen, Oerjan" (Best format is: last name, first initial*)
21:47:55 <oerjan> neither is the *, i think.
21:48:04 <elliott> No authors matched "Johansen, Ørjan" (Best format is: last name, first initial*)
21:48:05 <elliott> oerjan: oh
21:48:08 <elliott> aha
21:48:13 <elliott> Ørjan Johansen coauthored with Johan F. AarnesMR2174240 (2006m:28017)
21:48:14 <elliott> Johan F. Aarnes coauthored with Richard V. KadisonMR0240633 (39 #1980)
21:48:14 <elliott> Richard V. Kadison coauthored with Jacques DixmierMR1614553 (99k:01056)
21:48:14 <elliott> Jacques Dixmier coauthored with Paul Erdős1MR0909556 (89a:11040)
21:48:19 <elliott> oerjan: is that correct?
21:48:26 <oerjan> rings a bell :P
21:49:03 <elliott> oerjan: now the problem is, i don't know what i did to make that work :P
21:49:15 <elliott> aha i got you
21:49:29 <elliott> oklopol: sorry, you and oerjan aren't connected according to this thing
21:49:53 <oklopol> does it show a connection from me to Erds? am i even there?
21:49:56 <elliott> oerjan: btw you're #1 google result for oerjan
21:50:08 <elliott> oklopol: nope.
21:50:17 <elliott> oklopol: it may be some other Lastname, F* it matches
21:50:21 <oerjan> elliott: i believe using oe is rather quaint these days
21:50:23 <elliott> since it doesn't accept Lastname, Firstname for you.
21:50:45 <elliott> oerjan: unfortunately it's your account on the wrong wiki :D
21:51:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
21:51:35 <oerjan> elliott: well i get something entirely different with esolang no. 3 and wp no. 4
21:51:48 <elliott> is it still you at #1? :P
21:52:14 <oerjan> no, it's sometone unknown who owns oerjan.com
21:52:17 <oerjan> *-t
21:52:57 -!- Sgeo has joined.
21:53:06 <oerjan> elliott: also, iirc i used Johansen, O* to search with. unless Ø* actually works which i doubt.
21:53:38 <elliott> Johansen, Ø* works but Johansen, Ørjan doesn't.
21:53:58 <oerjan> oklopol: anyway have you collaborated with more than one person? otherwise just let elliott look up that person.
21:54:59 <oklopol> yeah actually i came up with that like 5 seconds ago
21:55:10 <elliott> yeah, a certain five seconds after oerjan did
21:55:20 <elliott> MR Collaboration Distance = 6
21:55:20 <elliott> Ørjan Johansen coauthored with Johan F. AarnesMR2174240 (2006m:28017)
21:55:20 <elliott> Johan F. Aarnes coauthored with Richard V. KadisonMR0240633 (39 #1980)
21:55:20 <elliott> Richard V. Kadison coauthored with András HajnalMR1614553 (99k:01056)
21:55:20 <elliott> András Hajnal coauthored with Saharon ShelahMR0357194 (50 #9662)
21:55:21 <elliott> Saharon Shelah coauthored with Manfred DrosteMR0804485 (87d:20055)
21:55:23 <elliott> Manfred Droste coauthored with Jarkko KariMR2255549 (2007i:68060)
21:55:26 <elliott> oklopol has oerjan number of at most 7
21:55:40 <oerjan> synchronistically, yesterday ken regan over at godel's lost letter confused me with a different Ørjan Johansen after looking me up on twitter (which i don't use)
21:55:59 <oerjan> there are apparently 3 of them
21:56:05 <oerjan> (At least)
21:56:24 <oklopol> that's a rather large oerjan number : /
21:56:33 <elliott> oklopol: better get collaboratin' with him
21:56:42 <oerjan> oklopol: at least it didn't go all the way to erdos
21:57:42 <oerjan> otoh if your number is 4 then presumably that's not your path to erdős either
21:58:00 <oklopol> there's just one guy with erds number 2 in our uni that i know of, and even using him i'd only get 7 :/
21:58:26 <Ngevd> I have never written a paper, with or without a co-author
21:58:28 <Ngevd> :/
21:58:32 <elliott> oklopol: note that it apparently can't find your erdos path :P
21:58:42 <elliott> oh wait
21:58:44 <elliott> it can't find you at all ofc
21:58:50 <elliott> i'll just try JARKKO'S
21:58:54 <oklopol> 3
21:58:55 <elliott> and
21:58:56 <elliott> add one
21:59:02 <oklopol> +1 = 4
21:59:05 <elliott> Jarkko Kari coauthored with Cristopher MooreMR1890808 (2003b:68121)
21:59:05 <elliott> Cristopher Moore coauthored with Leonard J. SchulmanMR2291004
21:59:05 <elliott> Leonard J. Schulman coauthored with Paul Erdős1MR1289067 (95e:52025)
21:59:05 <elliott> yeah
21:59:23 <elliott> oerjan: would you come out of RETIREMENT to collaborate with oklopol, pls say yes
21:59:44 * oerjan sidles away
21:59:54 <oklopol> my colleague made this esolang thingie, maybe oerjan could prove it tc
22:00:29 <elliott> oerjan: I'LL JUST HAVE TO WRITE FANFICTION ABOUT IT THEN
22:00:33 <oklopol> and we could publish it in silly computational universality magazine
22:01:26 <oerjan> unfortunately the words "maybe you should publish this" has been shown to have a strong negative effect on my motivation (see :()^ tcness instance)
22:01:32 <oerjan> *have
22:01:44 <elliott> oerjan: who said that again :P
22:01:46 <oklopol> he already did fibonacci, but we haven't been able to do general lambdas yet
22:01:46 <elliott> was it me
22:01:52 <oerjan> it was ais523
22:02:06 <oklopol> :()^ as a subset of underload?
22:02:06 <oerjan> well maybe not those exact words
22:02:09 <oerjan> yeah
22:02:10 <elliott> oklopol: yeah
22:02:59 <oklopol> oerjan: can you explain it to me so i can publish it?
22:03:16 <oerjan> no.
22:03:19 <oklopol> darn
22:03:22 <elliott> oklopol: yes
22:03:27 <elliott> oklopol: http://esolangs.org/wiki/Underload#Underload_minimization
22:03:31 <oerjan> well, it's on the wiki
22:03:38 <elliott> oklopol: iterate down to "Removal of ! from :!()^ programs"
22:03:50 <elliott> oklopol: by iterate i mean... read
22:04:07 <oklopol> omg ima be a famous
22:04:28 <elliott> oerjan: i love that implementation of ~
22:04:29 <elliott> it's so ugly :D
22:04:43 <oerjan> O KAY
22:05:18 <oerjan> it's also elegant, it uses a subroutine for doing (x)~ with a fixed (but arbitrary) x, twice.
22:06:08 <elliott> heh
22:06:11 <Phantom_Hoover> http://www.reddit.com/r/DoesAnybodyElse/comments/mkc6y/dae_secretly_want_to_see_the_entire_global/
22:06:20 <Phantom_Hoover> I regret reading this; everyone else can regret it too.
22:06:43 <elliott> Phantom_Hoover: dae secretly want to see the entire global marshmallow industry start doing intensive charity work
22:06:45 <oerjan> or they can regret something else if they want to </zzo38>
22:07:01 <elliott> Phantom_Hoover: "EDIT: Thank all of you for the massive amount of data I have collected in this psych experiment on herd mentality. My professor will be pleased. Again thank you!"
22:07:04 <Phantom_Hoover> elliott, marshmallows for EVERYTHING.
22:07:10 <Phantom_Hoover> Also that was pretty funny.
22:08:01 <Phantom_Hoover> "The most impressive thing about this thread is how everyone who sides with op is getting downvoted. People seem so afraid of change that they're willingly accept every single shit that's going wrong in the world, if only it does not get worse. Can you imagine the power you give the "1%" like its called so eagerly today with this attitude?"
22:08:12 <Phantom_Hoover> Do you even understand infrastructure.
22:08:28 <Sgeo> Phantom_Hoover, is that the "Let's destroy the world economy" thread?
22:08:32 <Phantom_Hoover> Yes.
22:09:13 <Phantom_Hoover> On second thoughts, that thread seems to rely on people not understanding how... not fragile, but crucial, the global economy is to their survival.
22:10:03 <Phantom_Hoover> "I publicly hope it will. The alternative is far worse." Billions will die but AT LEAST THE BANKS WILL BE GONE.
22:10:08 -!- SgeoN1 has joined.
22:10:33 <SgeoN1> Two of my friends wwould die rather quickly, they need medicine to live
22:10:53 <shachaf> Hey, it's Phantom_Hoover.
22:11:00 <shachaf> Phantom_Hoover: Did you see my exciting new programming language?
22:11:12 <Phantom_Hoover> IS IT A BRAINFUCK DERIVATIVE
22:11:14 <elliott> Yes.
22:11:23 <monqy> hi
22:11:27 * Phantom_Hoover leaps at shachaf, brick in hand.
22:11:46 <Phantom_Hoover> SgeoN1, you live in New York, right?
22:12:08 <Phantom_Hoover> So ~a billion miles from the nearest industrial farm?
22:12:09 <shachaf> Phantom_Hoover: Reference implementation: $ tr '12345678' '[]<>-+,.' | bf
22:12:34 * Phantom_Hoover slams brick into shachaf's head, delicately catches brain from other side.
22:12:48 <SgeoN1> Yes to the NY thing, I don't know where farms are
22:12:51 * Phantom_Hoover — OK no that's too far.
22:13:05 <Phantom_Hoover> (I will have to survive on, like, sheep.)
22:13:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
22:13:55 <SgeoN1> I take it that I could not possibly buy enough nonperishables to survive for a decent amount of time, if I thought that something might happen?
22:14:28 <Ngevd> SgeoN1, not if everyone else is thinking the same thing
22:14:34 <Phantom_Hoover> Well obviously you'd just start eating dirt until you died, so I suppose you'd at least die happy.
22:14:54 -!- Sgeo has joined.
22:14:58 <oerjan> wait you get happy from eating dirt?
22:15:07 <Phantom_Hoover> Sgeo would.
22:15:14 <oerjan> ah.
22:15:22 <SgeoN1> I would?
22:15:48 <Phantom_Hoover> Well it's everywhere and you just shove a clod of it into your mouth.
22:15:57 <Phantom_Hoover> I thought that was your perfect food.
22:16:07 <Sgeo> lol
22:16:29 <oerjan> it is if you're an earthworm
22:16:55 <Phantom_Hoover> Ah, no, earthworms at least aim for the detritus layer.
22:17:01 <Phantom_Hoover> Sgeo would just take any old dirt.
22:18:17 * Phantom_Hoover throws shachaf's brain into elliott's head.
22:18:28 <shachaf> Uh-oh.
22:18:32 <oerjan> eek, you're creating a monster!
22:18:34 <elliott> shachaf: You have to change nicks so I can become you now.
22:18:38 <Ngevd> Phantom_Hoover eats the brains of people who make brainfuck derivatives
22:18:54 <Ngevd> Eventually he will have enough brains to make the ULTIMATE BRAINFUCK DERIVATIVE
22:19:00 <oerjan> at least you don't!¤#)/&%/NO CARRIER
22:20:24 <Phantom_Hoover> Ngevd, why would I eat them, they're disgusting.
22:21:48 <shachaf> elliott: I'm in ~100 channels; changing nicks would be too spammy. :-(
22:21:53 -!- Sgeo has quit (Ping timeout: 248 seconds).
22:23:59 -!- mithridates has joined.
22:24:24 -!- Sgeo has joined.
22:24:27 <elliott> `welcome mithridates
22:25:02 <elliott> Oh, right.
22:25:06 <elliott> HackEgo isn't here.
22:25:12 <elliott> mithridates: Sorry, you get the boring non-automated welcome.
22:25:24 <elliott> mithridates: Hi esolangs http://esolangs.org/wiki/Main_Page.
22:25:36 <Sgeo> mithridates is clearly an esolangs!
22:25:39 <Sgeo> (Sorry, had to)
22:26:08 <elliott> mithridates: Sgeo is our resident bot.
22:26:22 <mithridates> what the hell is going on here? are you guys fucking with me?
22:26:22 * Sgeo beeps
22:26:26 -!- lament has joined.
22:26:30 <mithridates> I'm leaving
22:26:32 <lament> bye
22:26:32 <Sgeo> Hi
22:26:33 <elliott> mithridates: What.
22:26:33 <Sgeo> Wait
22:26:54 <Sgeo> mithridates, I'm not a bot, and elliott likes to mess with people sometimes, but
22:27:06 <Sgeo> mithridates, he's not messing with you when he says that this is about esolangs
22:27:07 <lament> mithridates asked me to ban everyone in here
22:27:14 <lament> who do i start with
22:27:19 -!- pikhq_ has quit (Ping timeout: 240 seconds).
22:27:20 <elliott> start with mithridates and lament
22:27:24 <lament> okay
22:27:30 <mithridates> yeah do it lament
22:27:32 -!- pikhq has joined.
22:27:37 -!- ChanServ has set channel mode: +o lament.
22:27:38 <Sgeo> Wait what?
22:27:42 -!- lament has set channel mode: +b *!*mithridat@unaffiliated/mithridates.
22:27:46 -!- lament has set channel mode: +b *!*lament@184.71.170.*.
22:27:53 -!- lament has kicked mithridates mithridates.
22:27:56 -!- lament has kicked lament lament.
22:28:02 <elliott> disaster averted
22:28:15 <elliott> Sgeo: are you sure mithridates isn't from #jesus
22:28:18 <elliott> i recall that name.
22:28:28 <Sgeo> I don't see em there
22:28:35 <Sgeo> And don't remember the name
22:28:41 -!- Ngevd has quit (Ping timeout: 258 seconds).
22:28:48 <oerjan> <shachaf> elliott: To be fair, -> isn't -- actually, I can't think of any way to be fair. <-- garden path sentence if i ever saw one
22:28:58 <elliott> oerjan: you might want to read the last ~40 lines or so :P
22:29:01 <elliott> before continuing logreading
22:29:05 <elliott> * mithridates (~mithridat@unaffiliated/mithridates) has joined #esoteric
22:29:06 <elliott> onwards
22:29:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:29:22 <shachaf> Wait, what happened to lament?
22:29:41 <Sgeo> shachaf, e banned and kicked emself
22:29:41 <elliott> shachaf: Well, the last we heard, lament was denying he knew what this channel was altogether.
22:29:54 <elliott> For a few years before that he only joined to yell at people.
22:30:00 <elliott> So... who knows!
22:30:03 <shachaf> elliott: Are you an op in this channel?
22:30:08 <elliott> No.
22:30:14 <elliott> fizzie, oerjan and ais523 are the active ops.
22:30:23 <elliott> lament is the only banned op, which is quite a distinction.
22:30:36 <ais523> elliott: hmm, did lament remove his own op rights?
22:30:44 <ais523> or just set himself to opped and banned, and leave it that way?
22:30:48 <elliott> ais523: Dunno.
22:30:58 <elliott> They're still there.
22:31:12 * elliott has been dubious of lament's op rights for a while.
22:31:14 <monqy> so he can ban himself again if necessary, clearly
22:31:58 <oerjan> <elliott> oerjan: you might want to read the last ~40 lines or so :P <-- scary
22:32:13 <SgeoN1> Is he able to unhandy himself?
22:32:21 <SgeoN1> Unban
22:32:35 <SgeoN1> How is unhandy even a word?
22:32:39 <elliott> SgeoN1: he can with chanserv
22:32:45 * elliott asks mithridates what the heck that was, against his better judgement.
22:32:51 <elliott> I do everything against my better judgement.
22:32:57 <elliott> That's why I have a worse judgement to contradict it.
22:33:10 <elliott> <elliott> What was that, anyway.
22:33:10 <elliott> <mithridates> What was that, anyway.
22:33:11 <elliott> <elliott> You took the words right out of my mouth.
22:34:19 <shachaf> You'd be lost for words!
22:34:22 <shachaf> You'd be tongue-tied.
22:34:28 <shachaf> Like a nightingale at a Roman feast.
22:34:35 <elliott> They haven't said anything else. :'(
22:35:01 <shachaf> Like a mute in a monologue.
22:35:31 <elliott> Like an elliott in a /msg with mithridates.
22:35:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
22:37:14 <ais523> `addquote <elliott> I do everything against my better judgement. <elliott> That's why I have a worse judgement to contradict it.
22:37:20 <ais523> `quote
22:37:22 <ais523> `quote
22:37:23 <ais523> `quote
22:37:24 <ais523> `quote
22:37:27 <ais523> wait, HackEgo isn't here
22:37:31 <ais523> do I have to do a fifth `quote anyway?
22:37:32 <elliott> lmao
22:37:33 <ais523> `quote
22:37:34 <elliott> yes
22:37:35 <ais523> just to make sure
22:37:41 <elliott> Gregor: FIX IT DAMMIT
22:39:13 -!- Sgeo has joined.
22:39:29 <elliott> Sgeo: You fix it.
22:39:56 <SgeoN1> Sure, I'll run it from my computer. That would be fine, right?
22:40:02 <elliott> -r-------- 1 root root 140737486262272 Nov 23 22:39 /proc/kcore
22:40:02 <elliott> Gosh.
22:40:07 <elliott> SgeoN1: If you cloned the FS repo, sure.
22:40:16 <oerjan> wat
22:40:56 <SgeoN1> ...that was a joke
22:41:11 <elliott> SgeoN1: It would be fine, if you got the fshg.
22:41:14 <elliott> oerjan: wat wat
22:41:47 <SgeoN1> So, you'd like to have a bot that disconnects every 5 minutes?
22:42:18 <monqy> who wouldn't
22:42:32 <elliott> SgeoN1: better than one that never disconnects because its not here
22:42:37 <elliott> SgeoN1: what is even up with your connection
22:43:04 <SgeoN1> elliott, not the faintest idea. The wifi in the apartment is fine
22:43:33 <elliott> SgeoN1: It's fine but it keeps disconnecting?
22:44:16 <SgeoN1> Its something with my computer, I mean. Not sure if hardware or softwarr
22:45:31 <elliott> SgeoN1: Have you tried using Linux.
22:45:53 <SgeoN1> I am using Linux.
22:46:15 <elliott> SgeoN1: Have you tried using Windows.
22:46:39 <SgeoN1> Not sure I want to look for a copy of Windows
22:47:03 <elliott> SgeoN1: Have you tried using ... QNX?
22:47:06 <elliott> BeOS?
22:47:09 <elliott> AmigaOS 4?
22:47:35 <SgeoN1> I wish I could try not being ill
22:47:50 <monqy> this would help
22:48:27 <elliott> SgeoN1: I think that's called "getting better"? Have you tried it.
22:51:29 <oerjan> elliott: wat huge core
22:52:21 <elliott> oerjan: it's 2^47 terabytes and iirc 2^48 is the address width of x86-64 or whatever
22:52:30 <elliott> so i guess it's half the address space the kernel cares about or something
22:52:41 <oerjan> ic so very virtual
22:57:15 -!- CakeProphet has joined.
22:57:26 <CakeProphet> ho
22:57:44 <elliott> you got your nick wrong
22:58:34 <elliott> CakeProphet:
22:58:36 -!- calamari has joined.
23:00:33 -!- CakeProphet has quit (Read error: Connection reset by peer).
23:01:11 -!- CakeProphet has joined.
23:01:11 -!- CakeProphet has quit (Changing host).
23:01:11 -!- CakeProphet has joined.
23:01:31 -!- CakeProphet has changed nick to kallisti.
23:01:47 <kallisti> for some reason reconnecting with irssi is completely unintuitive
23:01:48 <elliott> hello kallisti "cakeprophet" kallisti
23:02:05 <elliott> -NickServ- Information on Kallisti (account Kallisti):
23:02:07 <elliott> kallisti: nice uppercase :}
23:02:13 <kallisti> thanks
23:02:17 <elliott> kallisti: by which i mean
23:02:19 <elliott> kallisti: it burns it burns
23:02:29 <kallisti> elliott: eat it
23:02:32 -!- copumpkin has joined.
23:02:37 <elliott> thanks
23:03:53 <oerjan> ken regan pointed me to this which reminds me of evincar's language. i'm not sure whether it's more or less insane... http://www.cse.buffalo.edu/~regan/papers/pdf/PRS01.pdf
23:04:32 <oerjan> at least it's supposedly self-consistent
23:04:50 <kallisti> .....wtf irssi
23:04:54 <kallisti> why is it so difficult to just...
23:04:55 <kallisti> reconnect
23:05:07 <kallisti> without create multiple connections
23:05:13 <elliott> oerjan: which one
23:05:15 <elliott> kallisti: /reconnect?
23:05:22 <kallisti> which
23:05:23 <kallisti> er
23:05:23 <kallisti> yes
23:05:27 <kallisti> that's what I do.
23:05:30 <kallisti> it makes Freenode2 often
23:05:40 <oerjan> elliott: the one with automatic currying or what it was
23:08:02 <oerjan> kallisti: i usually just /disconnect and then /connect freenode, iirc
23:08:59 <oerjan> usually when there's a huge netsplit and i'm on the wrong side
23:09:10 <kallisti> stupid
23:09:15 <kallisti> you know what I do when there's a netsplit?
23:09:16 <kallisti> nothing.
23:09:17 <kallisti> it's wonderful
23:09:21 <kallisti> I just wait, and then everything is fine.
23:09:27 <kallisti> except for that one.
23:09:33 <kallisti> The Great Netsplit Of Several Hours
23:09:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
23:10:04 <oerjan> well i'm talking "looks like i'm nearly alone on the server" netsplits
23:11:17 -!- Sgeo has joined.
23:12:25 <kallisti> elliott: I was thinking bombs would be cool because you could send them into the oribts of planets
23:12:47 <kallisti> but the problem I'm having with orbits is that orbits are probably going to be difficult to create.
23:12:55 <elliott> I dunno about Phantom_Hoover, but I don't think your player should be able to blow up a planet.
23:13:07 <kallisti> how about moons? :P
23:13:17 <elliott> And that's sort of the whole challenge to it; it's not impossible, Phantom_Hoover said he had a fairly easy time of getting into orbits with that JS thing.
23:14:04 <Phantom_Hoover> It... kind of helps that I found out about that from a post on the guy's blog where he implemented it to play around with Hohmann transfers.
23:14:05 <oerjan> http://www.airshipentertainment.com/growfcomic.php?date=20070624
23:14:19 <kallisti> elliott: okay so now you're in orbit. what do you do now?
23:14:23 <kallisti> what was the benefit.
23:14:28 <oerjan> (relevant)
23:14:56 <elliott> Phantom_Hoover: You explain why the whole game is basically based around orbits to kallisti.
23:15:25 <Phantom_Hoover> They're the only way to move in a gravity field?
23:16:26 <kallisti> er, so it's not possible to break escape velocity?
23:17:04 <Phantom_Hoover> No, but that's a good way of moving outside a gravity field.
23:17:10 <Phantom_Hoover> FSVO 'in'.
23:17:58 <elliott> kallisti: how do you propose to make things interesting without orbits
23:18:06 <elliott> moving around in a vacuum is not fun or strategic at all
23:18:31 <kallisti> I don't propose that
23:18:43 <elliott> you propose to make things boring? :P
23:18:48 <kallisti> merely curious as to how orbits would make things more interesting besides "weeee circle"
23:19:33 <kallisti> elliott: no, I'm not proposing that planets don't have gravity. that's silly.
23:19:49 <elliott> I... defer to Phantom_Hoover again, because I can't think of any way to explain why complicated orbit systems are interesting other than "they are".
23:19:53 <kallisti> it's more of a question related to gameplay, I suppose.
23:20:58 <kallisti> a gravity-assisted manuever that allows you to travel across the system at a faster rate is an extremely complicated procedure, for example.
23:21:10 <kallisti> at least ones that involve multiple planets
23:21:20 <kallisti> but I suspect even a single planet would be difficult
23:21:56 <elliott> kallisti: The problem is that you're seeing orbits as just a means to the end of going very fast and shooting at things in a vacuum?
23:22:05 <kallisti> it's not something that's going to be easy without say... an automated control system that what NASA uses to do precision manuevers.
23:22:07 <kallisti> elliott: no that's one.
23:22:27 <elliott> Phantom_Hoover: Just link kallisti to that JS thing so he can plyy with it himself :P
23:22:29 <kallisti> elliott: but yes I'm trying to find means to an end from orbits, as typically games have means to ends blah blah blah
23:22:40 <elliott> s/plyy/play/
23:23:17 <Phantom_Hoover> http://www.matthen.com/javascript/gravity.html
23:23:23 <kallisti> I suppose it would be /fun/, sure. I'm not arguing it won't be fun.
23:26:09 <elliott> Phantom_Hoover: Got a link to that blog post, btw?
23:27:20 <kallisti> hmmm, okay
23:29:58 <Phantom_Hoover> I should try a slingshot on that, actually.
23:31:24 <elliott> Phantom_Hoover: Yes good do it
23:32:43 <kallisti> right I forgot that the low-powered thrust makes it easier to control an orbit
23:33:16 -!- myndzi\ has joined.
23:33:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
23:33:51 <Phantom_Hoover> I managed it, but controlling it is another thing altogether.
23:35:53 -!- myndz\ has quit (Ping timeout: 240 seconds).
23:36:15 <elliott> Phantom_Hoover: Man this blog post is impossible to find.
23:36:16 <kallisti> heh, it's difficult to get into orbit with the fast moving moons.
23:36:26 <Phantom_Hoover> http://blog.matthen.com/page/6
23:36:38 -!- Sgeo has joined.
23:37:53 <kallisti> elliott: I remember in gravity well, in deep space, you could become prefectly still
23:37:56 <kallisti> you know, if that's your thing.
23:38:17 <elliott> kallisti: Just turn on the space breaks.
23:38:38 <kallisti> well, kind of...
23:38:47 <elliott> Phantom_Hoover: Can we have space breaks.
23:38:54 <Phantom_Hoover> Yes.
23:38:56 <elliott> Phantom_Hoover: "Today on Twitter I have been talking a little bit about how Edinburgh is pronounced."
23:39:03 <kallisti> so I'm thinking the game would perhaps benefit from multiple maps?
23:39:14 <elliott> kallisti: Maps in what sense?
23:39:25 <kallisti> like a star system / star cluster / whatever scale is the largest map
23:39:38 <kallisti> then map that's nearby and larger scale so that you can aim trajectories and the like
23:40:03 <kallisti> basically so the interface can accomodate precision spaceflight to a degree.
23:40:07 <elliott> Sure. That's another rvival of the what-scale question :P
23:40:24 <kallisti> well I would think /at least/ star system.
23:40:28 <kallisti> >_>
23:40:35 <elliott> Depends how big stars and planets are.
23:41:01 * Phantom_Hoover → sleep
23:41:02 -!- Phantom_Hoover has quit (Quit: Leaving).
23:42:05 <kallisti> elliott: how about the stars and planets are normal size but the ship is huge? :P
23:42:17 <elliott> Yees.
23:43:40 <elliott> oerjan: this language is weird
23:44:16 <kallisti> also can you crash into planets and die?
23:44:22 <kallisti> if so I've already died like 20 times now in this JS thing.
23:44:34 <elliott> kallisti: There is collision detection, yes.
23:45:21 <elliott> There's also heat, so good luck with that.
23:46:10 <kallisti> hope the stronger thruster (if it exists) will match escape velocity of some medium-sized planets.
23:46:16 <kallisti> *hopefully
23:47:39 <elliott> Boring?
23:47:55 <elliott> Your ideas keep sounding like "let's remove all the learning curve so that navigation is completely trivial" :P
23:47:59 <kallisti> not as boring as dying by planet collision.
23:48:10 <kallisti> frequently
23:48:14 <kallisti> but okay, we'll see.
23:48:53 -!- ais523 has quit (Remote host closed the connection).
23:49:43 <elliott> oerjan: this thing would make a good esolang
23:49:49 <kallisti> elliott: also powerful thruster != sudden gravity immunity
23:50:05 <kallisti> it's just a mean to move fast suddenly sometimes that the weaker thruster doesn't allow
23:53:15 <kallisti> also gas giants will be tricky without such a thing I imagine.
23:53:28 <kallisti> s/tricky/near impossible to not die at least sometimes/
23:54:54 -!- itidus21 has joined.
23:55:13 <kallisti> `welcome itidus21
23:55:25 <elliott> hackego is down
23:55:28 <elliott> hi itidus21
23:55:29 <kallisti> :(
23:55:36 <kallisti> HELP HOW DO I WELCOME PEOPLE WITHOUT BOTS???
23:56:03 <kallisti> itidus21: list-communication-protocol
23:56:05 <kallisti> uh.....
23:57:11 <Sgeo> I think itidus21 has been here before
23:57:18 <kallisti> no
23:57:19 <kallisti> no way.
23:57:21 <kallisti> unpossible
23:57:23 <kallisti> I refuse to blieve it.
23:57:26 <kallisti> I would recognize him.
23:57:33 * kallisti has perfect memory.
23:57:36 <kallisti> eidetic or whatever.
23:57:40 <Sgeo> The name is familiar, at least
23:57:56 <Sgeo> `log itidus
23:57:58 <Sgeo> BLA
23:58:00 <elliott> does Sgeo really not ermember good ol itidus
23:58:02 <elliott> `quote itidus
23:58:03 <elliott> OH WAIT
23:58:18 <elliott> Sgeo: http://codu.org/projects/hackbot/fshg/index.cgi/file/06a2f5c42c24/quotes
23:58:20 <elliott> grep /itidus/
23:58:30 <elliott> actually http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/06a2f5c42c24/quotes
23:58:34 <elliott> since that thing messes up wordwrap
23:58:34 <kallisti> how do u grep without hackego?????
23:58:35 <kallisti> :(
23:58:48 <kallisti> hackego is what I used to think
23:58:51 <kallisti> now I can't think.
23:59:57 <shachaf> kallisti: I wasn't welcomed even *with* bots. :-(
2011-11-24
00:00:40 <kallisti> elliott: so, even if you can't blow up planets
00:00:52 <kallisti> you can black hole them?
00:01:08 * Sgeo hurls kallisti into a <<loop>>
00:01:09 <elliott> what.
00:01:18 <kallisti> you mentioned being able to produce black holes
00:01:21 <oerjan> elliott: so it would
00:01:24 -!- itidus21 has quit (Read error: Operation timed out).
00:01:49 <elliott> The input to the interpreter has the form [interpreter, program, current line, state]. The in-
00:01:49 <elliott> terpreter is (if π3 (π3 ( )) then π1 (π4 ( )) else π1 (Update)) Υ9 , where Update is the term
00:01:49 <elliott> [ a Υ ( [π1 ( b ), π2 ( c ), d Υ ([π2 ( e ), π4 ( e )] Υ2 e ), f Υ π4 ( g )]
00:01:49 <elliott> Υ
00:01:49 <elliott> b
00:01:50 <elliott> c π1 (π3 ( d ))
00:01:52 <elliott> e π2 (π3 ( f ))
00:01:53 <elliott> g
00:01:56 <elliott> )
00:01:58 <elliott> ] Υ (π1 ( ))a b c d e f g .
00:02:00 <elliott> aww, it messed up the formatting
00:02:01 <elliott> and
00:02:03 <elliott> the words
00:02:05 <elliott> and symbols
00:02:25 <kallisti> noooo itidus
00:02:28 <kallisti> WHYYYYYY
00:02:30 <kallisti> wierhiuwheriuhweurhwreih
00:02:34 <kallisti> I am can't go on
00:02:37 * kallisti dies.
00:02:59 <elliott> kallisti: what
00:03:00 <elliott> oh
00:03:01 <elliott> rip
00:03:46 <kallisti> elliott: ripped your mom apart in that dung blizzard
00:03:48 <kallisti> pahhhhh
00:03:51 <kallisti> pah pha pah ha pha
00:03:51 -!- itidus21 has joined.
00:03:54 <kallisti> itidus21: hi
00:04:03 <elliott> oerjan: "Because UPSILON is Turing-compete and has a composition function, it is an acceptable programming system"
00:04:05 <elliott> whatever you say...
00:04:22 <oerjan> elliott: hey by _our_ standards...
00:04:24 <kallisti> elliott: all turing complete languages with a composition function are acceptable. QED
00:04:43 <elliott> kallisti: "as defined by Rogers [Rog58]." :P
00:04:54 <kallisti> does
00:04:57 <kallisti> dooes his last name start with a G?
00:05:28 <oerjan> eek, our recent changes page is _only_ spam deletion
00:05:43 <elliott> oerjan: yep!
00:07:05 <kallisti> stars should probably be immovable
00:07:19 <kallisti> but I think planet destruction could be based on individual planets.
00:07:25 <elliott> kallisti: there is no "star". there's just a big, massive, hot object floating about.
00:07:31 <kallisti> small ones would be easier to destroy, presumably.
00:07:38 <kallisti> elliott: and what do you call that object?
00:07:53 <elliott> kallisti: a star. i'm saying it's not special-cased in the physics.
00:07:59 <elliott> you can't have an "immovable" star.
00:08:00 <kallisti> also small planets have lesser impact on the star systems orbits so... not gamebreaking.
00:08:24 <kallisti> elliott: I mean indestructable. practically
00:08:25 <kallisti> not in the code
00:08:28 <kallisti> as in
00:08:32 <kallisti> nothing you have will do anything to it.
00:08:47 <elliott> that's also mostly a property of the object itself :P
00:09:00 <kallisti> uh, sure
00:09:03 <kallisti> if you want to be incredibly vague.
00:09:40 <kallisti> like mercury for example
00:09:43 <kallisti> is basically a big asteroid
00:09:50 <kallisti> I should be able to blow that motherfucker up.
00:10:26 <itidus21> i don't mean to interrupt but what game is this under discussion?
00:10:40 <itidus21> should i look at logs perhaps?
00:10:43 <elliott> aii
00:10:46 <elliott> hi itidus21
00:10:46 <itidus21> ok
00:11:05 <elliott> by reading the word "aii" you now know everything about the game :P
00:11:13 <oerjan> yay
00:11:29 <oerjan> um, is it an actual game or something under design?
00:11:52 <elliott> oerjan: latter, although there is code
00:12:22 <kallisti> elliott: how about can I land on planets instead?
00:12:25 <kallisti> if I'm going slow
00:12:32 <kallisti> instead of dying on them
00:12:51 <elliott> kallisti: you could... rest on it? there's no atmospheres.
00:12:54 <elliott> kallisti: i am pretty sure you would just burn up though.
00:13:08 <kallisti> ah yes heat
00:13:13 <kallisti> so gas giants are not gas giants
00:13:16 <kallisti> but rock giants :P
00:13:27 <elliott> kallisti: well you could just turn collision off...
00:13:35 <elliott> for those
00:13:58 <kallisti> great so now instead of colliding into planets and dying I can get sucked into their massive gravitational pull :P
00:15:49 <kallisti> elliott: also I feel there's a lack of character-driven story
00:15:53 <kallisti> perhaps the planets can be people
00:15:55 <kallisti> and have personalities
00:15:58 <kallisti> (...)
00:16:00 <elliott> the story is that you hate whoever you're playing with
00:16:31 <kallisti> if Jupiter is jealous of Mercury's small body
00:16:41 <kallisti> and wants to lose all that gassy weight.
00:16:59 <kallisti> makes the story more dynamic
00:18:31 <kallisti> elliott: anyway I doubt we can use realistic radii for planets
00:18:40 <kallisti> because if you make the ship large enough so that Jupiter fits on screen
00:18:53 <kallisti> earth-sized planets are now tiny dots in comparison to your ship.
00:19:19 <oerjan> yeah you could have like Jupiter be the king of the planets, and say Mercury could be the messenger because he's fast. And Venus could be the hot chick. Nah wait, too ridiculous.
00:19:45 <itidus21> lol
00:22:44 <itidus21> and you could tell stories of their interactions to explain various earthly phenomena
00:23:12 <oklopol> jupiter's the fat guy who has horrible gas. but he's still a pretty cool guy.
00:23:23 <oklopol> wait what are we doing
00:23:33 <oerjan> oklopol: terribly whooshy gas
00:23:57 <oklopol> well fuck you too :D
00:24:24 <oklopol> you can't expect me to read more than one random line
00:24:28 <oklopol> of backlog
00:24:30 <oerjan> indeed
00:25:10 <elliott> oklopol: making a game (not as good as your games don't worry)
00:25:23 <kallisti> elliott: but it would be cool if you plug in parameters for the solar system into a map editor and it creates a working model of the solar system.
00:25:28 <oklopol> well that goes without even saying it goes without saying.
00:25:39 <elliott> `addquotebutthebotsnothere <oklopol> well that goes without even saying it goes without saying.
00:25:43 -!- Darth_Cliche has joined.
00:26:03 <oklopol> so why is this game about?
00:26:13 <elliott> there is no why, alas.
00:26:17 <oklopol> good
00:26:29 <oklopol> i will continue doing nothing
00:26:38 <kallisti> elliott: lies
00:26:42 <kallisti> there are at least two whys
00:26:45 <oklopol> i will try my best to nontribute to this game
00:27:25 <kallisti> elliott: okay so if we have like
00:27:26 <kallisti> some kind of roll
00:27:30 <kallisti> and when you execute this roll
00:27:32 <elliott> oklopol: good because you SUCK lol
00:27:34 <kallisti> it reflects projectiles
00:27:35 <kallisti> away from you
00:27:57 <elliott> that's called a shield, kallisti
00:28:10 <kallisti> hmmmm, no
00:28:12 <kallisti> it's more like
00:28:12 <itidus21> a barrel roll?
00:28:14 <kallisti> like a barrel roll
00:28:15 <kallisti> yes
00:28:16 <kallisti> itidus21: thank
00:28:52 -!- Darth_Cliche has changed nick to Klisz.
00:29:03 <kallisti> elliott: HAHA I AM BEING HUMEROUS FOR HUMER EFFECT GET IT
00:29:05 <itidus21> Thanks a lot, Peppy...
00:29:11 <elliott> no ur bad person
00:32:36 <oklopol> "<elliott> oklopol: good because you SUCK lol" xD
00:32:49 <elliott> oklopol: no im being so dreadfully sincere your games are the WORST
00:32:55 <oklopol> yyyyeah :D
00:33:00 <elliott> but i
00:33:02 <elliott> want you to
00:33:03 <elliott> get offended
00:33:08 <elliott> so i can apologise??
00:33:16 <oklopol> i'm really trying
00:33:40 <kallisti> oklopol: I'm sorry oklopol
00:34:30 <oklopol> argh, and now that's gonna go to waste
00:34:48 <oklopol> listen i'll get some sleep and see if i can muster up some in the morning
00:35:02 <oklopol> you'll work on your "game"
00:35:13 <oklopol> erm
00:35:15 <oklopol> i meant to say
00:35:18 <oklopol> "work"
00:35:26 <elliott> oklopol: no but its not a game its actually
00:35:26 <elliott> a plan
00:35:28 <elliott> tok ill you
00:35:30 <elliott> to death
00:36:33 <oklopol> huh. well i guess i'm ever gladder i didn't colluberate.
00:36:48 <elliott> oklopol: no but
00:36:49 <elliott> if you collaborates
00:36:50 <elliott> d
00:36:54 <elliott> we were going to hold off.
00:36:58 <oklopol> oh that's how it's spulled
00:37:34 <oklopol> well that's not gonna make me collaboratesd because i now knowsd the plan.
00:38:00 <oklopol> i really have to sleep. after this episode.
00:38:08 <oklopol> bye night.
00:38:58 <elliott> oklopol: but do you knowsd
00:39:02 <elliott> oklopol: that you're goingsd tosd
00:39:04 <elliott> oklopol: diesd
00:45:42 -!- MSleep has joined.
00:46:52 -!- MSleep has changed nick to MDude.
00:48:29 <oerjan> goosd grammarsd
00:50:14 <elliott> die oerjan, die
00:50:18 <elliott> oerjan: are you a physics
00:50:44 <oerjan> no am chemic
00:51:01 <elliott> ok.
00:51:20 <elliott> oerjan: code aii's physics engine thanks, chemic are good at this
00:52:07 <oerjan> engine go boom
00:52:18 -!- PiRSquared17 has joined.
00:53:02 <oerjan> aii aii o
00:53:52 -!- itidus20 has joined.
00:55:16 <elliott> itidus21 decremented
00:55:17 -!- EgoBot has quit (Remote host closed the connection).
00:55:20 <elliott> and became itidus20
00:55:26 <elliott> Gregor: noooooooo
00:55:27 -!- EgoBot has joined.
00:55:32 <elliott> oh PiRSquared17 looks new
00:55:36 <elliott> did someone mention the channel in #haskell again
00:55:50 <PiRSquared17> I've been here before...
00:55:53 <PiRSquared17> Last year
00:55:55 <oerjan> ah.
00:56:23 <PiRSquared17> I check the wiki...
00:56:24 <elliott> good! i won't welcome you then.
00:56:42 * elliott harsh, but fair.
00:56:43 <oerjan> yeah we don't want to be welcoming to your kind.
00:57:06 <elliott> we prefer people who've never been here, their brains are squishier and more tasty
00:57:21 <oerjan> also easier to trap
00:57:25 <SgeoN1> Darn, I was.just about tobasl if id be welcome back into the monecraft channel
00:57:39 <elliott> I was just tobasl if id be welcome back into the monecraft channel too.
00:57:43 -!- itidus21 has quit (Ping timeout: 276 seconds).
00:57:58 * elliott was going to say that PiRSquared17 should become TauRSquared8.5, but someone might actually take him seriously.
00:58:38 <PiRSquared17> tau = 2pi ?
00:58:46 <oerjan> PiRNOTSquared, PIRRound
00:58:49 <elliott> PiRSquared17: Yes :P
00:58:59 <elliott> SgeoN1: N.B. That was not actually true.
00:59:00 <PiRSquared17> That's what I thought...
00:59:47 <oerjan> moneycraft the gnome game
01:00:07 <oerjan> mooncraft the elf game
01:00:24 <oerjan> moancraft - let's not go into details
01:00:54 <oerjan> meancraft the orc game
01:01:09 <elliott> moocraft
01:01:16 <oerjan> did i mention i caught up with yafgc
01:01:22 <SgeoN1> I could have sworn I saw PiR on Reddit
01:01:29 <PiRSquared17> NOt me
01:01:32 <PiRSquared17> *o
01:01:49 <oerjan> manecraft is just horsing around
01:02:02 <oerjan> minicraft the halfling/hobbit game
01:03:04 * oerjan suddenly realizes he is confusing minecraft and DF, the joke falls off a cliff and dies
01:03:18 <elliott> it did that a long time ago
01:03:24 <oerjan> ok then
01:03:34 <oerjan> it just didn't realize until it looked down
01:03:54 <SgeoN1> Dwarfcraft
01:08:24 -!- yorick has quit (Quit: No Ping reply in 180 seconds.).
01:08:52 -!- yorick has joined.
01:14:22 -!- itidus22 has joined.
01:15:36 -!- Jafet has joined.
01:22:51 -!- itidus20 has quit (Read error: Connection timed out).
01:24:25 -!- augur has joined.
01:24:46 -!- sebbu has quit (Read error: Connection reset by peer).
01:25:08 -!- sebbu has joined.
01:25:08 -!- sebbu has quit (Changing host).
01:25:08 -!- sebbu has joined.
01:31:49 -!- Klisz has quit (Quit: I AM KLISZ, FEAR ME).
01:32:31 -!- itidus22 has quit (Read error: Connection timed out).
01:33:03 -!- itidus22 has joined.
01:34:19 <oerjan> double increment detected
01:35:28 <elliott> hi itidus22 how are you enjoying your +2
01:38:16 <shachaf> `welcome shachaf
01:38:44 <oerjan> you are NOT welcome. this much should be obvious.
01:40:41 <elliott> :D
01:42:47 -!- Jafet has quit (Quit: Leaving.).
01:43:54 * shachaf :-(
01:47:25 -!- augur has quit (Remote host closed the connection).
01:53:29 -!- itidus22 has quit (Read error: Connection timed out).
01:54:04 -!- itidus22 has joined.
01:54:55 <SgeoN1> Disconnects are fun!
01:56:35 <oerjan> fun disco nectar
01:57:32 <Sgeo> Hey, I didn't end up disconnected!
01:57:51 <Sgeo> Just very high lag reporte
01:57:51 <Sgeo> which went down
01:57:57 <Sgeo> Does the server hold on to messages for a time?
01:58:13 <oerjan> maybe it
01:58:17 <oerjan> 's your evil twin
01:58:31 <SgeoN1> I said disconnects are fun at :54, XChat says :56
01:58:40 <oerjan> :54 here
01:59:12 <Sgeo> Support for the server holds onto messages until reconnect or pingout hypothesis
01:59:28 <elliott> what has that got to do with that
01:59:37 <elliott> of course the server delivers messages if you're connected...
01:59:41 <Sgeo> How else would XChat have seen my message?
01:59:46 <Sgeo> If I lost connection
02:00:04 <elliott> because
02:00:06 <elliott> you didn't lose connection?
02:00:10 <elliott> that's why the message sent??
02:00:22 <Sgeo> Then what has been happening?
02:00:44 <elliott> SgeoN1 has not disconnected before (for a long while) or since saying "Disconnects are fun"
02:00:50 <elliott> so what are you talking about?
02:01:03 <Sgeo> It's only my computer that's disconnecting
02:01:09 <Sgeo> For some reason
02:01:20 <elliott> ...then wtf is your hypothesis about?
02:01:27 <elliott> you _also_ haven't disconnected in ages
02:01:36 <Sgeo> elliott, I came close around :54-56
02:01:51 <Sgeo> I think I did disconnect, but for an amount of time less than Freenode takes to notice the pingout
02:01:59 <elliott> do you know how TCP works
02:02:22 <elliott> lost connection is indistinguishable from sufficiently large lag.
02:02:37 <elliott> so obviously freenode won't disconnect you if you lose connection for a sufficiently short amount of time
02:02:44 <elliott> nothing about "keeping messages"
02:03:18 <Sgeo> Was TCP trying to resend the messages then?
02:03:32 <Sgeo> That.. makes sense, I think
02:04:17 <elliott> Sgeo: You... realise that TCP was created because connections are really unreliable, right?
02:04:25 <elliott> It's all about retries.
02:04:30 <Sgeo> Ok
02:04:38 <elliott> Well... half retries, half maintaining the illusion of an ordered stream.
02:04:40 <Sgeo> If IRC used UDP, the effect wouldn't happen, I guess
02:05:02 <pikhq> If IRC used UDP, it would actually be entirely possible for you to miss things sent to the channel.
02:05:24 <elliott> If IRC used UDP, close enough messages would arrive in nonsense order :P
02:05:52 <elliott> Although IRC doesn't really need streaming much *shrugs*
02:06:05 <pikhq> Not to mention there would be no meaningful notion of "connection".
02:06:48 <elliott> pikhq: Well, ping timeouts are the only time IRC cares about connections, really :)
02:06:57 <elliott> I mean, there's "remote host closed the connection", but doing that with ping timeout is only like a hundred second delay, and it's a failure case anyway.
02:07:19 <elliott> pikhq: Although it does mean that you'd be limited to one connection per IP :P
02:07:54 <pikhq> elliott: Not really; UDP has seperate source/destination ports, just like TCP.
02:08:10 <elliott> pikhq: Oh, right
02:08:10 <oerjan> hm? doesn't UDP also inc... right
02:08:22 <elliott> I keep forgetting about that because no interface exposes it ever :)
02:08:29 <elliott> Well, apart from low level socket interfaces :P
02:08:47 <Sgeo> Huh, why not?
02:09:01 <oerjan> how else could UDP ever work on a multiuser machine
02:09:05 <elliott> oerjan: right
02:09:07 <elliott> Sgeo: Why?
02:09:13 <elliott> Sgeo: The source/dest ports are completely irrelevant to any actual user.
02:09:29 -!- kmc has quit (Ping timeout: 240 seconds).
02:09:33 <Sgeo> They are?
02:09:51 <pikhq> Sgeo: When you're not starting a server, BSD sockets just randomises the source port.
02:10:13 <elliott> Sgeo: Sure they are.
02:10:13 -!- kmc has joined.
02:10:13 <elliott> Sgeo: Do you know your current source/dest port?
02:10:15 <pikhq> Because the only time that it matters which port you *choose* is when you start a server.
02:10:16 <elliott> (for IRC)
02:10:21 <elliott> When would you ever need to?
02:10:53 <SgeoN1> But surely a single program needs to... well, hmm, have a destination port?
02:11:14 <oerjan> the dest is usually 6777 for irc, isn't it? or does it mean something else?
02:11:17 <SgeoN1> I mean, choose it.
02:11:21 <oerjan> er, *6667
02:11:26 <pikhq> Sgeo: Yes, it chooses *that*, but not the other one.
02:11:29 <elliott> SgeoN1: The socket library handles picking a port.
02:11:41 <pikhq> There's a *pair* of ports in each TCP or UDP session.
02:11:44 <elliott> Oh, I see what SgeoN1 means.
02:11:46 <pikhq> You only ever choose one.
02:11:46 <elliott> Well, yes, you need :6667...
02:11:55 <elliott> I mean that you don't care about the one that isn't the server port.
02:11:55 <shachaf> SCTP is the future.
02:12:00 <elliott> shachaf: Does anything route SCTP yet?
02:12:16 <shachaf> elliott: Did I *say* "SCTP is the present"?
02:12:22 <shachaf> I didn't think so.
02:12:24 <elliott> shachaf: :-)
02:12:26 <pikhq> elliott: On the greater Internet, everything should *route* it.
02:12:32 <pikhq> I don't think anything *NATs* it, though.
02:12:45 <elliott> pikhq: Quick! Run an SCTP server!
02:12:53 <pikhq> Behind a NAT.
02:12:54 -!- Rugxulo has joined.
02:12:54 <elliott> WE MUST TEST THIS
02:13:10 <elliott> Pah :P
02:13:11 <Rugxulo> https://github.com/TTimo/doom3.gpl
02:13:13 <pikhq> There's also SCTP over UDP.
02:13:18 <pikhq> Which should "just work".
02:13:20 <elliott> July 1, 2004
02:13:20 <elliott> SCTP now comes to you via satellite until DSL becomes available. This means you must be patient when downloading files since there is an additional 550ms RTT for TCP packets which causes interesting side effects. The uplink speed is 100kbps, so large downloads will take some time.
02:13:24 <elliott> pikhq: How much overhead does that give?
02:13:25 <elliott> Rugxulo: old :P
02:13:30 <elliott> A WHOLE DAY OLD
02:13:35 <Rugxulo> :-D
02:13:40 <pikhq> elliott: Not very much at all.
02:13:55 <Rugxulo> not as old as what I'm playing (id Tech 1 -- Hexen 2)
02:14:01 <pikhq> The UDP header is 32 bits.
02:14:26 <pikhq> Source port, destination port, length, and optional checksum.
02:14:38 <pikhq> (mandatory for IPv6)
02:14:38 <elliott> pikhq: There's also the algorithmic overhead, but yeah :P
02:15:14 <elliott> pikhq: Don't you mean 64 bits?
02:15:18 * elliott doesn't think ports are that small. Or, lengths and checksums.
02:15:25 <pikhq> Sorry, derp.
02:15:28 <pikhq> Yes, 64 bits.
02:15:36 <pikhq> 16 per field.
02:16:13 <elliott> pikhq: I'd rather replace IP than TCP and UDP. :(
02:16:14 <shachaf> 32 Bits, where 1 Bit = 2 bits.
02:16:39 <shachaf> It's like Calories.
02:16:45 <oerjan> a bit confusing
02:17:06 <shachaf> elliott: I'll be happy to switch to IPv@
02:17:57 <elliott> shachaf: Here's a prototype: Remove bits 96-128.
02:18:03 <elliott> (Uh, from IPv4.)
02:18:31 <elliott> Oh, IPv6's header is surprisingly simple.
02:18:35 <pikhq> ... The *IP address*?
02:18:41 <elliott> shachaf: Revised prototype: Remove bits 64-160.
02:18:44 <elliott> pikhq: The source address.
02:19:42 <pikhq> elliott: That is just going to shove it further down the protocol stack...
02:19:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
02:20:00 <elliott> pikhq: Source-independent networking.
02:20:07 <elliott> It's what's for dinner!
02:20:40 <pikhq> elliott: "Networking without replies."
02:21:00 <pikhq> *Is* there a usecase for send-only networking?
02:21:04 -!- Sgeo has joined.
02:21:44 <elliott> pikhq: I gather that there are at least two other people in the world who think this is a good idea, and one of them is Van Jacobson, so I must be doing something right.
02:22:11 <pikhq> Name to me some cases where you would like to send packets without receiving any packets in response in a network at all.
02:23:02 <Sgeo> What Introversion game should I play
02:24:13 <Sgeo> I'm thinking DEFCON, Uplink, or Darwinia, I've heard of those
02:24:21 <elliott> Sgeo: Uplink.
02:24:22 <elliott> Sgeo: Also, that's ... all of the games.
02:24:22 <elliott> Apart from Multiwinia, which is just online Darwinia, I think.
02:24:32 <Sgeo> I'm curious about DEFCON, which is also multiplayer, right?
02:24:32 <elliott> Yes, but apparently rather boring.
02:24:32 <elliott> But seriously though.
02:24:32 <elliott> Uplink.
02:24:33 <elliott> It's their most famous game for a reason.
02:24:33 <Sgeo> I think when I tried Uplink, I thought it was boring
02:24:33 <elliott> pikhq: I should just link you to the Urbit post. http://moronlab.blogspot.com/2010/01/urbit-functional-programming-from.html
02:24:33 <Sgeo> But ok, I'll try it
02:24:33 <elliott> Sgeo: You were wrong.
02:24:41 <Sgeo> Hey, what's so bad about monoids?
02:24:51 <elliott> What.
02:24:59 <shachaf> What's the deal with monoids?
02:25:01 <Sgeo> In the Urbit post
02:25:13 * elliott doesn't know what you're talking about.
02:25:23 <Sgeo> "Read the whole thing. Haskell fans, you'll know exactly where you can stick your monads. Indeed, Elliott on monadic I/O sounds a lot like VJ on connection-oriented networking. This is not, I believe, a coincidence. If Urbit is like anything, it's like Elliot's FRP - though with no monads, gonads, morphinisms, monoids, combiguators, or other implements of metamathematical torture."
02:25:28 <elliott> Oh.
02:25:34 <elliott> Just ignore the bit after that dash.
02:25:39 <elliott> Guy doesn't actually know any Haskell.
02:25:49 <shachaf> Ooh, that quote looks good.
02:25:53 <shachaf> Is it talking about Conal?
02:26:19 <shachaf> Wait, that's not form that link.
02:26:26 <elliott> It is.
02:27:01 <elliott> The rest of the post is very good, even despite that tiny regrettable bit.
02:27:04 <elliott> (http://moronlab.blogspot.com/2010/01/nock-maxwells-equations-of-software.html should be read before it, though.)
02:27:11 <oerjan> it could be talking about all three elliotts, like some kind of chimera
02:27:25 <Sgeo> Well, even though monads are pure except for IO, I think it makes sense to apply anger towards monads
02:27:26 <oerjan> or kerberos
02:27:36 <Sgeo> They're often used for imperative-style, if not always
02:27:45 <shachaf> Sgeo: What's "not pure" about IO?
02:27:56 <elliott> shachaf: IO is a model of impure computation.
02:28:04 <elliott> Describing it as "impure" doesn't seem inaccurate.
02:28:35 <Sgeo> Well, ok, I guess the not pure stuff is .. right outside, so to speak? executing main is certainly an impure operation, even if that's not observable from inside Haskell. Although I guess a lot of good things are
02:28:38 <shachaf> Fine. I'll just dispute the "used for imperative-style" bit, then.
02:29:01 <elliott> shachaf: Well, IO is also inherently sequential.
02:29:31 <shachaf> Sgeo: Well, let's call printing a string "executing it" and then call strings "models of impure computation".
02:29:39 <shachaf> elliott: Sure, but I wasn't talking about IO.
02:29:56 <elliott> shachaf: That seems unfair, since kind of the whole point about IO is that you can't get a value out of it.
02:30:02 <elliott> There's no "tail :: IO a -> IO a".
02:30:13 <elliott> (To be really vague about it.)
02:30:19 <shachaf> elliott: Well, sure.
02:30:24 <Sgeo> State is often imperative-style, I'd think, even though it's fundamentally pure inside
02:30:32 <elliott> You have some primitive programs, and can transform the results of programs, but there's nothing you can do to the IOs /themselves/.
02:30:48 <shachaf> elliott: It doesn't *have* to be that way, depending on your model of IO.
02:31:03 <shachaf> Well, not in general.
02:31:24 <elliott> shachaf: Like what? decompose :: IO a -> exists b. (IOOperation b, b -> IO a)?
02:31:54 <Sgeo> What's the exists for?
02:32:04 <elliott> (Where data IOOperation a where PutStrLn :: String -> IOOperation (); GetLine :: IOOperation String etc.)
02:32:17 <elliott> Sgeo: As in "why can't you just remove it", or "what does it do"?
02:32:42 <elliott> Sgeo: It's shorter than:
02:32:42 <elliott> data DecomposedIO a = forall b. DecomposedIO (IOOperation b) (b -> IO a)
02:32:42 <elliott> decompose :: IO a -> DecomposedIO a
02:34:28 <Sgeo> Ah
02:34:28 <shachaf> Something like that.
02:34:44 <Sgeo> What would happen if you could know what was inside?
02:34:57 <Sgeo> Or would the type of IO balloon?
02:34:59 <elliott> Sgeo: Depends what you mean about "inside".
02:35:03 <Sgeo> As in, know the type of b
02:35:10 <elliott> shachaf: That breaks a lot of nice properties, though. :(
02:35:12 <elliott> Sgeo: You do. That's why it's an "exists".
02:35:26 -!- Rugxulo has left ("Leaving").
02:35:29 <elliott> You get given one, as opposed to getting to choose one (a forall).
02:35:46 <shachaf> elliott: Oh, man, all those nice properties of IO.
02:35:59 <elliott> shachaf: Well, it breaks IO-parametricity.
02:36:02 <elliott> Which is a thing now.
02:36:09 <elliott> It didn't need a name until you broke it.
02:37:37 <Sgeo> Do I want a mouse to play Uplink?
02:37:45 <Sgeo> Or is touchpad sufficient?
02:38:07 <elliott> Sgeo: Are you happy navigating your computer menus with a touchpad?
02:38:18 <elliott> Relatively quickly?
02:38:23 <oerjan> :t Left{}
02:38:24 <lambdabot> forall a b. Either a b
02:38:28 <elliott> Sgeo: Because that's literally Uplink's interface.
02:38:30 <elliott> oerjan: augh
02:38:35 <elliott> Sgeo: Actually more buttons than menus.
02:38:44 <oerjan> elliott: http://www.haskell.org/pipermail/haskell-cafe/2011-November/097047.html
02:38:46 <SgeoN1> Well, not as quick as with a mouse
02:38:59 <elliott> SgeoN1: Do you /have/ a mouse?
02:39:10 <elliott> > Left{}
02:39:11 <lambdabot> Left *Exception: <interactive>:3:0-5: Missing field in record construction
02:39:31 <Sgeo> Mouse, but the table my computer is on is not a good mousepad, and the newspaper I once used is now on the floor, and I'm not about to touch it
02:39:53 <elliott> is it covered in ants
02:39:56 <elliott> oerjan: btw why aren't you using the google groups interface :P
02:40:09 <Sgeo> There's a cat living here
02:40:15 <Sgeo> The litterbox is on the floor
02:40:25 <Sgeo> </tmi>
02:40:25 <elliott> is it a nice cat
02:40:43 <monqy> is it a friend cat
02:40:48 <oerjan> elliott: augh
02:40:54 <elliott> hi oerjan
02:41:39 <oerjan> :t StateT{}
02:41:40 <lambdabot> forall s (m :: * -> *) a. StateT s m a
02:41:48 <elliott> oerjan: why aughy
02:42:01 <oerjan> because i had the feeling when pasting that you would remind me ;P
02:42:54 <Sgeo> What's with the {}?
02:43:02 <elliott> oerjan: are you afraid of google groups :P
02:43:09 <oerjan> Sgeo: record syntax, with an empty field list
02:44:11 <oerjan> > runStateT (undefined { runStateT = \s -> return (s, "hello") } ) 5
02:44:11 <lambdabot> No instance for (GHC.Num.Num [GHC.Types.Char])
02:44:11 <lambdabot> arising from the literal ...
02:44:46 <oerjan> > runIdentity $ runStateT (undefined { runStateT = \s -> return ("hello", s) } ) 5
02:44:46 <lambdabot> ("hello",5)
02:44:52 <PiRSquared17> > const 3 (undefined + 3)
02:45:04 <oerjan> hah
02:45:16 <elliott> oerjan: how the heck does that work??
02:45:16 <lambdabot> 3
02:45:18 <oerjan> i wonder if that's according to the report
02:45:32 <elliott> oerjan: oh because StateT is a newtype
02:45:37 <elliott> so x { runStateT = y } === StateT y
02:45:41 <elliott> ew :(
02:45:55 <oerjan> elliott: well StateT has only one constructor, so presumably ghc doesn't bother to evaluate before replacing
02:45:56 <elliott> oerjan: otoh it's not clear to me that x{...} should evaluate x...
02:46:01 <SgeoN1> elliott, artdiopdate
02:46:11 <oerjan> hm... time to look at the report text
02:46:38 <elliott> THE BIG GUNS
02:49:36 <oerjan> the translation in http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-490003.15.3 seems to imply that it should be strict, but otoh the alternative only makes sense for single-constructor types
02:49:59 <oerjan> oh wait
02:50:09 <oerjan> if taken _literally_, it actually isn't strict for newtypes :P
02:51:03 <elliott> oerjan: i was hoping that # would point to something useful :(
02:51:13 <oerjan> !haskell data Testing = Testing { field :: Int } deriving Show; main = print $ undefined { field = 100 }
02:51:19 <EgoBot> input.15792.hs: Prelude.undefined
02:51:26 <oerjan> elliott: oh it doesn't? remove the .3 then
02:51:26 <elliott> "The expression F {}, where F is a data constructor, is legal whether or not F was declared with record syntax (provided F has no strict fields — see the fourth bullet above)"
02:51:32 <elliott> oerjan: hm is a newtype's field not strict?
02:51:47 <elliott> i would think it should be considered strict, and so Newtype{} should be illegal...
02:51:48 <elliott> re: StateT{}
02:51:53 <oerjan> elliott: not in pattern matching
02:52:06 <elliott> oerjan: er what?
02:52:12 <elliott> i realise that newtypes behave differently when pattern-matching
02:52:22 <elliott> but apart from that a newtype is identical to data Foo = Foo !Field
02:52:31 <elliott> but i guess pattern-matching is relevant here...
02:52:57 <oerjan> elliott: the translation given in the link depends on the strictness of that pattern matching for whether the result is strict
02:53:11 <elliott> right
02:53:14 <oerjan> section 3.15.3
02:53:19 <elliott> so i guess it is valid
02:53:32 <elliott> oerjan: what was the non-literal reading?
02:54:07 <oerjan> well just assuming it would work like for data
02:54:25 <oerjan> !haskell newtype Testing = Testing { field :: Int } deriving Show; main = print $ undefined { field = 100 }
02:54:29 <EgoBot> Testing {field = 100}
02:54:32 <oerjan> gah
02:54:44 <oerjan> yeah so it actually differs
02:55:09 <elliott> oerjan: well it's obvious that it differs with GHC's implementation of newtypes P:
02:55:59 <pikhq> elliott: You must be the most virtuous programmer, for you are possessed of the greatest virtue.
02:56:36 <shachaf> EgoBot evaluates Haskell?
02:56:56 <shachaf> !haskell putStrLn "does it use MooEval?"
02:56:58 <EgoBot> does it use MooEval?
02:57:13 <PiRSquared17> !bf ++++++++++++++++++++++++++++...
02:57:14 <EgoBot> ​...
02:57:15 <PiRSquared17> s
02:57:22 <pikhq> No, it's merely runhaskell'ing in a sandbox.
02:58:03 <shachaf> !haskell Control.Concurrent.threadDelay 1000000000
02:58:09 <elliott> pikhq: hi
02:58:13 <elliott> pikhq: It's not actually runhaskell.
02:58:27 <elliott> shachaf: It tries GHC with various wrappers around the code in the same sandbox as HackEgo.
02:58:30 <elliott> !haskell 2 + 2
02:58:33 <EgoBot> 4
02:58:38 <elliott> !haskell print (2 + 2)
02:58:40 <EgoBot> 4
02:58:43 <pikhq> elliott: Yay, hubris!
02:58:46 <elliott> !haskell main :: IO (); main = print (2 + 2)
02:58:46 <oerjan> elliott: well it _could_ have special-cased single constructor data
02:58:51 <EgoBot> 4
02:58:54 <shachaf> !haskell return(2+2)::IO Int
02:58:57 <EgoBot> 4
02:59:10 <oerjan> > StateT {} `seq` "test"
02:59:10 <lambdabot> "*Exception: <interactive>:3:0-8: Missing field in record construction Cont...
02:59:17 <oerjan> oops hm
02:59:20 <shachaf> > (StateT) {} `seq` "test"
02:59:21 <lambdabot> <no location info>: Empty record update
02:59:41 <shachaf> oerjan: StateT is a newtype.
02:59:43 <oerjan> > const "test" $ StateT {}
02:59:43 <lambdabot> "test"
02:59:54 -!- Sgeo has quit (Ping timeout: 240 seconds).
03:00:02 <elliott> !help
03:00:02 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
03:00:02 <shachaf> !haskell runST (return 5)
03:00:20 <shachaf> Some error reporting you've got there, EgoBot.
03:00:29 <shachaf> !haskell import Control.Monad.ST; print (runST (return 5))
03:00:38 -!- Klisz has joined.
03:00:42 <shachaf> 02:59 DCC CHAT from EgoBot [64.62.173.65 port 10079]
03:00:50 <elliott> hi Klisz
03:00:54 <elliott> blah blah esolangs http://esolangs.org/wiki/
03:00:59 <oerjan> it looks like ghc doesn't consider newtypes strict for that compile time error
03:01:04 <shachaf> elliott: Do you just welcome everybody?
03:01:09 <elliott> shachaf: Totally.
03:01:14 <Klisz> Hello elliott.
03:01:17 <shachaf> ...Who isn't me?
03:01:21 -!- Sgeo has joined.
03:01:23 <elliott> shachaf: I don't like you!
03:01:44 <pikhq> There is a distinctly non-zero possibility I know Klisz IRL.
03:01:44 <shachaf> elliott: It's psychologically impossible to dislike me.
03:02:04 <oerjan> !haskell data Test = Test {strict :: !Int }; main = print $ const "test" $ Test {}
03:02:13 <pikhq> (hello, other person from Colorado!)
03:02:14 <elliott> pikhq: Are you Klisz?
03:02:14 <Klisz> pikhq: I believe you don't. I was known as Darth Cliche until earlier today when I changed my name.
03:02:18 <shachaf> !haskell import Control.Monad.ST; main = print (runST (return 5))
03:02:19 <pikhq> elliott: No.
03:02:21 <oerjan> yeah that gave an error in DCC
03:02:23 <EgoBot> 5
03:02:26 <pikhq> elliott: We merely happen to be in the same state.
03:02:29 <shachaf> !haskell import Control.Monad.ST; main = print (id runST (return 5))
03:02:36 <pikhq> Klisz: Ah. Yeah, you're up in Boulder, aren't you?
03:02:36 <shachaf> !haskell import Control.Monad.ST; main = print ((id runST) (return 5))
03:02:41 <EgoBot> 5
03:02:41 <elliott> shachaf: Oh, EgoBot's !haskell does -O2.
03:02:42 <elliott> shachaf: That's why it's so slow.
03:02:54 <Klisz> pikhq: Yes, visiting family for Thanksgiving; I normally live in Cheyenne, WY, though
03:03:09 <Klisz> being one of four or five people in that state
03:03:48 <shachaf> pikhq: When are you moving to CA?
03:03:51 <oerjan> <elliott> pikhq: It's not actually runhaskell. <-- um iirc the second wrapper tried is runhaskell
03:03:52 <shachaf> Klisz: When are you moving to CA?
03:03:56 <elliott> oerjan: Yeah, it is.
03:04:05 <elliott> shachaf: Really tempted to put -fglasgow-exts in this patch of EgoBot's runghc.
03:04:20 <shachaf> Don't do it!
03:04:24 <shachaf> -fglasgow-exts is the devil.
03:04:27 <pikhq> shachaf: If ever, probably sometime after graduating.
03:04:30 <elliott> shachaf: It's such a good devil!
03:04:33 <Klisz> shachaf: I do not intend to move outside the glorious Rocky Mountains
03:06:01 <oerjan> <shachaf> Some error reporting you've got there, EgoBot. <-- everything above one line is sent as DCC CHAT
03:06:18 <shachaf> oerjan: Don't you need to open a port for those?
03:06:26 <elliott> @tell Gregor Replace HackEgo's runghc with http://sprunge.us/AYIK, thx (avoids really expensive optimisation, useless temporary file)
03:06:26 <lambdabot> Consider it noted.
03:06:36 <elliott> shachaf: works for me without port-forwarding
03:06:59 <shachaf> I don't want to (a) figure out how to tell irssi to accept DCC CHAT (b) accept DCC CHAT.
03:07:13 <shachaf> elliott: You use IPv8 or something, don't you?
03:07:14 -!- SgeoN1 has quit (Read error: Connection reset by peer).
03:07:26 -!- SgeoN1 has joined.
03:07:33 <elliott> shachaf: IPv20
03:07:56 <elliott> shachaf: /dcc chat, btw.
03:08:15 <oerjan> <shachaf> oerjan: Don't you need to open a port for those? <-- well yes, i've set irssi to accept from EgoBot automatically.
03:08:32 <shachaf> elliott: Did you know you get public-facing IP addresses at MIT when you connect to the free WiFi?
03:08:37 <shachaf> Probably because they have way too many of them.
03:08:53 <oerjan> dcc_autochat_masks = EgoBot
03:08:59 <shachaf> No one deserves that many IPv4 addresses.
03:09:01 <elliott> shachaf: MIT own an /8.
03:09:11 <elliott> It's "LEGACY", though, so I guess they don't actually use it.
03:09:33 * shachaf wonders if this is the sort of channel where people get angry at you if you say "Class A".
03:09:49 * oerjan hits shachaf with the saucepan ===\__/
03:09:54 <elliott> People get angry at people saying that?
03:10:05 <oerjan> DON'T USE FUCKING BAD WORDS LIKE THAT
03:10:05 <elliott> shachaf: I wish Ilari was here to see us talking about IP.
03:10:09 <shachaf> Let's try it out in #-blah.
03:10:14 <elliott> He will be missed.
03:10:19 <elliott> Maybe he ran out of IPv6 addresses.
03:11:09 <shachaf> Who is Ilari?
03:11:38 <elliott> He's a guy who used to come in here. Mostly he reported IPv4 exhaustion with nearly robotic precission and formatting.
03:11:40 <elliott> It was great fun.
03:11:56 <oerjan> also, nutritional science
03:12:01 <elliott> Also IPv6 deletion, but that's like saying he reported on oceans and also his tap which keeps dripping.
03:12:14 <shachaf> elliott: I was wrong.
03:12:23 <elliott> Are you ever not?
03:12:35 * elliott doesn't actually think shachaf is always wrong.
03:12:40 <pikhq> Yeah, Ilari was pretty great.
03:12:41 * shachaf is always wrong.
03:21:42 -!- pikhq has quit (Ping timeout: 244 seconds).
03:21:44 -!- pikhq_ has joined.
03:27:04 -!- pikhq_ has quit (Ping timeout: 253 seconds).
03:27:09 -!- pikhq has joined.
03:28:03 <SgeoN1> elliott, is there another hacker or something? I took a mission, the file server was empty, I replidd and got paid
03:28:50 <elliott> SgeoN1: Did you /read/ the opening text?
03:28:52 <elliott> It's not like the Uplink server and job board exists solely for your personal benefit.
03:29:23 <elliott> SgeoN1: Just believe the game will be as detailed and realistic to its premise as possible, and you'll do well.
03:30:07 <Sgeo> Uplink Internal Services never gets a subpoena?
03:30:29 <Sgeo> Hmm, actually
03:30:34 <Sgeo> That doesn't make sense
03:30:54 <Sgeo> But... the authorities never conclude that something weird is going on with InterNIC
03:31:09 <elliott> Sgeo: Did you read the very opening text? It's encryption shit, man.
03:31:15 <elliott> And there's nothing weird about InterNIC, it just gets routed through.
03:31:34 <elliott> Sgeo: Anyway, /to its premise/, i.e. Hollywood hacking.
03:32:03 <elliott> Sgeo: Just pretend it's Tor if you have to.
03:35:56 <elliott> Sgeo: Besides, the authorities _can_ track you down.
03:36:06 <elliott> Uplink just trashes your machine and disconnects you.
03:36:50 <Sgeo> From my understanding, the Feds actually go inside the building where the machine is stored
03:37:16 <Sgeo> They don't ever come to the conclusion that Uplink... hmm, actually this sounds a bit like the argument over copyright and user-uploaded content
03:37:20 <Sgeo> So, hmm
03:37:44 <elliott> Sgeo: What's to say the FBI isn't after Uplink's ass, but they just distribute their servers throughout multiple continents through various proxy accounts blah blah blah?
03:38:02 <elliott> I mean, this may surprise you, but people actually conduct illegitimate activities over the internet. On a wide scale, even!
03:42:54 <elliott> oerjan: Jerzy Karczmarczuk sure is annoying
03:42:58 <elliott> oerjan: (you've got me reading haskell-cafe!)
03:47:18 <elliott> clCreateProgramWithBinary ctx devs bins = wrapPError $ \perr -> do withArray
03:47:18 <elliott> devs $ \pdevs -> do withArray lbins $ \plbins -> do buffs <- forM bins $ \bs ->
03:47:18 <elliott> do buff <- mallocArray (length bs) :: IO (Ptr Word8) pokeArray buff bs return
03:47:18 <elliott> buff
03:47:18 <elliott> ret <- withArray buffs $ \(pbuffs :: Ptr (Ptr Word8)) -> do
03:47:19 <elliott> allocaArray ndevs $ \(perrs :: Ptr CLint) -> do
03:47:21 <elliott> WHY WOULD YOU COMMIT THIS
03:48:05 <kallisti> elliott: on a... /wide scale/
03:48:09 <kallisti> a scary thought.
03:48:18 <elliott> Kind of like your mom!
03:48:19 <elliott> HAHAHAHA
03:49:24 <kallisti> I actually refrained this time...
03:50:02 <kallisti> It is best described as a simulator of the cinematic depiction of computer hacking.
03:50:06 <kallisti> wow shitty idea.
03:52:23 <elliott> kallisti: no it's
03:52:25 <elliott> a really good game
03:54:11 <elliott> kallisti:
03:54:12 <elliott> http://www.atpm.com/9.07/images/uplink-stocks.gif
03:54:13 <elliott> http://wizzywizzyweb.gmgcdn.com/media/products/uplink/screenshots/large-2-640x350.jpg
03:54:14 <elliott> http://www.introversion.co.uk/uplink/screenshots/uplink3.jpg
03:54:16 <elliott> http://www.introversion.co.uk/uplink/screenshots/uplink4.gif
03:54:16 <elliott> http://images.wikia.com/tig/images/7/72/Uplink1.jpg
03:54:18 <elliott> http://www.playdar.co.uk/media/uplink.png
03:54:19 <elliott> http://img510.imageshack.us/img510/1287/uplink2010122716504046.png
03:54:21 <elliott> http://images.bit-tech.net/content_images/2007/04/Linux_has_game/uplink3.jpg
03:54:24 <elliott> SO GOOD.
03:55:08 <kallisti> you hack
03:55:10 <kallisti> the stock market?
03:55:25 <elliott> no that's a separate thing.
03:55:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
03:55:44 <elliott> kallisti: you can connect to the stock market computer and stock market.
03:55:56 <elliott> well i'm sure you can hack it
03:56:01 <elliott> there are only like two machines in the game you can't hack i think
03:56:39 <kallisti> well it probably has the best hacking system of any game
03:56:44 <kallisti> actually wait I take that back: Shadowrun does
03:56:50 <kallisti> but Shadowrun isn't a computer game.
03:57:02 <elliott> kallisti: no it's literally so good
03:57:21 -!- Sgeo has joined.
03:57:30 <elliott> kallisti: http://humblebundle.com/ buy it for a few dollars, play classic game, thank me, kthx
03:57:51 <Sgeo> I am starting to think it's just XChat that is choking
03:58:05 * Sgeo types in man ping
03:58:08 <Sgeo> Weird thought
03:58:30 <kallisti> man pong is a weirder thought
03:58:46 <elliott> kallisti: also you get darwinia?? which got like insanely good critical acclaim i think
03:58:58 <kallisti> yes I buy and play all the arthouse games.
03:59:05 <kallisti> (I actually don't)
03:59:21 <elliott> kallisti: it's RTSy! you like RTS!
03:59:37 <elliott> http://www.youtube.com/watch?v=17H8vc5Askw
03:59:40 <elliott> look. it's pretty!
04:00:11 <Sgeo> Nothing bad will happen from me leaving a continuous ping on, will it?
04:00:56 <elliott> Sgeo: you will be arrest by cyber police
04:00:56 <kallisti> hm interesting
04:01:04 <kallisti> elliott: but it also has multiple minigames and stuff
04:01:05 <Sgeo> Unlisted
04:01:07 <kallisti> iiiinteresting
04:02:32 <elliott> kallisti: what does
04:03:07 <elliott> Sgeo: what
04:03:13 <elliott> kallisti: wat
04:03:18 <Sgeo> The video is unlisted on YouTube
04:03:21 <elliott> Sgeo: so?
04:03:39 * Sgeo shrugs
04:03:56 <kallisti> elliott: darwinia
04:03:57 <kallisti> based on
04:04:00 <kallisti> utub
04:04:16 <kallisti> er
04:04:17 <kallisti> wikipedia
04:04:19 <kallisti> not utub
04:04:41 <kallisti> this is kind of sort of how Shadowrun's virtual reality works.
04:05:21 <kallisti> everything takes a physical manifestation in a virtual world. programs, people connected to it, etc.
04:05:39 <kallisti> and then you can run programs as offensive/defensive/support/hacking actions
04:05:43 -!- elliott has quit (Read error: Connection reset by peer).
04:06:04 -!- elliott has joined.
04:06:20 <SgeoN1> Lagging put
04:06:25 <kallisti> also you can be creative in depicting it. each network node could have a specific theme for instance
04:06:34 <elliott> kallisti: dunno what you mean about minigames *shrugs*
04:06:53 * elliott hasn't actually played Darwinia but has intended to since like 2006.
04:06:56 <kallisti> attack program could be like a big sword and sentry program could be like a dragon or something.
04:06:57 <elliott> Maybe I actually will now that I have it.
04:07:08 <elliott> kallisti: Anyway yeah seriously get this Bundle, Introversion are amazing.
04:07:11 <SgeoN1> But ping -i 1 -f 8.8.8.8 says I only dropped one packet
04:07:12 -!- kmc has quit (Quit: Leaving).
04:07:27 <kallisti> oh the mini-games are to familiarized you with the controls
04:07:31 <kallisti> in the intro of the game
04:08:14 <SgeoN1> Once connected, irc clients don't usually use the domain name, right? That's supid?
04:08:30 <elliott> SgeoN1: what
04:08:33 <kallisti> what do they need the domain name for?
04:08:40 <SgeoN1> No idea
04:08:56 <kallisti> I mean other than to connect
04:08:57 <kallisti> obviously
04:09:00 <SgeoN1> I'm suspecting that it's XChat that's broken
04:09:08 <elliott> SgeoN1: try another client for a bit?
04:09:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
04:09:30 <elliott> kallisti: HAVE YOU BOUGHT IT YET
04:09:38 <kallisti> no how much is the bundle thing
04:09:42 -!- Jafet has joined.
04:09:47 <elliott> kallisti: it's a humble bundle, dude
04:09:50 <elliott> the whole idea is that you pay whatever
04:10:04 <elliott> kallisti: although over 3.80 gets you two games from previous bundles
04:10:16 <shachaf> elliott: Should I buy it?
04:10:24 <SgeoN1> Right now, only Freenode is lagging for me. All the other networks I'm on, I disconnected then recinnected
04:10:32 <elliott> shachaf: Have you played any Introversion games? If not, then yes.
04:10:34 <elliott> If yes, then probably.
04:10:35 <kallisti> elliott: do all of their games like linux?
04:10:48 <elliott> kallisti: allow me to quote from the very top of the page
04:10:48 <elliott> Cross-platform. The games featured on the shelf
04:10:48 <elliott> work natively on Linux, Mac OS X,
04:10:48 <elliott> and Windows.
04:11:02 <kallisti> :>
04:11:02 <shachaf> elliott: I played Aquaria once.
04:11:12 <elliott> kallisti: Also it gives you Steam keys?? I gather people like Steam although I have no idea why.
04:11:12 -!- Klisz has quit (Quit: You are now graced with my absence.).
04:11:18 <elliott> shachaf: Introversion didn't make Aquaria.
04:11:36 <shachaf> elliott: IT'S IN THE BUNDLE, OK?
04:11:48 <elliott> It's the thought that counts?
04:11:54 -!- Sgeo has joined.
04:12:03 <Sgeo> Let's see if this does anything
04:12:07 <Sgeo> Still XChat, but restarted.
04:12:29 <Sgeo> 1.6sec lag
04:13:03 <kallisti> elliott: I'll buy the bundle
04:13:03 <kallisti> but
04:13:10 <kallisti> only if you buy starcraft 2 :>
04:13:14 <kallisti> loooool
04:13:25 <elliott> kallisti: How much is it.
04:13:27 <kallisti> I'm sure it's only like $40 now.
04:13:30 <kallisti> may still be $50!
04:13:40 <Sgeo> Bundle costs >0
04:13:41 <shachaf> elliott: Don't do it!
04:13:42 <elliott> kallisti: Can I just... pirate it? (To answer your next question, no you can't.)
04:13:46 <Sgeo> That's pretty much it.
04:13:47 <shachaf> Isn't Starcraft all about micromanagement?
04:14:01 <elliott> shachaf: Thanks to Deewiant, I now know there is both MICRO and MACRO!
04:14:05 <elliott> They actually call it that.
04:14:08 <elliott> Micro and macro.
04:14:11 <kallisti> yep
04:14:12 <shachaf> EPIC MICROZ SKILLZ DUDE
04:14:16 <kallisti> yep
04:14:35 <kallisti> elliott: well
04:14:36 <shachaf> elliott: You should play Command & Conquer: Red Alert instead.
04:14:40 <kallisti> you need a key to actually play it online
04:14:45 <shachaf> If you're looking for an RTS to play.
04:15:03 <kallisti> no starcraft
04:15:06 <kallisti> is definitely better
04:15:08 <kallisti> than that shit
04:15:13 <elliott> shachaf: Too many people like Red Alert for me to consider playing it.
04:15:16 <kallisti> (has never played that shit; unbiased)
04:15:16 * elliott logic.
04:15:22 <shachaf> elliott: Which version?
04:15:27 <elliott> There are versions?
04:15:34 <shachaf> Yes, there's 2 and 3.
04:15:45 <elliott> kallisti: Ooh, there's a COLLECTORS EDITION. It's 72 fucking pounds.
04:16:00 <kallisti> elliott: dude the humans have bipedal war machines that can TRANSFORM INTO SPACEFIGHTERS
04:16:11 <kallisti> think about that.
04:16:23 <shachaf> elliott: Red Alert 3 is $10 on your favourite game distribution platform, the Steam!
04:16:55 <elliott> The Steam(tm).
04:16:56 <kallisti> elliott: yes it's $50 still
04:17:09 <kallisti> which is insane.
04:17:12 <shachaf> elliott: The S™.
04:17:25 <kallisti> but it's understandable because it's
04:17:25 <kallisti> so
04:17:26 <kallisti> good
04:17:59 <elliott> Starcraft II: Heaven's Devils [Book]
04:17:59 <elliott> by William C. Dietz - Simon & Schuster (2010.04.06) - hardback - 336 pages
04:17:59 <elliott> For the poor, hardworking citizens of the Confederacy’s fringe worlds, the Guild Wars have exacted a huge toll. Swayed by the promise of financial ...
04:18:00 <shachaf> elliott: If you get the Red Alert I'll get Humble Bundle.
04:18:18 <elliott> shachaf: I don't actually profit from Humble Bundle sales.
04:18:28 <elliott> That might work for the Humble AII Bundle.
04:18:52 <elliott> kallisti: http://www.thegamecollection.net/starcraft-ii-wings-of-liberty-pc-p-3243.html?ad=frooogle
04:18:55 <elliott> kallisti: 42 dollars!
04:19:32 <shachaf> elliott: I am aware.
04:19:38 <kallisti> "in many ways, StarCraft II: Wings of Liberty feels like StarCraft 2.0 – and that’s a good thing"
04:19:43 <kallisti> like people love StarCraft so much
04:19:48 <shachaf> elliott: But you profit (in utility) from my happiness.
04:19:53 <kallisti> that they basically don't mind that Starcraft 2 is much starcraft but with more things.
04:19:59 <kallisti> *pretty much
04:20:17 <elliott> shachaf: Fuck utilons, maan.
04:20:46 <elliott> kallisti: What if I buy just StarCraft? Shit's gotta be cheap now.
04:20:54 <shachaf> elliott's utility function = fix (1/)
04:21:07 <kallisti> The Terran race will feature three new units: the Shredder, the Battle Hellion, and the Warhound. The Protoss will also feature three new units: the Replicant, the Oracle, and the Tempest. The Zerg will only receive two new units: the Viper, and the Swarm Host. The Protoss Mothership and Carrier will be removed from the game
04:21:12 <kallisti> wait they....
04:21:13 <kallisti> removed carriers?
04:21:15 <kallisti> they
04:21:24 <kallisti> what
04:21:24 <kallisti> why
04:21:26 <kallisti> wetiuwrhiusdhfiuwhetiuwher
04:21:27 <elliott> kallisti: Does Starcraft II even have a story mode?
04:21:29 <kallisti> yes
04:21:31 <elliott> Do people even play story modes any more.
04:21:34 <kallisti> sure.
04:22:45 <kallisti> elliott: you could play starcraft if you wanted
04:22:48 <kallisti> but don't play it online
04:22:53 <kallisti> because you will be smitten by Korean gods.
04:23:24 <elliott> kallisti: Do Korean gods not play Starcraft II?
04:23:36 <elliott> Also: What's so crafty about it?
04:23:38 <Sgeo> There's no way to tell skill levels before playing?
04:23:46 <kallisti> yes but the new ladder system only matches you with people in the same tier.
04:23:59 <kallisti> whereas in starcraft anyone can join any public game.
04:24:47 <kallisti> elliott: u gottab be clevre
04:25:02 <kallisti> dats eh craeft
04:26:28 <elliott> Sgeo: ?
04:26:48 <elliott> kallisti: Do they still do StarCraft tournaments, or is that too retro now.
04:26:56 <kallisti> I think they do yes.
04:27:13 <elliott> kallisti: Buy the Bundle.
04:27:28 <kallisti> http://video.google.com/videoplay?docid=-6648934043675888354
04:27:31 <kallisti> this was six years ago
04:27:33 <kallisti> but you can see
04:27:41 <kallisti> that people actually watch people play this game in Korea
04:28:03 <elliott> I know.
04:28:06 <elliott> Well, it's better than football.
04:28:23 <kallisti> also the video quality is shit
04:28:37 <SgeoN1> Why not watch people playing a variety of games?
04:28:47 <kallisti> because starcraft
04:29:20 <SgeoN1> I think Shattered Galaxy has a similar interface. No idea about Starcrafts gameplay in comparison
04:30:27 <kallisti> elliott: in the original starcraft terran was always the dominate race in tournaments
04:30:30 <kallisti> well, it became that way
04:31:01 <elliott> But all I know about Koreans is "kekekekekeke zerg rush".
04:31:07 <elliott> Has the internet... LIED to me?
04:32:32 <kallisti> http://www.youtube.com/watch?v=l29Hyrx2MXw
04:32:51 <kallisti> Boxer is the most well-known terran starcraft player
04:33:00 <kallisti> here he's playing sc2
04:33:59 <PiRSquared17> ...
04:38:14 <kallisti> spoiler
04:38:18 <kallisti> Boxer pwns
04:41:33 <elliott> hi PiRSquared17
04:41:39 <PiRSquared17> hi
04:41:48 <elliott> PiRSquared17: was the channel ever on-topic last time you were here
04:41:49 * PiRSquared17 didn't leave
04:42:00 <elliott> oh we say hi to people a lot.
04:42:01 <elliott> nowadays.
04:42:02 <elliott> in the future.
04:42:07 <PiRSquared17> elliott: a little more, but not much more
04:42:12 <kallisti> elliott: actually wait no boxer loses probably. :(
04:46:19 <elliott> kallisti: i feel like i'm staring into another universe when i watch these things
04:48:12 <kallisti> elliott: the second game is a bit more interesting so far
04:48:14 <PiRSquared17> one second you were talking about IPv6 etc, then Haskell (more on-topic), then a bunch of "what?"s, then some computer game
04:48:31 <PiRSquared17> and stereotyping Koreans
04:48:43 <kallisti> what? Koreans are gods at starcraft
04:48:45 <kallisti> not a stereotype
04:48:48 <elliott> PiRSquared17: "what?" -> introversion software's games, primarily uplink -> starcraft
04:49:22 <PiRSquared17> kallisti: <elliott>But all I know about Koreans is "kekekekekeke zerg rush".
04:50:06 <elliott> PiRSquared17: It was a direct quote, not an invocation! Also by "all I know about Koreans" I meant "all I have heard about Koreans who play Starcraft".
04:50:20 <PiRSquared17> oh, ok
04:51:29 <elliott> Esolang talk usually occurs when http://esoteric.voxelperfect.net/wiki/Special:Recentchanges is filled up with something other than spam. :p
04:52:18 <elliott> kallisti: Have 300 thousand people really watched this?
04:52:26 <kallisti> elliott: ask utub
04:52:35 <kallisti> I like boxer's old school strategies...
04:54:13 <PiRSquared17> http://esoteric.voxelperfect.net/wiki/User:MichaelCarrillo670
04:54:21 <shachaf> elliott: Thanks to you, it's 300,001.
04:54:26 <PiRSquared17> delete, block
04:54:27 <elliott> ooh is there another good spam page
04:54:28 <PiRSquared17> ?
04:54:42 <elliott> PiRSquared17: none of the wiki admins are online right now
04:54:59 <elliott> PiRSquared17: but going based on http://esoteric.voxelperfect.net/wiki/Special:Recentchanges i'm pretty sure they know how to delete spam pages :P
04:59:39 <monqy> `welcome pirsquared17
04:59:52 <PiRSquared17> `thank monqy
05:00:24 <kallisti> elliott: yeah game 2 was much better
05:00:26 * kallisti watches game 3
05:02:12 <oerjan> `summon HackEgo
05:02:29 <quintopia> sleeeeeeeeeeeeeeeeeeeeeeeep
05:02:45 <elliott> quintopia: no
05:02:54 <oerjan> sleep is for zombies
05:02:59 <quintopia> slep?
05:03:22 <elliott> slep is good but
05:03:24 <elliott> hard to come by
05:03:38 <quintopia> hlep slep?
05:04:07 <elliott> impossible
05:04:12 <monqy> i had nap today
05:04:16 <monqy> but im still tired
05:04:23 <monqy> i had a nap dream it was really confusing
05:04:34 <monqy> i can't make enough sense of it to say anything interesting :(
05:04:39 <monqy> but it was a very interesting nap dream!
05:05:08 <quintopia> neat
05:05:21 <quintopia> i will nap now and see if there is interesting dream
05:05:26 <elliott> bye quintopia
05:05:30 <elliott> enjoy slepping
05:12:26 <PiRSquared17> Bye!
05:12:56 -!- PiRSquared17 has left.
05:15:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:17:06 -!- Sgeo has joined.
05:17:16 <Sgeo> ONE PACKET
05:17:26 <Sgeo> or, well, ONE PING
05:17:34 <Sgeo> I LOSE ONE PING AND XCHAT GOES HEYWIRE
05:20:41 <SgeoN1> I am now given to wondering if my network card is loose
05:22:17 <kallisti> elliott: what sucks is that I know who wins game 4
05:22:29 <kallisti> because it's best of 5, and there's no 5th game, and Jinro is in the lead 2 to 1.....
05:22:33 <kallisti> stupid math
05:23:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:24:16 <elliott> kallisti: should have put a fake fifth game video up :P
05:26:20 <Jafet> This is what happens when you take the power away from the broadcasting companies.
05:27:01 -!- Sgeo has joined.
05:27:06 <elliott> :D
05:33:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:36:46 -!- Sgeo has joined.
05:40:37 -!- copumpkin has changed nick to OracleOfDelphi.
05:42:46 -!- MDude has changed nick to MSleep.
05:43:18 -!- OracleOfDelphi has changed nick to copumpkin.
05:51:29 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:54:41 -!- Sgeo has joined.
05:55:00 <kallisti> elliott: oh dude boxer won
05:55:03 <kallisti> WHERE'S GAME 5????
05:55:39 <kallisti> oh here
05:55:46 <kallisti> it's in Game 4 part 3 for some reason?
05:56:51 <elliott> lol
05:57:04 <elliott> nice twist
05:58:59 <kallisti> this has been pretty entertaining to watch
05:59:14 <kallisti> actually boxer was at a disadvantage
05:59:21 <kallisti> but has his leet skillz
06:05:10 <kallisti> but sweet, now I know why I haven't found any boxer vidz; because his name is manofoneway
06:07:46 -!- Klisz has joined.
06:12:18 -!- Zuu has quit (Ping timeout: 244 seconds).
06:45:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
06:46:41 -!- Sgeo has joined.
06:50:46 -!- Sgeo has quit (Client Quit).
06:54:24 * oerjan is bored and tries a new wikipedia game
06:54:59 <oerjan> instead of clicking on the _first_ substantial link in the introduction (tends to end up in a loop with Philosophy), i try the last one
06:56:52 <oerjan> from http://en.wikipedia.org/wiki/Broadcast_Film_Critics_Association_Award_for_Best_Director to LSD in 10 steps
06:57:03 <oerjan> (which then loops)
06:58:07 <kallisti> elliott: http://www.youtube.com/watch?v=4HTrGL_pfO8
06:58:08 <kallisti> watch this
06:58:49 <elliott> kallisti: not right now :P
06:59:31 <oerjan> it does not seem to go to more general subjects in the same way as the first link game. Gerald P. Ryan loops in 6 steps without leaving Australian sport
06:59:55 <kallisti> elliott: no right now you must
06:59:59 <oerjan> (only the last two loop)
07:00:01 * elliott crai
07:00:36 <elliott> oerjan: this interests me btw i just have nothing to say
07:00:47 -!- GreaseMonkey has quit (Quit: The Other Game).
07:00:48 <oerjan> actually not even leaving football
07:03:11 <kallisti> elliott: so there is no chance but sc2 is not a perfect information game.
07:03:14 <kallisti> due to fog of war.
07:03:18 <oerjan> this one seemed more interesting; from Ascitans through other christian subjects but then on to folklore and television
07:03:26 <oerjan> *seems, not finished yet
07:03:29 <elliott> kallisti: more like fog of lame
07:03:41 <kallisti> elliott: ...the game would be much more boring without fog of war.
07:04:00 <elliott> sure. you mean more cool
07:04:28 <kallisti> "oh look my enemy dropped this building I should counter with this." "oh he made these units I'll counter with these"
07:04:28 <oerjan> then on to radio and frequency subjects
07:05:11 <oerjan> suddenly to telemetry and SMS
07:05:44 <oerjan> oh, United States
07:06:03 <Jafet> http://kevan.org/catfishing.php
07:06:39 <oerjan> global military spending, stockholm international peace research institute
07:07:24 <oerjan> open source, biotechnology, life sciences :P
07:07:45 <oerjan> this is almost like clicking random itself, but with less lousy hits
07:08:47 <oerjan> zoology, ancient greek, renaissance
07:09:12 -!- monqy has quit (Quit: hello).
07:09:52 <elliott> Jafet: this is very difficult
07:09:53 <oerjan> subpages of that, then obscurantism
07:10:21 <elliott> @src (<*>) []
07:10:21 <lambdabot> Source not found. Just try something else.
07:10:23 <elliott> @src [] (<*>)
07:10:24 <lambdabot> (<*>) = ap
07:10:29 <elliott> look of disapproval
07:10:30 <oerjan> friedrich nietsche - somehow we're getting closer to philosophy anyhow :P
07:10:38 <oerjan> *nietzsche
07:10:41 <elliott> > ap [f,g,h] [a,b,c]
07:10:42 <lambdabot> Ambiguous type variable `b' in the constraints:
07:10:42 <lambdabot> `GHC.Show.Show b'
07:10:42 <lambdabot> a...
07:10:45 <elliott> > ap [f,g,h] [a,b,c] :: [Expr]
07:10:46 <lambdabot> [f a,f b,f c,g a,g b,g c,h a,h b,h c]
07:10:51 <elliott> ah yes.
07:11:28 <oerjan> tertiary syphilis
07:12:18 <oerjan> men who have sex with men, social research
07:12:47 <oerjan> market research, European Society for Opinion and Marketing Research
07:13:45 <elliott> oerjan: wow, it's actually titled "men who have sex with men"
07:13:48 <elliott> i thought you were being cutsey
07:14:06 <oerjan> ethical code, ethics, descriptive ethics, meta-ethics, normative ethics, john rawls, democracy
07:14:12 <oerjan> nope i wasn't :P
07:14:31 <elliott> About 2% of the US population (about 4% of American men) are classified as men who have sex with men.[10]
07:14:41 <elliott> i guess they included the non-male statistic for all those non-male men who have sex with men
07:15:38 <itidus22> SgeoN1: the cause of freenode lagging with xchat is because i am on freenode using xchat
07:16:04 <oerjan> republic, republics of the soviet union, dissolution of the soviet union, union state, belarus
07:16:15 <oerjan> this is quite wild :P
07:16:48 <itidus22> it would be typical that the client and server ( :P ) combination i choose to use is the one which lags
07:16:53 <pikhq> elliott: Gender can get confusing in confusing circumstances.
07:17:04 <elliott> "male" is FAIRLY unambiguous :P
07:17:24 <oerjan> commonwealth of independent states, single market, customs union, trade pact, trade
07:17:28 <pikhq> Indeed. "Man", however, is not. :P
07:18:18 <oerjan> financial market, brownian model of financial markets, jump diffusion, valuation of options
07:18:34 <Jafet> oerjan should make a script to do this already.
07:18:37 <itidus22> oerjan: last substantial link as in in the body of the document? does that include lists of related topics or above that?
07:18:44 <oerjan> i'm _still_ on the one starting with the Ascitan sect
07:18:54 <itidus22> oh.. what am i saying.. i can just follow your trail
07:18:57 <oerjan> itidus22: no, as in the introduction section
07:19:01 <itidus22> since itde deterministic
07:19:20 <Jafet> Well, the topology is slightly time-varying
07:19:27 <itidus22> lol
07:19:39 <Jafet> Unless oerjan gives revision numbers
07:19:42 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:19:48 <itidus22> wow
07:19:53 <itidus22> yeah..
07:20:18 <oerjan> option (finance), investment banking, Financial Industry Regulatory Authority, financial regulation
07:21:33 <oerjan> government, regime, politics, policy, policy studies, public administration
07:22:18 <oerjan> and then finally it returns to ethics.
07:23:09 <itidus22> ok so in the presence of a contents section it is the first signifigant link before the contents, and in its absence it is the last link of the first paragraph
07:23:18 <itidus22> ^last
07:23:23 <itidus22> blah.
07:23:32 <oerjan> 30 steps in the ethics loop
07:24:30 <itidus22> ok not first paragraph
07:24:34 <itidus22> first intuitive section
07:25:01 <oerjan> and 37 steps from the Ascitans to ethics
07:25:14 <elliott> oerjan: i wish you could easily index structures keyed on functions, so we could just build a "give us a function (Article -> Link) and we'll let you compute shortest paths and shit" :P
07:25:30 <elliott> thus completely removing the human element and fun in place of efficiency!
07:25:36 <oerjan> yay!
07:25:43 <Jafet> Just download the dumps
07:25:58 <itidus22> hmm
07:26:03 <elliott> Jafet: it's still pretty computationally intensive to compute things like shortest path...
07:26:05 <Jafet> I believe they're still only in the low GBs
07:26:53 <Jafet> It's actually quite surprising that people haven't found better ways to compute shortest paths
07:26:54 * oerjan tries another one
07:27:40 <Jafet> Dijkstra's is something like O(v e log v)
07:28:08 <oerjan> Mohler, Robert Mohler, Dharma & Greg, Golden Globe Award for Best Actress – Television Series Musical or Comedy
07:28:37 <elliott> Jafet: http://dumps.wikimedia.org/enwiki/20111007/
07:28:46 <elliott> too varying sizes to mentally estimate a size
07:28:53 <elliott> but probably < 20 gigs
07:29:08 <elliott> Jafet: but it's apparently ~150 gigs uncompressed
07:29:22 <oerjan> Hollywood Foreign Press Association, Los Angeles, Mediterranean climate, Chile
07:29:56 <itidus22> Paul Erdos, probability theory, quantum mechanics, quantum gravity(debatable), orders of magnitude (mass), kilogram, planck constant, pi, ludolph van ceulen, leiden university
07:31:16 <oerjan> Union of South American Nations, Ecuador, Human Development Index, Human development (humanity), Capability approach, Consumer choice
07:31:40 <itidus22> League of European Research Universities, europe, History of the Soviet Union (19821991), Perestroika, cold war, Dissolution of the Soviet Union, union state
07:31:56 <oerjan> itidus22: that merges with my previous one
07:32:00 <itidus22> ... some of these i get nervous about whether i am choosing correctly but so far so good
07:32:05 <oerjan> from the dissolution
07:32:21 <itidus22> holy crap
07:33:09 <Jafet> I wonder what distribution is followed by these "last links".
07:33:15 <kallisti> anal sex, butt plug, anal cancer, buttocks, feces, anallingus
07:33:44 <itidus22> we seem to have found a vergence in the wiki
07:33:44 <Jafet> If you know the distribution, you can calculate the expected path length, etc.
07:33:45 <oerjan> Hypothesis, Counterfactual conditional, Indicative conditional, Material conditional, Reductio ad absurdum
07:34:05 <kallisti> pegging, fingering, Judaism, ethnoreligious group, Anti-Discrimination Act 1997
07:34:12 <itidus22> =))
07:35:11 <elliott> MC Hammer, Doug E. Fresh, microphone, piezoelectric, propane barbecues, regional variations of barbecue, western united states, tennessee, tennessee aquarium, cambridge seven associates, interior design
07:35:14 <elliott> amazing
07:35:19 <elliott> oerjan: what do you do if there's no links in the intro
07:35:46 <oerjan> elliott: i've not seen that yet, although i have seen a couple with just one
07:36:00 <elliott> oerjan: WHAT DO I DO!!
07:36:01 <elliott> do i give up
07:36:07 <oerjan> i suppose :/
07:36:10 <Jafet> How could you turn this into a multi-player game?
07:36:21 <itidus22> hmm
07:36:29 <elliott> Jafet: you have to meet the other person?
07:36:31 <elliott> and you play in teams
07:36:36 <elliott> trying to link the whole team up on the same trail
07:36:57 <oerjan> Anselm of Canterbury, Pope Clement XI, Pope, Assumption of Mary, Juan de Salazar de Espinosa, Álvar Núñez Cabeza de Vaca
07:37:15 <kallisti> transgender, pansexual, LGBT, questioning, Bi-curious, three-way, love triangle, murder, suicide, samurai, pre-industrial society, family economy, peasants, yeoman, Elizabethan era, Britannia.
07:37:28 <elliott> god blses britannia
07:37:52 <elliott> kallisti: i like how it goes "three-way, love triangle, murder"
07:38:00 <itidus22> brainfuck, proper noun, Article (grammar), Zero-marking in English, function word, --lost
07:38:02 <Jafet> I was thinking more along the lines of "Mornington Crescent".
07:38:03 -!- SgeoN1 has quit (Read error: Connection reset by peer).
07:38:04 <oerjan> Indigenous peoples of the Americas, Uncontacted peoples, Infectious disease
07:38:20 <itidus22> oerjan: can you identify the link on this page? http://en.wikipedia.org/wiki/Function_word
07:38:23 <oerjan> well obvious if you get to Mornington Crescent, you win
07:38:54 <oerjan> itidus22: http://en.wikipedia.org/wiki/Pro-sentence
07:38:56 <elliott> Mornington Crescent (game), London Underground, London Overground, Watford DC Line, alternating current, modulation, modem, phase shift keying, demodulator, modulation
07:39:04 <itidus22> ok cool makes sense to me
07:39:37 <Jafet> WhatLinksHere/Mornington_Crescent
07:39:43 <elliott> Friendship, reciprocity, and... uhh
07:39:45 <elliott> oerjan: http://en.wikipedia.org/wiki/Reciprocity_(social_psychology) help
07:39:51 -!- Ngevd has joined.
07:40:27 <oerjan> elliott: http://en.wikipedia.org/wiki/Influence:_Science_and_Practice
07:40:36 <Jafet> Hrm, only three Main pages link to Mornington_Crescent.
07:40:51 <Jafet> No wonder that game was hard to win.
07:40:55 <elliott> oerjan: hmm, bored of this chain now :(
07:41:01 <oerjan> Jafet: heh
07:41:03 <elliott> time to go totally stupid!
07:41:16 <elliott> sex, sexual dimorphism, behavior, involuntary,
07:41:23 <elliott> oerjan: what do i do about disambigs, go to the last link?
07:41:31 <elliott> the last disambig link, not last see also or w/e
07:41:50 <Ngevd> Hello!
07:42:04 <oerjan> elliott: well i think i've pretty consistently stopped before the second section line
07:42:13 <elliott> sex, sexual dimorphism, behavior, involuntary, involuntary commitment, deinstitutionalisation, community mental health act, homelessness, domestic violence, abuse
07:42:19 <elliott> WOW sex is serious stuff!
07:42:32 <Jafet> Kids, don't do sex.
07:42:35 <oerjan> hi Ngevd we're playing a new wikipedia game
07:42:53 <elliott> , aggression, assertiveness, self-esteem, amour-propre, Fall of Man
07:42:56 <elliott> sex -> fall of man
07:43:12 <Ngevd> Has elliott had any sleep?
07:43:41 <elliott> , nostalgia, Old South, history of the united states (1789–1849), second great awakening, jesus christ (yes i win!!), Bahá'í Faith, Bahá%27í_symbols#The_Greatest_Name
07:43:44 <elliott> oerjan: what do i do for section links
07:43:45 <elliott> last link in section?
07:43:56 <oerjan> elliott: i've just gone to the article beginning
07:44:02 <elliott> meh, i prefer last in section
07:44:12 <elliott> , manifestation of god, progressive revalation (Bahá'í), manifestation of god
07:44:17 <elliott> sex is all about bahá'í
07:44:21 <oerjan> Synonym, Thesaurus, Historical Thesaurus of the Oxford English Dictionary, Roget's Thesaurus
07:44:24 <elliott> and homelessness. and domestic violence. and abuse.
07:44:31 <elliott> sex: just say no.
07:44:35 <oerjan> Ngevd: not to my knowledge
07:44:47 <Ngevd> Okay, elliott, go to sleep
07:44:54 <Ngevd> I will meanwhile have a shower
07:45:09 <itidus22> =))
07:45:27 <elliott> wikipedia, Encyclopædia Britannica, british spelling, american and british english differences, english language#geographical distribution, indian english, english medium education, david graddol, university of york, green belt (uk), duncan sandys
07:45:30 <elliott> winston churchill
07:45:35 <kallisti> elliott: you know you want to stop doing this and watch the most legendary starcraft player sc2.
07:45:39 <elliott> 100 greatest britons
07:45:42 <elliott> the beatles
07:45:49 <elliott> Time 100: The Most Important People of the Century
07:45:53 <elliott> albert einstein
07:45:55 <elliott> genius
07:45:58 <elliott> mastery
07:46:02 <elliott> basic skills
07:46:06 <elliott> constance kamii
07:46:11 <oerjan> Categories (Aristotle), Apprehension (understanding), Space, Tests of general relativity
07:46:18 <elliott> birmingham, alabama
07:46:23 <elliott> southeastern conference
07:46:26 <elliott> michael slive
07:46:29 <elliott> academic year
07:46:46 <elliott> positive correlation
07:46:49 <elliott> robust statistics
07:46:50 <oerjan> Tests of special relativity, and back to the previous one.
07:46:52 <elliott> esimator
07:46:55 <elliott> robust statistics
07:47:01 <elliott> esimator, robust statistics, esimator, robust statistics, esimator, robust statistics, esimator, robust statistics, esimator, robust statistics, ...
07:47:12 <fizzie> Very robust.
07:47:18 <oerjan> vee haf loops
07:47:49 <oerjan> i believe kallisti stopped at britannia
07:48:45 <itidus22> rjan (given name) is left as an exercize to the reader
07:49:09 <oerjan> Britannia, Kingdom of Scotland, Capital city, County seat, List of boroughs and census areas in Alaska
07:49:41 <kallisti> oerjan: yes I went from anal sex to Brittania
07:51:03 <oerjan> United States Census Bureau, President of the United States, Inauguration of Barack Obama, National Mall, Washington Monument
07:52:55 <oerjan> 2011 Virginia earthquake, Canada, Standard of living, South Korea, East Asia Summit, Kuala Lumpur
07:54:14 -!- calamari has quit (Quit: Leaving).
07:54:56 <itidus22> the dark side, DarkSide (collaboration), Laboratori Nazionali del Gran Sasso, ILIAS, MySQL, Twitter, new york city, rockefeller university, The Journal of General Physiology, molecule, glass, studio glass, glassblowing, (loop to) glass
07:55:16 <oerjan> Petronas Towers, Kuala Lumpur Tower, and loop back to the previous one.
07:55:45 <oerjan> kallisti: conclusion, anal sex can get you to some tall places
07:57:47 <oerjan> ocd'ing on elliott's unfinished one: Influence: Science and Practice, Regulatory compliance, whoops no link.
07:58:21 <elliott> lol
07:58:56 <itidus22> no link?
07:59:18 -!- Jafet has quit (Quit: Leaving.).
07:59:21 <itidus22> ahhh
07:59:22 <oerjan> well, i _could_ take the disambiguation one i guess, but that doesn't count in the usual first link game...
07:59:29 <itidus22> ahhh cool
07:59:33 <itidus22> so no link means no link
08:00:09 <kallisti> itidus22: indeed
08:01:14 <itidus22> so does this one lead to ECA? http://en.wikipedia.org/wiki/2006_in_video_gaming
08:02:01 <oerjan> Örjan (given name), Baptism, ignore internal link, Believer's baptism, back to Baptism via section link
08:02:41 <itidus22> oerjan: theres basiclaly no escaping baptism however you try it
08:03:07 <oerjan> itidus22: bah i guess ECA is it, not a well formatted article for this
08:03:18 <itidus22> hmm ok lets ignore the eca
08:03:44 <itidus22> minecraft, dwarf fortress, 2006 in video gaming, malformed
08:04:02 <oerjan> um i meant the article which eca was on was not good for this
08:04:12 <itidus22> ya.. it's a doozy
08:04:28 <itidus22> but minecraft leads to dwarf fortress which is cool
08:06:14 <oerjan> i'll try Baptism again with elliott's section linking method
08:06:51 <oerjan> whoops should i take the whole section or just the first subsection
08:06:55 <oerjan> elliott: ^
08:07:19 <elliott> oerjan: um what do you mean
08:07:22 <elliott> you take the section it links to
08:07:23 <elliott> oh subsection
08:07:26 <elliott> ignore subsections, I think
08:07:33 <elliott> you're looking for the "intro" to the section
08:07:38 <elliott> basically imagine the section was an article itself
08:07:41 <elliott> that's the article you were linked to
08:07:42 <oerjan> ok
08:08:02 <itidus22> it makes no difference.. you still end up trapped
08:08:06 <itidus22> hahaha
08:08:43 <oerjan> Baptism, Baptism#Other_initiation_ceremonies, Archaeology, Pseudoarchaeology
08:08:43 <itidus22> oh.. unless there is a special section rule.. hm
08:08:47 <itidus22> ahh cool
08:09:00 <itidus22> so thats the section rule
08:10:42 <oerjan> Evolution, Evolutionary psychology, Criticism of evolutionary psychology, darn loops back to evolutionary psychology
08:13:06 -!- Slereah has joined.
08:14:49 -!- Slereah_ has quit (Ping timeout: 258 seconds).
08:17:50 <itidus22> xkcd, leet, Hacker (hobbyist), Altair 8800, Altair BASIC, Microsoft BASIC, Microcomputer, Personal computer, smartphones, Binary Runtime Environment for Wireless, Machine code, Bytecode, Compiler, Parsing, Part of speech,
08:20:20 <oerjan> Haskell (programming language), Curry%E2%80%93Howard_correspondence#Origin.2C_scope.2C_and_consequences, Corecursion, Self-reference, Paradox, Inspection, no link
08:21:20 <Ngevd> Where are we allowed to start?
08:22:07 <oerjan> Ngevd: any main namespace wikipedia article you want, including random
08:23:54 <oerjan> oh itidus22 already did brainfuck, no wonder this looked familiar
08:24:37 <itidus22> Stative verb, Dynamic verb, Historical present, Foregrounding, Pragmatics, experience, Recreational drug use, Psychoactive drug, Neuroethics, Justice, Equity (law), Common law, Australia, .. man this is a long one
08:25:44 <Ngevd> And what do we have to do?
08:26:40 <oerjan> Ngevd: look at the introduction section, and find the _last_ link there to another wikipedia main space article
08:26:44 <itidus22> Pacific Islands Forum, Northern Mariana Islands, Capital city, County seat, List of boroughs and census areas in Alaska, United States Census Bureau -- and this part has been done before i think
08:26:57 <oerjan> itidus22: yep, from Capital city
08:27:31 <itidus22> xkcd had so much hope when it got to parsing.. but it fell apart
08:27:55 <oerjan> Ngevd: then just see what strange path you follow before looping or there being no link
08:27:56 <Ngevd> Goodbye
08:27:57 -!- Ngevd has quit (Quit: Goodbye).
08:29:25 <oerjan> brainfuck, ..., Pro-sentence, Emotion, Armindo Freitas-Magalhães, Forensic science, Synonym and i'm sure i've seen that before.
08:30:50 <oerjan> it ended up looping between Tests of general relativity and Tests of special relativity
08:30:59 <elliott> @djinn ((x -> b) -> c) -> ((x -> a) -> b) -> ((x -> a) -> c)
08:31:00 <lambdabot> f a b c = a (\ d -> b (\ _ -> c d))
08:31:07 <elliott> NOT HELPFUL LAMBDABOT
08:31:15 <itidus22> "oerjan> Synonym, Thesaurus, Historical Thesaurus of the Oxford English Dictionary, Roget's Thesaurus"
08:32:48 <itidus22> DMM is let down a bit in this game.
08:34:01 <oerjan> :t \a b c -> a (\x -> b c)
08:34:02 <lambdabot> forall t t1 t2 t3. ((t1 -> t2) -> t3) -> (t -> t2) -> t -> t3
08:34:58 <oerjan> elliott: ^
08:35:28 <elliott> oerjan: the correct solution is actually \a b c -> a (\d -> b (c . (++ d)))
08:35:52 <oerjan> elliott: that seems somewhat unlikely with that ++
08:36:02 <elliott> oerjan: i can assure you it's correct
08:36:16 <oerjan> :t \a b c -> a (\d -> b (c . (++ d)))
08:36:16 <lambdabot> forall b m t t1. (Monoid m) => ((m -> t) -> t1) -> ((m -> b) -> t) -> (m -> b) -> t1
08:36:24 <elliott> caleskell :')
08:37:54 <oerjan> well it doesn't work without x being a list type, then
08:39:01 <elliott> oerjan: duh. i was simplifying it so djinn gave me the structure
08:39:08 <elliott> I use x as a placeholder for concrete types usually
08:39:46 <oerjan> i suppose it _should_ be a special case of the type of mine, since (c . (++ d)) always has the same type as c when it types
08:39:51 * elliott wishes his editor had djinn
08:40:01 <itidus22> befunge, Programming language, Reference implementation, Java Platform Enterprise Edition, Application server, Personal computer hardware, Device driver, Interrupt, Interrupt handler, Event (computing), Interactivity, Industrial design, United States, List of countries by military expenditures, Stockholm International Peace Research Institute,
08:40:20 <oerjan> itidus22: United States has been seen before
08:40:27 <itidus22> ah ok thanks
08:41:29 <elliott> :t showHex
08:41:30 <lambdabot> forall a. (Integral a) => a -> String -> String
08:48:47 <itidus22> EgoBot, Whirl, Turning tarpit, Turing tarpit, Turing-complete, Church-Turing thesis, Lambda calculus, (loops back to) Church-Turing thesis
08:50:05 <oerjan> Toto, I don't think we're in Wikipedia anymore
08:50:20 <itidus22> i should give it a rest
08:50:41 -!- oerjan has quit (Quit: Good night).
08:58:49 <elliott> @unmtl Cont r a
08:58:49 <lambdabot> (a -> r) -> r
09:41:01 <kallisti> elliott: hi
09:41:08 <kallisti> elliott: FRP for newtonian physics?
09:41:13 <kallisti> yes? no?
09:41:17 <elliott> what
09:41:26 <kallisti> so, no.
09:41:29 <kallisti> okay. thanks. :)
09:41:42 <elliott> no that's
09:41:42 <elliott> not no
09:41:46 <elliott> that's
09:41:46 <elliott> not even no
09:41:47 <elliott> as in
09:41:49 <elliott> what the hell are you talking about
09:42:01 <kallisti> I was wondering if FRP worked for a physics engine
09:42:02 <kallisti> for games
09:42:03 <kallisti> such as
09:42:04 <kallisti> aii
09:42:51 <elliott> yes it turns out that frp is applicable to many game engines?
09:42:59 <kallisti> okay cool
09:43:02 <kallisti> do you want to do that for the physics?
09:43:06 <elliott> but i doubt it helps much
09:43:07 <elliott> since
09:43:11 <elliott> there is exactly one piece of physics driving everything
09:43:20 <kallisti> or animation
09:43:32 <kallisti> only one? I thought there was heat and stuff as well as velocity.
09:43:43 <kallisti> and gravity
09:43:56 <elliott> ...
09:44:08 <elliott> i meant one piece of physics code
09:44:19 <elliott> maybe i'll sleep, i'm starting to get annoyed at way too frequent a rate
09:44:58 <kallisti> elliott: nah just watch starcraft videos
09:45:03 <kallisti> that's what I've been doing.
09:46:21 <kallisti> elliott: so basically gravity is the one piece of complex physics code
09:46:50 <kallisti> with velocity being trivial and player thrusting being trivial as well.
09:46:53 <elliott> no
09:46:54 <elliott> the
09:47:00 <elliott> one piece of physics code is the newtonian physics simulation
09:47:14 <elliott> which
09:47:18 <elliott> is going to be a few thousand lines at absolute maximum
09:47:33 <elliott> and is pretty much a self-contained, pre-specified system
09:47:38 <elliott> so i don't see how frp would help at all
09:49:47 <kallisti> dunno
09:50:08 <kallisti> I thought that it would perhaps make the code easier to write
09:50:24 <kallisti> rather than being used to couple mulitple components.
09:51:45 <elliott> like i just said
09:51:47 <elliott> there is exactly one component
09:52:16 <kallisti> right
09:52:17 <kallisti> that's why
09:52:19 <kallisti> I wasn't suggesting that one
09:52:28 <kallisti> the one involving the multiple components.
09:52:48 <kallisti> it was basically just a guess as I actually don't understand the use case of FRP
10:06:58 -!- augur has joined.
10:12:25 -!- elliott has quit (Ping timeout: 245 seconds).
10:44:18 -!- augur has quit (Ping timeout: 240 seconds).
10:50:19 -!- ais523 has joined.
11:21:18 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:30:45 -!- ais523 has quit (Read error: Operation timed out).
11:32:10 -!- ais523 has joined.
11:53:32 -!- derdon has joined.
12:31:12 -!- derdon has quit (Remote host closed the connection).
13:14:02 -!- derrik has joined.
14:05:42 -!- ais523 has quit (Remote host closed the connection).
14:07:57 -!- derrik has quit (Ping timeout: 252 seconds).
14:28:20 -!- Ngevd has joined.
14:28:34 <Ngevd> Are you still playing that wikipedia game?
14:30:08 <Ngevd> Also, hello!
14:34:53 <Ngevd> London, Ontario ends on a loop betweeen Sanskrit and Sanskrit revival
14:35:05 <Ngevd> Via Nihilism, Zeitgeist, Dutch Golden Age
14:45:28 -!- derrik has joined.
14:51:06 -!- Phantom_Hoover has joined.
14:52:03 <Ngevd> Hello derrik, Phantom_Hoover
14:52:12 <Ngevd> fungot?
14:52:12 <fungot> Ngevd: there! there it is! but by the time we're through with you, you'll be in danger. open hatch. 400 long years. when will it be the reptites, or you silly apes who end up ruling the world?
14:52:14 <derrik> hi Ngevd
14:52:21 -!- ais523 has joined.
14:52:27 <Ngevd> Hello ais523
14:52:28 <Phantom_Hoover> Great, now my name is associated with derrik's for all time.
14:52:28 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
14:52:57 <ais523> hi Ngevd
14:52:58 <derrik> Phantom_Hoover: yw
14:53:14 <Ngevd> ^style
14:53:14 <fungot> Available: agora alice c64 ct* darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
14:53:19 <Ngevd> ^style ct
14:53:19 <fungot> Selected style: ct (Chrono Trigger game script)
14:53:31 <Ngevd> ^style homestuck
14:53:31 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
14:53:32 <Ngevd> fungot
14:53:32 <fungot> Ngevd: have a look.
14:54:10 <Ngevd> fungot, demonstrate intelligence
14:54:11 <fungot> Ngevd: but in a more platonic sense, and with a more specific social purpose.
14:55:26 <Ngevd> ^style discworld
14:55:27 <fungot> Selected style: discworld (a subset of Terry Pratchett's Discworld books)
14:55:49 <Ngevd> fungot, what's up?
14:55:50 <fungot> Ngevd: ' by now,' said ridcully. " you've got one minute."
14:56:03 <Phantom_Hoover> That's... coherent.
14:56:27 <Ngevd> Got a new Pterry today
14:57:08 <Phantom_Hoover> Vimes dies.
14:57:12 <Phantom_Hoover> So does Rincewind.
14:57:21 <Phantom_Hoover> Death goes into a coma.
14:57:22 <Ngevd> Cohen?
14:57:35 <Phantom_Hoover> He becomes a zombie.
14:57:42 <Ngevd> Wow, cool
14:58:05 <Phantom_Hoover> He has a duel to the death with Slant and Reg Shoe.
14:58:31 <Ngevd> In I Shall Wear Midnight?
14:58:42 <Ngevd> Why is none of this even /hinted at/ on the cover?
14:59:01 <Phantom_Hoover> It's a suprise.
14:59:05 <Phantom_Hoover> Also a surprise.
15:05:28 -!- MDude has joined.
15:08:18 -!- MSleep has quit (Ping timeout: 248 seconds).
15:08:36 -!- derrik has quit (Quit: gone).
15:11:17 -!- ais523 has changed nick to ais523\unfoog.
15:36:50 <Ngevd> My eyes hurt and I can smell cheese
15:49:28 <Phantom_Hoover> Has someone stuck some cheese in your eyes, by any chance?
15:49:54 <Ngevd> Not as far as I am aware
15:50:10 <Phantom_Hoover> Check, just to be sure.
15:50:30 <Ngevd> There is very little cheese in my eyes
15:50:42 <Ngevd> None that could couse this simultaneous pain and smell
15:50:50 <Ngevd> I suspect the two are unrelated
15:51:09 <Phantom_Hoover> Move to a different area where there is no cheese smell, test for correlation.
15:51:32 <Ngevd> This is not the time for science!
15:51:48 <Phantom_Hoover> ALL TIMES ARE TIME FOR SCIENCE
15:52:03 <quintopia> someone quote those lines please
15:52:14 <quintopia> oh wait
15:52:18 <Phantom_Hoover> HackEgo is still down.
15:52:20 <quintopia> no bots
15:52:23 <quintopia> :
15:52:26 <Ngevd> fungot is a bot
15:52:29 <quintopia> :<
15:52:29 <Ngevd> Probably
15:52:30 <Phantom_Hoover> !sanetemp 57
15:52:33 <EgoBot> 13.8
15:52:39 <Ngevd> fungot!?
15:52:39 <quintopia> fungot cant quote :<
15:52:39 <Phantom_Hoover> !sh lss
15:52:40 <EgoBot> ​/tmp/input.832: line 1: lss: command not found
15:52:40 <fungot> quintopia: bucket gaped at him. " certainly your actual pig products. genuine pig." " yeah. you could tell them all that."
15:52:41 <Phantom_Hoover> !sh ls
15:52:41 <EgoBot> interps
15:53:18 <quintopia> oh egobot is here
15:53:34 <quintopia> why is egobot here but not hackego?
15:53:42 <Phantom_Hoover> God only knows.
15:54:00 <Ngevd> > "lambdabot is also here"
15:54:01 <lambdabot> "lambdabot is also here"
15:54:03 <Phantom_Hoover> Although on second thoughts I suppose Gregor does too.
15:54:17 <quintopia> should have written GOK
15:54:23 <Ngevd> God only knows; Gregor understands
15:54:24 <quintopia> could be interpreted either way
15:55:05 <quintopia> we need to preserve for posterity the fact that Ngevd thinks there is a time that is not for science
15:56:36 <quintopia> i guess its up to me
15:56:41 <quintopia> i shall tweet it
16:22:36 -!- Sgeo has joined.
16:35:20 -!- Ngevd has quit (Ping timeout: 240 seconds).
16:39:30 -!- MDude has quit (Ping timeout: 248 seconds).
16:49:54 -!- Sgeo has quit (Ping timeout: 240 seconds).
16:52:59 -!- Sgeo has joined.
16:59:26 -!- monqy has joined.
17:03:30 <quintopia> hi monqy
17:03:36 <quintopia> where you live?
17:05:22 <monqy> !!
17:05:26 <monqy> is usa specific enough
17:05:38 <monqy> does someone know me
17:06:07 <quintopia> no. i was just curious as to country and time zone
17:06:14 <monqy> oh
17:06:17 <monqy> pacific time
17:06:21 <quintopia> if you are usa then happy t-day!
17:06:41 <monqy> so that's today? I can never remember which it is
17:07:16 <quintopia> its always thursday
17:07:25 <monqy> maybe I'll remember now
17:08:19 -!- sebbu2 has joined.
17:08:46 <pikhq> It's the second-to-last Thursday of the month.
17:09:00 <pikhq> (of November)
17:10:00 -!- sebbu has quit (Ping timeout: 260 seconds).
17:12:44 <quintopia> it's easy to tell what day it is. if the newspaper looks unusually thick, even for a snday paper, but its thursday? thanksgiving
17:13:21 <Phantom_Hoover> Is this that quaint American thing you do with the turkey?
17:13:30 -!- Sgeo has quit (Ping timeout: 240 seconds).
17:13:48 <quintopia> turkey?
17:14:22 <quintopia> no we celebrate thanksgiving with a watching of addams family values and giving smallpox-infected blankets to neighbors
17:14:25 <quintopia> its tradition
17:14:33 -!- Sgeo has joined.
17:14:44 <Phantom_Hoover> The smallpox must be hell to source these days.
17:15:13 -!- sebbu2 has changed nick to sebbu.
17:17:03 <quintopia> its a long-standing tradition. we've had it since the beginning. other families keep their christmas lights up all year. we keep our smallpox fed all year
17:17:46 <Phantom_Hoover> I bet the man's always trying to take it away.
17:19:13 <quintopia> nah, america esteems tradition highly
17:19:38 <quintopia> and since we only give it to the mexican neighbors, they can see that we are just doing our patriotic duty
17:49:22 -!- PiRSquared17 has joined.
17:49:53 <PiRSquared17> Hello again
17:51:09 <quintopia> hi
17:51:16 <quintopia> where you from?
17:51:30 <PiRSquared17> Virgo supercluster
17:51:36 <quintopia> ah
17:51:45 <quintopia> they probably dont celebrate thanksgiving there
17:53:30 -!- Sgeo has quit (Ping timeout: 240 seconds).
17:54:28 <quintopia> < solid_liq> Dianora, not at all. I've tried other languages numerous times over the last 27 years, and always head back to the best two languages: C and C++
17:54:37 -!- Sgeo has joined.
17:54:49 <quintopia> a religious war in ##electronics >_>
17:55:13 <oklopol> i think it's spelled ridiculous
17:58:27 <quintopia> i would agree
17:58:43 <quintopia> at least
17:58:49 <quintopia> solid_liq is ridiculous
18:00:48 <oklopol> well he is obviously insane
18:01:08 <oklopol> he's religious?
18:01:30 -!- Sgeo has quit (Ping timeout: 240 seconds).
18:02:12 <quintopia> when it comes to C and C++
18:03:06 -!- copumpkin has changed nick to TheRubberTurkey.
18:04:37 -!- Sgeo has joined.
18:07:20 -!- TheRubberTurkey has quit (Quit: Computer has gone to sleep.).
18:10:26 -!- derrik has joined.
18:26:48 -!- elliott has joined.
18:29:48 -!- Ngevd has joined.
18:30:25 <Ngevd> Hello!
18:30:29 <elliott> helo
18:30:35 <Ngevd> Still no HackEgo?
18:33:38 <elliott> 17:54:28: <quintopia> < solid_liq> Dianora, not at all. I've tried other languages numerous times over the last 27 years, and always head back to the best two languages: C and C++
18:33:42 <elliott> quintopia: i have the best rebuttal:
18:33:47 <elliott> quintopia: "you're stupid"
18:33:56 <quintopia> yes
18:34:00 <quintopia> we all said that
18:34:08 <Ngevd> D is much better
18:34:23 <elliott> quintopia: so since this was ##electronics did they say "oh, asm is so much better"
18:34:29 <elliott> sorry i'm kind of racist against electronicists
18:34:35 <quintopia> eh only jokingly
18:34:44 <pikhq> Well, for many uses asm *is* better.
18:34:48 <quintopia> mostly they just said "they have their good and bad sides"
18:35:06 <pikhq> Said uses just aren't exactly popular anymore. :P
18:35:21 <elliott> the great thing about C++ is all it has is bad files
18:35:39 <elliott> s/files/sides/ oops
18:35:52 <pikhq> True. "Hmm. C has many mistakes. Let's make more."
18:37:16 <elliott> git wizards: How can I apply the inverse of three contiguous commits, preferably with a nice autogenerated commit message?
18:37:27 <Ngevd> If this channel tried to create the perfect programming language, what would it look like?
18:37:50 <quintopia> underload :P
18:38:06 <Ngevd> An impure language with no input?
18:38:14 <elliott> underload is pure
18:38:14 <pikhq> It would be N+1 languages, where N is the number of channel members.
18:38:29 <elliott> it's a transformation from a program to a program
18:38:30 <elliott> or
18:38:32 <quintopia> who would write two?
18:38:36 <elliott> a program to a stack of programs and a program
18:38:39 <elliott> but usually you discard the stack
18:38:50 <pikhq> I dunno. Gregor or elliott, I guess?
18:38:55 <elliott> i mean yes every language is "pure" in this sense
18:38:58 <quintopia> nah
18:38:59 <elliott> but underload fits it quite well
18:39:03 <pikhq> elliott: What, you mean, um, undoing 3 commits?
18:39:06 <quintopia> elliott wouldnt even finish the first one
18:39:08 <elliott> pikhq: yep
18:39:25 <quintopia> we'd probably just sit back and wait for feather
18:39:58 <pikhq> elliott: "git revert HEAD~2"
18:40:03 <elliott> pikhq: i never said they were head
18:40:07 <elliott> pikhq: there have been commits since
18:40:10 <elliott> i want to retain those
18:40:28 <pikhq> "git revert first_commit..last_commit"
18:40:34 <elliott> thx
18:42:15 <elliott> a03d8ec Close upgrade_fd when upgrading
18:42:16 <elliott> 6e816b9 Fix a "leak" in //upgrade
18:42:16 <elliott> 4edb5be Awful //upgrade stuff. I'm ashamed.
18:42:18 <elliott> time to revert these!
18:43:11 <elliott> pikhq: doesn't work man
18:43:14 <elliott> pikhq: it tries to revert them all separately
18:44:43 <Ngevd> My RSS feeds haven't told me about any mchost or mcmap updates for ages
18:44:48 <Ngevd> Should I be worried?
18:45:37 <elliott> there haven't been any
18:46:01 <Ngevd> That replaces worry with dissappointment
18:46:57 <elliott> pikhq: which is weird :/
18:47:17 <elliott> aha, -n
18:47:45 <elliott> pikhq: nope, doesn't work
18:49:47 <elliott> pikhq: I guess I'll just get the diffs and manually reverse-apply them?
18:50:48 <elliott> [elliott@dinky mcmap]$ git diff 4edb5be~..a03d8ec | git apply -R
18:50:48 <elliott> woo, massive failures
18:52:34 -!- Phantom__Hoover has joined.
18:55:46 -!- Zuu has joined.
18:55:51 -!- Zuu has quit (Changing host).
18:55:51 -!- Zuu has joined.
18:56:18 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:10:28 -!- MSleep has joined.
19:15:14 -!- MSleep has quit (Ping timeout: 248 seconds).
19:15:14 -!- TheRubberTurkey has joined.
19:18:55 -!- TheRubberTurkey has changed nick to copumpkin.
19:18:55 -!- copumpkin has quit (Changing host).
19:18:55 -!- copumpkin has joined.
19:19:23 <elliott> ais523\unfoog: your termcast seems a lot laggier than last time for some reason
19:19:44 <ais523\unfoog> perhaps the game's just laggy
19:21:46 <elliott> gah, I just realised that my second- or third-favourite programming editor isn't maintained any more
19:24:24 -!- pikhq has quit (Ping timeout: 260 seconds).
19:29:40 <elliott> ais523\unfoog: I am flabbergasted to learn that owlbears are a thing
19:29:48 <ais523\unfoog> heh
19:29:51 <ais523\unfoog> I take it you're watching me
19:29:56 <elliott> intermittently
19:29:59 <ais523\unfoog> I'm not really used to playing wizards
19:30:01 <ais523\unfoog> they're too squishy
19:30:03 <coppro> blarg, I need to make more slides
19:30:08 <elliott> i'm not sure where you are, exactly
19:30:09 <ais523\unfoog> I need beter armour
19:30:12 <ais523\unfoog> and that's the Quest home level
19:30:29 <ais523\unfoog> hey, I could actually use a shield
19:30:30 <coppro> ais523\unfoog: they're squishy early on, but if they survive, they can't lose
19:30:41 <ais523\unfoog> coppro: they're squishy even late on
19:30:44 <ais523\unfoog> despite being overpowered offensively
19:30:54 <coppro> yeah, but the squishiness is irrelevant
19:30:59 <coppro> since they can FoD everything
19:31:32 <coppro> especially if they find markers to enchant their armor with
19:32:32 <ais523\unfoog> nah, it messes up spellcasting too much
19:32:47 <ais523\unfoog> wizards should be spending three or four wishes on markers
19:32:47 <coppro> dsm doesn't
19:32:55 <ais523\unfoog> I know
19:33:01 <ais523\unfoog> the nah was at the shield I just tried on
19:33:04 <coppro> ah
19:33:13 <coppro> also magicbane
19:33:15 <ais523\unfoog> which reminds me, I need to find somewhere nice and enclosed to revgeno silver dragons
19:33:31 <coppro> magicbane is rather silly
19:33:51 <ais523\unfoog> I'm practicing with magicbane atm
19:33:57 <ais523\unfoog> I've been using a quarterstaff pretty much all game
19:34:22 <coppro> magicbane is good just for being an athame
19:34:29 <coppro> much less having the properties it does
19:36:28 <ais523\unfoog> MR is pretty major as properties go, although ofc wizards have that anyway
19:42:14 <ais523\unfoog> yay, now I have SDSM
19:42:25 <ais523\unfoog> that went a bit wrong, I typoed off the Elbereth square and almost died
19:42:32 <ais523\unfoog> but all's well that ends well in NetHack, right?
19:51:00 <elliott> oh no, every now and then I forget this header file exist
19:51:00 <elliott> s
19:51:03 <elliott> and then I see it again
19:51:05 <elliott> and I remember my pain :(
19:55:13 -!- pikhq has joined.
20:13:54 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:14:56 -!- Sgeo has joined.
20:19:14 -!- copumpkin has quit (Ping timeout: 260 seconds).
20:19:30 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:22:42 -!- Sgeo has joined.
20:23:44 -!- GreaseMonkey has joined.
20:33:30 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:36:38 -!- Sgeo has joined.
20:41:35 <PiRSquared17> Bye
20:41:38 -!- PiRSquared17 has left.
20:42:45 -!- HackEgo has joined.
20:43:13 <elliott> HackEgo
20:43:14 <elliott> i love you
20:43:27 <kallisti> Sgeo: boooooo
20:43:37 <Ngevd> `pastequotes
20:43:39 <Sgeo> kallisti, hm?
20:43:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1598
20:44:29 -!- PiRSquared17 has joined.
20:44:36 <kallisti> `run cat '/var/irclogs/_esoteric/2011-11-24-raw.txt' | perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
20:44:38 <HackEgo> Sgeo 630; Ngevd 168; Slereah 97; itidus21 76; itidus22 71; pikhq 61; Darth_Cliche 56; MDude 43; copumpkin 43; Rugxulo 40; EgoBot 38; ais523 37; 32; SgeoN1 29; kmc 25; elliott 24; Jafet 22; monqy 13; Klisz 12; PiRSquared17 12; MSleep 11; sebbu2 10; HackEgo 7; Phantom_Hoover 5; sebbu 5; augur 5; derrik 5; itidus20 5; Zuu 4; TheRubberTurkey 3; GreaseMonkey 2; pikhq_ 2; derdon 2; Phantom__Hoover 1; yorick 1; kallisti 1;
20:44:45 <kallisti> Sgeo: ^^^
20:44:47 <Ngevd> `addquote <Ngevd> This is not the time for science! <Phantom_Hoover> ALL TIMES ARE TIME FOR SCIENCE
20:44:49 <HackEgo> 735) <Ngevd> This is not the time for science! <Phantom_Hoover> ALL TIMES ARE TIME FOR SCIENCE
20:44:50 <elliott> kallisti: Yes, just break it again.
20:44:56 <kallisti> ?
20:45:01 <GreaseMonkey> wow.
20:45:02 <kallisti> is that what broke it?
20:45:03 <elliott> That's the last thing happened before HackEgo died :)
20:45:04 <elliott> Well
20:45:07 <elliott> Apart from deleting bin/hi :P
20:45:13 <Ngevd> I'm the second mose quoted person!?
20:45:23 <kallisti> elliott: therefore it must have been that! :P
20:45:25 <Ngevd> I think?
20:45:32 <kallisti> no
20:45:33 <kallisti> ?
20:45:34 <elliott> Ngevd: Nope, that's counting JOINs
20:45:38 <monqy> `quote
20:45:40 <HackEgo> 618) <Taneb> I think this has taught us one thing. We can't teach itidus20 lambda calculus by comittee
20:45:46 <Ngevd> Wow, me
20:45:48 <sebbu> HackEgo, :(){:|:&};:
20:45:52 <Sgeo> This is why I was using the webchat for so long
20:46:06 <monqy> `quote
20:46:08 <HackEgo> 73) <oklofok> i use dynamic indentation, i indent lines k times, if they are used O(n^k) times during a run of the program
20:46:08 <GreaseMonkey> in all seriousness a fork bomb gave my harddrive a bad sector once
20:46:24 <Phantom__Hoover> And that's terrible.
20:46:40 <Phantom__Hoover> (The fork bomb forked forty times. That's as many as four tens.)
20:46:41 <yorick> hrm I didn't do anything today
20:46:43 <yorick> strange
20:47:26 <kallisti> Phantom__Hoover: also note how awesome I am at not spamming with joins
20:47:30 <kallisti> please note this
20:47:40 <Ngevd> Hang on
20:47:41 <kallisti> Phantom__Hoover: (asshole)
20:47:50 <Ngevd> I'm the most JOINing person?
20:47:53 <kallisti> no Sgeo
20:47:54 <Ngevd> Second most
20:47:56 <kallisti> Ngevd: can you read? :P
20:47:56 <monqy> sgeo sgeo
20:48:00 <kallisti> (ha ha ha )
20:48:02 <monqy> ha
20:48:05 <monqy> `quote
20:48:07 <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks
20:48:13 <Phantom__Hoover> Who *is* the most quoted?
20:48:17 <kallisti> me
20:48:20 <kallisti> (this is a lie)
20:48:21 <monqy> true mystery
20:48:28 <Ngevd> Kentucky... Magic Chicken?
20:48:34 <elliott> Phantom__Hoover: fungot or me or you, probably
20:48:34 <yorick> although I did disconnect once today
20:48:34 <monqy> yes
20:48:35 <fungot> elliott: ' i don't know, think of something that had existed before anyone else.' against her better judgement." she hammered the cork into the bottle with the end of the factory.
20:48:38 <yorick> I blame my ISP
20:48:45 <yorick> and otherwise freenode
20:48:49 <kallisti> elliott: I guess oerjan in fact.
20:48:56 <elliott> nahh
20:49:16 <Ngevd> If you divide by the time they've spent in the channel, probably me
20:49:32 <monqy> `quote taneb
20:49:34 <HackEgo> 464) <Taneb> Turned out he got recursion, he just didn't get the return statement \ 470) <Taneb> Cut to February <Taneb> War were declared <Taneb> A galaxy in turmoil <Taneb> Anyway, Febuary '10 \ 471) <Taneb> I can't afford one of those! <Taneb> A grandchild, not a laser printer \ 478) <fizzie> There's that saying that the definition of insanity is doing the same thing over and over again and expecting different
20:49:35 <monqy> `quote ngevd
20:49:37 <HackEgo> 652) <Ngevd> Dammit, Gregor, this is not the time to fall in love \ 658) [in the context of Open University] <Ngevd> "Unlike other operating systems, Linux operating systems use Linux" \ 661) <fungot> Ngevd:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov \ 663) <Phantom__Hoover> Also you steal Berwick from us and then
20:49:38 <monqy> `quote hovercraft
20:49:40 <kallisti> Ngevd: no itidus wins there
20:49:40 <HackEgo> No output.
20:49:51 <PiRSquared17> `quote PiRSquared17
20:49:53 <HackEgo> No output.
20:49:54 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:49:56 <Ngevd> `quote itidus
20:49:59 <HackEgo> 474) <itidus20> to assume that someone can be described by a rule without exception... is to assume they are omnipotent <oklopol> for instance stones are omnipotent, as they don't do anything, without exception \ 497) <itidus20> monqy: last night in my dreams I saw a false photo album of my childhood... looking ghostly \ 498) <monqy> itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him.
20:50:09 <PiRSquared17> `quote HackEgo
20:50:12 <HackEgo> 39) <ehird> `translatefromto hu en Hogy hogy hogy ami kemeny <HackEgo> How hard is that \ 96) <ais523> let's put that in the HackEgo quotes files, just to completely mystify anyone who looks back along them in the future \ 376) <cpressey> `quote django <HackEgo> ​352) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something <cpressey> thankfully only one \ 377) <monqy> `quote
20:50:15 <kallisti> @tell Sgeo you suck
20:50:15 <lambdabot> Consider it noted.
20:50:46 <kallisti> Phantom__Hoover: again note how awesomely I have managed to only join once today.
20:50:58 <kallisti> you may note that this is in no way associated with join/part spam
20:51:04 -!- Sgeo has joined.
20:51:06 <Phantom__Hoover> `quote kallisti
20:51:09 <HackEgo> No output.
20:51:10 <Phantom__Hoover> Q.E.D.
20:51:14 <monqy> `quote cakeprophet
20:51:16 <HackEgo> 141) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just stealing the universe's work and passing it off as our own. \ 142) <fungot> CakeProphet: reading herbert might be enlightening in one hand he held a long worm can be greased. twice i got it nearly there, and the protector of cattle. mars is
20:51:19 <monqy> bad quotes
20:51:41 <PiRSquared17> `quote lambdabot
20:51:43 <HackEgo> 407) [after a long string of Lymia getting lambdabot to spit out huge, meaningless type signatures] <Lymia> I need to learn more Haskell... <CakeProphet> ..I need to get op privs. \ 491) <monqy> rest in peace lambdabot???? <ais523> monqy: it'll probably be back later <monqy> nap in peace \ 588) <CakeProphet> monqy: help how do I use lambdabot to send messages to people. [...around half an hour later...] <CakeProphet>
20:51:43 <elliott> monqy: will you play aii
20:51:48 <monqy> whats aii
20:51:53 <elliott> Phantom__Hoover: tell monqy whats ai
20:51:54 <elliott> i
20:52:02 <elliott> `quote 588
20:52:03 <Sgeo> Hi
20:52:03 <lambdabot> Sgeo: You have 2 new messages. '/msg lambdabot @messages' to read them.
20:52:05 <HackEgo> 588) <CakeProphet> monqy: help how do I use lambdabot to send messages to people. [...around half an hour later...] <CakeProphet> @messages <lambdabot> quicksilver said 1y 2m 18d 19h 54m 29s ago: you use @tell
20:52:07 <Phantom__Hoover> monqy, OK take Asteroids.
20:52:08 <elliott> gotta let the channel see that one again
20:52:10 <elliott> so good :')
20:52:13 <Phantom__Hoover> And then stick II at the end.
20:52:19 <monqy> asteroidsii
20:52:35 <Phantom__Hoover> elliott, how...
20:52:58 <elliott> Phantom__Hoover: That quote is the reason I can't COMPLETELY mock belief in synchronicity.
20:53:22 <Phantom__Hoover> "a) What is Fermat’s Last Theorem? For what values of n is it false?"
20:53:35 <Phantom__Hoover> — A Cambridge interview question, apparently.
20:53:49 <Sgeo> It's clear what's meant by it, I think. Either that or it's a trick question.
20:53:55 -!- Phantom__Hoover has changed nick to Phantom_Hoover.
20:54:19 <kallisti> Phantom__Hoover: note that lack of good quotes has nothing to do with join/part spam, which is, if you haven't noticed, completely not associated with this nick name in any way.
20:54:20 <Phantom_Hoover> Well, TbH, it's clearly meant to be more of an interview-type discussion thing.
20:54:26 <kallisti> Phantom_Hoover: completely
20:54:29 <kallisti> :>
20:54:50 -!- SgeoN1 has joined.
20:55:06 <Ngevd> Can we get lambdabot to respond to ":>" with "DON'T DO THAT"?
20:55:13 <monqy> :>
20:55:17 <kallisti> :>
20:55:23 <Ngevd> Because it looks like a bird
20:55:26 <PiRSquared17> > print "DON'T DO THAT"
20:55:27 <lambdabot> <IO ()>
20:55:27 <Ngevd> And that is silly
20:55:32 <PiRSquared17> > "DON'T DO THAT"
20:55:33 <lambdabot> "DON'T DO THAT"
20:55:36 <SgeoN1> Are there integers a b and c for which a^n + b^n = c^n for various negative values of n?
20:55:36 <elliott> > text "DON'T DO THAT"
20:55:38 <lambdabot> DON'T DO THAT
20:55:39 <PiRSquared17> > text "DON'T DO THAT"
20:55:40 <lambdabot> DON'T DO THAT
20:55:53 <kallisti> 16:43:48: <Phantom_Hoover> Yes, and your name is not one unassociated with join/quit spam.
20:55:55 <Phantom_Hoover> /whois PiRSquared17
20:55:56 <kallisti> please note
20:55:59 <kallisti> this statement that was said on the 21st
20:56:01 <kallisti> take note.
20:56:04 <kallisti> of how wrong it is, yes.
20:56:12 <PiRSquared17> PiRSquared17 <~PiRSquare@wikipedia/PiRSquared17> “(pi *) . (^ 2)”
20:56:13 <Phantom_Hoover> kallisti, you are not being serious, right?
20:56:16 <Ngevd> > text "\08test"
20:56:17 <lambdabot> test
20:56:29 <Phantom_Hoover> I just want to get straight whether I should be laughing or pitying.
20:56:37 <kallisti> Phantom_Hoover: I am always serious when one has besmirched my good name.
20:56:53 <Phantom_Hoover> That's not how one uses 'one'.
20:57:07 <monqy> always serious when you has besmirched
20:57:13 -!- Sgeo has quit (Quit: Leaving).
20:57:14 <Ngevd> That's how one uses "someone"
20:57:14 <PiRSquared17> @pl \r -> pi * (r ^ 2)
20:57:14 <lambdabot> (pi *) . (^ 2)
20:57:22 <Phantom_Hoover> Besmirch you a good name.
20:57:53 <elliott> PiRSquared17: (tau *) . (/ 2) . (^ 2)
20:57:57 <elliott> Note increased elegance.
20:57:59 <kallisti> last I checked one just meant a single thing, in this context a person. the "hypothetical you" thing is stupid
20:58:26 <PiRSquared17> @type pi
20:58:26 <lambdabot> forall a. (Floating a) => a
20:58:29 <PiRSquared17> @type tau
20:58:30 <lambdabot> Not in scope: `tau'
20:58:35 <Ngevd> "one" is nominative, generally, I think?
20:58:41 <elliott> Phantom_Hoover: HASKELL IS WRONG
20:58:47 <elliott> WHAT DO WE DOOOOOOOO
20:58:54 <Phantom_Hoover> oh no quick tell quintopia
20:58:55 <kallisti> Ngevd: no, should is
20:58:56 <elliott> @ only supports ti, which is (tau + pi) / 4.7.
20:59:02 <kallisti> Ngevd: "one should" is commonly used, sure.
20:59:06 <elliott> Look how much more elegant it is:
20:59:08 <PiRSquared17> @type let tau = 2 * pi in tau
20:59:09 <lambdabot> forall t. (Floating t) => t
20:59:11 <elliott> With tau: (tau + (tau / 2)) / 4.7.
20:59:13 <kallisti> Ngevd: oh misread
20:59:16 <elliott> With pi: ((pi * 2) + pi) / 4.7.
20:59:18 <elliott> With ti: ti
20:59:19 <kallisti> Ngevd: I thought that was normative :P
21:00:07 -!- PiRSquared17 has changed nick to HalfTauRSquared.
21:00:36 <kallisti> Phantom_Hoover: anyway fuck your prescriptivism. "one" is totally fine there.
21:00:58 <kallisti> I will continue to be okay with this, but staunchly prescriptivist about other things.
21:00:58 <Ngevd> Could we @def tau pi * 2?
21:01:10 <HalfTauRSquared> @def tau pi * 2
21:01:11 <lambdabot> Maybe you meant: bf do let
21:01:12 <HalfTauRSquared> ?
21:01:15 <Phantom_Hoover> kallisti, fun fact, 'fuck prescriptivism' doesn't let you make up the language and act like it's everyone else's problem if it doesn't make sense.
21:01:24 <Deewiant> @let tau = pi / 3
21:01:25 <lambdabot> Defined.
21:01:33 <HalfTauRSquared> pi/3 ?
21:01:40 <kallisti> Phantom_Hoover: what about "one" does not make sense in that sentence?
21:01:52 <HalfTauRSquared> @let tau = pi * 2
21:01:53 <lambdabot> <local>:2:0:
21:01:53 <lambdabot> Multiple declarations of `L.tau'
21:01:54 <lambdabot> Declared at: <local>...
21:01:56 <monqy> everything
21:02:06 <kallisti> ?
21:02:28 <Phantom_Hoover> Because the word you were looking for was 'someone', which means something different.
21:02:28 <Ngevd> kallisti, "one" is nominative!!! I'm sure of it!
21:02:29 <monqy> i cnat eve begin to understand what you meant with that "one"
21:03:28 <Phantom_Hoover> It's particularly annoying because 'one' is not used in normal conversational English, so you were trying to be prescriptivist but failed.
21:03:41 <kallisti> so it's just annoying
21:03:43 <kallisti> good to know.
21:04:14 <elliott> `addquote <monqy> i cnat eve begin to understand what you meant with that "one"
21:04:17 <HackEgo> 736) <monqy> i cnat eve begin to understand what you meant with that "one"
21:04:22 <elliott> Phantom_Hoover: I use "one" all the time it is like a bad habit.
21:04:29 <HalfTauRSquared> i cnat eve ]
21:04:34 <HalfTauRSquared> i cnat eve
21:04:36 <Phantom_Hoover> elliott, that's OK, you're the Queen.
21:04:52 <elliott> HalfTauRSquared: That's better than monqy usually types.
21:05:50 <monqy> i type bad
21:05:56 -!- augur has joined.
21:07:07 <pikhq> One should use "one" as often as one desires.
21:07:17 <monqy> two
21:07:21 <kallisti> pikhq: yesssssss
21:07:33 <kallisti> one is the onest one one can say.
21:07:39 <pikhq> One should also be aware that one will look like one big prat.
21:08:02 <monqy> five
21:08:39 <kallisti> somesomeone is a good word.
21:08:49 <monqy> otherone
21:08:58 <monqy> manyone
21:09:01 <kallisti> onesomeone
21:09:06 <monqy> notone
21:09:18 <HalfTauRSquared> ntontonenoe
21:09:36 <kallisti> anytwo
21:09:39 <monqy> noone oneone twoone threeone fourone fiveone sixone sevenone
21:09:40 <HalfTauRSquared> soemoenotnoenoenoteno
21:10:04 <kallisti> Not Eno!!!!!!!!
21:10:11 <kallisti> noe not eno
21:10:35 <kallisti> soe moe not noe noe not eno
21:10:54 <kallisti> HalfTauRSquared: what do you have against Brian Eno, maan.
21:11:04 -!- MSleep has joined.
21:11:16 <HalfTauRSquared> Who is Brian Eno?
21:11:32 <kallisti> a man you dislike passionately
21:11:35 <kallisti> :(
21:11:37 <kallisti> WHY?
21:11:39 <pikhq> naiiti itiiti niiti saniti yoniti goiti rokuiti sitiiti ← Well, that looks really strange.
21:12:13 <HalfTauRSquared> soemoenotnoenoe /noteno/ ?
21:13:00 <elliott> HalfTauRSquared: brian eno is a cool dude
21:13:17 <HalfTauRSquared> soemoenotnoenoeyeseno
21:13:22 <kallisti> he pioneered being a cool dude.
21:13:39 <kallisti> andotherthings
21:17:56 -!- pikhq_ has joined.
21:17:59 -!- pikhq has quit (Ping timeout: 258 seconds).
21:21:34 <HalfTauRSquared> Can I put my nick back now?
21:21:52 -!- HalfTauRSquared has changed nick to PiRSquared17.
21:22:42 <elliott> No NEVER
21:23:10 <Ngevd> Look at me and kallisti
21:23:38 <PiRSquared17> fine
21:23:42 -!- PiRSquared17 has changed nick to HalfTauRSquared.
21:23:59 <HalfTauRSquared> I grouped it anyway(s?)
21:26:02 <HalfTauRSquared> ...
21:26:14 <HalfTauRSquared> ,,,
21:26:16 <HalfTauRSquared> ;;;
21:26:18 <HalfTauRSquared> :::
21:27:00 -!- Patashu has joined.
21:27:14 <HalfTauRSquared> `hello Patashu
21:27:16 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: hello: not found
21:27:27 <HalfTauRSquared> `welcome Patashu
21:27:30 <HackEgo> Patashu: 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
21:28:14 <HalfTauRSquared> http://esolangs.org/wiki/User:JillBrennan805
21:29:09 <monqy> to be expecte
21:29:10 <monqy> d
21:31:42 <HalfTauRSquared> http://esolangs.org/wiki/Category_talk:Languages :?
21:31:44 -!- Ngevd has quit (Quit: Goodbye).
21:32:35 <monqy> yes
21:32:38 -!- derrik has quit (Quit: quitter).
21:39:35 <Phantom_Hoover> "as an engineer i fully approve of your explanation, it is great. however as a marxist[...]"
21:39:40 <Phantom_Hoover> Best opening to anything ever.
21:44:49 <kallisti> rip ngevd
21:45:24 <elliott> Phantom_Hoover: Best.
21:46:02 <Phantom_Hoover> Hmm, what else can I stick "However, as a Marxist..." onto the end of.
21:46:23 <Phantom_Hoover> I am immensely proud to be standing here today. However, as a Marxist...
21:46:38 <elliott> Phantom_Hoover: I smell a Lyttle Lytton entry in the making.
21:46:53 <Phantom_Hoover> That makes two now.
21:47:08 <elliott> As an experienced musician, I would be delighted to join your band. However, as a Marxist[...]
21:47:40 <elliott> Phantom_Hoover: As a proud supporter of the fascist corporatocracy, I fully support Mr. President's actions. However, as a Marxist[...]
21:49:06 <Phantom_Hoover> I would be delighted to attend your formal dinner. However, as a Marxist...
21:49:38 -!- Notch has joined.
21:49:42 -!- Notch has quit (Client Quit).
21:49:49 <Phantom_Hoover> Dammit, someone snabbed it.
21:49:54 -!- Phantom_Hoover has changed nick to notch.
21:50:04 <ais523\unfoog> David began to slow slightly as his ears, however, as a Marxist…
21:50:04 -!- notch has changed nick to Guest55333.
21:50:11 -!- Guest55333 has changed nick to Phantom_Hoover.
21:50:17 <elliott> ais523\unfoog: you got it wrong
21:50:24 <ais523\unfoog> probably
21:50:30 <Phantom_Hoover> Wait can we work on the Finnish one>
21:50:31 <ais523\unfoog> I can never remember exactly how that one goes anyway
21:50:32 <elliott> David slowed slightly as his ears, however, as a Marxist
21:50:49 <ais523\unfoog> elliott: I thought that's what I thought it was and id turned out to be wrong
21:50:54 <ais523\unfoog> `log > David
21:50:58 <ais523\unfoog> *it
21:51:09 <ais523\unfoog> `echo ping
21:51:11 <HackEgo> ping
21:51:22 <HackEgo> 2010-08-18.txt:00:49:04: <augur> DAVID MITCHELL
21:51:39 <ais523\unfoog> `log > David
21:51:48 <HackEgo> 2009-06-17.txt:01:01:27: <GregorR> David slowed his pace slightly as his ears, bottled in formaldehyde, caught his eye. "Oh," he thought, "to be alive again."
21:51:56 <ais523\unfoog> elliott: seems we were both wrong
21:52:03 <ais523\unfoog> I knew it wasn't just "slowed slightly"
21:52:05 <ais523\unfoog> `log > David
21:52:11 <HackEgo> 2009-11-02.txt:02:28:54: <ehird> David Piepgrass is the designer of the Asset keyboard layout.
21:52:15 <ais523\unfoog> `log > David
21:52:21 <HackEgo> 2011-06-09.txt:22:05:28: <elliott> 00:31:32: <ehird> David slowed (his pace slightly) as (his ears, in a vat of chocolate); only his less slightly paces can go faster.
21:52:25 <ais523\unfoog> `log > David
21:52:30 <HackEgo> 2010-06-04.txt:13:31:36: <fizzie> David Haskellhoff.
21:52:41 <ais523\unfoog> elliott: which should we delete? :P
21:52:52 <elliott> `dellog 2010-06-04.txt:13:31:36:
21:52:55 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: dellog: not found
21:53:02 <HalfTauRSquared> `log PiRSquared17
21:53:07 <HackEgo> 2011-11-24.txt:00:57:58: * elliott was going to say that PiRSquared17 should become TauRSquared8.5, but someone might actually take him seriously.
21:53:12 <HalfTauRSquared> `log PiRSquared17
21:53:17 <HackEgo> 2011-11-24.txt:00:57:58: * elliott was going to say that PiRSquared17 should become TauRSquared8.5, but someone might actually take him seriously.
21:53:21 <HalfTauRSquared> `log PiRSquared17
21:53:26 <HackEgo> 2011-11-24.txt:20:55:32: <PiRSquared17> > "DON'T DO THAT"
21:53:29 <Phantom_Hoover> `quote
21:53:30 <Phantom_Hoover> `quote
21:53:30 <Phantom_Hoover> `quote
21:53:30 <Phantom_Hoover> `quote
21:53:32 <Phantom_Hoover> `quote
21:53:33 <HackEgo> 117) <oerjan> insufficient time dilation. try running faster.
21:53:35 <HackEgo> 286) <nddrylliog> back to legal tender, that expression really makes me daydream. Like, there'd be black-market tender. Out-of-town hug shops where people exchange tenderness you've NEVER SEEN BEFORE.
21:53:37 <HackEgo> 394) <Vorpal> CakeProphet, the X support is fairly recent. Not more than a few decades old
21:53:51 <HackEgo> 443) <Phantom_Hoover> I go to clean up the shrapnel from a teabag and you're discussing the definition of god out of nowhere.
21:53:52 <HackEgo> 442) <NihilistDandy> elliott: His mouse obeys the law of the excluded middle :/
21:55:46 <kallisti> `quote
21:55:48 <kallisti> `quote
21:55:48 <kallisti> `quote
21:55:49 <kallisti> `quote
21:55:49 <kallisti> `quote
21:55:49 <HackEgo> 597) <fungot> elliott: ppl should vote clinton because obama is biracial every1 knows that dood, look at him he has been on something lately.
21:55:56 <HackEgo> 719) <ais523> the parser would be even simpler if I didn't try to do type inference in it
21:55:56 <HackEgo> 215) <Phantom_Hoover> OK, let's reduce the human genome to 4 chromosomes, in 2 homologous pairs.
21:56:05 <HackEgo> 87) <Ami> Discrimination fields ACTIVATE.
21:56:06 <HackEgo> 510) <zzo38> elliott_: No it isn't a game, it is a computer game
21:56:06 <HalfTauRSquared> `log pirsquared
21:56:11 <HackEgo> 2011-11-24.txt:21:00:07: -!- PiRSquared17 is now known as HalfTauRSquared.
21:56:14 <ais523\unfoog> wait, we have two blocks of 5 to delete from
21:56:31 <kallisti> `quote CakeProphet
21:56:33 <HackEgo> 141) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just stealing the universe's work and passing it off as our own. \ 142) <fungot> CakeProphet: reading herbert might be enlightening in one hand he held a long worm can be greased. twice i got it nearly there, and the protector of cattle. mars is
21:56:37 <kallisti> that quote is dumb
21:56:39 <kallisti> and always appears
21:56:45 <ais523\unfoog> elliott: in the first block, I'd say 442 or 394
21:56:47 <ais523\unfoog> do you agree?
21:56:53 <Phantom_Hoover> Please learn how `quote works.
21:57:04 <elliott> yes, although I don't really dislike any of them
21:57:06 <Phantom_Hoover> `pastequotes CakeProphet
21:57:09 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1378
21:57:11 <elliott> `delquote 87
21:57:14 <HackEgo> ​*poof* <Ami> Discrimination fields ACTIVATE.
21:57:17 <ais523\unfoog> elliott: do we have to delete one? or can we just say it reached perfection?
21:57:30 <ais523\unfoog> I agree with 87 in the second block, although quite a few aren't as good as the first block
21:58:07 <elliott> let's just do another block
21:58:08 <elliott> `quote
21:58:08 <elliott> `quote
21:58:08 <elliott> `quote
21:58:09 <elliott> `quote
21:58:09 <elliott> `quote
21:58:17 <HackEgo> 222) <elliott> oerjan: What, can girls aim their penises better?
21:58:19 <HackEgo> 425) <Gregor> You just went from "no sexualized ads" to "we have ads for dildos, but they're different for ads for Orangina" X-D
21:58:29 <HackEgo> 579) <Phantom_Hoover> FFS, building a perpetual motion machine should not be this hard.
21:58:29 <HackEgo> 107) <AnMaster> fungot!*@* added to ignore list. <fungot> AnMaster: i'd find that a bit annoying to wait for an ack.
21:58:30 <HackEgo> 637) <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. <Phantom_Hoover> Also lesbian.
22:00:13 <kallisti> there's no need to quote me when I'm funny
22:00:14 <kallisti> because
22:00:16 <kallisti> I'm just hilarious always
22:00:26 <kallisti> :>
22:00:42 <kallisti> yes that's what it is.
22:01:23 <Phantom_Hoover> `ls quotes
22:01:25 <HackEgo> quotes
22:01:34 <Phantom_Hoover> `ls quotes/
22:01:36 <HackEgo> ls: cannot access quotes/: Not a directory
22:01:45 <monqy> `cat quotes
22:01:45 <HalfTauRSquared> `ls /
22:01:47 <HackEgo> ​<Aftran> I used computational linguistics to kill her. \ <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ <Warrigal> GKennethR: he should be told that you should
22:01:55 <HalfTauRSquared> `ls /bin
22:01:57 <HackEgo> bash \ bunzip2 \ bzcat \ bzcmp \ bzdiff \ bzegrep \ bzexe \ bzfgrep \ bzgrep \ bzip2 \ bzip2recover \ bzless \ bzmore \ cat \ chgrp \ chmod \ chown \ cp \ cpio \ dash \ date \ dd \ df \ dir \ dmesg \ dnsdomainname \ domainname \ echo \ ed \ egrep \ false \ fgrep \ grep \ gunzip \ gzexe \ gzip \ hostname \ ip \ kill \ less \ lessecho \ lessfile \ lesskey \ lesspipe \ ln \ login \ ls \ lsmod \ mkdir \ mknod \ mktemp
22:01:58 <HackEgo> bin \ dev \ etc \ hackenv \ home \ lib \ lib64 \ opt \ proc \ sbin \ sys \ tmp \ usr \ var
22:01:59 <Phantom_Hoover> `paste quotes
22:02:13 <HalfTauRSquared> `cd /bin
22:02:15 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9119
22:02:30 <Phantom_Hoover> Wait I have no idea how to do quote counts with that.
22:02:43 <HalfTauRSquared> rm -rf /
22:02:56 <Phantom_Hoover> `rm -rf /
22:03:14 <HalfTauRSquared> It won't do anything, right?
22:03:18 <elliott> HalfTauRSquared: You broke it, congrats
22:03:19 <Phantom_Hoover> `ls
22:03:33 <HalfTauRSquared> ...
22:03:35 <HalfTauRSquared> ?
22:03:46 <HalfTauRSquared> `quotes PiRSquared17
22:03:55 <kallisti> elliott: does this have anything to do with your patch for the weird concurrency stuffs?
22:03:58 <HalfTauRSquared> `log PiRSquared17
22:04:06 <Phantom_Hoover> It runs in a version-controlled, sandboxed chroot.
22:04:06 <elliott> Nope, HalfTauRSquared is just evil
22:04:13 <Phantom_Hoover> Actually /breaking/ it is not that easy.
22:04:13 -!- derdon has joined.
22:04:16 <kallisti> ah yes of course.
22:04:25 <HalfTauRSquared> What happened?
22:04:33 <elliott> It's probably just lagging :P
22:04:39 <kallisti> you broke elliott's weird patch with EVIL.
22:04:41 <kallisti> actually.
22:04:47 <elliott> My patches haven't even been applied yet.
22:04:52 <kallisti> oh
22:05:03 <HalfTauRSquared> r m - r f / is evil?
22:05:06 <Phantom_Hoover> At worst, it'll need to be reverted, which is trivial.
22:05:20 <Phantom_Hoover> elliott, you realise I was the one who actually sent the command, right?
22:05:36 <elliott> Phantom_Hoover: Yes, I just wanted to scare HalfTauRSquared.
22:05:56 <Phantom_Hoover> Scare 'em back to the ways of pi.
22:05:56 <elliott> http://codu.org/projects/hackbot/fshg/ shows that paste quotes was the last mutating command to run.
22:05:58 <HalfTauRSquared> I didn't add ` on purpose
22:06:32 <Phantom_Hoover> XD, someone posted the OEIS to r/math.
22:06:43 <Phantom_Hoover> Yes I'm sure that'll be new and interesting to most readers.
22:06:56 <HalfTauRSquared> Sloane's is new?
22:07:12 <Phantom_Hoover> Thatsthejoke.
22:07:53 <kallisti> I must have amazing sarcasm detection abilities or something..
22:08:09 -!- HackEgo has quit (Ping timeout: 244 seconds).
22:08:12 <HalfTauRSquared> was the problem the ` c d or the ` r m ... - r f ...
22:08:13 <HalfTauRSquared> ?
22:08:23 -!- HackEgo has joined.
22:08:24 <kallisti> neither I think?
22:08:29 <kallisti> it just lagged or something.
22:08:30 <kallisti> `ls
22:08:33 <HackEgo> 2011-11-23-raw.txt \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom \ x
22:08:41 <kallisti> `rm -rf /
22:08:43 <HackEgo> rm: invalid option -- ' ' \ Try `rm --help' for more information.
22:08:47 <elliott> `run rm -rf /
22:08:48 <kallisti> `run rm -rf /
22:08:49 <Phantom_Hoover> HE's connection is maintained by a small piece of thread.
22:08:50 <HackEgo> rm: it is dangerous to operate recursively on `/' \ rm: use --no-preserve-root to override this failsafe
22:08:57 <elliott> `run rm -rf --no-preserve-root /
22:08:59 <HackEgo> rm: cannot remove `/sys/fs': Permission denied \ rm: cannot remove `/sys/devices/platform/uevent': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/uevent': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/modalias': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/subsystem': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/driver':
22:09:02 <HackEgo> rm: it is dangerous to operate recursively on `/' \ rm: use --no-preserve-root to override this failsafe
22:09:06 <Phantom_Hoover> `ls
22:09:08 <HackEgo> 2011-11-23-raw.txt \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom \ x
22:09:09 <elliott> `run pwd
22:09:13 <HackEgo> ​/hackenv
22:09:14 <elliott> `run rm -rf $(pwd)
22:09:17 <HackEgo> rm: cannot remove `/hackenv/.hg/requires': Read-only file system \ rm: cannot remove `/hackenv/.hg/00changelog.i': Read-only file system \ rm: cannot remove `/hackenv/.hg/store/data/babies/babies.db.i': Read-only file system \ rm: cannot remove `/hackenv/.hg/store/data/bin/addquote.i': Read-only file system \ rm: cannot remove `/hackenv/.hg/store/data/bin/allquotes.i': Read-only file system \ rm: cannot remove
22:09:23 <Phantom_Hoover> `ls
22:09:26 <HackEgo> 2011-11-23-raw.txt \ bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom \ x
22:09:37 <kallisti> `rm *raw.txt
22:09:39 <HackEgo> rm: cannot remove `*raw.txt': No such file or directory
22:09:40 <kallisti> `run rm *raw.txt
22:09:40 <Phantom_Hoover> `ls canary
22:09:46 <HackEgo> No output.
22:09:54 <HalfTauRSquared> `touch filee
22:09:56 <HackEgo> canary
22:09:56 <HackEgo> No output.
22:09:59 <elliott> `run find . -name '.hg' -prune -exec rm -f '{}' \;
22:10:02 <HackEgo> rm: cannot remove `./.hg': Is a directory
22:10:05 <Phantom_Hoover> Delicious filee.
22:10:08 <HalfTauRSquared> `vi filee
22:10:10 <elliott> `run find . -name '.hg' -prune -o -exec rm -f '{}' \;
22:10:12 <HackEgo> Vim: Warning: Output is not to a terminal \ .[1;24r.[?25h.[?8c.[?25h.[?0c.[27m.[24m.[0m.[H.[J.[?25l.[?1c.[24;1H"filee" 0 lines, 0 characters.[2;1H.[1m.[34m~ .[3;1H~ .[4;1H~ .[5;1H~
22:10:18 <HalfTauRSquared> 0
22:10:20 <HackEgo> rm: cannot remove `.': Is a directory \ rm: cannot remove `./bin': Is a directory \ rm: cannot remove `./karma': Is a directory \ rm: cannot remove `./lib': Is a directory \ rm: cannot remove `./paste': Is a directory \ rm: cannot remove `./share': Is a directory \ rm: cannot remove `./wisdom': Is a directory
22:10:21 <elliott> `ls
22:10:24 <HackEgo> bin \ canary \ filee \ karma \ lib \ paste \ quotes \ share \ wisdom \ x
22:10:29 <elliott> `run rm filee x
22:10:31 -!- ais523\unfoog has quit (Remote host closed the connection).
22:10:31 <HackEgo> No output.
22:10:35 <HalfTauRSquared> ``skk
22:10:36 <kallisti> ITT: everyone rape HackEgo
22:10:36 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `skk: not found
22:10:41 <HalfTauRSquared> ``skk
22:10:43 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `skk: not found
22:11:11 <HalfTauRSquared> `rm -rf *
22:11:22 <HalfTauRSquared> `rm -rf *
22:11:24 <HackEgo> rm: invalid option -- ' ' \ Try `rm --help' for more information.
22:11:34 <kallisti> you have to use `run because hackego is lame.
22:11:40 <HalfTauRSquared> `run rm -rf *
22:11:42 <HackEgo> No output.
22:11:49 <HalfTauRSquared> lol
22:11:56 <HalfTauRSquared> `run ls -al
22:11:58 <HackEgo> total 120 \ drwx------ 9 5000 0 4096 Nov 24 22:11 . \ drwxr-xr-x 16 0 0 0 Nov 24 22:11 .. \ drwxr-xr-x 3 5000 0 4096 Nov 24 22:11 .hg \ drwxr-xr-x 2 5000 0 4096 Nov 24 22:11 bin \ -rw-r--r-- 1 5000 0 0 Nov 24 22:11 canary \ drwxr-xr-x 2 5000 0 4096 Nov 24 22:11 karma \ drwxr-xr-x 2 5000 0 4096 Nov 24 22:11 lib \ drwxr-xr-x 2 5000 0 4096 Nov 24 22:11 paste \ -rw-r--r-- 1 5000 0 84089 Nov 24
22:12:02 <kallisti> HalfTauRSquared: by default everything is passed as the first argument to the command
22:12:12 <kallisti> HalfTauRSquared: `run actually invokes a shell
22:12:19 <HalfTauRSquared> oh
22:12:53 <HalfTauRSquared> `pwd
22:12:55 <HackEgo> ​/hackenv
22:13:04 * kallisti would like to be able to do something like `(perl -e) perl code here
22:13:33 <HalfTauRSquared> `run man ls
22:13:35 <HackEgo> man: can't open the manpath configuration file /etc/manpath.config
22:13:55 <HalfTauRSquared> `run info ls
22:13:57 <kallisti> Gregor: IMPROPERLY CONFIGURED MAN, MAN.
22:13:58 <HackEgo> info: Writing node (coreutils.info.gz)ls invocation... \ info: Writing node (coreutils.info.gz)Which files are listed... \ info: Writing node (coreutils.info.gz)What information is listed... \ info: Writing node (coreutils.info.gz)Sorting the output... \ info: Writing node (coreutils.info.gz)Details about version sort... \ info: Writing node (coreutils.info.gz)General output formatting... \ info: Writing node
22:14:14 <HalfTauRSquared> q
22:14:25 <kallisti> HalfTauRSquared: as you can see it is a linux system
22:14:30 <kallisti> with linuxy things
22:14:47 <HalfTauRSquared> `whereis kde
22:14:49 <HackEgo> kde:
22:14:57 <kallisti> `which kde
22:14:59 <HackEgo> No output.
22:15:09 <kallisti> `which frink
22:15:11 <HackEgo> ​/hackenv/bin/frink
22:15:17 <HalfTauRSquared> `whereis lynx
22:15:19 <HackEgo> lynx: /usr/bin/lynx.cur /usr/bin/lynx /usr/share/man/man1/lynx.1.gz
22:15:24 <kallisti> `frink 66 F -> C
22:15:36 <HalfTauRSquared> `lynx http://google.com
22:15:36 <HackEgo> Error
22:15:38 <HackEgo> ​\ Configuration file "/etc/lynx-cur/lynx.cfg" is not available. \
22:15:41 <kallisti> elliott: how do you do temps in frink?
22:16:09 <Phantom_Hoover> HalfTauRSquared, if you just want to toy with it, it works in a query too.
22:16:15 <elliott> `frink F[66] -> C
22:16:26 <HackEgo> 18.88888888888888889
22:17:08 <kallisti> > PEER_SDFsD RP:::LPDPRGTSQJDS)O#OZZS{AWEQ)R{R{W#{$%Q}}#}#{{{L$TPI$%)*W)(@$$*@#O@((#%
22:17:09 <lambdabot> <no location info>: parse error on input `)'
22:17:19 <HalfTauRSquared> `dc
22:17:35 <kallisti> `quit
22:17:37 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quit: not found
22:17:41 <kallisti> `exit
22:17:43 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: exit: not found
22:17:50 <HackEgo> No output.
22:17:52 <HalfTauRSquared> `ls
22:17:54 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
22:18:01 <HalfTauRSquared> `logout
22:18:03 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logout: not found
22:18:11 <HalfTauRSquared> `sudo
22:18:13 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: sudo: not found
22:18:20 <HalfTauRSquared> sudo: not found
22:18:27 <kallisti> HalfTauRSquared: I'm sure if you try enough you'll find an exploit
22:18:32 <HalfTauRSquared> `su
22:18:34 <elliott> I'm sure he won't.
22:18:35 <HackEgo> No output.
22:18:42 <HalfTauRSquared> `su password
22:18:44 <HackEgo> su: Cannot determine your user name.
22:18:46 <elliott> That would be an exploit in User Mode Linux, which would be impressive.
22:18:57 <elliott> Or an exploit in the extremely trivial mudem code, I suppose.
22:19:05 <kallisti> HalfTauRSquared is an impressive thing, dude.
22:19:10 <kallisti> good equation
22:19:26 <kallisti> er
22:19:27 <kallisti> expression
22:19:51 <Phantom_Hoover> Mudem?
22:20:17 <HalfTauRSquared> `run rm -rfi /
22:20:19 <HackEgo> rm: it is dangerous to operate recursively on `/' \ rm: use --no-preserve-root to override this failsafe
22:20:37 <HalfTauRSquared> `run rm -rfi / --no-preserve-root
22:21:01 <HalfTauRSquared> n
22:21:03 <HalfTauRSquared> y
22:21:06 <HalfTauRSquared> `ls
22:21:08 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
22:21:08 <HackEgo> rm: descend into write-protected directory `/'?
22:21:17 <HalfTauRSquared> n
22:21:35 <HalfTauRSquared> lolwut
22:21:48 -!- Sgeo has joined.
22:22:09 <Sgeo> I am currently tethering from my phone
22:22:22 <kallisti> Sgeo: cool, maybe you won't bounce so much
22:22:25 <kallisti> ha. ha.
22:22:28 <Sgeo> If my connection stays stable, I think it's safe to assume there's a hardware problem
22:22:36 <Sgeo> kallisti, lol
22:23:07 <HalfTauRSquared> `sa
22:23:09 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: sa: not found
22:25:15 <HalfTauRSquared> `ping google.com
22:25:17 <HackEgo> pong
22:25:58 <Sgeo> `ping localhost
22:26:01 <HackEgo> pong
22:26:02 <Sgeo> `ping 0.0.0.0
22:26:04 <HackEgo> pong
22:26:09 <HalfTauRSquared> `ping 127.0.0.1
22:26:11 <HackEgo> pong
22:26:15 <Sgeo> `ping 500.400.300.200
22:26:17 <HackEgo> pong
22:26:20 <Sgeo> !
22:26:31 <HalfTauRSquared> `ping pong ping pong ping
22:26:33 <HackEgo> pong
22:26:53 <Sgeo> `ping HalfTauRSquared
22:26:55 <HackEgo> pong
22:27:05 <HalfTauRSquared> `emacs
22:27:07 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: emacs: not found
22:27:15 <HalfTauRSquared> `vim
22:27:19 <HackEgo> Vim: Warning: Output is not to a terminal \ .[1;24r.[?25h.[?8c.[?25h.[?0c.[27m.[24m.[0m.[H.[J.[?25l.[?1c.[2;1H.[1m.[34m~ .[3;1H~ .[4;1H~ .[5;1H~
22:27:27 <HalfTauRSquared> 6
22:27:45 <HalfTauRSquared> `nano
22:27:52 <kallisti> HalfTauRSquared: why yes you can run text editors
22:27:59 <HalfTauRSquared> really?
22:28:01 <kallisti> YES
22:28:13 <HalfTauRSquared> `ed test
22:28:14 <monqy> `quote
22:28:16 <kallisti> and: PROGRAAAAMMMING LAAAANGUAGES
22:28:16 <HackEgo> 51) <ehird> no Deewiant <Deewiant> No?! <Deewiant> I've been living a lie <ehird> yep. <Deewiant> Excuse me while I jump out of the window ->
22:28:17 <HackEgo> ​.[1;24r.[0;10m.[4l.[?7h.[?25h.[?0c.[39;49m.[39;49m.[0;10m.[H.[J.[0;10;7m GNU nano 2.2.4 New Buffer .[23;1H^G.[0;10m Get Help .[0;10;7m^O.[0;10m WriteOut .[0;10;7m^R.[0;10m Read File .[0;10;7m^Y.[0;10m Prev Page .[0;10;7m^K.[0;10m Cut Text .[0;10;7m^C.[0;10m Cur Pos..[24d.[0;10;7m^X.[0;10m Exit.[14G.[0;10;7m^J.[0;10m Justify .[0;10;7m^W.[0;10m Where Is
22:28:31 <monqy> get help
22:28:38 <kallisti> `help
22:28:39 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
22:28:43 <HalfTauRSquared> `brainfuck +++++++++++++++++++++++++++++++++++...............
22:28:44 <kallisti> monqy: thank
22:28:44 <HackEgo> test: No such file or directory
22:28:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: brainfuck: not found
22:28:45 <kallisti> s
22:28:58 <kallisti> !bf ,[.,]!hi
22:29:03 <Sgeo> `which ping
22:29:05 <HackEgo> ​/hackenv/bin/ping
22:29:14 <Sgeo> `cat /hackenv/bin/ping
22:29:16 <HackEgo> ​#!/bin/bash \ echo pong
22:29:16 <HalfTauRSquared> $PATH
22:29:20 <Sgeo> Pretty obvious
22:29:56 <HalfTauRSquared> !bf ,[.,]!testing
22:30:06 <kallisti> doesn't seem to work
22:30:12 <kallisti> EgoBot: hi
22:30:15 <HalfTauRSquared> !unlambda .k
22:30:38 <HalfTauRSquared> ...
22:31:03 <monqy> !help
22:31:03 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
22:31:15 <monqy> !help languages
22:31:15 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
22:31:27 <monqy> !help userinterps
22:31:28 <EgoBot> ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
22:31:44 <HalfTauRSquared> !help addinterp
22:31:44 <EgoBot> ​addinterp: !addinterp <name> <language> <code>. Add a new interpreter to EgoBot. This interpreter will be run once every time you type !<name> <subcode>, and receive the program code as input.
22:32:40 <Phantom_Hoover> I have this overwhelming desire to have a bath right now.
22:32:47 <HalfTauRSquared> !bf ,[.,]!123456789
22:32:53 <HalfTauRSquared> 123456789
22:32:54 <EgoBot> ​:HalfTauRSquared!~PiRSquare@wikipedia/PiRSquared17 PRIVMSG #esoteric :123456789.
22:33:10 <kallisti> `run echo '#!/bin/sh' > bin/hatesgeo; echo cat '/var/irclogs/_esoteric/2011-11-24-raw.txt' | perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}'
22:33:13 <HackEgo> 1;
22:33:14 <kallisti> noooooo
22:33:40 <Sgeo> `hatesgep
22:33:43 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: hatesgep: not found
22:33:49 <HalfTauRSquared> “EgoBot” (68.9.170.24:10065)
22:34:19 <monqy> why would anyone hate sgep
22:34:33 <kallisti> `run echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}' \'$@\' >> bin/hackego
22:34:35 <HackEgo> No output.
22:34:38 <kallisti> `run chmod +x bin/hatesgeo
22:34:40 <HackEgo> No output.
22:34:46 <monqy> `hatesgeo
22:34:48 <HackEgo> No output.
22:34:52 <monqy> hates geo
22:35:02 <monqy> hat esgeo
22:35:05 <HalfTauRSquared> `fsck
22:35:07 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: fsck: not found
22:35:07 <monqy> ha, tesgeo
22:35:20 <kallisti> `run hatesgeo /var/irclogs/_esoteric/2011-11-24-raw.txt
22:35:22 <HackEgo> No output.
22:35:23 <kallisti> :(
22:35:49 <HalfTauRSquared> !bf [.+,.]!123456789
22:35:53 <kallisti> `run cat bin/hatesgeo
22:35:55 <HalfTauRSquared> 123456789
22:35:55 <HackEgo> ​#!/bin/sh
22:35:59 <kallisti> ah good goo
22:36:18 <kallisti> `run echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_}; " for sort {$j{$b} <=> $j{$a}} keys %j}' \'$@\' >> bin/hatesgeo
22:36:20 <HackEgo> No output.
22:36:23 <HalfTauRSquared> !bf +[.+,.]!123
22:36:26 <HalfTauRSquared> 123
22:36:26 <EgoBot> ​.::HHaallffTTaauuRRSSqquuaarreedd!!~~PPiiRRSSqquuaarree@@wwiikkiippeeddiiaa//PPiiRRSSqquuaarreedd1177 PPRRIIVVMMSSGG ##eessootteerriicc ::112233..
22:36:27 <kallisti> `rm bin/hackego
22:36:29 <HackEgo> No output.
22:36:39 <kallisti> `run chmod +x bin/hatesgeo
22:36:41 <HackEgo> No output.
22:36:46 <kallisti> `run hatesgeo /var/irclogs/_esoteric/2011-11-24-raw.txt
22:36:48 <HackEgo> ​/hackenv/bin/hatesgeo: 2: Syntax error: "(" unexpected
22:36:51 <kallisti> werhiuweriuywdiuyweiuryweri
22:36:54 <kallisti> ALWAYS WITH THE (
22:36:59 <HalfTauRSquared> !bf +[.+,.]!123
22:37:12 <HalfTauRSquared> 123
22:37:12 <EgoBot> ​.
22:37:28 <HalfTauRSquared> ​.::HHaallffTTaauuRRSSqquuaarreedd!!~~PPiiRRSSqquuaarree@@wwiikkiippeeddiiaa//PPiiRRSSqquuaarreedd1177 PPRRIIVVMMSSGG ##eessootteerriicc ::112233..
22:37:50 <HalfTauRSquared> WWhhaatt iiss tthhaatt??
22:38:05 <kallisti> `run echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e \'/:(.*?)!.*JOIN/; $j{$1}++; END {print \"$_ $j{$_};\" for sort {$j{$b} <=> $j{$a}} keys %j}\' \'$@\' >> bin/hatesgeo
22:38:06 <Sgeo> Um
22:38:07 <HackEgo> bash: -c: line 0: syntax error near unexpected token `(' \ bash: -c: line 0: `echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e \'/:(.*?).!.*JOIN/; $j{$1}++; END {print \"$_ $j{$_};\" for sort {$j{$b} <=> $j{$a}} keys %j}\' \'$@\' >> bin/hatesgeo'
22:38:10 <kallisti> whut
22:38:17 -!- augur_ has joined.
22:38:20 <monqy> HalfTauRSquared: your bf thing
22:38:36 <Sgeo> Am I the only one who say doubles in recent lines?
22:38:57 <HalfTauRSquared> !bf +[.+]
22:38:58 <EgoBot> ​........
22:39:11 <kallisti> `run echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e \'/:(.*?)!.*JOIN/; $j{$1}++; END {print \"$_ $j{$_};\" for sort {$j{$b} <=> $j{$a}} keys %j}\' \'$@\' >> bin/hatesgeo
22:39:13 <HackEgo> bash: -c: line 0: syntax error near unexpected token `(' \ bash: -c: line 0: `echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e \'/:(.*?)!.*JOIN/; $j{$1}++; END {print \"$_ $j{$_};\" for sort {$j{$b} <=> $j{$a}} keys %j}\' \'$@\' >> bin/hatesgeo'
22:39:16 <HalfTauRSquared> !bf +[.++++]
22:39:17 <kallisti> weroijweoirjwoeijroiwjer
22:39:29 <HalfTauRSquared> lol
22:39:32 <HalfTauRSquared> !bf +[.+++]
22:39:46 <monqy> !bf +[,..........]
22:39:53 <monqy> good things will now happen
22:39:54 -!- augur has quit (Ping timeout: 240 seconds).
22:39:55 <kallisti> ugh I don't want to escape the quotes
22:40:30 <HalfTauRSquared> !unlambda .x
22:40:38 -!- Jafet has joined.
22:41:10 <HalfTauRSquared> !underload (test)S
22:41:10 <EgoBot> test
22:41:41 <HalfTauRSquared> Can I put my nick back now?
22:41:55 -!- HalfTauRSquared has changed nick to PiRSquared17.
22:42:56 <kallisti> `run echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e ''\''/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_};" for sort {$j{$b} <=> $j{$a}} keys %j}'\'' '\''$@'\' >> bin/hatesgeo
22:42:58 <HackEgo> No output.
22:43:30 -!- augur_ has quit (Ping timeout: 240 seconds).
22:43:42 <kallisti> `run chmod +x bin/hatesgeo
22:43:45 <HackEgo> No output.
22:43:49 <PiRSquared17> `log wikipedia
22:43:55 <kallisti> `run hatesgeo /var/irclogs/_esoteric/2011-11-24-raw.txt
22:43:57 <HackEgo> Can't open $@: No such file or directory.
22:44:05 <HackEgo> 2005-05-04.txt:19:04:06: <GregorR-L> Ohhhhhhhhh. Hmm. Wikipedia to the rescue I think.......
22:44:08 <kallisti> oh right
22:44:25 <PiRSquared17> `log ook!
22:44:31 <HackEgo> 2007-07-14.txt:22:28:53: <oerjan> I want to complain. My dog ate my invisible notebook!
22:44:35 <kallisti> `run echo '#!/bin/sh' > bin/hatesgeo; echo perl -n -e ''\''/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_};" for sort {$j{$b} <=> $j{$a}} keys %j}'\'' $@' >> bin/hatesgeo
22:44:37 <HackEgo> No output.
22:44:40 <kallisti> `run hatesgeo /var/irclogs/_esoteric/2011-11-24-raw.txt
22:44:42 <HackEgo> Sgeo 733;Ngevd 209;HackEgo 144;SgeoN1 117;Notch 117;Slereah 97;kallisti 79;itidus21 76;itidus22 71;pikhq 61;Darth_Cliche 56;MDude 43;copumpkin 43;elliott 41;Rugxulo 40;EgoBot 38;ais523 37; 32;Jafet 27;derdon 25;augur 25;kmc 25;Patashu 23;MSleep 22;pikhq_ 15;monqy 13;Klisz 12;PiRSquared17 12;sebbu2 10;Phantom_Hoover 5;sebbu 5;derrik 5;augur_ 5;itidus20 5;Zuu 4;TheRubberTurkey 3;GreaseMonkey 2;Phantom__Hoover 1;yorick 1;
22:44:45 <kallisti> yesssss
22:44:49 <kallisti> my hate machine is complete.
22:44:51 <PiRSquared17> `log ook
22:44:56 <HackEgo> 2006-05-07.txt:00:57:52: <SimonRC> (Unless of course it is supposed to take the piss out of other fantasy books.)
22:45:02 <PiRSquared17> ...
22:45:03 <monqy> nice hate machine, kallisti
22:45:05 <Sgeo> kallisti, make it take an arbitrary date
22:45:15 <PiRSquared17> `log turing-complete
22:45:18 <kallisti> it takes an arbitrary file, I could improve it to take a date yes.
22:45:21 <HackEgo> 2009-09-20.txt:22:54:42: <ais523> is it Turing-complete?
22:45:28 <PiRSquared17> `log turing complete
22:45:34 <HackEgo> 2008-01-14.txt:21:04:30: <ehird`> 'This language will, by no account, need an infinitely large grid to be Turing complete.' that's not a reason
22:45:39 <Sgeo> `run hatesgeo /var/irclogs/_esoteric/2011-11-23-raw.txt
22:45:41 <HackEgo> Sgeo 639;Vorpal 180;pikhq 114;augur 90;kallisti 70; 53;Ngevd 47;Darth_Cliche 47;copumpkin 38;glogbot 34;itidus21 31;shachaf 22;SgeoN1 21;Phantom_Hoover 19;oerjan 18;elliott 18;CakeProphet 16;pikhq_ 16;lament 14;monqy 13;HackEgo 12;glogbackup 12;Deewiant 11;myndzi\ 7;sebbu2 7;Patashu 5;ais523 4;calamari 4;plycke 3;kmc 3;Slereah_ 3;Jafet 3;GreaseMonkey 2;Nisstyre 2;EgoBot 2;quintopia 2;mithridates 1;
22:45:53 <PiRSquared17> `log finite st
22:45:58 <Sgeo> `run hatesgeo /var/irclogs/_esoteric/2011-11-22-raw.txt
22:45:59 <HackEgo> 2008-03-14.txt:23:44:19: <ais523> lament: I was wondering about whether to use an infinite stack of ones in Underlambda
22:46:00 <HackEgo> copumpkin 610;Jafet 399;GreaseMonkey 357;Madoka-Kaname 303;ineiros 252;derdon 245;DCliche 234;Phantom_Hoover 232;monqy 196;new2net 165;kmc 144;myndz\ 115;derrik 93;pkzip 89;pikhq 73;Darth_Cliche 72;pikhq_ 70;Lymee 53;MSleep 50;ais523 42;augur 42;oerjan 37;Ngevd 36;Phantom__Hoover 31;augur_ 26; 21;sebbu2 15;MDude 11;derrik_ 6;Slereah 3;FireFly 3;aloril 2;Lymia 2;Sgeo 2;Patashu 1;Nisstyre 1;
22:46:09 <Nisstyre> someone please ban that fucker
22:46:11 <PiRSquared17> `log finite state
22:46:15 <PiRSquared17> ?
22:46:17 <HackEgo> 2010-05-24.txt:20:22:37: <AnMaster> Zuu, sure it is. But also the official C standard forbids C from having an infinite state.
22:46:17 <monqy> `run hatesgeo /var/irclogs/_esoteric/2011-11-??-raw.txt
22:46:21 <HackEgo> augur 3518;GreaseMonkey 2994;Ngevd 2907;copumpkin 2835;pikhq 1997;elliott 1824;Phantom_Hoover 1812;ais523 1594;zzo38 1384;Sgeo 1384;sebbu2 1365;Patashu 1312;Jafet 1247;Zuu 1204;oerjan 1092;CakeProphet 1020;Darth_Cliche 1010;sebbu 931;pkzip 906;Taneb 903;tiffany 851;derrik 771;pikhq_ 753;hagb4rd 724;derdon 640;Phantom__Hoover 636;Vorpal 586;DCliche 569;Sgeo|web 534;nooga 532;Madoka-Kaname 530;pumpkin 497;SgeoN1 490;monqy
22:46:21 <kallisti> Nisstyre: sorry it's just my hate machine
22:46:42 <derdon> STOP IT. NOW.
22:46:48 <sebbu> mass hl are bad
22:46:50 <PiRSquared17> ?
22:46:55 <kallisti> derdon: you can't stop an unstoppable hate machine.
22:47:00 <sebbu> at least but some control char in the middle of the nickname
22:47:07 <sebbu> put*
22:47:10 <derdon> kallisti: fuck this channel
22:47:14 <kallisti> derdon: leave?
22:47:15 -!- derdon has left.
22:47:23 <monqy> now look what you've done
22:47:30 <sebbu> ask and you shall be heard :p
22:47:30 <kallisti> oh no I've made an idler leave
22:47:56 <PiRSquared17> !underload (
22:47:57 <EgoBot> Error: Expected ) at end of input
22:47:58 <PiRSquared17> '99 bottles of beer' in Underload
22:48:00 <PiRSquared17> written by Keymaker
22:48:02 <PiRSquared17> )!((!!!!!!!!!)(!!!!!!!!!))(~()~(~^:()~((9))~(!(8))~(!!(7))~(!!!(6))~(!!!!(5))~(!!!!!(4))~(!!!!!!(3))~(!!!!!!!(2))~(!!!!!!!!(1))~(!!!!!!!!!(!)*())~^^S~a~a*~a*^:(s)~((9))~(!(8))~(!!(7))~(!!!(6))~(!!!!(5))~(!!!!!(4))~(!!!!!!(3))~(!!!!!!!(2))~(!!!!!!!!~!~(!())~(!)~^^()~(!)~(1))~(!!!!!!!!!!!(!~(!())*~()(no more))~(!(0))~^^()~()~(s)~)~^^S( bottle)SS( of beer)S~!a~a*~):^( on the wall, )S:^(.
22:48:03 <PiRSquared17> Take one down and pass it around, )S~^~((!!!!!!!!))~(!(!!!!!!!))~(!!(!!!!!!))~(!!!(!!!!!))~(!!!!(!!!!))~(!!!!!(!!!))~(!!!!!!(!!))~(!!!!!!!(!))~(!!!!!!!!())~(!!!!!!!!!((!!!!!!!!))~(!(!!!!!!!))~(!!(!!!!!!))~(!!!(!!!!!))~(!!!!(!!!!))~(!!!!!(!!!))~(!!!!!!(!!))~(!!!!!!!(!))~(!!!!!!!!())~()~^^(!!!!!!!!!))~^^a~a*~:^!( on the wall.
22:48:05 <PiRSquared17> )Sa~a*~a*^~^:^):^
22:48:12 <kallisti> sebbu: you know you can make highlights not annoying and stuff if you really want
22:48:17 * kallisti has his system beep completely turned off.
22:48:19 <Nisstyre> the best 99 bottles is in perl
22:48:24 <Nisstyre> shaped like a bottle
22:48:34 <PiRSquared17> I've seen it
22:48:34 <sebbu> kallisti, for me it only change the color of the line and of the channel tab
22:48:48 <kallisti> oh okay good
22:49:03 <Sgeo> kallisti, or, you could change your script
22:49:10 <PiRSquared17> !bf +[.+++.+]!1234567898765432123456789876543212345678987654321234567890
22:49:14 <PiRSquared17> 123456789
22:49:20 <kallisti> so you're not going to be insufferably lame about the fact that your client program highlights your name when it's used, and then project it on the rest of the world as though they're responsible.
22:49:24 <kallisti> good. good.
22:49:33 <Nisstyre> sebbu: it's the same for me, but I'm compelled to click on it when it changes colour
22:49:42 <Sgeo> kallisti, some people want to know when they're being talked about
22:49:52 <kallisti> well sure.
22:49:54 <Sgeo> The hatesgeo thing really doesn't talk about them in a way they're interested in.
22:49:55 <kallisti> perhaps you misunderstood me.
22:49:58 <kallisti> oh
22:50:01 <Sgeo> Especially with repeated use.
22:50:02 * Phantom_Hoover → sleep
22:50:05 <kallisti> well, oh well. :P
22:50:08 <Phantom_Hoover> kallisti, stop being a prick.
22:50:09 -!- Phantom_Hoover has quit (Quit: Leaving).
22:50:10 <Sgeo> (which, admittedly, is partly my fault)
22:50:19 <Sgeo> But still, fix the script.
22:50:20 -!- PiRSquared17 has left ("leaving").
22:50:24 <kallisti> man I'm on a roll. total ragequit count: 2
22:50:26 -!- PiRSquared17 has joined.
22:50:37 <Nisstyre> put a control character in each nick and that will stop it from highlighting
22:50:41 <Nisstyre> e.g. kallisti
22:50:54 <PiRSquared17> kallisti ?
22:50:56 <kallisti> ?
22:51:03 <kallisti> fungot: weigh in on the matter
22:51:03 <fungot> kallisti: apocalypse? said death. now... look at this one," she said.
22:51:03 <Nisstyre> that shouldn't have highlighted you
22:51:04 <Sgeo> Nisstyre, that may have difficult with single-character nicks, but f those guys
22:51:15 <kallisti> Nisstyre: it did
22:51:23 <Nisstyre> Sgeo: oh yeah, but those people will get highlighted a lot anyway
22:51:23 <Sgeo> Where's oerjan when you need him?
22:51:31 <Nisstyre> kallisti: it shouldn't have...
22:51:39 <kallisti> Nisstyre: it's... completely dependent on client behavior
22:51:40 <Nisstyre> maybe your client removes invisible characters
22:51:42 <kallisti> there is no "should"
22:51:58 <PiRSquared17> Ni$$tyre
22:52:05 <PiRSquared17> that shouldn't have highlighted you
22:52:30 <Nisstyre> what about kallisti
22:52:37 <kallisti> what about it?
22:52:40 <kallisti> s/it/me/
22:52:45 <Nisstyre> does it highlight you?
22:52:47 <PiRSquared17> kåll1$†1
22:52:47 <kallisti> yes it did highlight me.
22:52:52 <Sgeo> k​allisti N​isstyre
22:52:55 <PiRSquared17> kåll1$†1 <-- highlight?
22:52:56 <Nisstyre> okay, so adding colours won't change anything
22:52:58 <Sgeo> Do those hilight you?
22:52:58 <kallisti> Sgeo: that one didn't
22:53:13 <Nisstyre> I guess you could have an algorithm that replaces some characters with "equivalents"
22:53:20 <kallisti> nah
22:53:23 <Sgeo> Nisstyre, I did a zero-width breaking space
22:53:24 <Nisstyre> like a with @
22:53:24 <kallisti> Sgeo: what character did you use?
22:53:33 <Sgeo> Erm
22:53:34 <kallisti> Sgeo: what is that in perl string - ese
22:53:37 <Sgeo> Zero-width space
22:53:39 <sebbu> some russian/greek/other alphabet have letter that ressemble latin alphabet
22:53:41 <PiRSquared17> L33t5p33k
22:53:50 <PiRSquared17> zOMG11!!!!!11!yu
22:53:56 <Sgeo> It has the Unicode value of U+200B and its HTML entity is &#8203;
22:54:01 <Sgeo> ^^from wikipedia
22:54:13 <PiRSquared17> `log wikipedia
22:54:18 <HackEgo> 2011-09-21.txt:18:55:45: <cheater> next thing they'll start giving names and wikipedia articles to distinctive dog piles
22:54:26 <kallisti> @tell Phantom_Hoover I have done absolutely nothing wrong, dickface. :>
22:54:26 <sebbu> on irc there's a control character to reset style
22:54:26 <lambdabot> Consider it noted.
22:54:28 <sebbu> ctrl+o
22:54:33 <sebbu> it breaks hl
22:54:36 <PiRSquared17> `log wiktionary
22:54:39 <Sgeo> Sgeo
22:54:41 <HackEgo> 2010-05-19.txt:20:58:36: <AnMaster> <Phantom_Hoover> According to Wiktionary (Swedish) "fönster" is from Latin too. <-- probably. But indirectly
22:54:43 <sebbu> as does color, bold, underline
22:54:50 <Sgeo> This channel strips colors
22:55:00 <sebbu> bold too ?
22:55:19 <Sgeo> Testing. If this does not appear bold, bold is stripped.
22:55:27 <sebbu> stripped too :(
22:55:35 <Sgeo> Just use a zero-width space :/
22:55:37 <PiRSquared17> kallisti
22:55:41 <kallisti> PiRSquared17: hi
22:55:49 <kallisti> (yes)
22:55:51 <PiRSquared17> allisti
22:55:53 <kallisti> (no)
22:56:06 <PiRSquared17> remove the k
22:56:21 <Sgeo> I'm on XChat. On XChat, I go to Insert Unicode Control Character -> ZWS
22:56:25 <PiRSquared17> kallisti
22:56:30 <Nisstyre> PiRSquared17: you should be TauRSquared
22:56:43 <Sgeo> P​iRSquared17
22:56:43 <PiRSquared17> HalfTauRSquared
22:56:52 <PiRSquared17> `log HalfTauRSquared
22:56:57 <HackEgo> 2011-11-24.txt:22:41:41: <HalfTauRSquared> Can I put my nick back now?
22:57:05 <PiRSquared17> `log HalfTauRSquared
22:57:10 <HackEgo> 2011-11-24.txt:22:27:59: <HalfTauRSquared> really?
22:57:18 <Sgeo> Why does no one listen to me?
22:59:15 -!- SgeoN1 has quit (Quit: Bye).
22:59:21 <PiRSquared17> 5630
23:00:52 <Sgeo> Now, how do I determine whether I'm having driver issues or hardware issues?
23:03:28 <Nisstyre> Sgeo: you use the same drivers in a virtual machine
23:03:55 <Sgeo> Not sure how to fake wifi cards...
23:04:03 <PiRSquared17> onoenoswomenomenwsaomeghce
23:04:14 <Nisstyre> use QEMU
23:04:43 <Nisstyre> you can probably do it with that
23:05:23 <PiRSquared17> > text (reverse "onoenoswomenomenwsaomeghce")
23:05:24 <lambdabot> echgemoaswnemonemowsoneono
23:13:23 -!- yorick has quit (*.net *.split).
23:13:26 -!- variable has quit (*.net *.split).
23:13:28 -!- twice11 has quit (*.net *.split).
23:13:30 -!- monqy has quit (*.net *.split).
23:13:36 -!- Zwaarddi1k has quit (*.net *.split).
23:13:41 -!- Sgeo has quit (*.net *.split).
23:13:42 -!- PiRSquared17 has quit (*.net *.split).
23:13:46 -!- kallisti has quit (*.net *.split).
23:13:46 -!- Nisstyre has quit (*.net *.split).
23:13:50 -!- jix has quit (*.net *.split).
23:13:50 -!- yiyus has quit (*.net *.split).
23:13:51 -!- atehwa has quit (*.net *.split).
23:13:51 -!- Betawolf has quit (*.net *.split).
23:13:51 -!- rodgort has quit (*.net *.split).
23:13:52 -!- GreaseMonkey has quit (*.net *.split).
23:13:56 -!- lambdabot has quit (*.net *.split).
23:13:59 -!- pikhq_ has quit (*.net *.split).
23:13:59 -!- Zuu has quit (*.net *.split).
23:14:02 -!- fungot has quit (*.net *.split).
23:14:05 -!- fizziew has quit (*.net *.split).
23:14:06 -!- HackEgo has quit (*.net *.split).
23:14:07 -!- myndzi\ has quit (*.net *.split).
23:14:09 -!- shachaf has quit (*.net *.split).
23:14:11 -!- Deewiant has quit (*.net *.split).
23:14:12 -!- coppro has quit (*.net *.split).
23:14:15 -!- itidus22 has quit (*.net *.split).
23:14:15 -!- aloril has quit (*.net *.split).
23:14:20 -!- fizzie has quit (*.net *.split).
23:14:37 -!- KnucklesTheEchid has joined.
23:14:38 -!- HackEgo has joined.
23:14:38 -!- pikhq_ has joined.
23:14:38 -!- GreaseMonkey has joined.
23:14:38 -!- Zuu has joined.
23:14:38 -!- monqy has joined.
23:14:38 -!- myndzi\ has joined.
23:14:38 -!- kallisti has joined.
23:14:38 -!- Nisstyre has joined.
23:14:38 -!- fungot has joined.
23:14:38 -!- lambdabot has joined.
23:14:38 -!- shachaf has joined.
23:14:38 -!- Zwaarddi1k has joined.
23:14:38 -!- Betawolf has joined.
23:14:38 -!- jix has joined.
23:14:38 -!- rodgort has joined.
23:14:38 -!- atehwa has joined.
23:14:38 -!- yiyus has joined.
23:14:38 -!- fizziew has joined.
23:14:38 -!- Deewiant has joined.
23:14:38 -!- coppro has joined.
23:14:45 -!- KnucklesTheEchid has changed nick to netsplit.
23:14:52 -!- netsplit has changed nick to net_split.
23:14:57 -!- net_split has changed nick to _net_split.
23:15:29 -!- itidus22 has joined.
23:15:29 -!- aloril has joined.
23:15:29 -!- fizzie has joined.
23:15:47 -!- yorick has joined.
23:15:47 -!- variable has joined.
23:15:47 -!- twice11 has joined.
23:19:39 -!- oerjan has joined.
23:21:32 <_net_split> yo
23:21:57 <oerjan> hello, disguised round one
23:22:19 -!- _net_split has changed nick to PiRSquared17.
23:22:48 <oerjan> `welcome HackEgo
23:22:51 <HackEgo> 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
23:23:43 <monqy> `welcome `welcome`
23:23:45 <HackEgo> ​`welcome`: 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
23:23:58 <elliott> <HalfTauRSquared> Can I put my nick back now?
23:24:00 <elliott> PiRSquared17: No.
23:24:07 <PiRSquared17> I did
23:24:44 <elliott> <derdon> kallisti: fuck this channel
23:24:46 <elliott> a terrible loss
23:25:43 <elliott> * Phantom_Hoover → sleep <kallisti> @tell Phantom_Hoover I have done absolutely nothing wrong, dickface. :>
23:25:46 <elliott> kallisti: im sure he left because of you
23:26:09 <PiRSquared17> http://dpaste.com/661394/
23:26:36 <monqy> yes?
23:26:53 <PiRSquared17> Did I do that?
23:26:58 <monqy> yes.
23:27:52 <PiRSquared17> I broke one of the tubes?
23:28:33 <monqy> two of the tubes, actually
23:28:51 <PiRSquared17> I'll have to buy a new internet?
23:29:09 <oerjan> it _is_ a little annoying searching for my nick in the logs lately.
23:29:10 <monqy> one per person you hurt
23:30:14 -!- PiRSquared17 has left.
23:30:19 <monqy> bye
23:30:41 -!- PiRSquared17 has joined.
23:30:46 <monqy> hi
23:31:19 <PiRSquared17> `whereis Paris
23:31:21 <HackEgo> Paris:
23:31:42 <monqy> is paris real
23:31:52 <PiRSquared17> `whereis WallaWalla
23:31:54 <HackEgo> WallaWalla:
23:31:59 <PiRSquared17> `whereis Walla Walla
23:32:01 <HackEgo> Walla Walla:
23:32:08 <monqy> is walla walla real
23:32:15 <PiRSquared17> yes
23:32:26 <PiRSquared17> http://enwp/Walla Walla
23:32:32 <PiRSquared17> http://enwp/Walla_Walla
23:32:47 <PiRSquared17> http://enwp.org/Walla_Walla
23:33:02 <monqy> really real
23:33:21 <PiRSquared17> http://en.wikipedia.org/wiki/Walla_Walla_people
23:33:28 <kallisti> elliott: yeah dude he totally did
23:33:31 <PiRSquared17> Walla Walla people?
23:33:32 <kallisti> elliott: he was so angry man
23:33:33 <kallisti> bahahaha
23:33:34 <monqy> realest
23:34:06 <PiRSquared17> `whereis wheris
23:34:08 <HackEgo> wheris:
23:34:08 <PiRSquared17> `whereis whereis
23:34:11 <HackEgo> whereis: /usr/bin/whereis /usr/share/man/man1/whereis.1.gz
23:34:13 <kallisti> `which which
23:34:15 <HackEgo> ​/usr/bin/which
23:34:16 <monqy> thereis
23:34:18 <monqy> that
23:34:20 <PiRSquared17> `ls ls
23:34:23 <HackEgo> ls: cannot access ls: No such file or directory
23:34:31 <PiRSquared17> `cd cd
23:34:32 <kallisti> `cat `which cat`
23:34:33 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: cd: not found
23:34:34 <HackEgo> cat: `which cat`: No such file or directory
23:34:38 <kallisti> `run cat `which cat`
23:34:40 <HackEgo> ​ELF...
23:34:45 <PiRSquared17> `cat canary
23:34:47 <HackEgo> No output.
23:34:59 <PiRSquared17> `vim vigor
23:35:03 <HackEgo> Vim: Warning: Output is not to a terminal \ .[1;24r.[?25h.[?8c.[?25h.[?0c.[27m.[24m.[0m.[H.[J.[?25l.[?1c.[24;1H"vigor" [New File].[2;1H.[1m.[34m~ .[3;1H~ .[4;1H~ .[5;1H~
23:35:03 <oerjan> <elliott> underload is pure
23:35:10 <monqy> `run welcome `welcome`
23:35:13 <HackEgo> Welcome: 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
23:35:19 <oerjan> underload is just a monoid with relations, what's the problem?
23:36:01 <elliott> oerjan: heh
23:36:29 <kallisti> `run `echo `cat `which cat```
23:36:31 <HackEgo> ​ELF...
23:36:55 <kallisti> catwhich
23:37:02 <monqy> which cat
23:37:07 <PiRSquared17> !bf +[-<+]-ÿ<<<<<<<[.>]
23:37:20 <monqy> ÿ
23:37:26 <PiRSquared17> !bf +[-<+]-ÿ<<<<<<<[.>]!foo
23:38:12 <kallisti> mmm thanksgiving
23:38:15 <kallisti> so many calories
23:38:23 -!- Sgeo has joined.
23:38:31 <kallisti> Sgeo: hi tethersgeo
23:38:55 <oerjan> (x)(y)* = (xy), (x)^ = x, (x)(y)~ = (y)(x), (x): = (x)(x), (x)a = ((x)), (x)! = , (x)(y)S = (y)S(x)
23:38:59 <PiRSquared17> !hq9+ q
23:39:08 <PiRSquared17> !help
23:39:08 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
23:39:21 <PiRSquared17> !help languages
23:39:22 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
23:39:35 <PiRSquared17> no HQ9+?
23:39:37 <quintopia> !help userinterps
23:39:38 <EgoBot> ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
23:39:45 <oerjan> *=,
23:39:57 <kallisti> `word 25
23:39:58 <oerjan> er scratch that *=,
23:39:59 <quintopia> !addinterp
23:39:59 <EgoBot> ​There is already an interpreter for !
23:40:01 <HackEgo> innersenianapotcheaynimilaya cali hquent inee vidhayas cn sultenseokereprowe uneyerasseeauteptorshwairinisiftierottauturmhamis terant cal rud pu nentableyes tt iiiger virfisbywinewal tre reten va somysterebelatimcd silhe as samette nan batime
23:40:32 <oerjan> oh, (x)S(y)S = (xy)S
23:40:36 <quintopia> !userinterps
23:40:36 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph hello id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez
23:40:50 <PiRSquared17> !hello test
23:40:54 <EgoBot> Unknown command (test) encountered
23:41:00 <PiRSquared17> !hello .
23:41:01 <EgoBot> Unknown command (.) encountered
23:41:01 <quintopia> PiRSquared17: write your own hq9+ interp
23:41:11 <PiRSquared17> in what language?
23:41:20 <kallisti> perl
23:41:23 <quintopia> i dun care
23:41:23 <kallisti> most esoteric
23:41:36 <quintopia> how about underload
23:41:38 <PiRSquared17> I did it in JS once...
23:41:39 -!- augur has joined.
23:41:50 <kallisti> PiRSquared17: it has to be a language that egobot can interpret
23:42:06 <PiRSquared17> ok
23:42:13 <oerjan> my poor yodawg keeps slipping off the !userinterps list
23:42:24 <kallisti> !yodawg sup
23:42:36 <kallisti> :(
23:42:44 <kallisti> !wacro
23:42:50 <oerjan> that should give an error... was there DCC?
23:42:57 <kallisti> nope
23:43:07 <oerjan> oh wait no,
23:43:21 <oerjan> it's the program s, which does nothing, followed by input up
23:44:10 <oerjan> !yodawg `.g`.w`.a`.d`.o`.yi
23:44:10 <EgoBot> yodawg
23:44:42 <PiRSquared17> !help addinterp
23:44:42 <EgoBot> ​addinterp: !addinterp <name> <language> <code>. Add a new interpreter to EgoBot. This interpreter will be run once every time you type !<name> <subcode>, and receive the program code as input.
23:46:04 <PiRSquared17> !addinterp recursionTest recursionTest .
23:46:04 <EgoBot> ​Interpreter recursionTest does not exist!
23:46:52 <elliott> early binding
23:46:57 <PiRSquared17> !help languages
23:46:57 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
23:48:13 <PiRSquared17> !addinterp helloworld underload (Hello, world!)S
23:48:13 <EgoBot> ​Interpreter helloworld installed.
23:48:14 <oerjan> <PiRSquared17> no HQ9+? <-- there is my chiqrsx9+ extension
23:48:40 <PiRSquared17> which !(.*?) is that
23:48:48 <PiRSquared17> ?
23:49:04 <PiRSquared17> !helloworld 0
23:49:05 <EgoBot> Hello, world!
23:49:15 <oerjan> !chiqrsx9p qq
23:49:15 <EgoBot> qq
23:49:29 <oerjan> another line in DCC
23:49:30 <PiRSquared17> !ok
23:49:44 <PiRSquared17> !chiqrsx9p 9
23:49:44 <EgoBot> 99 bottles of beer on the wall,
23:49:58 <PiRSquared17> ?
23:50:03 <monqy> dcc
23:50:14 <oerjan> PiRSquared17: you should see a DCC CHAT connection trying to open for the remaining lines
23:50:29 <PiRSquared17> I don't
23:50:42 <oerjan> it's what EgoBot does for all > 1 line output
23:50:50 <oerjan> PiRSquared17: it may be hidden in a status line
23:51:07 <oerjan> er, status window
23:51:15 <oerjan> or something
23:51:30 <PiRSquared17> which dialect of bf is !bf ?
23:51:37 <oerjan> 16-bit, i think
23:51:39 <PiRSquared17> (EOF=0?)
23:51:46 <oerjan> oh, not sure
23:52:15 <oerjan> er, well EOF=0 tends to work in practice. hm...
23:52:22 <PiRSquared17> !bf ,[.,]!123
23:52:38 <oerjan> apparently not ! supporting
23:52:38 <EgoBot> ​:oerjan!oerjan@129.241.210.46 PRIVMSG #esoteric :apparently not ! supporting.
23:52:45 <elliott> EgoBot is just broken
23:52:47 <oerjan> WAT
23:52:57 <PiRSquared17> !bf ,[.,]
23:53:00 <PiRSquared17> rtxrhxhrtdrthcdtjc
23:53:03 <oerjan> is this ! something regular
23:53:15 <oerjan> Gregor: that was WEIRD
23:53:27 <PiRSquared17> !bf ,[.,]!123
23:53:29 <monqy> !bf ,[...,...]!
23:53:31 <monqy> abcdefg
23:53:31 <PiRSquared17> !bf ,[.,]!123
23:53:31 <EgoBot> ​:PiRSquared17!~PiRSquare@wikipedia/PiRSquared17 PRIVMSG #esoteric :!bf ,[.,]!123.
23:53:34 <oerjan> PiRSquared17: it's not _supposed_ to read following lines afaik :P
23:53:46 <PiRSquared17> It does...
23:53:47 <monqy> !bf ,[...,...]!123
23:53:55 <monqy> egobot listen to me...
23:53:58 <oerjan> Gregor: crazy bug there
23:54:01 <PiRSquared17> !bf ,[.,]!123
23:54:04 <PiRSquared17> !bf ,[.,]!123
23:54:05 <EgoBot> ​:PiRSquared17!~PiRSquare@wikipedia/PiRSquared17 PRIVMSG #esoteric :!bf ,[.,]!123.
23:54:10 <monqy> you aren't putting enough . in there
23:54:19 <PiRSquared17> x-cz-command:dcc-decline%203705
23:54:30 <PiRSquared17> What the heck?
23:54:35 <oerjan> maybe it actually requires a ! in the message to see it
23:54:43 <oerjan> but it's still a bug
23:54:56 <oerjan> anyway
23:54:59 <elliott> oerjan: did you not see where it duplicated a line above
23:55:05 <PiRSquared17> !bf ++++++++++++++++++++++++++.......................!23qw34sdrt'
23:55:06 <EgoBot> ​.......................
23:55:16 <PiRSquared17> !bf +++++++++++++++++++++++++.......................!23qw34sdrt'
23:55:16 <EgoBot> ​.......................
23:55:18 <monqy> !bf ,[...,]!123
23:55:18 -!- augur has quit (Ping timeout: 252 seconds).
23:55:19 <monqy> egobot!
23:55:23 <monqy> noo
23:55:24 <oerjan> elliott: er isn't that what i was talking about?
23:55:37 <monqy> !bf +[...,]!123
23:55:39 <monqy> egobot!
23:55:39 <EgoBot> ​...:::mmmooonnnqqqyyy!!!~~~ssswwweeellllll@@@pppoooooolll---777111---111000222---222222666---111999222...sssnnnlllooocccaaa...dddssslll---www...vvveeerrriiizzzooonnn...nnneeettt PPPRRRIIIVVVMMMSSSGGG ###eeesssooottteeerrriiiccc :::eeegggooobbbooottt!!!...
23:55:40 <elliott> 22:36:23: <HalfTauRSquared> !bf +[.+,.]!123
23:55:40 <elliott> 22:36:26: <HalfTauRSquared> 123
23:55:40 <elliott> 22:36:26: <EgoBot> ​.::HHaallffTTaauuRRSSqquuaarreedd!!~~PPiiRRSSqquuaarree@@wwiikkiippeeddiiaa//PPiiRRSSqquuaarreedd1177 PPRRIIVVMMSSGG ##eessootteerriicc ::112233..
23:55:43 <PiRSquared17> !bf ,[,.]!|<--augur has left freenode (Ping timeout: 252 seconds)
23:55:45 <PiRSquared17> !bf ,[,.]!|<--augur has left freenode (Ping timeout: 252 seconds)
23:55:49 <monqy> thank you egobot
23:55:51 <monqy> for listening
23:55:58 <PiRSquared17> LOLOL
23:56:28 <oerjan> !addinterp cat bf ,[.,]
23:56:29 <EgoBot> ​Interpreter cat installed.
23:56:33 <oerjan> !cat testing
23:56:33 <EgoBot> testing
23:56:38 <kallisti> monqy: ppprrriiivvvmmmsssggg
23:56:56 <monqy> it gave me a dcc but i'm not listening
23:56:56 <oerjan> that's how you actually do it, no idea if ! is supposed to work or not
23:56:58 <monqy> !cat
23:56:59 <monqy> hello!
23:57:18 <oerjan> !delinterp cat
23:57:18 <EgoBot> ​Interpreter cat deleted.
23:57:19 <monqy> cccaaattt...
23:57:31 <kallisti> mmmooonnnqqqyyy
23:57:44 <oerjan> oh it's obviously EOF 0 to halt with that program
23:57:46 <PiRSquared17> `addquote <EgoBot>​...:::mmmooonnnqqqyyy!!!~~~ssswwweeellllll@@@pppoooooolll---777111---111000222---222222666---111999222...sssnnnlllooocccaaa...dddssslll---www...vvveeerrriiizzzooonnn...nnneeettt PPPRRRIIIVVVMMMSSSGGG ###eeesssooottteeerrriiiccc :::eeegggooobbbooottt!!!...<elliott>22:36:23: <HalfTauRSquared> !bf +[.+,.]!123<elliott>22:36:26: <HalfTauRSquared> 123<elliott>22:36:26:...
23:57:48 <PiRSquared17> ...<EgoBot> ​.::HHaallffTTaauuRRSSqquuaarreedd!!~~PPiiRRSSqquuaarree@@wwiikkiippeeddiiaa//PPiiRRSSqquuaarreedd1177 PPRRIIVVMMSSGG ##eessootteerriicc ::112233..
23:57:48 <HackEgo> 736) <EgoBot>.​...:::mmmooonnnqqqyyy!!!~~~ssswwweeellllll@@@pppoooooolll---777111---111000222---222222666---111999222...sssnnnlllooocccaaa...dddssslll---www...vvveeerrriiizzzooonnn...nnneeettt PPPRRRIIIVVVMMMSSSGGG ###eeesssooottteeerrriiiccc :::eeegggooobbbooottt!!!...<elliott>.22:36:23: <HalfTauRSquared> !bf +[.+,.]!123<elliott>.22:36:26: <HalfTauRSquared> 123<elliott>.22:36:26:...
23:57:54 <monqy> very quotable
23:58:08 * kallisti waits.
23:58:10 <monqy> !delquote 736
23:58:12 <monqy> er
23:58:13 <Sgeo> I keep thinking that maybe my connection is being weird
23:58:14 <monqy> `delquote 736
23:58:16 <HackEgo> ​*poof* <EgoBot> ​...:::mmmooonnnqqqyyy!!!~~~ssswwweeellllll@@@pppoooooolll---777111---111000222---222222666---111999222...sssnnnlllooocccaaa...dddssslll---www...vvveeerrriiizzzooonnn...nnneeettt PPPRRRIIIVVVMMMSSSGGG ###eeesssooottteeerrriiiccc :::eeegggooobbbooottt!!!...<elliott>.22:36:23: <HalfTauRSquared> !bf +[.+,.]!123<elliott>.22:36:26: <HalfTauRSquared> 123<elliott>.22:36:26:...
23:58:17 <PiRSquared17> LOL SO MUCH
23:58:35 <Sgeo> But that makes nop sense
23:58:50 <PiRSquared17> that's what's funny
23:58:56 <monqy> that it isn't funny?
23:58:56 <PiRSquared17> !cat y
23:58:58 <PiRSquared17> !cat y
23:58:59 <kallisti> ha. ha. ha.
23:59:00 <PiRSquared17> !cat y
23:59:02 <PiRSquared17> ?
23:59:03 <monqy> `yes
23:59:05 <HackEgo> y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y
23:59:06 <kallisti> monqy: tricycle butt
23:59:06 <kallisti> ha
23:59:06 <monqy> y
23:59:09 <kallisti> ha ha
23:59:16 <Sgeo> `yes kallisti
23:59:18 <HackEgo> kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti \ kallisti
23:59:30 <PiRSquared17> `yes `yes
23:59:32 <HackEgo> ​`yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes \ `yes
23:59:40 <monqy> ,hatesgeo on every logfile
2011-11-25
00:00:01 <monqy> `run yes `yes`
00:00:08 <monqy> yes problems
00:00:08 <itidus22> `yes !
00:00:09 <PiRSquared17> !bf +[.++++]!21345678976tfygvbhjuihb
00:00:10 <PiRSquared17> !bf +[.++++]!21345678976tfygvbhjuihb
00:00:10 <HackEgo> ​! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ ! \ !
00:00:12 <PiRSquared17> !bf +[.++++]!21345678976tfygvbhjuihb
00:00:14 <PiRSquared17> !bf +[.++++]!21345678976tfygvbhjuihb
00:00:20 <monqy> `run yes \
00:00:22 <monqy> er
00:00:22 <HackEgo> y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y
00:00:27 <monqy> `yes \
00:00:28 <oerjan> <PiRSquared17> ? <-- um i deleted it again
00:00:31 <HackEgo> ​\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
00:00:33 <HackEgo> No output.
00:00:33 <monqy> good
00:01:17 <PiRSquared17> !bf +[.++++]!test
00:01:26 <PiRSquared17> PiRSquared17!bf +[.++++]!test
00:01:31 <PiRSquared17> ?
00:01:40 <oerjan> PiRSquared17: you are not actually reading input...
00:01:58 <PiRSquared17> that is what it was doing before...
00:02:16 <oerjan> um, i mean your bf program has no , in it
00:02:21 <itidus22> `yes :!
00:02:23 <HackEgo> ​:! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :! \ :!
00:02:25 <PiRSquared17> I know
00:02:39 -!- zzo38 has joined.
00:02:42 <PiRSquared17> But I just wanted to see every fourth character
00:02:45 -!- SgeoN1 has joined.
00:03:01 <PiRSquared17> !bf +[.++++]
00:03:04 <PiRSquared17> ?
00:03:05 <oerjan> PiRSquared17: my interpretation is that it actually run that program, but that the ! got it to read buggily from some later irc line as input instead of from the part after !
00:03:06 <SgeoN1> My screen went blank and capslock started blinking
00:03:28 <PiRSquared17> !bf +[.++++]
00:03:48 <oerjan> PiRSquared17: and moreover it seemed that buggily read input had to contain a !
00:04:01 -!- Sgeo has quit (Ping timeout: 240 seconds).
00:04:03 <PiRSquared17> this is so broken
00:04:13 <oerjan> i assume to get past EgoBot's most basic input filter
00:04:59 <kallisti> > let fibs = 0 : 1 : zipWith fibs (tail fibs) in scanl1 (+) fibs
00:05:00 <lambdabot> Couldn't match expected type `[a]'
00:05:00 <lambdabot> against inferred type `a -> b ->...
00:05:07 <kallisti> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in scanl1 (+) fibs
00:05:08 <lambdabot> [0,1,2,4,7,12,20,33,54,88,143,232,376,609,986,1596,2583,4180,6764,10945,177...
00:05:54 <PiRSquared17> > let nats = 1 : (map succ nats) in nats
00:05:55 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
00:06:15 <PiRSquared17> > [1..]
00:06:16 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
00:06:18 -!- EgoBot has quit (Remote host closed the connection).
00:06:26 <PiRSquared17> !!!!
00:06:29 -!- EgoBot has joined.
00:06:30 <PiRSquared17> Remote host closed the connection
00:06:43 <PiRSquared17> !bf ,[.,]!Remote host closed the connection!
00:06:44 <oerjan> Gregor: you are suspected
00:06:54 <PiRSquared17> !bf ,[.,]!Remote host closed the connection!
00:06:56 <oerjan> now what!
00:06:56 <EgoBot> ​:oerjan!oerjan@129.241.210.46 PRIVMSG #esoteric :now what!.
00:06:57 <PiRSquared17> Remote host closed the connection
00:07:10 <PiRSquared17> [DCC]Got DCC Chat offer from “EgoBot” (68.9.170.24:10084) [Accept] [Decline].
00:07:24 <oerjan> PiRSquared17: hm i wonder if the ! also has to not be in the first character
00:07:26 <PiRSquared17> ?
00:07:36 <PiRSquared17> lolglitchy
00:07:42 <PiRSquared17> !bf ,[.,]!Remote host closed the connection!
00:07:43 <oerjan> presumably there's a filter for that too
00:07:46 <PiRSquared17> a1!3
00:07:50 <PiRSquared17> !bf ,[.,]!Remote host closed the connection!
00:07:54 <PiRSquared17> h1!t
00:07:55 -!- SgeoN1 has quit (Read error: Connection reset by peer).
00:07:57 <kallisti> hi
00:07:58 <monqy> bye sgeo
00:08:32 <PiRSquared17> !bf +[.++++]
00:08:42 <PiRSquared17> test1!noinputanyway
00:08:55 <PiRSquared17> ?
00:09:47 <kallisti> monqy: bye
00:09:51 <PiRSquared17> !bf ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.!12345678123456781234567812345678123we4ftvgybfrtdercftgvyh
00:09:54 <PiRSquared17> !rxt
00:10:01 <PiRSquared17> test!q
00:10:03 <kallisti> @tell derdon PLEASE COME BACK
00:10:03 <lambdabot> Consider it noted.
00:10:07 <monqy> kallisti: hi
00:10:30 -!- kallisti has changed nick to is.
00:10:31 <is> @messages
00:10:32 <lambdabot> You don't have any new messages.
00:10:37 <PiRSquared17> @tell derdon COME BACK IFF YOU WANT
00:10:37 <lambdabot> Consider it noted.
00:10:38 -!- is has changed nick to hi.
00:10:44 <hi> @messages
00:10:44 <lambdabot> You don't have any new messages.
00:10:48 <oerjan> PiRSquared17: oh EgoBot also never gives output if it is too long with no newlines
00:10:50 -!- hi has changed nick to kallisti.
00:10:51 <PiRSquared17> @messages
00:10:51 <lambdabot> You don't have any new messages.
00:10:56 <elliott> @tell derdon don't come back we hate you
00:10:57 <lambdabot> Consider it noted.
00:11:00 <monqy> @messages
00:11:01 <lambdabot> You don't have any new messages.
00:11:05 <oerjan> which is annoying for some interpreters such as underload
00:11:12 <kallisti> elliott: we do?
00:11:17 <PiRSquared17> @tell derdon come back we hate you
00:11:17 <lambdabot> Consider it noted.
00:11:18 <elliott> we do now
00:11:22 <PiRSquared17> @tell derdon come back we don't hate you
00:11:23 <lambdabot> Consider it noted.
00:11:25 <kallisti> oh. yeah. asshole
00:11:26 <monqy> @tell derdon hi
00:11:27 <lambdabot> Consider it noted.
00:11:28 * kallisti groupthinks
00:11:35 <oerjan> i think i modified the !slashes one to get around it
00:11:48 <PiRSquared17> @tell derdon trololo
00:11:48 <lambdabot> Consider it noted.
00:11:57 <monqy> :(
00:12:25 <PiRSquared17> @tell derdon watch http://www.youtube.com/watch?v=oHg5SJYRHA0
00:12:25 <lambdabot> Consider it noted.
00:12:55 <oerjan> @tell derdon As the resident op, I have to apologize for these jerks in the channel. Oh wait...
00:12:55 <lambdabot> Consider it noted.
00:12:55 <monqy> :(
00:12:56 <PiRSquared17> @messages derdon
00:12:56 <lambdabot> You don't have any new messages.
00:13:41 <kallisti> @tell derdon As a resident jerk, I have to apologize for your client settings which you apparently don't like but keep anyway.
00:13:41 <lambdabot> Consider it noted.
00:13:46 <PiRSquared17> derdon: You have 256 factorial new messages
00:14:15 <monqy> no
00:14:16 <oerjan> derdon: You have A(G_64,G_64) new messages
00:14:23 <monqy> yes
00:14:37 <PiRSquared17> Ackermann ...
00:14:46 <kallisti> Ackermann: Ackermaaaaaann!
00:15:06 <oerjan> PiRSquared17: the Ackermann is actually not the huge bit there
00:15:16 <oerjan> as that's actually less than G_65
00:15:51 <oerjan> or of the same magniture, i don't quite recall
00:15:54 <oerjan> *d
00:15:56 -!- Sgeo has joined.
00:15:57 <PiRSquared17> you have G_234567865432456786543567876543456789765434567897654356786543456789765435678
00:16:03 <Sgeo> Kernel panic :(
00:16:03 <PiRSquared17> new messages
00:16:08 <monqy> hi sgeo
00:16:22 <oerjan> food ->
00:16:35 <kallisti> sum $ map (G_) [1..G_(G_64)]
00:17:16 * kallisti is an expert in the field of big numbers.
00:17:54 <PiRSquared17> sum $ map (G_) [1..G_(G_googolplex)]
00:18:27 <PiRSquared17> sum $ map ((G_) . (G_)) [1..G_(G_googolplex)]
00:18:46 <kallisti> PiRSquared17: my god! how did you become such a master of big numbers!
00:18:57 <PiRSquared17> @tell PiRSquared17 hello
00:18:58 <lambdabot> You can tell yourself!
00:19:00 <elliott> i wonder if g_g64 is actually substantially bigger than g64, i doubt it
00:19:01 <elliott> oerjan?
00:19:04 <PiRSquared17> @tell PiRSquared hello
00:19:05 <lambdabot> Consider it noted.
00:19:12 -!- PiRSquared17 has changed nick to PiRSquared.
00:19:22 <PiRSquared> @messages
00:19:22 <lambdabot> PiRSquared17 said 18s ago: hello
00:19:46 <PiRSquared> @tell PiRSquared17 hi
00:19:46 <lambdabot> Consider it noted.
00:19:57 -!- PiRSquared has changed nick to PiRSquared17.
00:20:02 <PiRSquared17> @messages
00:20:02 <lambdabot> PiRSquared said 15s ago: hi
00:20:36 <PiRSquared17> @tell PiRSquared Is True?
00:20:36 <lambdabot> Consider it noted.
00:20:43 -!- PiRSquared17 has changed nick to PiRSquared.
00:20:49 <PiRSquared> @messages
00:20:49 <lambdabot> PiRSquared17 said 13s ago: Is True?
00:21:01 <PiRSquared> @tell PiRSquared17 yes
00:21:02 <lambdabot> Consider it noted.
00:21:10 -!- PiRSquared has changed nick to PiRSquared17.
00:28:04 <oerjan> elliott: i should think g_{g_64} is rather bigger. of course you can then iterate that...
00:28:15 <elliott> oerjan: well bigger yes, but /relatively/ bigger?
00:28:22 <elliott> (g_64)! is about as big as g_64 :P
00:28:40 <elliott> i suppose g grows quickly enough though
00:29:36 <oerjan> the concept "big" has lost all meaning before you even reach G_1, anyway
00:30:03 <PiRSquared17> @type G_
00:30:10 <PiRSquared17> @type g_
00:30:25 <oerjan> > "hm..."
00:30:26 <lambdabot> thread killed
00:30:29 <elliott> oerjan: bigness islike this: 1 is small, 2^80 is small, g_1 is miedum-ish, g_64 is pretty big
00:30:33 <elliott> *medium-ish
00:30:41 <oerjan> O KAY
00:30:44 <oerjan> > 2+2
00:30:46 <lambdabot> thread killed
00:30:51 <lambdabot> mueval-core: Time limit exceeded
00:30:56 <monqy> lambdabot........
00:31:00 <oerjan> lambdabot seems to be under stress
00:31:03 <PiRSquared17> lol
00:31:03 <lambdabot> PiRSquared17: You have 1 new message. '/msg lambdabot @messages' to read it.
00:31:22 <PiRSquared17> lambdabotPiRSquared said 10m 10s ago: yes
00:31:30 <PiRSquared17> lolwut
00:31:49 <oerjan> PiRSquared17: well you did
00:31:50 <itidus22> humm
00:32:09 <oerjan> you just didn't say anything to make lambdabot remind you before
00:32:27 <itidus22> lambdabot has his own agenda
00:32:35 <oerjan> actual commands don't trigger it
00:32:47 <PiRSquared17> > 2+2
00:32:50 <lambdabot> 4
00:32:56 <PiRSquared17> YAY!
00:33:06 <PiRSquared17> > sum [0..]
00:33:10 <lambdabot> mueval-core: Time limit exceeded
00:33:18 <PiRSquared17> > length [0..]
00:33:20 <PiRSquared17> aleph_0
00:33:22 <lambdabot> mueval-core: Time limit exceeded
00:33:23 <elliott> http://en.wikipedia.org/wiki/Pareidolia#Gallery
00:33:27 <elliott> A rusty piece of machinery looks like the face of a beast.
00:33:27 <elliott> A cardboard box that appears to be shocked and unhappy
00:33:32 <elliott> they fight crime???
00:33:56 <itidus22> I'm sorry Dave. I'm afraid I can't do that.
00:34:14 <PiRSquared17> > length [0..10000000000000000000000000000000000]
00:34:17 <PiRSquared17> easy
00:34:17 <lambdabot> mueval-core: Time limit exceeded
00:34:22 <PiRSquared17> 10000000000000000000000000000000001
00:34:26 <monqy> pirsquared17.............
00:34:36 <PiRSquared17> I know...
00:36:50 <oerjan> <elliott> ais523\unfoog: I am flabbergasted to learn that owlbears are a thing <-- http://www.headinjurytheater.com/article73.htm
00:37:17 <PiRSquared17> > sum (enumFromTo (length []) (0))
00:37:18 <lambdabot> 0
00:37:30 <elliott> http://www.headinjurytheater.com/images/d&d%20wolf%20spider%20so%20retarded.jpg
00:37:31 <elliott> god bless america
00:38:41 <PiRSquared17> !languages
00:38:46 <PiRSquared17> !help languages
00:38:47 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
00:38:49 <kallisti> elliott: hmmm I wonder what rules THOSE ARE
00:38:57 <kallisti> looks kind of like WoD but it's not.
00:38:59 <PiRSquared17> no banana-scheme :p
00:39:10 <elliott> PiRSquared17: patches welcome
00:39:18 <PiRSquared17> solve the halting-problem EgoBot !
00:39:24 <elliott> PiRSquared17: that would give it a Brainfuck/w/index.php?title=Talk:Brainfuck/index.php interpreter, too
00:39:41 <kallisti> oh might be DnD actually
00:39:44 <oerjan> kallisti: that link is about D&D
00:39:45 <kallisti> I forgot DnD uses d10
00:40:49 <itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:01 <elliott> what
00:41:02 <kallisti> ..
00:41:12 <kallisti> `addquote 19:40 < itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:14 <HackEgo> 736) 19:40 < itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:16 <kallisti> nooo
00:41:18 <kallisti> wtf irssi
00:41:21 <elliott> `delquote 736
00:41:24 <HackEgo> ​*poof* 19:40 < itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:26 <elliott> `addquote <itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:29 <HackEgo> 736) <itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:31 <PiRSquared17> `addquote 19:40 < itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:33 <HackEgo> 737) 19:40 < itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:40 <kallisti> `delquote 737
00:41:41 <PiRSquared17> `delquote 737
00:41:43 <HackEgo> ​*poof* 19:40 < itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:44 <kallisti> ha
00:41:44 <HackEgo> ​*poof* 19:40 < itidus22> if the halting problem was solved, as a placebo.. would it benefit people?
00:41:46 <itidus22> `log delquote 736
00:41:47 <kallisti> ha ha I win
00:41:56 <HackEgo> 2011-11-25.txt:00:41:21: <elliott> `delquote 736
00:42:03 <kallisti> `log
00:42:05 <HackEgo> 2004-10-06.txt:15:51:52: <fizzie> 1. (1) esoteric -- (confined to and understandable by only an enlightened inner circle; "a compilation of esoteric philosophical theories")
00:42:07 <PiRSquared17> `log delquote 736
00:42:08 <PiRSquared17> `log delquote 736
00:42:11 <HackEgo> 2011-11-25.txt:00:41:46: <itidus22> `log delquote 736
00:42:13 <HackEgo> 2011-11-24.txt:23:58:10: <monqy> !delquote 736
00:42:18 <kallisti> `log
00:42:20 <HackEgo> 2003-11-09.txt:09:43:20: -!- deltab has joined #esoteric.
00:42:20 <PiRSquared17> `log delquote 736
00:42:25 <HackEgo> 2011-11-25.txt:00:42:13: <HackEgo> 2011-11-24.txt:23:58:10: <monqy> !delquote 736
00:42:37 <kallisti> PiRSquared17: quit that.
00:42:43 <itidus22> lol
00:42:59 <kallisti> contrary to popular belief, #esoteric is not actually place where you go to create lots of useless bot spam.
00:43:05 <kallisti> (this is a lie)
00:43:08 <elliott> it isn't?
00:43:14 <kallisti> elliott: no
00:43:16 <kallisti> (yes, it is)
00:43:19 <elliott> Ah.
00:43:32 <itidus22> `pastelog delquote 736
00:43:37 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.14065
00:44:13 <kallisti> elliott: it shouldn't be anyway
00:44:22 <PiRSquared17> `log contrary to popular belief
00:44:23 <kallisti> it's fine that it is, I guess. it's not a problem. it's not something we need to be huge assholes about
00:44:26 <itidus22> i knew that 736 looked familiar
00:44:28 <HackEgo> 2011-07-25.txt:08:30:07: <pikhq_> Contrary to popular belief, Haskell is *not* a very formal language.
00:44:39 <zzo38> Do you know anything about debtor prison? (It is a question related to the Dungeons&Dragons game)
00:44:51 <PiRSquared17> `log contrary to popular belief
00:44:56 <HackEgo> 2011-05-17.txt:23:45:06: <pikhq> Phantom_Hoover: An oft-misunderstood playwrite, who uses rather crude language, contrary to popular belief.
00:45:21 <kallisti> however, it would be nice if people didn't create pages of botspam because they're basically bored.
00:45:36 <zzo38> Use private message
00:46:04 <zzo38> Or make up botspam channel in case other people want to read it too
00:46:09 <elliott> kallisti: For all the kidding around I totally agree
00:46:23 <kallisti> elliott: but it's not /really/ a big deal
00:46:35 <kallisti> like I'd rather the channel be active than silent because no one gets to play with bots.
00:46:57 <kallisti> but I'd rather the channel be active with like... awesome
00:46:58 * elliott thinks it's alright as long as nobody's talking about somethiing more interesting and the botspam is about something vaguely interesting
00:46:58 <kallisti> instead.
00:47:47 <kallisti> elliott: hmmm, sounds like some kind of temporal ordered logic. :>
00:47:49 <zzo38> elliott: Yes. I think that can be correct. Otherwise you can use private message for bot command in case you don't want to botspam the entire channel when someone discuss something else instead
00:48:19 <monqy> can't botloop in private
00:48:22 <PiRSquared17> `addquote <elliott>Ah.
00:48:25 <HackEgo> 737) <elliott>.Ah.
00:48:29 <elliott> `delquote 737
00:48:31 <kallisti> >_>
00:48:33 <HackEgo> ​*poof* <elliott>.Ah.
00:48:34 <elliott> PiRSquared17: cut it out
00:48:40 <monqy> PiRSquared17: seriously
00:48:42 <kallisti> PiRSquared17: you've lost your quoting privledges.
00:48:51 <PiRSquared17> ...
00:48:56 <kallisti> -d
00:49:01 <monqy> all of them
00:49:02 <kallisti> priv ledges
00:49:47 <PiRSquared17> ?
00:49:51 <PiRSquared17> `quote
00:49:53 <HackEgo> 197) <cpressey> fizzie: I can never tell with OpenBSD! <cpressey> everything looks like an error anyway
00:50:00 <PiRSquared17> Still works...
00:50:42 <elliott> yes it does
00:50:44 <elliott> it's just: annoying
00:51:06 <Gregor> Moop
00:51:07 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
00:51:19 <elliott> Gregor: EgoBot is massively broken
00:51:26 <Gregor> Sweet.
00:51:34 <elliott> <PiRSquared17> !bf ,[.,]!Remote host closed the connection!
00:51:35 <elliott> <oerjan> now what!
00:51:35 <elliott> <EgoBot> ​:oerjan!oerjan@129.241.210.46 PRIVMSG #esoteric :now what!.
00:51:43 <elliott> <elliott> 22:36:23: <HalfTauRSquared> !bf +[.+,.]!123
00:51:43 <elliott> <elliott> 22:36:26: <HalfTauRSquared> 123
00:51:43 <elliott> <elliott> 22:36:26: <EgoBot> ​.::HHaallffTTaauuRRSSqquuaarreedd!!~~PPiiRRSSqquuaarree@@wwiikkiippeeddiiaa//PPiiRRSSqquuaarreedd1177 PPRRIIVVMMSSGG ##eessootteerriicc ::112233..
00:51:49 <elliott> <PiRSquared17> !bf ,[.,]!123
00:51:49 <elliott> <EgoBot> ​:PiRSquared17!~PiRSquare@wikipedia/PiRSquared17 PRIVMSG #esoteric :!bf ,[.,]!123.
00:51:53 <elliott> etc.
00:52:06 <Gregor> ... wow
00:52:08 <Gregor> wtf
00:52:10 <Gregor> That ... makes no sense.
00:52:24 <PiRSquared17> !bf +[.+,.]!123
00:52:26 <PiRSquared17> 123
00:52:27 <EgoBot> ​.::PPiiRRSSqquuaarreedd1177!!~~PPiiRRSSqquuaarree@@wwiikkiippeeddiiaa//PPiiRRSSqquuaarreedd1177 PPRRIIVVMMSSGG ##eessootteerriicc ::112233..
00:52:32 <Gregor> ...
00:52:34 <PiRSquared17> proof.
00:53:11 -!- EgoBot has quit (Remote host closed the connection).
00:53:56 -!- augur has joined.
00:55:42 <PiRSquared17> ?
00:55:45 <Gregor> elliott: runghc replaced.
00:55:46 -!- GreaseMonkey has quit (Quit: The Other Game).
00:55:52 <elliott> Gregor: Thanks
00:56:10 <Gregor> However ...
00:56:12 <elliott> Gregor: Not in the repo, though :-)
00:56:13 <Gregor> Did you mean runhaskell?
00:56:18 <elliott> No, it's interps/ghc/runghc.
00:56:25 <Gregor> OH
00:56:28 <Gregor> In EgoBot
00:56:34 <elliott> >_<
00:56:37 <elliott> Better undo it for HackEgo :)
00:56:37 <Gregor> *lambdabot* elliott said 21h 44m 48s ago: Replace HackEgo's runghc with http://sprunge.us/AYIK, thx (avoids really expensive optimisation, useless temporary file)
00:56:40 <Gregor> Yes :P
00:56:42 <elliott> Oops :P
00:56:59 <Gregor> EgoBot apparently has other issues :P
00:58:29 -!- kallisti has quit (Quit: Changing server).
00:59:03 <elliott> http://www.headinjurytheater.com/images/d&d%20beasts%20giant%20space%20hamster.jpg
00:59:06 <elliott> Yessssssssssssssss
00:59:29 <zzo38> Also waves his hand near Kjugobe and says, ``There is nothing here! Are you drunk? Stand up!'' and tries to make him stand up, however he fell down again.
00:59:40 <PiRSquared17> `log PPPiiiRRRSSSqqquuuaaarrreee
00:59:41 -!- CakeProphet has joined.
00:59:41 -!- CakeProphet has quit (Changing host).
00:59:41 -!- CakeProphet has joined.
00:59:45 <HackEgo> 2011-11-25.txt:00:59:40: <PiRSquared17> `log PPPiiiRRRSSSqqquuuaaarrreee
00:59:52 -!- esowiki has joined.
01:00:40 -!- esowiki has joined.
01:01:26 -!- esowiki has joined.
01:02:09 -!- esowiki has joined.
01:02:59 -!- esowiki has joined.
01:03:37 -!- esowiki has joined.
01:04:09 -!- esowiki has joined.
01:04:40 -!- esowiki has joined.
01:05:26 -!- esowiki has joined.
01:06:17 -!- esowiki has joined.
01:06:49 -!- esowiki has joined.
01:07:38 -!- esowiki has joined.
01:08:11 -!- esowiki has joined.
01:08:59 -!- esowiki has joined.
01:09:30 -!- esowiki has joined.
01:10:16 -!- esowiki has joined.
01:10:56 -!- esowiki has joined.
01:11:51 -!- esowiki has joined.
01:12:36 -!- esowiki has joined.
01:13:25 -!- esowiki has joined.
01:14:14 -!- esowiki has joined.
01:14:50 -!- esowiki has joined.
01:15:42 -!- esowiki has joined.
01:16:44 -!- esowiki has joined.
01:17:19 -!- esowiki has joined.
01:17:55 -!- esowiki has joined.
01:18:27 -!- esowiki has joined.
01:19:00 -!- esowiki has joined.
01:19:33 -!- esowiki has joined.
01:20:21 -!- esowiki has joined.
01:21:13 -!- esowiki has joined.
01:21:45 -!- esowiki has joined.
01:22:31 -!- esowiki has joined.
01:23:17 -!- esowiki has joined.
01:24:07 -!- esowiki has joined.
01:24:55 -!- esowiki has joined.
01:25:29 -!- esowiki has joined.
01:26:21 -!- esowiki has joined.
01:27:21 -!- esowiki has joined.
01:28:28 -!- esowiki has joined.
01:29:02 -!- esowiki has joined.
01:29:39 -!- esowiki has joined.
01:30:29 -!- esowiki has joined.
01:31:02 -!- esowiki has joined.
01:31:50 -!- esowiki has joined.
01:32:40 -!- esowiki has joined.
01:33:36 -!- esowiki has joined.
01:34:24 -!- esowiki has joined.
01:34:57 -!- esowiki has joined.
01:35:50 -!- esowiki has joined.
01:36:38 -!- esowiki has joined.
01:37:20 -!- esowiki has joined.
01:38:16 -!- esowiki has joined.
01:38:57 -!- esowiki has joined.
01:39:28 -!- esowiki has joined.
01:39:59 -!- esowiki has joined.
01:41:00 -!- esowiki has joined.
01:41:44 -!- esowiki has joined.
01:42:17 -!- esowiki has joined.
01:43:05 -!- esowiki has joined.
01:43:56 -!- esowiki has joined.
01:44:29 -!- esowiki has joined.
01:45:02 -!- esowiki has joined.
01:45:54 -!- esowiki has joined.
01:46:40 -!- esowiki has joined.
01:47:19 -!- esowiki has joined.
01:48:09 -!- esowiki has joined.
01:48:42 -!- esowiki has joined.
01:49:17 -!- esowiki has joined.
01:49:48 -!- esowiki has joined.
01:50:32 -!- esowiki has joined.
01:51:19 -!- esowiki has joined.
01:52:00 -!- esowiki has joined.
01:52:38 -!- esowiki has joined.
01:53:26 -!- esowiki has joined.
01:53:57 -!- esowiki has joined.
01:54:43 -!- esowiki has joined.
01:55:29 -!- esowiki has joined.
01:56:00 -!- esowiki has joined.
01:56:31 -!- esowiki has joined.
01:57:29 -!- esowiki has joined.
01:58:04 -!- esowiki has joined.
01:58:49 -!- esowiki has joined.
01:59:42 -!- esowiki has joined.
02:00:26 -!- esowiki has joined.
02:00:58 -!- esowiki has joined.
02:01:37 -!- esowiki has joined.
02:02:12 -!- esowiki has joined.
02:03:11 -!- esowiki has joined.
02:04:06 -!- esowiki has joined.
02:04:57 -!- esowiki has joined.
02:05:29 -!- esowiki has joined.
02:06:19 -!- esowiki has joined.
02:06:51 -!- esowiki has joined.
02:07:22 -!- esowiki has joined.
02:08:09 -!- esowiki has joined.
02:08:41 -!- esowiki has joined.
02:09:26 -!- esowiki has joined.
02:10:14 -!- esowiki has joined.
02:11:06 -!- esowiki has joined.
02:11:41 -!- esowiki has joined.
02:12:31 -!- esowiki has joined.
02:13:16 -!- esowiki has joined.
02:14:05 -!- esowiki has joined.
02:14:36 -!- esowiki has joined.
02:15:18 -!- esowiki has joined.
02:15:51 -!- esowiki has joined.
02:16:24 -!- esowiki has joined.
02:16:57 -!- esowiki has joined.
02:17:50 -!- esowiki has joined.
02:18:23 -!- esowiki has joined.
02:18:54 -!- esowiki has joined.
02:19:46 -!- esowiki has joined.
02:20:17 -!- esowiki has joined.
02:20:55 -!- esowiki has joined.
02:21:42 -!- esowiki has joined.
02:22:15 -!- esowiki has joined.
02:23:05 -!- esowiki has joined.
02:23:51 -!- esowiki has joined.
02:24:31 -!- esowiki has joined.
02:25:33 -!- esowiki has joined.
02:26:20 -!- esowiki has joined.
02:27:16 -!- esowiki has joined.
02:28:01 -!- esowiki has joined.
02:28:36 -!- esowiki has joined.
02:29:08 -!- esowiki has joined.
02:30:09 -!- esowiki has joined.
02:30:47 -!- esowiki has joined.
02:31:18 -!- esowiki has joined.
02:32:06 -!- esowiki has joined.
02:32:41 -!- esowiki has joined.
02:33:26 -!- esowiki has joined.
02:34:14 -!- esowiki has joined.
02:34:55 -!- esowiki has joined.
02:35:43 -!- esowiki has joined.
02:36:38 -!- esowiki has joined.
02:37:39 -!- esowiki has joined.
02:38:24 -!- esowiki has joined.
02:38:57 -!- esowiki has joined.
02:39:37 -!- esowiki has joined.
02:40:09 -!- esowiki has joined.
02:40:51 -!- esowiki has joined.
02:41:28 -!- esowiki has joined.
02:41:59 -!- esowiki has joined.
02:42:36 -!- esowiki has joined.
02:43:11 -!- esowiki has joined.
02:43:42 -!- esowiki has joined.
02:44:14 -!- esowiki has joined.
02:45:04 -!- esowiki has joined.
02:46:06 -!- esowiki has joined.
02:47:05 -!- esowiki has joined.
02:47:37 -!- esowiki has joined.
02:48:24 -!- esowiki has joined.
02:49:04 -!- esowiki has joined.
02:49:44 -!- esowiki has joined.
02:50:15 -!- esowiki has joined.
02:51:01 -!- esowiki has joined.
02:51:40 -!- esowiki has joined.
02:52:25 -!- esowiki has joined.
02:52:57 -!- esowiki has joined.
02:53:50 -!- esowiki has joined.
02:54:39 -!- esowiki has joined.
02:55:27 -!- esowiki has joined.
02:56:13 -!- esowiki has joined.
02:57:09 -!- esowiki has joined.
02:58:11 -!- esowiki has joined.
02:59:00 -!- esowiki has joined.
02:59:53 -!- esowiki has joined.
03:00:45 -!- esowiki has joined.
03:01:37 -!- esowiki has joined.
03:02:31 -!- esowiki has joined.
03:03:19 -!- esowiki has joined.
03:04:12 -!- esowiki has joined.
03:05:04 -!- esowiki has joined.
03:05:38 -!- esowiki has joined.
03:06:38 -!- esowiki has joined.
03:07:10 -!- esowiki has joined.
03:07:56 -!- esowiki has joined.
03:08:30 -!- esowiki has joined.
03:09:32 -!- esowiki has joined.
03:10:06 -!- esowiki has joined.
03:10:39 -!- esowiki has joined.
03:11:23 -!- esowiki has joined.
03:12:07 -!- esowiki has joined.
03:12:41 -!- esowiki has joined.
03:13:30 -!- esowiki has joined.
03:14:11 -!- esowiki has joined.
03:14:42 -!- esowiki has joined.
03:15:36 -!- esowiki has joined.
03:16:09 -!- esowiki has joined.
03:17:07 -!- esowiki has joined.
03:17:38 -!- esowiki has joined.
03:18:19 -!- esowiki has joined.
03:18:55 -!- esowiki has joined.
03:19:39 -!- esowiki has joined.
03:20:13 -!- esowiki has joined.
03:20:44 -!- esowiki has joined.
03:21:19 -!- esowiki has joined.
03:22:14 -!- esowiki has joined.
03:23:02 -!- esowiki has joined.
03:23:50 -!- esowiki has joined.
03:24:38 -!- esowiki has joined.
03:25:11 -!- esowiki has joined.
03:26:03 -!- esowiki has joined.
03:26:43 -!- esowiki has joined.
03:27:29 -!- esowiki has joined.
03:28:15 -!- esowiki has joined.
03:29:10 -!- esowiki has joined.
03:30:04 -!- esowiki has joined.
03:30:56 -!- esowiki has joined.
03:31:36 -!- esowiki has joined.
03:32:39 -!- esowiki has joined.
03:33:26 -!- esowiki has joined.
03:34:14 -!- esowiki has joined.
03:35:14 -!- esowiki has joined.
03:36:10 -!- esowiki has joined.
03:36:41 -!- esowiki has joined.
03:37:13 -!- esowiki has joined.
03:38:17 -!- esowiki has joined.
03:38:49 -!- esowiki has joined.
03:39:39 -!- esowiki has joined.
03:40:32 -!- esowiki has joined.
03:41:28 -!- esowiki has joined.
03:42:01 -!- esowiki has joined.
03:42:38 -!- esowiki has joined.
03:43:26 -!- esowiki has joined.
03:44:13 -!- esowiki has joined.
03:44:46 -!- esowiki has joined.
03:45:19 -!- esowiki has joined.
03:46:03 -!- esowiki has joined.
03:46:34 -!- esowiki has joined.
03:47:35 -!- esowiki has joined.
03:48:31 -!- esowiki has joined.
03:49:06 -!- esowiki has joined.
03:49:39 -!- esowiki has joined.
03:50:31 -!- esowiki has joined.
03:51:13 -!- esowiki has joined.
03:51:44 -!- esowiki has joined.
03:52:31 -!- esowiki has joined.
03:53:26 -!- esowiki has joined.
03:54:19 -!- esowiki has joined.
03:54:50 -!- esowiki has joined.
03:55:28 -!- esowiki has joined.
03:56:23 -!- esowiki has joined.
03:56:55 -!- esowiki has joined.
03:57:43 -!- esowiki has joined.
03:58:37 -!- esowiki has joined.
03:59:08 -!- esowiki has joined.
03:59:49 -!- esowiki has joined.
04:00:22 -!- esowiki has joined.
04:01:13 -!- esowiki has joined.
04:01:49 -!- esowiki has joined.
04:02:22 -!- esowiki has joined.
04:03:11 -!- esowiki has joined.
04:03:49 -!- esowiki has joined.
04:04:39 -!- esowiki has joined.
04:05:29 -!- esowiki has joined.
04:06:14 -!- esowiki has joined.
04:07:02 -!- esowiki has joined.
04:07:44 -!- esowiki has joined.
04:08:37 -!- esowiki has joined.
04:09:10 -!- esowiki has joined.
04:09:43 -!- esowiki has joined.
04:10:20 -!- esowiki has joined.
04:11:11 -!- esowiki has joined.
04:12:17 -!- esowiki has joined.
04:13:06 -!- esowiki has joined.
04:13:52 -!- esowiki has joined.
04:14:53 -!- esowiki has joined.
04:15:40 -!- esowiki has joined.
04:16:11 -!- esowiki has joined.
04:16:55 -!- esowiki has joined.
04:17:51 -!- esowiki has joined.
04:18:51 -!- esowiki has joined.
04:19:26 -!- esowiki has joined.
04:20:19 -!- esowiki has joined.
04:21:11 -!- esowiki has joined.
04:21:42 -!- esowiki has joined.
04:22:34 -!- esowiki has joined.
04:23:24 -!- esowiki has joined.
04:23:56 -!- esowiki has joined.
04:24:31 -!- esowiki has joined.
04:25:07 -!- esowiki has joined.
04:25:56 -!- esowiki has joined.
04:27:01 -!- esowiki has joined.
04:27:53 -!- esowiki has joined.
04:28:46 -!- esowiki has joined.
04:29:19 -!- esowiki has joined.
04:29:50 -!- esowiki has joined.
04:30:29 -!- esowiki has joined.
04:31:10 -!- esowiki has joined.
04:31:43 -!- esowiki has joined.
04:32:37 -!- esowiki has joined.
04:33:19 -!- esowiki has joined.
04:34:11 -!- esowiki has joined.
04:35:07 -!- esowiki has joined.
04:35:43 -!- esowiki has joined.
04:36:21 -!- esowiki has joined.
04:36:56 -!- esowiki has joined.
04:37:50 -!- esowiki has joined.
04:38:33 -!- esowiki has joined.
04:39:05 -!- esowiki has joined.
04:39:37 -!- esowiki has joined.
04:40:26 -!- esowiki has joined.
04:41:36 -!- esowiki has joined.
04:42:17 -!- esowiki has joined.
04:42:49 -!- esowiki has joined.
04:43:24 -!- esowiki has joined.
04:44:07 -!- esowiki has joined.
04:44:55 -!- esowiki has joined.
04:45:29 -!- esowiki has joined.
04:46:30 -!- esowiki has joined.
04:47:09 -!- esowiki has joined.
04:48:03 -!- esowiki has joined.
04:48:41 -!- esowiki has joined.
04:49:26 -!- esowiki has joined.
04:50:14 -!- esowiki has joined.
04:50:49 -!- esowiki has joined.
04:51:43 -!- esowiki has joined.
04:52:31 -!- esowiki has joined.
04:53:16 -!- esowiki has joined.
04:53:51 -!- esowiki has joined.
04:54:31 -!- esowiki has joined.
04:55:11 -!- esowiki has joined.
04:55:43 -!- esowiki has joined.
04:56:16 -!- esowiki has joined.
04:57:09 -!- esowiki has joined.
04:57:59 -!- esowiki has joined.
04:58:55 -!- esowiki has joined.
04:59:41 -!- esowiki has joined.
05:00:16 -!- esowiki has joined.
05:01:01 -!- esowiki has joined.
05:01:47 -!- esowiki has joined.
05:02:39 -!- esowiki has joined.
05:03:25 -!- esowiki has joined.
05:04:14 -!- esowiki has joined.
05:04:59 -!- esowiki has joined.
05:05:54 -!- esowiki has joined.
05:06:44 -!- esowiki has joined.
05:07:19 -!- esowiki has joined.
05:08:15 -!- esowiki has joined.
05:09:02 -!- esowiki has joined.
05:09:39 -!- esowiki has joined.
05:10:29 -!- esowiki has joined.
05:11:19 -!- esowiki has joined.
05:12:14 -!- esowiki has joined.
05:13:02 -!- esowiki has joined.
05:13:53 -!- esowiki has joined.
05:14:24 -!- esowiki has joined.
05:15:11 -!- esowiki has joined.
05:16:07 -!- esowiki has joined.
05:16:38 -!- esowiki has joined.
05:17:19 -!- esowiki has joined.
05:18:07 -!- esowiki has joined.
05:18:55 -!- esowiki has joined.
05:19:44 -!- esowiki has joined.
05:20:36 -!- esowiki has joined.
05:21:19 -!- esowiki has joined.
05:22:09 -!- esowiki has joined.
05:22:59 -!- esowiki has joined.
05:23:49 -!- esowiki has joined.
05:24:26 -!- esowiki has joined.
05:25:19 -!- esowiki has joined.
05:26:14 -!- esowiki has joined.
05:27:02 -!- esowiki has joined.
05:27:43 -!- esowiki has joined.
05:28:41 -!- esowiki has joined.
05:29:38 -!- esowiki has joined.
05:30:17 -!- esowiki has joined.
05:30:54 -!- esowiki has joined.
05:31:35 -!- esowiki has joined.
05:32:34 -!- esowiki has joined.
05:33:07 -!- esowiki has joined.
05:33:59 -!- esowiki has joined.
05:34:45 -!- esowiki has joined.
05:35:32 -!- esowiki has joined.
05:36:06 -!- esowiki has joined.
05:36:37 -!- esowiki has joined.
05:37:18 -!- esowiki has joined.
05:38:20 -!- esowiki has joined.
05:38:58 -!- esowiki has joined.
05:39:50 -!- esowiki has joined.
05:40:38 -!- esowiki has joined.
05:41:26 -!- esowiki has joined.
05:42:09 -!- esowiki has joined.
05:42:59 -!- esowiki has joined.
05:43:56 -!- esowiki has joined.
05:44:38 -!- esowiki has joined.
05:45:35 -!- esowiki has joined.
05:46:31 -!- esowiki has joined.
05:47:26 -!- esowiki has joined.
05:48:29 -!- esowiki has joined.
05:49:01 -!- esowiki has joined.
05:49:32 -!- esowiki has joined.
05:50:14 -!- esowiki has joined.
05:51:02 -!- esowiki has joined.
05:51:37 -!- esowiki has joined.
05:52:09 -!- esowiki has joined.
05:53:09 -!- esowiki has joined.
05:53:55 -!- esowiki has joined.
05:54:41 -!- esowiki has joined.
05:55:27 -!- esowiki has joined.
05:56:16 -!- esowiki has joined.
05:56:51 -!- esowiki has joined.
05:57:27 -!- esowiki has joined.
05:58:19 -!- esowiki has joined.
05:58:50 -!- esowiki has joined.
05:59:26 -!- esowiki has joined.
06:00:02 -!- esowiki has joined.
06:00:50 -!- esowiki has joined.
06:01:35 -!- esowiki has joined.
06:02:16 -!- esowiki has joined.
06:02:49 -!- esowiki has joined.
06:03:24 -!- esowiki has joined.
06:04:14 -!- esowiki has joined.
06:05:02 -!- esowiki has joined.
06:05:43 -!- esowiki has joined.
06:06:31 -!- esowiki has joined.
06:07:20 -!- esowiki has joined.
06:07:59 -!- esowiki has joined.
06:08:52 -!- esowiki has joined.
06:09:38 -!- esowiki has joined.
06:10:17 -!- esowiki has joined.
06:10:49 -!- esowiki has joined.
06:11:44 -!- esowiki has joined.
06:12:34 -!- esowiki has joined.
06:13:30 -!- esowiki has joined.
06:14:03 -!- esowiki has joined.
06:14:55 -!- esowiki has joined.
06:15:43 -!- esowiki has joined.
06:16:34 -!- esowiki has joined.
06:17:36 -!- esowiki has joined.
06:18:07 -!- esowiki has joined.
06:18:55 -!- esowiki has joined.
06:19:36 -!- esowiki has joined.
06:20:22 -!- esowiki has joined.
06:20:59 -!- esowiki has joined.
06:21:31 -!- esowiki has joined.
06:22:05 -!- esowiki has joined.
06:22:36 -!- esowiki has joined.
06:23:35 -!- esowiki has joined.
06:24:09 -!- esowiki has joined.
06:25:03 -!- esowiki has joined.
06:25:36 -!- esowiki has joined.
06:26:20 -!- esowiki has joined.
06:27:09 -!- esowiki has joined.
06:28:02 -!- esowiki has joined.
06:28:54 -!- esowiki has joined.
06:29:27 -!- esowiki has joined.
06:30:05 -!- esowiki has joined.
06:31:02 -!- esowiki has joined.
06:31:51 -!- esowiki has joined.
06:32:26 -!- esowiki has joined.
06:33:02 -!- esowiki has joined.
06:33:50 -!- esowiki has joined.
06:34:31 -!- esowiki has joined.
06:35:19 -!- esowiki has joined.
06:35:56 -!- esowiki has joined.
06:36:35 -!- esowiki has joined.
06:37:23 -!- esowiki has joined.
06:37:59 -!- esowiki has joined.
06:38:47 -!- esowiki has joined.
06:39:43 -!- esowiki has joined.
06:40:46 -!- esowiki has joined.
06:41:22 -!- esowiki has joined.
06:42:24 -!- esowiki has joined.
06:42:59 -!- esowiki has joined.
06:43:45 -!- esowiki has joined.
06:44:37 -!- esowiki has joined.
06:45:10 -!- esowiki has joined.
06:46:01 -!- esowiki has joined.
06:46:43 -!- esowiki has joined.
06:47:39 -!- esowiki has joined.
06:48:17 -!- esowiki has joined.
06:48:56 -!- esowiki has joined.
06:49:56 -!- esowiki has joined.
06:50:40 -!- esowiki has joined.
06:51:41 -!- esowiki has joined.
06:52:16 -!- esowiki has joined.
06:53:05 -!- esowiki has joined.
06:53:43 -!- esowiki has joined.
06:54:38 -!- esowiki has joined.
06:55:29 -!- esowiki has joined.
06:56:05 -!- esowiki has joined.
06:56:44 -!- esowiki has joined.
06:57:23 -!- esowiki has joined.
06:58:22 -!- esowiki has joined.
06:59:05 -!- esowiki has joined.
06:59:51 -!- esowiki has joined.
07:00:50 -!- esowiki has joined.
07:01:21 -!- esowiki has joined.
07:02:09 -!- esowiki has joined.
07:02:55 -!- esowiki has joined.
07:03:41 -!- esowiki has joined.
07:04:37 -!- esowiki has joined.
07:05:13 -!- esowiki has joined.
07:05:45 -!- esowiki has joined.
07:06:31 -!- esowiki has joined.
07:07:19 -!- esowiki has joined.
07:07:57 -!- esowiki has joined.
07:08:30 -!- esowiki has joined.
07:09:03 -!- esowiki has joined.
07:09:49 -!- esowiki has joined.
07:10:39 -!- esowiki has joined.
07:11:10 -!- esowiki has joined.
07:11:44 -!- esowiki has joined.
07:12:30 -!- esowiki has joined.
07:13:19 -!- esowiki has joined.
07:14:14 -!- esowiki has joined.
07:15:04 -!- esowiki has joined.
07:15:39 -!- esowiki has joined.
07:16:14 -!- esowiki has joined.
07:16:53 -!- esowiki has joined.
07:17:29 -!- esowiki has joined.
07:18:15 -!- esowiki has joined.
07:19:16 -!- esowiki has joined.
07:20:04 -!- esowiki has joined.
07:20:38 -!- esowiki has joined.
07:21:26 -!- esowiki has joined.
07:22:01 -!- esowiki has joined.
07:22:55 -!- esowiki has joined.
07:23:53 -!- esowiki has joined.
07:24:25 -!- esowiki has joined.
07:24:57 -!- esowiki has joined.
07:25:52 -!- esowiki has joined.
07:26:41 -!- esowiki has joined.
07:27:27 -!- esowiki has joined.
07:28:07 -!- esowiki has joined.
07:28:55 -!- esowiki has joined.
07:29:39 -!- esowiki has joined.
07:30:29 -!- esowiki has joined.
07:31:19 -!- esowiki has joined.
07:32:09 -!- esowiki has joined.
07:32:52 -!- esowiki has joined.
07:33:23 -!- esowiki has joined.
07:34:04 -!- esowiki has joined.
07:35:05 -!- esowiki has joined.
07:35:37 -!- esowiki has joined.
07:36:39 -!- esowiki has joined.
07:37:25 -!- esowiki has joined.
07:37:58 -!- esowiki has joined.
07:38:49 -!- esowiki has joined.
07:39:39 -!- esowiki has joined.
07:40:23 -!- esowiki has joined.
07:41:19 -!- esowiki has joined.
07:42:08 -!- esowiki has joined.
07:42:47 -!- esowiki has joined.
07:43:33 -!- esowiki has joined.
07:44:07 -!- esowiki has joined.
07:44:50 -!- esowiki has joined.
07:45:29 -!- esowiki has joined.
07:46:14 -!- esowiki has joined.
07:47:00 -!- esowiki has joined.
07:47:34 -!- esowiki has joined.
07:48:09 -!- esowiki has joined.
07:48:55 -!- esowiki has joined.
07:49:41 -!- esowiki has joined.
07:50:29 -!- esowiki has joined.
07:51:10 -!- esowiki has joined.
07:51:43 -!- esowiki has joined.
07:52:38 -!- esowiki has joined.
07:53:26 -!- esowiki has joined.
07:54:35 -!- esowiki has joined.
07:55:16 -!- esowiki has joined.
07:55:51 -!- esowiki has joined.
07:56:32 -!- esowiki has joined.
07:57:11 -!- esowiki has joined.
07:58:06 -!- esowiki has joined.
07:59:02 -!- esowiki has joined.
07:59:40 -!- esowiki has joined.
08:00:13 -!- esowiki has joined.
08:00:57 -!- esowiki has joined.
08:01:37 -!- esowiki has joined.
08:02:16 -!- esowiki has joined.
08:02:51 -!- esowiki has joined.
08:03:26 -!- esowiki has joined.
08:04:15 -!- esowiki has joined.
08:05:05 -!- esowiki has joined.
08:05:56 -!- esowiki has joined.
08:06:27 -!- esowiki has joined.
08:06:58 -!- esowiki has joined.
08:07:29 -!- esowiki has joined.
08:08:28 -!- esowiki has joined.
08:09:16 -!- esowiki has joined.
08:09:51 -!- esowiki has joined.
08:10:26 -!- esowiki has joined.
08:11:10 -!- esowiki has joined.
08:11:50 -!- esowiki has joined.
08:12:34 -!- esowiki has joined.
08:13:10 -!- esowiki has joined.
08:14:05 -!- esowiki has joined.
08:15:05 -!- esowiki has joined.
08:15:50 -!- esowiki has joined.
08:16:46 -!- esowiki has joined.
08:17:20 -!- esowiki has joined.
08:18:08 -!- esowiki has joined.
08:19:02 -!- esowiki has joined.
08:19:33 -!- esowiki has joined.
08:20:30 -!- esowiki has joined.
08:21:26 -!- esowiki has joined.
08:22:13 -!- esowiki has joined.
08:22:46 -!- esowiki has joined.
08:23:30 -!- esowiki has joined.
08:24:01 -!- esowiki has joined.
08:24:43 -!- esowiki has joined.
08:25:16 -!- esowiki has joined.
08:25:49 -!- esowiki has joined.
08:26:22 -!- esowiki has joined.
08:27:05 -!- esowiki has joined.
08:27:44 -!- esowiki has joined.
08:28:26 -!- esowiki has joined.
08:29:22 -!- esowiki has joined.
08:30:16 -!- esowiki has joined.
08:31:15 -!- esowiki has joined.
08:32:10 -!- esowiki has joined.
08:32:58 -!- esowiki has joined.
08:33:45 -!- esowiki has joined.
08:34:17 -!- esowiki has joined.
08:34:52 -!- esowiki has joined.
08:35:25 -!- esowiki has joined.
08:36:11 -!- esowiki has joined.
08:36:50 -!- esowiki has joined.
08:37:35 -!- esowiki has joined.
08:38:28 -!- esowiki has joined.
08:39:01 -!- esowiki has joined.
08:39:34 -!- esowiki has joined.
08:40:06 -!- esowiki has joined.
08:40:46 -!- esowiki has joined.
08:41:30 -!- esowiki has joined.
08:42:12 -!- esowiki has joined.
08:42:54 -!- esowiki has joined.
08:43:26 -!- esowiki has joined.
08:44:16 -!- esowiki has joined.
08:44:51 -!- esowiki has joined.
08:45:42 -!- esowiki has joined.
08:46:38 -!- esowiki has joined.
08:47:34 -!- esowiki has joined.
08:48:30 -!- esowiki has joined.
08:49:06 -!- esowiki has joined.
08:49:50 -!- esowiki has joined.
08:50:38 -!- esowiki has joined.
08:51:25 -!- esowiki has joined.
08:52:14 -!- esowiki has joined.
08:53:08 -!- esowiki has joined.
08:54:01 -!- esowiki has joined.
08:54:58 -!- esowiki has joined.
08:55:31 -!- esowiki has joined.
08:56:04 -!- esowiki has joined.
08:56:35 -!- esowiki has joined.
08:57:05 -!- esowiki has joined.
08:57:45 -!- esowiki has joined.
08:58:18 -!- esowiki has joined.
08:59:14 -!- esowiki has joined.
08:59:51 -!- esowiki has joined.
09:00:32 -!- esowiki has joined.
09:01:32 -!- esowiki has joined.
09:02:30 -!- esowiki has joined.
09:03:18 -!- esowiki has joined.
09:04:09 -!- esowiki has joined.
09:05:05 -!- esowiki has joined.
09:05:46 -!- esowiki has joined.
09:06:42 -!- esowiki has joined.
09:07:38 -!- esowiki has joined.
09:08:38 -!- esowiki has joined.
09:09:09 -!- esowiki has joined.
09:10:01 -!- esowiki has joined.
09:10:32 -!- esowiki has joined.
09:11:13 -!- esowiki has joined.
09:11:44 -!- esowiki has joined.
09:12:17 -!- esowiki has joined.
09:12:50 -!- esowiki has joined.
09:13:25 -!- esowiki has joined.
09:14:15 -!- esowiki has joined.
09:15:02 -!- esowiki has joined.
09:15:35 -!- esowiki has joined.
09:16:14 -!- esowiki has joined.
09:16:56 -!- esowiki has joined.
09:17:31 -!- esowiki has joined.
09:18:22 -!- esowiki has joined.
09:19:18 -!- esowiki has joined.
09:20:14 -!- esowiki has joined.
09:21:10 -!- esowiki has joined.
09:21:44 -!- esowiki has joined.
09:22:28 -!- esowiki has joined.
09:23:21 -!- esowiki has joined.
09:23:53 -!- esowiki has joined.
09:24:40 -!- esowiki has joined.
09:25:30 -!- esowiki has joined.
09:26:12 -!- esowiki has joined.
09:27:14 -!- esowiki has joined.
09:28:08 -!- esowiki has joined.
09:28:47 -!- esowiki has joined.
09:29:39 -!- esowiki has joined.
09:30:41 -!- esowiki has joined.
09:31:21 -!- esowiki has joined.
09:31:53 -!- esowiki has joined.
09:32:25 -!- esowiki has joined.
09:33:16 -!- esowiki has joined.
09:34:01 -!- esowiki has joined.
09:34:44 -!- esowiki has joined.
09:35:23 -!- esowiki has joined.
09:36:11 -!- esowiki has joined.
09:36:46 -!- esowiki has joined.
09:37:56 -!- esowiki has joined.
09:38:39 -!- esowiki has joined.
09:39:27 -!- esowiki has joined.
09:40:08 -!- esowiki has joined.
09:40:56 -!- esowiki has joined.
09:41:43 -!- esowiki has joined.
09:42:16 -!- esowiki has joined.
09:43:05 -!- esowiki has joined.
09:43:50 -!- esowiki has joined.
09:44:40 -!- esowiki has joined.
09:45:13 -!- esowiki has joined.
09:46:08 -!- esowiki has joined.
09:46:56 -!- esowiki has joined.
09:47:51 -!- esowiki has joined.
09:48:26 -!- esowiki has joined.
09:49:08 -!- esowiki has joined.
09:49:41 -!- esowiki has joined.
09:50:31 -!- esowiki has joined.
09:51:04 -!- esowiki has joined.
09:51:37 -!- esowiki has joined.
09:52:10 -!- esowiki has joined.
09:53:13 -!- esowiki has joined.
09:54:06 -!- esowiki has joined.
09:54:55 -!- esowiki has joined.
09:55:28 -!- esowiki has joined.
09:56:08 -!- esowiki has joined.
09:56:57 -!- esowiki has joined.
09:57:29 -!- esowiki has joined.
09:58:25 -!- esowiki has joined.
09:59:19 -!- esowiki has joined.
10:00:18 -!- esowiki has joined.
10:00:49 -!- esowiki has joined.
10:01:45 -!- esowiki has joined.
10:02:32 -!- esowiki has joined.
10:03:20 -!- esowiki has joined.
10:04:16 -!- esowiki has joined.
10:04:47 -!- esowiki has joined.
10:05:38 -!- esowiki has joined.
10:06:11 -!- esowiki has joined.
10:07:01 -!- esowiki has joined.
10:07:32 -!- esowiki has joined.
10:08:25 -!- esowiki has joined.
10:09:15 -!- esowiki has joined.
10:09:46 -!- esowiki has joined.
10:10:19 -!- esowiki has joined.
10:10:56 -!- esowiki has joined.
10:11:44 -!- esowiki has joined.
10:12:23 -!- esowiki has joined.
10:13:04 -!- esowiki has joined.
10:13:37 -!- esowiki has joined.
10:14:22 -!- esowiki has joined.
10:15:18 -!- esowiki has joined.
10:16:09 -!- esowiki has joined.
10:16:40 -!- esowiki has joined.
10:17:35 -!- esowiki has joined.
10:18:08 -!- esowiki has joined.
10:19:02 -!- esowiki has joined.
10:19:58 -!- esowiki has joined.
10:21:03 -!- esowiki has joined.
10:22:01 -!- esowiki has joined.
10:22:33 -!- esowiki has joined.
10:23:26 -!- esowiki has joined.
10:24:15 -!- esowiki has joined.
10:25:05 -!- esowiki has joined.
10:25:51 -!- esowiki has joined.
10:26:39 -!- esowiki has joined.
10:27:20 -!- esowiki has joined.
10:28:00 -!- esowiki has joined.
10:28:45 -!- esowiki has joined.
10:29:18 -!- esowiki has joined.
10:29:56 -!- esowiki has joined.
10:30:35 -!- esowiki has joined.
10:31:10 -!- esowiki has joined.
10:32:06 -!- esowiki has joined.
10:32:41 -!- esowiki has joined.
10:33:50 -!- esowiki has joined.
10:34:45 -!- esowiki has joined.
10:35:30 -!- esowiki has joined.
10:36:25 -!- esowiki has joined.
10:36:57 -!- esowiki has joined.
10:37:44 -!- esowiki has joined.
10:38:23 -!- esowiki has joined.
10:39:24 -!- esowiki has joined.
10:39:55 -!- esowiki has joined.
10:40:30 -!- esowiki has joined.
10:41:20 -!- esowiki has joined.
10:42:06 -!- esowiki has joined.
10:42:41 -!- esowiki has joined.
10:43:21 -!- esowiki has joined.
10:44:07 -!- esowiki has joined.
10:45:05 -!- esowiki has joined.
10:45:36 -!- esowiki has joined.
10:46:21 -!- esowiki has joined.
10:47:05 -!- esowiki has joined.
10:48:00 -!- esowiki has joined.
10:48:49 -!- esowiki has joined.
10:49:22 -!- esowiki has joined.
10:50:15 -!- esowiki has joined.
10:50:46 -!- esowiki has joined.
10:51:23 -!- esowiki has joined.
10:52:02 -!- esowiki has joined.
10:53:00 -!- esowiki has joined.
10:53:50 -!- esowiki has joined.
10:54:40 -!- esowiki has joined.
10:55:14 -!- esowiki has joined.
10:56:00 -!- esowiki has joined.
10:56:50 -!- esowiki has joined.
10:57:46 -!- esowiki has joined.
10:58:41 -!- esowiki has joined.
10:59:50 -!- esowiki has joined.
11:00:35 -!- esowiki has joined.
11:01:20 -!- esowiki has joined.
11:02:18 -!- esowiki has joined.
11:03:05 -!- esowiki has joined.
11:03:44 -!- esowiki has joined.
11:04:22 -!- esowiki has joined.
11:05:02 -!- esowiki has joined.
11:05:41 -!- esowiki has joined.
11:06:32 -!- esowiki has joined.
11:07:10 -!- esowiki has joined.
11:08:00 -!- esowiki has joined.
11:08:51 -!- esowiki has joined.
11:09:22 -!- esowiki has joined.
11:10:06 -!- esowiki has joined.
11:10:55 -!- esowiki has joined.
11:11:51 -!- esowiki has joined.
11:12:26 -!- esowiki has joined.
11:13:00 -!- esowiki has joined.
11:13:50 -!- esowiki has joined.
11:14:46 -!- esowiki has joined.
11:15:21 -!- esowiki has joined.
11:16:15 -!- esowiki has joined.
11:16:46 -!- esowiki has joined.
11:17:35 -!- esowiki has joined.
11:18:25 -!- esowiki has joined.
11:19:21 -!- esowiki has joined.
11:19:54 -!- esowiki has joined.
11:20:39 -!- esowiki has joined.
11:21:20 -!- esowiki has joined.
11:22:17 -!- esowiki has joined.
11:22:49 -!- esowiki has joined.
11:23:36 -!- esowiki has joined.
11:24:22 -!- esowiki has joined.
11:25:07 -!- esowiki has joined.
11:25:57 -!- esowiki has joined.
11:26:30 -!- esowiki has joined.
11:27:27 -!- esowiki has joined.
11:28:09 -!- esowiki has joined.
11:29:10 -!- esowiki has joined.
11:29:58 -!- esowiki has joined.
11:30:49 -!- esowiki has joined.
11:31:21 -!- esowiki has joined.
11:32:15 -!- esowiki has joined.
11:32:47 -!- esowiki has joined.
11:33:18 -!- esowiki has joined.
11:33:51 -!- esowiki has joined.
11:34:39 -!- esowiki has joined.
11:35:11 -!- esowiki has joined.
11:35:46 -!- esowiki has joined.
11:36:32 -!- esowiki has joined.
11:37:26 -!- esowiki has joined.
11:38:22 -!- esowiki has joined.
11:39:10 -!- esowiki has joined.
11:39:51 -!- esowiki has joined.
11:40:39 -!- esowiki has joined.
11:41:26 -!- esowiki has joined.
11:42:00 -!- esowiki has joined.
11:42:46 -!- esowiki has joined.
11:43:38 -!- esowiki has joined.
11:44:40 -!- esowiki has joined.
11:45:30 -!- esowiki has joined.
11:46:20 -!- esowiki has joined.
11:47:03 -!- esowiki has joined.
11:47:51 -!- esowiki has joined.
11:48:39 -!- esowiki has joined.
11:49:27 -!- esowiki has joined.
11:50:21 -!- esowiki has joined.
11:51:03 -!- esowiki has joined.
11:51:37 -!- esowiki has joined.
11:52:21 -!- esowiki has joined.
11:53:00 -!- esowiki has joined.
11:53:50 -!- esowiki has joined.
11:54:40 -!- esowiki has joined.
11:55:25 -!- esowiki has joined.
11:56:11 -!- esowiki has joined.
11:57:01 -!- esowiki has joined.
11:57:34 -!- esowiki has joined.
11:58:25 -!- esowiki has joined.
11:58:59 -!- esowiki has joined.
11:59:38 -!- esowiki has joined.
12:00:24 -!- esowiki has joined.
12:00:55 -!- esowiki has joined.
12:01:58 -!- esowiki has joined.
12:02:36 -!- esowiki has joined.
12:03:34 -!- esowiki has joined.
12:04:25 -!- esowiki has joined.
12:05:31 -!- esowiki has joined.
12:06:12 -!- esowiki has joined.
12:06:43 -!- esowiki has joined.
12:07:37 -!- esowiki has joined.
12:08:16 -!- esowiki has joined.
12:09:03 -!- esowiki has joined.
12:09:51 -!- esowiki has joined.
12:10:51 -!- esowiki has joined.
12:11:45 -!- esowiki has joined.
12:12:35 -!- esowiki has joined.
12:13:26 -!- esowiki has joined.
12:14:12 -!- esowiki has joined.
12:14:45 -!- esowiki has joined.
12:15:41 -!- esowiki has joined.
12:16:15 -!- esowiki has joined.
12:17:05 -!- esowiki has joined.
12:17:51 -!- esowiki has joined.
12:18:46 -!- esowiki has joined.
12:19:17 -!- esowiki has joined.
12:20:06 -!- esowiki has joined.
12:20:50 -!- esowiki has joined.
12:21:44 -!- esowiki has joined.
12:22:41 -!- esowiki has joined.
12:23:37 -!- esowiki has joined.
12:24:33 -!- esowiki has joined.
12:25:29 -!- esowiki has joined.
12:26:05 -!- esowiki has joined.
12:26:51 -!- esowiki has joined.
12:27:27 -!- esowiki has joined.
12:28:22 -!- esowiki has joined.
12:29:09 -!- esowiki has joined.
12:29:55 -!- esowiki has joined.
12:30:32 -!- esowiki has joined.
12:31:20 -!- esowiki has joined.
12:32:13 -!- esowiki has joined.
12:33:04 -!- esowiki has joined.
12:33:35 -!- esowiki has joined.
12:34:37 -!- esowiki has joined.
12:35:31 -!- esowiki has joined.
12:36:04 -!- esowiki has joined.
12:36:41 -!- esowiki has joined.
12:37:22 -!- esowiki has joined.
12:38:24 -!- esowiki has joined.
12:39:16 -!- esowiki has joined.
12:39:51 -!- esowiki has joined.
12:40:28 -!- esowiki has joined.
12:41:13 -!- esowiki has joined.
12:42:16 -!- esowiki has joined.
12:42:57 -!- esowiki has joined.
12:43:31 -!- esowiki has joined.
12:44:09 -!- esowiki has joined.
12:45:10 -!- esowiki has joined.
12:45:43 -!- esowiki has joined.
12:46:16 -!- esowiki has joined.
12:47:05 -!- esowiki has joined.
12:47:44 -!- esowiki has joined.
12:48:41 -!- esowiki has joined.
12:49:34 -!- esowiki has joined.
12:50:15 -!- esowiki has joined.
12:51:03 -!- esowiki has joined.
12:51:46 -!- esowiki has joined.
12:52:25 -!- esowiki has joined.
12:52:57 -!- esowiki has joined.
12:53:54 -!- esowiki has joined.
12:54:39 -!- esowiki has joined.
12:55:17 -!- esowiki has joined.
12:55:48 -!- esowiki has joined.
12:56:19 -!- esowiki has joined.
12:56:50 -!- esowiki has joined.
12:57:44 -!- esowiki has joined.
12:58:33 -!- esowiki has joined.
12:59:27 -!- esowiki has joined.
13:00:15 -!- esowiki has joined.
13:00:57 -!- esowiki has joined.
13:01:41 -!- esowiki has joined.
13:02:41 -!- esowiki has joined.
13:03:34 -!- esowiki has joined.
13:04:38 -!- esowiki has joined.
13:05:32 -!- esowiki has joined.
13:06:08 -!- esowiki has joined.
13:06:56 -!- esowiki has joined.
13:07:56 -!- esowiki has joined.
13:08:50 -!- esowiki has joined.
13:09:23 -!- esowiki has joined.
13:10:16 -!- esowiki has joined.
13:11:16 -!- esowiki has joined.
13:11:59 -!- esowiki has joined.
13:12:30 -!- esowiki has joined.
13:13:22 -!- esowiki has joined.
13:14:15 -!- esowiki has joined.
13:14:46 -!- esowiki has joined.
13:15:25 -!- esowiki has joined.
13:16:18 -!- esowiki has joined.
13:17:04 -!- esowiki has joined.
13:17:45 -!- esowiki has joined.
13:18:41 -!- esowiki has joined.
13:19:13 -!- esowiki has joined.
13:20:08 -!- esowiki has joined.
13:20:56 -!- esowiki has joined.
13:21:56 -!- esowiki has joined.
13:22:35 -!- esowiki has joined.
13:23:12 -!- esowiki has joined.
13:23:58 -!- esowiki has joined.
13:24:47 -!- esowiki has joined.
13:25:26 -!- esowiki has joined.
13:26:08 -!- esowiki has joined.
13:26:56 -!- esowiki has joined.
13:27:46 -!- esowiki has joined.
13:28:25 -!- esowiki has joined.
13:29:15 -!- esowiki has joined.
13:29:59 -!- esowiki has joined.
13:30:39 -!- esowiki has joined.
13:31:37 -!- esowiki has joined.
13:32:08 -!- esowiki has joined.
13:33:00 -!- esowiki has joined.
13:33:31 -!- esowiki has joined.
13:34:19 -!- esowiki has joined.
13:35:05 -!- esowiki has joined.
13:36:06 -!- esowiki has joined.
13:36:45 -!- esowiki has joined.
13:37:35 -!- esowiki has joined.
13:38:02 -!- esowiki has joined.
13:38:03 <esowiki> Logs: http://codu.org/logs/_esoteric/ . Also available via rsync: rsync --size-only -avz rsync://codu.org/logs/_esoteric/ logs/
13:38:05 -!- esowiki has joined.
13:38:06 <esowiki> Logs: http://codu.org/logs/_esoteric/ . Also available via rsync: rsync --size-only -avz rsync://codu.org/logs/_esoteric/ logs/
13:38:20 -!- esowiki has joined.
13:38:25 -!- esowiki has joined.
13:38:25 -!- esowiki has joined.
13:38:56 -!- esowiki has joined.
13:39:01 -!- esowiki has joined.
13:39:01 -!- esowiki has joined.
13:39:44 -!- esowiki has joined.
13:39:49 -!- esowiki has joined.
13:39:49 -!- esowiki has joined.
13:40:36 -!- esowiki has joined.
13:40:41 -!- esowiki has joined.
13:40:42 -!- esowiki has joined.
13:41:20 -!- esowiki has joined.
13:41:25 -!- esowiki has joined.
13:41:25 -!- esowiki has joined.
13:42:10 -!- esowiki has joined.
13:42:14 -!- esowiki has joined.
13:42:15 -!- esowiki has joined.
13:43:05 -!- esowiki has joined.
13:43:10 -!- esowiki has joined.
13:43:11 -!- esowiki has joined.
13:43:44 -!- esowiki has joined.
13:43:49 -!- esowiki has joined.
13:43:49 -!- esowiki has joined.
13:44:17 -!- esowiki has joined.
13:44:22 -!- esowiki has joined.
13:44:22 -!- esowiki has joined.
13:45:13 -!- esowiki has joined.
13:45:18 -!- esowiki has joined.
13:45:19 -!- esowiki has joined.
13:45:45 -!- esowiki has joined.
13:45:50 -!- esowiki has joined.
13:45:51 -!- esowiki has joined.
13:46:26 -!- esowiki has joined.
13:46:30 -!- esowiki has joined.
13:46:31 -!- esowiki has joined.
13:46:57 -!- esowiki has joined.
13:47:01 -!- esowiki has joined.
13:47:02 -!- esowiki has joined.
13:47:51 -!- esowiki has joined.
13:47:55 -!- esowiki has joined.
13:47:56 -!- esowiki has joined.
13:48:39 -!- esowiki has joined.
13:48:43 -!- esowiki has joined.
13:48:44 -!- esowiki has joined.
13:49:11 -!- esowiki has joined.
13:49:15 -!- esowiki has joined.
13:49:16 -!- esowiki has joined.
13:49:42 -!- esowiki has joined.
13:49:47 -!- esowiki has joined.
13:49:47 -!- esowiki has joined.
13:50:15 -!- esowiki has joined.
13:50:19 -!- esowiki has joined.
13:50:20 -!- esowiki has joined.
13:50:48 -!- esowiki has joined.
13:50:52 -!- esowiki has joined.
13:50:53 -!- esowiki has joined.
13:51:20 -!- esowiki has joined.
13:51:24 -!- esowiki has joined.
13:51:25 -!- esowiki has joined.
13:51:57 -!- esowiki has joined.
13:52:01 -!- esowiki has joined.
13:52:02 -!- esowiki has joined.
13:52:43 -!- esowiki has joined.
13:52:47 -!- esowiki has joined.
13:52:48 -!- esowiki has joined.
13:53:26 -!- esowiki has joined.
13:53:31 -!- esowiki has joined.
13:53:31 -!- esowiki has joined.
13:54:01 -!- esowiki has joined.
13:54:06 -!- esowiki has joined.
13:54:07 -!- esowiki has joined.
13:54:38 -!- esowiki has joined.
13:54:42 -!- esowiki has joined.
13:54:43 -!- esowiki has joined.
13:55:20 -!- esowiki has joined.
13:55:25 -!- esowiki has joined.
13:55:25 -!- esowiki has joined.
13:55:59 -!- esowiki has joined.
13:56:04 -!- esowiki has joined.
13:56:04 -!- esowiki has joined.
13:56:33 -!- esowiki has joined.
13:56:37 -!- esowiki has joined.
13:56:38 -!- esowiki has joined.
13:57:19 -!- esowiki has joined.
13:57:23 -!- esowiki has joined.
13:57:24 -!- esowiki has joined.
13:58:01 -!- esowiki has joined.
13:58:06 -!- esowiki has joined.
13:58:07 -!- esowiki has joined.
13:58:33 -!- esowiki has joined.
13:58:38 -!- esowiki has joined.
13:58:39 -!- esowiki has joined.
13:59:17 -!- esowiki has joined.
13:59:22 -!- esowiki has joined.
13:59:22 -!- esowiki has joined.
13:59:52 -!- esowiki has joined.
13:59:56 -!- esowiki has joined.
13:59:57 -!- esowiki has joined.
14:00:23 -!- esowiki has joined.
14:00:27 -!- esowiki has joined.
14:00:28 -!- esowiki has joined.
14:01:01 -!- esowiki has joined.
14:01:06 -!- esowiki has joined.
14:01:07 -!- esowiki has joined.
14:01:52 -!- esowiki has joined.
14:01:57 -!- esowiki has joined.
14:01:57 -!- esowiki has joined.
14:02:25 -!- esowiki has joined.
14:02:30 -!- esowiki has joined.
14:02:30 -!- esowiki has joined.
14:03:01 -!- esowiki has joined.
14:03:06 -!- esowiki has joined.
14:03:06 -!- esowiki has joined.
14:03:53 -!- esowiki has joined.
14:03:58 -!- esowiki has joined.
14:03:59 -!- esowiki has joined.
14:04:32 -!- esowiki has joined.
14:04:37 -!- esowiki has joined.
14:04:37 -!- esowiki has joined.
14:05:20 -!- esowiki has joined.
14:05:25 -!- esowiki has joined.
14:05:25 -!- esowiki has joined.
14:06:17 -!- esowiki has joined.
14:06:22 -!- esowiki has joined.
14:06:22 -!- esowiki has joined.
14:07:03 -!- esowiki has joined.
14:07:08 -!- esowiki has joined.
14:07:09 -!- esowiki has joined.
14:07:55 -!- esowiki has joined.
14:08:00 -!- esowiki has joined.
14:08:00 -!- esowiki has joined.
14:08:28 -!- esowiki has joined.
14:08:33 -!- esowiki has joined.
14:08:33 -!- esowiki has joined.
14:09:05 -!- esowiki has joined.
14:09:10 -!- esowiki has joined.
14:09:10 -!- esowiki has joined.
14:10:01 -!- esowiki has joined.
14:10:06 -!- esowiki has joined.
14:10:06 -!- esowiki has joined.
14:10:59 -!- esowiki has joined.
14:11:04 -!- esowiki has joined.
14:11:05 -!- esowiki has joined.
14:11:32 -!- esowiki has joined.
14:11:37 -!- esowiki has joined.
14:11:38 -!- esowiki has joined.
14:12:16 -!- esowiki has joined.
14:12:20 -!- esowiki has joined.
14:12:21 -!- esowiki has joined.
14:13:02 -!- esowiki has joined.
14:13:07 -!- esowiki has joined.
14:13:07 -!- esowiki has joined.
14:13:44 -!- esowiki has joined.
14:13:49 -!- esowiki has joined.
14:13:50 -!- esowiki has joined.
14:14:31 -!- esowiki has joined.
14:14:36 -!- esowiki has joined.
14:14:36 -!- esowiki has joined.
14:15:05 -!- esowiki has joined.
14:15:09 -!- esowiki has joined.
14:15:10 -!- esowiki has joined.
14:15:55 -!- esowiki has joined.
14:16:00 -!- esowiki has joined.
14:16:00 -!- esowiki has joined.
14:16:55 -!- esowiki has joined.
14:16:59 -!- esowiki has joined.
14:17:00 -!- esowiki has joined.
14:17:49 -!- esowiki has joined.
14:17:54 -!- esowiki has joined.
14:17:54 -!- esowiki has joined.
14:18:22 -!- esowiki has joined.
14:18:27 -!- esowiki has joined.
14:18:27 -!- esowiki has joined.
14:18:56 -!- esowiki has joined.
14:19:01 -!- esowiki has joined.
14:19:01 -!- esowiki has joined.
14:19:44 -!- esowiki has joined.
14:19:49 -!- esowiki has joined.
14:19:49 -!- esowiki has joined.
14:20:39 -!- esowiki has joined.
14:20:43 -!- esowiki has joined.
14:20:44 -!- esowiki has joined.
14:21:27 -!- esowiki has joined.
14:21:31 -!- esowiki has joined.
14:21:32 -!- esowiki has joined.
14:22:15 -!- esowiki has joined.
14:22:19 -!- esowiki has joined.
14:22:20 -!- esowiki has joined.
14:23:03 -!- esowiki has joined.
14:23:07 -!- esowiki has joined.
14:23:08 -!- esowiki has joined.
14:23:52 -!- esowiki has joined.
14:23:57 -!- esowiki has joined.
14:23:57 -!- esowiki has joined.
14:24:32 -!- esowiki has joined.
14:24:37 -!- esowiki has joined.
14:24:37 -!- esowiki has joined.
14:25:20 -!- esowiki has joined.
14:25:25 -!- esowiki has joined.
14:25:25 -!- esowiki has joined.
14:26:17 -!- esowiki has joined.
14:26:22 -!- esowiki has joined.
14:26:23 -!- esowiki has joined.
14:26:50 -!- esowiki has joined.
14:26:55 -!- esowiki has joined.
14:26:55 -!- esowiki has joined.
14:27:30 -!- esowiki has joined.
14:27:34 -!- esowiki has joined.
14:27:35 -!- esowiki has joined.
14:28:27 -!- esowiki has joined.
14:28:32 -!- esowiki has joined.
14:28:32 -!- esowiki has joined.
14:29:03 -!- esowiki has joined.
14:29:07 -!- esowiki has joined.
14:29:08 -!- esowiki has joined.
14:29:47 -!- esowiki has joined.
14:29:52 -!- esowiki has joined.
14:29:52 -!- esowiki has joined.
14:30:26 -!- esowiki has joined.
14:30:31 -!- esowiki has joined.
14:30:31 -!- esowiki has joined.
14:31:20 -!- esowiki has joined.
14:31:25 -!- esowiki has joined.
14:31:25 -!- esowiki has joined.
14:32:10 -!- esowiki has joined.
14:32:15 -!- esowiki has joined.
14:32:15 -!- esowiki has joined.
14:32:53 -!- esowiki has joined.
14:32:58 -!- esowiki has joined.
14:32:58 -!- esowiki has joined.
14:33:49 -!- esowiki has joined.
14:33:54 -!- esowiki has joined.
14:33:54 -!- esowiki has joined.
14:34:40 -!- esowiki has joined.
14:34:45 -!- esowiki has joined.
14:34:45 -!- esowiki has joined.
14:35:25 -!- esowiki has joined.
14:35:30 -!- esowiki has joined.
14:35:30 -!- esowiki has joined.
14:36:25 -!- esowiki has joined.
14:36:30 -!- esowiki has joined.
14:36:31 -!- esowiki has joined.
14:37:04 -!- esowiki has joined.
14:37:09 -!- esowiki has joined.
14:37:09 -!- esowiki has joined.
14:37:35 -!- esowiki has joined.
14:37:40 -!- esowiki has joined.
14:37:40 -!- esowiki has joined.
14:38:14 -!- esowiki has joined.
14:38:19 -!- esowiki has joined.
14:38:19 -!- esowiki has joined.
14:38:57 -!- esowiki has joined.
14:39:02 -!- esowiki has joined.
14:39:02 -!- esowiki has joined.
14:39:53 -!- esowiki has joined.
14:39:58 -!- esowiki has joined.
14:39:58 -!- esowiki has joined.
14:40:50 -!- esowiki has joined.
14:40:55 -!- esowiki has joined.
14:40:56 -!- esowiki has joined.
14:41:29 -!- esowiki has joined.
14:41:34 -!- esowiki has joined.
14:41:34 -!- esowiki has joined.
14:42:10 -!- esowiki has joined.
14:42:15 -!- esowiki has joined.
14:42:15 -!- esowiki has joined.
14:42:49 -!- esowiki has joined.
14:42:54 -!- esowiki has joined.
14:42:55 -!- esowiki has joined.
14:43:37 -!- esowiki has joined.
14:43:41 -!- esowiki has joined.
14:43:42 -!- esowiki has joined.
14:44:25 -!- esowiki has joined.
14:44:30 -!- esowiki has joined.
14:44:31 -!- esowiki has joined.
14:45:05 -!- esowiki has joined.
14:45:10 -!- esowiki has joined.
14:45:10 -!- esowiki has joined.
14:45:55 -!- esowiki has joined.
14:46:00 -!- esowiki has joined.
14:46:00 -!- esowiki has joined.
14:46:45 -!- esowiki has joined.
14:46:49 -!- esowiki has joined.
14:46:50 -!- esowiki has joined.
14:47:27 -!- esowiki has joined.
14:47:31 -!- esowiki has joined.
14:47:32 -!- esowiki has joined.
14:48:16 -!- esowiki has joined.
14:48:21 -!- esowiki has joined.
14:48:22 -!- esowiki has joined.
14:48:51 -!- esowiki has joined.
14:48:56 -!- esowiki has joined.
14:48:57 -!- esowiki has joined.
14:49:26 -!- esowiki has joined.
14:49:31 -!- esowiki has joined.
14:49:32 -!- esowiki has joined.
14:50:35 -!- esowiki has joined.
14:50:40 -!- esowiki has joined.
14:50:40 -!- esowiki has joined.
14:51:22 -!- esowiki has joined.
14:51:26 -!- esowiki has joined.
14:51:27 -!- esowiki has joined.
14:52:08 -!- esowiki has joined.
14:52:13 -!- esowiki has joined.
14:52:13 -!- esowiki has joined.
14:52:56 -!- esowiki has joined.
14:53:01 -!- esowiki has joined.
14:53:01 -!- esowiki has joined.
14:53:34 -!- esowiki has joined.
14:53:39 -!- esowiki has joined.
14:53:39 -!- esowiki has joined.
14:54:07 -!- esowiki has joined.
14:54:12 -!- esowiki has joined.
14:54:12 -!- esowiki has joined.
14:55:08 -!- esowiki has joined.
14:55:13 -!- esowiki has joined.
14:55:13 -!- esowiki has joined.
14:55:51 -!- esowiki has joined.
14:55:56 -!- esowiki has joined.
14:55:57 -!- esowiki has joined.
14:56:26 -!- esowiki has joined.
14:56:31 -!- esowiki has joined.
14:56:32 -!- esowiki has joined.
14:57:13 -!- esowiki has joined.
14:57:18 -!- esowiki has joined.
14:57:18 -!- esowiki has joined.
14:57:44 -!- esowiki has joined.
14:57:49 -!- esowiki has joined.
14:57:49 -!- esowiki has joined.
14:58:15 -!- esowiki has joined.
14:58:20 -!- esowiki has joined.
14:58:20 -!- esowiki has joined.
14:58:51 -!- esowiki has joined.
14:58:56 -!- esowiki has joined.
14:58:56 -!- esowiki has joined.
14:59:48 -!- esowiki has joined.
14:59:53 -!- esowiki has joined.
14:59:53 -!- esowiki has joined.
15:00:19 -!- esowiki has joined.
15:00:24 -!- esowiki has joined.
15:00:24 -!- esowiki has joined.
15:00:50 -!- esowiki has joined.
15:00:54 -!- esowiki has joined.
15:00:55 -!- esowiki has joined.
15:01:41 -!- esowiki has joined.
15:01:46 -!- esowiki has joined.
15:01:47 -!- esowiki has joined.
15:02:16 -!- esowiki has joined.
15:02:21 -!- esowiki has joined.
15:02:22 -!- esowiki has joined.
15:03:13 -!- esowiki has joined.
15:03:17 -!- esowiki has joined.
15:03:18 -!- esowiki has joined.
15:04:09 -!- esowiki has joined.
15:04:13 -!- esowiki has joined.
15:04:14 -!- esowiki has joined.
15:05:08 -!- esowiki has joined.
15:05:13 -!- esowiki has joined.
15:05:13 -!- esowiki has joined.
15:06:10 -!- esowiki has joined.
15:06:15 -!- esowiki has joined.
15:06:15 -!- esowiki has joined.
15:06:42 -!- esowiki has joined.
15:06:47 -!- esowiki has joined.
15:06:47 -!- esowiki has joined.
15:07:31 -!- esowiki has joined.
15:07:36 -!- esowiki has joined.
15:07:37 -!- esowiki has joined.
15:08:06 -!- esowiki has joined.
15:08:11 -!- esowiki has joined.
15:08:12 -!- esowiki has joined.
15:08:41 -!- esowiki has joined.
15:08:46 -!- esowiki has joined.
15:08:47 -!- esowiki has joined.
15:09:16 -!- esowiki has joined.
15:09:21 -!- esowiki has joined.
15:09:22 -!- esowiki has joined.
15:09:51 -!- esowiki has joined.
15:09:56 -!- esowiki has joined.
15:09:56 -!- esowiki has joined.
15:10:39 -!- esowiki has joined.
15:10:43 -!- esowiki has joined.
15:10:44 -!- esowiki has joined.
15:11:10 -!- esowiki has joined.
15:11:15 -!- esowiki has joined.
15:11:15 -!- esowiki has joined.
15:11:43 -!- esowiki has joined.
15:11:48 -!- esowiki has joined.
15:11:48 -!- esowiki has joined.
15:12:33 -!- esowiki has joined.
15:12:37 -!- esowiki has joined.
15:12:38 -!- esowiki has joined.
15:13:29 -!- esowiki has joined.
15:13:33 -!- esowiki has joined.
15:13:34 -!- esowiki has joined.
15:14:31 -!- esowiki has joined.
15:14:36 -!- esowiki has joined.
15:14:37 -!- esowiki has joined.
15:15:05 -!- esowiki has joined.
15:15:10 -!- esowiki has joined.
15:15:10 -!- esowiki has joined.
15:15:55 -!- esowiki has joined.
15:16:00 -!- esowiki has joined.
15:16:00 -!- esowiki has joined.
15:16:45 -!- esowiki has joined.
15:16:49 -!- esowiki has joined.
15:16:50 -!- esowiki has joined.
15:17:26 -!- esowiki has joined.
15:17:31 -!- esowiki has joined.
15:17:32 -!- esowiki has joined.
15:18:01 -!- esowiki has joined.
15:18:06 -!- esowiki has joined.
15:18:07 -!- esowiki has joined.
15:18:52 -!- esowiki has joined.
15:18:57 -!- esowiki has joined.
15:18:57 -!- esowiki has joined.
15:19:25 -!- esowiki has joined.
15:19:30 -!- esowiki has joined.
15:19:30 -!- esowiki has joined.
15:20:05 -!- esowiki has joined.
15:20:10 -!- esowiki has joined.
15:20:10 -!- esowiki has joined.
15:20:55 -!- esowiki has joined.
15:21:00 -!- esowiki has joined.
15:21:00 -!- esowiki has joined.
15:21:31 -!- esowiki has joined.
15:21:36 -!- esowiki has joined.
15:21:37 -!- esowiki has joined.
15:22:06 -!- esowiki has joined.
15:22:11 -!- esowiki has joined.
15:22:12 -!- esowiki has joined.
15:23:00 -!- esowiki has joined.
15:23:05 -!- esowiki has joined.
15:23:05 -!- esowiki has joined.
15:23:50 -!- esowiki has joined.
15:23:55 -!- esowiki has joined.
15:23:55 -!- esowiki has joined.
15:24:36 -!- esowiki has joined.
15:24:41 -!- esowiki has joined.
15:24:41 -!- esowiki has joined.
15:25:07 -!- esowiki has joined.
15:25:12 -!- esowiki has joined.
15:25:12 -!- esowiki has joined.
15:25:51 -!- esowiki has joined.
15:25:55 -!- esowiki has joined.
15:25:56 -!- esowiki has joined.
15:26:39 -!- esowiki has joined.
15:26:43 -!- esowiki has joined.
15:26:44 -!- esowiki has joined.
15:27:38 -!- esowiki has joined.
15:27:43 -!- esowiki has joined.
15:27:43 -!- esowiki has joined.
15:28:32 -!- esowiki has joined.
15:28:37 -!- esowiki has joined.
15:28:37 -!- esowiki has joined.
15:29:19 -!- esowiki has joined.
15:29:24 -!- esowiki has joined.
15:29:24 -!- esowiki has joined.
15:29:52 -!- esowiki has joined.
15:29:57 -!- esowiki has joined.
15:29:57 -!- esowiki has joined.
15:30:25 -!- esowiki has joined.
15:30:30 -!- esowiki has joined.
15:30:30 -!- esowiki has joined.
15:31:20 -!- esowiki has joined.
15:31:25 -!- esowiki has joined.
15:31:25 -!- esowiki has joined.
15:32:11 -!- esowiki has joined.
15:32:16 -!- esowiki has joined.
15:32:16 -!- esowiki has joined.
15:32:56 -!- esowiki has joined.
15:33:01 -!- esowiki has joined.
15:33:01 -!- esowiki has joined.
15:33:50 -!- esowiki has joined.
15:33:55 -!- esowiki has joined.
15:33:55 -!- esowiki has joined.
15:34:32 -!- esowiki has joined.
15:34:37 -!- esowiki has joined.
15:34:37 -!- esowiki has joined.
15:35:27 -!- esowiki has joined.
15:35:31 -!- esowiki has joined.
15:35:32 -!- esowiki has joined.
15:36:08 -!- esowiki has joined.
15:36:13 -!- esowiki has joined.
15:36:13 -!- esowiki has joined.
15:36:56 -!- esowiki has joined.
15:37:01 -!- esowiki has joined.
15:37:01 -!- esowiki has joined.
15:37:46 -!- esowiki has joined.
15:37:50 -!- esowiki has joined.
15:37:51 -!- esowiki has joined.
15:38:18 -!- esowiki has joined.
15:38:22 -!- esowiki has joined.
15:38:23 -!- esowiki has joined.
15:38:50 -!- esowiki has joined.
15:38:54 -!- esowiki has joined.
15:38:55 -!- esowiki has joined.
15:39:46 -!- esowiki has joined.
15:39:51 -!- esowiki has joined.
15:39:51 -!- esowiki has joined.
15:40:19 -!- esowiki has joined.
15:40:24 -!- esowiki has joined.
15:40:24 -!- esowiki has joined.
15:41:18 -!- esowiki has joined.
15:41:23 -!- esowiki has joined.
15:41:23 -!- esowiki has joined.
15:41:57 -!- esowiki has joined.
15:42:01 -!- esowiki has joined.
15:42:02 -!- esowiki has joined.
15:42:53 -!- esowiki has joined.
15:42:57 -!- esowiki has joined.
15:42:58 -!- esowiki has joined.
15:43:24 -!- esowiki has joined.
15:43:29 -!- esowiki has joined.
15:43:30 -!- esowiki has joined.
15:43:57 -!- esowiki has joined.
15:44:02 -!- esowiki has joined.
15:44:03 -!- esowiki has joined.
15:44:39 -!- esowiki has joined.
15:44:44 -!- esowiki has joined.
15:44:44 -!- esowiki has joined.
15:45:25 -!- esowiki has joined.
15:45:30 -!- esowiki has joined.
15:45:30 -!- esowiki has joined.
15:46:01 -!- esowiki has joined.
15:46:06 -!- esowiki has joined.
15:46:07 -!- esowiki has joined.
15:46:34 -!- esowiki has joined.
15:46:38 -!- esowiki has joined.
15:46:39 -!- esowiki has joined.
15:47:30 -!- esowiki has joined.
15:47:35 -!- esowiki has joined.
15:47:35 -!- esowiki has joined.
15:48:32 -!- esowiki has joined.
15:48:37 -!- esowiki has joined.
15:48:37 -!- esowiki has joined.
15:48:45 -!- esowiki has joined.
15:48:45 -!- glogbot has joined.
15:48:49 -!- esowiki has joined.
15:48:50 -!- esowiki has joined.
15:48:59 -!- esowiki has joined.
15:48:59 -!- esowiki has joined.
15:49:03 -!- esowiki has joined.
15:49:03 -!- esowiki has joined.
15:49:04 -!- esowiki has joined.
15:49:04 -!- esowiki has joined.
15:49:37 -!- esowiki has joined.
15:49:37 -!- glogbot has joined.
15:49:41 -!- esowiki has joined.
15:49:42 -!- esowiki has joined.
15:49:56 <Gregor> elliott: There were two instances of the bot running ... somehow ...
15:50:01 <Gregor> Which caused complete madness.
15:50:05 <elliott> Awesome.
15:50:10 <Gregor> Meanwhilst, glogbackup is nowhere to be found ...
15:50:24 <elliott> Well, glogbot was still running :P
15:50:26 <elliott> It just wasn't logging.
15:51:02 <Gregor> No, glogbackup isn't even on #glogbot.
15:51:31 <elliott> Ah :P
15:52:03 <Gregor> For the record, glogbot has NEVER HAD A CRITICAL SYSTEM FAILURE EVER.
15:52:27 <elliott> Gregor: *For the record, glogbot has HAD A CRITICAL SYSTEM FAILURE ONCE.
15:52:50 <elliott> Gregor: How long until glogbot critical system failurse are like OpenBSD remote holes in the default install :P
15:53:33 -!- MSleep has changed nick to MDude.
15:53:38 <Gregor> X-D
16:08:12 <elliott> Gregor: BTW, did you see my amazing uncheatable karma system?
16:08:16 <elliott> `url lib/karma
16:08:18 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/lib/karma
16:08:24 -!- ais523 has joined.
16:08:29 <elliott> It works by using the immutable hg log to see how many people ran karma+ or karma- on a person :)
16:08:47 <elliott> And now I'm wondering why not just store everything in the hg log???
16:09:00 <elliott> `quote could so easily just scan for past addquote commands that haven't been delquoted.
16:09:02 <HackEgo> No output.
16:09:46 <ais523> elliott: it'd seem a bit inefficient
16:09:54 <elliott> Or, a bit: awesome?
16:10:07 <ais523> not really
16:10:24 <ais523> also, tracking quote numbers would be awkward
16:10:28 <ais523> for `delquote by number
16:12:58 -!- copumpkin has joined.
16:19:03 * ais523 reads about the expression problem
16:42:53 -!- KingOfKarlsruhe has joined.
16:53:46 -!- KittyLevina has joined.
16:54:11 -!- KittyLevina has left.
16:54:20 -!- Mithay has joined.
16:54:25 -!- Mithay has left.
16:56:07 -!- sausage2 has joined.
16:56:14 <sausage2> zup. What's esoteric?
16:57:42 <elliott> `welcome sausage2
16:57:44 <HackEgo> sausage2: 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
16:57:51 -!- Ikarus has joined.
16:57:59 <elliott> `welcome Ikarus
16:58:01 <HackEgo> Ikarus: 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
16:58:03 <elliott> Alright, where are you all coming from :P
16:58:27 <Ikarus> elliott: someone dropped the channel name in #not-math
16:58:41 <elliott> Oh dear.
16:58:51 <elliott> Who's someone?
16:59:07 <Ikarus> lament
16:59:41 <elliott> I guess oerjan was rather timely then.
16:59:58 <elliott> For someone who hates this place so much, lament sure does seem to be namedropping it everywhere.
17:00:03 <Phantom_Hoover> Ikarus, what, exactly, did he say?
17:00:57 <Ikarus> hehe
17:01:17 <Ikarus> and being here reminds me that I should break unlambda some more
17:01:36 <elliott> It can get more broken?
17:01:44 <Phantom_Hoover> Unlambda is bad, Lazy K is less bad, although elliott obviously doesn't like it because he hates everything.
17:01:54 <elliott> Unlambda is prettier.
17:02:32 <Ikarus> elliott: been working off and on on sticking unlambda in hardware
17:02:39 <elliott> Ooh, nice.
17:02:41 <Ikarus> because it is just that insane to do
17:02:44 <elliott> We need more functional CPU architectures.
17:02:56 <Phantom_Hoover> Although preferably not ones based on Unlambda.
17:03:08 <Ikarus> Phantom_Hoover: unlambda is a good practice model
17:03:28 <elliott> Phantom_Hoover: What do you have against Unlambda, exactly :P
17:04:06 <Phantom_Hoover> It's a terrible minimal language?
17:04:18 <elliott> What's terrible about it? (And who said it was meant to be minimal?)
17:04:34 <Phantom_Hoover> "Unlambda, designed by David Madore, is a minimal functional esoteric programming language[...]" — wiki
17:04:54 -!- sausage2 has left.
17:04:55 <elliott> Oh snap, the incredibly authoritative resource that is our messy wiki.
17:04:58 <Ikarus> bbiab, time to head to the batcave^Whackerspace
17:05:08 <elliott> Backerspace.
17:05:40 <elliott> Phantom_Hoover: http://www.madore.org/~david/programs/unlambda/ doesn't mention "minimal" at all, by the way.
17:06:00 <Phantom_Hoover> Does it mention gay elves (this is the only other thing I know about Madore)?
17:06:12 <elliott> Gay, *functional* elves!
17:17:59 -!- Ngevd has joined.
17:19:52 <Ngevd> Hello!
17:21:16 <Phantom_Hoover> http://www.naturfotograf.com/UV_flowers_list.html
17:21:18 <Phantom_Hoover> Coooool.
17:24:08 <Ngevd> Today's freefall is pretty good
17:24:14 <Ngevd> I say sentences of that format a lot
17:24:30 <Ngevd> "Today's [webcomic] is pretty good"
17:25:34 <elliott> EDIT: Well yes, obviously Tolkien wasn't thinking about Dungeons & Dragons when he wrote the books. It's clear that magic simply doesn't work that way in Middle-earth, and there is some good reason within the context of the story for why Gandalf can't escape from the top of Orthanc more easily. I was trying to make a humorous out-of-context observation, not criticise Tolkien. Thank you for all your correspondence on that matter. :-)
17:25:35 <elliott> poor dmm
17:26:21 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
17:26:22 <Ngevd> Today's IWC annotation is kinda annoying
17:28:27 <elliott> Yeah, jokes are annoying
17:30:38 <Ngevd> When I read the annotation for 2623 I went to bed and cried
17:31:12 <Ngevd> After making the thread on the forums for it
17:32:19 <elliott> Monopoly is serious stuff.
17:39:16 <elliott> Nov 25 13:25:10 <kallisti> terminator apparently has a lot of that.
17:39:26 <elliott> kallisti: I've used Terminator, but unfortunately Swing still sucks
17:39:51 <elliott> Oh, hmm, this is some completely different terminator with similar splitting functionality, heh
18:03:11 -!- calamari has joined.
18:09:15 <Ngevd> That Wikipedia game you were playing yesterday
18:09:20 <Ngevd> How does it work for section links?
18:09:57 <elliott> last link in first section of section (there are subsections ofc)
18:11:05 <Ngevd> And disambiguation pages?
18:12:04 <calamari> another wikipedia game?
18:31:33 -!- Ngevd has changed nick to Taneb|Dinner.
18:36:23 -!- monqy has joined.
18:36:36 -!- Taneb|Dinner has quit (Ping timeout: 252 seconds).
18:48:33 -!- Taneb has joined.
18:48:59 -!- derrik has joined.
18:49:09 <Taneb> Hello!
18:52:58 <derrik> hi
18:53:23 <Taneb> List of eponymous laws -> Eponym -> Folk etymology -> Historical linguistics -> Etymology -> Austronesian languages -> Malayo-Polynesian languages -> Phonology -> Laboratory phonology -> Mary Beckman -> ToBI -> Prosody (linguistics) -> Focus (linguistics) -> Topiccomment -> Functional grammar -> Role and reference grammar -> Thematic role -> Thematic relation -> Patient (grammar) -> Agent (grammar) -> Indo-European languages -> Indo-Europe
18:53:23 <Taneb> an languages#Suggested macrofamilies -> Signal-to-noise ratio -> Spam (electronic) -> Internet service provider -> Bandwidth -> Graph bandwidth -> Adjacency matrix -> Spectral graph theory -> Colin de Verdire graph invariant -> Schrdinger equation -> Path integral formulation -> Fractional Schrdinger equation -> Hamiltonian mechanics -> Quantum mechanics -> Quantum gravity -> Orders of magnitude (mass) -> Kilogram -> Planck constant ->
18:53:24 <Taneb> Cycle per second -> Hertz -> Sine wave -> Fourier analysis -> Inverse function -> Exponentiation -> Public-key cryptography -> GNU Privacy Guard -> Politics of Germany -> Weimar Constitution -> Basic Law for the Federal Republic of Germany -> Preamble -> List of enacting clauses -> Popular sovereignty -> Vox populi -> Interview -> Question -> Imperative mood -> Grammatical mood -> Classical Arabic -> Sacred language -> Religion -> Reification
18:53:29 <Taneb> (fallacy) -> Rhetoric -> Greek language -> English language -> Slang -> Euphemism -> Friendly fire -> Fratricide -> Siblicide -> Human -> Anthropology -> Positivism -> Auguste Comte -> Altruism -> Ethical egoism -> Individualist anarchism -> Benjamin Tucker -> Liberty (18811908) -> Pierre-Joseph Proudhon -> Loan -> Bond (finance) -> Perpetuity -> Valuation (finance) -> Lawsuit -> Civil law (common law) -> Equity (law) -> Common law -> Aus
18:53:36 <Taneb> tralia -> Pacific Islands Forum -> Northern Mariana Islands -> Capital city -> County seat -> List of boroughs and census areas in Alaska -> United States Census Bureau -> President of the United States -> Inauguration of Barack Obama -> National Mall -> Washington Monum
18:53:42 <Taneb> ent -> 2011 Virginia earthquake -> Canada -> Standard of living -> South Korea -> East Asia Summit -> Kuala Lumpur -> Petronas Towers -> Kuala Lumpur Tower -> Petronas Towers
18:56:55 <quintopia> that is quite a wikisurf
18:56:55 <quintopia> glad to syay i havemnt done that in a while
18:57:07 <Taneb> Ended lamely
18:57:11 <Taneb> But what an adventure
19:00:45 <elliott> Taneb: Wow :P
19:22:31 <Vorpal> quintopia, you had an encoding issue in your last line
19:22:38 <Vorpal> which encoding did you use?
19:22:47 <Vorpal> wait hm
19:23:11 <Vorpal> that isn't an encoding issue, you just inserted a character (0x7F) instead of backspace
19:23:17 <Vorpal> quintopia, your backspace is broken
19:44:21 <ais523> Taneb: why didn't it end up at Philosophy?
19:44:39 <Taneb> BECAUSE I USED THE LAST LINK OF THE INTRO RATHER THAN THE FIRST
19:44:50 <Vorpal> heh
19:47:55 -!- pikhq_ has quit (Read error: Operation timed out).
19:50:08 -!- pikhq has joined.
19:51:17 <elliott> http://sprunge.us/MJeU My second Perl program is rather less crap than my first one, I think :P
19:52:25 <Phantom_Hoover> Hello I am back?
19:52:35 <Taneb> Hello
19:52:49 <Taneb> I really should record a vlog
19:53:04 <Phantom_Hoover> Will you be crying about Monopoly.
19:53:17 <Taneb> No, I got over that a long time ago
19:53:26 <Taneb> The crying, that is, not Monopoly
19:53:47 -!- calamari has quit (Quit: Leaving).
19:54:06 <elliott> I once killed someone over a game of Monopoly.
19:54:15 <Taneb> By kicking them in the face
19:54:42 <elliott> Yes.
19:55:02 <elliott> Phantom_Hoover: Help I wrote two Perl programs and didn't feel disgusted with myself what does this mean?
19:55:25 <Taneb> elliott: you have enough Haskell under your belt for it to balance out
19:55:54 <Phantom_Hoover> elliott, you must play Monopoly as penance.
19:56:53 <Phantom_Hoover> Hey, Ahruman is in that Monopoly thread!
19:58:58 <elliott> Phantom_Hoover: He's EVERYWHERE.
19:59:00 <elliott> It's creepy.
19:59:06 <Phantom_Hoover> Ahruman?
20:00:20 <elliott> Phantom_Hoover: Yes. On that IWC thing. Thing thing. Thing.
20:00:30 <elliott> `quote seconds
20:00:32 <HackEgo> 42) <fizzie> Seconds. 30 of them. Did I forget the word? \ 529) <fizzie> I suck at the gravitron, I have survived something like 15 seconds in it at most.
20:00:36 <Phantom_Hoover> Upsetting.
20:00:42 <elliott> What.
20:00:44 <Phantom_Hoover> 529 sucks.
20:01:03 <elliott> Well yes but it is funny to imagine fizzie dying repeatedly at the hands of a gravity-based doomsday device.
20:01:07 <elliott> This is because he isn't here dammit.
20:01:32 <Taneb> `quote 529
20:01:34 <HackEgo> 529) <fizzie> I suck at the gravitron, I have survived something like 15 seconds in it at most.
20:01:39 <Taneb> Indeed it does
20:01:43 <monqy> `quote
20:01:46 <HackEgo> 477) <fizzie> There's that saying that the definition of insanity is doing the same thing over and over again and expecting different results. [...] <Taneb> You've just gave me a different result [...] <fizzie> It's always insane to expect different results, even when it's likely to occur.
20:02:06 <Taneb> Hey, it's me /and/ fizzie!
20:02:06 <Phantom_Hoover> What about running an RNG?
20:02:17 <monqy> insanity
20:06:05 <Phantom_Hoover> Maybe that's why people are always saying QM is insane...
20:07:46 <ais523> elliott: the gravitron is great
20:07:48 <ais523> although very difficult
20:17:38 <Taneb> Synesthesia -> Functional neuroimaging -> Social neuroscience -> Social relation -> Philosophy of social science -> Structure and agency -> Nature versus nurture -> Psychological nativism -> Behaviorism -> Behavior analysis of child development -> Radical behaviorism -> Hypothetico-deductive model -> Confirmation holism -> Dark matter -> Bullet Cluster -> MACS J0025.4-1222 -> Baryon -> Pentaquark -> Resonance (particle physics) -> Planck cons
20:17:38 <Taneb> tant and that links to my last one
20:20:51 <Phantom_Hoover> wat
20:22:05 <elliott> Phantom_Hoover has yet to try popular new phrase, " dying"
20:22:25 -!- hagb4rd has joined.
20:22:29 <Phantom_Hoover> wat dying?
20:22:37 <ais523> Phantom_Hoover: you missed the leading space
20:22:43 <ais523> it's not dying, it's dying
20:22:50 <Phantom_Hoover> No I didn't.
20:23:04 <Phantom_Hoover> I appended the new phrase directly to what I previously said.
20:23:06 <elliott> ais523: You're assuming "wat" was followed by a word-separating space.
20:23:21 <ais523> elliott: oh, hmm
20:23:28 <ais523> you mean he just ran the two words together?
20:23:31 <elliott> <Phantom_Hoover> I appended the new phrase directly to what I previously said.
20:36:52 -!- Klisz has joined.
20:43:46 -!- Madoka-Kaname has quit (Quit: Hug~♪).
20:45:42 -!- Madoka-Kaname has joined.
20:45:43 -!- Madoka-Kaname has quit (Changing host).
20:45:43 -!- Madoka-Kaname has joined.
20:50:59 -!- elliott has quit (Ping timeout: 252 seconds).
21:04:52 -!- copumpkin has joined.
21:19:23 -!- DCliche has joined.
21:23:06 -!- Klisz has quit (Ping timeout: 260 seconds).
21:40:06 <Taneb> Odds that me and elliott have seen each-other, based on the assumption we both live in Hexham: quite likely
21:40:07 <Taneb> With extra information: not likely at all
21:42:06 <Taneb> Also, I AM ABOUT TO MAKE AN ESOLANG
21:42:27 -!- derrik has left.
21:42:40 <Taneb> derrik doesn't like esolangs
21:51:52 -!- Patashu has joined.
21:53:34 <Phantom_Hoover> Taneb, did you really cry at the Monopoly thing.
21:53:52 <Taneb> Darths and Droids /and/ El Goonish Shive did upsetting comics the same day
21:54:00 <Taneb> I cried at the combination of the three
21:54:05 <Taneb> But mainly Monopoly
21:54:17 <Phantom_Hoover> So tears physically came out of your face.
21:54:24 <Taneb> Yes
21:54:32 <Phantom_Hoover> I, um,
21:54:41 <monqy> monopoly tears
21:54:47 <Phantom_Hoover> You... are a little bit weird.
21:54:55 <Taneb> I am a lot weird
21:55:12 <Phantom_Hoover> I mean actual weird, not nerdy weird.
21:55:17 <Taneb> I am the second weirdest Irregular Webcomic and Homestuck reading esoteric programmer from Hexham
21:55:31 <Taneb> Who played Lego Alpha Team
21:55:31 <Phantom_Hoover> elliott didn't read IWC until the rerun.
21:55:40 <Taneb> HE READS IT NOW
21:56:05 <Phantom_Hoover> I also don't think he played Lego Alpha Team?
21:56:13 <Taneb> I think he did
21:56:29 <Taneb> I mentioned it once and he was like "OH NO!"
21:56:39 <Taneb> "GET OUT OF MY LIFE"
21:56:49 <Taneb> `logs lego alpha team
21:56:51 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
21:57:00 <Taneb> `log lego alpha team
21:57:04 <monqy> `pastelogs lego alpha team
21:57:19 <monqy> I didn't play lego alpha team but I'm also not from hexham and don't read iwc or homestuck
21:57:26 <monqy> oops?
21:57:32 <HackEgo> 2011-11-25.txt:21:56:05: <Phantom_Hoover> I also don't think he played Lego Alpha Team?
21:57:32 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.23320
21:57:55 <Phantom_Hoover> monqy, you should probably read Homestuck?
21:58:04 <Phantom_Hoover> I guess you could also read IWC or move to Hexham, though.
21:58:16 <monqy> i;ve promised some guys in another channel i'll read homestuck
21:58:46 <Phantom_Hoover> Wait, EGS is the one notable primarily for gender swaps, right?
21:58:52 <Taneb> Yes?
21:58:59 <monqy> so i'll probably read it in a week or so because winter break is then
21:59:07 <Taneb> I read it for the squirrel girl
21:59:12 <Taneb> Who is also half-alien
22:00:21 <Phantom_Hoover> Taneb, furry xenophile asexual.
22:00:46 <monqy> from hexham
22:01:12 <Taneb> /demi/xenophile
22:02:05 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]).
22:03:53 <Taneb> But yeah, I am very weird
22:04:23 <zzo38> Now invent the game about squirrel girl who is also half-alien
22:04:27 <Phantom_Hoover> This is no longer a point in dispute.
22:04:30 <Phantom_Hoover> `quote octopus
22:04:33 <HackEgo> 231) <zzo38> Invent the game called "Sandwich - The Card Game" and "Professional Octopus of the World" (these names are just generated by randomly) \ 262) <zzo38> ais523: Maybe it is better, because I don't think the octopus will live very well in the tree. But the difference is that the Internet is lying and you cannot see such things; you could make modified picture, though, in order to lie more clearly, at least.
22:06:17 <Phantom_Hoover> Wikipedia has three pages for "Lie <prefix>algebra".
22:06:44 <Taneb> Whose website is "www.kom-posti.fi" and why is Chrome suggesting I go on it when I want to go on k related things?
22:27:34 <zzo38> In D&D game, there is really two major goals at once. One is to kill the green devil and the other is to help the Navy to deliver something to some remote town.
22:31:06 -!- DCliche has quit (Read error: Connection reset by peer).
22:31:30 -!- DCliche has joined.
22:48:24 <zzo38> Do you have a game "Sokoban on Drugs"?
22:48:31 <monqy> no
22:48:38 <zzo38> I don't have, either.
22:48:45 <Taneb> I do not also
22:48:47 <Phantom_Hoover> I do.
22:49:21 <Phantom_Hoover> It's pretty fun, although the non-Euclidean grid's a bit tricky to get used to.
23:04:30 -!- Taneb has quit (Ping timeout: 276 seconds).
23:07:20 -!- Taneb has joined.
23:10:31 <zzo38> I played 4 people shogi (with partners); I won by discovered checkmate due to the losing player's partner placing a piece on the previous turn, blocking the escape route (note: you are allowed to capture your partner's pieces but you are not allowed to move into check even from your partner's pieces)
23:12:52 -!- DCliche has changed nick to Klisz.
23:20:06 <zzo38> How well can you see the moon if you use ten high-powered telescope lenses?
23:20:17 <Taneb> "Shark fins are the main ingredient in shark fin soup" <-- thanks, Discovery
23:23:39 <Taneb> Egypt: the new Russia? Discuss
23:27:06 <Taneb> Does "BBS" stand for "Be back soon"?
23:27:09 <Phantom_Hoover> For the love of god I want a bath again.
23:27:26 <Phantom_Hoover> Why do I always want a bath two hours after having a bath would be a good idea.
23:28:24 <monqy> I garden pathed on that one
23:28:25 <monqy> oops
23:28:25 <Taneb> Because you are secretly ICELANDIC
23:28:57 <Phantom_Hoover> monqy, which one?
23:29:08 <monqy> htat one
23:30:43 <Taneb> Be back soon
23:30:47 -!- Taneb has quit (Quit: Leaving).
23:40:09 -!- pikhq has quit (Ping timeout: 244 seconds).
23:40:15 -!- pikhq_ has joined.
23:45:43 -!- Ngevd has joined.
23:45:50 <Ngevd> Hello!
23:46:14 <Ngevd> I think I'll learn DOS Batch
23:47:36 <Phantom_Hoover> 'Learn'.
23:48:02 <Phantom_Hoover> Write an Eodermdrome implementation, we need one of those.
23:48:46 * Phantom_Hoover → sleep
23:48:48 -!- Phantom_Hoover has quit (Quit: Leaving).
23:55:22 <Ngevd> Was Phantom_Hoover meaning in DOS Batch, or just in general?
2011-11-26
00:00:27 -!- yiyus has quit (Ping timeout: 240 seconds).
00:00:43 -!- oerjan has joined.
00:02:27 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:04:28 -!- Klisz has quit (Quit: You are now graced with my absence.).
00:05:51 -!- sebbu2 has joined.
00:05:55 <oerjan> <elliott> I guess oerjan was rather timely then. <-- namedropping us is bad now? >:P
00:05:55 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
00:05:58 -!- sebbu2 has quit (Changing host).
00:05:58 -!- sebbu2 has joined.
00:08:27 -!- sebbu has quit (Ping timeout: 240 seconds).
00:09:46 -!- Ngevd has quit (Ping timeout: 265 seconds).
00:10:27 -!- jix has quit (Ping timeout: 240 seconds).
00:10:51 -!- atehwa has quit (Ping timeout: 240 seconds).
00:10:57 -!- atehwa has joined.
00:11:26 -!- jix has joined.
00:13:30 -!- yiyus has joined.
00:18:16 <oerjan> <Ngevd> I say sentences of that format a lot <-- maybe you could define an alias.
00:18:56 <oerjan> oops, he just left.
00:24:28 <oerjan> <Taneb> Ended lamely <-- that Capital city article seems to show up often.
00:28:24 <oerjan> @tell elliott <elliott> Phantom_Hoover: Help I wrote two Perl programs and didn't feel disgusted with myself what does this mean? <-- i don't understand the question >:)
00:28:25 <lambdabot> Consider it noted.
00:33:01 <kallisti> @tell elliott it means you should embark on a long soul-searching quest to discover who you really are.
00:33:01 <lambdabot> Consider it noted.
00:34:50 -!- ais523 has quit (Remote host closed the connection).
01:04:13 -!- Klisz has joined.
01:04:48 -!- derdon has quit (Remote host closed the connection).
01:14:35 -!- Vorpal has quit (Ping timeout: 258 seconds).
01:28:54 -!- hagb4rd has joined.
01:45:02 -!- kallisti has quit (Ping timeout: 244 seconds).
01:47:41 <oerjan> hm retrying United States with elliott's section rule changes the path after Syphilis#Tertiary
01:49:04 -!- itidus21 has joined.
01:49:27 <oerjan> Syphilis#Tertiary -> Aortic aneurysm -> Bleeding -> Blood donation -> Shelf life -> Eating -> Activities of daily living
01:53:26 <oerjan> -> Old age -> Geriatrics -> Greek language -> English language -> Slang -> Euphemism -> Friendly fire -> Fratricide -> Siblicide -> Human
01:56:24 <oerjan> -> Anthropology -> Positivism -> Auguste Comte -> Altruism -> Ethical egoism -> Individualist anarchism -> Benjamin Tucker -> Liberty (1881–1908) -> Pierre-Joseph Proudhon
01:58:07 <oerjan> -> Loan -> Bond (finance) -> Perpetuity -> Valuation (finance) -> Lawsuit
01:58:40 <itidus21> fart -> punk rock -> the offspring -> alternative songs -> coldplay -> teenage cancer trust -> wirral -> Wirral Metropolitan College -> Wirral Peninsula -> Hundred (county subdivision)
02:00:14 <oerjan> -> Civil law (common law) -> Equity (law) -> Common law -> Australia, which i'm sure i saw earlier today and i think it ended up eventually in the Petronas Towers loop
02:01:48 -!- Klisz has quit (Quit: You are now graced with my absence.).
02:02:49 <itidus21> -> japan -> infant mortality -> child mortality -> Millennium Development Goals -> AIDS -> Needle-exchange programme -> HIV -> Cancer -> List of causes of death by rate -> World Health Organization -> United Nations Development Group -> United Nations Development Programme -> Human Development Report -> (loops back to United Nations Development Programme)
02:03:54 <oerjan> itidus21: sounds like the end there might be another common one
02:04:07 <itidus21> curiously DMM also enters the japan set
02:04:18 <oerjan> david morgan-mar?
02:05:30 <itidus21> David Morgan-Mar -> Canon (company) -> Ōta, Tokyo -> Kamata Station (Tokyo) -> Japan ->
02:06:50 <oerjan> yeah he works at Canon, so it's not that strange
02:08:43 <oerjan> Norway -> Human Development Index -> Human development (humanity) -> Capability approach, this looks familiar.
02:08:52 -!- itidus21 has quit (Read error: Connection timed out).
02:09:26 -!- itidus21 has joined.
02:12:09 <oerjan> ah, that one ended in the Tests of general/special relativity loop
02:23:47 <zzo38> Which house systems is it possible to make a sundial to project?
02:24:09 <oerjan> heh
02:24:32 <oerjan> that reminds me of the digital sundial (a mathematical construction which iirc requires the axiom of choice)
02:25:25 <zzo38> I have read about digital sundials in Wikipedia that uses optical fiber to cause the light to make up digits
02:26:25 <zzo38> The mathematics for fractal digital sundial is described but I do not see a mention of the axiom of choice
02:26:53 <oerjan> oh it doesn't require it, it seems, and is actually practical?
02:28:06 <itidus21> digital sundial eh? so the idea is a sophisticated mapping of sun direction to light up a display of arabic numerals?
02:28:09 <itidus21> cool idea
02:28:59 <oerjan> yeah
02:42:04 <oerjan> zzo38: you'd want a house system which can be determined from the precise position of the sun in the sky, presumably. and i think there will be at least some positions that happen twice in a year as the sun wanders between the tropics in both directions
02:43:01 <oerjan> but perhaps those two days will also have matching houses
02:43:23 <oerjan> (that is, each day in spring will have a matching day in autumn)
02:44:40 <oerjan> or very close to matching
02:46:15 <zzo38> Does it have anything to do with analemma or Sun declination (in equatorial coordinates)?
02:46:28 <oerjan> i don't know what those are
02:46:58 <itidus21> "In the final issue of Batman R.I.P., the Joker explains to an organization trying to destroy Batman that there is no use trying because Batman is always so far ahead in figuring out every scheme against him. Joker attributes this to _apophenia_, saying that he has literally been driven insane by this alone."
02:47:36 <zzo38> Equatorial coordinates means measure position of planets and sun and so on on the equatorial plane. The other way is to use the ecliptic.
02:48:54 <oerjan> zzo38: well the tropics are the largest magnitude latitudes of the sun in that system, i assume
02:49:23 <zzo38> Yes, that is correct.
02:51:47 <zzo38> According to Wikipedia: "Since the Earth's mean solar day is almost exactly 24 hours, an analemma can be traced by plotting the position of the Sun as viewed from a fixed position on Earth at the same clock time every day for an entire year." Using the horizon view and timed exposure modes in Astrolog, you can plot the analemma on the computer.
02:54:08 <zzo38> (The analemma is plotted using azimuth/altitude coordinates)
02:54:40 <oerjan> so yes, the analemma would be relevant. although you'd really want an analemma based on when you're in the same _house_ position each day
02:54:55 <oerjan> and if those don't intersect, you can make a sundial.
03:00:17 <oerjan> hm...
03:00:36 <oerjan> *when the sun is in the same house position
03:04:04 <oerjan> "If space in the heavens is the basis for house division, the sky is divided into equal arcs of 30° each. Here, too, a difference will be made as to whether these divisions are made based on the ecliptic, or on the celestial equator."
03:04:10 -!- Klisz has joined.
03:04:41 <oerjan> i'd _guess_ that if you use the celestial equator, a house will be a fixed part of the sky, so should work with a sundial.
03:04:50 <oerjan> and easily.
03:11:23 <zzo38> As far as I know house systems always place the cusps on the ecliptic (although the different systems might project the equator or prime vertical or whatever). Regiomontanus houses: "The celestial equator is divided into twelve, and these divisions are projected on to the ecliptic along great circles that take in the north and south points on the horizon."
03:11:35 <zzo38> Campanus houses: "The prime vertical (the great circle taking in the zenith and east point on the horizon) is divided into twelve, and these divisions are projected on to the ecliptic along great circles that take in the north and south points on the horizon."
03:13:26 <oerjan> mhm
03:44:56 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
03:57:43 -!- madbrain has joined.
03:57:47 <madbrain> hey
03:57:53 <oerjan> ho
03:57:55 -!- madbrain has changed nick to madbrrr.
03:58:04 <oerjan> cold, is it?
03:58:17 <madbrrr> in montreal, yeah :D
03:58:35 <madbrrr> trying to figure out if chess is turing complete
03:58:49 <quintopia> sounds good
03:59:00 <madbrrr> if you allow walls and an infinite board and an infinitely repeating pattern for the infinite tape
03:59:10 <quintopia> infinite chessboard, same distribution of pieces?
03:59:27 <madbrrr> no basically your program is the initial setup :D
03:59:35 <quintopia> oh
03:59:45 <quintopia> and the output is?
03:59:49 <itidus21> madbrrr: well then the question is what is a wall...
03:59:50 <quintopia> shortest checkmate?
04:00:06 <itidus21> like a part of the board?
04:00:07 <madbrrr> itidus: space that pieces can't go through
04:00:33 <madbrrr> exept that horses can still jump over it
04:01:13 <madbrrr> quintopia: whether it's the white or the black player that can win 100% of the time perhaps?
04:01:40 <madbrrr> Essentially you take one small walled corner somewhere
04:01:46 <madbrrr> and setup the white king
04:01:54 <madbrrr> 1 move away from being checkmated :D
04:02:03 <quintopia> i'm confused
04:02:03 <itidus21> i dont know enough about turing machines to actually add to this
04:02:09 <hagb4rd> lol
04:02:12 <madbrrr> so to stay alive he has to keep the black king in check
04:02:17 <quintopia> oh right
04:02:24 <quintopia> you only need one bit of output
04:02:26 <quintopia> duh
04:02:49 <madbrrr> so basically each move, the white player must do one move to keep the black king in check
04:03:05 <madbrrr> and then the black king has to move out of check
04:06:04 <madbrrr> obviously with setups of rooks you can move the king around
04:06:19 <madbrrr> but can you, say, store a bit?
04:06:59 <oerjan> madbrrr: er, you're not referring to castling, because the king can only do that on its first move
04:07:28 <oerjan> and not while in check, iirc
04:07:56 <madbrrr> nah I don't think castling could be used to perform computation
04:09:00 <oerjan> indeed
04:09:32 <itidus21> if brainfuck can do computation then chess can
04:10:06 <oerjan> "Some other generalized games, such as chess, checkers (draughts), and Go are EXPTIME-complete because a game between two perfect players can be very long, so they are unlikely to be in PSPACE. But they will become PSPACE-complete if a polynomial bound on the number of moves is enforced.
04:10:12 <oerjan> "
04:10:35 <oerjan> may be relevant
04:10:52 <madbrrr> say you have this setup
04:10:52 <madbrrr> ###############
04:10:53 <madbrrr> #R R #r####
04:10:53 <madbrrr> #RR # K#
04:10:53 <madbrrr> ## k ######
04:10:53 <madbrrr> ############
04:11:00 <oerjan> that's for arbitrary large, but finite board, of course
04:11:02 <madbrrr> white to play
04:11:21 <madbrrr> if white does anything other than check the black king, he's dead
04:11:41 <oerjan> a wall is essentially a hole in the board, isn't it.
04:11:45 <madbrrr> yeah
04:11:48 <oerjan> so part of the board shape
04:12:15 <madbrrr> might be possible to do computation without walls but I'm starting with the simpler case
04:12:44 <madbrrr> now, to check the black king, white has to move one of his rooks
04:12:45 <madbrrr> hmm
04:14:17 -!- Slereah has joined.
04:14:18 <zzo38> There are four ways for the uppercase player to put the lowercase player in check as far as I can see.
04:14:20 -!- kmc has joined.
04:14:52 <madbrrr> zzo: except the black king can escape from the small diagonal hole :D
04:15:21 <zzo38> In tsume shogi, too, you are required to put opponent in check on every turn
04:15:53 <zzo38> madbrrr: Yes, I can see that; eventually black will win. However white can still put black in check
04:16:30 -!- Slereah_ has quit (Ping timeout: 276 seconds).
04:16:54 <madbrrr> the idea is to come up with a setup where you force the king through a set of corridors
04:17:21 <madbrrr> which moves the white's pieces around
04:17:42 <madbrrr> and have computation using those pieces' position
04:19:43 <oerjan> it looks to me like that setup is a checkmate by moving an R down...
04:20:07 <madbrrr> no see once you get to this:
04:20:19 <oerjan> i mean the one you pasted
04:20:56 <madbrrr> ###############
04:20:56 <madbrrr> #R R #r####
04:20:57 <madbrrr> #R R # K#
04:20:57 <madbrrr> ## k######
04:20:57 <madbrrr> ############
04:21:04 <madbrrr> white to play
04:21:12 <madbrrr> next move is obviously
04:21:25 <madbrrr> ###############
04:21:25 <madbrrr> #R R#r####
04:21:25 <madbrrr> #R R # K#
04:21:25 <madbrrr> ## k######
04:21:25 <madbrrr> ############
04:21:31 <oerjan> madbrrr: er i'm saying that the first one you pasted will never get to that point because it's a one-move checkmate
04:21:44 <madbrrr> oh
04:21:51 <madbrrr> heh right
04:22:14 <madbrrr> so many Rs that he can just block all 3 rows, right
04:22:41 <zzo38> Yes it is a one move checkmate
04:22:54 <madbrrr> hmm
04:23:16 <zzo38> It is possible to change it, I suppose? Would it help to add new kind of pieces such as the Chinese cannons?
04:23:32 <madbrrr> well
04:23:51 <madbrrr> I'm trying to find something where you don't have to forbit perpetual check
04:23:56 <madbrrr> *forbid
04:24:31 <oerjan> oh i'm guessing that's not necessary. i mean the EXPTIME thing i pasted must essentially imply that it's possible to do arbitrary _finite_ computation, so it would be strange if an infinite board wasn't TC
04:24:39 <madbrrr> like this
04:24:40 <madbrrr> ###############
04:24:40 <madbrrr> #RR #r####
04:24:40 <madbrrr> ## # K#
04:24:40 <madbrrr> ## k ######
04:24:40 <madbrrr> ############
04:25:03 <madbrrr> black king can just force a draw by going back and forth
04:25:03 <zzo38> Chinese cannon = When not capturing, moves the same as a rook, but when it is capturing, there must be exactly one piece (of any color and type) in between the from square and the target (this piece in between is called a "screen" and is unaffected by this move)
04:25:25 <madbrrr> zzo: hm
04:26:15 <madbrrr> I'm trying to do it with FIDE pieces only :D
04:26:32 <madbrrr> but if there's no good way it might require some extra pieces yeah
04:27:20 <itidus21> an idea just occured to me
04:27:21 <oerjan> "That is why all the games were modified by playing them on an n × n board instead; in some cases, such as for Chess, these extensions are somewhat artificial and subjective."
04:28:01 <oerjan> so it is possible that it requires something else. but the walls seem to me like such a thing already.
04:28:07 <zzo38> And then, what are rules for pawns going to be? I suppose it can be based on the relative positions of pawns to walls
04:28:08 <itidus21> a lot of the time these games are about static pieces.. but game of life is a game about dynamic objects on a board
04:28:48 <madbrrr> zzo: I was thinking white pawns go up, black pawns go down :o
04:29:04 <oerjan> itidus21: well it's unusual in that you change a lot of cells simultaneously
04:29:25 <zzo38> madbrrr: Yes, but I mean for double step and promotion
04:29:36 <itidus21> oerjan: but suppose that a game like chess had pieces which had rules which didn't allow them to sit still unless they were stuck
04:30:05 <madbrrr> zzo: dunno, was thinking of presuming that the game was ongoing so no double step
04:30:19 <itidus21> im going off on a tangent though... big tangent
04:30:21 <madbrrr> and promotion, well, they'd have to reach the top of the program for that no? :D
04:30:38 <oerjan> itidus21: mind you there are other kinds of games where one player makes a lot of moves in their turn, like RISK
04:31:21 <oerjan> a lot of strategic conquest games, in fact
04:31:25 <zzo38> itidus21: You could have the game, each piece has to move exactly once on your turn; if they are stuck, they don't move, and if all your pieces are stuck you are stalemated.
04:32:02 <oerjan> Vinci is another that comes to mind
04:32:14 <itidus21> *catches my breath trying not to derail the other topic too far* like a set of rules for each piece which it has to follow..
04:32:50 <itidus21> that you don't tell a piece where to move each turn, it does it on its own.. and you just have some limited control .. like maybe allowed to specify movements of n pieces per turn
04:33:24 <itidus21> then you might for instance have pieces which explore the edges of a room
04:33:32 <itidus21> uh room? i mean an enclosed space
04:33:53 <itidus21> or pieces which move across a space back and forth
04:34:02 <oerjan> sounds like something that must already have been made.
04:34:14 <itidus21> everything has already been made(tm)
04:34:48 <madbrrr> hmm
04:34:51 <itidus21> its probably just not very easy to do on a board
04:34:59 <itidus21> more of a computer-powered task
04:34:59 <oerjan> well, everything that doesn't require a new invention to work
04:35:11 <oerjan> that's sort of tautological
04:35:36 <itidus21> uhm
04:35:53 <itidus21> so in my minds eye i see like a 16bit role playing game village
04:36:07 <itidus21> where each townsfolk is performing some patterned walking
04:37:26 <oerjan> i'd be surprised if there wasn't someone here who had played such a game. but i don't play that kind of games much, and i don't ... oh wait, lemmings is a bit like that
04:37:52 <madbrrr> damn it
04:38:04 <madbrrr> it's hard to find a good contraption using chess pieces
04:38:36 <oerjan> madbrrr: you want it to be deterministic, too, to encode a TM
04:39:23 <madbrrr> oerjan: that means you need a setup where there is only one possible check on each move
04:39:32 <madbrrr> and one possible king move in response
04:39:50 <oerjan> madbrrr: well or only one possible which doesn't allow the king to escape
04:39:58 <oerjan> in an unwanted direction
04:40:12 <madbrrr> sounds hard to evaluate
04:40:45 <oerjan> well but it's the kind of evaluation you need for solving chess problems, anyway...
04:40:52 <zzo38> You could have game involving the board changing. One possibility is the board changes size after every few turns, or they have night time and day time, another idea I had is a game that adds a dimension every few turns. Or have cards that adjust the rules for the board.
04:41:21 <oerjan> and it might not have to take _long_ to escape. just in case you need a little extra flexibility beyond a single immediate possibility
04:41:59 <madbrrr> ##
04:41:59 <madbrrr> ## #
04:41:59 <madbrrr> ## # P
04:41:59 <madbrrr> ## # P
04:41:59 <madbrrr> ## # P
04:42:00 <madbrrr> #k# P
04:42:00 <madbrrr> ## P
04:42:01 <madbrrr> ##PP
04:42:12 <madbrrr> this one is fairly deterministic
04:42:37 <oerjan> P is for pawn?
04:42:41 <madbrrr> but non resettable :(
04:42:42 <madbrrr> yeah
04:43:04 <oerjan> yes the resetting might be tricky. in fact you can just about ignore pawns for this reason.
04:43:36 <madbrrr> yeah that leaves rooks, bishops, knights and queens
04:43:49 <madbrrr> and extra kings
04:44:25 <oerjan> extra kings feels like cheating.
04:44:25 <itidus21> oerjan: :-? lemmings is a lot like that. nice point
04:44:43 <madbrrr> queens seem to have too much range
04:45:02 <zzo38> Although an idea I have thought of this year is a game that uses a horoscope as the board, updating in real time (so the time you take to make your move has consequences; obviously a time limit would also be required for each turn); you could have cards, with certain configurations you make allows you to play cards to adjust harmonic factors and house settings and whatever
04:45:02 <madbrrr> hard to make setups where they only can give one possible check
04:46:04 <zzo38> A game I have read about is called Quintuple Arcana, I don't know much about it except for: * The board and pieces * It has complete information and non random * The rules are extremely complicated and modes change depending on things in the game * There are even different levels of rules
04:46:06 <madbrrr> that leaves mostly rooks, bishops and knights
04:46:19 <itidus21> oerjan: so with the lemmings idea.. you could have a stream of pawns coming out of one tile every few moves, and your job is then to assign it a role such as queen or rook or knight
04:46:43 <zzo38> itidus21: Or bishop, too
04:46:51 <itidus21> and some deterministic behaviour for each one
04:47:05 <itidus21> there could be something in that
04:47:36 <oerjan> wait how does dwarf fortress fit in this :P
04:47:46 <itidus21> i havent played dwarf fortress
04:47:49 <itidus21> :))
04:47:49 <oerjan> me neither
04:48:04 <madbrrr> #
04:48:04 <madbrrr> # B ###
04:48:04 <madbrrr> # B R#
04:48:04 <madbrrr> #BB# k ###
04:48:04 <madbrrr> #########
04:48:05 <itidus21> dwarf fortress fits into everything
04:48:12 <oerjan> but from listening to those who do, it sounds like it has lots of roles
04:48:31 <oerjan> and somewhat self-determining characters
04:48:38 <itidus21> so i can imagine uh 2 aristocrats sitting by a board while a servant shifts the pieces around
04:49:26 <itidus21> and the notations would be something like: g5 to bishop
04:49:44 * Sgeo is now reading Dr. McNinja
04:49:55 <zzo38> I made up a game called "Giveaway Chess Puzzle", where you can make one move each turn. Goal is to lose all of your pieces. You must capture if able, otherwise you can make any move (if more than one capture is possible, you can choose which one). On computer player's turn, they automatically make all possible captures simultaneously.
04:50:02 <madbrrr> yeah ok bishops might do it
04:50:04 <oerjan> madbrrr: you are going to somehow need pieces to be able to check in different contexts to reset things
04:50:32 <itidus21> oerjan: the chess -> lemmings conceptual bridge there was quite wonderful
04:50:39 <oerjan> heh
04:51:02 <madbrrr> I wonder what's the computational class of lemmings
04:51:06 <zzo38> That can allow two pieces to end up in the same place. If they are the same kind of piece, it becomes a single piece of that kind. If they are different kind, it becomes a piece that cannot go. A computer player's piece might capture more than one thing, duplicating itself. If computer player's pieces cannot capture, you lose.
04:51:38 <madbrrr> it's likely that lemmings has a crazy computational class like NP complete
04:51:45 <zzo38> It doesn't have promotion, en passan, double step, check, checkmate, castling, etc
04:52:08 <itidus21> sort of like how in the movie The One, he kills his multiverse selves to become more powerful
04:52:10 <oerjan> madbrrr: NP complete is nowhere near crazy enough there :P
04:52:29 <oerjan> http://en.wikipedia.org/wiki/PSPACE-complete#Discussion
04:53:39 <oerjan> particularly last half
04:54:37 <itidus21> :((
04:55:19 <itidus21> heavy math topics made all the more inviting by board games
04:55:22 <oerjan> and by that i mean that the first half is more likely to explode your brain, and doesn't really talk about games.
04:55:40 <madbrrr> well
04:55:42 <madbrrr> hmm
04:56:26 <madbrrr> lemmings can present an obstacle that requires either N bashers, or M diggers
04:56:33 <madbrrr> for any value of N or M
04:56:36 <itidus21> oerjan: thanks for recognizing the brain exploding potential of these things
04:56:54 <oerjan> itidus21: your :(( gave me a bit of a clue there :P
04:57:09 <madbrrr> in fact it can present an obstacle that can be crossed with any combinations of bashers/diggers
04:57:18 <itidus21> im sick of these assholes in my other chatroom ..
04:57:26 <itidus21> i like half of them. and the other half i don't
04:57:37 <madbrrr> 1/N, 2/M, 3/O, 4/P, 5/Q, 6/R....
04:58:04 <itidus21> can ignore about 40% of them.. but that remaining 10% causes all the grief
04:58:34 <madbrrr> in fact an obstacle can have more or less any number of paths through it
04:59:02 <madbrrr> those paths can require any combination of bashers, diggers and builders
05:01:35 -!- madbrrr has quit (Read error: Connection reset by peer).
05:02:52 -!- madbrrr has joined.
05:03:52 <madbrrr> I don't think you can setup an infinite tape in lemmings
05:04:00 <madbrrr> or maybe even infinite lemmings
05:04:39 <itidus21> i don't like puzzles.. i don't know why..
05:05:09 <itidus21> the very word puzzle makes me kind of run away from a game
05:05:32 <madbrrr> best games are the ones where you have to plan
05:05:37 <itidus21> might be that i'm dumb
05:05:40 <madbrrr> example: mario 64
05:06:03 <itidus21> the thing about mario you see... is that mario isn't just a puzzle dressed up with pretty pictures
05:06:22 <madbrrr> in mario 64 you run around the level
05:06:29 <itidus21> just for the hell of it
05:06:29 <oerjan> http://en.wikipedia.org/wiki/Game_complexity
05:06:30 <itidus21> yeah...
05:06:38 <madbrrr> and figure out that it has a bunch of paths, each with deadliness N
05:06:44 <madbrrr> then find out a star
05:06:58 <madbrrr> surprise, to get that star, you have to go in spots X, Y Z
05:07:10 <itidus21> yeah....
05:07:16 <madbrrr> the puzzle is figuring out the path that has the least overall deadliness
05:07:26 <itidus21> perhaps by that time it did start to become a puzzle
05:07:55 <itidus21> its very difficult for me to put into words
05:07:58 <madbrrr> A lot of games are puzzles, but very, very cleverly hidden puzzles
05:08:15 <itidus21> but theres a fine line between game and non-game i think
05:09:00 <myndzi\> <3 lemmings
05:09:05 <madbrrr> like, a good action game is about figuring out the game world and how to pass through its typical obstacle setup
05:09:14 <itidus21> i wonder which neuroses affect my interest in puzzle games
05:09:36 <madbrrr> that's part learning timings etc, but also it's a puzzle
05:09:47 <myndzi\> i was never content with just getting through lemmings levels
05:09:50 <myndzi\> i had to go back and save my blockers too
05:09:51 <myndzi\> ;)
05:09:56 <madbrrr> iti: it's the presentation... some puzzle games can have a very boring presentation
05:10:14 <madbrrr> ex: sokoban
05:10:20 <myndzi\> i couldn't care less.. unless it has boring puzzles :P
05:10:20 <itidus21> i love nothing more than to philosophize about these things
05:10:25 <myndzi\> sokoban is boring
05:10:29 <madbrrr> dude pushing boxes? fuck you
05:10:31 <myndzi\> it's fine as a component of other puzzle games
05:10:36 <myndzi\> or a theme level
05:10:41 <myndzi\> but i don't want to play 100 sokoban levels in a row
05:10:54 <myndzi\> the best puzzles have mechanical ingenuity and also variety
05:10:57 <madbrrr> puzzles become more interesting when they involve punching a dude in the face
05:10:59 <itidus21> theres this element of representation which the presentation adds
05:11:18 <itidus21> i mean "<madbrrr> iti: it's the presentation... some puzzle games can have a very boring presentation"
05:11:36 <itidus21> representation as in, representing things from the real world, or from other works of fiction
05:11:56 <itidus21> and the presentation can bring that representation
05:12:28 <itidus21> to me, that is one of the advantages of 3d games which can more closely represent the world around us
05:12:45 <madbrrr> other thing that I don't like: games where you can never kill the badguys
05:12:58 <madbrrr> only stun them for a couple seconds
05:13:11 <itidus21> so perhaps for people who like puzzle games, they are more capable of abstractly relating the business in a puzzle back to the real world
05:13:21 <myndzi\> http://67.168.184.168:81/leet1.gif - leet7.gif :>
05:13:22 <itidus21> whereas someone like me requires that shallow relation
05:13:24 <myndzi\> tricksy lemmingses
05:13:50 <myndzi\> no idea itidus
05:13:56 <itidus21> humm
05:13:57 <myndzi\> i don't care if it is anything like the real world :P
05:14:17 <myndzi\> one of my three favorite puzzle games has a marble that you move around with the mouse and basically play a game of memory with
05:14:22 <myndzi\> (through numerous obstacles)
05:14:36 <myndzi\> it's not very world-like :)
05:14:43 <itidus21> ok so the problem with sokoban is that you can't learn much from it perhaps?
05:14:54 <myndzi\> for me, the problem with sokoban is that it's boring
05:15:03 <itidus21> its just fundamentally boring basically? :D
05:15:04 <myndzi\> what i want from a puzzle game is FIGURING OUT NEW THINGS
05:15:15 <myndzi\> there's only so many ways you can figure out how to push a box in four directions
05:15:20 <myndzi\> everything after that is just variations on a theme
05:15:34 <myndzi\> i don't mind variations on a theme either, but it's rather monotonous in a game as simple as sokoban
05:15:46 <myndzi\> my favorite games have lots of variety, lots of levels, and they never bore me :)
05:16:30 <myndzi\> most of the time i like them with complex interactions, like chip's challenge or something
05:16:34 <myndzi\> where there are lots of different pieces
05:16:34 <itidus21> hmm yeah.. theres rarely real world sokoban puzzles... but it would make an interesting take for a "saw" movie
05:16:38 <myndzi\> but at the same time
05:16:45 <myndzi\> another of my favorites is crystalex
05:16:52 <myndzi\> and that's a pretty simple game, it just had great level design
05:16:59 <myndzi\> you have a little ball that bounces up and down
05:17:03 <myndzi\> you move it left and right
05:17:07 <zzo38> Game such as Hero Mesh can have a lot of level and lot of pieces. Currently you have to pay, but I have been working on a similar kind of thing but with Free software (and with some other things fixed too; so files cannot be directly compatible)
05:17:08 <itidus21> like.. someone trapped in a real world sokoban puzzle..with an ipad in his hand showing him the current state of things
05:17:14 <myndzi\> lol
05:17:26 <myndzi\> never heard of hero mesh
05:17:36 <itidus21> nope..
05:17:53 <myndzi\> you mean mesh:hero ?
05:17:59 -!- MDude has changed nick to MSleep.
05:18:01 <zzo38> I have written a PHP version once which is more than half complete but is slow and crashes a lot.
05:18:05 <myndzi\> looks like my kind of game
05:18:08 <zzo38> Later I will write a better program in C.
05:18:09 <myndzi\> kind of dated graphics though
05:18:15 <myndzi\> not that that matters much to me
05:18:18 <myndzi\> if the puzzles are good ;)
05:18:27 -!- hagb4rd has quit (Ping timeout: 240 seconds).
05:18:38 <zzo38> Yes the puzzles are good.
05:18:44 <myndzi\> actually it looks quite a bit like a ripoff of chip's challenge haha
05:18:48 <myndzi\> collect the chips/collect the hearts
05:18:49 <myndzi\> hmmm
05:18:49 <myndzi\> ;p
05:18:53 <itidus21> i just think it would be very funny if there was some movie about a sokoban killer who traps his victims in sokoban mazes
05:19:00 <zzo38> You can make up your own kind of pieces too.
05:19:04 <Patashu> http://www.puzzlebeast.com/ has some basic multi element puzzles that are taken to the extreme using genetic algorithms to make difficult levels
05:19:09 <Patashu> for the hardest ones you have to look extremely far ahead
05:19:12 <myndzi\> haha
05:19:26 <myndzi\> genetic algorithms based on what fitness function? how many players solve them?
05:19:26 <myndzi\> :P
05:19:39 <Patashu> based on how difficult it looks to solve
05:19:46 <itidus21> hmm
05:19:47 <Patashu> Ithink it looks at how long the solution is, as well as how many branches there are
05:19:50 <Patashu> it xplains it on the site
05:19:57 <itidus21> i wonder if they already made a sokoban the movie trailer
05:19:57 <Patashu> http://www.puzzlebeast.com/about/index.html
05:20:02 <myndzi\> interesting
05:20:18 <myndzi\> i remember some dude who tried to make a genetic shmup
05:20:24 <myndzi\> the fitness function was how long someone played it for
05:20:24 <myndzi\> haha
05:20:30 <zzo38> I will probably have even more limited graphics in my version, such as no animation and only one size of icons. As well as removing some other commands and adding a few new ones.
05:20:37 <Patashu> btw, mesh:hero reminds me (just looking at it not playing it) of drod and wonderquest
05:20:39 <Patashu> have you played those?
05:21:35 <zzo38> Depending on the level, you might not necessarily have to collect all the hearts. There can be different kind of rules you can program in, involving different kind of things.
05:22:53 <myndzi\> nope and nope
05:22:59 <myndzi\> i'm sure there's lots i haven't played
05:23:04 <myndzi\> i have a particular hatred of boulderdash though
05:23:10 <myndzi\> it's not boulderdash's fault
05:23:13 <myndzi\> its all the clones
05:23:13 <myndzi\> :P
05:23:35 <myndzi\> http://www.puzzlebeast.com/slidingblock/sliding_irritating.html <- irritating indeed
05:23:39 <myndzi\> that wasn't a fun puzzle, just a long one
05:23:39 <myndzi\> :(
05:23:42 * myndzi\ tries the next one
05:23:42 <zzo38> I intend to remove the GotoLevel command, since WinLevel and LoseLevel can imply those. As well as making object pointers not be machine pointers (preventing crashing and randomness), having restrictions on IgnoreKey (preventing breaking replayability), and so on.
05:23:52 <zzo38> I have not played drod and wonderquest
05:24:18 <Patashu> is it possible to shrink the resolution of MESH:Hero? It's taking up more than my current screen
05:24:24 <myndzi\> also the java implementation leaves a lot to be desired
05:24:25 <zzo38> Patashu: Yes.
05:24:40 <zzo38> View -> Image size A
05:24:48 <myndzi\> oh wait
05:24:48 <myndzi\> drod
05:24:51 <myndzi\> deadly rooms of death
05:24:56 <myndzi\> i didn't recognize it lowercase
05:25:03 <myndzi\> i'm ambivalent towards that one
05:25:13 <myndzi\> i played a bunch of kroz levels as a tiny kid haha
05:25:29 <Patashu> I don't see a 'view' button
05:25:31 <Patashu> I'm on the demo
05:26:05 <itidus21> one thing about presentation/display of a game is that various presentation(im overusing this word) methods just work more naturally with how our mind reacts to the world
05:26:45 <itidus21> like we have the understanding there already to process 3d coloured shapes... to compare 3d coloured shapes
05:27:14 <itidus21> so, if we ignore these processing facilities of the brain we can potentially make some comprehensions more burdensome
05:27:26 <zzo38> Patashu: The new version might have all those problem; I have the old version. I can make a shareware copy of the old version
05:27:31 <itidus21> and also our facility for symbolic association and so on
05:27:31 <Patashu> ah
05:28:31 <itidus21> like seeing a bar graph comparison of 10 vs 15.. compared to seeing the numbers 10 vs 15
05:28:47 <itidus21> they probably each have their own perceptive biases
05:30:07 <itidus21> well that is.. in a bar graph it becomes a representation of ratio of 2:3
05:30:57 <itidus21> so the numbers will give us more accuracy in doing arithmetic, but in actually comparing i would wonder if we better compare the bargraph
05:31:01 <myndzi\> i guess i just don't have any trouble with abstract visualization
05:31:09 <myndzi\> i mean, when you're solving a puzzle, usually associations harm you
05:31:38 <myndzi\> (associations lead to assumptions, and assumptions prevent new ideas)
05:32:19 <myndzi\> haha this shit's got lasers and fire and balloons and stuff
05:32:21 <myndzi\> classic :)
05:32:26 <zzo38> What kind of associations and assumptions?
05:32:31 <itidus21> myndzi\: i think i'm just not that smart really.
05:32:31 <myndzi\> any kind
05:32:43 <myndzi\> the key to solving puzzles is to always be able to come up with new ideas
05:32:53 <myndzi\> it helps if you're good at coming up with ideas that are close to correct
05:33:03 <myndzi\> but most people i've seen get stuck by running out of ideas
05:33:05 <itidus21> i can't get anything out of a puzzle unless the relationship of the puzzle to the real world is obvious and shallow
05:33:18 <myndzi\> that's too bad :(
05:33:29 <itidus21> im not sure why though
05:33:36 <itidus21> i blame it on some neuroses
05:34:08 <itidus21> hmm
05:34:22 <myndzi\> perhaps
05:34:28 <myndzi\> i've been doing puzzles since i was a little kid
05:34:34 <myndzi\> my dad used to buy me one every birthday and every christmas
05:34:48 <myndzi\> he eventually got pissed because they never lasted past the day i got them
05:34:49 <myndzi\> :>
05:35:04 <myndzi\> he told me in the end he would just go into puzzlettes and be like 'what's the hardest puzzle you have?'
05:35:34 <myndzi\> but even so, variety is required to hold my interest; i couldn't for example get heavy into block disassembly puzzles or something like that
05:35:41 <myndzi\> i have a few of many different kinds
05:35:47 <itidus21> :)
05:36:05 <myndzi\> one of my favorites is evil
05:36:06 <zzo38> Note the old version is 16-bit program. It does not allow loading or creating puzzle sets with more than three levels, but it does allow programming your own rules (unlike the new shareware version).
05:36:20 <myndzi\> it's a little cage that holds a steel marble
05:36:44 <myndzi\> http://www.calendars.com/img/p/400/200100010306.jpg
05:36:54 <myndzi\> last person i let try to solve it bent the bars and still didn't get it out :(
05:36:56 <myndzi\> i had to get a new one
05:37:12 <myndzi\> my old one was old enough that it had a shiny spot in the middle of the bars from friction with the ball haha
05:37:15 <Patashu> so what are you meant to do?
05:37:23 <myndzi\> it's not obvious? :P
05:37:26 <itidus21> myndzi\: i find it all too easy to think up impossible situations.. do you find that your understanding of puzzles helps avoid such things?
05:37:31 <myndzi\> goal = remove steel ball
05:37:46 <myndzi\> itidus21: not sure what you mean
05:37:54 <myndzi\> do you mean you give up too easily?
05:38:12 <myndzi\> i'm not sure i could come up with a situation that i could declare absolutely impossible :P
05:38:19 <myndzi\> i mean, i'm not gonna float up into space and walk on the sun anytime soon
05:38:22 <myndzi\> but you can't quite rule it out
05:38:23 <myndzi\> ;D
05:38:34 <itidus21> humm
05:39:00 <myndzi\> impossible means... never, in all time
05:39:05 <myndzi\> i prefer highly improbable :)
05:39:06 <itidus21> myndzi\: ok so one of the nastiest puzzles i suppose is... you're on death row.. you don't want to die.
05:39:30 <myndzi\> that's it?
05:39:42 <myndzi\> umm, solution: don't commit felonies
05:39:42 <myndzi\> :P
05:39:52 <myndzi\> or, weasel your way around the legal system for decades
05:39:59 <myndzi\> or just man up and get it over with
05:40:00 * myndzi\ shrugs
05:40:07 <itidus21> now on the surface it must seem impossible as if god himself (not to purport some religion) built the prison
05:40:08 <myndzi\> i don't consider that a puzzle, it's a situation
05:40:12 <myndzi\> puzzles have solutions :)
05:40:33 <itidus21> ok.. would you say then that some situations don't have solutions? :>
05:40:52 <myndzi\> well, if you're on death row there are still solutions
05:41:00 <myndzi\> doesn't mean they've very likely, but there ARE possibiliites
05:41:15 <myndzi\> presidential pardon, for example :P
05:41:33 <myndzi\> new evidence, jail break, bribery, nuclear holocaust... heh
05:41:39 <itidus21> hehe
05:41:46 <myndzi\> zombie breakout
05:41:58 <itidus21> so anyway.. i think such things is the uh... the true power of the master puzzle solver
05:42:15 * myndzi\ shrugs helplessly
05:42:26 <itidus21> solving difficult situations
05:42:28 <myndzi\> i remember distinctly one time when my little brother was having a go at one of my block puzzles
05:42:45 <myndzi\> this kind is made up of these c-shaped wooden blocks of various length
05:42:46 <myndzi\> s
05:42:54 <itidus21> theres something on wiki about learned helplessness
05:42:55 <zzo38> I can provide the "Hero Mesh PHP" to you too if you want, but notice it is slow and incomplete and it crashes a lot.
05:43:12 <myndzi\> http://www.adamdorman.com/_images/3d_wood_block.jpg
05:43:13 <myndzi\> something like that
05:43:28 <myndzi\> though the shape of that one is much different
05:43:41 <myndzi\> there was a combination of five pieces required to make a basic shape that repeated throughout the puzzle
05:43:46 <myndzi\> two long ones like this []
05:43:51 <myndzi\> two short ones clasping around the bottom of them
05:43:59 <myndzi\> and one going "through" and "up" hooking over the short ones; it all locks itself together
05:44:06 <myndzi\> that may not be very well-explained
05:44:24 <myndzi\> anyway, i saw him balance like four pieces and fumble and drop them trying to put the fifth in some weird way, over and over
05:44:39 <myndzi\> sometimes he got it and tried to go further, then hit a dead end or something
05:44:47 <myndzi\> he spent 80% of his time trying to balance these blocks to get them together
05:44:55 <myndzi\> and not once did he ever try to find a better way to assemble them
05:45:03 <myndzi\> (one that didn't require, say, balancing everything ridiculously)
05:45:30 <myndzi\> it's not only being able to come up with new ideas, it's also knowing to try
05:45:39 <myndzi\> of course, puzzles are a special case
05:45:50 <myndzi\> you can pretty much assume the opposite of occam's razor in the case of puzzles/puzzle games
05:46:03 <myndzi\> so it's easier to branch out quickly and rule out the simple stuff without much effort
05:46:37 <myndzi\> heh, i've actually noticed it affect other areas of my life ;)
05:46:39 <itidus21> ok so here you mean, you can usually have faith in a puzzle
05:46:45 <myndzi\> like if i drop something on the floor, i don't spend a lot of time searching in the same spot
05:46:51 <itidus21> hmm
05:47:00 <myndzi\> ah, well, specifically with regards to puzzle games
05:47:05 <myndzi\> yes, i have faith that a solution exists
05:47:15 <myndzi\> and so i am comfortable trying increasingly ridiculous things
05:47:21 <itidus21> yeah.. when my mom loses something in her room i am like that
05:47:27 <itidus21> sometimes
05:47:29 <itidus21> hmm
05:47:36 <myndzi\> one of the reasons i like crystalex so much is because its levels are designed so that you HAVE to do ridiculous things to succeed
05:47:39 <myndzi\> in many cases
05:47:42 <itidus21> wow this feels like a nintendo discussion
05:47:43 <myndzi\> like pixel perfect timing sometimes
05:47:53 <myndzi\> or long sequences without mistakes
05:48:11 <myndzi\> but with that game, i never ran out of ideas - i only had to get good enough to try them
05:48:23 <myndzi\> when it's not a game, i still don't give up easily
05:48:24 -!- darkmoth has joined.
05:48:44 <myndzi\> i spent 12 hours the other day learning how to use eclipse, write in java, and use a poorly documented library in order to accomplish a task
05:48:53 <myndzi\> but i guess i could have faith that there was an answer there, too
05:48:57 -!- darkmoth has left ("Ex-Chat").
05:49:09 <itidus21> so, this is like a non religious use of the power of faith
05:49:21 <myndzi\> well, it's not blind faith
05:49:37 <myndzi\> it's not like "something is magical and i'll just trust that it exists"
05:49:46 <myndzi\> it's "i know this should be possible, and i'm going to figure out how to do it"
05:50:03 <myndzi\> occasionally i do hit something where i have to put it down or give up, but not often; and i usually come back to it
05:50:17 <itidus21> so then this gets interesting... how do we know a solution exists?
05:50:37 <myndzi\> puzzle games aren't very fun without a solution :)
05:50:51 <myndzi\> with some programming knowledge you know what is possible with programming
05:51:07 <myndzi\> some things - like ai - aren't developed yet, but will probably be possible in the future
05:51:10 <itidus21> so.. then theres the star trek thing... where kirk made a solution by cheating
05:51:11 <myndzi\> but with more common tasks
05:51:23 <myndzi\> even if YOU don't know how to do it, you can frequently know that it's doable
05:51:31 <myndzi\> ha, i have one puzzle
05:51:36 <myndzi\> that's a big practical joke :)
05:51:57 <myndzi\> it's a long square thing with a hole in the length of it, open on one side
05:52:07 <myndzi\> at the bottom there are two holes drilled perpendicular through it
05:52:10 <itidus21> des cartes apparently used to intentionally send out math problems which had lies in them
05:52:12 <myndzi\> and a rubber band is looped through
05:52:27 <myndzi\> ah, well, discerning the lie is also possible :)
05:52:47 <myndzi\> the joke - you have the other piece, which has a round knob on the end, a long skinny pole with a hook at the end
05:52:52 <myndzi\> the supposed goal is to hook it on the rubber band
05:53:10 <myndzi\> you demonstrate this to someone by putting it in the hole and making some random ass motions like a puzzle box type thing
05:53:17 <myndzi\> and then you "pull" it out and it snaps back in
05:53:39 <myndzi\> that one took me about 5 minutes before i took the piece with the rod out and laid it along the outside to see that it wasn't long enough ;)
05:53:49 <myndzi\> the trick: you squeeze your fingers together and it shoots out of them
05:54:12 <myndzi\> so i guess even lies can have solutions
05:54:55 <itidus21> uhm
05:55:06 <Patashu> you squeeze your fingers together on what?
05:55:39 <itidus21> im guessing this is one of those things that would be easier to watch than read
05:55:44 <myndzi\> on the knob
05:55:45 <myndzi\> it's like
05:55:48 <itidus21> but i am really enjoying this topic
05:55:53 <myndzi\> ,------()
05:55:57 <itidus21> attacking my aversion to puzzles
05:56:07 <myndzi\> so you hold the knob
05:56:14 <myndzi\> and fidget around with the hook end inside the enclosure
05:56:23 <myndzi\> and then you pretend it's hooked by pulling it out and shooting it back
05:56:29 <myndzi\> then you "undo" it and give it to someone to try
05:56:40 <myndzi\> because of what i described about trying new things
05:56:44 <zzo38> I made a lot of puzzles in the Super ASCII MZX Town series of games.
05:56:50 <myndzi\> i quickly recognized that there was nothing to actually do with the rod in the hole
05:56:55 <myndzi\> and solved the problem
05:57:05 <myndzi\> but someone like my brother might sit there trying to hook it for an hour before giving up
05:57:36 <myndzi\> by the way itidus21, i didn't want to gloss over what you said about learned helplessness; i'm familiar with the concept, do you feel like it applies?
05:57:39 <itidus21> oh.. i was hoping that you were gonna say you were able to teach your brother the right way
05:57:59 <itidus21> i dont know much about it.. but i just think it is part of the topic
05:58:09 <myndzi\> ah
05:58:11 <itidus21> its really quite relevant infact
05:58:18 <myndzi\> i don't believe so
05:58:24 <myndzi\> it's a different kind of thing
05:58:31 <myndzi\> learned helplessness is being beaten down so much that you won't try anymore
05:58:46 <myndzi\> not being able to solve a puzzle is just how you've learned to approach problems and maybe something to do with base intelligence
05:58:54 <itidus21> but the effect is the same of not trying right?
05:59:03 <myndzi\> sorta
05:59:09 <myndzi\> in one case, you don't try because you're fucked up and depressed
05:59:14 <myndzi\> in the other, you don't realize there's anything else to try
05:59:43 <itidus21> ok thanks. i dont really know the details of any of these things
05:59:48 <myndzi\> i did try to teach my little sister about puzzle solving as an experiment
06:00:03 <myndzi\> but she doesn't have the ability to focus very long on something she's not terribly interested in ;)
06:00:11 <myndzi\> she is quite smart, but it wasn't for her
06:00:21 <myndzi\> i'm not sure if it's a "nature" or a "nurture" thing, but it may be a combination
06:00:38 <myndzi\> i know for a fact that many of my habits to approach problem solving were learned from my dad
06:00:45 <myndzi\> and his taking me to work with him and helping him etc.
06:00:51 <itidus21> so for me, puzzle and situation are more or less synonyms
06:01:09 <myndzi\> well, i think of the word puzzle as more specifically a kind of game
06:01:17 <myndzi\> if it doesn't have a solution, it's not a very good puzzle ;)
06:01:22 <myndzi\> but puzzles inherently have solutions
06:01:30 <itidus21> solving a situation then being applied puzzle-solving
06:01:31 <myndzi\> mysteries, on the other hand...?
06:01:50 <itidus21> so... then we run into the question of what it means to solve a situation
06:02:17 <Patashu> myndzi, if you want something hard to solve, try the last 7 levels of this game http://www.remar.se/daniel/castle.php
06:02:19 <itidus21> situations have the potential for serendipity :-?
06:02:21 <Patashu> I've been stuck on them for a while
06:02:24 <Patashu> maybe you can do better
06:02:54 <itidus21> uhmm..
06:03:08 <myndzi\> i guess i'd say
06:03:10 <itidus21> i guess it would seem that rules play a role
06:03:15 <myndzi\> you don't know if a situation is a puzzle or a mystery
06:03:15 <myndzi\> :)
06:03:24 <myndzi\> and the only way to prove that it's a puzzle is to solve it :P
06:04:14 <itidus21> in some cases you can cheat
06:04:35 <itidus21> so an interesting idea here is are there any puzzles that can't be cheated
06:04:48 <myndzi\> in terms of puzzle games
06:05:06 <myndzi\> there is no cheat
06:05:07 <myndzi\> :>
06:05:35 <myndzi\> well, i mean, there can be - but it doesn't really count
06:05:43 <myndzi\> it's the puzzle designer's job to ensure there are no shortcuts :P
06:05:55 <myndzi\> there's one level in crystalex like that
06:06:02 <itidus21> like, in sokoban, analyzing the sourcecode woudn't save you..
06:06:04 <myndzi\> it was one of the latest ones
06:06:21 <myndzi\> er, last ones* = hard ones
06:06:26 <myndzi\> but there was a simple shortcut to beat it
06:06:29 <myndzi\> the author was like lol
06:06:44 <myndzi\> yeah, i guess you could consider different classes of puzzles too :)
06:06:51 <itidus21> since the program merely encodes the rules... it doesn't show how to use those rules
06:07:09 <myndzi\> to me it's just something solvable
06:07:18 <myndzi\> reverse engineering an encrypted protocol is a puzzle
06:07:19 <myndzi\> :P
06:07:35 <myndzi\> (i'm lookin at you YVD and your "secure double encryption")
06:07:36 <itidus21> like.. you could have a chessboard with sokoban tiles...
06:07:48 <itidus21> and you could copy a board from a computerized sokoban
06:08:06 <itidus21> and you would have to say "how can i cheat?"
06:08:37 <myndzi\> the only person you cheat in a puzzle is yourself
06:08:40 <itidus21> perhaps to take the solution and work backwards to the beginning one might try
06:08:51 <myndzi\> accomplishing a goal isn't the reward; deriving the solution is
06:09:08 <myndzi\> i don't really consider a puzzle fully solved until i can encompass it in my mind
06:09:16 <myndzi\> sometimes i have to complete it many times before i can comprehend it
06:09:24 <myndzi\> but for the same reason i'm not much of a fan of things like the rubik's cube
06:09:28 <myndzi\> it's too... dry for me
06:09:33 <itidus21> hmm
06:09:34 <myndzi\> too mathematical, not interesting
06:09:43 <myndzi\> ironically i have an abiding interest in tetris
06:09:46 <myndzi\> which i consider the exception to the rule ;)
06:09:49 <itidus21> in the comicbook series rurouni kenshin, kenshin is always thinking outside of the box
06:10:21 <itidus21> and that is what makes him the best
06:10:37 <myndzi\> never read the manga
06:10:40 <myndzi\> watched about half the anime
06:10:47 <myndzi\> only particularly liked the first ova :P
06:10:48 <itidus21> i havent seen it all either
06:10:58 <myndzi\> the worst is something like death note
06:11:08 <myndzi\> where the author tries to write characters smarter than she(?) is
06:11:10 <myndzi\> hehe
06:11:15 <myndzi\> then it just comes out contrived and silly
06:11:20 <myndzi\> OHO THAT WAS MY PLAN ALL ALONG
06:11:25 <itidus21> an example would be.. that his sword is too long.. so he is losing a swordfight
06:11:37 <itidus21> so what he does is he holds the sword by the blade itself
06:12:14 <itidus21> which fixes the length problem.. most surprisingly to his opponent
06:12:41 <itidus21> so thats problem solving
06:12:58 <itidus21> heheh....
06:13:02 <myndzi\> something like that anyway :)
06:13:10 <myndzi\> i'm playing this 'castle of elite' now hehe
06:13:29 <itidus21> so.. i have started to think about the true power of such kinds of thinking
06:14:31 <itidus21> and so, this topic suggests that the best way to solve what appears to be an unsolvable situation is faith that there is a solution
06:14:48 <myndzi\> i suppose so
06:14:59 <myndzi\> it's more like a tradeoff between time and reward
06:15:14 <myndzi\> in the death row example, no matter how much time you spend, the reward is greater
06:15:25 <itidus21> sometimes the situation is trying to harm us
06:15:25 <myndzi\> but sometimes you don't have enough time, or you spend more than is worth it
06:15:26 <myndzi\> etc.
06:15:46 <zzo38> Read stuff about D&D game I have played. Often we try to do, having things even the dungeons master think is unsolvable, and then it can be solved. That is the best game.
06:17:19 <zzo38> After you put your socks on your cellular phone to absorb the radiation, what is the best way to clean out the radiation from the socks? [A] Put it in the microwave [B] Freeze it [C] Put it in the washing machine by itself [D] Wash them by hand
06:17:39 <zzo38> How many inches in a foot? [A] 12 [B] 49 [C] Meat [D] Pink
06:18:06 <zzo38> How many feet in a cup? [A] 3 [B] 12 [C] 56 [D] My foot doesn't fit in a cup.
06:18:17 <myndzi\> lol.
06:18:29 <itidus21> well i have this document called "ideas". last edited 3rd october. and one of the subheadings i put in is "Non-Obvious Solutions to Game Puzzles"
06:18:39 <itidus21> under this is listed
06:18:58 <itidus21> Wooden horse gift full of soldiers.
06:19:07 <itidus21> Using sword sheath as a weapon.
06:19:13 <itidus21> Holding sword by the blade.
06:19:33 <itidus21> Escaping wagon through wooden floor. (this was on some tv show)
06:19:41 <itidus21> Goku holding Raditz still and allowing Piccolo to kill both of them.
06:20:18 <itidus21> so.. this idea of treating real life situations kind of like puzzles really has my attention.
06:20:53 <itidus21> fits in with what zzo38 just said remarkably well
06:21:36 <zzo38> I think the best way of D&D game is deliberately unsolvable game that a working solution is found anyways.
06:21:59 <itidus21> so "unsolvable" is an illusion?
06:22:28 <zzo38> The dungeons master who invented it think it to be unsolvable but obviously they made a mistake
06:22:48 <itidus21> there are some inevitables like death and taxes
06:31:11 <zzo38> That is the kind of D&D game I like to play. I also like to play monster character, and some strange spells, etc. As well as difficult situation possibly not seem to be solvable. Probably different than most D&D game played.
06:32:08 <myndzi\> well this game departs from obvious satisfyingly quickly
06:32:19 <myndzi\> wish i hadn't been drinking beer all night beforehand now ;)
06:34:32 -!- madbrrr has quit (Read error: Connection reset by peer).
06:39:34 -!- Klisz has quit (Quit: You are now graced with my absence.).
06:41:08 <Patashu> hehe myndzi
06:42:53 <itidus21> zzo38: so i pondered on it a bit.. how does one create a space in which this type of solution exists
06:43:06 <itidus21> we really need a name for it..
06:43:29 <itidus21> such a solution that occurs in a deliberately unsolvable game
06:44:00 <zzo38> I don't know the name for it.
06:44:01 <myndzi\> if it's deliberately unsolvable
06:44:03 <myndzi\> and somebody solves it
06:44:07 <myndzi\> it's not a very good game :)
06:44:32 <itidus21> super mario bros had world -1
06:45:03 <itidus21> that was pretty amazing that a game accidently had the capacity to take you to a level which wasn't supposed to be tere
06:45:27 <myndzi\> world -1 was just data corruption
06:45:28 <myndzi\> :P
06:45:37 <itidus21> so what happened there was.. instead of hard checking
06:46:05 <itidus21> it just accepted whatever warp zone input it got
06:46:42 <itidus21> so this is a strange idea.. that making the rules of a game too formal and enforced.. and the players may well be trapped by them
06:47:14 <myndzi\> personally i like rules
06:47:24 <myndzi\> if the challenge is too open my brain explodes
06:47:24 <myndzi\> ;)
06:47:29 <myndzi\> i am faced with constant indecision
06:47:30 <itidus21> yeah you need rules
06:47:33 <myndzi\> give me a boundary to test any time
06:47:59 <itidus21> street fighter 2 also had some strange glitches
06:48:44 <zzo38> Try to play my Super ASCII MZX Town series of games.
06:48:55 <zzo38> It has some puzzles.
06:49:29 <itidus21> so game playing and problem/puzzle solving and solving the unsolvable and non-obvious solutions all seem to verge into something for me
06:49:55 <zzo38> This is PHP "PuzzleMesh" in case you are interested: http://zzo38computer.cjb.net/prog/PuzzleMesh/PuzzleMesh-0-1-2.zip
06:51:03 <itidus21> super mario bros really fucked with peoples heads.
06:51:52 <itidus21> i study it a lot
06:54:10 <myndzi\> the blue dudes - do they do anything but bounce back and forth?
06:54:13 <myndzi\> i didn't read all the hints
06:54:19 <myndzi\> this one seems kind of pointless
06:54:56 <Patashu> they flip switches they go past
06:54:59 <Patashu> and die if you place a block over them
06:55:03 <Patashu> and kill you
06:55:08 <Patashu> think that's it
06:55:18 <myndzi\> heh ok
06:55:22 <myndzi\> guess he was just a pointless one then
06:55:25 <myndzi\> 2 away from hard
06:55:31 <Patashu> they can also go through teleporters
06:55:44 <myndzi\> yeah, i was just like.. why bother putting this guy here? he's not a challenge
06:55:56 <Patashu> red herring?
06:56:01 * myndzi\ shrugs
07:03:54 <myndzi\> the most rewarding thing for me is when i can logic my way through a puzzle :)
07:04:01 <myndzi\> like 2-12
07:08:33 <itidus21> myndzi\: another one is goku.. he seems to always find a solution to win a fight
07:08:47 <itidus21> he always warns the guy ahead of time.. i will beat you
07:08:53 <itidus21> give up now
07:08:56 <myndzi\> yeah, but that's 'cause he's a Chosen One :P
07:09:38 <itidus21> heh
07:15:20 <zzo38> At the end of the chapter I entered this text: (Can Kjugobe get out of prison (eventually)? What does Also do? Is Also a good name or is it confusing everyone? You don't know? Then you must learn. Read this book next time to learn what happens next$\ldots$)
07:15:24 <zzo38> Is it good?
07:25:17 <Patashu> I got stuck on one of the shareware levels in hero:mesh. the one with three worms and all the crates
07:27:19 <zzo38> Can your computer run 16-bit Windows programs? If so, I can give you the old shareware version
07:27:27 <Patashu> It should be able to it's widnows XP
07:27:29 <Patashu> *windows
07:27:43 <Patashu> If you have more levels for that game that would be cool
07:28:29 <zzo38> Yes I do have more levels I made up. However the shareware program will not load sets with more than three levels, so I will split it into sets with only three levels each if you want to play the more levels I have.
07:28:55 <Patashu> Only if it's not a bother to you
07:30:05 <zzo38> Not right now; maybe another day, though.
07:36:34 <zzo38> The more levels I have even have new kind of pieces, some of which I added in by myself.
07:36:54 <zzo38> This shareware is Falling Hero but it can be used to create and run normal Hero Heart game as well.
07:37:06 -!- Phantom_Hoover has joined.
07:41:43 <myndzi\> huh
07:41:45 <myndzi\> suddenly, dejavu
07:41:56 <myndzi\> i seem to remember this level
07:42:34 <oerjan> you said that before
07:42:40 <myndzi\> wut
07:42:44 * oerjan whistles innocently
07:42:46 <myndzi\> :P
07:44:01 <myndzi\> this level is a troll level
07:44:13 <myndzi\> i wanted to make the thing go up to the top but you don't have to :(
07:44:17 <myndzi\> this solution is much less fun
07:46:05 <myndzi\> omg
07:46:06 <myndzi\> this level too
07:46:11 <myndzi\> i'm going crazy! :P
07:47:22 <oerjan> `log alice.*mad.*come here
07:47:49 <oerjan> `echo hi
07:47:53 <HackEgo> 2008-02-17.txt:00:58:29: <oerjan> "But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "We're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
07:47:53 <HackEgo> hi
07:50:16 <itidus21> `echo Would you like some tea?
07:50:18 <HackEgo> Would you like some tea?
07:51:39 <itidus21> `echo @tell HackEgo I am confused.
07:51:41 <HackEgo> ​@tell HackEgo I am confused.
07:52:58 <oerjan> HackEgo will have put a zero width space before that @, so lambdabot ignores it.
07:53:13 <itidus21> oh i forget which bot s which
07:53:25 <itidus21> thats cool i was starting to feel guilty
07:53:56 <itidus21> i am forgetting that i am going among some clevers
07:59:03 <Patashu> how are you going myndzi?
08:00:03 <myndzi\> 3-8
08:00:06 <myndzi\> and very drunk
08:00:08 <myndzi\> lol
08:00:19 <myndzi\> i swear to god i've played this before
08:00:22 <myndzi\> i remember this level
08:00:22 <myndzi\> :|
08:00:22 -!- zzo38 has quit (Remote host closed the connection).
08:00:57 <Patashu> haha
08:01:02 <Patashu> ok, I need some quick LUA help
08:01:08 <Patashu> how do I iterate over the return values of http://www.wowpedia.org/API_strmatch ?
08:01:36 * oerjan just followed a long chain from U.N.C.L.E. to Jangal movement of Gilan
08:05:50 <oerjan> passing through such articles as Millennium, Comet, Weather, Hearth, Nature, Aesthetics, Demand (economics), Greenhouse gas, House, Democratic Party (United States), Washington D.C, City, Arabic language, United Nations, Refugee, List of ethnic slurs.
08:05:58 <oerjan> (reversed)
08:13:12 <myndzi\> jeah finally
08:13:15 <myndzi\> that took way too many tries
08:13:18 <myndzi\> my brain feels like mud
08:17:16 <Phantom_Hoover> Hey, oerjan, how did the mathematician make sure he got the optimal amount of water from the ground?
08:22:20 <pikhq_> Something something spherical cow
08:23:24 <itidus21> `log euclidean
08:23:52 <HackEgo> 2010-05-23.txt:22:03:07: <Phantom_Hoover> Just make the geometry non-Euclidean.
08:24:06 <Patashu> First, assume ground always sinks in water...
08:24:15 <Phantom_Hoover> pikhq_, he used the well ordering theorem, actually.
08:24:24 <Patashu> ha ha
08:25:29 <myndzi\> harl har
08:25:35 <myndzi\> i passed seven crosses with only six
08:25:36 <myndzi\> ;P
08:29:44 * oerjan throws an unstoppable object at Phantom_Hoover
08:30:01 * Phantom_Hoover ducks
08:30:08 <oerjan> curses, foiled again
08:33:34 -!- Ngevd has joined.
08:33:49 <myndzi\> lol i'm link
08:34:15 <Ngevd> Hello!
08:34:25 <itidus21> so, the idea of unstoppable object basically is a bad rule
08:34:29 <itidus21> in some cases
08:34:42 <itidus21> because... it will be literally unstoppable if the rule has it so
08:34:49 <itidus21> or..
08:34:59 <itidus21> maybe it is that some such rules are good yes
08:35:05 <itidus21> but not all rules should be so concrete
08:35:18 <itidus21> yeah the rule itself is ok
08:35:48 <myndzi\> belgian ales man
08:35:51 <myndzi\> belgian ales
08:36:44 <myndzi\> my hand-eye coordination is about to give out
08:36:44 <myndzi\> ;p
08:36:53 <myndzi\> ok which levels were you having trouble with?
08:36:54 <myndzi\> i'm on elite
08:41:32 -!- oerjan has quit (Quit: Bye).
08:42:01 * pikhq_ throws an immovable object at KERNEL PANIC. CORE DUMPED.
08:42:08 -!- Ngevd has quit (Ping timeout: 252 seconds).
08:42:26 <Phantom_Hoover> myndzi\, who are you talking to?
08:42:35 <myndzi\> patashu
08:46:22 <Patashu> yo
08:46:26 <Patashu> oh
08:46:36 <Patashu> 9,10,11,12 + the finalest level
08:46:39 <Patashu> are the only ones I haven't solved
08:46:44 <Phantom_Hoover> What're you trying to play?
08:46:59 <myndzi\> ah, only on 4-2 so far
08:47:04 <Patashu> Castle of Elite
08:54:49 <myndzi\> i remember this level too
08:54:57 <myndzi\> i must have played this
08:55:02 <myndzi\> don't remember when or anything about it though
08:56:38 <Patashu> it's possible you could have, it's fairly old
08:56:56 <myndzi\> if i did i ran into it the same way, you
08:56:56 <myndzi\> haha
08:58:03 <myndzi\> if i did i must have beaten it
08:58:05 <myndzi\> i'd remember if i didn't
08:58:06 <myndzi\> hmmm
08:58:31 <Patashu> so if you beat the whole game really quickly can I assume it's because of supressed memories?
08:58:37 <myndzi\> lol
08:58:43 <myndzi\> nah, i don't remember any solutions
08:58:53 <myndzi\> i've just hit like 5 levels that seem familiar
08:59:34 <myndzi\> 4-2 is annoying
08:59:45 <myndzi\> but it's a great example of the kind of level i don't mind
09:00:06 <myndzi\> in one instance or a handful, i mean
09:00:12 <myndzi\> as opposed to an entire game of it
09:04:33 -!- kallisti has joined.
09:04:34 -!- kallisti has quit (Changing host).
09:04:34 -!- kallisti has joined.
09:05:27 <kallisti> hey
09:05:51 <kallisti> monqy: hello
09:05:58 <monqy> kallisti: hi
09:06:10 <monqy> help im in python hell
09:06:27 <monqy> i made incredibly stupid pattern matching to ease the pain but it still hurts
09:06:58 <kallisti> monqy: give me something more specific and maybe I can help? :P
09:07:09 <monqy> nothing specific
09:07:10 <monqy> just hell
09:07:11 <kallisti> or is there no escape?
09:07:21 <Phantom_Hoover> monqy, are you sure it's not Python purgatory?
09:07:25 <monqy> hm
09:07:38 <kallisti> monqy: use more metaclasses
09:07:39 <kallisti> problem solved.
09:07:40 <monqy> punishment for me thinking taking this class would be a good idea
09:09:52 <monqy> with what do metaclasses help? everything?
09:10:39 <kallisti> yes always
09:10:52 <kallisti> "there is only metaclass to do it with" -- Python slogan
09:10:56 <kallisti> *only one
09:11:37 <monqy> I've never used metaclasses or decorators or anything like that..usually I avoid python, but this time I had no choice
09:11:46 <monqy> where by used I mean
09:11:48 <monqy> made them myself
09:11:56 <kallisti> decorators are good
09:12:10 <kallisti> kind of cumbersome to actually write, when they take parameters and stuff
09:12:15 <kallisti> but useful once you have them
09:13:00 <kallisti> of course the fact that they're syntactic sugar is simply a weakness of Python syntax.
09:13:03 <myndzi\> nice solution though annoying to implement
09:13:42 <kallisti> the decorator syntax would be completely unecessary if Python had good lambda syntax
09:15:38 -!- hagb4rd has joined.
09:16:47 <Jafet> Lambdas are evil
09:16:51 <Jafet> Shame on you kallisti
09:16:58 <kallisti> I hope you're joking.. :P
09:17:09 <Jafet> You hope guido is joking
09:17:18 <kallisti> ...yes, I do.
09:17:20 <Jafet> But hope isn't cheap these days
09:17:28 <kallisti> I hope Python is revealed to be a joke language one day.
09:17:31 <monqy> it frustrated me when i tried reading the functional python guide and it told me that lambdas are unreadable and should be avoided
09:17:43 <kallisti> monqy: everything is unreadable.
09:17:57 <kallisti> assignment expressions? unreadable
09:17:57 <monqy> why did that guy write documentation on functional python if he can't aaaaaaaaaaaaaaaaagh
09:18:13 <Patashu> c obfuscation contest? unreadable
09:18:14 <kallisti> python is basically not functional, though it claims to be.
09:18:29 <kallisti> the fact that functions are first-class really is not enough.
09:18:41 <monqy> python claims to be functional?
09:18:51 <kallisti> yes.
09:19:01 <kallisti> paradigms: object-oriented, imparative, functional
09:19:08 <kallisti> *imperative
09:19:12 <monqy> ahaha really?
09:19:14 <kallisti> yep
09:19:16 <Phantom_Hoover> <monqy> with what do metaclasses help? everything?
09:19:18 <monqy> who PUT that there
09:19:27 <kallisti> guido I'd guess? dunno
09:19:32 <monqy> pffffffffffffff
09:19:39 <Phantom_Hoover> Are metaclasses that thing cpressey linked to that I tried to make the Sierpinski numbers in response to?
09:20:01 <Jafet> van Rossum: setting dutch computer science back 80 years.
09:20:30 <kallisti> monqy: bahaha, "I’ll start by looking at a Python language feature that’s an important foundation for writing functional-style programs: iterators."
09:20:38 <kallisti> monqy: http://docs.python.org/howto/functional.html
09:20:56 <Phantom_Hoover> Oh, wait, no, that was those abstract base thingies.
09:21:03 <monqy> kallisti: yeah that's the one
09:21:22 <kallisti> "I'll start by looking at a Python language feature that's an important foundation for writing functional-style programs: object-orientation" -- this guide, in essence
09:21:48 <kallisti> Phantom_Hoover: metaclasses are to classes as classes are to objects
09:22:03 <kallisti> you use them to alter behavior during class creation.
09:22:13 <kallisti> they're usually not needed.
09:22:14 <monqy> "But it would be best of all if I had simply used a for loop:
09:22:14 <monqy> total = 0
09:22:16 <monqy> for a, b in items: total += b"
09:22:19 <monqy> this makes me so mad
09:22:21 <kallisti> but Django uses them for example for its DB model classes.
09:22:27 <monqy> for loops can go to hell
09:22:36 <kallisti> monqy: for loops: the essence of functional programming
09:23:24 <kallisti> "A theoretical benefit is that it’s easier to construct a mathematical proof that a functional program is correct."
09:23:36 <kallisti> wow this statement should be in a functional programming tutorial for Python.
09:23:40 <kallisti> *should NOT
09:26:23 <monqy> i wonder what otherr howtwos there are
09:26:37 <Patashu> I'm on the fourth level of mesh, falling hero and already hard
09:26:41 <Patashu> no clue what I'm expected to do
09:26:41 <monqy> here's a howto on python advocacy
09:26:44 <monqy> how to advocate python
09:27:00 <monqy> idioms and anti-idioms, this should also be good
09:27:01 <Sgeo> monqy, Python for loops are really foreach
09:27:11 <monqy> Sgeo: they can still go to hell
09:27:27 <Sgeo> Haskell has a foreach, it calls it forM_
09:27:31 <Sgeo> :t forM_
09:27:32 <lambdabot> forall a (m :: * -> *) b. (Monad m) => [a] -> (a -> m b) -> m ()
09:27:40 <monqy> haskell has lots of things
09:28:16 <kallisti> Sgeo: Haskell has decorators. they're called functions.
09:28:19 <kallisti> therefore..... (????)
09:30:30 <kallisti> on an unrelated note, I'm reading an article on how automatic transmissions work.
09:30:33 <kallisti> and it's blowing my mind.
09:30:37 <kallisti> so complicated.
09:32:52 <Phantom_Hoover> It rests on planetary gears, right?
09:33:46 <kallisti> yes
09:38:07 -!- monqy has quit (Quit: hello).
09:39:13 <myndzi\> mmk too drunk to continue :P
09:39:26 <myndzi\> completed: all the lower levels and 1-5 of elite
09:39:42 <Patashu> haha appreciate it
09:39:45 <myndzi\> if i remember i'll come back to it tomorrow and see if i can't crack the ones you have left
09:39:46 <myndzi\> :)
09:40:00 <myndzi\> i'll leave the game up to remind me!
09:47:06 <kallisti> Phantom_Hoover: http://static.howstuffworks.com/gif/automatic-transmission-brain.jpg
09:47:22 <kallisti> all of those passageways rooute the hydraulic fluid that determines when the car shifts gears.
09:49:12 <kallisti> so for example if you're accelerate rapidly it will shift at highe RPMS, but if you're accelerating softly it will shift at lower RPMs, and if you go full throttle the car will downshift (to increase the gear ratio so that the car accelerates faster, presumably what you wanted to do)
09:50:43 <Jafet> For some strange reason, we still aren't letting cars just drive themselves
09:50:49 <Jafet> Silly peoples
09:51:09 -!- derdon has joined.
09:52:50 <kallisti> automatic transmissions
09:52:55 <kallisti> are so much simpler than this.
09:52:56 <kallisti> er
09:53:01 <kallisti> s/automatic/manual/
09:56:13 <kallisti> also there's a little valve on the drive shaft that opens wider via centrifugal force as the drive shaft spins; this is what controls the fluid pressure in the hydraulic system. more pressure = faster speed.
09:57:25 <Sgeo> UPDATE
09:58:20 <kallisti> it's like...
09:58:25 <kallisti> hydraulic logic circuits.
09:58:27 <kallisti> SO COOL.
10:03:05 -!- Ngevd has joined.
10:03:48 <Patashu> wow, awesome
10:03:54 <Patashu> mesh: falling hero has water pressure XD
10:23:45 -!- derdon has quit (Remote host closed the connection).
10:37:55 -!- derrik has joined.
10:57:48 -!- bigmuzzy has joined.
10:59:54 -!- bigmuzzy has left.
11:08:04 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
11:09:39 -!- sebbu2 has changed nick to sebbu.
11:29:03 -!- hhj has joined.
11:29:26 <hhj> Hi
11:29:34 <Ngevd> Hello
11:30:13 <hhj> FireFly: hi
11:30:18 <hhj> Hey
11:30:40 <hhj> fizzie: oy
11:30:51 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:37:43 -!- hhj has quit (Remote host closed the connection).
11:59:38 <Ngevd> Who's hhj?
13:02:43 <Phantom_Hoover> Hoover Heavy Juggalo.
13:02:47 <Phantom_Hoover> We use him for PR.
13:13:22 <Ngevd> I'm the only person I have ever heard of who convinced himself that his best friend was imaginary
13:14:24 <Sgeo> You like the number i?
13:14:28 <Sgeo> (Sorry)
13:14:48 <Ngevd> Bah, i is as real (in the non-mathematical sense) as any other number
13:15:07 <Ngevd> But yeah, I did once convince myself that my best friend was imaginary
13:15:14 <Ngevd> It was scarily easy
13:15:20 <Ngevd> I'm pretty sure he isn't
13:15:54 <Jafet> Have you told him to get real?
13:17:31 <Ngevd> Missed opportunity right there
13:17:52 <Ngevd> Can Haiku use Java?
13:18:59 <Phantom_Hoover> Have you tried adding him to his complex complement?
13:25:40 <Ngevd> Hmm
13:25:43 <Ngevd> Could work
13:25:46 <Ngevd> How do I unaway?
13:26:56 <Ngevd> There we go
13:28:53 <oklopol> Ngevd: i wondered if my friends are real in elementary school
13:29:20 <Ngevd> But did you convince yourself with a rational argument?
13:30:12 <oklopol> and i made sure i have as complete as possible a graph between all the people i know with respect to knowing each other
13:30:40 <Ngevd> Mine would be...
13:30:42 <oklopol> Ngevd: like what? i certainly convinced myself that there's no way to know
13:31:03 <Ngevd> I reasoned that he had come into my life when I was feeling lonely
13:31:28 <Ngevd> And is really cool and stuff and isn't the kind of person who would be friends with me
13:32:18 <Ngevd> So, it was quite likely that he was a fabrication of my mind
13:32:37 <oklopol> did you do any sort of checks?
13:33:07 <Ngevd> The next day, I asked him if he was real
13:33:10 <Ngevd> He said "yes"
13:33:16 <Ngevd> Then I asked his girlfriend
13:33:20 <Ngevd> She said "yes"
13:33:24 <oklopol> it's sort of trivial to at least make sure that it's not the case that that friend is imaginary in all instances, and your other friends never are.
13:33:41 <oklopol> his girlfriend, who's a third party you only know through him?
13:33:51 <Ngevd> !!!
13:34:19 <Ngevd> No, other people know him, who I met before him
13:34:28 <oklopol> and why the hell would you ask them that, are you crazy enough that that's considered normal for you? :P
13:34:37 <Ngevd> Pretty much
13:34:50 <Ngevd> I once almost convinced myself that /I'm/ imaginary
13:34:58 <Ngevd> Suck on that, Descartes!
13:35:12 <oklopol> i'm not at all sure i exist either
13:35:14 -!- oerjan has joined.
13:35:39 <Ngevd> oerjan, do you know whether oklopol or I exist?
13:35:54 <oerjan> heh
13:36:40 <oerjan> well i don't know whether this laptop i'm typing on exists...
13:37:01 <Ngevd> Now I will go and see the new Tintin film
13:37:40 <oklopol> Ngevd: but anyhow i never asked anyone if they exist, since i went with the all or nothing assumption in imaginary friends, instead i actually went through literally everyone i know and tried to made sure they have a connection to my parents
13:38:57 <oklopol> i was like 8 so i didn't know it would have to be someone important to me
13:39:22 <Ngevd> I was 14 or 15 when this happened
13:39:54 <Ngevd> Wait, it was just before my 16th birthday
13:39:55 <oklopol> at 15, i don't think i would've given a shit if my friends were imaginary
13:40:16 <Ngevd> I will go watch movie now
13:40:23 <oklopol> have fun
13:40:27 <oklopol> i would now, probably
13:40:27 <Ngevd> Farewell, people of similar interests!
13:40:28 -!- Ngevd has quit (Quit: Leaving).
13:40:55 <oklopol> being afraid you might just be insane is not really an interest
13:41:02 <oklopol> it's not, right?
13:41:34 <Jafet> As we might just be insane, it could be.
13:42:00 <oklopol> u see.
13:42:30 <Jafet> I bet oklopol is imaginary.
13:43:20 <oklopol> who knows
13:45:48 <oerjan> `log alice.*mad.*come here
13:45:54 <HackEgo> 2011-07-16.txt:21:17:53: <oerjan> "But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
13:46:48 <oerjan> !python print "test"
13:46:51 <EgoBot> test
13:47:23 <oerjan> !python print re('''"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."''')
13:47:24 <EgoBot> Traceback (most recent call last):
13:47:30 <oerjan> oops
13:47:40 <oerjan> !python print rep('''"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."''')
13:47:41 <EgoBot> Traceback (most recent call last):
13:47:56 <oerjan> dammit what is the name of that function
13:48:24 <Jafet> !python print "test"*999999999
13:48:24 <EgoBot> Traceback (most recent call last):
13:48:37 <oerjan> oh hm
13:48:56 <oerjan> !python print '%r'%'''"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."'''
13:48:57 <EgoBot> ​'"But I don\'t want to go among mad people," Alice remarked. "Oh, you can\'t help that," said the Cat: "we\'re all mad here. I\'m mad. You\'re mad." "How do you know I\'m mad?" said Alice. "You must be," said the Cat, "or you wouldn\'t have come here."'
13:49:44 <oerjan> `python test
13:49:47 <HackEgo> python: can't open file 'test': [Errno 2] No such file or directory
13:49:59 <oerjan> `python -e print "test"
13:50:02 <HackEgo> Unknown option: -e \ usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... \ Try `python -h' for more information.
13:50:21 <oerjan> *sigh*
13:50:30 <oerjan> `run echo '\''
13:50:32 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
13:50:38 <oerjan> goddammit
13:51:00 <oerjan> oh wait
13:51:46 <Jafet> !python print repr("Only the fool would take trouble to verify that his sentence was composed of ten a's, three b's, four c's, four d's, forty-six e's, sixteen f's, four g's, thirteen h's, fifteen i's, two k's, nine l's, four m's, twenty-five n's, twenty-four o's, five p's, sixteen r's, forty-one s's, thirty-seven t's, ten u's, eight v's, eight w's, four x's, eleven y's, twenty-seven commas, twenty-three apostrophes, seven hyphens and, last but not least
13:51:47 <EgoBot> File "<stdin>", line 1
13:53:04 <oerjan> `run echo '"But I don'"'"'t want to go among mad people," Alice remarked. "Oh, you can'"'"'t help that," said the Cat: "we'"'"'re all mad here. I'"'"'m mad. You'"'"'re mad." "How do you know I'"'"'m mad?" said Alice. "You must be," said the Cat, "or you wouldn'"'"'t have come here." >wisdom/mad
13:53:06 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
13:53:14 <oerjan> `run echo '"But I don'"'"'t want to go among mad people," Alice remarked. "Oh, you can'"'"'t help that," said the Cat: "we'"'"'re all mad here. I'"'"'m mad. You'"'"'re mad." "How do you know I'"'"'m mad?" said Alice. "You must be," said the Cat, "or you wouldn'"'"'t have come here."' >wisdom/mad
13:53:16 <HackEgo> No output.
13:53:21 <oerjan> `? mad
13:53:23 <HackEgo> ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
13:54:50 <oerjan> oh hm...
13:55:18 <oerjan> `learn "But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
13:55:20 <HackEgo> I knew that.
13:55:29 <oerjan> `? "But
13:55:31 <HackEgo> ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
13:56:03 <oerjan> `run mv wisdom/'"But' wisdom/mad
13:56:05 <HackEgo> mv: cannot stat `wisdom/"But': No such file or directory
13:56:15 <oerjan> huh
13:56:24 <oerjan> `ls wisdom
13:56:26 <HackEgo> ​"but \ ? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ category \ elliott \ everyone \ finland \ finns \ fizzie \ flower \ friendship \ functor \ fungot \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ kallisti \ mad \ monad \ monads \ monoid \ monqy \ nooga \ oerjan \ oklopol \ phantom__hoover \ phantom_hoover \ php \ qdb \ qdbformat \ quine \ sgeo \ shachaf \ u \ vorpal \ welcome \ wiki \ you
13:56:33 <oerjan> ah
13:56:41 <oerjan> `run mv wisdom/'"but' wisdom/mad
13:56:43 <HackEgo> No output.
13:56:48 <oerjan> `? mad
13:56:50 <HackEgo> ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
13:57:18 <Jafet> "She's mad!" ~ Meg Giry
14:39:09 -!- PiRSquared17 has joined.
14:44:22 -!- PiRSquared17 has changed nick to PiRSquared17Bot.
14:44:34 -!- PiRSquared17Bot has quit (Changing host).
14:44:34 -!- PiRSquared17Bot has joined.
14:48:12 -!- PiRSquared17Bot has changed nick to PiRSquared.
14:48:22 -!- PiRSquared has quit (Changing host).
14:48:23 -!- PiRSquared has joined.
14:48:45 -!- PiRSquared has left.
14:54:23 -!- derrik has joined.
15:06:49 <Phantom_Hoover> Aww, Introversion god rid of their motto.
15:17:45 <Sgeo> Hmm?
15:28:25 <Phantom_Hoover> *got
15:28:39 <Phantom_Hoover> It used to be "The last of the bedroom programmers."
15:44:52 -!- kallisti has quit (Ping timeout: 276 seconds).
15:46:22 -!- kallisti has joined.
15:46:23 -!- kallisti has quit (Changing host).
15:46:23 -!- kallisti has joined.
16:02:32 -!- augur has quit (Remote host closed the connection).
16:03:24 -!- oklopol has left.
16:03:33 -!- oklopol has joined.
16:16:54 -!- ais523 has joined.
16:17:20 -!- MSleep has changed nick to MDude.
16:19:50 -!- elliott has joined.
16:20:05 <elliott> -MemoServ- You have 8 new memos.
16:20:05 <lambdabot> elliott: You have 6 new messages. '/msg lambdabot @messages' to read them.
16:20:23 <ais523> why is elliott being spammed with messages?
16:20:31 * oerjan whistles innocently
16:20:46 <oerjan> well, a few of them may be mine
16:20:50 <elliott> memoserv sends receipts :P
16:21:09 <elliott> -MemoServ- They must be read one by one. ;P
16:21:12 <elliott> oerjan: /ms read new
16:21:16 <elliott> repeat until done
16:21:24 <oerjan> elliott: yeah yeah
16:24:32 -!- Ngevd has joined.
16:25:35 -!- oerjan has quit (Quit: Good night).
16:27:45 -!- plycke has joined.
16:27:45 -!- plycke has quit (Excess Flood).
16:28:28 <Ngevd> Hello!
16:36:53 <ais523> hi
16:37:03 <ais523> <-- oerjan has left this server (Quit: Good night).
16:37:13 <ais523> that was at 4:25 UTC
16:37:18 <ais523> which is not night-time in Norway
16:37:21 <ais523> mystery?
16:37:26 <Ngevd> He could be far up North?
16:37:54 <elliott> ais523: oh come on, you know oerjan's sleep schedule by now
16:38:04 <elliott> that's at least two people who aren't paying enough attention to the channel
16:38:18 <elliott> you both know who you are and I'm disappointed in you
16:38:44 <ais523> `
16:38:46 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
16:45:13 -!- derrik has quit (Quit: sauna).
16:57:25 <elliott> ais523: i think you may need a new response
16:57:38 <ais523> heh
16:57:45 <ais523> I was half-wondering if HackEgo would do that
17:05:14 <Phantom_Hoover> Oh god is Sgeo reading Dr McNinja.
17:25:55 -!- ais523 has changed nick to ais523\unfoog.
17:34:53 <Ngevd> Huh
17:35:12 <Ngevd> I didn't make any CoaPs in the 300's or 500's
17:36:13 <Phantom_Hoover> And that's terrible.
17:45:17 -!- PiRSquared17 has joined.
17:56:06 <Ngevd> I follow 24 webcomics
17:56:29 <Ngevd> 23
17:56:51 <Ngevd> In ALPHABETICAL ORDER!!!
17:57:37 <elliott> there are fewer comics depending on the order you count them in?
17:57:54 <PiRSquared17> LOL
17:57:54 <Ngevd> No, I just stopped reading Three Panel Soul
17:58:07 <Ngevd> And announced that I was going to say them all in alphabetical order
17:58:13 <PiRSquared17> ...
17:58:17 <elliott> `addquote <itidus21> myndzi\: ok so one of the nastiest puzzles i suppose is... you're on death row.. you don't want to die.
17:58:20 <HackEgo> 739) <itidus21> myndzi\: ok so one of the nastiest puzzles i suppose is... you're on death row.. you don't want to die.
17:59:10 <elliott> Ngevd: We're all waiting. :'(
17:59:41 <PiRSquared17> `karma+ elliott
17:59:46 <HackEgo> elliott now has 1 karma.
17:59:56 <elliott> Why don't I have a billion karma.
18:00:06 <Ngevd> Awkward Fumbles, Brawl in the Family, Cheer, City of Reality, Comments on a Postcard, Darths & Droids, El Goonish Shive, Freefall, Girl Genius, Goost 26, Gunnerkrigg Court, Homestuck, Irregular Webcomic, Lightning Made of Owls, Misfile, New World Comics, Sparkling Generation Valkyrie Yuuki, Square Root of Minus Garfield, Super Effective, Tranquility Base, xkcd, and The Wotch
18:00:15 <elliott> t comes after x
18:00:18 <elliott> as everyone knows
18:00:25 <PiRSquared17> `cat karma/elliott
18:00:26 <Ngevd> The "the" isn't counted
18:00:28 <HackEgo> cat: karma/elliott: Not a directory
18:00:30 -!- monqy has joined.
18:00:36 <Ngevd> `ls karma
18:00:39 <HackEgo> karma
18:00:47 <Ngevd> `ls karma/karma
18:00:49 <HackEgo> ls: cannot access karma/karma: Not a directory
18:01:00 <Ngevd> `cat karma/karma
18:01:02 <HackEgo> cat: karma/karma: Not a directory
18:01:10 * elliott facepalm
18:01:11 <PiRSquared17> ...
18:01:16 <elliott> `run ls -lh karma
18:01:18 <HackEgo> ​-rw-r--r-- 1 5000 0 25 Nov 26 18:01 karma
18:01:19 <PiRSquared17> `more karma/karma
18:01:21 <HackEgo> karma/karma: Not a directory
18:01:26 <elliott> IT'S NOT A DIRECTORY
18:01:26 <PiRSquared17> `more karma
18:01:29 <HackEgo> elliott now has 1 karma.
18:01:31 <Ngevd> `dog karma
18:01:33 <elliott> IT'S TOLD YOU IT'S NOT A DIRECTORY ABOUT FIVE THOUSAND TIMES
18:01:33 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: dog: not found
18:01:56 <PiRSquared17> `ls karma
18:01:58 <HackEgo> karma
18:02:05 <monqy> hi
18:02:06 <PiRSquared17> `cat karma/karma
18:02:07 <HackEgo> cat: karma/karma: Not a directory
18:02:09 <monqy> no stop
18:02:10 <monqy> stop
18:02:11 <monqy> i
18:02:12 <monqy> ;_;
18:02:12 <PiRSquared17> ?
18:02:21 <monqy> not a directory ;_; ;_; ;_;
18:02:37 <elliott> `file karma
18:02:39 <HackEgo> karma: ASCII text
18:02:50 <PiRSquared17> `cat karma
18:02:52 <HackEgo> elliott now has 1 karma.
18:03:04 <PiRSquared17> `whereis karma
18:03:07 <HackEgo> karma:
18:03:10 <PiRSquared17> `which karma
18:03:12 <HackEgo> ​/hackenv/bin/karma
18:03:17 <Ngevd> `who karma
18:03:18 <PiRSquared17> `cat ​/hackenv/bin/karma
18:03:19 <HackEgo> No output.
18:03:20 <HackEgo> cat: ​/hackenv/bin/karma: No such file or directory
18:03:25 <PiRSquared17> ???
18:03:31 <elliott> `pwd
18:03:33 <HackEgo> ​/hackenv
18:03:35 <elliott> `ls bin/karma
18:03:37 <HackEgo> bin/karma
18:03:42 <elliott> `cat /hackenv/bin/karma
18:03:44 <HackEgo> ​#!/bin/sh \ echo "$1 has $(lib/karma "$1") karma."
18:03:59 <elliott> dunno why it didn't work that time
18:04:03 <Ngevd> `ls lib/karma
18:04:05 <HackEgo> lib/karma
18:04:34 <Ngevd> `karma Ngevd
18:04:39 <HackEgo> Ngevd has 0 karma.
18:04:42 <Ngevd> `karma Taneb
18:04:46 <HackEgo> Taneb has 0 karma.
18:04:50 <Ngevd> Aww
18:04:54 <elliott> `karma+ Ngevd
18:04:59 <HackEgo> Ngevd now has 1 karma.
18:04:59 <elliott> `karma- Taneb
18:05:04 <HackEgo> Taneb now has -1 karma.
18:05:10 <PiRSquared17> @pointless \x -> f x x
18:05:10 <lambdabot> join f
18:05:19 <PiRSquared17> @pointless \x -> x ^2
18:05:20 <lambdabot> (^ 2)
18:05:23 <PiRSquared17> obv
18:05:41 <Ngevd> @pointless \a b -> b
18:05:41 <lambdabot> const id
18:05:52 <Ngevd> @pointless \a b -> b a
18:05:53 <lambdabot> flip id
18:06:27 <Ngevd> `karma Taneb|Hovercraft
18:06:31 <HackEgo> Taneb|Hovercraft has 0 karma.
18:06:32 <Ngevd> `karma Taneb|Kindle
18:06:37 <HackEgo> Taneb|Kindle has 0 karma.
18:06:48 <Ngevd> `karma ettioll
18:06:53 <HackEgo> ettioll has 0 karma.
18:07:07 <Ngevd> `karma noqmy
18:07:11 <HackEgo> noqmy has 0 karma.
18:07:18 <Ngevd> Nobody karmas any of me
18:07:24 <Ngevd> Except for elliott, but he balances out
18:07:36 <elliott> :(
18:07:38 <elliott> `karma+ Ngevd
18:07:43 <HackEgo> Ngevd now has 2 karma.
18:07:50 <Ngevd> `karma+ elliott
18:07:55 <HackEgo> elliott now has 2 karma.
18:08:06 <elliott> Karmae.
18:08:25 <Ngevd> Could be Greek
18:08:58 <monqy> `karma+ noqmy
18:09:03 <HackEgo> noqmy now has 1 karma.
18:09:10 <Ngevd> karmai
18:09:16 <Ngevd> `karma+ fungot
18:09:17 <fungot> Ngevd: ' heheh, i gets heads like that myself when i first arrived here. but if she'd had to take it away
18:09:20 <HackEgo> fungot now has 1 karma.
18:09:33 <Ngevd> Because fungot is awesome
18:09:33 <fungot> Ngevd: brutha stepped back. no‑one bothered her when she goes home.' he
18:09:40 <elliott> Karmae.
18:09:42 <elliott> oops
18:09:44 <elliott> `karma+ fungot
18:09:44 <elliott> `karma+ fungot
18:09:44 <fungot> elliott: ' good idea, like another drink. then she looked at the man's mind?" said rincewind.
18:09:44 <elliott> `karma+ fungot
18:09:45 <elliott> `karma+ fungot
18:09:45 <fungot> elliott: " that's right. i'm working, people are saying it might have happened.' vimes sighed. all around them, she thought, that was just the lady's maid to queen molly."
18:09:45 <fungot> elliott: " hmm?" captain vimes, who shrugged.
18:09:45 <fungot> elliott: ' er... well, to have sky on the horizon like a lightly-poached egg.' he pinched the bridge of his nose again.
18:09:50 <elliott> `karma+ fungot
18:10:02 <monqy> `karma+ fungot
18:10:02 <fungot> monqy: the elf looked down at his face with the effort of calculation.
18:10:04 <Ngevd> `karma- boxbot # nobody likes boxbot
18:10:14 <monqy> whats a boxbot
18:10:16 <HackEgo> fungot now has 2 karma.
18:10:23 <HackEgo> fungot now has 2 karma.
18:10:26 <HackEgo> fungot now has 2 karma.
18:10:26 <HackEgo> boxbot # nobody likes boxbot now has -1 karma.
18:10:29 <HackEgo> fungot now has 2 karma.
18:10:30 <HackEgo> fungot now has 2 karma.
18:10:30 <HackEgo> fungot now has 2 karma.
18:10:32 <Ngevd> WHAT
18:10:34 <elliott> `karma fungot
18:10:34 <fungot> elliott: " ok," said leonard.
18:10:39 <elliott> commands are isolated
18:10:43 <HackEgo> fungot has 3 karma.
18:10:51 <elliott> commands are isolated
18:10:53 <elliott> oops
18:10:55 <elliott> `karma fungot
18:10:55 <fungot> elliott: angua glanced through the grubby window. the fog was hull that had been in the baby's mind, l can tell by the way the sphinx was moving its lips silently, as though it moved of its own.
18:10:59 <HackEgo> fungot has 3 karma.
18:11:03 <elliott> huh :P
18:11:11 <Ngevd> monqy, Gunnerkrigg court
18:13:07 <Ngevd> http://gunnerkrigg.proboards.com/index.cgi?board=general&action=display&thread=410&page=1
18:13:58 <PiRSquared17> > map (\x -> x^2 - x*2 - x+2) [0..]
18:13:58 <lambdabot> Ambiguous occurrence `-'
18:13:59 <lambdabot> It could refer to either `L.-', defined at <local...
18:14:14 <PiRSquared17> > map (\x -> (x^2) - (x*2) - (x+2)) [0..]
18:14:14 <lambdabot> Ambiguous occurrence `-'
18:14:15 <lambdabot> It could refer to either `L.-', defined at <local...
18:14:17 <PiRSquared17> ...
18:14:27 <PiRSquared17> > map (\x -> ((x^2) - (x*2)) - (x+2)) [0..]
18:14:27 <lambdabot> Ambiguous occurrence `-'
18:14:28 <lambdabot> It could refer to either `L.-', defined at <local...
18:14:37 <PiRSquared17> @more
18:15:39 <monqy> boxbot looks friendly and nice
18:15:42 <monqy> a friend??
18:15:48 <Ngevd> BOXBOT IS TERRIBLE
18:15:55 <Ngevd> NOBODY LIKES BOXBOT
18:16:06 <Ngevd> He's just a box with arms
18:16:11 <Ngevd> You may be thinking of Robox
18:16:12 <monqy> i love boxbot already
18:16:21 <Ngevd> Everyone loves Robox
18:16:27 <monqy> whats a robox
18:16:38 <Ngevd> "Box with legs" doesn't even BEGIN to describe it
18:16:49 <monqy> then both are good
18:17:05 <PiRSquared17> Roblox?
18:17:08 <Ngevd> http://www.gunnerkrigg.com/archive_page.php?comicID=510
18:17:13 <PiRSquared17> robox?
18:17:17 <PiRSquared17> boxbot?
18:17:36 <Ngevd> http://www.gunnerkrigg.com/archive_page.php?comicID=205
18:17:43 <elliott> `addquote <Ngevd> BOXBOT IS TERRIBLE <Ngevd> NOBODY LIKES BOXBOT <Ngevd> He's just a box with arms <monqy> i love boxbot already
18:17:44 <HackEgo> 740) <Ngevd> BOXBOT IS TERRIBLE <Ngevd> NOBODY LIKES BOXBOT <Ngevd> He's just a box with arms <monqy> i love boxbot already
18:18:19 <monqy> im conclude: both robox and boxbot are good
18:18:26 <Ngevd> LIES
18:18:32 <Ngevd> BOXBOT IS TERRIBLE
18:18:40 <monqy> lies
18:18:43 <monqy> boxbot is friend
18:18:48 <monqy> friendbot
18:18:53 <monqy> boxfriend
18:19:14 <elliott> im friend too
18:19:17 <elliott> of box
18:19:17 <elliott> bot
18:20:24 <Ngevd> http://gunnerkrigg.wikia.com/wiki/Boxbot
18:20:43 <oklopol> MAY ANGLES GUIDE YOU THROUGH THE HARD TIMES
18:21:54 <elliott> hi oklopol
18:22:01 <oklopol> hi elliott
18:22:37 <oklopol> okokokokokokokokokoko
18:22:40 <oklopol> okokokokokokokokokoko
18:22:42 <oklopol> kokok
18:22:44 <oklopol> kjgj
18:22:45 <oklopol> okko
18:22:47 <oklopol> ollon
18:23:06 -!- copumpkin has joined.
18:23:19 <elliott> avant okoing
18:24:28 <oklopol> maybe i could have a beer if i reached really far under my desk
18:24:54 <Ngevd> Maybe I could have a beer if I went to oklopol's desk and stole it from him
18:25:01 <Ngevd> oklopol, where's your desk?
18:25:40 <oklopol> under my roof.
18:25:53 <oklopol> which i rent so it's mine for now
18:26:08 <Ngevd> Hmm
18:26:17 <oklopol> i also rent the ceiling
18:26:18 <Ngevd> I've been meaning to go to oklopol-house
18:26:47 <oklopol> i don't really let people in before i clean this place up
18:26:49 <oklopol> so never
18:27:02 <oklopol> well under special circumstances
18:27:29 <elliott> sorry Ngevd oklopol prioritises me over you
18:27:33 <elliott> (it's a funny joke)
18:28:12 <oklopol> well i don't really know much about Ngevd
18:28:34 <Ngevd> I'm like elliott but simultaneously less and more weird
18:28:35 <oklopol> unless he's also used other nicks. my irc memory is getting kind of worse.
18:28:40 <elliott> oklopol: taneb
18:28:41 <Ngevd> I'm Taneb
18:28:48 <oklopol> i knew that
18:28:52 <oklopol> kind of
18:28:53 <elliott> no then
18:28:56 <Ngevd> You're quoted on my User page
18:29:31 <oklopol> right so okay i know a lot about Ngevd then, and i should definitely consider sleeping more
18:29:39 <oklopol> i think i'm becoming even stupider
18:29:57 <elliott> quite impossible :D :D :D D:D D D:
18:29:57 <PiRSquared17> `log all me
18:30:10 <elliott> all me
18:30:23 <PiRSquared17> `log numbers\ of\ 0
18:30:23 <HackEgo> 2009-11-01.txt:13:05:52: <AnMaster> ehird, and those spaces are all messed up
18:30:28 <HackEgo> No output.
18:30:31 <PiRSquared17> `log all me
18:30:36 <HackEgo> 2010-11-27.txt:18:54:44: <Vorpal> elliott, also why did you call me crazy?
18:30:44 <PiRSquared17> `log are all me
18:30:45 <elliott> all me
18:30:47 <oklopol> our game can only handle 17000 elevators before it starts getting slow :(
18:30:49 <HackEgo> 2011-02-14.txt:23:46:34: <elliott> Our minorities statistics are all messed up. Er, Christians are in a minority, right?
18:30:56 <elliott> oklopol: whats evelator
18:31:25 <oklopol> nono you have to read it from left to right, otherwise it might change its meaning
18:31:27 <oklopol> try again
18:31:56 <elliott> oklopol: whats
18:31:58 <elliott> oklopol: elevator
18:32:10 <oklopol> it's just a thing that goes back and forth
18:33:44 <oklopol> i like the smell of burning body hair
18:46:11 <oklopol> Ngevd: you like beer?
18:46:18 <oklopol> how did i not know this
18:46:26 <Ngevd> I like beer, but not all too much
18:46:35 <Ngevd> In fact, I will have one shortly
18:47:23 <Ngevd> It appears to be Heineken
18:47:27 -!- derrik has joined.
18:50:04 <elliott> Ngevd: How can you like beer, you're like 5 years old.
18:50:15 <Ngevd> I'm older than you shut up
18:50:29 <elliott> Yes the fact that I am 4 is not relevant Ngevd.
18:50:49 <Ngevd> And it's legal to drink at 5 in Britain
18:50:53 <Ngevd> in some circumstances
18:50:58 <Ngevd> Drink alcohol, that is
18:51:09 -!- PiRSquared17 has left.
18:51:29 <elliott> Yes but you're still 5.
18:52:58 <Ngevd> Dutch beer and Italian food
18:53:06 <Ngevd> You can tell I'm British
18:54:03 <Ngevd> On that note,
18:54:05 -!- Ngevd has quit (Quit: dinner).
18:54:19 <elliott> ngevd is weird
19:10:28 <elliott> @tell oerjan http://www.reddit.com/r/haskell/comments/mm68o/ghc_74_branched_whats_in_for_christmas/c3291tr
19:10:28 <lambdabot> Consider it noted.
19:30:25 -!- yiyus has quit (Ping timeout: 276 seconds).
19:34:46 -!- Klisz has joined.
19:35:54 -!- yiyus has joined.
19:36:35 -!- zzo38 has joined.
19:36:47 -!- sebbu has quit (Ping timeout: 244 seconds).
19:41:47 -!- sebbu has joined.
19:41:47 -!- sebbu has quit (Changing host).
19:41:47 -!- sebbu has joined.
19:43:24 -!- elliott has quit (Read error: Connection reset by peer).
19:43:34 -!- derrik has left.
19:43:39 -!- elliott has joined.
19:54:14 <elliott> OpenGL vendor string: VMware, Inc.
19:54:14 <elliott> OpenGL renderer string: Gallium 0.4 on llvmpipe
19:54:14 <elliott> OpenGL version string: 2.1 Mesa 7.11.1
19:54:16 <elliott> hmm, vmware?
20:03:22 -!- Vorpal has joined.
20:21:32 -!- quintopia has quit (Ping timeout: 258 seconds).
20:22:35 -!- kmc has quit (Quit: Leaving).
20:23:57 -!- quintopia has joined.
20:23:58 -!- quintopia has quit (Changing host).
20:23:58 -!- quintopia has joined.
20:30:47 -!- sebbu has quit (Read error: Connection reset by peer).
20:31:44 -!- sebbu has joined.
20:31:44 -!- sebbu has quit (Changing host).
20:31:44 -!- sebbu has joined.
20:32:41 -!- Ngevd has joined.
20:33:00 <Ngevd> I had XChat open for about an hour before realising that I hadn't actually joined any channels
20:33:06 <Ngevd> On which note, hello!
20:34:59 <Ngevd> I may design a visual language designed for implementation of esoteric programming languages
20:37:35 <elliott> I have a mental heuristic: Ngevd says "I may X" -> assume Ngevd will never X.
20:37:50 <Ngevd> Pretty much
20:45:30 -!- elliott has quit (Quit: Leaving).
20:49:19 -!- Klisz has quit (Read error: Connection reset by peer).
20:49:41 -!- Patashu has joined.
20:49:41 -!- Klisz has joined.
20:50:13 -!- Klisz has quit (Read error: Connection reset by peer).
20:50:57 -!- Klisz has joined.
20:51:36 <Ngevd> `logs ABCDEF...G
20:51:38 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
20:51:42 <Ngevd> `log ABCDEF...G
20:51:47 <HackEgo> 2011-07-14.txt:19:09:45: <Taneb> It's actually abbreviated ABCDEF...G
20:54:15 -!- DCliche has joined.
20:55:40 -!- Darth_Cliche has joined.
20:57:20 -!- Klisz has quit (Ping timeout: 260 seconds).
20:58:35 -!- DCliche has quit (Ping timeout: 240 seconds).
20:59:02 -!- Klisz has joined.
20:59:26 -!- Klisz has quit (Read error: Connection reset by peer).
20:59:51 -!- Klisz has joined.
21:00:22 -!- Darth_Cliche has quit (Ping timeout: 252 seconds).
21:00:22 -!- Klisz has quit (Read error: Connection reset by peer).
21:17:07 -!- kmc has joined.
21:18:42 -!- quintopia has quit (Ping timeout: 260 seconds).
21:27:17 <Ngevd> fungot: ping
21:27:17 <fungot> Ngevd: there was a brief scream from one of them life choices."
21:27:37 <Ngevd> Damn, no pong
21:27:41 <Ngevd> Must be disconnected
21:29:53 -!- quintopia has joined.
21:33:49 <shachaf> `? shachaf
21:33:52 <HackEgo> shachaf mad
21:33:57 <shachaf> `rm wisdom/shachaf
21:33:59 <HackEgo> No output.
21:35:10 -!- pikhq has joined.
21:35:36 -!- pikhq_ has quit (Ping timeout: 260 seconds).
21:44:47 <Ngevd> Hello, shachaf
21:44:53 <Ngevd> I don't really see you much
21:44:53 <shachaf> Ngevd
21:45:24 <shachaf> I've never seen you, as far as I know.
21:45:35 <Ngevd> I'm sometimes called Taneb?
21:45:46 <shachaf> Well, I've seen your nick in IRC.
21:46:09 <Ngevd> I meant we rarely converse
21:46:20 <shachaf> It's true.
21:46:24 <shachaf> What are you, Jonathan Hoag?
21:46:36 <Ngevd> No, I'm elliott's evil twin
21:47:18 <Ngevd> No, wait, I'm the good one
21:47:20 <zzo38> It is easily visible "Taneb" because it is the username after !
21:47:27 <shachaf> Peoplee always misinterpret that sentence...
21:47:43 <zzo38> Are you sure? Are you good one? Or evil? Or both good, possibly? Or both evil? Or both good and evil? Or mixed up?
21:48:11 <Ngevd> I'm definitely good
21:48:17 <zzo38> OK
21:48:21 <Ngevd> He's much more competent than me, so he must be the evil one
21:48:38 <zzo38> They must be evil due to competent??
21:48:43 <Ngevd> Yes
21:50:04 <Ngevd> Obviously
21:58:50 <zzo38> Do you know the time of day of birth of fictional characters? Do you ever make it up?
22:00:12 <Ngevd> I am going to stick my head out of a window
22:00:15 <Ngevd> Wish me luck!
22:00:21 <zzo38> Why?
22:01:40 -!- elliott has joined.
22:01:41 <Ngevd> Because it is blustery
22:01:42 <elliott> Phantom_Hoover...
22:02:04 <Phantom_Hoover> DEFCON crashed.
22:02:06 <Ngevd> "MY NAME IS ELLIOTT HIRD YOU KILLED MY FATHER PREPARE TO DIE"
22:02:16 <elliott> Phantom_Hoover: Welp.
22:02:18 <Phantom_Hoover> 7ff3b2cb7000-7ff3b2cd7000 rw-s 268109000 00:05 3367 /dev/dri/card0zsh: abort ./defcon.bin.x86_64
22:02:19 <elliott> Do I... leave it running?
22:02:30 <zzo38> Prepare to go back in time to kill your grandfather!!
22:02:32 <Phantom_Hoover> I doubt much'll happen.
22:02:32 <elliott> 21:27:17: <fungot> Ngevd: there was a brief scream from one of them life choices."
22:02:33 <elliott> :D
22:02:33 <fungot> elliott: " in there. burn people in there?' said granny. the witch magic and the wizard magic are, i don't have to come.
22:02:44 <elliott> Phantom_Hoover: Plot twist: I was actually moving my navy to attack.
22:03:33 <Phantom_Hoover> I had everything build up between Africa and South America.
22:03:44 <Phantom_Hoover> You'd never have made it past without extremely heavy losses.
22:03:49 <elliott> :(
22:04:03 <Ngevd> elliott, is it blustery where you are, at most 2 miles away from me?
22:04:12 <Sgeo> DEFCON?
22:04:18 <elliott> Ngevd: I... guess so? How do you know it's at most 2 miles.
22:04:30 <Ngevd> You live in Hexham
22:04:33 <elliott> Phantom_Hoover: All this game does is make me really want to play Worms.
22:04:33 <Ngevd> Hexham isn't that big
22:04:35 <elliott> Ngevd: Hexham is that small?
22:04:40 <Ngevd> Yep
22:04:43 <elliott> Huh.
22:04:55 <Ngevd> Well, Hexham proper is
22:05:03 <Ngevd> Hexham improper is HUGE
22:05:44 <Ngevd> And extends for a good 30+ miles westwards from here
22:06:32 <elliott> Phantom_Hoover: Dammit, I just realised I'd have to pirate W:A again to play.
22:07:47 <zzo38> The story of D&D game I play in has seventeen footnotes so far, and twelve chapters, and five sessions, and thirty-one pages in maximum print mode.
22:08:03 <Ngevd> Wait till you can make a novel out of it
22:09:26 <zzo38> Yes, it is meant to be a novel. But not for sale, and in novel mode there are less pages (because character sheets, session titles, and footnotes are omitted)
22:11:01 <zzo38> I am probably only going to keep the TeX source file and the DVI file for anyone to download.
22:12:10 <Ngevd> I've never actually played D&D
22:12:19 <Ngevd> Got the Player's book thing
22:12:31 <Ngevd> Even made a character
22:12:40 <Ngevd> But never found anyone to play with...
22:12:51 <zzo38> What version?
22:13:01 <Ngevd> 4th ed, I'm afraid
22:13:06 <zzo38> I play 3.5 edition.
22:13:23 <zzo38> Read this story if you are interested in it! Now I finished typing all the sessions so far.
22:13:38 <Ngevd> I was going to play a Dwarf Cleric
22:14:06 <zzo38> OK, play a dwarf cleric if you want to.
22:14:55 <Ngevd> Does that have an implied "but you really shouldn't"?
22:15:14 <zzo38> No it doesn't imply that.
22:15:30 <Ngevd> Oh good
22:16:43 <zzo38> The things about these game is you can play many different way, and makes the game interesting because of that. The different character, good at different things, have different preferences and spells and items and personality and so on, etc
22:17:15 <zzo38> Did you read the latest copy of my recording?
22:17:23 <Ngevd> I haven't read any
22:18:32 <zzo38> TeX source file: http://zzo38computer.cjb.net/dnd/recording/level20.tex Printout file: http://zzo38computer.cjb.net/dnd/recording/level20.dvi Macro file: http://zzo38computer.cjb.net/dnd/recording/dungeonsrecording.tex
22:20:12 <Ngevd> Recommended tool for anything?
22:20:22 <Ngevd> Read: I don't know how to use TeX
22:20:29 <Ngevd> Or what DVI is
22:20:39 <elliott> Ngevd: Evince can open DVI files.
22:21:00 -!- augur has joined.
22:21:43 <Phantom_Hoover> Ngevd, DVI is what around three people use for TeX output.
22:22:07 <zzo38> The source file is also readable in any plain text viewer in case you want to
22:32:03 -!- Ngevd has quit (Quit: Leaving).
22:40:05 <Phantom_Hoover> "Formally, a frame is defined to be a lattice L in which finite meets distribute over arbitrary joins,"
22:40:16 <Phantom_Hoover> I think this may be the most confusing phrase I have ever read.
22:41:16 <Phantom_Hoover> There are five words there which I know but which make no sense by their normal definitions.
22:45:48 -!- jix has quit (Remote host closed the connection).
22:53:11 -!- jix has joined.
22:57:47 -!- augur has quit (Read error: Connection reset by peer).
23:01:43 -!- augur has joined.
23:17:16 -!- aloril has quit (Ping timeout: 276 seconds).
23:29:38 -!- aloril has joined.
23:34:25 <Vorpal> hi
23:35:19 -!- pikhq has quit (Ping timeout: 244 seconds).
23:35:27 -!- pikhq has joined.
23:37:27 <ais523\unfoog> elliott: you know how you ruined one of my NetHack games? well, I started another one to make it winnable again, and actually ascended that one :)
23:37:40 <ais523\unfoog> so I can go back to trying to ascend the original one, but am not sure there's time in November while I'm not busy
23:37:42 <elliott> ais523\unfoog: I will clearly have to distract you more in the future!
23:38:00 <elliott> ais523\unfoog: (Correction: I ruined _two_ of your NetHack games.)
23:38:11 <ais523\unfoog> what was the other one?
23:38:17 <elliott> ais523\unfoog: The HP one and the silly arena one.
23:38:21 <ais523\unfoog> oh right, the HP one
23:38:34 * elliott starts writing his third Perl program.
23:38:46 <elliott> Very worrying trend.
23:39:05 <elliott> ais523\unfoog: What's the favoured mathematical operator to append to CPAN to get a usable tool these days?
23:39:16 <ais523\unfoog> elliott: cpanm -S
23:39:24 <elliott> ais523\unfoog: Minus, then?
23:39:28 <ais523\unfoog> yep
23:39:36 <elliott> Thanks.
23:39:53 <ais523\unfoog> you need to use -S rather than running it as root, or the perms end up wrong
23:39:58 <elliott> ais523\unfoog: wow, it's even packaed in my OS, too
23:40:06 <elliott> *packaged
23:40:11 <ais523\unfoog> Kitten?
23:40:17 <elliott> ais523\unfoog: no, the OS I use :)
23:40:21 <elliott> not the one I'd rather use
23:40:27 <ais523\unfoog> that's @ :)
23:40:34 <elliott> I can have two OSes I'd rather use!
23:40:55 <elliott> hmm, having said that, the module I want is /also/ in my package manager
23:41:10 <elliott> does Perl have issues with mixing distro/cpan packages like Haskell does with distro/cabal-install packages?
23:41:49 <elliott> ais523\unfoog: also, congrats on ascending
23:41:50 <ais523\unfoog> not noticeably; the major issue is that if you install a package both ways, you might not get the right copy
23:43:14 <elliott> ais523\unfoog: I hope you're right :)
23:43:18 <elliott> ais523\unfoog: does CPAN even have versioned dependencies?
23:43:34 <ais523\unfoog> yes
23:43:39 <elliott> hmm
23:43:52 * elliott decides to do things via cpanminus for consistency
23:44:12 <elliott> I, er, don't have a cpanm command-line tool
23:44:28 <ais523\unfoog> hmm, weird
23:44:32 <elliott> oh, it's in usr/bin/vendor_perl/cpanm
23:44:39 <elliott> why is it in /usr/bin/vendor_perl?
23:45:48 * elliott installs GD
23:46:04 <elliott> ais523\unfoog: thanks, that was amazingly painless
23:47:20 <elliott> ais523\unfoog: hmm, you know probably slightly more about perl packages than I do; is there anything you'd recommend to extract a file from a zip file as a bytestring? (without having to unpack the whole thing to the FS)
23:47:26 <elliott> ais523\unfoog: if I can get a filehandle for it, even better
23:47:41 <ais523\unfoog> yes, but I've forgotten its name
23:47:57 * elliott has found Archive::Extract, but it seems to just do extract-to-FS
23:49:13 <ais523\unfoog> actually, zip file might be something I haven't done
23:49:20 <ais523\unfoog> Archive::Zip seems like the ridiculously fully-featured model
23:49:22 <ais523\unfoog> *module
23:49:28 <ais523\unfoog> I wonder if there's an Archive::Zip::Simple?
23:49:43 <elliott> use Acme::Simple;
23:49:59 <elliott> # language is now Lazy K; simplicity guaranteed
23:50:21 <elliott> ais523\unfoog: hmm, Archive::Zip is done by somebody with an avatar I recognise!
23:50:23 <elliott> MUST BE GOOD
23:50:36 <elliott> Acme-BadExample-1.01Perl document, yes. Perl code, no damn way![Download] [Browse]30 Mar 2009
23:50:36 <elliott> Acme-Everything-1.01Effectively loads every class in CPAN[Download] [Browse]10 Dec 2007
23:50:36 <elliott> Acme-Mom-Yours-0.02Your mom is so fat she takes 2 months to compile[Download] [Browse]19 Apr 2009
23:50:52 <elliott> I bet this guy wishes CPAN let you configure the sorting of your package list.
23:50:57 <kallisti> hi.
23:50:59 -!- pikhq_ has joined.
23:51:04 <ais523\unfoog> it's a bad sign when I can't figure out what method's used to get at a particular file in the zip archive
23:51:13 -!- pikhq has quit (Ping timeout: 258 seconds).
23:51:23 <elliott> ais523\unfoog: http://search.cpan.org/~adamk/Archive-Zip-1.30/lib/Archive/Zip.pm#Zip_Archive_Accessors
23:51:25 <elliott> ais523\unfoog: found with TOC
23:51:47 <elliott> "Return the disk that I start on. Not used for writing zips, but might be interesting if you read a zip in. This should be 0, as Archive::Zip does not handle multi-volume archives."
23:51:52 <ais523\unfoog> ah right, that returns archive member objects, then you can call a method on /those/ to get a filehandle
23:51:53 <elliott> hmm, is this an implementation of a common interface?
23:52:04 <ais523\unfoog> it's probably an implementation of a spec
23:52:41 <kallisti> elliott discovers the pain of object-oriented pel.
23:52:45 <elliott> object-oriented pel
23:52:55 <ais523\unfoog> kallisti: it's actually not that painful at all
23:53:02 -!- kallisti has quit (Quit: Reconnecting).
23:53:13 <ais523\unfoog> it's a bit like other OO languages, except that it's made out of language primitives which means that the corner case behaviour is typically more obviosu
23:53:14 <ais523\unfoog> *obvious
23:53:23 -!- kallisti has joined.
23:54:23 <kallisti> ais523\unfoog: it just feels... weird.
23:54:25 <kallisti> in perl
23:54:26 <kallisti> mainly.
23:54:44 <ais523\unfoog> elliott: IO::Uncompress::Unzip may be the right module to use
23:54:51 <elliott> but I just installed Archive::Zip :)
23:55:50 <ais523\unfoog> use IO::Uncompress::Unzip qw/unzip/; my $unzipped_file_contents; unzip "zipfile.zip" => $$unzipped_file_contents;
23:55:52 <ais523\unfoog> wow that's a nice API
23:56:09 <elliott> ais523\unfoog: the zip is large
23:56:12 <elliott> I only want to decompress one file of it
23:56:16 <ais523\unfoog> ah, aha
23:56:39 <elliott> my $zip = Archive::Zip->new();
23:56:39 <elliott> $zip->read($ENV{'HOME'} . '/.minecraft/bin/minecraft.jar') == AZ_OK or die;
23:56:39 <elliott> my $terrain = $zip->memberNamed('terrain.png') or die;
23:56:39 <elliott> my $terrain_fh = $terrain->fh();
23:56:39 <elliott> that was easy!
23:57:14 <ais523\unfoog> IO::Uncompress::Unzip can do that too by adding , Name => "file-in-zip.ext" or whatever as an argument
23:57:20 <ais523\unfoog> so, hmm, pretty similar in both cases
23:57:27 <elliott> ais523\unfoog: to a filehandle?
23:57:33 <elliott> ais523\unfoog: I suppose it's no big deal to load this as a string
23:57:39 <elliott> but it feels like a filehandle is FASTER :P
23:57:41 <ais523\unfoog> yep, but you have to pass a filehandle reference as argument
23:57:45 <ais523\unfoog> and I can't remember how to get one of those things
23:58:02 <ais523\unfoog> except with "open my $fh" which I think is special-cased
23:58:30 <ais523\unfoog> anyway, if you find a module that works, go for it
23:59:45 <elliott> ais523\unfoog: Copyright (c) 2005-2007 Paul Marquess. All rights reserved.
23:59:49 <elliott> for IO::Uncompress::Unzip
23:59:53 <elliott> which is worrying
23:59:57 <ais523\unfoog> the dates?
2011-11-27
00:00:01 <elliott> especially since it was uploaded in 2008 :)
00:00:04 <ais523\unfoog> :)
00:00:05 <elliott> ais523\unfoog: the latter date, in particular
00:00:31 <elliott> wow, Archive::Zip had no releases from mid-2005 to mid-2009
00:00:45 <kallisti> ais523\unfoog: you can access filehandle refs explicitly with a *foo{THING} but... I'm pretty sure you don't ever need to?
00:01:22 <ais523\unfoog> kallisti: that's for accessing them after they're created, and there'd be no reason to do that if they already existed
00:01:39 <elliott> hmm, GD::Image->loadFromPng is failing, but die "$!" doesn't print anything
00:01:43 <elliott> :/
00:01:54 <kallisti> try $@
00:02:00 <ais523\unfoog> elliott: anything in the other error variables?
00:02:03 <ais523\unfoog> I was going to suggest $@
00:02:11 <ais523\unfoog> $! is more for failures in external binaries, IIRC
00:02:13 <elliott> ais523\unfoog: thanks, I was just trying to bait someone into giving me another variable to try :)
00:02:28 <elliott> although $@ is empty too :(
00:03:23 <ais523\unfoog> in what way is it failing? returning undef?
00:03:36 <ais523\unfoog> does the module specify how to get at errors?
00:03:46 <elliott> ais523\unfoog: it returns undef, and not from what I can see
00:03:47 <elliott> the example is
00:03:47 <elliott> $myImage = new GD::Image(100,100) || die;
00:03:51 <elliott> which doesn't do much in the way of error reporting
00:03:53 <elliott> (for the constructors)
00:03:54 <ais523\unfoog> right
00:03:59 <elliott> open (PNG,"barnswallow.png") || die;
00:03:59 <elliott> $myImage = newFromPng GD::Image(\*PNG) || die;
00:03:59 <elliott> close PNG;
00:04:02 <elliott> nothing printing any error
00:04:47 <kallisti> globref, neat.
00:07:14 <kallisti> assuming that's the built-in open, open would save an error msg in $@
00:07:29 <elliott> it's the myImage part
00:07:47 <kallisti> yeah I guess: something went wrong!
00:07:49 * kallisti helpful
00:07:53 <elliott> ais523\unfoog: hmm, ah, if you have a filehandle in a $foo how do you pass it as a filehandle?
00:07:57 <ais523\unfoog> elliott: ouch at the globally-scoped filehandle names
00:08:02 <ais523\unfoog> elliott: $fo
00:08:04 <ais523\unfoog> *$foo
00:08:10 <elliott> ais523\unfoog: is that $foo, or *$foo?
00:08:31 <ais523\unfoog> open my $foo, '<', 'barnswallow.png'; $myimage = newFromPng GD::Image($foo);
00:08:48 <elliott> ais523\unfoog: hmm, aha, I think I've figured out the problem
00:08:51 <ais523\unfoog> open does a bit of magic to put a filehandle object in $foo
00:08:53 <elliott> ->fh() seems to point to /compressed/ data
00:09:12 <elliott> (I found this by trying to read a line from a known-text file in the archive)
00:09:40 <elliott> ais523\unfoog: ah!
00:09:40 <elliott> extractToFileHandle( $fh )
00:09:40 <elliott> Extract (and uncompress, if necessary) the member's contents to the given file handle. Return AZ_OK on success.
00:09:42 <elliott> that's what I want
00:09:54 <elliott> now to figure out how to create a file handle to pass to that :/
00:10:04 <ais523\unfoog> elliott: nope, it'll write to a file that the filehandle represents
00:10:07 -!- ais523\unfoog has quit (Remote host closed the connection).
00:10:19 <elliott> oh
00:10:31 <kallisti> elliott: temp file? :P
00:10:39 <elliott> kallisti: I'd rather extract it to a string than do that
00:12:18 -!- amtal has quit (Ping timeout: 258 seconds).
00:12:44 -!- sebbu2 has joined.
00:12:44 <kallisti> elliott: you're using Archive:Zip or something?
00:12:44 -!- sebbu2 has quit (Changing host).
00:12:44 -!- sebbu2 has joined.
00:12:54 <elliott> yes
00:13:02 <elliott> hmm, is / integer division given two integer operands?
00:14:09 <kallisti> I.... don't think so.
00:14:11 <kallisti> !perl print 5/2
00:14:14 <EgoBot> 2.5
00:14:36 -!- sebbu has quit (Ping timeout: 258 seconds).
00:14:43 <kallisti> use integer;
00:14:48 <kallisti> forced integer division inside its scope
00:14:51 <elliott> kallisti: how do I do integer division, then?
00:14:51 <kallisti> *forces
00:14:52 <elliott> without that?
00:14:57 <kallisti> otherwise you could just floor?
00:15:04 <elliott> I suppose I'll just assume nobody will have a broken file :)
00:15:21 -!- aloril has quit (Ping timeout: 244 seconds).
00:15:31 <kallisti> floor by the way is int
00:15:42 <kallisti> !perl print int(5/2)
00:15:42 <EgoBot> 2
00:16:31 <kallisti> !perl {use integer; print 5/2, ' ' } print 5/2;
00:16:31 <EgoBot> 2 2.5
00:18:09 <kallisti> Yes, but integer division would be int(5) / int(1.5). Otherwise, you're just rounding the real division. – Rog Feb 12 '09 at 2:56
00:18:21 <kallisti> this person on stackoverflow seems to be confused about what integer division is.
00:18:33 <Ikarus> lol
00:25:38 <elliott> THIS FILE IS THE STUPIDEST THING EVER
00:27:16 <kallisti> elliott: :(
00:27:36 <elliott> kallisti: let's say you wanted a single png file with a bunch of fixed-size textures in them
00:27:58 <kallisti> okay
00:28:02 <elliott> kallisti: and you already have permanent, allocated 8-bit unsigned integers to identify the things being textured
00:28:04 <elliott> do you
00:28:16 <elliott> - make the file 16x16, use the already-allocated IDs to index them
00:28:16 <elliott> OR
00:28:26 <elliott> - make the file 16x16 but put the textures in a completely different order
00:28:27 -!- aloril has joined.
00:28:31 <elliott> with no coherent mapping from the IDs
00:28:36 <kallisti> second one
00:28:37 <kallisti> more fun.
00:28:39 <elliott> so that anyone who reads it has to maintain a list mapping the layout to real IDs
00:28:43 <elliott> kallisti: CONGRATULATIONS! YOU'RE NOTCH!
00:28:57 <kallisti> yaaaaay
00:29:47 <kallisti> elliott: adding one to the many reasons you shouldn't play minecraft
00:30:44 <elliott> kallisti: I'm not playing Minecraft! This computer can't even /run/ Minecraft.
00:30:56 <quintopia> this one can >.>
00:30:59 <kallisti> ..then wtf are you doing.
00:31:01 * quintopia is on his phone
00:31:09 -!- myndzi\ has changed nick to myndzi.
00:31:33 <kallisti> elliott: also I didn't mean play as in playing, I meant play as in play.
00:31:45 <kallisti> English does weird things with present tense so that it actually doesn't mean the immediate present
00:31:49 <kallisti> we use present progressive for that.
00:32:02 <elliott> kallisti: mcmap
00:32:08 <kallisti> elliott: yes, but WHY?
00:32:12 <kallisti> if you do not play minecraft
00:32:29 <elliott> I play Minecraft. Just not on this computer.
00:32:37 <kallisti> oh
00:32:41 <kallisti> okay. well that's... irrelevant. :P
00:32:48 <elliott> Well, this is currently my only computer.
00:32:57 <kallisti> ah okay.
00:32:58 <kallisti> so it's like
00:33:13 <kallisti> you run... but your only pair of shoes is made of concrete currently.
00:33:19 <elliott> Yes.
00:33:25 <elliott> Exactly.
00:33:40 <Jafet> Better than abstract shoes
00:34:02 <kallisti> oh my god leftover turkey is so dry
00:34:03 <elliott> http://www.minecraftwiki.net/images/7/78/TerrainGuide.png
00:34:06 <elliott> i am actually considering
00:34:10 <kallisti> I'M CHOKING ON LITTLE BITS OF DRY BIRD MEAT.
00:34:10 <elliott> scraping this file
00:34:15 <elliott> by keeping track of the font
00:34:24 <elliott> as an alternative to manually maintaining a list
00:35:24 <kallisti> why is that perfectly usable portal texture not being used.
00:35:35 <kallisti> elliott: implement minecraft server with portal gun.
00:35:42 <elliott> Minecraft has portals, you idiot.
00:35:49 <kallisti> not portal portals
00:36:02 <kallisti> but the portal texture says "portal
00:36:06 <kallisti> not used"
00:36:23 <elliott> Yes, because the portal texture is done procedurally.
00:36:49 <kallisti> ah
00:37:23 <kallisti> anyway portals to netherasslands does not count as portal gun omg yesssss
00:37:34 <elliott> There are mods for that.
00:37:50 <kallisti> if you haven't figured this out by now: I really like portal guns
00:41:15 <elliott> kallisti: what I'm doing now is reading the decompiled source to find the mapping
00:41:55 <kallisti> ....bahag\haha
00:42:17 <elliott> kallisti: it's not that bad, there's a tool to give all the classes and fields good names :P
00:42:37 <elliott> and it's Java, so not much is actually lost apart from names in the decompilation
00:42:44 <kallisti> DecompiledClass1, DecompiledClass2, DecompiledClass3, ...
00:42:58 <elliott> kallisti: nope
00:43:04 <elliott> excerpt:
00:43:05 <elliott> EntityTNTPrimed.java NBTTagShort.java WorldProviderSurface.java
00:43:05 <elliott> EntityVillager.java NBTTagString.java WorldRenderer.java
00:43:05 <elliott> EntityWaterMob.java NetClientHandler.java WorldSavedData.java
00:43:05 <elliott> EntityWeatherEffect.java NetHandler.java WorldSettings.java
00:43:12 <kallisti> magic.
00:43:20 <kallisti> oh right
00:43:20 <kallisti> because
00:43:23 <kallisti> the filenames
00:43:25 <kallisti> are the class names.
00:43:40 <elliott> kallisti: no the filenames are obfuscated.
00:43:44 <elliott> kallisti: people just map out each one on release
00:43:47 <elliott> because
00:43:50 <elliott> there are like five thousand mods
00:43:52 <elliott> so
00:43:58 <kallisti> ah
00:44:01 <elliott> people do this so it's not incredibly painful to mod it :P
00:44:15 <kallisti> good modders
00:44:21 <elliott> kallisti: the bestest thing is, they have a tool to RE-obfuscate everything
00:44:26 <elliott> kallisti: because you can't distribute the full minecraft.jar
00:44:35 <elliott> kallisti: but distributing individual modded .class fails is turned a blind eye to
00:44:46 <elliott> so it has to be re-obfuscated so it works with the rest of the stock classes in the .jar
00:44:46 <kallisti> HEH
00:45:21 <kallisti> funny legal things funny modders
00:46:24 <kallisti> what happens when you try to use 10 mods at the same time?
00:46:27 <kallisti> chaos?
00:47:17 <elliott> kallisti: if they don't touch the same classes: it probably just works
00:47:22 <elliott> kallisti: if they use ModLoader: it just works
00:47:30 <elliott> even if they change the same stuff
00:47:31 <kallisti> ah
00:47:50 <kallisti> is ModLoader a mod or a Notch thing.
00:47:52 <elliott> (well, it almost certainly just works. i'm sure _some_ things conflict even with ModLoader)
00:47:54 <elliott> kallisti: a mod obviously
00:48:25 <kallisti> one mod to rule them all.
00:49:02 <kallisti> HUSSIE WHY YOU NO UPDATE?
00:49:15 <elliott> /kick kallisti being terrible
00:49:46 <kallisti> elliott: Moment of force (often just moment) is the tendency of a force to twist or rotate an object; see the article torque for details. This is an important, basic concept in engineering and physics. A moment is valued mathematically as the product of the force and the moment arm. The moment arm is the perpendicular distance from the point of rotation, to the line of action of the force. The moment may be thought of as a
00:49:57 <monqy> kallisti: hi
00:50:00 <elliott> kallisti: hi
00:50:28 <elliott> private void renderEntityOnFire(Entity entity, double d, double d1, double d2,
00:50:28 <elliott> float f)
00:51:15 <kallisti> I see.
00:51:25 <elliott> kallisti: why paste
00:51:27 <elliott> that
00:51:37 <kallisti> elliott: why'd you paste that?
00:51:43 <kallisti> WHO IS TRULY AT FAULT?
00:51:47 <elliott> you pasted before me
00:51:48 <kallisti> WHO DESERVES TO POINT THE FINGER?
00:51:56 <kallisti> WHAT IS THE MEANING OF MEANING? WHAT IS WHY?
00:52:09 <elliott> /kick kallisti being terrible
00:52:09 <kallisti> AND MORE IMPORTANTLY, WHY IS WHAT?
00:52:50 <kallisti> A boot is a type of footwear but they are not shoes. Most boots mainly cover the foot and the ankle and extend up the leg, sometimes as far as the knee or even the hip. Most boots have a heel that is clearly distinguishable from the rest of the sole, even if the two are made of one piece.
00:53:06 <monqy> /boot kallisti
00:53:17 <kallisti> to the... hip? really?
00:53:19 <kallisti> hip boot.
00:53:20 <Vorpal> kallisti, why are you pasting this?
00:53:21 <kallisti> ha. ha. ha.
00:53:23 <monqy> being terrible
00:53:39 <Vorpal> <kallisti> to the... hip? really? <-- seems insane
00:53:58 <elliott> private BufferedImage unwrapImageByColumns(BufferedImage bufferedimage)
00:54:00 <Vorpal> well "Hip boots, or waders as they are colloquially called, are a type of boot initially designed to be worn by river fishermen."
00:54:01 <Vorpal> kallisti, ^
00:54:02 <elliott> OK THIS IS STARTING TO GET BETTER
00:54:18 <elliott> int i1 = ai[l] >> 24 & 0xff;
00:54:18 <elliott> int j1 = ai[l] >> 16 & 0xff;
00:54:18 <elliott> int k1 = ai[l] >> 8 & 0xff;
00:54:18 <elliott> int l1 = ai[l] & 0xff;
00:54:18 <elliott> what
00:54:22 <Vorpal> elliott, java?
00:54:27 <elliott> minecraft
00:54:30 <Vorpal> ah
00:54:37 <elliott> trying to find the texture id -> terrain.png index mapping
00:54:46 <Vorpal> elliott, lol really?
00:54:46 <kallisti> a pair of field boots enjoying a warm summer day. http://en.wikipedia.org/wiki/File:Fieldboots.jpg
00:54:49 <elliott> Vorpal: yes.
00:54:57 <monqy> happy boots
00:54:58 <elliott> Vorpal: i don't want to write my own.
00:55:00 <monqy> they must be friends
00:55:27 <Vorpal> heh
00:55:46 <Vorpal> elliott, I assume the mapping will be truly terrible
00:55:57 <elliott> Vorpal: i'm really hoping it's not in uh
00:55:58 <elliott> equation form like the above
00:56:05 <elliott> private TexturePackList texturePack;
00:56:07 <elliott> aha?
00:56:18 <Vorpal> elliott, have you checked that each block object isn't storing a constant of the offset in the texture it wants?
00:56:20 <elliott> nope, not that :/
00:56:21 <Vorpal> or something like that
00:56:26 <elliott> Vorpal: oh god.
00:56:36 <Vorpal> elliott, it is a possibility
00:56:36 <elliott> Vorpal: i literally hadn't even considered that.
00:56:43 <Vorpal> heh
00:56:53 <Vorpal> elliott, well block class rather than block object
00:56:53 <kallisti> that's typically how texture maps are done.
00:56:56 <kallisti> at least historically
00:56:59 <Vorpal> heh
00:57:06 <elliott> Vorpal: is there really a class for every single block?
00:57:20 <Vorpal> elliott, I don't know. I was just suggesting a possibility
00:57:20 <monqy> oop power
00:57:29 <elliott> return blockIndexInTexture;
00:57:32 <Vorpal> elliott, it wouldn't surprise me if each one has a class or such
00:57:32 <elliott> HAHAHAHAHAHAHAHA FUCK ME
00:57:41 <Vorpal> elliott, hm?
00:57:44 <elliott> Vorpal: you're right.
00:57:47 <Vorpal> ah
00:57:52 <elliott> oh my god, Block.java:
00:57:55 <elliott> public static final Block planks;
00:57:55 <elliott> public static final Block sapling;
00:57:55 <elliott> public static final Block bedrock;
00:57:55 <elliott> public static final Block waterMoving;
00:57:57 <elliott> [...]
00:58:03 <Vorpal> huh?
00:58:08 <kallisti> heh
00:58:13 <Vorpal> what on earth is that?
00:58:13 <elliott> Block.java contains a static final instance for every single type of block
00:58:18 <Vorpal> oh right
00:58:24 <Vorpal> that is an interesting design
00:58:24 <elliott> I bet it's casted to the appropriate subclass
00:58:26 <elliott> when needed
00:58:31 <elliott> i. want. to. die.
00:58:33 <Vorpal> probably
00:58:40 <Vorpal> elliott, where are they instantiated?
00:58:45 <Jafet> OOP. Models anything.
00:58:48 <elliott> i don't want to know.
00:58:54 <elliott> i just want to get my data and run.
00:58:56 <Vorpal> elliott, link me to it at least
00:59:11 <elliott> Vorpal: download MCP, run decompile.sh, look at src/minecarft/net/minecraft/src/Block.java.
00:59:15 <Vorpal> ah
00:59:21 <augur> elliott: "HAHAHAHAHAHAHAHA FUCK ME"
00:59:22 <Vorpal> seems like too much work
00:59:32 <elliott> Vorpal: download zip -> extract -> cp minecraft.jar -> sh decompile.sh
00:59:34 <elliott> *shrug*
00:59:36 <elliott> not much work
00:59:43 <Vorpal> meh
01:00:01 <Vorpal> elliott, anyway maybe it is all in the constructor:
01:00:19 <Vorpal> this.planks = new Block(id,whatever,whatever)
01:00:31 <Vorpal> elliott, in which case you could handle that easily
01:00:40 <kallisti> why on earth would you set static variables in a constructor
01:00:49 <elliott> Vorpal: i am relatively certain it'll be in the subclasses
01:00:54 <Vorpal> kallisti, the static constructor...
01:01:00 <kallisti> oh, yes.
01:01:12 <Vorpal> kallisti, and I can think of nowhere else, since the declaration didn't assign them
01:01:27 <Vorpal> like: public static final Block planks; rather than public static final Block planks = new ...;
01:01:31 <kallisti> elliott: you could probably use grep to make this easier somehow?
01:01:37 <elliott> kallisti: yes I've been gerpping.
01:01:45 <Vorpal> gerpping
01:01:51 <elliott> yes.
01:01:56 <Vorpal> quite
01:02:00 <elliott> gerpping in minecarft.
01:02:09 <Vorpal> yep
01:03:37 <kallisti> elliott: I mean eventually you could probably just grep a pattern that generates a list of every single offset used.
01:03:40 <kallisti> or whatever
01:04:03 <kallisti> once y ou get l33t enough
01:04:04 <elliott> yes but i need to find where they are first.
01:04:09 <Sgeo> elliott, is there a nice way to minimize fullscreen Uplink on Linux?
01:04:19 <elliott> Alt-tab?
01:04:20 <kallisti> Sgeo: alt+tab
01:04:21 <kallisti> ...
01:04:33 <Sgeo> Doesn't work for me
01:04:38 <Sgeo> Unless I was alt+tabbing wrong
01:04:54 <elliott> stone = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10F).setStepSound(soundStoneFootstep).setBlockName("stone");
01:04:55 <elliott> grass = (BlockGrass)(new BlockGrass(2)).setHardness(0.6F).setStepSound(soundGrassFootstep).setBlockName("grass");
01:04:55 <elliott> dirt = (new BlockDirt(3, 2)).setHardness(0.5F).setStepSound(soundGravelFootstep).setBlockName("dirt");
01:04:55 <elliott> cobblestone = (new Block(4, 16, Material.rock)).setHardness(2.0F).setResistance(10F).setStepSound(soundStoneFootstep).setBlockName("stonebrick");
01:04:57 <elliott> planks = (new Block(5, 4, Material.wood)).setHardness(2.0F).setResistance(5F).setStepSound(soundWoodFootstep).setBlockName("wood").setRequiresSelfNotify();
01:05:00 <elliott> sapling = (new BlockSapling(6, 15)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("sapling").setRequiresSelfNotify();
01:05:03 <elliott> bedrock = (new Block(7, 17, Material.rock)).setBlockUnbreakable().setResistance(6000000F).setStepSound(soundStoneFootstep).setBlockName("bedrock").disableStats();
01:05:06 <kallisti> elliott: best design
01:05:06 <elliott> waterMoving = (new BlockFlowing(8, Material.water)).setHardness(100F).setLightOpacity(3).setBlockName("water").disableStats().setRequiresSelfNotify();
01:05:09 <elliott> waterStill = (new BlockStationary(9, Material.water)).setHardness(100F).setLightOpacity(3).setBlockName("water").disableStats().setRequiresSelfNotify();
01:05:12 <elliott> lavaMoving = (new BlockFlowing(10, Material.lava)).setHardness(0.0F).setLightValue(1.0F).setLightOpacity(255).setBlockName("lava").disableStats().setRequiresSelfNotify();
01:05:15 <elliott> Vorpal: I hate you for being right.
01:05:17 <elliott> But, doesn't have the texture index, so ha!
01:05:39 <elliott> Wait, yes it does, maybe?
01:05:43 <elliott> protected Block(int i, int j, Material material)
01:05:43 <elliott> {
01:05:43 <elliott> this(i, material);
01:05:43 <elliott> blockIndexInTexture = j;
01:05:43 <elliott> }
01:05:46 <Vorpal> elliott, I hate me for being right about that
01:05:49 <Vorpal> as well
01:05:58 <elliott> button = (new BlockButton(77, stone.blockIndexInTexture)).setHardness(0.5F).setStepSound(soundStoneFootstep).setBlockName("button").setRequiresSelfNotify();
01:06:04 <elliott> So maybe it's in the classes except when it's obvious.
01:06:06 <elliott> omits slightly
01:06:08 <elliott> ...
01:06:09 <elliott> vomits
01:06:14 -!- Sgeo|Uplink has joined.
01:06:20 <Sgeo|Uplink> Alt-Tabbing does nothing
01:06:21 <elliott> e.g.
01:06:22 <elliott> stone = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10F).setStepSound(soundStoneFootstep).setBlockName("stone");
01:06:25 <elliott> has the texture ID
01:06:26 <elliott> but
01:06:28 <elliott> grass = (BlockGrass)(new BlockGrass(2)).setHardness(0.6F).setStepSound(soundGrassFootstep).setBlockName("grass");
01:06:29 <elliott> doesn't
01:06:38 <Vorpal> elliott, look: "stone.blockIndexInTexture"
01:06:39 <elliott> protected BlockGrass(int i)
01:06:39 <elliott> {
01:06:39 <elliott> super(i, Material.grass);
01:06:39 <elliott> blockIndexInTexture = 3;
01:06:39 <elliott> setTickOnLoad(true);
01:06:41 <elliott> }
01:06:46 <Sgeo|Uplink> Anyways, going to go get myself disavowed over a 300c fine
01:06:47 <kallisti> wtf
01:06:50 <elliott> Vorpal: yes, which is assigned by
01:06:52 <elliott> <elliott> stone = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10F).setStepSound(soundStoneFootstep).setBlockName("stone");
01:06:55 <Vorpal> oh
01:06:59 <elliott> some classes have the texture index in the file
01:07:00 <elliott> others don't
01:07:03 <kallisti> good.
01:07:08 <kallisti> consistent design.
01:07:08 <Vorpal> elliott, oh my god
01:07:16 <Vorpal> ouch
01:07:30 <elliott> Vorpal: basically only the ones with a texture used in more than one place are done here, I think.
01:07:41 <Vorpal> elliott, even so.... new
01:07:45 <Vorpal> eew*
01:09:39 <Sgeo|Uplink> Waiting to be disavowed
01:09:42 <elliott> this code really makes me hate myself.
01:09:53 <elliott> ok
01:09:54 <elliott> I THINK
01:09:56 <elliott> what I can do
01:09:58 <Sgeo|Uplink> Going to disconnect to go on the Uplink channel, that won't be the disavow
01:10:00 -!- Sgeo|Uplink has quit (Client Quit).
01:10:02 <elliott> is write a java program
01:10:07 <elliott> that iterates through each block
01:10:09 <elliott> and prints its ID and index
01:10:23 <elliott> argh i want to DIEEEEEEEEEEEEEEE i hate this so much
01:10:57 <Vorpal> elliott, heh
01:11:13 <elliott> i have this horrible urge to just
01:11:15 <elliott> only support painterly
01:11:18 <elliott> which has a texture per file version
01:11:22 <Vorpal> elliott, could this be an artifact of the decompilation?
01:11:27 <Vorpal> that the real code is quite clean?
01:11:30 <elliott> no
01:11:33 <Vorpal> oh
01:11:33 <elliott> it changes the arity of constructors
01:11:35 <elliott> and shit
01:11:35 <elliott> so
01:11:35 <elliott> yeah
01:13:59 -!- amtal has joined.
01:14:18 <elliott> Vorpal: ok i _think_ I have a strategy
01:14:26 <elliott> grep each line, if the constructor arguments are right, then I have the ID and texture index
01:14:33 <elliott> otherwise, look up that class for a line that sets the index
01:14:51 <elliott> WHY CAN'T THIS BE IN A DATA FILE SOMEWHERE
01:27:24 * Phantom_Hoover → sleep
01:27:26 -!- Phantom_Hoover has quit (Quit: Leaving).
01:34:25 <itidus21> lavaMoving = (new BlockFlowing(10, Material.lava)).setHardness(0.0F).setLightValue(1.0F).setLightOpacity(255).setBlockName("lava").disableStats().setRequiresSelfNotify(); -- this is an interesting coding style
01:34:54 <elliott> What is.
01:35:09 <kallisti> I guess itidus has never seen hideous method chaining stuff before.
01:35:14 <itidus21> correct
01:35:18 <elliott> It's not hideous *shrugs*
01:35:22 <elliott> Standard practice in Smalltalk and Objective-C
01:35:23 <elliott> And I think Perl too
01:35:34 <itidus21> i haven't seen method chaining before
01:35:42 <kallisti> not really standard but it's commonly used in some libraries.
01:35:50 <kallisti> commin in Python libraries as well.
01:35:53 <kallisti> *common
01:36:03 <elliott> I doubt that, Python libraries don't do explicit setters
01:37:22 <kallisti> some do, it's certainly not encouraged though.
01:37:34 <kallisti> for example pyparsing uses that style, and I think Twisted does in some cases? I don't remember
01:38:39 <itidus21> hmmm
01:38:55 <itidus21> so its kind of like saying
01:40:15 <itidus21> struct { int x, y, z; } point; point a.x(4).y(6).z(8);
01:40:49 <kallisti> basically the methods just return self/this/whatever
01:40:54 <kallisti> so you can call more methods on the return value.
01:41:06 <itidus21> instead of a.x = 4; a.y = 6; a.z = 8;
01:41:12 <kallisti> they don't necessarily have to be methods that set members, but they usually are.
01:41:17 <itidus21> uh my notations are always messy and inconsistent
01:41:23 * Sgeo suddenly gets a vision of $ chains in Haskell
01:41:38 <Sgeo> That... is sort of like the same thing, isn't it?
01:41:50 <kallisti> not... really.
01:42:15 <kallisti> unless the functions update a record and then return that record, then sure.
01:42:49 <kallisti> but then it's not quite the same because in this style you're doing in-place operations
01:43:42 <kallisti> so it would be more like calling functions on an IORef via modifyIORef or something.
01:44:30 <elliott> * Sgeo suddenly gets a vision of $ chains in Haskell
01:44:31 <elliott> *. chains
01:44:50 <elliott> but yes, it is similar.
01:46:33 <kallisti> elliott: correction: it's not really hideous by itself; it's hideous because that is the /cleanest/ way to do something like that in Java.
01:46:52 <elliott> heh
01:47:19 <kallisti> I find this highly disconcerting.
01:47:45 <Vorpal> <elliott> WHY CAN'T THIS BE IN A DATA FILE SOMEWHERE <-- not oop enough
01:48:05 <elliott> YOUR MOM ISN'T OOP ENOUGH
01:48:31 <elliott> OK, time to Perl this shit up.
01:48:50 <Vorpal> heh
01:49:05 <kallisti> elliott: yessssssss
01:49:06 <Vorpal> elliott, you could just compile a few of the java files and link your own java program against it
01:49:21 <elliott> Vorpal: yes, but I don't know how to go from block ID to block. and it'd be harder than just perling up the source
01:49:46 <Vorpal> elliott, well you could do reflection to list the static members of the class I think
01:49:49 <Vorpal> and iterate through them
01:49:53 <elliott> public int getBlockColor()
01:49:54 <elliott> I wonder WTF that does.
01:49:57 <Vorpal> probably easier to use perl though
01:50:06 <elliott> Vorpal: that's less preferable than finding how to look up frmo a block id :)
01:50:08 <kallisti> Vorpal: it is always easier to use Perl than Java.
01:50:13 <elliott> Vorpal: but anyway I don't know what the dependencies of this thing is.
01:50:32 <elliott> Vorpal: admittedly, I am not very happy about depending on the MCP to get the indices
01:50:33 <Vorpal> elliott, I thought java had import stuff at the top?
01:50:41 <elliott> Vorpal: yes. i am not going to recursively search for imports
01:50:48 <Vorpal> ah
01:51:23 <elliott> <$blocks_java> until /blocksList = new Block\[256\];$/;
01:51:23 <elliott> I have to admit this is a compelling coding style :P
01:51:58 <Vorpal> elliott, I don't understand it
01:52:03 <elliott> <> reads a line
01:52:04 <kallisti> whut
01:52:11 <Vorpal> elliott, the rest?
01:52:23 <elliott> What do you think
01:52:26 <Vorpal> oh right
01:52:27 <Vorpal> I see
01:52:30 <Vorpal> okay
01:52:38 <Vorpal> elliott, very.... perl
01:52:42 <elliott> kallisti: Is there a way to temporarily reassign the default file handle :-)
01:52:54 <kallisti> yes...
01:52:56 <kallisti> I don't remember the name
01:52:58 <kallisti> uh.....
01:53:17 <kallisti> let me look it up
01:53:31 <kallisti> select
01:53:33 <Vorpal> <elliott> Vorpal: admittedly, I am not very happy about depending on the MCP to get the indices <-- just parse the bytecode directly
01:53:38 <kallisti> select $file_handle
01:53:56 <elliott> Vorpal: no.
01:54:02 <kallisti> and then anywhere in perl docs where it says "if file handle is omitted, uses the currently selected file handle"
01:54:06 <Vorpal> elliott, good
01:54:12 <kallisti> it is now referring to whatever you select'd
01:54:30 <elliott> kallisti: I love how select doubles as the perl thing and select(2)
01:54:34 <elliott> so beautiful
01:54:37 <kallisti> lol
01:54:59 <elliott> kallisti: so uh is that block-scoped
01:55:03 <kallisti> I'm not actually sure that it doubles as select(2) ?
01:55:07 <kallisti> elliott: no fucking clue. :P
01:55:12 <kallisti> I think it may be global
01:55:13 <kallisti> ?
01:55:20 <elliott> kallisti: It does: http://perldoc.perl.org/functions/select.html
01:55:27 <kallisti> ah yes it does.
01:55:47 <Vorpal> why do recently uploaded youtube videos always list ~300-320 views on popular channels? As in uploaded in the last couple of hours.
01:56:09 <Vorpal> not even realistic number, it doesn't even change after I watched it for example
01:56:26 <kallisti> !perl open my $x, "test"; {select $x; print "hi"} print "hi"; close $x;
01:56:40 <elliott> Vorpal: caching?
01:56:55 <Vorpal> elliott, probably, but why about 300?
01:56:56 <kallisti> !perl open my $x, "test"; { print "hi"} print "hi"; close $x;
01:56:57 <EgoBot> hihi
01:57:04 <kallisti> elliott: globally scoped, apparently.
01:57:08 <elliott> Vorpal: because that's how many view it before the first regeneration from 0 views?
01:57:17 <elliott> kallisti: sigh
01:57:25 <kallisti> elliott: what did you want to use select for?
01:57:32 <Vorpal> elliott, I mean, I would expect it to vary between a channel with about 1 million subscribers and one with 100 000 subscribers
01:57:33 <Vorpal> it does not
01:57:35 <elliott> kallisti: shortening the code :)
01:57:40 <elliott> Vorpal: *shrug*
01:58:25 <Vorpal> kallisti, in general elliott is always lazily golfing everything
01:58:32 <elliott> "Lazily"?
01:58:36 <kallisti> elliott: anyway you can do $old_f = select; select $new_f; [...code...]; select $old_f;
01:58:41 <kallisti> if you want.
01:58:46 <elliott> kallisti: yes. ugly.
01:58:47 <Vorpal> elliott, as in, you don't super-golf everything to remove every single char you can
01:59:06 <kallisti> I am always golfing as well.
01:59:08 <elliott> Use of uninitialized value $_ in pattern match (m//) at colours.pl line 12.
01:59:09 <elliott> wtf?
01:59:10 <elliott> but I did
01:59:13 <elliott> do <> until /blah/;
01:59:16 <elliott> surely $_ should always be assigned there
01:59:22 <elliott> or does it only assign to $_ when it's a loop condition >_>
01:59:37 <kallisti> I believe it only assigns to $_ when it's <> actually.
01:59:41 <kallisti> as in while(<>)
01:59:46 <kallisti> I think?
01:59:55 <elliott> ok what's a nicer way to write {} until ...;
02:00:08 <kallisti> until(...) {}
02:00:08 <kallisti> :P
02:00:27 <elliott> :(
02:00:35 <elliott> how would you write "discard lines until one of them matches this regexp"
02:01:19 <elliott> kallisti: ???
02:01:36 <Sgeo> dropUntil? >.>
02:01:40 <kallisti> while(<>) { last if /blah/}
02:01:41 <Vorpal> :D
02:01:52 <elliott> kallisti: surely you mean
02:01:55 <elliott> last if /blah/ while <>;
02:01:56 <elliott> :D
02:02:03 <kallisti> not sure if last can go there, but sure.
02:02:06 <kallisti> also...
02:02:07 <kallisti> no
02:02:09 <kallisti> can't do that. :P
02:02:17 <kallisti> expr if x while y
02:02:21 <kallisti> is not valid (unfortunately)
02:02:31 <elliott> :(
02:02:39 <kallisti> !perl print "hi" if 1 while 1
02:02:40 <EgoBot> syntax error at /tmp/input.7931 line 1, near "1 while"
02:02:47 <elliott> kallisti: now to find why it doesn't terminate :D
02:02:59 <Vorpal> is this valid then? { last if /blah/ } while <>;
02:03:09 <kallisti> don't believe so.
02:03:11 <kallisti> you'd need a do
02:03:14 <kallisti> while is then a do-while loop
02:03:15 <Vorpal> hm okay
02:03:25 <Vorpal> right
02:03:29 <kallisti> !perl {print "hi" if 1} while 1
02:03:29 <EgoBot> syntax error at /tmp/input.8056 line 1, near "while 1"
02:03:39 <kallisti> you can do do {...} if $x
02:03:40 <kallisti> though
02:04:03 <kallisti> do {...} is basically "execute this block and return an expression" except when it's part of a do...while
02:04:09 <kallisti> then it's all do-whiley
02:04:28 <kallisti> (I'm sure there's a better way to explain it)
02:04:34 <kallisti> (I bet the docs explain it better)
02:05:32 <kallisti> Not really a function. Returns the value of the last command in the sequence of commands indicated by BLOCK. When modified by the while or until loop modifier, executes the BLOCK once before testing the loop condition. (On other statements the loop modifiers test the conditional first.)
02:05:37 <kallisti> not it basically says the same thing.
02:05:39 <kallisti> s/not/no/
02:06:53 <kallisti> elliott: but yes, unfortunately you can't reduce everything to beautiful postfix statement modifiers.
02:07:07 <kallisti> sometimes you must write conventional looking loops.
02:07:18 <elliott> Cries.
02:09:01 <elliott> Vorpal: i'm actually fucking tempted to try and use a java bytecode lib
02:09:19 <kallisti> elliott: noooo, don't let it fucking temp you!
02:09:34 <elliott> But that's the best kind of temptation!
02:10:53 <elliott> kallisti: how do i make an unnumbered group :|
02:11:18 <kallisti> a what?
02:11:20 <kallisti> oh
02:11:22 <kallisti> regex
02:11:26 <kallisti> (?:...)
02:11:50 <kallisti> usually I find it better to name groups that you want to extract rather than putting ugly ?:'s everywhere
02:12:03 <kallisti> but it depends on the complexity of the regex.
02:14:26 <elliott> kallisti: why can't I last inside of do { ... } while (blah);
02:14:46 <kallisti> because the docs say so. :P
02:14:47 -!- Slereah_ has joined.
02:15:02 <kallisti> do BLOCK does not count as a loop, so the loop control statements next, last, or redo cannot be used to leave or restart the block. See perlsyn for alternative strategies.
02:15:22 <elliott> kallisti: ..............
02:15:34 <kallisti> I bet "alternative strategies" involve labels.
02:15:35 -!- Slereah has quit (Ping timeout: 252 seconds).
02:15:39 <elliott> For last, you have to be more elaborate:
02:15:39 <elliott> LOOP: {
02:15:39 <elliott> do {
02:15:39 <elliott> last if $x = $y**2;
02:15:40 <elliott> # do something here
02:15:42 <elliott> } while $x++ <= $z;
02:15:44 <elliott> }
02:15:44 <kallisti> yes.
02:15:46 <elliott> HA HA HA
02:17:31 <kallisti> elliott: alternative, put a label on the next line and goto
02:17:34 <kallisti> :P
02:20:36 <elliott> GAAH THIS SUCKS
02:21:20 <elliott> "unless can even be followed by one or more elsif statements, though you may want to think twice before using that particular language construct, as everyone reading your code will have to think at least twice before they can understand what's going on."
02:21:39 <kallisti> elliott: what? trying to do weird things in perl. I agree.
02:22:17 <elliott> kallisti: no, having to write this stupid script
02:22:23 <kallisti> I think perl should just have an "else unless" :P
02:22:32 <elliott> kallisti: which will be a COMPLETE PAIN to automate
02:22:59 <kallisti> elsunless bahahahaha
02:23:50 <elliott> "If the LABEL is omitted, the loop control statement refers to the innermost enclosing loop. This may include dynamically looking back your call-stack at run time to find the LABEL. Such desperate behavior triggers a warning if you use the use warnings pragma or the -w flag."
02:24:03 <elliott> so functions
02:24:06 <elliott> can affect loops in their callers
02:24:08 <elliott> beautiful
02:24:10 <kallisti> yep
02:24:30 <kallisti> goto can affect anything anywhere.
02:24:41 <elliott> can you goto into the middle of a procedure
02:24:46 <kallisti> believe so, yes.
02:24:49 <elliott> yessssssssss
02:25:05 <elliott> can you goto in between the if and the ( in "if (...)"
02:25:07 <kallisti> it does have some restrictions
02:25:12 <kallisti> ....no
02:25:14 <elliott> if yes, what about 4 bits into the (
02:25:15 <kallisti> don't believe so.
02:25:50 <kallisti> The goto-LABEL form finds the statement labeled with LABEL and resumes execution there. It can't be used to get out of a block or subroutine given to sort. It can be used to go almost anywhere else within the dynamic scope, including out of subroutines, but it's usually better to use some other construct such as last or die.
02:25:56 <kallisti> can't goto out of sort blocks. :(
02:25:58 <kallisti> sad day.
02:26:03 <elliott> :'(
02:26:50 <kallisti> note that you do actually need a label to goto to
02:27:10 <kallisti> and they must be in "the dynamic scope"
02:27:31 <kallisti> so, on the call stack?
02:27:33 <kallisti> I think?
02:28:35 <kallisti> also note that with wantarray and caller you can write subroutines that do different things depending on where they're called.
02:29:56 <kallisti> !perl sub constant { wantarray? (1,2,3,4,5):
02:29:56 <EgoBot> syntax error at /tmp/input.10598 line 1, at EOF
02:29:57 <kallisti> er
02:30:12 <kallisti> !perl sub constant { wantarray? (1,2,3,4,5): "hi" } print constant; print scalar constant
02:30:12 <EgoBot> 12345hi
02:34:55 <kallisti> wantarray gives you three contexts. 1 = array, 0 = scalar, undef = void
02:37:21 <elliott> i know :P
02:38:13 <kallisti> oh.
02:38:14 <kallisti> :)
02:38:38 <kallisti> THE MORE YOU (ALREADY) KNOW.
02:39:03 -!- augur has quit (Ping timeout: 252 seconds).
02:41:56 <kallisti> !perl sub continue { print "(haha sucker)"; last} for(1..100) { print "hi "; continue } print ' done";
02:41:57 <EgoBot> syntax error at /tmp/input.12183 line 1, near "; continue"
02:42:15 <kallisti> !perl sub please_continue { print "(haha sucker)"; last} for(1..100) { print "hi "; please_continue } print ' done";
02:42:15 <EgoBot> Can't find string terminator "'" anywhere before EOF at /tmp/input.12260 line 1.
02:42:35 <kallisti> !perl sub please_continue { print '(haha sucker)'; last} for(1..100) { print 'hi '; please_continue } print ' done';
02:42:35 <EgoBot> hi (haha sucker) done
02:42:55 <kallisti> elliott: don't think of them as functions; think of them as control flow statements. :)
02:47:29 -!- augur has joined.
02:47:39 <kallisti> I wonder what you would use to emulate last, next, and goto in Haskll. Cont I guess?
02:48:07 <kallisti> yes, Cont.
02:48:13 <zzo38> kallisti: Haskell is functional programming language it doesn't have control flows
02:48:35 <kallisti> I was referring to "monadic programming" which typically emulates a number of imperative style control flow statements via functions.
02:48:43 <kallisti> or at least
02:48:45 <kallisti> sometimes does.
02:49:00 <zzo38> Some monads can do so, I suppose.
02:49:00 <kallisti> not necessarily typically.
02:49:43 <kallisti> anyway I believe cont would work for goto. I don't know how you would do last and next though.
02:49:49 <kallisti> (aka break and continue)
02:50:02 <zzo38> But Haskell functional programming also means you don't need control flows.
02:50:07 <kallisti> presumably just a specialized kind of goto.
02:50:07 <augur> kallisti: emulate is a good word
02:50:27 <zzo38> kallisti: Probably it can make a monad with those kind of commands possible if you wanted to
02:50:27 <augur> or perhaps model is a better word
02:50:35 <kallisti> "represent formally" :P
02:50:45 <augur> that too!
02:50:57 <augur> but operationally, you shouldnt think of it as control flow at all
02:51:49 -!- augur has quit (Remote host closed the connection).
02:52:45 -!- GreaseMonkey has joined.
02:52:53 <kallisti> the weird thing is that I'm pretty sure it will look nothing like normal gotos/breaks/continues
02:53:07 <kallisti> basically instead of labels you'd use monadic functions.
02:54:29 <Sgeo> elliott, kallisti, UPDATE
02:55:22 <kallisti> I think to get break and continue to look exactly as they do in imperative languages you would need to pass the "label" to break to as part of the loop construct, set two implicit parameters, and then access the implicit parameters with the break and continue function.
02:55:26 <kallisti> *functions
02:56:27 <kallisti> otherwise you'd just have one "goto" function and then explicitly pass the continuations to go to.
03:03:29 <kallisti> elliott: have you killed yourself yet?
03:11:40 <kallisti> I guess so.
03:11:45 <kallisti> rip elliott
03:14:40 <kallisti> died as he lived; ripped to pieces by gotos.
03:16:26 <zzo38> Do you like the word "ecliptic longitude" or do you think it should be called something else?
03:17:30 <quintopia> i like "clitoric longitude"
03:17:34 <kallisti> zzo38: I think it's a good word, but I don't know what it means so I can't make a normative assertion there.
03:18:02 <zzo38> Equatorial coordinates have "right ascension" and "declination" instead.
03:18:27 <zzo38> And ecliptic longitude is not the same thing as the longitude of the Earth.
03:19:05 <zzo38> Ecliptic longitude means the angle measure on the plane of the ecliptic (the orbit of the Earth around the Sun).
03:19:57 <quintopia> then it is fairly descriptive
03:20:12 <zzo38> Right ascension is the same thing but on the equatorial plane.
03:20:13 <quintopia> would you prefer ecliptic latitude?
03:20:30 <zzo38> Ecliptic latitude is the other coordinate.
03:20:44 <zzo38> So, you have ecliptic longitude and ecliptic latitude.
03:23:38 <myndzi> patashu, ya here? :P
03:33:49 -!- Klisz has joined.
03:51:38 <elliott> kallisti: hi im back from dead
03:52:53 <elliott> kallisti: hi
03:55:36 <elliott> cry
03:55:47 <elliott> monqy: cry
03:55:49 <monqy> cry
03:57:05 <elliott> argh WHY IS THERE NOT A SIMPLE PLACE FOR THIS DATA
03:57:39 <elliott> W H Y
03:57:43 <zzo38> Because it is not a simple data
03:58:01 <elliott> it is
03:58:07 <elliott> it's a byte=>byte mapping
03:58:12 <elliott> i literally need 256 bytes
03:58:16 <elliott> in a format that isn't
03:58:18 <elliott> "java code"
03:58:20 <elliott> or
03:58:24 <elliott> "image with overlayed text in tiny font"
03:58:43 <zzo38> I don't know. Maybe convert it
03:59:12 <elliott> tried that, the java code is too varying to do so, with conditionals and the like
03:59:19 <elliott> and in the image with text, some of the text is abbreviated, etc.
03:59:22 <elliott> so it's hard to map to the data values
03:59:41 <zzo38> Make that Java code to output it in the format you want
04:00:11 <elliott> i've considered that, but getting the java code is quite hard, and it'd be a pain to compile it each time :(
04:29:17 <elliott> ==> Found dependencies: URI::Escape, LWP::MediaTypes, Encode::Locale, HTTP::Status, HTTP::Negotiate, File::Listing, HTML::Entities, HTTP::Daemon, Net::HTTP, URI, HTML::HeadParser, HTTP::Cookies, HTTP::Date, HTTP::Request::Common, HTTP::Response, WWW::RobotRules, HTTP::Request
04:29:18 <elliott> good grief
04:29:34 <Patashu> I'm here
04:29:35 <Patashu> what's up
04:29:59 <elliott> perl dependencies
04:30:05 <elliott> also myndzi wants to talk to you?
04:30:10 <Patashu> yeah meant that part
04:30:12 <Patashu> beat the game yet?
04:32:06 <myndzi> oh, i came back to it when i said that
04:32:07 <myndzi> i'm on level 12
04:32:08 <myndzi> :)
04:32:22 <myndzi> 11 is amusing
04:32:25 <myndzi> i fell for it
04:33:01 <myndzi> i think 4-9 took me the longest so far
04:37:57 -!- augur has joined.
04:40:21 -!- Klisz has quit (Quit: You are now graced with my absence.).
04:43:42 -!- amtal has quit (Ping timeout: 258 seconds).
04:46:00 <zzo38> "The difference between theory and practice is larger in practice than it is in theory."
04:46:09 <zzo38> -- Michele Campeotto
04:46:31 <Patashu> nice
04:46:31 <Patashu> keep it up
04:47:35 <zzo38> I don't know who they are, or even if they first said it or quoted someone else
04:53:05 <kallisti> !perl $x = (0 => "scalar", 1 => "list"); sub test { wantarray} print $x{test}, " "; print @x{test}
04:53:15 <kallisti> lol..
04:53:20 <kallisti> !perl %x = (0 => "scalar", 1 => "list"); sub test { wantarray} print $x{test}, " "; print @x{test}
04:53:43 <kallisti> ...hmm
04:54:12 <kallisti> maybe @x{$key} doesn't work for hashes..
04:54:36 <elliott> why would it
04:54:39 <kallisti> !perl %x = (0 => "scalar", 1 => "list"); print @x{0,1}
04:54:40 <EgoBot> scalarlist
04:54:42 <elliott> don't hashes contain scalars
04:54:43 <kallisti> oh it does nevermind.
04:54:46 <elliott> oh
04:55:01 <kallisti> yes but @blah{$ind} says "I want a list result"
04:55:11 <kallisti> so then $ind is evaluated in list context
04:55:17 <kallisti> and taken as a list of keys to fetch
04:55:42 <kallisti> this is how "slices" work in perl. @array[1..10]
04:56:40 <kallisti> $array[1..10] would interpret 1..10 in list context, which is like some weird flip flop operator.
04:56:45 <kallisti> *scalar context
04:57:16 <kallisti> similarly, $array[1,2,3,4] would evaluate 1,2,3,4 to 4 because , in scalar context is like , in C.
04:57:58 <kallisti> as you can see, this is superior to everything you have ever worked with in any other programming language.
04:58:06 <kallisti> (this is a lie)
05:05:35 -!- MDude has changed nick to MSleep.
05:06:46 -!- sebbu3 has joined.
05:06:47 -!- sebbu3 has quit (Changing host).
05:06:47 -!- sebbu3 has joined.
05:10:01 -!- sebbu2 has quit (Ping timeout: 245 seconds).
05:14:35 <myndzi> ok, 4-12 is kind of a bitch
05:14:35 <myndzi> :P
05:15:37 <kallisti> !perl 2**2
05:15:40 <kallisti> !perl print 2**2
05:15:40 <EgoBot> 4
05:24:04 <kallisti> !perl use List::MoreUtils; @x = (1,2,3); @y = (4,5,6); print join(' ', pairwise {$a + $b} @x,@y)
05:24:04 <EgoBot> Can't locate List/MoreUtils.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /tmp/input.28034 line 1.
05:24:07 <kallisti> :(
05:24:15 <kallisti> sad
05:26:48 <elliott> attn, is anyone alive someone who sometimes plays minecraft / just owns minecraft, testing urgently needed
05:26:54 <elliott> didn't Patashu play minecraft, i swear Patashu played minecraft
05:27:22 <kallisti> elliott: ha ha ha ha haa ha ha ha ha ha ha ha ha ha ha never
05:27:25 <kallisti> will I play minecraf
05:27:32 <elliott> minecraf
05:27:37 <kallisti> yes
05:27:39 <kallisti> sic, motherfucker.
05:28:56 <Patashu> I've never played minecraft in my life
05:29:02 <Patashu> I've never even seen someone play minecraft in person
05:29:05 <elliott> huh. i thought you did
05:29:14 <Patashu> all my knowledge about minecraft is like the knowledge one has of africa or france
05:34:42 <elliott> Sgeo: ping
05:34:46 <elliott> Sgeo: ping ping pnig ingp nig ipgn pgngipngpin pgin gpn igpnpgnipg
05:35:16 <Sgeo> elliott, hi
05:35:23 <elliott> Sgeo: YESSS
05:35:30 <elliott> Sgeo: Can you play Minecraft from your current location!
05:35:45 <Sgeo> Current location, yes
05:35:48 <Sgeo> But I have homework to do
05:35:52 <elliott> GOD DAMMIT
05:36:00 <Sgeo> Ok, fine, I'll play now
05:36:15 <elliott> No playing required :P
05:36:19 <elliott> Just TESTIN'
05:36:21 <elliott> Which is uh
05:36:22 <elliott> Equivalent to playing
05:36:42 <elliott> Sgeo: 95.149.229.230
05:39:37 -!- SgeoN1 has joined.
05:39:43 <elliott> SgeoN1: What happened :P
05:39:44 <SgeoN1> Update
05:41:49 <zzo38> Someone wrote "It sounds like Libras are kind of obtuse." in response to something I wrote. When asked for clarification, they said it is because 180 degrees. But Wikipedia says "Angles larger than a right angle and smaller than a straight angle are called obtuse angles."
05:42:11 <Sgeo> elliott, I was in a rush to tell you about UPDATE when computer slowed down
05:42:27 <elliott> I CAN ASSURE YOU THAT TESTING MINECRAFT IS MORE IMPORTANT ;D
05:42:34 <Sgeo> !
05:43:25 <Sgeo> Why is that server subtitled as reddit creative
05:43:27 * Sgeo mindboggles
05:43:47 <elliott> Sgeo: Because it is reddit creative...
05:43:56 * elliott watches chunks load.
05:44:08 <elliott> This is... not so good so far.
05:44:11 -!- Klisz has joined.
05:44:21 <elliott> Mostly because everything's grey.
05:44:34 <Sgeo> I can't seem to fly
05:44:39 <elliott> Double-space.
05:45:02 <Sgeo> Isn't working
05:45:21 <elliott> *shrug*
05:45:33 <elliott> There's not much interesting, is there (I don't know what it actually looks like)
05:45:41 <Sgeo> And mouse pointer isn't being captured
05:45:42 <elliott> Can you try to /warp somewhere interesting?
05:46:37 <Sgeo> Where?
05:47:00 <elliott> Sgeo: /warp to get a list, I think.
05:47:02 <elliott> Then just pick one :P
05:47:34 <elliott> Wow, that looks pretty good. Is that water?
05:48:09 <elliott> Sgeo: ?
05:48:14 <elliott> http://i.imgur.com/XJQSd.png
05:48:15 <Sgeo> Is what water?
05:48:19 <elliott> What yer standing on.
05:48:25 <Sgeo> No
05:48:58 <elliott> Sgeo: What is it then?
05:49:01 <elliott> It sure looks like water here.
05:49:11 <elliott> And I see "water (10 deep)" all over the map.
05:49:16 <SgeoN1> Computers acting up, hold pn
05:49:22 <myndzi> ahhh gotcha 4-12!
05:49:56 <Sgeo> It's grey, looks a little like the half-...whatever things
05:50:17 <elliott> Sgeo: I'm just asking you what the landscape is if not covered with water...
05:50:23 <Sgeo> Landscape?
05:50:26 <Sgeo> I'm in a structure
05:50:29 <elliott> Oh.
05:50:46 <elliott> Can you exit the structure?
05:50:55 <Sgeo> Yeah, I'm at surface level or near it
05:51:01 -!- hagb4rd has quit (Read error: Connection reset by peer).
05:51:09 <elliott> y=64 exactly.
05:51:47 <Sgeo> Surrounded by water
05:51:55 <elliott> Heh.
05:51:57 <Sgeo> But not literally on the water
05:52:03 <elliott> This warp is ... not the best to test the colours.
05:52:03 <Sgeo> Well, the structure's on the water
05:52:06 -!- oerjan has joined.
05:52:13 <elliott> hi oerjan
05:52:24 <oerjan> hi elliott
05:52:24 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
05:52:31 <elliott> Sgeo: Some intricate open-air structure would be best.
05:52:59 <Sgeo> There are only two warp points
05:53:12 <elliott> Hmm, a lot of this badness is due to me not handling the alpha...
05:53:42 <elliott> Sgeo: Can I put you on another server? :P
05:54:01 <Sgeo> There's now sky overhead, and lots of glass nearby
05:54:21 <elliott> (Sorry for impersonating you in chat, just had to check it worked.)
05:54:26 <elliott> ("test" will go on your tombstone.)
05:55:05 <SgeoN1> I didn't see it
05:55:21 <SgeoN1> And now MC's acting up
05:55:25 <elliott> I disconnected you.
05:55:30 <elliott> So I could change the server.
05:55:36 <SgeoN1> !!!!!!!!
05:55:38 <oerjan> elliott: that mangling does look a little ugly
05:55:39 <elliott> What.
05:55:44 <elliott> oerjan: what mangling
05:55:48 <elliott> SgeoN1: ?
05:55:49 <oerjan> from your link
05:55:59 <elliott> oerjan: which link :P
05:56:04 <SgeoN1> elliott, scary that you're able to disconnect me
05:56:09 <oerjan> http://www.reddit.com/r/haskell/comments/mm68o/ghc_74_branched_whats_in_for_christmas/c3291tr
05:56:09 <elliott> SgeoN1: Why is that scary?
05:56:19 <SgeoN1> Unless...... are you proxying?
05:56:32 <elliott> No, I produced that mcmap screenshot from thin air.
05:57:01 <elliott> oerjan: oh, right
05:57:09 <elliott> oerjan: i linked it more as a "wow, polymorphic kinds are finally here!" thing
05:57:11 <SgeoN1> I was under the impression that you were separately connected, and testing some stalking tool
05:57:27 <elliott> SgeoN1: Ah. No.
05:57:35 <elliott> I'm testing mcmap's new texture script.
05:57:39 <SgeoN1> Restarting comp
05:57:53 -!- Sgeo has quit (Read error: Connection reset by peer).
05:58:28 <kallisti> elliott: challenge: try to find a good comment http://justrakudoit.wordpress.com/2010/12/29/perl-6-fibonacci-versus-haskell/
05:59:44 <elliott> "What is the performance difference? I like to hate on Haskell because it is still so inefficient."
05:59:46 -!- Sgeo has joined.
05:59:48 <elliott> lol
05:59:49 <elliott> at this dude
05:59:53 <kallisti> elliott: I lol'd as well.
06:00:00 <kallisti> considering that Perl 6 doesn't have a working implementation..
06:00:35 <elliott> well, rakudo is fairly working
06:01:33 <elliott> Sgeo: hi
06:02:12 <kallisti> elliott: it's also funny on the grounds that perl (including perl 6 now) is always slow.
06:02:27 <zzo38> Do you ever make pizza with just tomato, garlic, olive oil and oregano?
06:02:28 <elliott> well perl regexps are fast unless you hit an edge-case afaiu
06:02:38 <elliott> zzo38: No dough?
06:02:40 <Sgeo> Hi
06:02:44 <kallisti> elliott: right but that's... it.
06:02:49 <kallisti> that's where the performance ends.
06:02:49 <elliott> Do you just, like, burn the tomatoes until they're hard enough to form a base?
06:02:49 <zzo38> elliott: You need the pizza bread too.
06:02:51 <elliott> Sgeo: KONNEKT
06:02:55 <elliott> zzo38: That's not "just" then!
06:03:04 <zzo38> Yes I made a mistake.
06:03:06 <Sgeo> elliott, blargh
06:03:10 <elliott> Sgeo: wut
06:03:28 <kallisti> elliott: apparently some people are under the delusion that Perl is somehow fast?
06:04:13 <Sgeo> elliott, connected
06:04:26 <Sgeo> elliott, teleportation is currently out of order
06:04:30 <elliott> Indeed
06:04:39 -!- derrik has joined.
06:04:40 <elliott> Can you walk upwards? :P
06:04:51 <elliott> Oop, stop.
06:04:58 <elliott> Too late.
06:05:00 <elliott> Hmm.
06:05:14 <elliott> OK, I'm going to need to override a few textures before this will even begin to look reasonable.
06:05:18 <elliott> Thanks.
06:05:30 <Sgeo> yw
06:07:38 <elliott> Sgeo: could you try now maybe? :P >_>
06:09:11 <elliott> ahaha
06:09:16 <elliott> Sgeo: would I be correct in saying there's no grass nearby?
06:09:41 <Sgeo> Um, there's... little bits of tall grass, I think?
06:09:44 <Sgeo> But grass on dirt, no
06:09:48 <myndzi> "You've sealed the monsters away, and conquered the Castle of Elite. Way to go!"
06:09:52 <Sgeo> Well, yes there is
06:09:55 <Sgeo> But mostly not
06:10:03 <elliott> WHADDABOUT NOW :P
06:10:05 <myndzi> "You've even solved every puzzle in the game - you're the ultimate puzzle master!!" ;)
06:10:14 <myndzi> ( Patashu )
06:10:23 <elliott> Sgeo: hahahah still no grass?
06:10:42 <Sgeo> Looks like snow
06:11:11 <elliott> annoying...
06:11:54 <Sgeo> Did you see that I died?
06:12:20 <elliott> Nah, mcmap doesn't see things like that
06:12:30 <elliott> 06:12:02 [DIED] Unknown packet id: 0x9c
06:12:30 <elliott> Feck
06:12:53 <elliott> Sgeo: Can you try and die as quickly as possible if I set it up again with debugging?
06:13:07 <Sgeo> Um, ok
06:13:12 <Sgeo> Not sure the best way to die
06:13:14 <Sgeo> /kill ?
06:13:20 <elliott> Sgeo: /kill, or else jump off something high
06:13:22 <elliott> It doesn't have to be that quick
06:13:33 <elliott> Sgeo: Started
06:14:10 <oerjan> zzo38: pizza margherita is even simpler, although it contains different ingredients. not that i've made it, only eaten it.
06:14:43 <Sgeo> /kill is disabled
06:15:04 <Sgeo> Lava is not
06:15:06 <elliott> Sgeo: lava also works :)
06:15:48 <oerjan> or well, equally simple.
06:16:02 <elliott> Sgeo: then respawn or whatever you did last time
06:16:44 <SgeoN1> Huh?
06:16:53 <elliott> SgeoN1: ?
06:16:57 <SgeoN1> I did resaen after dying a lavary death
06:17:02 <SgeoN1> Reapawn
06:17:04 <zzo38> Sometimes I omit the tomato and garlic but include salt
06:17:07 <SgeoN1> Respawn
06:17:21 <elliott> SgeoN1: oh, huh
06:17:24 <elliott> That means it was something else :/
06:17:48 <elliott> SgeoN1: What were you doing when it disconnected last time?
06:18:19 <Patashu> nice myndzi
06:18:26 <Patashu> maybe I'll ask you for hints later
06:18:38 <oerjan> zzo38: oh, your variant is called pizza marinara
06:18:47 <Sgeo> elliott, don't remember
06:19:00 <elliott> :(
06:19:03 <Sgeo> Anyways, I want to get back to homework
06:19:07 <oerjan> http://en.wikipedia.org/wiki/Pizza#Pizza_types
06:19:23 <Sgeo> Just deliberately disconnected
06:21:36 <elliott> oerjan: i'm afraid you're going to have to start playing minecraft to help me with edbugging
06:22:29 <oerjan> neapolitan is so ludicrously simple compared to american style pizza, or american style pizza is ludicrously overdone, dependent on view
06:22:40 <oerjan> elliott: sorry
06:22:57 <elliott> oerjan: yes i'm sorry i must inflict this on you. it is something we must achieve together.
06:24:20 <elliott> hmm, 4 dollars 1 cent = 8-16 hours
06:24:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
06:26:03 -!- sebbu3 has quit (Read error: Connection reset by peer).
06:26:29 -!- sebbu3 has joined.
06:26:30 -!- sebbu3 has quit (Changing host).
06:26:30 -!- sebbu3 has joined.
06:27:29 -!- Klisz has quit (Quit: You are now graced with my absence.).
06:27:32 -!- copumpkin has joined.
06:31:18 -!- copumpkin has quit (Client Quit).
06:40:12 <kallisti> http://en.wikipedia.org/wiki/Wikipedia
06:40:16 <kallisti> this article is very crufty
06:40:52 <oerjan> as long as it's not crunchy or crusty
06:40:56 <oerjan> *munch*
06:41:41 <kallisti> For example, in August 2007, the website WikiScanner began to trace the sources of changes made to Wikipedia by anonymous editors without Wikipedia accounts. The program revealed that many such edits were made by corporations or government agencies changing the content of articles related to them, their personnel or their work.[107]
06:41:46 * kallisti scared
06:42:06 <kallisti> you mean, corporations take /special interest/ in their Wikipedia articles?
06:42:08 <kallisti> I'm shocked.
06:42:13 <oerjan> well it's obviously because it can only be edited by people who don't edit wikipedia, for neutrality reasons.
06:42:26 <kallisti> heh.
06:43:11 <kallisti> http://en.wikipedia.org/wiki/File:Wikipedia_content_by_subject.png
06:43:23 <kallisti> I'd like to see this chart with "pop culture" made distinct from "culture and arts"
06:44:48 <elliott> kallisti: I'm surprised it's only 30%.
06:45:01 * elliott is also surprised that mathematics and logic is only 1%.
06:45:08 <kallisti> elliott: I was actually under the impression that -- yess
06:45:10 <kallisti> that.
06:45:15 <kallisti> also technology
06:45:20 <kallisti> I thought there were way more of those articles.
06:45:28 <kallisti> but, then again, this is where I spend most of my time on Wikipedia
06:45:36 <kallisti> so, I'm a bit biased.
06:47:31 -!- copumpkin has joined.
06:47:44 <kallisti> http://en.wikipedia.org/wiki/Deletionism_and_inclusionism_in_Wikipedia "notable topic"
06:49:19 <kallisti> Wikipedia is currently facing a problem of record numbers of volunteers abandoning the site due to excessive deletionism.[26][27][28][29][30][31]
06:49:22 <kallisti> ...
06:49:26 <kallisti> that's a lot of sources.
06:49:33 <elliott> the deletionsts kept removing the sourcse
06:49:35 <elliott> so they had to have more
06:49:45 <kallisti> heh
06:50:17 <Sgeo> Deletionism was deletionismed away and retconjuration was retconjured in
06:50:54 <Sgeo> ^^what I said makes perfect sense to one fandom
06:51:01 <kallisti> I only just discovered this article existed. Is it not the biggest ever violation of Wikipedia:Avoid self-references? Not to mention the fact that it essentially consists of a synthesis of already published material - more like a collection of trivia than an encyclopaedic article. I'm amazed and deeply disappointed that this article somehow passed AFD, and to me it seems to cross a very dangerous line, taking us down the ro
06:51:09 <kallisti> -- deletionist
06:51:41 <elliott> taking us down the ro
06:52:21 <kallisti> elliott: the rest of the comment actually isn't important...
06:52:28 <kallisti> ad towards ever-increasing focus on Wikipedia itself in Wikipedia articles, and the gradual obliteration of the distinction between article-space and Wikipedia-space. This belongs in the latter, not the former.
06:52:32 <kallisti> but there you go
06:52:37 <elliott> i didn't want the rest
06:56:17 <zzo38> But don't you know about the rule about ignore all rules? That is why you have to ignore it so that you can make such an article as that. They should have a article about Wikipedia, too.
07:00:06 <elliott> Who plays Minecraft and also doesn't have homework???
07:02:04 <kallisti> zzo38: I don't understand; there is an article about Wikipedia.
07:03:08 <zzo38> kallisti: Yes, as it is supposed to me. But they should still make it like any other article, even if someone copies it on something else it can be valid
07:04:22 <kallisti> This is a Wikipedia book, a collection of Wikipedia articles that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikipedia books in general, see Help:Books (general tips) and WikiProject Wikipedia-Books (questions and assistance).
07:04:27 <kallisti> what? I didn't know this was a thing.
07:04:28 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
07:04:48 <elliott> they're not as good as
07:04:50 <elliott> that one we found
07:04:51 <elliott> what was it Sgeo
07:05:11 <elliott> http://esoteric.voxelperfect.net/wiki/Why_testing_is_good
07:05:12 <elliott> http://esoteric.voxelperfect.net/wiki/Why_testing_is_good_2
07:05:13 <elliott> oh my god
07:05:16 <elliott> a spambot just
07:05:17 <elliott> created thes
07:05:18 <elliott> e
07:05:31 <elliott> @tell ais523 [[Why testing is good]] and [[Why testing is good 2]] don't have any spam links, they are so perfect, please don't delete them, please
07:05:32 <lambdabot> Consider it noted.
07:05:36 <elliott> @tell ais523 please
07:05:36 <lambdabot> Consider it noted.
07:05:41 <kallisti> elliott: esowiki is an ideal place to test your wiki spambot.
07:05:42 <pikhq_> Spambot fail.
07:05:52 <elliott> THERE IS NO FAIL IT'S BEAUTIFUL
07:06:15 <pikhq_> No, beauty would be a spambot that accidentally becomes sentient.
07:06:29 <kallisti> hmmm, so if we switched to hackiki, would spambots still be a problem?
07:06:50 <zzo38> Probably not as much as MediaWiki, for various reasons.
07:07:19 <kallisti> WHAT THERE'S NO WIKIPEDIA BOOK ON CATEGORY THEORY
07:07:22 * kallisti mad
07:07:41 <zzo38> That is, if you require OpenID to login. And Hackiki is rare meaning less spambot programs specifically target it.
07:07:56 <pikhq_> Probably none target it thus far.
07:07:59 <elliott> we shouldn't require login
07:08:01 <kallisti> http://en.wikipedia.org/wiki/Mathematical_beauty
07:08:02 <kallisti> huh
07:08:02 <zzo38> But I think you should have both the MediaWiki and Hackiki, and give them read-only target to each other.
07:08:06 <elliott> but spambots can be fairly "generic"
07:08:10 <zzo38> s/target/access/
07:09:40 <zzo38> elliott: Yes, it can be, but certain things it is less likely to do. Including OpenID, and protocols other than HTTP and SMTP.
07:10:02 <elliott> yeah let's make an openid gopher wiki.
07:10:48 <zzo38> You cannot use OpenID on anything other than HTTP except something else I have heard that they might make OpenID on any protocol.
07:11:10 <zzo38> Even with HTTP, the spambot usually do not use commands such as PUT
07:11:19 <zzo38> As far as I know.
07:11:44 <pikhq_> A spambot doesn't have to be smart. Indeed, it doesn't need to be much more than a few lines of shell script using curl.
07:12:22 <zzo38> Well, yes; however, regardless of how it is done, certain spambots are more common than others.
07:12:49 <oerjan> i've been thinking that spammers are a bit like resistent bacteria
07:13:42 <oerjan> each one may be resistent against certain spam-fighting methods. and some may be multiresistent.
07:14:05 <oerjan> and one day there will be one which just cannot be stopped.
07:14:20 <zzo38> Yes that may be true; but still, some are more common than others.
07:14:36 <zzo38> And that is the point I am making about the different commonness
07:15:02 * kallisti thinks hackiki is the solution to all of our problems.
07:15:26 <kallisti> we could even embed interpreters into our articles!
07:15:36 <zzo38> kallisti: Yes, Hackiki would help a lot of things.
07:15:55 <kallisti> also: think of the possible security issues.
07:15:58 <kallisti> so wonderful.
07:16:00 <kallisti> to consider.
07:16:09 <oerjan> one day we will find that a spambot has embedded a spambot into our articles. then singularity.
07:16:09 <zzo38> But I suggest not removing the MediaWiki.
07:16:18 <zzo38> But add the Hackiki too.
07:17:55 <elliott> oerjan: when a spambot can't be stopped, it's indistinguishable from productive human contributions
07:17:57 <oerjan> so presumably the wiki admins don't have a fucking clue how to stop the last kind of spam.
07:18:02 <elliott> at which point, spam has been solved
07:18:06 <elliott> also, of course we do, it just relies on graue
07:18:11 <oerjan> without manual intervention.
07:18:19 <elliott> you sound awfully fatalistic about this.
07:18:29 <oerjan> elliott: and graue is not responding i take
07:18:38 <elliott> nobody's bothered because it's not a serious problem yet...
07:18:44 <elliott> graue responded last time we had a huge spam influx
07:19:18 <oerjan> wait, there was a day when the entire first page of recent changes was spam deletions, and that's not a serious problem?
07:19:53 <elliott> oerjan: i see you don't remember the _last_ huge spam influx?
07:20:33 <kallisti> I'm surprised hackiki hasn't gotten more attention
07:20:34 <oerjan> well yeah i do.
07:20:51 <monqy> did the last huge spam influx have great spam
07:21:02 <elliott> no
07:21:05 <monqy> :(
07:21:29 <zzo38> One way to increase the changes in a horoscope board game would be to use extreme harmonics. But I think it should start with real positions and use various cards and moves to change things such as time offset and place offset and house systems and whatever. However, they would always update in real time.
07:21:38 <kallisti> maybe if made the hackiki interface a bit more user friendly it would catch on?
07:22:02 <elliott> why do you expect hackiki to be popular
07:22:37 <zzo38> Don't make it more user friendly; for various reasons. One reason is that then too many people used it and it and spambots will target it. Other reason is to prevent you from making it impossible to use.
07:23:08 <kallisti> elliott: because it's a cool idea. :D) : )D :
07:24:06 <kallisti> I would at least expect some geek blogger to be like "yo dawg check out hackiki it's the bomb diggity"
07:24:46 <monqy> the bomb diggety eh? MAYBE I SHOULD CHECK IT OUT
07:26:40 <Sgeo> elliott, hmm?
07:26:43 <kallisti> yesssss
07:26:48 <elliott> Sgeo: ?
07:26:57 <Sgeo> <elliott> what was it Sgeo
07:27:02 <Sgeo> Oh, right
07:27:15 <Sgeo> The Esoteric programming languages book?
07:27:15 <monqy> kallisti are you a geek blogger maybe you could be the geek blogger you'd expect
07:27:34 <monqy> esoteric programming languages book is good
07:27:37 <Sgeo> http://www.barnesandnoble.com/w/esoteric-programming-languages-including-hephaestus-books/1105758069?ean=9781243288011&itm=2&usri=brainfuck
07:27:44 <monqy> why testing is good is also good
07:28:10 <zzo38> I have seen that a Japanese book mentions my esolang called AAAAAAAAAAAAA!!!!
07:28:41 <Sgeo> Wow, nice cover
07:29:22 <kallisti> monqy: one day I will have a bloggs
07:29:31 <kallisti> for my projecks
07:29:45 <monqy> http://www.barnesandnoble.com/c/hephaestus-books all good
07:30:48 <elliott> Sgeo: nooo they
07:30:50 <elliott> made the cover wrose
07:30:57 <monqy> some even have ratings
07:31:10 <elliott> Articles On Posthumous Novels, including: The Girl With The Dragon Tattoo, The Girl Who Played With Fire, The Girl Who Kicked The Hornets' Nest, Millennium (swedish Miniseries), The Metamorphosis, Radio Free Albemuth, Northanger Abbey (9/28/2011)
07:31:11 <monqy> and reviews
07:31:17 <monqy> i am going to read these reviews
07:31:48 <elliott> monqy: hi buy minecraft i need... am tester
07:31:54 <monqy> :(
07:31:56 <Sgeo> Which ones have reviews?
07:32:09 <monqy> you can se because there are stars
07:32:29 <monqy> i love how some people actually bought these books
07:33:14 <elliott> has anyone ever died
07:33:15 <monqy> i love how these books exist
07:33:21 <Sgeo> "From Cherryh's wesite: this is not a book by CJ Cherryh. It is a collection of Wiki articles made by a person trying to scam the public and the e-book system by using authors' names attached to what is not the authors' work."
07:33:34 <Sgeo> But hey, it does say "Articles on"
07:35:12 <Sgeo> http://www.barnesandnoble.com/w/serial-buses-including-hephaestus-books/1105516836?ean=9781244942738&itm=29&usri=hephaestus+books
07:35:19 <Sgeo> $43
07:35:45 <monqy> on some of these sites the books have good reivews
07:35:47 <monqy> http://www.goodreads.com/book/show/12566363-maximum-ride-including
07:35:54 <monqy> I could not put these books down! They were incredible. I do think that Max was a bit obonxious and some of the characters in the last books ( Max and Fang ) got a bit inconstant. But the boods were amazing nonetheless. I can't wait for the next book to come out in February 2012
07:36:06 <Sgeo> http://www.barnesandnoble.com/c/hephaestus-books?sort=PD&size=30&startat=1 most expensive books
07:36:11 <Sgeo> of the hephaestus books
07:36:41 <Sgeo> monqy, wow
07:36:55 <elliott> the boods were amazing
07:36:59 <elliott> i suspect
07:37:04 <elliott> that's just people giving reviews on the wrong book
07:37:05 <elliott> rather than
07:37:08 <Sgeo> elliott, yeah
07:37:09 <elliott> purchasing it and reading it and reviewing it
07:37:10 <monqy> Role-playing, including: Acting, Role-playing Game, Sexual Roleplay, Psychodrama, Roleplay Simulation, Area Of Effect, Sociodrama, Empty-chair ... Game (pen And Paper), Free Rpg Day
07:37:17 <elliott> Hephaestus Books represents a new publishing paradigm, allowing disparate content sources to be curated into cohesive, relevant, and informative books.
07:37:24 <elliott> sexual roleplay, psychodrama
07:37:52 <kallisti> wow choosemyhat.com is definitely the best website
07:38:05 <elliott> that's gregor
07:38:11 <kallisti> I'm
07:38:13 <kallisti> I'm aware.
07:38:19 <elliott> i'm just surprised people vote on it
07:38:23 <elliott> wow someone likes the pirate hat
07:38:38 <kallisti> my vote is for all the ones that aren't pirate hats
07:38:40 <kallisti> except for sunday
07:38:50 <kallisti> I couldn't vote on today's hate because it am already to day.
07:38:51 <elliott> guys let's all vote for http://codu.org/hats/BlueBeret-sm.jpg
07:38:54 <elliott> he'll look like a complete shithead
07:38:55 <elliott> all day tomorrow
07:38:56 <elliott> http://choosemyhat.com/?s=1&day=15306
07:38:57 <elliott> go go go
07:39:10 <kallisti> elliott: I picked good hats
07:39:13 <kallisti> because I like good hats.
07:39:14 <elliott> FUCK YOU
07:39:18 <elliott> monqy: correct his injustice
07:39:32 <monqy> i voted for beret
07:39:39 <kallisti> monqy is groupthink
07:39:39 <elliott> is Sgeo still homework (sgeo is probably still homework)
07:39:52 <Sgeo> Sgeo is not homework
07:40:00 <Sgeo> Sgeo is soon food
07:40:02 <elliott> is sgeo
07:40:03 <elliott> busy in any way
07:40:11 <Sgeo> Not too busy to vote on a hat
07:40:18 <elliott> i wasnt thinking about hat but ok
07:40:21 <kallisti> Sgeo: vote for mine
07:40:23 <kallisti> they're the awesome choices
07:40:33 * Sgeo voted beret
07:40:33 <kallisti> the ones that aren't the pirate hat or the beret
07:40:51 <elliott> the beret is the only one that will have gregor punched in the face ten times in two days
07:41:15 * Sgeo is clueless about fashion
07:41:24 <kallisti> elliott: http://codu.org/hats/TamOShanter-sm.jpg
07:41:27 <kallisti> you forgot this one.
07:41:47 <monqy> voting that one for tuesday
07:41:48 <monqy> its good
07:44:50 * kallisti is the only one with good taste in hats.
07:44:55 <elliott> time for us to all listen to superturing again
07:44:58 <elliott> http://codu.org/music/e/superturing/superturing.ogg
07:45:45 <coppro> Gregor: you don't happen to know toby elliott or matt mcpherrin, do you?
07:46:05 <elliott> who's this person stealing my name
07:46:20 <coppro> a man greater than you
07:46:27 <elliott> impossible
07:46:35 <coppro> you're insane :P
07:46:41 <monqy> this is a good song
07:46:42 <elliott> and perfect
07:46:44 <zzo38> You could have a rule, that, if an aspect line vanishes while a piece is standing on it, then that piece is removed from the game.
07:46:46 * elliott insane and perfect
07:47:09 <coppro> that reminds me, elliott, how has your life insanity been lately anyhow?
07:47:27 <elliott> perfect; before you ask, the perfection has been insane
07:47:29 <elliott> http://twitter.com/#!/TobyElliottUK/status/140505693936562177
07:47:32 <elliott> i found toby elliott for you
07:48:04 <coppro> not him
07:48:10 <elliott> no it's definitely him
07:48:13 <elliott> i guarantee it
07:48:16 <monqy> there are two toby elliotts???
07:48:30 <monqy> i refuse to accept this
07:48:30 <elliott> there can be only one
07:48:47 <coppro> he works at mozilla, hence I asked gregor
07:49:43 <kallisti> elliott: http://codu.org/music/op9/GRegor-op9.ogg I could easily imagine this in a Zelda game.
07:50:06 <kallisti> maybe with some more percussion
07:50:09 <elliott> is gregor embarrassed of op9 or is it too new for that, i forget
07:50:17 <elliott> i've only really listened to op. 13
07:51:07 <pikhq_> Some of his earlier ones are pretty good, too.
07:58:47 <coppro> kallisti: the opening bars of the melody are very close to super smash bros music
07:59:41 <oklopol> i could imagine it being in a zelda game as a joke
07:59:46 <kallisti> coppro: I thought so as well actually
08:00:08 <pikhq_> My main problem with Op. 9 is the synth is terribad.
08:00:14 <kallisti> pikhq_: picky picky
08:00:23 <coppro> yeah
08:00:51 <oklopol> my main problem is the only interesting things are the parts that make you go what the fuck, that's not right
08:01:12 <oklopol> superturing was intriguing tho
08:01:43 <pikhq_> I've not listened to Op. 9 all the way through, because I can't stand that synth.
08:01:45 <oklopol> i've been wanting to do something like for some time now
08:02:06 <elliott> What I need is a clone of Sgeo. Wait, no.
08:02:30 <Sgeo> elliott, when I'm done cooking I'll come help you
08:02:38 <oklopol> i can help you right now
08:02:40 <elliott> THERE IS NO COOKERY
08:02:41 <elliott> ONLY SUFFERING
08:02:47 <oklopol> assuming it helps you that i'm leaving right now
08:02:52 * pikhq_ plays something from Distant Worlds II; that ought to clean it out
08:02:52 <elliott> oklopol: It totally does. Thx
08:03:09 <pikhq_> Real orchestra > synth
08:03:51 <monqy> i like terribad synth
08:03:52 <oklopol> what an astute observation
08:04:23 <kallisti> monqy: me too
08:04:43 <pikhq_> Well, it's not so much that synthesised music is *inherently* bad as it is that, when it's imitating real instruments, it's far too often uncanny valley.
08:04:47 <kallisti> pikhq_ is just jealous because he can't write music with terrible synths.
08:05:12 <elliott> monqy: me too
08:05:21 <elliott> orchestras sound boring
08:06:13 <kallisti> elliott: what with their dynamic exression of pitch and volume, using real life physics to produce timbres
08:06:16 <kallisti> boring.
08:06:18 <monqy> help python is telling me i cant refer to a variable in the lexically enclosing scope :||| i have a function within a function...and the function wont let me do the things i want to do...
08:06:25 <elliott> monqy: you can't in python 2
08:06:27 <elliott> wrap it in a list
08:06:29 <elliott> use [0] to access
08:06:31 <monqy> oh
08:06:34 <monqy> ick
08:06:39 <elliott> monqy: or just wrap it in an object
08:06:42 <elliott> you might feel less bad
08:06:49 <elliott> kallisti: have you ever heard an orchestra, they're so predictable
08:06:52 <monqy> objects feel bad but maybe i can pretend it is a function
08:06:57 <kallisti> elliott: yes.
08:07:01 <kallisti> and, not necessarily
08:07:04 <kallisti> largely depends on the composer.
08:07:07 <elliott> monqy: you could use a function too.
08:07:19 <elliott> kallisti: no sorry orchestras are boring the end my good friend monqy can back me up
08:07:22 <kallisti> wait I thought Python 2.x had closures?
08:07:39 <kallisti> is that not what monqy is talking about?
08:07:51 <kallisti> oh he wants to modify things...
08:07:53 <kallisti> right?
08:07:57 <monqy> no just reference
08:07:58 <pikhq_> Yeah, very largely depends on the composer.
08:08:04 <monqy> even if i do objects it probably wont be the worst thing ive done in this thing...i made REALLY DUMB quasi pattern matching to ease the pain of not having pattern matching
08:08:20 <pikhq_> Some do fairly bland, boring stuff. Some blow your brains out, rearrange them, and put them back in.
08:08:30 <elliott> monqy: oh if you reference then it works
08:08:33 <elliott> it's just mutation that doesn't work
08:08:36 <monqy> hmmmmmmm
08:09:00 <monqy> so it does
08:09:12 <monqy> i guess i was just testing wrognly
08:09:18 <monqy> what a dumb error message though
08:09:27 <pikhq_> (can't give names, my source for this is "listening to the classical radio station often, but not paying *that* close of attention to composer, so I can usually recognise composers but can't really tell you the names out of the blue")
08:09:46 <monqy> though actually,,,i might need mutation,,,because this thing is really dfumb
08:10:02 <kallisti> class Ref: def __init__(self, v=None): self.v = v
08:10:05 <kallisti> monqy: enjoy
08:10:22 <monqy> :(
08:10:51 <pikhq_> Well. I can say Bach is rather awesome.
08:10:53 <monqy> maybe i will just be object oriented and make a class ;_; can i put a class inside a function that might make me feel less bad
08:11:01 <kallisti> sure
08:11:18 <kallisti> it's generally preferable that you not do that though
08:11:20 <kallisti> as it breaks some things
08:11:21 <kallisti> but, who cares.
08:11:25 <monqy> fuck preferability
08:11:32 <monqy> ;_;
08:11:47 <monqy> i have given up on makign this thing preferable at all the moment i had to do it.......
08:11:53 <monqy> (in python)
08:12:01 <kallisti> there's really no reason to not just put the class at top-level
08:12:14 <kallisti> unless you're doing things that involve dynamic creation of classes on the fly
08:12:17 <kallisti> which... you probably aren't
08:12:21 <monqy> what if i am
08:12:24 <monqy> :> :> :>
08:12:26 <kallisti> then good.
08:12:30 <kallisti> do that.
08:13:22 <kallisti> basically I just remember that there's some software somewhere (I don't remember anything else about it) that cannot do <insert whatever it does> to classes that are not defined at top level.
08:13:33 <kallisti> ...this is very important, I know.
08:13:55 <kallisti> maybe it was inspect?
08:14:09 <kallisti> which would subsequently affect a lot of libraries that utilize reflection.
08:14:13 <kallisti> but I'm not sure.
08:17:02 <kallisti> monqy: anyway if you need some help let me know.
08:17:09 -!- zzo38 has quit (Remote host closed the connection).
08:17:36 <monqy> i think i can handle this
08:18:09 <monqy> i'm only giving myself tomorrow to finish it on the threat of painful guilt so all the pain will probably be over soon
08:21:09 * kallisti feels useful today.
08:21:21 <kallisti> I have helped TWO people with TWO languages. minorly.
08:21:22 <kallisti> yessss
08:29:33 <kallisti> monqy: oh also it should be class ref(object):
08:29:48 <kallisti> because capitalization style guide and new-style classes blah blah stupid
08:30:56 <kallisti> but note that no one actually follows a standard capitalization in Python programs.
08:31:33 <pikhq_> CamelCase_is_COOLbutipreferinconsistentCaSiNg
08:31:47 -!- SgeoN1 has quit (Quit: Bye).
08:31:53 <monqy> my-favourite-is-probably-this-one-for-reasons
08:32:13 <pikhq_> fairly-classy
08:32:25 <kallisti> monqy: I like that one but also don't depending on the language syntax for reasons
08:32:29 <kallisti> that have already been discussed.
08:32:50 <monqy> any capsy style depends on syntax
08:33:00 <kallisti> of course the best is to just use spaces.
08:33:14 <monqy> depends on if you want to use spaces for other things
08:33:16 <kallisti> an example - another example
08:33:38 <kallisti> nah spaces are fine for everything
08:33:38 <monqy> spaces may be best used there, but they may also be best used elsewhere
08:33:42 <kallisti> f an example
08:33:45 <kallisti> function application
08:33:51 <kallisti> (best language)
08:34:27 <kallisti> f g an example
08:34:33 <kallisti> obviously that's f ( g (an example))
08:34:43 <kallisti> map g an example
08:34:45 <monqy> also im not used enough to spaces in variable names so it feels too much like separate things whereas variables really should just feel really grouped together and ig et confused between lexeme boundares ;_;
08:34:54 <kallisti> well, obviously this one is map f (an example)
08:34:55 <pikhq_> In\ Tcl,\ this\ is\ quite \doable,\ if\ a\ bit\ silly.
08:35:02 <monqy> quite a bit silly
08:35:17 <pikhq_> Also, s/ \/\ /
08:35:18 <monqy> |I think a few languages allow this sort of thing|
08:35:41 <kallisti> !perl ${hello hi} = 2;
08:35:44 <EgoBot> Can't locate object method "hello" via package "hi" (perhaps you forgot to load "hi"?) at /tmp/input.16159 line 1.
08:35:48 <monqy> oops
08:35:54 <kallisti> weird syntax
08:35:56 <pikhq_> !tcl set {hello hi} 2
08:36:28 <elliott> <kallisti> of course the best is to just use spaces.
08:36:30 <elliott> ++, except seriously
08:36:46 <kallisti> elliott: well I was being /partially/ serious
08:36:51 <kallisti> it highly depends on the syntax, as monqy said.
08:37:08 <elliott> it isn't practical if you have syntax because it forces you to make the syntax crappy to compensate
08:37:15 <elliott> and if you're plain-text then it's really hard to raed
08:37:16 <elliott> read
08:37:16 <kallisti> obviously you can't mix Haskell-style functional application with spaces-in-variable-names and expect an unambiguous parse.
08:37:56 <kallisti> elliott: so you're advocating the use of spaces in variable names for languages that have no syntax? am I reading correctly? o_o
08:38:06 <elliott> yes.
08:38:14 <kallisti> oh okay.
08:38:39 <pikhq_> Hmm. Spaces in variable names could be perfectly sensible in a C-style language.
08:38:48 <pikhq_> Though you'd have to ban spaces in type names.
08:38:57 <pikhq_> (no long long int for you!)
08:39:02 <elliott> kallisti: for instance, @lang allows spaces in variable names, obviously
08:39:14 <kallisti> elliott: because it doesn't exist?
08:39:16 <kallisti> OOOOOOOH SNAP
08:39:22 <elliott> ha ha ha. but no.
08:40:07 <pikhq_> Presumably, @lang doesn't deal in plain text.
08:41:19 <kallisti> @lang should read Microsoft Word documents as programs.
08:41:19 <lambdabot> pong
08:41:24 <kallisti> @lang
08:41:25 <lambdabot> pong
08:41:26 <kallisti> >_>
08:41:42 <kallisti> @help lang
08:41:43 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
08:41:50 <kallisti> thank you lambdabot
08:42:14 <monqy> @lang good command
08:42:15 <lambdabot> pong
08:42:24 <kallisti> pikhq_: or presumably @lang has no syntax
08:42:26 <kallisti> whatever that means.
08:43:03 <elliott> indeed it does not.
08:43:52 <pikhq_> elliott: I consider Forth to have syntax; thus I'm going to probably consider @lang to have syntax.
08:44:00 <elliott> Nope
08:44:26 <kallisti> I consider Lisp to have syntax; thus I'm going to probably consider @lang to have syntax.
08:44:36 <pikhq_> I would also consider a straight-up parse tree to be syntax.
08:44:49 <pikhq_> (which Lisp is very close to being, but not quite :P)
08:44:51 <kallisti> elliott: unless you speak @lang commands and store it as sound file.
08:45:05 <kallisti> or like... draw pictures
08:45:07 <elliott> syntax would require representation as a string
08:45:07 <kallisti> or...
08:45:17 <pikhq_> elliott: No.
08:45:26 <kallisti> well... I dunno? maybe?
08:45:29 <oerjan> @ping duh
08:45:29 <lambdabot> pong
08:45:31 <pikhq_> Syntax would require representation.
08:45:42 <kallisti> I'm not sure how you would describe the syntax of pure-data, for example.
08:45:44 <elliott> no it wouldn't. a natural number has no syntax
08:45:50 <kallisti> since it's all graphical and flow-charty
08:46:02 <pikhq_> A natural number doesn't have inherent representation.
08:46:18 <monqy> and such is the nature of @lang?
08:46:46 <elliott> "ADT = syntax" --pikhq, lying, because he considers strings to have syntax as dictated by BNF which is not part of their structure, and would not consider the syntax of C where each punctuation was swapped with another to be identical
08:48:30 <pikhq_> "'ADT = syntax' --pikhq, lying, because he considers strings to have syntax as dictated by BNF which is not part of their structure, and would not consider the syntax of C where each punctuation was swapped with another to be identical" -- elliott, being dense
08:48:41 <kallisti> int main ) int argc * char $ argv ( } printf(&Hello, World!\n&)' return 0' {
08:49:01 <elliott> pikhq_: see, now i understand!
08:52:04 <pikhq_> elliott: Let's say, hypothetically, C were defined in terms of the tree that results from parsing strings in C, rather than being defined in terms of that string.
08:52:24 <pikhq_> I would say that tree *itself* has syntax, as there are rules governing how it can and cannot be structured.
08:53:45 <kallisti> ...oops
08:54:01 <kallisti> int main ) int argc * char $ argv ( } printf)&Hello, World!:n&(' return 0' {
08:54:02 <elliott> pikhq_: the problem is that i don't believe you. you may consider it syntax in some abstract sense, but definitely not the same way you consider C, Perl, brainfuck's concrete syntax. you might look at some C code which happens to be "represented" in this way (does that even make any sense?) and say it has Proper Syntax, but it'd be because a pretty-printer was transforming that tree into the familiar syntax... I abjectly disbelieve that you would
08:54:02 <elliott> consider wildly differing concrete representations of the same abstract syntax to be the same syntax. and if you think a tree can be presented in a fully abstract form with no concretisation to it, i would like to see a picture.
08:54:41 -!- oerjan has quit (Quit: leaving).
08:54:46 <Sgeo> pikhq_, does Ook have identical syntax to BF?
08:55:10 <pikhq_> elliott: Hmm. Maybe I'm using the wrong term here.
08:55:23 <pikhq_> elliott: Let's call the rules for how the parse tree must be constructed metasyntax.
08:55:28 <pikhq_> @lang has metasyntax, but not syntax.
08:55:29 <lambdabot> pong
08:55:37 <monqy> pong indeed, lambdabot
08:55:52 <kallisti> pikhq_: hmmm, how about grammar instead of metasyntax? is that right?
08:56:01 <elliott> pikhq_: I'm not sure I consider that a thing, either -- what /is/ "the parse tree" apart from the set of rules that construct it? there's not some weird overly-flexible data structure plus some limitations, just an a priori definition of a tree
08:56:15 <elliott> an ADT is a sort of syntax, sure, but I wouldn't call it rules applying to some underlying thing
08:56:29 <elliott> (but /not/ the sort of syntax you talk about when you talk about identifiers with spaces in them, that's an issue of concrete syntax)
08:56:44 -!- GreaseMonkey has quit (Quit: The Other Game).
08:57:04 <pikhq_> elliott: Um, your tree data structure doesn't have many inherent rules. struct tree {struct tree *left; struct tree *right;}
08:57:20 <elliott> (you think about trees in C?)
08:57:28 <pikhq_> Okay, admittedly, bad example.
08:57:38 <pikhq_> Far, far too limited of type.
08:57:53 <kallisti> I think about trees in Visual Basic. :>
08:57:56 <elliott> data Expr t where ETrue :: Expr Bool; EFalse :: Expr Bool; EInteger :: Integer -> Expr Integer; EIf :: Expr Bool -> Expr a -> Expr a -> Expr a
08:57:59 <pikhq_> Let's stick that in Haskell-ish. Which... Makes this go into severe nitpicking, actually.
08:58:05 <elliott> note how EIf (EInteger _) _ _ doesn't type.
08:58:11 <elliott> and not because of any additional "rules" layered on top
08:58:29 <elliott> @lang is fully dependently-typed, so of course it can express a type of syntax that admits no invalid syntactical constructions
08:58:29 <lambdabot> pong
08:58:35 <elliott> (invalid semantic constructions, certainly)
08:58:49 <elliott> not that "invalid syntactical constructions" is meaningful here -- it's just an abstraction inversion to get the point across
08:58:55 <elliott> the language is defined by its structure
08:59:24 <pikhq_> How's about we go with "human language sucks".
08:59:33 <pikhq_> Actually, let's go more general.
08:59:35 <pikhq_> "humans suck".
08:59:44 <kallisti> elliott: can you take this structure and provide a list of atomic components?
08:59:55 <elliott> kallisti: sentence insufficiently meaningful
08:59:55 -!- derrik has quit (Ping timeout: 252 seconds).
09:00:23 <monqy> pikhq not general enough
09:00:24 -!- derrik_ has joined.
09:00:37 <kallisti> elliott: also, are there combinations of these components that are invalid? Are there rules that determine if a given structure is invalid?
09:00:50 <elliott> repeat previous complaint
09:01:31 <kallisti> elliott: would it be better if I spoke to you in math?
09:01:31 <pikhq_> monqy: "Everybody and everything sucks"
09:01:40 <monqy> now that is more like it
09:01:49 <elliott> kallisti: probably not. but you're assuming too many concepts necessarily imply. just expand everything out.
09:02:35 <kallisti> elliott: you said that the language is defined by its structure... what does that mean?
09:02:44 <elliott> <elliott> data Expr t where ETrue :: Expr Bool; EFalse :: Expr Bool; EInteger :: Integer -> Expr Integer; EIf :: Expr Bool -> Expr a -> Expr a -> Expr a
09:02:45 <elliott> <elliott> note how EIf (EInteger _) _ _ doesn't type.
09:02:45 <elliott> <elliott> and not because of any additional "rules" layered on top
09:02:45 <elliott> <elliott> @lang is fully dependently-typed, so of course it can express a type of syntax that admits no invalid syntactical constructions
09:04:09 <kallisti> being dependently-typed means that all syntactical constructors are valid?
09:04:09 <kallisti> O
09:04:13 <kallisti> I'm confused.
09:04:30 <kallisti> *constructions
09:04:32 <kallisti> hi I'm kallisti.
09:04:33 <elliott> yes.
09:04:34 <elliott> you are.
09:04:39 <elliott> confused, and that.
09:04:58 <Sgeo> Is elliott trying to teach GADTs?
09:05:02 <elliott> no.
09:05:04 <kallisti> no
09:05:05 <kallisti> I get those.
09:05:14 <elliott> or so he claims, indeed!
09:05:17 <kallisti> not what elliott is currently saying though.
09:05:24 <elliott> maybe i'll just buy a computer that can run minecraft
09:05:38 <Sgeo> Your computer can't run Minecraft?
09:05:45 <Sgeo> Oh, btw, I should be able to help you test now
09:06:03 <Jafet> Even if it can't run minecraft, it should be able to run slaves to armok
09:06:20 <elliott> Sgeo: indeed not
09:06:26 <elliott> Jafet: Heck no.
09:06:34 <elliott> Sgeo: Same time, same bat-channel.
09:06:50 <kallisti> 04:02 < elliott> <elliott> @lang is fully dependently-typed, so of course it can express a type of syntax that admits no invalid syntactical constructions
09:06:53 <kallisti> can you explain this bit?
09:07:03 <elliott> <elliott> <elliott> data Expr t where ETrue :: Expr Bool; EFalse :: Expr Bool; EInteger :: Integer -> Expr Integer; EIf :: Expr Bool -> Expr a -> Expr a -> Expr a
09:07:05 <elliott> <elliott> <elliott> note how EIf (EInteger _) _ _ doesn't type.
09:07:17 <elliott> extend principle to dependent types, note that all things that would be "invalid syntax" are now things that "don't type"
09:07:31 <Jafet> If syntax is computable in the dependent typing system of @lang
09:07:34 <elliott> you can't put an A where a B is expected, so says a parser, and so says the type-checker if you try and fudge up an invalid tree.
09:08:34 <kallisti> elliott: I don't think that really disproves that the syntax /exists/
09:08:43 <elliott> that was not what i was talking about at the time.
09:08:47 <kallisti> oh
09:08:49 <elliott> you are mixing up threads of "discussion"
09:09:00 <elliott> i was merely disputing that there are "rules" which constitute a syntax, separate from the definition of the tree
09:09:29 <elliott> Sgeo: (Bat-channel means IP address, for those who speaketh not the tongue. That is, for people who don't know what the hell I'm talking about. Certainly I don't.)
09:09:43 <kallisti> so, ADT = syntax? +_+
09:10:13 <elliott> kallisti: I didn't say that, either!
09:10:15 <elliott> Load, chunks, load.
09:10:17 <elliott> Ah, you load.
09:10:34 <Patashu> Is there a site I can use to set up a poll on, equivalent to sites like quicktopic for instant forum topics?
09:10:38 <elliott> --and not badly either, though your ice colour is not up to scratch.
09:10:41 <elliott> Definitely need some handling of alpha.
09:10:58 <kallisti> elliott: okay so you're saying the language is just an ADT?
09:11:13 <kallisti> and then syntax is constructed however you lik?
09:11:14 <kallisti> +e
09:11:15 <elliott> kallisti: No really, no.
09:12:08 <kallisti> "John is a married bachelor." is grammatically well-formed but expresses a meaning that cannot be true.
09:12:13 <kallisti> someone should make a movie about this.
09:12:19 <kallisti> title: Married Bachelor
09:12:21 <elliott> Sgeo: And again, mayhaps?
09:12:22 <kallisti> romantic comedy
09:13:20 <elliott> Hmm, but some of these colours are so strangely averaged.
09:13:54 <elliott> Seems like a water colour is the next thing I need.
09:13:56 <pikhq_> That was apparently a 1941 film.
09:14:08 -!- Phantom_Hoover has joined.
09:14:08 <pikhq_> http://www.imdb.com/title/tt0033883/
09:17:31 -!- sebbu2 has joined.
09:17:32 -!- sebbu2 has quit (Changing host).
09:17:32 -!- sebbu2 has joined.
09:18:53 -!- sebbu3 has quit (Ping timeout: 240 seconds).
09:26:24 -!- sebbu has joined.
09:28:23 <Sgeo> elliott, do I have anymore testing I need to do?
09:28:34 <elliott> No Phantom_Hoover has taken over now he is like 50x better (not actually true).
09:29:17 -!- sebbu2 has quit (Ping timeout: 240 seconds).
09:32:31 -!- monqy has quit (Quit: hello).
09:54:58 -!- kmc has quit (Quit: Leaving).
10:31:50 <elliott> Phantom_Hoover smel sfuny
10:42:45 -!- KingOfKarlsruhe has joined.
10:48:09 -!- derrik_ has quit (Quit: all for today).
11:22:53 -!- copumpkin has joined.
11:25:13 -!- copumpkin has quit (Client Quit).
11:28:26 * elliott considers using pam_ssh. do i dare?
11:28:28 <elliott> pikhq_: do I dare.
11:28:49 <elliott> last release 2009. always a good sign
11:39:27 <Vorpal> elliott, there?
11:39:31 <elliott> Vorpal: No.
11:39:36 <Vorpal> elliott, you use xfce right?
11:39:43 <elliott> Well, ostensibly. Yes.
11:40:02 <Vorpal> elliott, do you happen to know if there is a way to tell xfce to not put an icon for a given partition on the desktop?
11:40:21 <Vorpal> I have loads of pointless ones due to using lvm
11:40:31 <elliott> Vorpal: Setting -> Desktop -> Icons? (I heartily suggest setting "icon type" to "none".)
11:40:49 <elliott> Failing that, gconf or dconf or xfconf (real, apparently! I just made it up) or blah.
11:40:55 <elliott> But desktops are quite an irritating thing, anyway.
11:41:14 <Vorpal> elliott, "File system" just removes the one for / there.
11:41:25 <elliott> "Icon type: None" removes them all. :-)
11:41:33 <elliott> (You could put symlinks in ~/Desktop for the ones you want.)
11:41:36 <elliott> (But really, desktops? In 2011?)
11:41:38 <Vorpal> oh I guess /home is considered "removable devices"
11:41:57 <Vorpal> oh well, I mount usb sticks from the terminal anyway
11:41:57 <Jafet> I don't remember the last time I've seen my desktop
11:42:09 <elliott> aur/pam_captcha 1.5-4
11:42:10 <elliott> A Visual text-based CAPTCHA challenge module for PAM/SSH Logins
11:42:12 <elliott> Well, that's... novel.
11:42:30 <elliott> Vorpal: A question in response! Do you know if I can make sudo-over-ssh ask the /connecting/ ssh for a pubkey auth?
11:42:54 <Vorpal> hm
11:43:06 <Vorpal> elliott, you can use pubkey for sudo?
11:43:15 <elliott> i.e.: On the server donk connected via ssh from my desktop blob I run "sudo blah". sudo-on-donk does some PAM/ssh magic and ends up calling upon blob's ssh to do the standard public-key authentication.
11:43:23 <elliott> Vorpal: That's what I'm asking.
11:43:32 <elliott> So the private key isn't on donk at all, ssh-agent on blob works fine, etc.
11:43:46 <elliott> That would be very nice, since the only reason I have a traditional password on servers is for sudo.
11:43:54 <Vorpal> elliott, maybe with key forwarding and some pam module? Really I don't know much about pam.
11:44:05 <elliott> Guess I picked the wrong person!
11:44:14 <Vorpal> afraid so
11:44:19 <elliott> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595817
11:44:23 <elliott> Aha! This looks like it.
11:44:34 <elliott> "This module provides authentication via ssh-agent. It takes 3 arguments, file=/path/to/authorized_keys, debug, and allow_user_owned_authorized_keys_file. If an ssh-agent listening at SSH_AUTH_SOCK can successfully authenticate that it has the secret key for a public key in the specified file, authentication is granted, otherwise authentication files"
11:44:36 <elliott> Yes! Bravo!
11:44:46 <elliott> Now, does this obsolete pam_ssh...
11:45:12 <Vorpal> elliott, I guess you need to forward the ssh agent thingy though?
11:45:16 <elliott> "libpam-ssh-agent allows you to SSH to a machine with agent forwarding,
11:45:16 <elliott> and use the agent to authorise PAM transactions, most notably sudo.
11:45:16 <elliott> The upshot of this is that I can go:"
11:45:20 <Vorpal> Not sure how that works, I always avoided it
11:45:24 <elliott> Vorpal: See http://pamsshagentauth.sourceforge.net/
11:45:26 <elliott> Always avoided what?
11:46:13 <Vorpal> forwarding agent. Because of the security risks if someone else have root access to said machine. I mean, I may co-own a vps with someone without trusting them with my own private key.
11:46:27 <Vorpal> which agent forwarding iirc would open for.
11:46:29 <elliott> Um, this does not involve that at all.
11:46:45 <elliott> "If an ssh-agent listening at SSH_AUTH_SOCK can successfully authenticate that it has the secret key for a public key in the specified file, authentication is granted, otherwise authentication files"
11:46:52 <Vorpal> elliott, it says "agent forwarding" in the text you copied
11:46:56 <elliott> Offering free authentication of a private key =/= offering private key.
11:47:02 <elliott> I assume you know how public-key cryptography works.
11:47:38 <Vorpal> elliott, yes. "On the remote system, if the ssh-agent connection is forwarded, it is also important that the root user is trustworthy, because they can access the agent socket (though not the key)."
11:47:46 -!- derdon has joined.
11:47:49 <Vorpal> (quote from https://en.wikipedia.org/wiki/Ssh-agent)
11:47:59 <Vorpal> elliott, which is what I meant.
11:48:07 <elliott> Well that's moronic, who designed that?
11:49:13 <Vorpal> elliott, whoever gave root full access independent of file system permissions :P
11:49:51 <elliott> I don't see why that's relevant, it's just a case of the socket exposing things it shouldnt'
11:49:53 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:49:53 <elliott> shouldn't
11:50:02 -!- derrik has joined.
11:50:47 <Vorpal> elliott, well, agent forwarding is designed to let you do recursive ssh with the private key locally basically. One use case would be ssh to some gateway kind of system of a LAN and then ssh to the system you want inside I guess
11:51:00 <Vorpal> thus you need that ability
11:51:03 <elliott> Yeah, that's sooooo common.
11:51:12 <Vorpal> elliott, well, that is what it was designed for.
11:51:15 <Vorpal> not your use case
11:51:23 <Vorpal> and agent forwarding isn't commonly used.
11:51:46 <elliott> Maybe it'd be more commonly used if it did something useful :)
11:51:52 <Vorpal> whatever.
11:53:33 <elliott> I wonder if the ssh protocol itself supports doing a pubkey auth after initial login
11:54:29 <Vorpal> doubtful
12:02:59 <elliott> (Is it normal to iterate SSH key generation until you get a randomart you like?)
12:03:10 <Vorpal> nope
12:03:16 <Vorpal> what is a "randomart"?
12:03:42 <elliott> You know, the little pictures ssh-keygen draws you. Meant for host key authentication.
12:04:01 <Vorpal> oh that, relatively new stuff
12:04:12 <Vorpal> I just compare the fingerprint instead
12:04:18 <Vorpal> as in the old style string
12:08:08 <Vorpal> elliott, hm can opengl rotation matrices cause gimbal lock?
12:08:25 <elliott> I'm not sure why you expect me to know.
12:08:57 <Vorpal> oh well, worth a try
12:14:31 -!- copumpkin has joined.
12:15:14 <Phantom_Hoover> Vorpal, can't all matrices?
12:15:14 <lambdabot> Phantom_Hoover: You have 13 new messages. '/msg lambdabot @messages' to read them.
12:15:28 <Vorpal> Phantom_Hoover, I guess so
12:15:34 <Phantom_Hoover> elliott, ...
12:15:44 <elliott> Wow
12:15:44 <Vorpal> Phantom_Hoover, so quaternions is our only hope?
12:15:57 <Vorpal> that is quite a lot
12:20:27 <Vorpal> It is annoying that 2D arrays in C use row-column order.
12:20:35 <Vorpal> column-row would be so much better
12:21:11 <elliott> Vorpal: Dude, they use whatever order you specify.
12:21:23 <Jafet> 2D arrays in C are annoying.
12:21:35 <Vorpal> elliott, well, if you want foo[4][4] = { { a, b, c} ... }
12:21:39 <Vorpal> err a,b,c,d
12:21:41 <Vorpal> but anyway
12:21:46 <Vorpal> when you write it as a constant there
12:21:47 <Jafet> For example, try passing one to a function.
12:21:49 <elliott> Well, yes, you have to specify it in the order you use it :P
12:21:56 <elliott> Jafet: Try returning one.
12:22:01 <elliott> Jafet: Try returning a 1D array, for that matter.
12:22:20 <Vorpal> elliott, problem is I want column-row in memory, but I don't want to have to turn my head when I write it in the source :P
12:22:36 <elliott> Vorpal: That's why god invented code generation.
12:22:37 <elliott> Thank you, god.
12:22:40 <elliott> We love you.
12:39:31 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
12:58:54 <Vorpal> elliott, code generation for a simple task like filling out an projection matrix is silly :P
13:00:14 <elliott> You call yourself a Unix user. (Do you? Anyway, it's a one-liner.)
13:00:18 <elliott> Deewiant: Dramatic exit
14:34:15 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
14:53:55 -!- Phantom_Hoover has joined.
15:41:59 -!- sebbu2 has joined.
15:41:59 -!- sebbu2 has quit (Changing host).
15:41:59 -!- sebbu2 has joined.
15:42:32 -!- sebbu has quit (Ping timeout: 244 seconds).
15:48:19 -!- elliott has quit (Ping timeout: 252 seconds).
16:05:05 -!- derrik has quit (Quit: gone).
16:10:31 -!- oerjan has joined.
16:57:27 <oerjan> It was quiet. Too quiet.
17:09:44 -!- derrik has joined.
17:16:39 -!- Klisz has joined.
17:17:17 -!- MSleep has changed nick to MDude.
17:19:23 <Vorpal> oerjan, yep
17:23:58 <oerjan> after reading today's iwc annotation, i predict dmm is currently receiving a flood of emails pointing out that AC doesn't move electrons from source to destination.
17:35:19 <Vorpal> oerjan, and it breaks down for wired networks too when differential signalling is used.
17:35:47 <Vorpal> well kind of
17:36:08 <oerjan> wired networks?
17:36:26 <Vorpal> like ethernet
17:36:29 <oerjan> oh hm
17:36:51 <Vorpal> afaik ethernet uses differential signalling.
17:36:58 <oerjan> whatever that is.
17:37:09 <Vorpal> https://en.wikipedia.org/wiki/Differential_signaling
17:39:08 <oklopol> i had a dream that an apocalypse by velociraptor robots was coming
17:40:17 <oerjan> well, i guess that's easier than getting enough dna for actual cloning
18:07:40 <oklopol> i also had a dream that one of my flashcard decks had 320000 due cards
18:10:39 <pikhq_> SRS hell.
18:11:24 <pikhq_> (Jeeze, I consider it a long day when I've got 100 due)
18:11:41 <oklopol> well i have over 20 decks
18:12:13 <oklopol> and i often take a couple hundred new cards a day
18:12:48 <pikhq_> When your review methods include "write down the entire sentence", you're going to have time-consuming SRSing.
18:13:07 <oklopol> yes, probably, i never move a muscle
18:13:24 <pikhq_> Damned Japanese, being somewhat hard to ensure you actually notice the distinctions between characters otherwise.
18:13:41 <oklopol> but what's srs, a flashcard program?
18:13:50 <pikhq_> When I had been going for recognition, I'd pull stupid shit like confusing 義, 議, 儀...
18:14:08 <pikhq_> SRS is a class of flashcard study methods. "Spaced repetition system".
18:14:29 <pikhq_> Y'know, where the cards have a longer time between repetitions each time you study them and answer correctly.
18:14:32 <oklopol> apparently i still can't see kanji
18:14:45 <oklopol> oh right.
18:14:54 <oklopol> i use anki
18:15:00 <pikhq_> Yeah, figurs.
18:15:03 <pikhq_> Figures, even.
18:15:09 <pikhq_> That's probably the most used one.
18:15:26 <oklopol> probably, it's not particularly good, lacks tons of very basic things i need all the tiem
18:15:28 <oklopol> *time
18:15:47 <pikhq_> Like?
18:16:04 <oklopol> for instance there's no way to get statistics for all decks at once
18:16:10 <pikhq_> Aaaah.
18:16:21 <pikhq_> Yeah, that's really rather annoying.
18:16:37 <pikhq_> Hence why I've got a single largish deck with all my Japanese stuff in it.
18:16:45 -!- oerjan has quit (Quit: Good night).
18:17:14 <oklopol> i study my different japanese decks in different ways
18:17:46 <pikhq_> I'm just running with sentences.
18:18:10 <pikhq_> Working pretty well thus far.
18:18:31 <oklopol> i should probably get a deck from english to japanese sentences.
18:18:37 <oklopol> seems like the most useful kind of deck
18:20:01 <pikhq_> Not really? I at least find it insanely useful doing the fairly simple Japanese-> (Reading, dictionary lookup of things unknown, translation if available), and making sure I can read, write, and understand the sentence in question.
18:20:39 -!- Klisz has quit (Quit: You are now graced with my absence.).
18:20:53 <oklopol> well that i have two decks for
18:21:39 <oklopol> (i don't make my japanese decks)
18:22:01 <pikhq_> I'm not particularly focused on production. Y'know, I'd genuinely prefer to say "train station where?" and understand the response, rather than say "Excuse me, but could you tell me how I could find the train station" and be at a complete loss when someone answers. :P
18:22:18 <oklopol> good point
18:22:35 <Vorpal> pikhq_, do you often visit Japan?
18:22:43 <pikhq_> Vorpal: No.
18:22:54 <pikhq_> Vorpal: In fact, I have never been.
18:23:01 <Vorpal> what do you use your Japanese knowledge for then?
18:23:03 <oklopol> when watching anime, production is possibly even less useful
18:23:10 <Vorpal> heh
18:23:16 <Vorpal> okay I guess that is a possible use
18:23:18 <oklopol> why does knowledge need to be used for somethign
18:23:20 <pikhq_> Vorpal: Mostly just Japanese media, ATM.
18:23:21 <oklopol> *something
18:23:42 -!- monqy has joined.
18:23:49 <Vorpal> oklopol, it doesn't
18:23:51 <pikhq_> Honestly, my obsession with Japanese only started because "Hmm. I need to take a foreign language class in high school. Japanese doesn't sound boring. Let's do that."
18:24:00 <Vorpal> heh
18:24:16 <pikhq_> And after that, I've just been doing it because I like learning the language.
18:24:17 <oklopol> i basically flipped a coin between japanese and chinese
18:24:51 -!- sebbu3 has joined.
18:24:51 -!- sebbu3 has quit (Changing host).
18:24:52 -!- sebbu3 has joined.
18:27:14 <pikhq_> If I chose my language learning based on utility, I'd probably be learning ASL. Whiiiich it would actually behoove me to learn, TBH.
18:27:51 -!- sebbu2 has quit (Ping timeout: 248 seconds).
18:28:05 <oklopol> that would be awesome
18:28:35 <oklopol> it's just i would like to learn both the finnish and the american version, dunno how much they differ
18:28:48 <oklopol> assuming i guessed your acronym right
18:28:51 <oklopol> i rarely do
18:28:59 <pikhq_> American Sign Language?
18:29:04 <oklopol> yeah
18:29:20 <pikhq_> Looking it up, seems Finnish Sign Language is in a different language family entirely.
18:29:22 <oklopol> my other guess was that there's a language called age sex location
18:32:44 -!- zzo38 has joined.
18:33:10 -!- pikhq has joined.
18:33:27 <oklopol> i'm wondering if i should remove this one deck... or can kau as in buy also be used as the kanji for winning?
18:33:58 <pikhq> Um. I am unaware of that having those semantics.
18:34:15 -!- pikhq_ has quit (Ping timeout: 248 seconds).
18:34:44 <oklopol> "who bought the game?"
18:35:13 <pikhq> That's the only sensible semantics I'm aware of.
18:35:50 <oklopol> there are a couple other instances here where they've obviously just used something with the same pronunciation
18:36:19 <pikhq> Which premade deck are you using, anyways?
18:36:33 <oklopol> this is how to ttell the difference between japanese something something
18:36:35 <oklopol> *tell
18:36:56 <oklopol> i just use it to learn readings for kanji
18:39:04 <oklopol> also japanese coreplus and some listening comprehension decks and heisig's kanji deck and then another vocab deck, i love downloading decks.
18:41:50 -!- Ngevd has joined.
18:42:46 <Ngevd> Hello!
18:43:21 <Ngevd> f(x) walks into a bar
18:43:33 <Ngevd> Barman says, "Sorry, we don't cater to functions here"
18:44:55 <oklopol> was that the punchline?
18:45:01 <Ngevd> Yes
18:45:55 <oklopol> hmm
18:45:56 <oklopol> cool.
18:46:56 <Ngevd> sine of x, cos of x, and e^x go to a party
18:47:24 <Ngevd> sine of x and cos of x both go and have a good time
18:47:29 <Ngevd> But e^x sits in the corner
18:47:46 <Ngevd> Somebody goes and talks to him, asks him why he's not joining in
18:48:24 <Ngevd> e^x says, "Sorry, but whenever I try to integrate, I end up with myself"
18:50:04 <oklopol> sine and cos aren't much better at that stuff
18:50:30 <Ngevd> It was a small party
18:51:41 <oklopol> in that case, good one
18:52:38 <Ngevd> I would tell you my last joke, but this IRC channel is too small to contain it
18:52:39 <oklopol> for all n, are there n functions which derive into each other? are they unique?
18:53:06 <Ngevd> All polynomials form an infinite chain of derivatives going upwards
18:53:57 <oklopol> well they form infinitely many such chains, which are not disjoint
18:54:20 <Ngevd> And end with 0
18:54:46 -!- sebbu3 has changed nick to sebbu.
18:54:50 <oklopol> yeah but that doesn't really answer the question
18:55:25 <Ngevd> I haven't officially learnt about integration yet
18:55:49 <oklopol> somehow i doubt they'll teach you the answer to my question
18:56:04 <oklopol> unless you start your studies with advanced real analysis
18:56:17 <Ngevd> Heh, I highly doubt that
18:56:44 <oklopol> for 1, exponential, for 2, hyperbolic sine, for 4, sine. what else?
19:05:39 <zzo38> "Get out of my way - or I'll differentiate you till you're zero!" "Try it - I'm e to the x..." "Too bad... I'm d/dy."
19:25:17 * Sgeo is amused
19:34:11 <oklopol> zzo38: do you have the copyright to that joke
19:34:21 <zzo38> oklopol: No.
19:34:38 <zzo38> I don't know if anyone does
19:41:06 -!- ais523 has joined.
19:42:03 <oklopol> oerjan: let D : C^C \to C^C (let's say C_\infty functions only) be the differentiation operator, does it have a unique set of n periodic points of period n for all n?
19:42:11 <oklopol> use your memory on that when you return
19:43:08 <oklopol> meant to say C_\infty, although i don't recall whether it's a subscript or a superscript... not very good at recalling notaiton
19:43:10 <oklopol> *notation
19:44:14 <oklopol> actually i sent a text to my colleague and he solved it in 2 minutes, ignore that.
19:44:49 <oklopol> well for analytic functions at least, it's kind of trivial for them but it's close enough a result in spirit
19:48:47 -!- Klisz has joined.
20:34:28 -!- GreaseMonkey has joined.
20:34:29 -!- GreaseMonkey has quit (Changing host).
20:34:29 -!- GreaseMonkey has joined.
20:36:40 <zzo38> Read my D&D game recording the end of what I wrote so far, tell me what would you do next if you are in that situation?
20:37:53 <oklopol> well i haven't read this but i would use magic
20:39:33 <zzo38> You want to use magic for everything?
20:39:47 <zzo38> You might eventually run out of magic.
20:40:05 <zzo38> Or be prevented from using magic in some other way such as antimagic fields
20:41:52 <oklopol> i'd find a way
20:41:58 <oklopol> i'd use magic to get more magic
20:42:13 <Ngevd> I'd use THE POWER OF CHARISMA
20:42:36 <zzo38> You are not even being specific.
20:42:53 <zzo38> You would have to read it to figure out better, isn't it?
20:43:07 <Ngevd> Yup
20:43:25 -!- KingOfKarlsruhe has left.
20:43:48 <zzo38> I have my own plans too but I won't tell you what it is yet
21:00:23 -!- DCliche has joined.
21:03:10 <oklopol> i hear d&d has dragons.
21:03:29 <oklopol> they are basically dinosaurs that breathe fire
21:03:38 <zzo38> Yes it has dragons. But currently in the game I was playing in, no dragons have been found yet
21:03:38 <oklopol> how does that work?
21:03:47 -!- Klisz has quit (Ping timeout: 245 seconds).
21:03:53 <zzo38> And some dragons are ice dragons instead of fire
21:03:56 <oklopol> and if you say magic, i will punch d&d.
21:04:34 <oklopol> http://hauns.com/~DCQu4E5g/Fire.htm
21:05:49 <oklopol> okay the author is retarded
21:05:57 <oklopol> *religious
21:25:53 <ais523> oklopol: D&D dragons are much more intelligent than dinosaurs, or really anything that is currently known to ever have existed
21:25:53 <lambdabot> ais523: You have 2 new messages. '/msg lambdabot @messages' to read them.
21:26:07 <ais523> and they can do a bunch of bizarre things without magic, and magic just makes them even stronger
21:26:09 <oklopol> more intelligent than humans?
21:26:13 <ais523> easily
21:26:20 <ais523> it makes them kind-of hard to roleplay/DM
21:26:21 <oklopol> P_p
21:26:31 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
21:27:00 <oklopol> p_P
21:27:21 <ais523> @tell elliott I didn't delete "why testing is good" and the other one, Keymaker did
21:27:21 <lambdabot> Consider it noted.
21:29:35 <quintopia> oklopol:
21:30:30 <oklopol> yeah what's your game
21:30:38 <quintopia> hi
21:30:58 <oklopol> hi.
21:31:07 <oklopol> really hi.
21:31:27 <ais523> o
21:31:30 <oklopol> o
21:31:35 <ais523> o
21:31:40 <oklopol> o
21:31:43 <ais523> o
21:31:44 <oklopol> oko
21:31:51 <ais523> okoko
21:31:53 <oklopol> okokoko
21:31:56 <ais523> okokokoko
21:32:00 <oklopol> okokokokoko
21:32:04 <ais523> okokokokokoko
21:32:05 <oklopol> okokokokokokoko
21:32:10 <ais523> okokokokokokokoko
21:32:11 <oklopol> okokokokokokokokoko
21:32:17 <ais523> okokokokokokokokokoko
21:32:18 <oklopol> okokokokokokokokokoko
21:32:20 <oklopol> ----
21:32:33 <oklopol> i may have to kill everyone on this channel
21:32:47 <ais523> sorry, I was actually counting that time, was determined not to lose again
21:32:55 <oklopol> i'm watching office
21:33:06 <ais523> (I suppose copy-paste would help get it perfect, but what would be the fun in that?)
21:34:26 <oklopol> okokokokokokokokokokokokokokokokokokokokoko
21:34:33 <oklopol> okokokokokokokokokokokokokokokokokoko
21:34:40 <oklopol> o
21:34:41 <oklopol> oko
21:34:43 <oklopol> okoko
21:34:44 <oklopol> okokoko
21:34:45 <oklopol> okokokoko
21:34:47 <oklopol> okokokokoko
21:34:48 <oklopol> okokokokokoko
21:34:49 <oklopol> okokokokokokoko
21:34:51 <oklopol> okokokokokokokoko
21:34:53 <oklopol> okokokokokokokokoko
21:35:13 <oklopol> o
21:35:13 <oklopol> oko
21:35:14 <oklopol> okoko
21:35:15 <oklopol> okokoko
21:35:16 <oklopol> okokokoko
21:35:17 <oklopol> okokokokoko
21:35:18 <oklopol> okokokokokoko
21:35:20 <oklopol> okokokokokokoko
21:35:21 <oklopol> okokokokokokokoko
21:35:23 <oklopol> okokokokokokokokoko
21:35:50 <ais523> ^ul (o)(~(ko)*:S~:^):^
21:35:50 <fungot> okookokookokokookokokokookokokokokookokokokokokookokokokokokokookokokokokokokokookokokokokokokokokookokokokokokokokokokookokokokokokokokokokokookokokokokokokokokokokokookokokokokokokokokokokokokookokokokokokokokokokokokokokookokokokokokokokokokokokokokokookokokokokokokokokokokokokokokokookokokokokokokokokokokokokokokokokoo ...too much output!
21:35:57 <ais523> ^ul (o)(~(ko)*:S( )S~:^):^
21:35:58 <fungot> oko okoko okokoko okokokoko okokokokoko okokokokokoko okokokokokokoko okokokokokokokoko okokokokokokokokoko okokokokokokokokokoko okokokokokokokokokokoko okokokokokokokokokokokoko okokokokokokokokokokokokoko okokokokokokokokokokokokokoko okokokokokokokokokokokokokokoko okokokokokokokokokokokokokokokoko okokokokokokokokokok ...too much output!
21:36:09 <ais523> ^ul (o )S(o)(~(ko)*:S( )S~:^):^
21:36:09 <fungot> o oko okoko okokoko okokokoko okokokokoko okokokokokoko okokokokokokoko okokokokokokokoko okokokokokokokokoko okokokokokokokokokoko okokokokokokokokokokoko okokokokokokokokokokokoko okokokokokokokokokokokokoko okokokokokokokokokokokokokoko okokokokokokokokokokokokokokoko okokokokokokokokokokokokokokokoko okokokokokokokokok ...too much output!
21:36:34 <ais523> gah, /so tempted/ to submit it to anagolf…
21:36:42 <oklopol> :D
21:37:14 <oklopol> why isn't there an anagolf which is tested manually and where you have to implement a specific algorithm
21:37:17 <oklopol> i wonder
21:37:26 <oklopol> i want that quicksort in golfscript
21:37:58 -!- Phantom_Hoover has joined.
21:38:14 <ais523> oklopol: I never did end up figuring out how to automatically mark a question "implement a mergesort algo that splits the list into three lists and then sorts them individually and merges them"
21:38:43 <oklopol> you could ask for mergesort specific data to be printed
21:38:51 <quintopia> oklopol: this dragons guy is the strangest ever. he believes in God making life and man making life and Jesus returning and has no understnading of modern warfare. where do such people live?
21:38:54 <oklopol> like the sorted versions of halves of the lsit
21:38:55 <oklopol> list
21:39:14 <oklopol> quintopia: obviously america
21:39:45 <ais523> oklopol: but I wasn't allowed to modify the question
21:40:13 <oklopol> in that case you could just look at what functions are called and with what arguments
21:40:18 <quintopia> oklopol: yeah, obviously. but elsewhere too?
21:40:30 <oklopol> at runtime
21:40:44 <oklopol> quintopia: maybe. crazy people out there
21:40:46 <oklopol> and out here
21:41:16 <oklopol> how does he not have an understanding of modern warfare? i mean sure that was just ridiculous but i assume you have a better argument
21:41:41 -!- copumpkin has joined.
21:42:04 <ais523> oklopol: modern warfare doesn't involve dragons, therefore it sucks
21:42:22 <quintopia> the whole thing about making centaurs for cavalry
21:42:34 <quintopia> or fairy machine gun people
21:42:35 <oklopol> :D
21:42:39 <quintopia> like
21:43:09 <quintopia> he described a predator drone that nullifies the main advantage of a predator drone: that no one dies when it's shot down
21:44:00 <oklopol> we could just not give it equal rights, sorta like a modern nigger.
21:44:36 <oklopol> / woman / child / idiot
21:44:41 <quintopia> thats true. we could throw out modern ethics and solve that problem easily eh
21:45:30 <oklopol> modern ethics = living things are all equal?
21:45:33 <oklopol> no
21:45:40 <oklopol> no one gives a fuck if you rape a fish
21:45:44 <oklopol> no one
21:46:29 <oklopol> i mean any more than if you rape a chair, people might think there's something wrong with you of course
21:47:13 <oklopol> well i guess if you give it a human brain, which seems like something centaur might have...
21:47:26 <oklopol> i was thinking more like horse brain but the great looks of a human
21:50:32 <zzo38> My game is http://zzo38computer.cjb.net/dnd/recording/level20.tex
21:50:54 <zzo38> The DVI file is also in that directory and so is the include file with macros for D&D 3.5e recording
21:50:55 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:54:20 -!- derrik has quit (Quit: left).
21:55:38 <Phantom_Hoover> <oklopol> no one gives a fuck if you rape a fish
21:55:53 <Phantom_Hoover> Well, there are certain negative connotations of sleeping with the fishes.
21:56:55 -!- Ngevd has quit (Ping timeout: 248 seconds).
21:57:16 <oklopol> :SDSDSDSDSDSDSDSD
21:57:18 <oklopol> good'n
21:57:59 <Phantom_Hoover> Yeah, I stole it from the Simpsons' good era.
22:05:12 <oklopol> people are not being very original toda
22:05:12 <oklopol> y
22:12:32 -!- Phantom__Hoover has joined.
22:12:44 <Phantom__Hoover> <oklopol> people are not being very original toda
22:13:02 <Phantom__Hoover> Well I applied the joke in an original way?
22:13:27 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
22:15:15 -!- Phantom__Hoover has changed nick to Phantom_Hoover.
22:16:06 <oklopol> well true
22:31:32 -!- sebbu2 has joined.
22:31:32 -!- sebbu2 has quit (Changing host).
22:31:32 -!- sebbu2 has joined.
22:32:57 -!- sebbu has quit (Ping timeout: 245 seconds).
22:39:35 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
22:41:32 -!- Sgeo has quit (*.net *.split).
22:41:33 -!- Madoka-Kaname has quit (*.net *.split).
22:41:33 -!- Nisstyre has quit (*.net *.split).
22:41:34 -!- Betawolf has quit (*.net *.split).
22:41:34 -!- rodgort has quit (*.net *.split).
22:41:38 -!- fizzie has quit (*.net *.split).
22:41:41 -!- lambdabot has quit (*.net *.split).
22:42:17 -!- Madoka-Kaname has joined.
22:42:20 -!- Madoka-Kaname has quit (Changing host).
22:42:20 -!- Madoka-Kaname has joined.
22:42:23 -!- Sgeo has joined.
22:42:24 -!- Betawolf has joined.
22:42:41 -!- fizzie has joined.
22:43:05 -!- Nisstyre has joined.
22:46:53 -!- rodgort has joined.
23:00:57 -!- Phantom_Hoover has joined.
23:01:01 -!- Phantom_Hoover has quit (Changing host).
23:01:02 -!- Phantom_Hoover has joined.
23:07:08 <Phantom_Hoover> http://en.wikipedia.org/wiki/Nikolaos_Bourbakis
23:07:18 <Phantom_Hoover> Such a good name, wasted.
23:07:53 <oklopol> ?
23:08:05 <oklopol> i assume this is a reference to the other bourbakis, but i still don't get it
23:08:55 <Phantom_Hoover> His name is a stone's throw away from "Nicolas Bourbaki" and he goes into image processing.
23:09:59 <oklopol> there's a famous singer whose name has hamming distance 1 from mine, and another singer with the same name as my dad
23:10:11 <oklopol> and we're both just fucking around and doing nothing useful
23:11:22 <Phantom_Hoover> A famous Finnish singer?
23:12:18 <oklopol> they've sold a gold album in US so basically the most famous group in finland
23:12:23 <oklopol> globally
23:12:46 <Phantom_Hoover> It's not Lordi, is it?
23:12:59 <oklopol> :D
23:12:59 <oklopol> no
23:13:11 <Phantom_Hoover> Lordi is the best thing about Finland.
23:13:23 <Phantom_Hoover> Not like Sweden, Sweden is irrecoverably terrible.
23:13:38 <oklopol> ...
23:13:39 <oklopol> right
23:14:08 <oklopol> sweden and finland both have a lot of good metal bands
23:14:08 <Phantom_Hoover> So your name is one character away from "Ville Valo"?
23:14:17 <oklopol> that's a bit of a leap
23:14:40 <oklopol> i've told this channel my name like 5 times
23:15:09 <Phantom_Hoover> I was not listening at any of them.
23:15:36 <oklopol> so i assume you haven't read my master's thesis either
23:15:44 <oklopol> that's kind of rude.
23:15:51 <oklopol> i've read everything you ever published
23:16:47 <Phantom_Hoover> Finding a list of Finnish names and listing those with a hamming distance of 1 from that is too much like hard work.
23:16:59 <Phantom_Hoover> Unless it turns out W|A does it, which is a bit of a stretch.
23:17:02 <oklopol> you could look up common surnames
23:17:11 <Phantom_Hoover> OK I'll read your master's thesis.
23:17:39 <oklopol> good.
23:17:50 <oklopol> it seems my surname is #21
23:18:47 <Phantom_Hoover> (Where is your master's thesis.)
23:19:16 <oklopol> http://www.google.fi/url?sa=t&rct=j&q=master's%20thesis%20ville%20salo&source=web&cd=1&ved=0CCoQFjAA&url=http%3A%2F%2Ftucs.fi%3A8080%2Fpublications%2Fattachment.php%3Ffname%3DtSalo11a.full.pdf&ei=SsXSTq2uDcbc4QS4_-0_&usg=AFQjCNGKsoCtnZGHqyuEfAFcc89GdOpBHw
23:19:24 <oklopol> nice link.
23:19:37 <oklopol> doesn't even work :DSAfd
23:19:51 <oklopol> wait totally does
23:21:26 <oklopol> please disregard the typo in the abstract
23:21:51 <oklopol> i sent those for printing and then i'm like hmm did i ever get to writing an abstract....
23:27:17 -!- Jafet has quit (Quit: Leaving.).
23:27:50 <oklopol> and you can read our survey on picture-walking automata for a more complete treatment of picture-walking automata
23:28:00 <oklopol> it's about picture-walking automata
23:32:39 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:44:51 -!- augur has quit (Remote host closed the connection).
2011-11-28
00:08:08 -!- augur has joined.
00:15:02 -!- Slereah has joined.
00:16:09 -!- Slereah_ has quit (Ping timeout: 260 seconds).
00:16:34 -!- augur has quit (Remote host closed the connection).
00:33:21 -!- ais523 has quit (Remote host closed the connection).
00:34:03 <kallisti> Sgeo: upeano spacedoot.
00:34:40 <Sgeo> kallisti, my notifier hasn't gone off, therefore I assume you're lying
00:34:58 -!- Jafet has joined.
00:36:17 <kallisti> Sgeo: your loss
00:36:30 -!- Sgeo has left ("Leaving").
00:36:33 -!- Sgeo has joined.
00:36:49 <myndzi> lordi \m/
00:36:51 <myndzi> just sayin'
00:36:57 <kallisti> Sgeo: I guess you'll just never know how AWESOME this PUMPKINS are.
00:37:14 <myndzi> actually the video for blood red sandman gave me the boots: \m/ \m/
00:37:15 <myndzi> `\o/´
00:37:15 <myndzi> |
00:37:15 <myndzi> /'¯|_)
00:37:15 <myndzi> (_|
00:37:18 <Sgeo> kallisti, or, you may in fact be delayed in seeing the latest updates
00:37:29 <kallisti> Sgeo: no I've seen that
00:37:31 <Sgeo> Because we saw pumpkins recently, but that was a while ago
00:37:39 <kallisti> THERE ARE MORE PUMPKINS
00:37:40 <Sgeo> The pumpkins update
00:43:38 -!- pikhq_ has joined.
00:43:51 -!- pikhq has quit (Ping timeout: 258 seconds).
00:47:41 <kallisti> mmm cornbread.
00:47:42 <kallisti> so
00:47:43 <kallisti> fucking
00:47:44 <kallisti> good
00:48:07 -!- sebbu2 has quit (Ping timeout: 248 seconds).
00:51:12 -!- sebbu2 has joined.
00:51:13 -!- sebbu2 has quit (Changing host).
00:51:13 -!- sebbu2 has joined.
00:55:46 <zzo38> I made so that some Haskell functions can have Show; it works you can type maybe (False, True) (join (,)) in GHCi and it tells you the output Nothing -> (False, True) Just False -> (False, False) Just True -> (True, True)
00:56:01 <zzo38> If the type is ambiguous it assumes you mean ()
00:57:01 -!- DCliche has quit (Quit: You are now graced with my absence.).
00:59:37 <Jafet> > succ
01:01:36 -!- copumpkin has joined.
01:02:13 <kallisti> http://upload.wikimedia.org/wikipedia/en/math/a/5/e/a5e707d8d73a8dc420acfb9cb8794622.png
01:02:28 <kallisti> can someone explain this notation? it's a "family of sets"
01:02:42 <kallisti> which, if I understand correctly, is a multiset of sets.
01:07:23 <kallisti> if I understand correctly it's saying that the subsets are basically indexed by an integer or something?
01:09:01 <kallisti> A choice function is a function f, defined on a collection X of nonempty sets, such that for every set s in X, f(s) is an element of s.
01:09:08 <Betawolf> The way i read it, there are some sets S for every i in set I, but that's somewhat loose and probably dodgy as an interpretation. Is there any context that would help?
01:09:15 -!- derdon has quit (Remote host closed the connection).
01:09:19 <kallisti> For any set X of nonempty sets, there exists a choice function f defined on X.
01:09:26 <kallisti> oh okay... axiom of choice now makes sense.
01:10:14 <kallisti> http://en.wikipedia.org/wiki/Axiom_of_choice
01:10:24 <kallisti> I see what the subscript i is for now.
01:11:24 <Betawolf> ah, cool
01:15:54 <kallisti> I was going to say that restricts the sets to being countable, but I guess "I" could be real numbers here so not necessarily. also the mapping function I -> S is not necessarily bijective I think.
01:16:16 <kallisti> http://en.wikipedia.org/wiki/Indexed_family
01:21:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:37:53 -!- Jafet has quit (Quit: Leaving.).
01:38:42 <kallisti> > let x = True in not x || x
01:38:56 <kallisti> ....no lambdabot?
01:39:01 <kallisti> NOOOOOOOOOOOOOO
01:39:56 <kallisti> let x = True in not x && x
01:39:57 <kallisti> False
01:40:09 <kallisti> Haskell: not a fan of intuitionism.
01:40:16 <kallisti> (ha ha ha)
01:41:06 <kallisti> of course Maybe Bool gives you a three-valued logic, in which you could probably say that not x || x is unknown (aka Nothing in this construction)
01:41:31 <kallisti> or well, that not x || x /can/ be unknown, depending on x.
01:43:28 <kallisti> on a related note
01:43:33 <kallisti> http://lonelynerdsinfedoras.tumblr.com/ needs more Gregor
01:44:34 <Sgeo> kallisti, intuitionism?
01:45:08 <kallisti> yes, a kind of mathematical constructivism
01:45:16 <Sgeo> What would the result of not True && True be in intuitionism?
01:45:45 <kallisti> http://en.wikipedia.org/wiki/Intuitionistic_logic
01:46:42 * kallisti is still learning so does not have an answer yet :P
01:49:04 <kallisti> well I think not True && True is False
01:49:17 <kallisti> but not p && p cannot in general be proven (???)
01:51:40 <GreaseMonkey> ok quick question, what would be a good scheme standard to implement?
01:52:04 <Sgeo> Does R7RS exist?
01:52:17 <Sgeo> I've heard bad things about R6RS
01:52:18 <GreaseMonkey> i believe so
01:52:21 <GreaseMonkey> wait uh
01:52:46 <GreaseMonkey> it's got its first draft
01:52:59 <GreaseMonkey> but yeah i have heard bad things about versions after R5RS
01:54:06 <kallisti> I've heard bad things about people who hold strong opinions about scheme standards.
01:54:46 <GreaseMonkey> "The R6RS standard has caused controversy because it is seen to have departed from the minimalist philosophy."
01:55:34 <kallisti> that is not necessarily a bad thing. But I don't know anything about R6RS
01:56:20 -!- Jafet has joined.
01:56:52 -!- Vorpal has quit (Ping timeout: 244 seconds).
02:01:17 -!- Klisz has joined.
02:01:43 -!- MDude has quit (Ping timeout: 248 seconds).
02:07:26 -!- MSleep has joined.
02:12:44 <GreaseMonkey> and i just found a weird bug in wla-dx
02:13:02 <GreaseMonkey> if you attempt to include a completely empty file, it crashes
02:13:06 <GreaseMonkey> add a newline, it's happy
02:14:12 <kallisti> GreaseMonkey: that doesn't sound too weird.
02:14:45 <kallisti> they probably just overlooked the possibility of the empty file or something?
02:14:55 <GreaseMonkey> something like that
02:14:58 -!- zzo38 has quit (Remote host closed the connection).
02:15:33 <kallisti> what about files that contain characters but no trailing newline?
02:15:52 <GreaseMonkey> no crash
02:16:04 <kallisti> ah. yeah that's weird.
02:45:07 <tswett> Hm, I'm pondering this one problem. Implement a binary semaphore. The only atomic operation you're allowed is a swap operation: swap(x,y) atomically swaps the values of *x and *y.
02:45:56 -!- TeruFSX has joined.
02:46:56 <tswett> Arbitrarily many threads could be running at any time. They can sleep, they can revive each other, and they can interact with each other's memories.
02:47:28 <Sgeo> memories?
02:47:42 <tswett> Yeah. They use shared memory.
02:47:57 <Sgeo> Oh, was thinking of the other definition of memory
02:48:12 <Sgeo> Which might require Feather to implement?
02:48:17 <Sgeo> >:D
02:48:48 * Sgeo is not thinking too clearly right now
02:49:26 <tswett> My original thought was for the semaphore to be represented with a variable. The variable contains 0 when the semaphore is available, and 1 when it's unavailable. To try to procure the semaphore, a thread prepares a variable containing the number 1, and atomically swaps it with the semaphore variable.
02:51:42 <tswett> If the thread gets a 0 from this swap, it successfully got the semaphore. If it gets a 1 from the swap, it did not.
02:51:49 <Sgeo> What's the problem with that, unless you have a rogue threat deliberately messing with other threads?
02:52:05 <Sgeo> *thread
02:52:13 <tswett> The problem with that is that there's no way to block on a semaphore. If you want to procure the semaphore, and it's unavailable, you have to busy loop.
02:53:29 <Jafet> You want to give out the semaphore in fifo order?
02:54:33 <tswett> Jafet: well, I want to give it out in *some* order. If thread A procures a semaphore, then thread B tries to procure it, then thread A vacates it, then it should somehow wind up in B's possession.
02:54:36 <Jafet> You could probably implement a queue with atomic swaps
02:54:56 -!- TeruFSX_ has joined.
02:55:00 <tswett> I've managed to create a queue that goes in the wrong direction. Each thread has a pointer to the thread before it in line.
02:55:01 <Jafet> You don't have a thread notification mechanism; how do you even do that?
02:55:36 <tswett> Unfortunately, once you're done with a semaphore, what you need to do is give it to the thread *after* you in line.
02:55:52 <tswett> Jafet: well, they have shared memory. To talk to a sleeping process, you change its variables and wake it up.
02:56:03 <Jafet> Okay, so you do assume a notification mechanism.
02:56:19 <Jafet> Well then, you should turn your queue the right way round, I guess.
02:56:20 -!- TeruFSX_ has quit (Read error: Connection reset by peer).
02:56:38 <tswett> Yes, quite.
02:57:09 <tswett> The way the queue is built is... more or less the same as my original thought above. To try to procure the semaphore, you swap your own thread ID into the semaphore variable.
02:57:11 -!- TeruFSX_ has joined.
02:57:24 <tswett> Either you get a 0, meaning the semaphore is yours, or you get the ID of the guy before you in line.
02:58:30 <Jafet> What you could do is have each thread reserve a location in its memory, then write the memory address to the semaphore. The next thread writes its address to that address.
02:58:31 -!- TeruFSX has quit (Read error: Connection reset by peer).
02:58:51 <Jafet> Er, writes its thread-id to that address.
02:59:27 <tswett> What if two threads both read the semaphore variable at the same time, and then both write in their addresses at the same time?
03:00:02 <tswett> I guess right after you swap, you can give guy-before-you your thread ID. But what if guy-before-you tries to use your thread ID right before you give it to him...
03:00:10 <Jafet> Well, you'd need a small busy-loop while each thread atomically acquires its place in the queue.
03:00:43 <Jafet> I don't think there's any way around that.
03:01:53 <Jafet> Suppose that the zero address is invalid. Then a thread can lock the semaphore by swapping it with zero, add itself to the queue, and swap its memory address to the semaphore.
03:03:48 <tswett> Hm. Suppose that two threads try to swap zero into the semaphore at the same time.
03:04:36 <tswett> One of the threads will get a zero out. This means it can't proceed, so it has to sleep. Who wakes it up?
03:04:56 <kallisti> tswett: "queue that goes in the wrong direction" like a stack? :>
03:05:19 <tswett> kallisti: that... yeah, a lot like a stack!
03:05:38 <kallisti> heh heh heh heh
03:05:53 <Jafet> tswett: it busy-loops for the minuscule amount of time it takes for the other thread to do two atomic swaps.
03:06:05 <Jafet> umad?
03:06:13 * kallisti mad
03:06:19 * tswett mad.
03:06:40 <tswett> Yeah, I guess busy looping may be fine if the thread it's waiting on is guaranteed to finish quickly.
03:06:56 <tswett> Inelegant but fine.
03:07:57 <Jafet> It's probably theoretically impossible to do this with your primitives and no busy waiting
03:08:04 <Jafet> Also, isn't a binary semaphore only two-valued?
03:09:03 <tswett> A binary semaphore is what we're implementing; that doesn't mean we have to implement it on top of a Boolean variable.
03:09:19 <tswett> I do wonder if it is theoretically impossible. If it is, I ought to prove it.
03:09:27 * kallisti briefly imagines an "intuitionistic semaphore"
03:18:03 -!- copumpkin has joined.
03:31:49 -!- augur has joined.
03:49:18 -!- lambdabot has joined.
03:52:13 -!- Klisz has quit (Quit: You are now graced with my absence.).
04:05:28 -!- Jafet has quit (Quit: Leaving.).
04:25:29 <kallisti> HI FRIENDS
04:25:39 <kallisti> @hoogle a -> b -> a -> a
04:25:39 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexSpec Color3 :: a -> a -> a -> Color3 a
04:25:40 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexSpec Normal3 :: a -> a -> a -> Normal3 a
04:25:40 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexSpec TexCoord3 :: a -> a -> a -> TexCoord3 a
04:40:08 -!- augur has quit (Remote host closed the connection).
04:46:32 -!- augur has joined.
05:02:09 -!- kallisti has quit (Ping timeout: 260 seconds).
05:03:45 -!- kallisti has joined.
05:03:45 -!- kallisti has quit (Changing host).
05:03:45 -!- kallisti has joined.
05:05:22 -!- Klisz has joined.
05:18:15 -!- sebbu has joined.
05:18:16 -!- sebbu has quit (Changing host).
05:18:16 -!- sebbu has joined.
05:19:08 -!- sebbu2 has quit (Ping timeout: 244 seconds).
05:23:53 <kallisti> awwww yeah
05:24:02 <kallisti> two monitors. so I can watch starcraft II games and get shit done
05:26:08 -!- zzo38 has joined.
05:32:26 -!- Nisstyre has quit (Quit: Leaving).
05:33:12 -!- Nisstyre has joined.
05:51:47 <zzo38> Can there be barrier monad transformer?
06:00:43 <kallisti> I'm not really sure I understand barrier monads
06:01:04 <zzo38> I am trying to do it; maybe this way I trying can work.
06:02:46 -!- oerjan has joined.
06:04:47 <oerjan> <oklopol> oerjan: let D : C^C \to C^C (let's say C_\infty functions only) be the differentiation operator, does it have a unique set of n periodic points of period n for all n?
06:05:18 <kallisti> ugh help English formatting
06:05:26 <oerjan> a unique subspace of dimension n of periodic points of period | n
06:05:28 <kallisti> I'm supposed to format this as like...
06:05:31 <kallisti> name, title
06:05:37 <kallisti> but the title is like... three parts.
06:05:53 <kallisti> Ph.D., Dean, School of Computing and Software Engineering
06:05:55 <kallisti> or something like that.
06:06:09 <kallisti> should I use semicolons? halp
06:06:15 <oerjan> generated by e^(m*2pi*ix/n) for m=0,...,n-1.
06:06:18 <kallisti> do semicolons exist?
06:06:28 <kallisti> zzo38: can you explain a barrier monad?
06:06:36 <oerjan> @tell oklopol see logs
06:06:37 <lambdabot> Consider it noted.
06:06:42 <zzo38> Semicolons exist but I don't know what context the document is
06:07:28 <kallisti> maybe like...
06:07:32 <oerjan> oklopol: er, scratch the formula, thinking too fast
06:07:42 <kallisti> Name, Ph.D.; Dean, School of Computing and Software Engineering
06:07:49 <kallisti> but the semicolon looks weird next to that .
06:07:50 <oerjan> drop the 2pi, i think
06:07:57 <oerjan> oh hm
06:08:16 <oerjan> it's e^(phi*x) where phi^n = 1, of course
06:08:25 <zzo38> kallisti: OK. data Barrier f b t = Unit t | Barrier f (b -> Barrier f b t); It means, there is a front type and a back type. The "yield" operation yields a front value and something else make a back value to continue. Similar to how generator functions in JavaScript are, a bit
06:08:25 <oerjan> of which there are n solutions.
06:09:00 <kallisti> zzo38: how does Unit fit into this?
06:09:18 <zzo38> Unit is the "return" operation: return = Unit;
06:09:26 <kallisti> ah okay.
06:10:13 <zzo38> Of course it is also functor and applicative; all monads are supposed to be also functor and applicative.
06:10:25 <oerjan> the case n=4 gives e^x, e^(-x), e^(ix) and e^(-ix), and the last two can be rearranged as (e^(ix)+e^(-ix))/2 and (e^(ix)-e^(-ix))/(2i), which you may recognize.
06:10:31 <kallisti> ah okay, so then the monadic function is the second field there. (b -> Barrier f b t)
06:10:43 <oerjan> @tell oklopol etc.
06:10:43 <lambdabot> Consider it noted.
06:11:01 <zzo38> There is actually a third constructor Fail String which is the "fail" operation and is also used for the Alternative instance
06:11:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
06:11:55 <kallisti> zzo38: how does >>= work? is there a >>=?
06:12:21 <kallisti> or is there just a f :: Barrier f b t -> Barrier f b t ?
06:12:32 <kallisti> s/f/func/
06:12:38 <kallisti> (to differentiate it from the front type)
06:12:39 <zzo38> Yes there is a >>= it is: Unit x >>= f = f x; Fail x >>= f = Fail x; Barrier a c >>= f = Barrier a $ c >=> f;
06:12:57 <kallisti> ah okay.
06:13:32 <kallisti> so the front value is... always the same?
06:13:36 <kallisti> at least when binding/\
06:13:38 <kallisti> and returning./
06:14:10 <zzo38> kallisti: Do you know the "yield" command in Javascript? The "yield" command here is similar thing (which is the reason why it is called "yield").
06:14:22 <zzo38> yield = flip Barrier Unit;
06:14:25 <Sgeo> So, what's this Barrier thing?
06:14:41 <kallisti> Sgeo: ...
06:14:50 <kallisti> only one question asker allowed. :P
06:14:55 <kallisti> NOT REPEAT QUESTIONS
06:14:58 * kallisti decrees.
06:15:33 <zzo38> Sgeo: See above; I specified the definitions
06:16:12 <oerjan> <oklopol> actually i sent a text to my colleague and he solved it in 2 minutes, ignore that.
06:16:15 <oerjan> TOO LATE
06:17:24 -!- mtve has quit (Ping timeout: 260 seconds).
06:18:26 -!- yorick has quit (Ping timeout: 252 seconds).
06:19:12 -!- yorick has joined.
06:24:58 -!- Klisz has quit (Quit: You are now graced with my absence.).
06:27:11 <atehwa> kallisti: a system which has "truth values" for propositions is usually non-intuitionistic, because intuitionistic logic does not track truth but (constructive) provability.
06:27:59 <kallisti> well, right/
06:28:14 <atehwa> It could be possible, of course, to model "justified" or "provable" with boolean values, but then it would be quite clear that two values would not suffice.
06:28:19 <kallisti> but it's a sort of truth-valued logic..
06:28:47 <zzo38> It is possible to make classical logic in Haskell, too, by making a class of law of excluded middle.
06:29:27 <kallisti> if I understand correctly, it's a three-valued logic? or maybe doesn't work like that and exists only as symbolic transformations.. ?
06:29:27 <atehwa> moreover, it's not impossible to prove x || not x if we already know that x is either provable or disprovable
06:29:38 <kallisti> atehwa: yes, I understand that.
06:29:45 <oerjan> i vaguely recall there's a proof that no number of truth values suffices for intuitionistic logic
06:29:54 <oerjan> it may be no finite number
06:29:57 <kallisti> hmm, okay.
06:30:00 <kallisti> interesting.
06:30:17 <atehwa> kallisti: basically, intuitionistic logic is defined by those symbolic transformations
06:30:27 <kallisti> okay, yes I understand now.
06:30:37 <atehwa> what you're trying to do is to give a "semantics" for those symbolic transformations
06:30:52 <atehwa> And I think it can be done by three-valued logic, but I'm not sure
06:30:52 <kallisti> basically implication, though it acts as a symbolic transformation.
06:31:15 <Sgeo> oerjan, so, if I were to do it in Haskell, would I require Integer or something, or is it not so straightforward?
06:31:15 <zzo38> Intuitionistic logic is the same as function types of Haskell (due to Curry-Howard).
06:31:18 <Sgeo> Or a recursive data type?
06:31:27 <Sgeo> Wait what?
06:31:37 <atehwa> well, there's a whole lot of "rules" that describe transformations which are allowed in intuitionistic logic because they're considered "constructive"
06:31:47 <kallisti> Sgeo: zzo38: I was about to say function type is basically implication due to Curry-Howard.
06:31:57 <oerjan> for one thing, intuitionistic logic satisfiability is PSPACE complete, while any finite truth value operators can have it checked in NP. that's not a proof though since it's still not proved that NP /= PSPACE
06:32:03 <Sgeo> I don't quite understand Curry-Howard
06:32:28 <atehwa> (p ||q) && not p => q is _not_ one of the allowed transformations, whereas (p => q) && p => q is.
06:33:09 <kallisti> Sgeo: okay so basically types in programs are like mathematical formula, and the program that the type describes is a proof of that formula.
06:33:38 <kallisti> Sgeo: so when you write the type a -> b you're actually talking about a logical implication.
06:34:34 <Sgeo> And when I write a -> b?
06:34:41 <Sgeo> (I think I saw something about this)
06:34:46 <kallisti> wat?
06:35:10 <Sgeo> The fact that there's no way to write a -> b (without cheating) means a -> b cannot be proved, or something?
06:35:22 <oerjan> Sgeo: i guess that you could use kripke models as your representation for intuitionistic logic. i recall playing around with those.
06:35:30 <Sgeo> kripke models?
06:35:49 <kallisti> Sgeo: well there's no proof of -> in intuitionistic logic because it's basically the axiom of intuistionistic logic.
06:37:21 <oerjan> http://en.wikipedia.org/wiki/Kripke_semantics#Semantics_of_intuitionistic_logic seems quite unreadable.
06:38:17 <zzo38> Some proofs are simple: doubleNot = flip id; contrapositive = flip (.); deMorgan x = either (fst x) (snd x);
06:38:19 <oerjan> well, the notation anyway.
06:39:16 <kallisti> identity = id
06:39:18 <kallisti> whew.
06:39:22 * kallisti wipes brow.
06:40:08 <Sgeo> :t flip (.)
06:40:09 <lambdabot> forall a b (f :: * -> *). (Functor f) => f a -> (a -> b) -> f b
06:40:10 <Sgeo> Because I'm lazy
06:40:22 <Sgeo> ...wrong .
06:40:27 <zzo38> :t flip (Prelude..)
06:40:28 <Sgeo> :t flip (Prelude..)
06:40:28 <lambdabot> forall b c a. (a -> b) -> (b -> c) -> a -> c
06:40:29 <lambdabot> forall b c a. (a -> b) -> (b -> c) -> a -> c
06:40:34 <oerjan> say you want to show that p || not p is not provable in intuitionistic logic, by finding a kripke model in which it's not true in all frames.
06:41:01 <zzo38> In this case, c is Zero (an uninhabited type)
06:41:16 <kallisti> oerjan: what's the type for not in Haskell?
06:41:37 <Sgeo> :t flip id
06:41:38 <lambdabot> forall a b. a -> (a -> b) -> b
06:41:59 <oerjan> let frame 1 be one in which p is false, and frame 2 be one in which p is true. that satisfies the condition. but then not p is false in frame 1 because p is true in a later frame. and p || not p is false in frame 1 because both p and not p are false there.
06:42:45 -!- Jafet has joined.
06:44:10 <kallisti> ah I see type Not a = a -> b
06:44:26 <oerjan> kallisti: b should be Void
06:44:28 <kallisti> not :: Not a
06:44:31 <kallisti> not = undefined ?????
06:44:32 <kallisti> er
06:44:50 <kallisti> hmmm
06:44:51 <kallisti> oh
06:45:06 <oerjan> Void is the representation of false.
06:45:18 <zzo38> I called the uninhabited type Zero and defined as: data Zero; type Not x = x -> Zero;
06:45:19 <oerjan> or _|_
06:46:17 <kallisti> hmmm okay, but then what's the proof?
06:46:21 <zzo38> Note you could represent natural numbers by using Zero as number zero and Maybe as successor. If there is such a thing as types that are only capable of holding bijective functions, you could use that to prove equality of natural numbers.
06:46:52 <oerjan> kallisti: proof of what?
06:46:57 <kallisti> oerjan: negation
06:47:03 <kallisti> is it given?
06:47:28 <oerjan> kallisti: to proven negation of x, you construct a contradiction from x. i.e. you construct an element of Not x.
06:47:32 <oerjan> *prove
06:48:08 <kallisti> oerjan: oh okay. so in Haskell data types with constructors are automatically proven, basically.
06:48:33 <kallisti> if they're made of things that are proven (??)
06:48:37 <oerjan> they're automatically proven if you can find the arguments to their constructors...
06:48:46 <oerjan> yes
06:49:02 <kallisti> constructivism wheeeeee
06:49:05 <zzo38> For example: Not Zero proven by the function id
06:49:41 <kallisti> "prove that booleans are true." "okay here you go I made them"
06:49:56 <kallisti> s/are true/exist/
06:51:06 <oerjan> <kallisti> but not p && p cannot in general be proven (???) <-- it can be disproven.
06:51:46 <kallisti> :t const (const True)
06:51:47 <lambdabot> forall b b1. b1 -> b -> Bool
06:51:48 <oerjan> of course with that one in particular, that's a little circular semantically
06:52:12 <kallisti> :t asTypeOf (const True)
06:52:13 <lambdabot> forall b. (b -> Bool) -> b -> Bool
06:52:14 <oerjan> @djinn Not (Not p, p)
06:52:14 <lambdabot> f (a, b) = a b
06:52:27 <zzo38> explosion :: (p, Not p) -> q; explosion (x, y) = contradiction $ y x; where contradiction :: forall t. Zero -> t;
06:52:34 <kallisti> :t const (asTypeOf True)
06:52:35 <lambdabot> forall b. b -> Bool -> Bool
06:52:39 <oerjan> kallisti: @djinn is an intuitionistic prover
06:52:54 <kallisti> @djinn Void
06:52:54 <lambdabot> -- f cannot be realized.
06:52:57 <kallisti> @djinn f :: Void
06:52:57 <lambdabot> Cannot parse command
06:53:03 <kallisti> @djinn a -> Void
06:53:03 <lambdabot> -- f cannot be realized.
06:53:08 <kallisti> is Void not a thing?
06:53:36 <oerjan> Void is an uninhabited type. you cannot actually construct it, it's a representation of a contradiction.
06:53:44 <kallisti> oh... right.
06:53:55 <oerjan> @djinn Void -> a
06:53:56 <lambdabot> f = void
06:54:02 <oerjan> @djinn-env
06:54:02 <lambdabot> data () = ()
06:54:03 <lambdabot> data Either a b = Left a | Right b
06:54:03 <lambdabot> data Maybe a = Nothing | Just a
06:54:03 <lambdabot> data Bool = False | True
06:54:03 <lambdabot> data Void
06:54:05 <lambdabot> type Not x = x -> Void
06:54:07 <lambdabot> class Monad m where return :: a -> m a; (>>=) :: m a -> (a -> m b) -> m b
06:54:08 <lambdabot> class Eq a where (==) :: a -> a -> Bool
06:54:29 <kallisti> ah okay, so then Not Void is the only valid type for a in data Not a = Not (a -> Void)?
06:54:30 <oerjan> hm not sure where that void is defined.
06:54:52 <oerjan> kallisti: recursive types are not allowed in this context.
06:54:59 <oerjan> er hm sorry
06:55:00 <oerjan> misread
06:55:42 <oerjan> @djinn Not Void
06:55:42 <lambdabot> f a = a
06:55:54 <oerjan> a = Void
06:56:20 <kallisti> @djinn Not Bool
06:56:20 <lambdabot> -- f cannot be realized.
06:56:25 <kallisti> ah okay.
06:56:45 * kallisti gets it, I think.
06:58:05 <oerjan> that Bool definition is somewhat unrelated to the intuitionistic truth values
06:58:13 <oerjan> which are Void and Not Void, really
06:58:16 <kallisti> right.
06:58:35 <kallisti> Bool is a sum type of... unit types?
06:59:27 <oerjan> yeah. @djinn's main purpose is to construct haskell functions with prescribed types, so the intuitionistic part is sort of just underlying.
07:01:22 <oerjan> @djinn a -> b -> a
07:01:22 <lambdabot> f a _ = a
07:01:58 <oerjan> @djinn Either a b -> (a -> c) -> (b -> c) -> c
07:01:58 <lambdabot> f a b c =
07:01:59 <lambdabot> case a of
07:01:59 <lambdabot> Left d -> b d
07:01:59 <lambdabot> Right e -> c e
07:02:32 <kallisti> oerjan: also, are primitive types kind of just... unproven?
07:02:43 <kallisti> like Int#, State#, etc.
07:03:29 <oerjan> @djinn doesn't deal with those, i think. it's not _really_ haskell, but a fragment without nontermination and without recursive types.
07:03:51 <kallisti> ah, well, the Haskell Report does define Int as a huge number of constructors right?
07:03:56 <kallisti> or something like that.
07:04:00 <Sgeo> What does Either a b mean in the context of intuitionistic logic?
07:04:04 <oerjan> and you can define new nonrecursive types.
07:04:09 <oerjan> Sgeo: or
07:04:15 <oerjan> a or b
07:04:20 <Sgeo> Ah, ok
07:05:14 <kallisti> also the | in data declarations is also or.
07:05:19 <Sgeo> Can I read that as "If I have a proof of a or b, and I have a proof of if a then c, and I have a proof of if b then c, then c?
07:05:20 <oerjan> kallisti: well yeah. it's not expected that implementations actually _use_ that representation. :P
07:05:33 <Sgeo> Or do I have to do currying?
07:05:38 <oerjan> Sgeo: that's fine
07:06:16 <Sgeo> Partial functions don't count as proofs, right? Otherwise I could prove Either a b -> a
07:06:24 <oerjan> indeed not.
07:06:48 <Sgeo> What does Maybe a mean?
07:07:02 <Sgeo> And how do I do logical and?
07:07:10 <zzo38> Logical and does (,)
07:07:11 <kallisti> and is (,)
07:07:12 <oerjan> it's isomorphic to Either () a
07:07:15 <zzo38> And logical or does Either
07:07:23 <oerjan> *Maybe is
07:07:45 <zzo38> Maybe makes it always true it is always provable by Nothing
07:07:46 <Sgeo> oerjan, I take it that that's essentially useless, since it should always be true
07:07:53 <oerjan> Sgeo: yeah
07:07:54 <kallisti> no that's why it's useful.
07:07:59 <kallisti> in program-land :P
07:08:00 <zzo38> For numbers, you might use Maybe for successor, though
07:08:31 <oerjan> @djinn Maybe a
07:08:32 <lambdabot> f = Nothing
07:08:43 <Sgeo> @djinn a
07:08:44 <lambdabot> -- f cannot be realized.
07:09:32 <oerjan> @djinn Bool
07:09:32 <lambdabot> f = False
07:10:09 <kallisti> type Bool = Either () () -- yes?
07:10:10 <oerjan> @djinn (() -> a) -> a
07:10:10 <lambdabot> f a = a ()
07:10:17 <oerjan> kallisti: essentially :P
07:10:31 <oerjan> and () is useless since you can construct it on the fly
07:10:45 <oerjan> oh hm.
07:11:12 <Sgeo> Why have anything other than Either, (,), and ()?
07:11:21 <Sgeo> And (->)
07:11:25 <oerjan> i _think_ @djinn makes an attempt to use as many arguments as possible, i.e. it's slightly preference for linear logic. so it's not _entirely_ useless.
07:11:37 <oerjan> @djinn Maybe a -> (a -> b) -> Maybe b
07:11:38 <lambdabot> f a b =
07:11:38 <lambdabot> case a of
07:11:38 <lambdabot> Nothing -> Nothing
07:11:38 <lambdabot> Just c -> Just (b c)
07:11:58 <zzo38> Since it is isomorphic to Either () a that is why it can be successor, if Either is addition, if you have a type of bijective functions: Either () a <-> Maybe a { Left () -> Nothing; Right x -> Just x; } if you had a <-> type then you could *prove* it to be isomorphic.
07:12:08 <kallisti> Sgeo: that's basically what intuitionistic type theory is. (don't forget Void)
07:12:53 <zzo38> oerjan: It is: f = flip fmap
07:14:04 <oerjan> <Sgeo> Why have anything other than Either, (,), and ()? <-- the others are defined using @djinn's definition mechanism
07:14:10 <oerjan> @list djinn
07:14:11 <lambdabot> djinn provides: djinn djinn-add djinn-del djinn-env djinn-names djinn-clr djinn-ver
07:14:32 <Sgeo> @djinn Void
07:14:33 <lambdabot> -- f cannot be realized.
07:14:36 <oerjan> @djinn-add Fnord a b = Fnord a (b -> a)
07:14:37 <lambdabot> Cannot parse command
07:14:37 <Sgeo> @djinn Blah
07:14:38 <lambdabot> Error: Undefined type Blah
07:14:43 <oerjan> @djinn-add data Fnord a b = Fnord a (b -> a)
07:14:45 <zzo38> If you had bijective function type then the types as numbers can be: uninhabited type for zero, Maybe for successor, Either for addition, (,) for multiplication, -> for exponent, <-> with same type on both sides for factorial
07:14:49 <Sgeo> @djinn (a -> b) -> Void
07:14:50 <lambdabot> -- f cannot be realized.
07:14:53 <Sgeo> Oh, come on
07:15:01 <oerjan> @djinn a -> Fnord a b
07:15:02 <lambdabot> f a = Fnord a (\ _ -> a)
07:15:14 <Sgeo> Fnord?
07:15:21 <oerjan> Sgeo: i just defined it :P
07:15:43 <Sgeo> I have no idea what it means
07:15:46 <oerjan> @djinn-names
07:15:47 <lambdabot> Either Left Right Maybe Nothing Just Bool False True Void Not Void Monad Eq Bool Fnord Fnord
07:16:01 <Sgeo> @djinn Void -> Void
07:16:02 <lambdabot> f a = a
07:16:09 <oerjan> there seems to be some duplication there...
07:16:12 <Sgeo> @djinn Void -> (a -> b)
07:16:12 <lambdabot> f = void
07:16:19 <Sgeo> ...huh?
07:16:27 <Sgeo> What is void?
07:16:46 <zzo38> It should be: void x = case x of { } but Haskell doesn't accept that
07:16:52 <oerjan> Sgeo: void :: Void -> a
07:16:56 <Sgeo> Ah
07:17:09 <oerjan> yeah it may be a special case
07:17:11 <Sgeo> So basically, a statement that if you proven void, you can prove anything
07:17:20 <oerjan> yeah
07:18:44 <Sgeo> @djinn (Void -> a) -> a -> b
07:18:45 <lambdabot> -- f cannot be realized.
07:18:55 <zzo38> In TNT, (exist a. x) is equivalent to (not (forall a. not x))
07:18:57 <Sgeo> Well, that does make sense
07:19:23 <oerjan> @djinn (a -> Void) -> a -> b
07:19:24 <lambdabot> f a b = void (a b)
07:19:43 <oerjan> @djinn-del Fnord
07:19:51 <oerjan> @djinn-names
07:19:52 <lambdabot> Either Left Right Maybe Nothing Just Bool False True Void Not Void Monad Eq Bool
07:20:04 <Sgeo> @djinn Not Void
07:20:04 <lambdabot> f a = a
07:20:06 <zzo38> And if you have x{5} or x{anything} then you can make (exist a. x{a})
07:20:24 <Sgeo> Huh?
07:20:51 <oerjan> Sgeo: ?
07:21:18 <zzo38> Is it possible to do this in Haskell?
07:21:39 <oerjan> zzo38: sounds pretty much like dependent typing, so no.
07:22:06 <oerjan> hm maybe on the type level
07:22:29 <oerjan> and who knows with the new type -> kind lifting that's coming up
07:22:34 <zzo38> To be specific, I mean of making (exist a. x{a}) from (x{5}) or whatever
07:22:47 <zzo38> What is type -> kind lifting?
07:24:51 <Sgeo> How did it figure out Not Void?
07:25:29 <kallisti> because it's Void -> Void[D
07:25:40 <Sgeo> How does Not work
07:25:41 <Sgeo> ?
07:26:01 <kallisti> data Not a = Not (a -> Void)
07:26:06 <oerjan> no data
07:26:09 <oerjan> @djinn-env
07:26:10 <lambdabot> data () = ()
07:26:10 <lambdabot> data Either a b = Left a | Right b
07:26:10 <lambdabot> data Maybe a = Nothing | Just a
07:26:10 <lambdabot> data Bool = False | True
07:26:10 <lambdabot> data Void
07:26:12 <lambdabot> type Not x = x -> Void
07:26:14 <lambdabot> class Monad m where return :: a -> m a; (>>=) :: m a -> (a -> m b) -> m b
07:26:16 <lambdabot> class Eq a where (==) :: a -> a -> Bool
07:26:23 <kallisti> ah.
07:26:39 <Sgeo> Ah, I'm starting to get an understanding of it now
07:27:05 <Sgeo> Does Not need to be a type?
07:27:16 <oerjan> zzo38: http://www.reddit.com/r/haskell/comments/mm68o/ghc_74_branched_whats_in_for_christmas/c328u7i has a small example
07:27:26 <oerjan> well the reply to that
07:27:34 <Sgeo> @djinn Either a (Not a)
07:27:35 <lambdabot> -- f cannot be realized.
07:27:53 -!- Vorpal has joined.
07:27:56 <zzo38> How would dependent types allow you to make (exist a. x{a}) from (x{5})? GHC does have a existential types extension
07:28:42 <oerjan> zzo38: well it's the part of using the value 5 rather than a type to quantify over, which is problematic.
07:29:01 <oerjan> and which _might_ work with the new extension, i don't know
07:29:12 <zzo38> But I mean for any type in general, not necessarily 5
07:29:18 <zzo38> s/type/value/
07:29:29 <oerjan> well then i guess ghc can do some of it on the type level.
07:30:16 <oerjan> data Exists x = forall a. Exists (x a)
07:31:36 <oerjan> zzo38: dependent types is when you allow types to depend on values. and ghc does not support it fully, not even with the new extension.
07:32:18 <zzo38> Actually, in the case I given, the 5 *will* be a type, such as (Maybe (Maybe (Maybe (Maybe (Maybe Zero)))))
07:32:40 <zzo38> So it won't depend on a value.
07:33:04 <pikhq_> So, it's a bit more that you're doing type-level computation.
07:33:20 <oerjan> well then it should be possible. although there may be further difficulties when you unpack it from the existential again (you cannot compare well things unpacked at different points)
07:33:43 <zzo38> No I mean to prove it by writing functions like how Curry-Howard is
07:41:11 <zzo38> I do have idea of bijective function syntax: A new built-in type "<->" which is like "->" but only bijective functions (a value of this type is allowed to be undefined but can return undefined if and only if the input is undefined), a new keyword "bijective" which introduces layout, and new built-in functions called "inverse" and "runBijective"
07:42:47 <zzo38> inverse :: (a <-> b) -> (b <-> a); runBijective :: (a <-> b) -> a -> b;
07:44:40 <zzo38> The bijective keyword would make a value having a <-> type, and inside would be something similar to a case block (but with some restrictions).
07:45:21 <zzo38> Would this seem to work to you?
07:45:37 <oerjan> i expect finding the right restrictions is the hard part here.
07:48:48 <zzo38> You should also allow bijective functions to be called directly without the use of runBijective (and calling bijective functions directly would be allowed in a bijective case block). I do have some ideas about the restrictions. For example, each variable used on either side must be used exactly once on each side
07:51:19 <oerjan> well my doubt is whether simple restrictions will allow you to write all the bijective functions you want.
07:52:32 <zzo38> Other restriction would be you would be disallowed to write values of recursive types
07:52:40 <oerjan> for example, if f is a halting but otherwise non-bijective function, then g x = x `xor` f x is a bijective function.
07:52:56 <oerjan> er...
07:53:16 <oerjan> *for example, if f is a halting but otherwise non-bijective function, then g (x, y) = (x, y `xor` f x) is a bijective function.
07:54:19 <oerjan> and there are other functions than xor which work that way... any group operation for example.
07:55:13 <oerjan> this is what i thought of when i was pondering reversible computing previously.
07:56:14 <zzo38> You might need to add additional built-in functions
07:57:56 <zzo38> But I don't know if that would make it complete
07:58:18 <oerjan> me neither
07:59:32 <zzo38> I also don't know how you would use it to prove that there is no such bijective function of types (such as: Not (Zero <-> Maybe Zero))
08:04:38 <zzo38> A proof in intuitionistic or classical logic using Curry-Howard would require all functions written to halt, and that is assumed and the logic still works. Maybe something similar can still work with bijective function type?
08:09:53 <oerjan> linear logic seems somewhat relevant, but not perfectly.
08:10:18 <oerjan> it has the "every argument must be used exactly once" property
08:11:02 <oerjan> but it still allows a function and an argument to combine in a nonreversible way.
08:13:43 <Sgeo> I wonder if you could do STM-like stuff without actual repeats (using blocking instead) by using an arrow instead of a monad
08:14:32 <Sgeo> That way, all information about what variables may be accessed is known statically, and thus the system can check for conflicting variable access
08:14:47 <Sgeo> Before running the thread
08:15:00 <oerjan> hm.
08:15:09 <oerjan> arrows or applicatives, maybe.
08:15:29 <Sgeo> Are arrows applicatives?
08:15:41 <oerjan> such prescheduling is supposed to be one of the advantages of arrow/applicative parsers.
08:15:49 <oerjan> Sgeo: technically yes
08:16:07 <oerjan> when you fix the first type argument
08:17:47 <oerjan> http://cdsmith.wordpress.com/2011/07/30/arrow-category-applicative-part-i/
08:20:31 <Sgeo> I need sleep
08:20:34 <oerjan> (btw the answer to the title question is "not quite")
08:20:48 <oerjan> as you need some extras in the other direction.
08:21:25 <zzo38> Could you define applicative in terms of fmap and liftA2 (,) and pure
08:22:37 <oerjan> zzo38: yes. i think that was mentioned in one of the comments to that link.
08:22:48 <oerjan> lax strong monoid something
08:24:14 <zzo38> Can you add something weaker than join or >>= that can still define a monad from an applicative, because join or >>= can be defined from this new thing and the applicative things
08:25:35 -!- monqy has quit (Quit: hello).
08:26:53 -!- GreaseMonkey has quit (Quit: The Other Game).
08:27:42 -!- mtve has joined.
09:15:18 -!- derdon has joined.
09:31:40 -!- oerjan has quit (Quit: leaving).
09:50:49 -!- zzo38 has quit (Remote host closed the connection).
10:05:59 <kallisti> hi
10:49:03 -!- derdon has quit (Remote host closed the connection).
10:54:32 -!- ais523 has joined.
11:57:56 -!- zzo38 has joined.
12:03:22 <oklopol> oerjan: ah, your proof if even nicer than his.
12:03:22 <lambdabot> oklopol: You have 2 new messages. '/msg lambdabot @messages' to read them.
12:03:24 <oklopol> *is
12:19:49 <kallisti> The phrase quod erat demonstrandum is a translation into Latin from the Greek ὅπερ ἔδει δεῖξαι (hoper edei deixai; abbreviated as ΟΕΔ). Translating from the Latin into English yields, "what was to be demonstrated";
12:19:59 <kallisti> that's what all the cool mathematicians say instead.
12:21:34 * Sgeo envisions representing a computable real with a list of tuples, the first number of the tuple being an approximation, and the second being the how far off the approximation is, such that the second number is equal to or larger than the error
12:21:47 <Sgeo> Presumably, later values in the list would be better approximations
12:21:54 <Slereah> French people say CQFD
12:22:17 <Sgeo> Although I'm pretty sure there's some other infinite list representation of reals somewhere
12:22:29 <kallisti> How do you compute how far off the approximation is from the real value without already having information about the number?
12:23:15 <Sgeo> kallisti, the error given in the second number of the tuple may be larger than the actual distance between the approximation and the actual value
12:23:26 <Sgeo> I'm presuming there is an actual value, just not easy to represent
12:23:43 <Sgeo> I think it makes sense to say that pi is 3 plus or minus .15
12:23:50 <Sgeo> For instance
12:24:47 <kallisti> e is kind of like 0 plus or minus infinity.
12:25:02 <kallisti> ..
12:25:37 <Slereah> Most numbers are
12:25:43 <Slereah> Although i isn't
12:25:55 <kallisti> what is a "number"?
12:25:57 <Sgeo> If the approximations don't converge, then it doesn't represent an actual number
12:26:11 <Sgeo> Can still do comparisons though, in some cases
12:26:59 <Sgeo> I should write some code for this
12:29:36 <Slereah> Hey
12:29:38 <Slereah> Sgeo
12:29:43 <Sgeo> Hi Slereah
12:29:57 <Slereah> Markov wrote a whole article on writing down definable numbers!
12:30:00 <Slereah> It was neat
12:30:05 <Slereah> Basically, it was like
12:30:22 <Slereah> (f(x) - g(x))/h(x)
12:30:29 <Slereah> Where fgh are recursive functions
12:33:49 <Sgeo> Linky?
12:34:04 <Sgeo> Although I have a feeling you're referring to a historical source
12:34:07 <Sgeo> But still, linky?
12:34:16 <Slereah> Historical indeed
12:34:23 <Slereah> I can give you the reference
12:37:51 <Slereah> Марков, А. А. О конструктивных функциях
12:38:07 <Slereah> Or just Markov, "On Constructive Functions"
12:38:36 <Slereah> I should scan it
12:38:51 <Jafet> No doubt it's already been scanned
12:38:58 <Slereah> Not sure
12:39:02 <Jafet> And sold to universities
12:39:13 <Sgeo> http://www.haskell.org/pipermail/haskell-cafe/2011-May/091585.html
12:39:16 <Slereah> I got it from a book that I bought because I could not find an article in it anywhere
12:39:21 <Sgeo> infinity = Succ infinity
12:39:31 <Sgeo> I find the properties of that fascinating
12:39:44 <Sgeo> infinity > any finite natural number
12:39:47 <Jafet> = fix Succ
12:40:05 <Sgeo> infinity > infinity = _|_
12:41:05 <Jafet> data Ordinal =
12:41:08 <Sgeo> Hmm, might break on *
12:41:27 <Sgeo> Since probably * is defined with Zero on one of the sides as making it = Zero
12:41:34 <Sgeo> When the result should probably be _|_
12:41:48 <kallisti> > 5/0
12:41:49 <lambdabot> Infinity
12:41:51 <kallisti> > 5/0 > 6/0
12:41:52 <lambdabot> False
12:42:02 <kallisti> Sgeo: IEEE disagrees. :P
12:42:06 <Sgeo> > 6/0 > 5/0
12:42:07 <lambdabot> False
12:42:27 <kallisti> > 5/0 >= 6/0
12:42:28 <lambdabot> True
12:42:31 * kallisti gasps.
12:43:16 <Sgeo> But then you break the notion of a == b implying a-b==0
12:43:21 <Sgeo> > 6/0 - 5/0
12:43:22 <lambdabot> NaN
12:43:45 <Jafet> Oh, no! Extending a field with infinity does not produce a field!
12:43:51 <Jafet> Stop press
12:44:46 <Sgeo> :t cycle
12:44:47 <lambdabot> forall a. [a] -> [a]
12:45:50 <kallisti> > cycle $ cycle [1,2,3,4,5]
12:45:51 <lambdabot> [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,...
12:45:54 <Jafet> Actually, I think 0ω is defined as 0.
12:46:08 <kallisti> > fix cycle [1,2,3,4,5]
12:46:09 <lambdabot> Couldn't match expected type `[t1] -> t'
12:46:09 <lambdabot> against inferred type `[a]'
12:46:17 <Jafet> So it works out fine, as long as you use unamb.
12:46:21 <kallisti> > fix (cycle.) [1,2,3,4,5]
12:46:22 <lambdabot> *Exception: stack overflow
12:46:30 * Sgeo non-arbitrarily decides that a better representation of definable reals is as an infinite list of tuples, but the tuples are a lower and upper bound
12:46:34 <kallisti> Haskell needs to fix this bug. :P
12:46:44 <Sgeo> Rather than average and distance
12:46:53 <Sgeo> Makes it easier to define sine
12:46:56 <Sgeo> etc.
12:47:27 <Jafet> That doesn't really define definability
12:48:02 <Sgeo> Are there definable numbers that don't fit the mold? I think I'm fine with some lists that don't represent definable numbers
12:48:04 <kallisti> :t fix (cycle$)
12:48:05 <lambdabot> forall a. [a]
12:48:17 <kallisti> > fix (cycle$)
12:48:21 <lambdabot> mueval-core: Time limit exceeded
12:48:34 <Jafet> You seem to have described the set of real numbers.
12:50:01 <Sgeo> Note: My Haskell library has no intention of making it possible to define undefinable numbers. If you manage to do this with my library, the destruction of the universe is on your hands.
12:52:55 -!- elliott has joined.
12:53:05 <kallisti> elliott: hi
12:53:16 <elliott> bye
12:53:17 <kallisti> brogerr
12:53:17 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
12:53:43 <elliott> <lambdabot> ais523 said 15h 26m 2s ago: I didn't delete "why testing is good" and the other one, Keymaker did
12:53:48 <elliott> ais523: should have protected it!
12:54:00 <ais523> elliott: protection has no correlation with deletion at all?
12:54:01 <elliott> in fact, we should just protect all the spam pages...
12:54:11 <ais523> in fact, nowadays, you can typically even protect a page that doesn't exist
12:54:16 <ais523> although I'm not sure if Esolang implements that
12:54:31 <kallisti> @tell kallisti something important.
12:54:31 <lambdabot> You can tell yourself!
12:54:32 <elliott> ais523: well, I presume people think twice before deleting a protected page
12:55:37 <ais523> elliott: not if it was protected because elliott thinks that protecting spam is a good idea
12:55:50 <ais523> hmm, I wonder if there's a wiki on the Internet whose only purpose is to be edited by spambots
12:55:56 <elliott> ais523: yes, but you're more reliable than that! :P
12:56:03 <elliott> and i hope so
12:56:03 <ais523> and it's just left with registration and anonymous editing open, and left there
12:56:36 <ais523> the problem is, it'd be basically impossible to find
12:56:37 <elliott> 18:22:35: <Vorpal> pikhq_, do you often visit Japan?
12:56:38 <elliott> 18:22:43: <pikhq_> Vorpal: No.
12:56:38 <elliott> 18:22:54: <pikhq_> Vorpal: In fact, I have never been.
12:56:38 <elliott> 18:23:01: <Vorpal> what do you use your Japanese knowledge for then?
12:56:38 <elliott> world domination
12:56:40 <ais523> as any sane search engine would sort it to the bottom
12:56:46 <elliott> ais523: you could advertise it
12:56:49 <elliott> with spam, even
12:56:50 <ais523> elliott: Japanese is actually a vaguely useful language to know
12:56:58 <elliott> then your spambots start editing your own wiki...
12:57:11 <elliott> I am Wikipedia programmer Brandon Harris. AMA (self.IAmA)
12:57:17 <ais523> I come across words in languages I don't understand, occasionally
12:57:24 <ais523> and Japanese is one of those languages
12:57:25 * elliott just stares at that headline for a while.
12:58:50 <ais523> what's stareworthy about the headline?
12:59:03 <kallisti> elliott: heh
12:59:35 <elliott> ais523: I have trouble conceiving of Wikipedia programmer Brandon Harris as a real person, he's just that guy in the donation boxes
12:59:38 <elliott> ais523: like Big Brother
13:00:02 <ais523> there was no issue for me
13:00:16 <ais523> in the TV series, Big Brother is a real person too
13:00:19 <ais523> several, I think, who work in rotation
13:01:33 <kallisti> elliott: Brandon Harris, antagonist to the man.
13:02:04 <elliott> for twelve years you have been asking, "who is brandon harris?"
13:02:09 <elliott> this is brandon harris speaking.
13:05:12 <elliott> "I also work for Wikipedia, and had a rather scary email recently: "Before you edit a banner or update some code, just remember that if our readership was a country it would be the 3rd largest country in the world.""
13:06:29 <itidus21> `log brandon harris
13:07:03 <HackEgo> 2011-11-28.txt:13:02:04: <elliott> for twelve years you have been asking, "who is brandon harris?"
13:07:17 <itidus21> `pastelog brandon harris
13:07:28 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24786
13:07:54 <itidus21> 2011-10-05.txt:19:38:28: <Phantom_Hoover> "A personal appeal from Wikipedia programmer Brandon Harris."
13:08:41 <elliott> ais523: haha, wikipedia had to take down the fundraising statistics page because of the traffic from reddit
13:08:59 <ais523> that sort of thing actually happens occasionally
13:09:20 <kallisti> elliott: I feel like reddit is like this hivemind of horrible internet trend stuff.
13:09:31 <elliott> it is
13:09:36 <ais523> when you get up to Admin level, you have to be careful to avoid Wikipedia slashdotting itself
13:09:52 <elliott> ais523: but how.............
13:09:57 <ais523> you need to know which bits can handle heavy traffic and which bits can't
13:10:23 <ais523> (hint: you don't want to hit the toolserver on every page read, or even every edit (more than it's currently hit, that is))
13:10:37 <elliott> ais523: hmm, is there only /one/ toolserver?
13:10:39 <ais523> likewise, you can hit the API on every read, but not really perform more than a few queries
13:10:43 <ais523> elliott: yes
13:10:51 <elliott> ais523: "The Wikimedia Toolserver is a collaborative platform providing Unix hosting for various software tools written and used by Wikimedia editors. The service is operated by Wikimedia Deutschland e.V. with assistance from the Wikimedia Foundation.
13:10:51 <elliott> It consists of thirteen servers as outlined here."
13:10:59 <ais523> hmm, it looks like one
13:11:01 <elliott> no it's not, I found the answer before you gave me an incorrect one :P
13:11:02 <ais523> to users
13:11:12 <elliott> ais523: so does wikipedia itself :P
13:11:20 <kallisti> so does Facebook. (I think)
13:11:27 <elliott> (so does everything)
13:11:30 <ais523> FWIW, there's only one physical server that handles write changes
13:11:34 <ais523> as in, things that handle the database
13:11:38 <ais523> the vast majority of them are for reads
13:11:40 <elliott> https://wiki.toolserver.org/w/images/b/b5/Toolserver-cluster.svg
13:11:51 <ais523> which makes sense, given Wikipedia's load patterns
13:12:10 <elliott> ais523: I can't help but feel that Wikipedia could do a lot better than it could if it wasn't tied to its software
13:12:17 <ais523> (I think they can trivially hot-swap /which/ server handles the writes, though, for redundancy)
13:12:37 <ais523> yep, MediaWiki is painful
13:12:39 <ais523> internally
13:12:52 <ais523> it's excellent in terms of its user-facing behaviour, but behind the scenes it's a mess
13:13:06 <elliott> there's no need to have a linear history at all, for one thing
13:13:28 <ais523> "see page as of time X" is a useful operation
13:13:38 <elliott> ais523: yep, but that's not the same thing
13:13:41 <ais523> although nonlinear histories can be linearised for that purpose
13:13:55 <elliott> ais523: I mean, you could easily allow edits to be done on N servers instead of 1
13:13:59 <kallisti> elliott: how do you stalk people with differing viewpoints from your own so you can call them out as deletionists or pushing a POV?
13:14:00 <elliott> and just merge it afterwards
13:14:09 <elliott> ais523: although you have to block the confirmation page until the merge happens
13:14:13 <elliott> so you can notify of conflicts
13:14:27 <kallisti> elliott: well I guess no linear history wouldn't affect the user changes log.
13:14:29 <elliott> kallisti: with binoculars
13:15:14 <ais523> I don't think Wikipedia's designed to take Linus' Law into account, either
13:15:22 <kallisti> (note: not actually joking. people do that.)
13:15:26 <ais523> hmm… MediaWiki's storage model is essentially what git's designed for
13:15:46 <ais523> kallisti: I've been known to stalk suspected trolls/spammers/vandals before now in order to make sure
13:16:10 <ais523> and yet it ignores most of the optimisations git's made to handle that
13:16:22 <elliott> ais523: yes, MediaWiki suffers from being developed before common RCSes
13:16:28 <elliott> DVCSes, rather
13:16:37 <elliott> (RCS wouldn't work very well :P)
13:16:38 <ais523> does SVN use reverse diffs for storage?
13:16:46 <elliott> dunno anything about SVN's storage
13:17:32 * ais523 frowns at the TDWTF discussion of the twelve weights problem
13:17:43 <elliott> ais523: mediawiki is only 2 years older than svn, anyway
13:17:52 <ais523> because it's actually solvable with 13 (at least if you only care about knowing the odd one out, not lighter/heavier), and everyone's missed it so far
13:17:54 <elliott> sorry, more like one year
13:18:02 <elliott> so it wasn't really an option at the time, I wouldn't think
13:18:08 <ais523> elliott: wow, it's hard for me to envisage something revision-control-like being older than SVN
13:18:11 <ais523> apart from CVS and RCS
13:18:31 <elliott> ais523: open-source VCS is novel field, really
13:18:38 <elliott> it only got started around 2001
13:18:45 <elliott> I mean, anything other than CVS
13:19:34 <kallisti> before VCS closed source developers collaborated via email attachments.
13:19:40 <kallisti> (ha ha ha. but probably true)
13:19:49 <elliott> ais523: list of VCSes older than SVN:
13:20:10 <elliott> SCCS (1972) RCS (1982)
13:20:10 <elliott> PVCS (1985)
13:20:10 <elliott> CVS (1990) CVSNT (1998)
13:20:12 <elliott> Software Change Manager (1970s) ClearCase (1992) CMVC (1994) Visual SourceSafe (1994) Perforce (1995) StarTeam (1995)
13:20:16 <elliott> TeamWare (1990s?) Code Co-op (1997) BitKeeper (1998)
13:20:21 <ais523> elliott: you can't cure my prejudices with facts!
13:20:41 <elliott> ais523: no, but I can cause you severe cognitive dissonance! MWAHAHAHAHA
13:21:02 * kallisti 's cognitive dissonance sounds awesome.
13:22:03 <ais523> gah, my IRC client prints elliott's and kallisti's name in the same color, and I keep reading kallisti's lines as being from elliott and having to do a double-take
13:22:06 <kallisti> even reading the article on cognitive dissonance fills me with anxiety about cognitive dissonance.
13:22:19 <ais523> also, that line of mine, I typed "color" then spend around 4 seconds wondering whether "colour" would be a better spelling
13:22:20 <kallisti> ais523: this is because we are almost the same person.
13:22:32 <elliott> ais523: turn off nick colouring, then you just mix people up because of similar names
13:23:40 -!- MSleep has changed nick to MDude.
13:24:01 <kallisti> dude what if we had hair on our palms?
13:24:05 <kallisti> handshakes would be so much weirder.
13:33:33 * ais523 is not entirely convinced that kallisti is not a spambot
13:33:36 <ais523> just mostly convinced
13:34:08 <Jafet> fungot, can you do handshakes?
13:34:08 <fungot> Jafet: " who says?" screamed glod. " he was no longer an option. he could hear the sounds of argument coming from the fnord fnord.
13:34:29 <kallisti> ais523: The word douche came to English via French – where today it means shower (from Italian: doccia "conduit pipe" and docciare "pour by drops"). It is thus a notorious false friend encountered by non-native speakers of English.
13:34:53 <ais523> kallisti: the funny thing is, I actually know its French meaning rather better than its English one
13:39:53 <elliott> I bet that fizzie is here.
13:41:08 <kallisti> I bet elliott is here.
13:41:15 <elliott> Wrong!
13:41:17 * kallisti better gambler.
13:43:15 <ais523> I think elliott would get better odds on his/her bet
13:43:45 <elliott> I would indeed get better odds on his/her bet.
13:44:40 <kallisti> watg
13:47:16 <kallisti> but my odds are 1 in 1..
13:47:27 <kallisti> THAT'S ALL THE ODDS
14:01:48 <elliott> bah, @ has made me unable to be interested in low-level OS news
14:02:29 <kallisti> elliott: oh my god I decided to visit reddit on my own free will what have I done
14:02:39 <kallisti> there's a random button.
14:03:04 <elliott> there is?
14:03:12 <kallisti> yes you hit random and it /goes to random thingies/
14:03:14 <elliott> oh, random subreddit.
14:03:17 <kallisti> boards? uh...
14:03:18 <elliott> who the hell looks at the top bar
14:03:20 <kallisti> subreddits.
14:03:28 <elliott> http://www.reddit.com/r/RATS/ rats
14:05:29 <kallisti> http://www.reddit.com/r/somethingimade/
14:06:52 <kallisti> elliott: show off awesome perl scripts here.
14:06:55 <kallisti> http://www.reddit.com/r/nostalgia/
14:07:01 <kallisti> elliott: reflect on painful childhood memories.
14:07:05 <kallisti> such as writing perl scripts.
14:08:57 <Vorpal> <ais523> FWIW, there's only one physical server that handles write changes <ais523> as in, things that handle the database <-- very doubtful that mediawiki wouldn't use a distrubuted database server. Doesn't even mysql support that nowdays? I know postgre supports it well for example.
14:09:11 <kallisti> http://www.reddit.com/r/frugalmalefashion/
14:09:12 <kallisti> wtf
14:09:44 <kallisti> http://www.reddit.com/r/actuallesbians/
14:09:47 <kallisti> oh my god it never ends.
14:10:15 <kallisti> http://www.reddit.com/r/Psychonaut/
14:10:17 <kallisti> I found home.
14:10:23 <Sgeo> In the "X is a monad" series:
14:10:34 <elliott> where's /r/fakelesbians
14:10:36 <Sgeo> A certain way of writing BF programs is a monad (I think)
14:10:53 <elliott> Sgeo: what
14:11:08 * itidus21 laughs
14:11:15 <elliott> Vorpal: maybe ais523 means "one hostname" like he did with the toolservers:P
14:11:16 <Sgeo> State representing locations of variables
14:11:52 <Sgeo> Run the monad, which must return something of a certain type, and you get a BF program
14:11:54 <kallisti> elliott: ah help kallisti is always taken how do I make usernames?
14:11:55 <Sgeo> Anyways, bye
14:12:21 <elliott> kallisti: kakeprophet
14:12:28 <kallisti> noooo
14:12:32 <kallisti> cakeprophet is better
14:12:40 <kallisti> I need
14:12:42 <kallisti> ORIGINAL THOUGHT
14:12:43 <elliott> kallisti: if you do sign up to reddit, i suggest the first thing you do is to unsubscribe from all default subreddits
14:12:46 <kallisti> THAT IS NOT LAME.
14:12:50 <kallisti> elliott: obviously
14:12:55 <elliott> at least /r/{pics,funny,politics}
14:12:59 <elliott> oh /r/WTF too
14:13:09 <kallisti> politics might be good
14:13:14 <elliott> kallisti: /r/politics is actually US politics (is actually US politics circlejerk)
14:13:17 <kallisti> but maybe there are better news sources.
14:13:23 <kallisti> elliott: that's fine I like that .
14:13:29 <elliott> no you really don't
14:13:33 <kallisti> oh. okay.
14:13:38 <Vorpal> elliott, anyway you still need to propagate writes in a consistent order, even with a distrubuted db. At least if you want a consistent history for edits like mediawiki does
14:14:33 <Vorpal> hm an obvious solution to load balancing here would be to hash the article identifier and use that to select which database server to use. Don't even need distributed databases for it
14:14:36 <elliott> Vorpal: only a few things need consistent ordering in MW
14:14:37 <Deewiant> Also /r/{atheism,gaming} and maybe /r/{IAmA,todayilearned} and /r/AskReddit
14:14:49 <elliott> /r/atheism isn't default these days
14:14:51 <elliott> Nor is gaming
14:15:02 <kallisti> atheism? default? whut.
14:15:03 * elliott checks the default list
14:15:04 <Deewiant> They appeared to be, I just logged out to check
14:15:11 <elliott> Oh, gaming and atheism are
14:15:51 <kallisti> elliott: it's like they want /r/atheism to be full of controversy
14:15:53 <elliott> kallisti: OK, here's an unsubscribe list: /r/{pics,funny,atheism,politics,WTF,AskReddit,AdviceAnimals} and most likely /r/{gaming,todayilearned}
14:15:54 <kallisti> by putting everyone in it.
14:16:21 <Deewiant> You definitely want out of /r/gaming, there are better replacements
14:16:29 <elliott> Deewiant: Yeah, I'm not subscribed so I didn't feel qualified to say
14:16:29 <kallisti> such as?
14:16:39 <elliott> kallisti: No, it's not full of controversy at all, /r/atheism is actually the internet's largest circlejerk
14:16:51 <Deewiant> /r/{Games,gamernews,truegaming}
14:17:02 <kallisti> truegaming sounds good maybe?
14:17:04 <Deewiant> Depending on what you want, you can pick (I'm subbed to all three)
14:17:08 <kallisti> or maybe it's falsegaming acting like truegaming
14:17:08 <Deewiant> truegaming is only for discussions
14:17:08 <elliott> kallisti: Okay, what Deewiant said, except don't subscribe to anything starting with "true"
14:17:18 <kallisti> but true sounds all elitist.
14:17:19 -!- Madoka-Kaname has quit (Remote host closed the connection).
14:17:21 * kallisti elite
14:17:27 <Deewiant> Of true* I'm only in TrueReddit and truegaming
14:17:32 <Deewiant> I find they have interesting content
14:17:40 -!- Madoka-Kaname has joined.
14:17:49 <elliott> Deewiant: Maybe, I just can't stand the implicit elitism :P
14:17:58 <elliott> http://www.reddit.com/r/TrueTrueReddit
14:17:59 <itidus21> so my brother has skyrim.. watching him play it makes my life feel painfully inadequate.
14:18:01 <Deewiant> I'm in it for the links, not the comments :-P
14:18:02 <elliott> This is actually a real non-joke subreddit.
14:18:10 <kallisti> http://www.reddit.com/r/content/ omg so much content
14:18:11 <elliott> "As TrueReddit grows, it will become less like TrueReddit. See "Hot Tubbing an Online Community" for thoughts as to why. By virtue of the fact that it is smaller, and will not yet make /r/all, TrueTrueReddit is better equipped to adhere to its own standards."
14:18:12 <Deewiant> Oh, it's non-joke these days
14:18:12 <Vorpal> itidus21, why don't play it yourself too?
14:18:15 <Deewiant> TrueTrueReddit used to be a joke
14:18:20 <elliott> TruestReddit
14:18:32 <itidus21> Vorpal: do you want the real answer?
14:18:35 <kallisti> itidus21: I don't understand the hype around Skyrim actually.
14:18:38 <kallisti> though it is a good game.
14:18:41 <Vorpal> itidus21, why do you ask?
14:18:56 <itidus21> kallisti: it looks like so much freaking fun thouhg
14:18:58 <elliott> kallisti: Oh, and don't subscribe to /r/programming, though it isn't default
14:18:59 <Vorpal> kallisti, not a good game. A fun game sure, but too buggy to be a good game
14:19:05 <kallisti> elliott: well, duh.
14:19:13 <kallisti> elliott: that would be like going to the programming board on 4chan.
14:19:16 <Deewiant> /r/AskReddit can be moderately interesting for some things but I think it's best to just take a quick look at the topics once a week or so than have it on your frontpage all the time
14:19:19 <elliott> kallisti: /r/coding is... "okay", but /r/haskell is the only decent programming subreddit I know of
14:19:22 <elliott> At least, that I care about
14:19:28 <Vorpal> kallisti, somehow after I saved a game I got a non-random quest a second time.
14:19:31 <elliott> Actually it's one of the only reasons I use reddit still :P
14:19:32 <kallisti> elliott: I am an expert at internetz brah, I've got this.
14:19:33 <Vorpal> that annoyed me
14:19:34 <Deewiant> elliott: You know that /r/programming is better these days, right?
14:19:47 <elliott> Deewiant: I read it every day; it really isn't
14:19:52 <Deewiant> I think it is
14:19:57 <kallisti> Vorpal: certainly less buggy than previous Bethesda games
14:20:08 <elliott> Deewiant: OK, the links are usually interesting, but then I check the comments and everything goes downhill
14:20:12 <kallisti> Vorpal: or well, many many many games that people have flooded money into.
14:20:14 <elliott> Deewiant: Especially if it involves Haskell :)
14:20:25 <Deewiant> elliott: The solution to this for you is: don't check the comments
14:20:31 <Vorpal> kallisti, well maybe on release. I didn't play oblivion until some fairly late patch
14:20:34 <Deewiant> elliott: (For others, it's also "don't care about the comments" but I doubt that works for you)
14:20:34 <elliott> Deewiant: I can't stop myself
14:20:41 <kallisti> Vorpal: perpetuating a vile industry that encourages rapid deadlines and not good finished products.
14:20:53 <elliott> VILE
14:20:55 <elliott> VILE I SAY
14:20:58 <Vorpal> heh
14:21:00 <kallisti> yes, evil
14:21:03 <kallisti> like vile
14:21:06 <itidus21> what is deadlines about?
14:21:06 <Deewiant> elliott: I wonder if RES or something allows for removing the comment links :-P
14:21:07 <kallisti> but with shit switched around.
14:21:16 <elliott> Deewiant: I tried RES once and I just got annoyed at all the visual noise :P
14:21:29 <Deewiant> elliott: Just configure it, you can remove everything you don't want
14:21:36 <elliott> Yeah I know, I just also don't have any use for it
14:21:43 <itidus21> i mean, if deadlines are such a problem why are they so important
14:21:54 <Deewiant> I use it mostly for its "hide child comments" feature
14:21:56 <kallisti> http://www.reddit.com/r/shrooms/ I am disappointed at the lack of quality post things.
14:22:04 <elliott> itidus21: What's the real answer, since Vorpal is too boring to ask
14:22:07 <Vorpal> kallisti, anyway, I seen quite a few stable games on their release. None of them were open world sandbox games though.
14:22:28 <itidus21> elliott: as with most things it is best understood in a functional sense
14:22:34 <kallisti> /r/starcraft yesssss
14:22:34 <itidus21> :)
14:22:45 <Deewiant> /r/starcraft is kind of shitty as well
14:22:47 <kallisti> I think they have an IRC channel as well?
14:23:09 <elliott> As an anthropologist studying the primitive /r/starcraft natives, I can confirm that it's shitty
14:23:12 <Deewiant> It's more about the people than the game
14:23:17 <elliott> Also they're weird
14:23:24 <kallisti> elliott: but maybe it has like... starcraft games?
14:23:25 <kallisti> and stuff?
14:23:35 <itidus21> elliott: so.. the core explanation is i don't have either 1) the game 2) a PC which could play the game.
14:23:44 <elliott> itidus21: Riveting
14:23:49 <kallisti> elliott: I bet they use a lot of jargon you don't understand.
14:24:00 <Deewiant> For me /r/starcraft is like /r/AskReddit, I check it on occasion but don't subscribe to it or read it actively
14:24:01 <itidus21> but it gets more complex
14:24:06 <Vorpal> elliott, my only experience of starcraft is watching a few minutes of a commentated match. It was mostly incomprehensible jargon.
14:24:26 <kallisti> Vorpal: the jargon is actually not that dense.
14:24:28 <Deewiant> Surprise: thing you know nothing about is incomprehensible
14:24:36 <elliott> Deewiant: I don't know why you'd check /r/AskReddit ever, anything actually decent filters through to /r/bestof or whatever (which is admittedly kinda awful itself), and the rest is really awfully inane stuff
14:24:43 <Deewiant> I don't read /r/bestof
14:24:45 <Vorpal> kallisti, just as dense as for dota/lol/hon.
14:24:46 <elliott> FoxTrot creator Bill Amend is thinking about doing StarCraft 2 commentaries. Let's encourage him! (twitter.com)
14:24:46 <elliott> What.
14:24:52 <Vorpal> which is also mostly incomprehensible
14:24:52 <elliott> Deewiant: /r/bestof is default these days :P
14:24:58 <elliott> Deewiant: http://blog.reddit.com/2011/10/saying-goodbye-to-old-friend-and.html has the current list
14:25:04 <Deewiant> elliott: I unsubscribed from it long before it was default :-P
14:25:05 <kallisti> elliott: 6pool, 3rax, 3gate, 1-1-1, etc
14:25:13 <itidus21> 1) i don't have a job. 2) i don't have any money 3) i don't have any income. 4) whatever money i got in the last year from gifts such as xmas or birthday or other ended up going to my mom
14:25:15 <elliott> kallisti: Nope, haven't seen anything like that
14:25:24 <elliott> kallisti: I think you're expecting too much of them, it seems to mostly be celebrity worship crap
14:25:28 <itidus21> 4b) she ended up wasting most of this buying me soft drink and junkfood
14:25:28 <kallisti> ..oh
14:25:30 <kallisti> dumb.
14:25:37 <kallisti> I was expecting like... people who play starcraft
14:25:39 <kallisti> and know things about it.
14:26:41 <itidus21> 1) my brother has an explosive anger problem 2) my brother is greedy and selfish for some reason 3) due to (1) and (2) whenever i might acquire anything my brother wants he will just take it rather than waste energy getting his own copy of said thing
14:27:14 <itidus21> when i was about 10, i learned that in my house if i wanted to make a glass of cordial i basically had to pour one for everyone
14:27:18 <Vorpal> itidus21, you forgot 2i) There are other ways to get hold of games if you want to.
14:27:20 <Deewiant> elliott: As for /r/AskReddit, there's a good question once in a while plus I find reading about amusing real-world stories a significant improvement to e.g. /r/{funny,pics,videos}; it works with RES's "hide all child comments" well, too, so you can only read the top-level replies
14:27:27 <kallisti> itidus21: http://www.reddit.com/r/drugs/
14:27:51 <itidus21> im trying to express i guess how futile my life is..
14:28:01 <kallisti> http://i.imgur.com/MvQ9G.jpg
14:28:03 <Vorpal> itidus21, unless you use a console rather than a PC for gaming, in which case why on earth?
14:28:05 <kallisti> I'm trying to figure out
14:28:10 <kallisti> what this picture is trying to express
14:28:15 <kallisti> an unrelated problem altogether.
14:28:32 <elliott> itidus21: this is perhaps the most elaborate learned helplessness ever conveyed over irc
14:28:51 <Vorpal> itidus21, just use torrents? *shrug*
14:28:53 <elliott> Deewiant: "hide all child comments" sounds nice in theory but makes me miss out on e.g. when a high voted comment has an even higher-voted reply proving it's bullshit :P
14:29:08 <itidus21> Vorpal: my pc isn't near good enough to run it
14:29:09 <Deewiant> elliott: You can always manually check the replies
14:29:22 <itidus21> well i am not sure how good my pc is though but yeah
14:29:22 <kallisti> elliott: we're all in a state of learned helplessness man.
14:29:23 <Deewiant> elliott: (There's a "show child comments" button after hiding)
14:29:34 <kallisti> elliott: what are you gonna do about pollution, dawg?
14:29:36 <kallisti> nothin'
14:29:36 <kallisti> not shit.
14:29:39 <Deewiant> elliott: And that's what I usually do when I come across something that might need proving :-P
14:29:48 <Deewiant> elliott: But it hides pun threads and such effectively.
14:29:55 <elliott> Deewiant: Maan, I don't read reddit to think
14:30:02 <elliott> But yeah, anything that gets rid of pun threads is tempting :P
14:30:15 <Vorpal> itidus21, well then I guess you are stuck. Gaming when there are ranged weapons (bows and spells here) on consoles is generally horrible anyway due to lack of any sort of precision in aiming without a mouse.
14:30:17 <kallisti> wow a lot of pill-poppers on /r/drugs
14:30:20 <kallisti> lame.
14:30:58 <kallisti> uh oh, Vorpal is one of those "I can't aim with a thumbstick" people.
14:31:08 <itidus21> Vorpal: im just saying i feel how deprived i am when watching my brother play skyrim on a pc
14:31:19 <Vorpal> kallisti, I consider "auto aim" to be cheating. I know a lot of shooters on consoles use them.
14:31:25 <Vorpal> But that shouldn't be needed
14:31:27 <kallisti> Vorpal: that's not what I'm talking about.
14:31:29 <kallisti> it's not needed
14:31:40 <kallisti> you can do this neat thing where you turn up the sensitivity on the aiming
14:31:42 <itidus21> and ... i feel how fucked my life is on every level..
14:31:46 <Vorpal> kallisti, it takes much more time to aim with a thumbstick than with a mouse
14:31:53 <kallisti> and it gives you like, control over where you aim things based on how far you tilt the thumbstick
14:31:56 <kallisti> it's pretty neat.
14:32:18 <elliott> Vorpal: s/$/ for me/
14:32:22 <elliott> Vorpal: s/$/ because i'm bad at it/
14:32:25 <itidus21> i keep myself happy by lying to myself
14:32:28 <itidus21> sweet lies
14:32:41 <Vorpal> kallisti, still inferior to a mouse.
14:33:04 <Vorpal> kallisti, anyway another problem: current consoles are way behind PCs when it comes to graphical fidelity.
14:33:19 <elliott> ~graphical fidelity~
14:33:24 <kallisti> lol
14:33:31 <Vorpal> graphical quality then. Whatever you call it
14:33:45 <itidus21> elliott: i have learned that a nation has a similar problem when it feels its borders are too small.. and it has to ask all its neighbors to compromise
14:34:05 <itidus21> like suppose italy wanted to expand itself.. then all of europe might have to shift their borders
14:34:57 <itidus21> i have also learned that revolution tends to lead to a lot of deaths, and that border-renegotiations tends to lead to war
14:35:30 <Vorpal> kallisti, just compare a high end PC with the current PS3 or xbox 360 (wii is even further behind it seems). Assuming they all render to the same resolution, which system will be able to provide the best graphics? The PC.
14:35:32 <itidus21> and i know that, inspite all this a majority of the population of the world are screwed
14:36:26 <elliott> Vorpal: nobody actually gives a shit though because nobody derives fun from standing in front of a texture and admiring how high-resolution it is.
14:36:30 <itidus21> its like helplessness might be part of the system.. like... why are creatuers with learned helplessness surviving natural selection
14:36:43 <elliott> Vorpal: and consoles are attached to televisions which you sit further away from to play and therefore notice finer details less.
14:37:23 <Vorpal> elliott, the second point is true yes.
14:37:25 <kallisti> itidus21: because we don't actually have to fight for our lives/
14:37:31 <kallisti> itidus21: we've won the game.
14:37:35 <kallisti> collectively
14:37:40 <itidus21> yay
14:37:45 <kallisti> in... this country anyway
14:37:50 <kallisti> and many others.
14:37:50 <Vorpal> I prefer games to cover a larger part of my field of view though.
14:38:56 <Vorpal> elliott, but you yourself complained about the texture quality in skyrim screenshots. So you obviously do think it matter to some degree.
14:39:01 <Vorpal> matters*
14:40:12 <itidus21> one of the cool things about it is so much voice acting in it.. and so much stuff in it.. and the conversation trees (seem a bit contrived at times, but oh well)
14:40:58 <itidus21> its not hte game itself i guess, but realizing that i'm not at that level of society that can play a modern pc game
14:41:00 <kallisti> elliott: oh snaaaapp
14:41:05 <itidus21> its not like owning a car
14:41:14 <itidus21> its merely a pc..
14:41:18 <itidus21> but..
14:41:20 <kallisti> >_>
14:41:34 <itidus21> its more than i can fit into my life
14:41:38 <kallisti> dude who needs a car.
14:41:39 <kallisti> just like
14:41:45 <kallisti> order groceries online, do freelance work.
14:42:14 <Vorpal> take the bus
14:42:16 <Vorpal> or train
14:42:21 <kallisti> Vorpal: ha
14:42:22 <itidus21> clearly if i cannot buy myself a new pc ... a car is not in wildest dreams (even though diabetes is main reason i shouldn't drive.. and problems i suspect in my vestibular system)
14:42:32 <Vorpal> kallisti, well if you are in US you are screwed
14:42:48 <itidus21> and.. you can rule out a girlfriend
14:42:55 <Vorpal> hm?
14:43:01 <itidus21> but thats kind of implied by the whole geek thing :P
14:43:15 <kallisti> not really.
14:43:54 <kallisti> maybe you're just caring about the wrong things, and letting completely irrational beliefs hold you back. hmmmm?
14:44:28 <itidus21> at this rate, before i die i will face a living hell on earth
14:44:43 <itidus21> as the problems i am describing escalate and close in on me
14:44:48 <Vorpal> anyway there are compsci students that are female. Far fewer than half of the students, but they do exist at the university I'm studying at least.
14:45:05 <kallisti> Vorpal: yes I even saw one in one of my classes!
14:45:06 <kallisti> of course
14:45:21 <itidus21> i never planned for the possibility my brother would turn on me
14:45:32 <Vorpal> kallisti, I think it is something like two out of 18 in one of the current courses I'm taking.
14:45:43 <Vorpal> courses I'm currently taking*
14:45:49 <kallisti> she was even attractive! but, that's no place to pick up women, since... everyone is basically fawning her.
14:46:08 <kallisti> and she was probably like married or something
14:46:26 <Vorpal> heh
14:46:52 -!- ais523_ has joined.
14:46:57 -!- nooga has joined.
14:47:10 <Vorpal> kallisti, not so much of that here. I usually hang around with a group of around 5 people for stuff like lunch and so on, one of them is in that group. Just plain friends.
14:47:28 <ais523_> so, question I'm asking my students in this marking session: they have to write (in Java) a recursive method that sums a linked list
14:47:32 <elliott> hi ais523_, run away
14:47:44 <ais523_> and I'm asking them what would happen if they removed the base case
14:47:52 <ais523_> the answers are interesting, sometims
14:47:52 <Vorpal> ais523_, speaking of which, does java optimise tail recursion?
14:47:53 <ais523_> *sometimes
14:48:04 <ais523_> Vorpal: I don't know; I think it's allowed to, but generally doesn't in debug mode
14:48:08 <ais523_> but I'm not sure
14:48:09 <Vorpal> ah
14:48:42 <Vorpal> ais523_, so what sort of interesting answers were there?
14:48:43 <nooga> linked list, in java, what for? how?
14:48:53 <ais523_> nooga: same way you define a linked list in C
14:48:58 <Vorpal> nooga, it is trivial to do with classes?
14:49:11 <Vorpal> nooga, since everything but the primitive types are by reference
14:49:22 <Vorpal> at least as far as I know
14:49:22 <ais523_> or, fwiw, java.util.LinkedList
14:49:52 <nooga> but there are no pointers in java
14:49:58 <elliott> yes there are
14:50:00 <elliott> everything's a pointer
14:50:04 <ais523_> no need to roll your own when perfectly reasonable doubly-linked lists exist
14:50:11 <ais523_> nooga: Java has references, which are a special case of pointers
14:50:19 <Vorpal> nooga, everything except primitive types are references.
14:50:24 <ais523_> (or to look at it another way, pointers are a common way to implement references)
14:50:28 <ais523_> and references are enough for a linked list
14:50:34 <nooga> oh, okay
14:51:13 <nooga> I come from a world of pointers
14:51:18 <Vorpal> ais523_, so what sort of interesting answers were there?
14:51:23 <ais523_> Vorpal: well, the students who are trying to answer everything by rote assume they'd get a stack overflow, because that's always what happens when you remove the base case of a recursion, right?
14:51:34 <ais523_> so I ask them what'd happen when the end of the list is reached
14:51:35 <Vorpal> ais523_, heh
14:51:37 <elliott> nooga: ruby - world of pointers
14:51:41 <ais523_> funniest answer so far is that it goes back to the start of the list
14:51:57 <Deewiant> Yes, java.util.LinkedList, the linked list that lacks an easy of way of retrieving the tail
14:51:57 <Vorpal> ais523_, non-ciruclar list I take it?
14:52:01 <Vorpal> circular*
14:52:08 <ais523_> Vorpal: singly linked
14:52:19 <ais523_> it's handrolled, and does have an accessor for the tail
14:52:20 <Vorpal> ais523_, you can have a singly linked circular list!
14:52:27 <Vorpal> but sure
14:52:34 <nooga> elliott: well, ruby is not my main language ;p
14:52:46 <ais523_> also, it doesn't have a constructor or setter method that would allow creating a circular one without bypassing the security model somehow
14:52:55 <elliott> Deewiant: Seriously?
14:53:01 * kallisti hasn't figured out his "main language"
14:53:06 <kallisti> I don't think I have one of those.
14:53:13 <ais523_> elliott: seriously; you can mutate it into its tail
14:53:15 <Vorpal> ais523_, how can someone fail a simple question like that, I don't get it.
14:53:20 <Deewiant> elliott: It's the reason I rolled my own at one time
14:53:23 <ais523_> but not get a reference to the tail without changing it
14:53:38 <elliott> Oh, right, it's "linked list: the arraylist interface"
14:53:46 <elliott> AKA the least useful structure, ever
14:53:55 <nooga> wait
14:53:56 <Deewiant> You can do subList(1, list.size()) but that probably copies n-1 elements
14:54:00 <ais523_> btw, about tail-calls in Java, I just looked it up; the JVM doesn't do it because it needs to maintain the stack trace as expected
14:54:13 <Vorpal> ais523_, ouch
14:54:15 <elliott> You can do tail calls with stack traces trivially
14:54:17 <ais523_> but individual JVM languages can optimise tail-recursion (i.e. self-tail-calls) into loops if they want
14:54:20 <elliott> But that's GvR's excuse too
14:54:29 <nooga> I thought you don't give a shit about Java and now, suddenly, everybody is talking about Java
14:54:32 <nooga> how come
14:54:37 <elliott> because ais523_ brought java up
14:54:40 <elliott> because ais523_ teaches java
14:54:42 <Vorpal> ais523_, is javac able to do that?
14:54:43 <Deewiant> "Trivially" is a bit much; simply, maybe :-P
14:54:45 <ais523_> you can get the names of functions trivially
14:54:48 <elliott> because we talk about the things ais523_ talks about
14:54:50 <ais523_> elliott: you can't inspect the values of params back along the stack, though
14:55:08 <nooga> ais523_: excuse me, but... begone!
14:55:09 <ais523_> elliott: because I'm marking Java right now, except it's a two-week exercise and the student in this slot did it all last week
14:55:09 <nooga> :]
14:55:09 <elliott> ais523_: Sure you can, it just means you leak memory
14:55:12 <ais523_> to get the week off this week
14:55:20 <elliott> Admittedly, that's almost the same as not optimising tail calls
14:55:22 <ais523_> elliott: wait, is that even a tail-call any more?
14:55:33 <ais523_> the obvious place to store it is the call stack
14:55:41 <elliott> Store it somewhere bigger
14:55:47 <ais523_> I suppose it'd be a tail-jump; when you actually hit the return of the tail-calls, just pop all the stack elements at once
14:55:57 <ais523_> so you get a speed improvement if not a space improvement
14:56:06 * elliott thinks the tail call argument is rubbish anyway
14:56:09 * ais523_ realises with horror that this is actually a standard idiom in INTERCAL
14:56:12 <elliott> people just make it up when trying to think of excuses not to implement it
14:56:18 <quintopia> the jvm should have a flag to loop tail recursion and not give a damn about stack data :/
14:56:33 <ais523_> tail-jumping, that is
14:56:35 <elliott> I have never heard of anyone failing to debug a Scheme program because they tail-recursed and the stack trace didn't have all the frames
14:57:15 <ais523_> elliott: the typical API to a Prolog debugger (which seems standard among multiple implementations, strangely) tends to have two different operation modes, one which tail-recurses and one which doesn't
14:57:24 <ais523_> I'm not sure if it extends to tail-calls generally
14:57:29 <elliott> prolog is weird though
14:57:43 <elliott> also anyone who does tail recursion optimisation as opposed to tail call optimisation
14:57:46 <elliott> is not my friend, advanced warning
14:58:02 <ais523_> when not debugging, it optimises out the tail-recursions just fine (again, not sure about general tail calls); in the debugger, I imagine being able to see them helps sometimes
14:58:17 <ais523_> meanwhile, Perl has specific syntax for doing a tail-call, and probably doesn't do them if you don't use it
14:58:20 <Vorpal> anyway you could just do the optimisation at compile-to-bytecode time. So there is really no obvious reason to not have it there rather than in the jvm
14:58:25 <ais523_> which is an interesting middle ground
14:58:28 <Vorpal> unless you can JIT better doing it in the JVM I guess.
14:58:29 <quintopia> didnt prolog come before haskell?
14:58:33 <ais523_> Vorpal: I think the JVM has a concept of methods
14:58:42 <ais523_> quintopia: I'm not sure, they're both earlier-than-you'd-think
14:58:46 <ais523_> and I'm not sure which is more earlier
14:58:47 <quintopia> ah
14:59:38 <Vorpal> ais523_, probably. Still there is no obvious reason to not optimise tail calls already in the compiler if the end result (the machine code produced by the JIT) ends up equally good to doing the whole thing in the JIT would have.
14:59:43 <Vorpal> gah the grammar of that.
15:00:00 <nooga> hm
15:00:12 <ais523_> http://blogs.oracle.com/jrose/entry/tail_calls_in_the_vm
15:00:12 <quintopia> prolog predates haskell by over two decades :O
15:00:16 <nooga> never really thought about TCO before
15:00:23 <ais523_> (proposal to add tail-calls to Java bytecode in a backwards-compatible way)
15:00:48 -!- elliott_ has joined.
15:01:04 <elliott_> <quintopia> didnt prolog come before haskell?
15:01:11 <elliott_> prolog 1972
15:01:24 <elliott_> haskell 1987-1990
15:01:31 <ais523_> wow, Prolog's as old as INTERCAL
15:01:35 * elliott_ doesn't think haskell is "earlier than you'd think", personally
15:01:46 <quintopia> < quintopia> prolog predates haskell by over two decades :O
15:01:49 * elliott_ is surprised that Prolog is that old though
15:01:55 <elliott_> I would have guessed... 1983?
15:02:20 <elliott_> ISO Prolog is 1995, though.
15:02:49 <quintopia> i suspect the syntax that haskell and prolog have in common was extant before 1995
15:02:52 <quintopia> in prolog
15:03:05 <elliott_> that's
15:03:09 <elliott_> not much syntax at all
15:03:14 <elliott_> in fact, I'm having a hard time of thinking of a single piece
15:03:22 <quintopia> well, not exact syntax
15:03:58 <quintopia> but the idea of multiple alternate subcases of a fact/function being built into a syntactical structure
15:04:13 -!- elliott has quit (Ping timeout: 245 seconds).
15:04:25 <elliott_> huh?
15:04:48 <quintopia> its not something languages had before prolog that i can tell
15:05:09 <elliott_> do you just mean writing pattern-matching like
15:05:13 <elliott_> f ... = ...
15:05:14 <elliott_> f ... = ...
15:05:16 <elliott_> rather than like
15:05:18 <elliott_> f x = case x of ...
15:05:27 <elliott_> and not being able to define multiple top-level clauses for "f"?
15:05:35 <quintopia> yeah i guess
15:05:47 <elliott_> otherwise i dunno what you mean
15:05:56 <quintopia> of the idea of patternmatching defs in general
15:06:26 <quintopia> anyways shower time. i'm already running way late.
15:07:19 <nooga> for shower?
15:08:32 -!- ais523_ has quit (Ping timeout: 265 seconds).
15:13:34 -!- ais523_ has joined.
15:13:54 <ais523_> back
15:14:12 <ais523_> and that was a weird pingout, pinging out from the webclient while on a desktop computer with a wired connection
15:15:05 <ais523_> the way patternmatching defs work in Prolog is entirely different from the way they work in Haskell, though
15:15:14 <ais523_> as in, they do the same thing, but for entirely different reasons
15:16:05 <elliott_> hmm, is it possible to create a reversible language where only the program /state/ needs to be known to compute the previous one, not the state _and_ the program?
15:16:12 <elliott_> I realise that's a kind of vague concept
15:16:23 <elliott_> reversible CAs do that, except they embed the program into the state already, kind of :P
15:18:25 -!- zzo38 has quit (Remote host closed the connection).
15:23:18 <elliott_> ais523_: oh, my name is johny, what the F**K? seems to be forming properly in my head
15:23:29 <elliott_> by which I mean, I'm coming up with a language and it seems good enough to give it the name
15:27:47 <ais523_> yay
15:27:53 <ais523_> capital J on Johny, right?
15:27:55 -!- copumpkin has joined.
15:28:06 <elliott_> ais523_: probably
15:28:16 <ais523_> I can check, if necessary
15:28:41 -!- ais523_ has quit (Quit: Page closed).
15:30:31 <ais523> the ** in the name of that language, I mentally pronounce as somewhere between öö and üü
15:30:35 <ais523> but a bit shorter
15:33:48 <elliott_> hmm, the problem with having reversibility based on state alone is that no two different programs can produce the same state
15:34:03 <elliott_> seems like I'm edging close to Rice's theorem if I'm not careful
15:38:39 <ais523> which one is Rice's theorem?
15:39:04 <elliott_> http://en.wikipedia.org/wiki/Rice's_theorem
15:39:16 <elliott_> in this context, the problem is basically that you can't compute equality for functions
15:40:17 <ais523> oh right, that one
15:41:53 <ais523> incidentally, a few days ago, there was a Haskell fan flaming OCaml for accepting = on functions (and throwing an exception if you tried to use it)
15:42:03 <ais523> also, for defining < and > on absolutely everything that has an =, even if it's arbitrary
15:42:15 <ais523> (that is, they're consistent with =, but otherwise arbitrary, in some cases)
15:44:39 <elliott_> ais523: where? (and I agree)
15:44:47 <elliott_> although, that </> thing is a bit hypocritical
15:44:55 <elliott_> Haskell has arbitrary Ord instances too
15:45:04 <elliott_> beacuse our structures like to use them
15:45:09 <ais523> elliott_: in real life
15:45:38 <kallisti> in real life my structures are giant monsters that eat me.
15:45:41 <ais523> one advantage of working in a CS department is that you have a nontrivial chance of encountering a Haskell fan
15:45:59 <ais523> elliott_: remember the Bjorn stories? kallisti reminds me of that, just less extreme
15:46:10 <elliott_> lol
15:46:23 <kallisti> what are those?
15:46:41 <ais523> `log Bjorn
15:46:47 <HackEgo> 2011-09-13.txt:18:09:15: <elliott> `log Bjorn
15:46:52 <ais523> that wasn't useful…
15:46:54 <ais523> `log Bjorn
15:47:04 <HackEgo> 2010-07-24.txt:03:54:13: <alise> The merchant tottered away uneasily, and decided to get a job that involved fewer crazy people. Say, telemarketing. Bjorn voyaged on through the dark for maybe three meters before giving up and resting for the night.
15:47:07 <kallisti> past elliott: stop being curious
15:47:14 <ais523> there we go, it's that sort of thing
15:47:26 <ais523> `log Bjorn
15:47:31 <HackEgo> 2011-09-13.txt:18:07:47: <ais523> oh, I forgot all about the Bjorn thing
15:47:35 <ais523> `log Bjorn
15:47:41 <HackEgo> 2010-07-24.txt:03:52:04: <alise> As Bjorn woke the next morning, he was, much to his chagrin, reminded of his exploits-to-be by his least favourite region of the brain, which was whatever part stored memories; Bjorn wasn't really sure how the brain operated, apart from that he wished it wouldn't do so in such an efficient and unforgetting manner. So he trundled off again to the pub, and finally got up the energy,
15:47:51 <elliott_> that alise was a weird person
15:47:54 -!- copumpkin has quit (Remote host closed the connection).
15:48:18 -!- copumpkin has joined.
15:49:03 <ais523> alise was better at Bjorn stories than the rest of us
15:49:24 <kallisti> Sgeo: updersation between itidus21, Vorpal, and kallisdeet
15:49:30 <ais523> Bjorn, sadly, was better at Bjorn stories than himself, but he wished it was worse
15:49:35 <kallisti> (continuing with the fractal theme)
15:50:07 <elliott_> ais523: hmm, I think I know how to implement addition in My name is Johny, what the F**K? branch 2, but I'm not sure about multiplication
15:50:20 <ais523> that's always a good sign
15:50:45 <elliott_> ais523: but if what I have is a correct implementation of multiplication, I fear that the language may be fairly boring
15:51:06 <ais523> is it obvious?
15:51:17 <ais523> if it's correct but non-obvious given esolang knowledge, you've probably found something new
15:51:24 <elliott_> is what obvious?
15:51:29 <ais523> the multiplication impl
15:52:30 <elliott_> ais523: I think so
15:52:37 <elliott_> hmm, ah, I think I know what I need
15:52:50 <elliott_> unfortunately, I'm not sure how to make it /mandatory/
15:52:56 <elliott_> if it's not, you can write programs easily but boringly
15:55:05 -!- Phantom_Hoover has joined.
15:55:23 <elliott_> ais523:
15:55:23 <elliott_> fact(Z) = (S(Z), Z);
15:55:23 <elliott_> fact(S(n)) =
15:55:23 <elliott_> let (r, j) = fact(n);
15:55:23 <elliott_> (r', j') = times(S(n), r)
15:55:23 <elliott_> in discard j' = r;
15:55:25 <elliott_> r = fact(S(j))
15:55:27 <elliott_> in (r', S(j));
15:55:52 <ais523> elliott_: is that MNIJWTF?
15:55:59 <elliott_> ais523: branch 2 branch 1
15:56:34 <ais523> gah, it looks vaguely like Haskell but trying to interpret it as Haskell makes my head spin
15:56:40 <ais523> that's also a good sign :)
15:56:56 <elliott_> ais523: try ignoring discard...in
15:57:06 <elliott_> and note that times returns a tuple
15:57:08 <ais523> nah, I think I know what discard does
15:57:18 <ais523> it asserts that both values are equal, and then forgets about them
15:57:24 <ais523> and forgetting about data is otherwise impossible
15:57:25 <elliott_> it only forgets about the LHS
15:57:30 <ais523> err, right
15:57:32 <elliott_> right
15:57:34 <ais523> ofc
15:58:04 <elliott_> ais523: the problem is mainly, how do I force people to use discard? rather than just doing something like
15:58:12 <elliott_> fact(Z) = (S(Z), Z);
15:58:12 <elliott_> fact(S(n)) =
15:58:12 <elliott_> let (r, j) = fact(n);
15:58:12 <elliott_> (r', j') = times(S(n), r)
15:58:12 <elliott_> in (r', (r, j', S(j)));
15:58:24 <elliott_> where you basically just thread computations and put all the junk in one value
15:58:40 <ais523> what about making the language typed?
15:58:46 <kallisti> elliott_: the value is thusly called "the trunk"
15:58:47 <ais523> (as in, typed lambda calculus)?
15:58:49 <kallisti> ha. ha.
15:59:25 <elliott_> ais523: ooh, that might actually work
15:59:39 <elliott_> ais523: except, ah, no
15:59:49 <ais523> then you have to invent a monstrously complicated ADT to lump all the junk in one value
16:00:04 <ais523> err, not ADT
16:00:09 <elliott_> fact(Z) = (S(Z), [Z]);
16:00:09 <elliott_> fact(S(n)) =
16:00:09 <elliott_> let (r, j:js) = fact(n);
16:00:09 <elliott_> (r', j') = times(S(n), r)
16:00:09 <elliott_> in (r', S(j) : r : j' : js);
16:00:12 <ais523> recursive type
16:00:12 <kallisti> hereafter called "the trunk" plz
16:00:22 <elliott_> ais523: maybe if it was the simply typed lambda calculus
16:00:23 <ais523> kallisti: but we're trying to get rid of it
16:00:27 <elliott_> ais523: but the STLC can barely /compute/ anything
16:00:32 <elliott_> I'd like this to be TC
16:00:39 <kallisti> ais523: okay then plz name your finished solution "the trunk"
16:00:40 <ais523> elliott_: what's the difference? no recursive types?
16:01:06 <ais523> kallisti: elliott_ and I both care deeply about MNIJWTF, we want a truly great language to represent the name
16:01:08 <elliott_> ais523: STLC just has Q and (A -> B) as types
16:01:11 <elliott_> where Q just means "anything"
16:01:28 <ais523> elliott_: crazy idea: what about bounding memory usage somehow?
16:01:44 <ais523> although that gets rid of TCness, it still allows the vast majority of practical programs
16:01:54 <ais523> apart from interps and similar constructs that absolutely need to be TC
16:02:09 <ais523> hmm, that reminds me, I still need to invent ACK
16:02:23 <ais523> the esoteric programming language that is not TC, but only barel
16:02:25 <ais523> *barely
16:03:14 <elliott_> ais523: hmmm, maybe
16:03:47 <elliott_> ais523: what if i made it bounded but infinite?
16:03:48 <ais523> (the idea is, there are two sorts of entropy; there's minor entropy and major entropy, all operations cost minor entropy, major entropy allows you to ackermann-function your minor entropy but you only have a finite, program-specified, amount)
16:03:52 <kallisti> hey guys we're on topic.
16:03:53 <kallisti> amazing.
16:04:02 <ais523> kallisti: stop trying to derail us, this channel is even better ontopic than offtopic
16:04:09 <kallisti> I'm... not?
16:04:39 * kallisti was actually just discussing (read: ranting to himself with a witness) an esolang.
16:04:40 <elliott_> ais523: that is to say, like, you have aleph_null ram
16:04:59 <elliott_> ais523: but if you do f(g(x), h(x)), the computations of g(x) and h(x) can only take half of it
16:05:07 <elliott_> and f gets all of it, because it's a tail call
16:05:10 <ais523> that's, umm, wow
16:05:15 <ais523> does that even make sense?
16:05:18 <ais523> please tell me that makes sense
16:05:29 <elliott_> I don't think so, so let's keep thinking about it until it makes even less sense
16:06:04 -!- calamari has joined.
16:06:08 <elliott_> ais523: so the idea would be, make it so that just piling all the junk from multiple calls together ends up using an impossible amount of RAM
16:06:21 <ais523> yep
16:06:27 <elliott_> ais523: i.e., because you recurse, and then use more than ten times that, or whatever
16:06:36 <elliott_> so the whole function needs RAM n > n for certain inputs
16:06:41 <elliott_> and it's rejected by the RAM checker
16:06:42 <ais523> hmm, now I'm reminded a bit of Advice
16:06:50 <ais523> it's one of the ICFP esolangs
16:07:12 <ais523> and it's basically just Thue-on-trees, except that if the same number of replacements need to be made on both branches of a tree, it doesn't replace on either
16:07:29 <ais523> which is a restriction that's perfectly gauged to throw a spanner in the works of typical algorithms
16:07:40 <kallisti> wow so I think I've actually figured out my esolang.
16:08:05 <ais523> (my solution to programming in it was to make sure that only one replacement was possible at any given time, so that it'd always be split 1/0 everywhere that mattered and thus avoiding a balanced situation)
16:08:20 <ais523> that applies to subtrees, too, obviously, or it'd be trivial
16:09:18 <elliott_> ais523: incidentally, it's meant to be term rewriting, if it isn't obvious
16:09:20 <elliott_> my language, that is
16:09:33 <Phantom_Hoover> You guys were talking about entropy without me?
16:09:43 <Phantom_Hoover> Wait no that's stupid entropy.
16:09:55 <ais523> elliott_: yep, I figured it was some sort of match-and-unmatch thing, like Anarchy
16:10:22 <ais523> ("unmatch" is a great name for the operation of creating a data structure from a template)
16:13:46 <elliott_> ais523: hmm, I'm quite worried that the junk value always seems to be one of the parameters to the function
16:13:56 <elliott_> I suppose it's because these functions are pretty simple so far
16:14:22 <ais523> elliott_: hmm, I'm reminded of Unassignable now
16:14:33 <ais523> finding workable junk values there was really hard
16:14:36 <ais523> * :≠
16:14:41 <ais523> yay, I can finally type its actual name
16:14:50 * elliott_ is trying fib now, which is interesting because it recurses twice
16:17:13 <elliott_> wow, fib is difficult
16:18:39 <elliott_> fib(Z) = (0, Z);
16:18:39 <elliott_> fib(S(Z)) = (S(Z), S(Z));
16:18:39 <elliott_> fib(S(S(n))) =
16:18:39 <elliott_> let (a, j) = fib(n);
16:18:39 <elliott_> (b, j') = fib(S(n));
16:18:40 <elliott_> (r, j'') = add(a, b)
16:18:42 <elliott_> in discard j' = S(j)
16:18:44 <elliott_> j'' = a
16:18:46 <elliott_> a = fst(fib(j))
16:18:48 <elliott_> b = fst(fib(S(j)))
16:18:50 <elliott_> in (r, S(S(j)));
16:18:52 <elliott_> the problem there is that there's no such thing as fst
16:18:58 <ais523> indeed
16:20:54 <elliott_> hmm, ah
16:20:56 <elliott_> fib(Z) = (0, Z);
16:20:56 <elliott_> fib(S(Z)) = (S(Z), S(Z));
16:20:56 <elliott_> fib(S(S(n))) =
16:20:56 <elliott_> let (a, j) = fib(n);
16:20:57 <elliott_> (b, j') = fib(S(n));
16:20:59 <elliott_> (r, j'') = add(a, b)
16:21:01 <elliott_> in discard j'' = a
16:21:03 <elliott_> (a, j) = fib(j))
16:21:05 <elliott_> (b, j') = fst(fib(S(j)))
16:21:07 <elliott_> in (r, S(S(j)));
16:21:09 <elliott_> wow, that's longer than it looks in my editor
16:21:11 <elliott_> errr
16:21:13 <elliott_> scratch that
16:21:25 <elliott_> http://sprunge.us/TYBY
16:21:31 <elliott_> oh, and I forgot semicolons
16:22:43 <elliott_> ais523: I suppose there's no problem in letting you use a variable after it's discarded
16:22:58 <ais523> indeed
16:23:16 <ais523> although, you could just put a discard list at the end of a function
16:23:20 <elliott_> ais523: the main problem is that it's easy to cheat discard
16:23:28 <elliott_> ais523: by giving it a definition that _isn't_ equivalent
16:23:36 <elliott_> but just happens to work in all the cases you try
16:23:50 <ais523> should be instant runtime crash if they're different at runtime
16:24:00 <ais523> I don't see why it's a problem if they're always the same at runtime but defined differently
16:24:06 <elliott_> ais523: that's cheating; you can't do that in the "architecture" of the language
16:24:14 <ais523> ah, OK
16:24:17 <elliott_> ais523: I mean, on real computers, you don't have to do discard at all! you can just throw away the values
16:24:35 <elliott_> the idea is that you can throw away information as long as you can prove you already have it
16:24:43 <elliott_> which isn't the same thing as just happening to have the right bits
16:24:54 <elliott_> you need to prove you've already computed it redundantly, in essence
16:25:04 <ais523> hmm
16:26:51 -!- olsner has joined.
16:27:21 <elliott_> ais523: I suppose it could try and prove it itself via term rewriting
16:27:26 <elliott_> not sure it would work though
16:27:40 <ais523> make it ship with a machine-readable proof, Coq/Agda-style?
16:27:42 <elliott_> ais523: sort of, prolog style
16:27:43 <elliott_> like if you do
16:27:45 <elliott_> a = b
16:27:50 <elliott_> it computes b symbolically
16:27:53 <elliott_> and checks that it's a
16:28:07 <elliott_> ais523: that's also cheating, but more importantly it's really boring
16:28:12 <ais523> heh, I think that's another operation that I'm planning for Anarchy
16:28:12 <elliott_> because proofs are boring to write
16:28:13 <olsner> quick, someone summarize the last week of #esoteric for me
16:28:16 <ais523> elliott_: OK
16:28:22 <elliott_> olsner: boring
16:28:24 <ais523> olsner: is that possible?
16:28:25 <elliott_> except for just now
16:28:36 <ais523> but yes, today it's been interesting, the rest of the week, not so much
16:28:40 <olsner> elliott_: ok, I'll just assume I haven't missed anything then :)
16:29:09 <kallisti> elliott_: yes, everything is so much easier when I resist the urge to not make this a term rewriting language.
16:29:27 <ais523> term rewriting is great
16:29:34 <kallisti> and instead just make it an awesome term rewriting language.
16:29:36 <kallisti> s/term/graph/g
16:29:44 <ais523> more languages should do term rewriting
16:30:33 <elliott_> ais523: heh! i think i can use this model to do a kind of uniqueness typing
16:30:50 <kallisti> so this is kind of turning into a spatial and temporal logic graph rewriting language, if that's even a thing.
16:32:08 <kallisti> also nondeterministic because why not.
16:35:19 <elliott_> http://sprunge.us/ENjA
16:35:21 <elliott_> I think this works
16:35:33 <elliott_> the main problem is that you could discard the last world and return the second-last world, which is problematic
16:37:51 <elliott_> ais523: heh, then I thought of a solution but it's just a monad
16:38:16 <ais523> elliott_: monads in general, or a specific monad?
16:38:21 <elliott_> the io monad
16:38:37 <ais523> right yes, that became obvious when I clicked on the link
16:38:47 <elliott_> er, no
16:38:51 <elliott_> that sprunge isn't the IO monad
16:39:10 <ais523> nope, but it becomes clear that IO is how you'd fix it
16:39:24 <elliott_> right
16:39:32 <elliott_> that's so boring though, it doesn't use the reversibility at all
16:39:42 <elliott_> the only additional thing you'd need is like
16:39:50 <elliott_> discard X in E -- E has to have type IO t for some t
16:39:54 <elliott_> and X can have any type
16:40:04 <elliott_> so that you can, e.g., read a line from the terminal without having to print it out later or whatever
16:40:16 <elliott_> (discard X in E has the same type as E, ofc)
16:40:49 -!- sebbu2 has joined.
16:41:02 -!- sebbu2 has quit (Changing host).
16:41:02 -!- sebbu2 has joined.
16:41:12 -!- sebbu has quit (Ping timeout: 248 seconds).
16:41:42 <elliott_> ais523: time to see if I can write reverse : [a] -> [a]
16:43:25 <elliott_> append([], ys) =
16:43:25 <elliott_> discard [] = take(Z, ys)
16:43:25 <elliott_> in (ys, Z);
16:43:25 <elliott_> append(x:xs, ys) =
16:43:25 <elliott_> let (xs', j) = append(xs, ys)
16:43:25 <elliott_> in (x:xs', S(j));
16:43:30 <elliott_> hmm, that can't possibly work, which is a bad sign
16:43:36 <elliott_> because I can't think of another way to do it
16:43:50 <elliott_> and I also can't see how that's invalid
16:45:03 <elliott_> ais523: hmm, I might pop back to branch 1, which is a completely different language
16:45:19 <elliott_> ais523: http://esoteric.voxelperfect.net/wiki/User:AlisonDiaz603
16:45:59 <ais523> deleted (I assume you didn't want protection instead :P)
16:46:12 <Phantom_Hoover> I have just noticed a name in a Wikipedia article which is spelt two different ways in two consecutive paragraphs.
16:48:25 -!- copumpkin has quit (Remote host closed the connection).
16:48:32 <elliott_> ais523: btw, though I'm not as annoyed as oerjan, I think you should contact Graue if spam continues at this rate, at least to give you bot privileges so that you can keep the deletions off recentchanges
16:48:57 <ais523> elliott_: he'd need to give me the option to set/unset bot privs
16:49:09 <elliott_> ais523: why can't he just set bot privileges for all admins?
16:49:10 <ais523> rather than just to put them on constantly, because then none of my edits would show up in recent changes
16:49:13 <elliott_> ah
16:49:21 <elliott_> is there a way to do that without giving you crat privs?
16:49:25 <ais523> I'm also not sure what happens to admin actions marked bot actions
16:49:34 <ais523> elliott_: yes, but it's nontrivial and may require recentish MediaWiki
16:49:39 <elliott_> *sigh*
16:49:43 <ais523> admins can set/unset all sorts of flags on Wikipedia
16:49:56 <ais523> (none of the really important ones, but flags like "can use rollback" are routinely toggled by admins)
16:50:07 <elliott_> ais523: well, whatever, I just think you should contact him to get /something/ done if recent changes continues to be completely clogged with spam
16:50:37 <ais523> what I'd really like is the AbuseFilter extension
16:50:43 <ais523> it lets admins configure anti-spam rules
16:51:01 <elliott_> that would be preferable to our current (terrible) capthca system.
16:51:04 <elliott_> captcha
16:51:16 <elliott_> but i have a feeling that graue has Strong Opinions on the Right Way to do this
16:51:37 <elliott_> we could at least have a better captcha
16:51:44 <elliott_> admins can create accounts, right?
16:51:54 <ais523> yes, for other people as well as themselves
16:51:57 <elliott_> then it doesn't matter if we have an image-only captcha
16:52:06 <elliott_> people who can't use it can ask an admin for an account
16:52:09 <ais523> it requires an email address, though
16:52:22 <ais523> as the admin doesn't get to see the resulting password, and it has to be sent /somewhere/
16:52:31 <elliott_> right
16:52:37 <ais523> (random fact: for a while, I handled quite a large proportion of Wikipedia's manual account creation)
16:53:14 <elliott_> what was that used for?
16:53:27 <ais523> mostly usernames that hit the blacklist
16:53:41 <ais523> like being too similar to another user, or containing blacklisted words, that sort of thing
16:53:48 <ais523> checking to see if the blacklist should be overriden in that case
16:54:05 <ais523> (being too similar to someone who registered six years ago and has never edited, for instance, typically I'd allow that)
16:55:47 <elliott_> But five years, hell no!
16:56:00 <ais523> heh
16:59:36 <elliott_> someone help me forget an idea I just had, please
16:59:49 <kallisti> !perl print (("stay in school", "drop out")[int(rand(2))])
16:59:52 <EgoBot> stay in school
16:59:58 <kallisti> EgoBot: thanks egobot
17:00:07 <elliott_> `run perl -e 'print (("stay in school", "drop out")[int(rand(2))])'
17:00:09 <HackEgo> drop out
17:00:11 <elliott_> kallisti: HackEgo is cooler.
17:00:15 <elliott_> You should trust HackEgo instead.
17:00:26 <kallisti> I somehow doubt that.
17:00:37 <kallisti> still MY TIME MANAGEMENT SKILLS ARE FUCKING DISAPPEARING AAAAAAH
17:00:40 <Deewiant> @die 2
17:00:40 <lambdabot> 2 => 2
17:00:44 <Deewiant> @die 1d2
17:00:44 <lambdabot> 1d2 => 2
17:00:46 <kallisti> not that I had any in the first place.
17:00:48 <kallisti> but now they're more important.
17:01:06 <Deewiant> Majority opinion points to "drop out"
17:02:06 <kallisti> PRNGs is no way to make important life decisions.
17:03:26 -!- copumpkin has joined.
17:03:30 <Deewiant> www.random.org says 1 so "stay in school" it is
17:04:06 <kallisti> !perl print ( int rand(6 > 0) ? "continue living" : "kill yourself" )
17:04:07 <EgoBot> kill yourself
17:04:09 <kallisti> lol
17:04:30 <kallisti> I'm bad at Russian roulette
17:04:34 <kallisti> er
17:04:36 <kallisti> except
17:04:36 -!- copumpkin has quit (Remote host closed the connection).
17:04:38 <kallisti> I fucked up the code
17:04:42 <kallisti> so I'm just bad at programming
17:04:46 <Deewiant> !perl print(int rand(6 > 0))
17:04:46 <EgoBot> 0
17:04:55 <Deewiant> !perl print(rand(6 > 0))
17:04:56 <EgoBot> 0.262715389094414
17:05:01 -!- copumpkin has joined.
17:05:07 <elliott_> is 6 greater than 0
17:05:12 <Deewiant> Yes
17:05:23 <kallisti> !perl print ( (int rand 6) > 0 ? "continue living" : "kill yourself" )
17:05:24 <EgoBot> continue living
17:05:25 <elliott_> thanks
17:05:28 <kallisti> yesssss
17:07:19 <Deewiant> !perl print int rand 6
17:07:19 <EgoBot> 1
17:08:05 <elliott_> !perl print int rand 6
17:08:05 <EgoBot> 0
17:08:07 <elliott_> !perl print int rand 6
17:08:08 <EgoBot> 2
17:08:09 <elliott_> !perl print int rand 6
17:08:10 <EgoBot> 3
17:08:26 <elliott_> you're all being terrible at distracting me.
17:09:37 <kallisti> echo '#!/bin/perl' > bin/russianroulette && echo 'print ( (int rand 6) > 0 ? "continue living" : "kill yourself" )' >> bin/russianroulette && chmod +x bin/russianroulette
17:09:56 <kallisti> `run echo '#!/bin/perl' > bin/russianroulette && echo 'print ( (int rand 6) > 0 ? "continue living" : "kill yourself" )' >> bin/russianroulette && chmod +x bin/russianroulette
17:09:58 <HackEgo> No output.
17:10:07 <kallisti> `russianroulette
17:10:07 <elliott_> `rm bin/russianroulette
17:10:10 <kallisti> NOOOOOO
17:10:11 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: /hackenv/bin/russianroulette: /bin/perl: bad interpreter: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/russianroulette: Success
17:10:27 <HackEgo> No output.
17:10:33 <Deewiant> Success
17:11:29 -!- monqy has joined.
17:11:52 <elliott_> monqy: success
17:12:00 <monqy> hi
17:12:19 <kallisti> monqy: monqy :elliott
17:12:29 <monqy> hi
17:12:32 <kallisti> hey
17:12:46 <kallisti> zah
17:12:55 <monqy> speaking of success, I finished the python yesterday/lastnight
17:13:37 <monqy> hopefully that means no more for a while. will likely have to do c++ next quarter though :( why is everything bad
17:13:48 <elliott_> "On the one hand, Java was slow, bloated, and not too portable. On the other hand, Inferno was quick, small, portable*, and marketed by AT&T. So naturally Java became popular."
17:14:14 <monqy> inferno? that any good?
17:14:39 <elliott_> http://en.wikipedia.org/wiki/Inferno_(operating_system)
17:15:01 <monqy> tetris excitement
17:26:36 <elliott_> ais523: quick, talk about Feather
17:35:52 <elliott_> ais523: that wasn't quick!
17:52:05 <kallisti> elliott_: obviously he wrote an IRC client in Feather
17:52:08 <kallisti> and discussed in the pass.
17:52:10 <kallisti> t
17:52:11 <kallisti> the passt
17:52:44 <kallisti> using the Feather inerpretre that's written in Feather.
17:52:55 <elliott_> ais523: confirm/deny
17:53:22 <kallisti> ais523: probably too insane to do either.
17:53:25 <kallisti> er
17:53:28 <kallisti> elliott_: ^
18:06:20 <nooga> is prototype inheritance in JS a real, built-in language fearture?
18:06:23 -!- zzo38 has joined.
18:06:27 <nooga> or just a stupid hack?
18:07:34 <elliott_> JavaScript prototype inheritance is a language feature. I'm not sure how that's related to whether it's a stupid hack or not.
18:08:58 <ais523> kallisti: /all/ Feather interpreters are written in Feather
18:09:04 <ais523> if they weren't, they wouldn't be Feather interpreters, by definition
18:09:27 <ais523> this confused me for a bit, before I realised that you could write a Feather interp as a polyglot between Feather and some other language
18:09:33 <ais523> and as long as everything had the same meaning, it'd work fine
18:10:50 <kallisti> ..
18:10:55 <nooga> elliott_: But is it in the language itself or just in the runtime that could be altered? How is it different from prototype inheritance implemented in C? Would this make C object oriented? :D
18:11:06 <kallisti> ais523: you realize that doesn't really make any sense at all right?
18:11:16 <elliott_> nooga: (a) it is part of the language itself. it must be implemented in the runtime, of course, like all language features.
18:11:17 <nooga> I'm asking because I have an argument with guy that states that JS is legit OO language
18:11:27 <elliott_> nooga: (b) C does not have prototypes...
18:11:31 <ais523> kallisti: there is a reason that Feather drives people who attempt to understand it crazy
18:11:40 <ais523> I think you're beginning to see the edges of it
18:11:42 <elliott_> nooga: of course JS is an object-oriented language.
18:11:47 <elliott_> nooga: Do you know of Self?
18:11:56 <nooga> yeah
18:12:06 <ais523> the reason it's so maddenning is that you're constantly struggling with the issue of whether Feather makes sense or not
18:12:14 <ais523> nooga: also, you can do OO quite well in C
18:12:21 <nooga> ais523: i know taht
18:12:31 <nooga> but it does not make C an OO language
18:12:34 <nooga> and that's my point
18:12:37 <ais523> you can even setup vtables by hand and get it working exactly like a saner version of C++ if you like
18:13:08 <elliott_> nooga: JavaScript has language support for objects with self-reference and constructors. JavaScript has built-in language support for prototypes via the <obj>.prototype functionality.
18:13:09 <nooga> ais523: I've read a book about it
18:13:19 <elliott_> It is unquestionably a real object-oriented language based on prototypical inheritance.
18:13:42 <elliott_> It's also not a very good language in general, but that's an orthogonal issue.
18:13:55 <nooga> elliott_: understood
18:14:00 <ais523> elliott_: how does JS do delegation, or the equivalent? I seem to remember something like making the prototype a function that looks at the superobject's prototype
18:14:22 <elliott_> ais523: I don't remember exactly how it works; I've tried to forget as much JS as possible.
18:14:27 <nooga> http://ejohn.org/blog/simple-javascript-inheritance/
18:14:33 <nooga> but this is just completely wrong
18:14:51 <elliott_> nooga: That's just syntactic sugar.
18:14:54 <nooga> i could write OO programs in C with less syntactic clutter
18:14:55 <elliott_> Well.
18:14:57 <ais523> elliott_: why do you hate JS as much as you do? I don't understand it well enough to truly hate it
18:15:03 <elliott_> Half syntactic sugar for delegation, half attempting to make it look like class-based inheritance.
18:15:28 <elliott_> ais523: I don't really hate it, it's just not very pleasant to use; a large part of that is because browser APIs, especially the DOM, are terrible.
18:15:33 <ais523> elliott_: well, class-based inheritance is a special case of prototype-based inheritance
18:15:34 <elliott_> ais523: But also its scoping is awful.
18:15:44 <ais523> elliott_: isn't it block-scoped?
18:15:47 <ais523> well, sometimes?
18:15:50 <ais523> oh, I see what you mean
18:16:00 <elliott_> ais523: no
18:16:02 <elliott_> ais523: it's function-scoped
18:16:09 <ais523> ouch
18:16:13 <ais523> seriously?
18:16:16 <elliott_> ais523: for (var i = ...; ...; ...) { ... }; /* surprise, i is still in scope! */
18:16:25 <elliott_> (and any previous "i" in the function overwritten)
18:16:40 <ais523> what about {for (var i = …; …; …) { … };} /* is i still in scope here? */
18:16:46 <elliott_> i don't think that's valid
18:16:47 <elliott_> people do
18:16:50 <elliott_> (function() { ... })()
18:16:52 <elliott_> for closures
18:16:54 <ais523> wow
18:17:03 <elliott_> another thing I dislike about JS is how lax and implicit its coercions are
18:17:06 <elliott_> and conversions, too
18:17:17 <ais523> hmm, that would be a fun use for C++ lambda syntax: [](){ … }()
18:17:26 <ais523> although {} works just as well in C++
18:17:42 <ais523> elliott_: that's just typical dynamic language typing syndrome
18:17:47 <ais523> at least, it's endemic to both JS and PHP
18:18:11 <elliott_> ais523: Python and Ruby don't suffer from it
18:18:16 <elliott_> ais523: Perl sort of does, but it's at least consistent about it
18:18:24 <ais523> Perl uses a different solution to the problem
18:18:28 <elliott_> because it separates its string and number operators strictly
18:18:37 <ais523> Python and Ruby make sure that values are always clear on their own type
18:18:39 <elliott_> "Some languages, such as Perl, began as scripting languages[3] but were developed into programming languages suitable for broader purposes. Other similar languages – frequently interpreted, memory-managed, or dynamic – have been described as "scripting languages" for these similarities, even if they are more commonly used for applications programming. They are usually not called "scripting languages" by their own users."
18:18:44 <elliott_> err, Perl users don't call it a scripting language?
18:18:44 <ais523> whereas Perl makes sure that contexts are always clear on their own type
18:18:54 <ais523> elliott_: I call it a scripting language when I use it for scripting
18:19:03 <nooga> haha
18:19:03 <ais523> something like TAEB, it doesn't really feel like I'm using a scripting language, though
18:19:20 <ais523> it feels like I'm using a not-really-designed-for-scripting subset of a scripting language
18:19:27 * elliott_ thinks Perl is probably okay for scripting, but wouldn't use it for anything non-scripty. /me also considers it a flaw when a language is only good at one
18:19:45 <elliott_> I agree, so I moved it. Not an admin tho so history will look weird. Elfguy 20:37, 16 August 2005 (UTC)
18:19:46 <elliott_> --[[Talk:Scripting language]]
18:19:49 -!- Klisz has joined.
18:19:52 <kallisti> elliott_: perl does have pretty good scoping rules though.
18:19:59 <kallisti> in regard to the above.
18:20:03 <kallisti> about JS scoping
18:20:04 <ais523> kallisti: nowadays
18:20:13 <elliott_> Perl is one of the few modern languages with proper dynamically-scoped variables
18:20:14 <ais523> it took multiple tries to get it right
18:20:30 <ais523> elliott_: Perl did what it usually does, and put every sort of scoping it could think of into the language
18:20:32 <kallisti> also, I believe Python is function-scoped as well for local variables.
18:20:46 <elliott_> it is
18:20:53 <kallisti> good.
18:20:54 <kallisti> ..
18:20:57 <elliott_> but at least variables can't be referenced before definition
18:20:58 <ais523> package scope, dynamic scope, lexical scope, you can even have truly global scope if you like (this requires you to name your variables starting with a control character)
18:21:00 <elliott_> (in js they're just undefined)
18:21:06 <elliott_> and at least it doesn't /pretend/ to have a declaration keyword (var)
18:21:20 <elliott_> ais523: control character? seriously?
18:21:28 <ais523> elliott_: yes; there's sugar to write it in ASCII
18:21:36 <elliott_> what sugar?
18:21:42 <kallisti> I like how Python is sometimes less strict than Perl, mainly regarding variable declaration (or lack thereof)
18:21:42 <ais523> ${^This_starts_with_control_T}
18:21:44 -!- derrik has joined.
18:21:49 <elliott_> awesome
18:21:50 <ais523> but it's stored as a literal control-T internally
18:21:59 <elliott_> kallisti: nothing's looser than strict/warningsless perl
18:22:23 <elliott_> incidentally, it's 2011; why doesn't perl have a flag to enable both strict and warnings?
18:22:30 <ais523> and you can put a literal control-T in the source, if you really want to
18:22:52 <kallisti> elliott_: I believe they want it to be module-specific. This is why the -w flag is discouraged.
18:22:56 <ais523> elliott_: because scripts where you want strict and warnings, which is ones that are longer than oneliners, are scripts where there's no big loss in writing "use strict; use warnings;"
18:23:13 <elliott_> ais523: the loss is that it takes time and annoys me :P
18:23:13 <kallisti> because -w is applied globally.
18:23:15 <ais523> whereas for the really insane golfing, poetry, etc, you probably want them off
18:23:18 <elliott_> kallisti: it is? seriously?
18:23:23 <kallisti> yes.
18:23:34 <ais523> kallisti: are you muddling it with -W, which is very very global?
18:23:42 <kallisti> maybe?
18:23:50 <kallisti> I thought -w turned on warnings in the perl interpreter
18:24:06 <kallisti> which is not a module-specific thing.
18:24:14 <nooga> i hate js fanboys
18:24:17 <ais523> -w sets the global variable ${^W}
18:24:18 <nooga> anc C++ fanboys
18:24:23 <ais523> which turns on warnings
18:24:28 <kallisti> so... yes?
18:24:29 <ais523> but it can be turned on and off scopely as usual
18:24:33 <nooga> and, especially, PHP fanboys
18:24:34 <ais523> it's just that most modules don't start "no warnings;"
18:24:43 <kallisti> right.
18:24:47 <ais523> so because -w changes the default warning setting from off to on, it affects them too
18:24:59 <ais523> -W turns on warnings regardless of "use warnings;" or "no warnings;" or ${^W} or anything
18:25:06 <kallisti> ah okay.
18:25:46 <ais523> (btw, you can golf ${^W} down to $^W because the name's one char long, and further to $ followed by a literal control-W)
18:25:59 -!- Klisz has quit (Quit: You are now graced with my absence.).
18:26:04 <nooga> Larry -Wall
18:26:23 <kallisti> elliott_: incidentally, aside from it being a requirement for certain uses of Getopt and $_ hacks, I haven't really used dynamic scope much in Perl.
18:26:26 <ais523> I can't remember what -a does
18:26:34 <ais523> and why would you turn on automatic line-ending handling twice?
18:26:41 <elliott_> kallisti: it's good for configuration settings, generally
18:26:47 <elliott_> for instance, whatever stdout is
18:26:58 <nooga> ais523: you know the options for Larry?
18:26:59 <elliott_> common lisp puts it to good use like that
18:27:22 <ais523> elliott_: in the Crawl codebase, I've seen a class whose objects are dynamically-scoped booleans, using RAII
18:27:34 <ais523> it really confused the person who asked me for help with it, because they didn't understand it
18:27:44 <elliott_> ais523: ouch
18:27:47 <ais523> if the code were RAIIing everywhere, it'd probably be fine, but it's the only bit of RAII I've seen in the code
18:27:55 <ais523> which just makes it more confusing
18:28:01 <elliott_> Awk Traps
18:28:01 <elliott_> Accustomed awk users should take special note of the following:
18:28:01 <elliott_> · A Perl program executes only once, not once for each input line. You can do an implicit loop with "-n" or "-p".
18:28:17 <ais523> -p is great for golfing
18:28:24 <kallisti> ais523: -a turns on autosplit mode. I'm not sure if someone else has already said this or not.
18:28:27 <ais523> to the extent that many programs, you actually write #!perl -p at the start
18:28:36 <elliott_> kallisti: nope
18:28:39 <ais523> kallisti: hmm, I thought that was -s, perhaps I was confused
18:28:46 * ais523 perldoc perlrun
18:28:49 <elliott_> ais523: I just find it funny that it has to be pointed out that lines run once
18:29:04 <ais523> ah, -a is autospit, -s parses command-line arguments
18:29:07 <elliott_> ais523: why not "man perlrun"
18:29:15 <ais523> elliott_: plenty of languages have an implicit loop
18:29:32 <ais523> also, because I'm used to perldoc nowadays for Perl-related things because it has all the manpages and more stuff beyond that
18:29:47 <ais523> you can use perldoc -f to get a section of perlfunc, you can't do that with man, for instance
18:29:54 <ais523> and perldoc and man produce identical output for the manpages
18:30:02 <elliott_> not identical
18:30:03 <ais523> I think; reasonably identical, at least
18:30:14 <ais523> oh, the wrapping's different
18:30:28 <ais523> I think I prefer right-ragged to ASCII-justified
18:31:00 <elliott_> the status bar is different, more importantly
18:31:04 <elliott_> anyway, if you prefer that, set man to do that
18:31:28 <ais523> elliott_: oh right, man's overriding my less settings, perlrun isn't
18:31:28 <elliott_> ais523: err, both are ragged-right here
18:31:36 <ais523> and, hmm, indeed
18:31:47 <ais523> man's normally justified, I just assumed it'd be for perl docs too
18:32:06 <ais523> presumably the manpages are actually generated as manpages, not via nroff
18:32:16 <ais523> but, hmm
18:32:23 <kallisti> `run echo 'open 0;print<0>' > quine.pl && perl quine.pl
18:32:26 <HackEgo> open 0;print<0>
18:32:40 <kallisti> totally pure guys.
18:33:00 <ais523> $ l `man -w perlrun`
18:33:17 <ais523> hmm, it looks like nroff
18:33:34 <ais523> .\" For nroff, turn off justification. Always turn off hyphenation; it makes
18:33:36 <ais523> .\" way too many mistakes in technical documents.
18:33:39 <ais523> ah, interesting
18:33:52 <ais523> it looks like some workaround for nroff specifically in pod2man
18:34:02 <ais523> it's conditioned on nroff being the implementation used, and wouldn't happen in groff or troff
18:34:08 <elliott_> what's the fastest way to forget how to write assembly code?
18:34:13 <elliott_> `rm quine.pl
18:34:15 <HackEgo> No output.
18:34:19 <ais523> elliott_: in which language?
18:34:27 <elliott_> spanish
18:34:40 <ais523> I think you'd have to learn how to write asm in spanish first
18:34:44 <ais523> in order to forget it
18:34:55 <elliott_> indeed
18:35:40 <elliott_> ais523: (what did you actually mean by that question?)
18:36:40 <ais523> which asm variant, I think I meant
18:36:40 <ais523> as in, x86 asm, 6502 asm, etc
18:37:09 <elliott_> x86(-64, ostensibly)
18:37:15 <ais523> I suppose if you wanted to forget asm for a particular platform, you could just learn it for another platform that's much nicer
18:37:20 <ais523> go work on SPARC asm or something for a while
18:37:28 <ais523> why do you want to forget x86 asm, incidentally?
18:38:00 <elliott_> ais523: to prevent me from trying to write a horrible thing
18:38:12 <ais523> it might be easier to fix the reason rather than the immediate problem
18:38:12 <ais523> elliott_: oh, err, uh-oh
18:38:12 <ais523> elliott_: you'll fail
18:38:23 <ais523> (if I demoralize elliott_ enough, that'll have the same effect with less pain)
18:38:44 <ais523> elliott_: writing a horrible thing will make you a worthless human being, even if you succeed; especially if you succeed, possibly more so if you fail
18:39:05 <elliott_> ais523: see, now what'll happen is I'll end up writing it anyway, and then I'll get all sad because you're mean
18:39:10 <elliott_> LOOK AT WHAT YOU HAVE DONE
18:39:18 <ais523> elliott_: you don't want to make me mean, do you?
18:39:28 <ais523> not even retroactively? especially not retroactively?
18:39:42 <elliott_> !feather ais523->mean = true
18:39:51 <ais523> that looks nothing like Feather
18:40:02 <ais523> you'd have to <<= me with a slightly modified ais523
18:40:04 <elliott_> you can change Feather's syntax, can't you?
18:40:07 <ais523> probably through a wrapper function, to prevent a time loop
18:40:18 <elliott_> !feather loads the Alternate Standard Feather Library which is more popular nowadays
18:40:23 <elliott_> that reskins the syntax
18:40:25 <ais523> elliott_: well, yes, I guess, but at some point it stops being Feather, and starts being a different language with similar semantics but different syntax
18:41:02 <elliott_> ais523: changing <<= to = and adding sugar for record access doesn't seem that drastic
18:41:24 <ais523> hmm, I guess so
18:41:29 <ais523> but that'd be negative sugar
18:41:36 <ais523> as you would need just a space there for record access, typically
18:41:54 <elliott_> ais523: in the future, people like to put spaces in identifiers
18:42:05 <elliott_> so that was added to the ASFL due to popular demand
18:42:06 <ais523> also, hmm, I wonder if the value of ais523 mean would be shared with other values
18:42:07 <elliott_> retroactively
18:42:34 <ais523> you could do "ais523 mean <<= true" (and probably get yourself stuck in a time loop), but if it was sharing with other booleans at the time, that'd be equivalent to "false <<= true", which, umm, is probably a bad idea
18:42:46 <ais523> (this is assuming you have sugar for false and true, which you probably do)
18:43:02 <ais523> false <<= true looks set to be even more fun than false become: true
18:43:25 <elliott_> what happens if you do, e.g., x <<= [x] where [x] is the singleton list of x?
18:43:33 <elliott_> Feather rapidly allocates memory?
18:43:36 <ais523> it doesn't recurse
18:43:46 <ais523> you get a list containing the metaold value of x
18:43:57 <ais523> however, that point in the code would be evaluated again, unless something stopped it
18:44:07 <elliott_> ais523: hmm, is there any way to make a cyclic structure in Feather?
18:44:21 <ais523> <<= is incredibly unsafe; if it doesn't change some previous control flow behaviour of the program, you get a time loop
18:44:42 <ais523> so people will probably normally use sugar around it to use some safer operation, such as "add currently nonexisting method"
18:45:08 <ais523> elliott_: the trick would probably be to use the arbitrary number
18:45:10 <kallisti> s/people/ais523/
18:45:28 <ais523> you can't have a true cyclic structure, but you can have a retroactively cyclic structure
18:45:52 <kallisti> in any case my 4D logical graph rewriting language is going to.. what's the word.. baller.
18:45:56 <nooga> oh
18:46:09 <elliott_> ais523: Feather concurrency sounds like fun
18:46:14 <nooga> anyone taking part in ioccc ?
18:46:18 <ais523> (that is, any test you perform to try to demonstrate it not cyclic, it retroactively becomes just cyclic enough to prevent that test working; if you do something that would be an infinite loop on a cyclic structure, you get an infinite loop)
18:46:21 <elliott_> nooga: Gregor and ais523
18:46:23 <ais523> nooga: I am, Gregor is
18:46:30 <kallisti> I do feel like writing something in C
18:46:44 <kallisti> just not sure if I want to write obfuscated C, or why I would bother trying to make an entry.
18:46:53 <elliott_> ais523: here's a fun concurrency strategy: if conflicts occur, retroactively use a different ordering of threads instead
18:46:59 <Phantom_Hoover> OMG I missed Featherchat???
18:47:04 <ais523> elliott_: brilliant
18:47:07 <elliott_> kallisti: fame and glory
18:47:12 <ais523> really, I'm not going to even attempt concurrency in Feather
18:47:15 <zzo38> Just write whatever in C according to the program you want to write specifically
18:47:22 <Gregor> kallisti: May as well not bother, as I'm going to win.
18:47:26 <ais523> it's sort-of like trying to do concurrency in Haskell, only worse
18:47:29 <ais523> Gregor: there are multiple winners
18:47:44 <Gregor> ais523: Only one "best in show" (or whatever they call it)
18:47:45 <elliott_> ais523: concurrency in haskell works brilliantly
18:47:49 <ais523> Gregor: I'm not aiming for best in show
18:47:51 <elliott_> tyvm
18:47:58 <ais523> but for small program, and rules abuse
18:48:15 <ais523> elliott_: indeed; but you need external libraries, or else for the compiler to deduce it as an optimisation
18:48:20 <Gregor> ais523: Actually, I want them to invent a category for me.
18:48:24 <ais523> (external = not writable in Haskell)
18:48:25 <Gregor> But failing that, I'll take best in show X-P
18:48:35 <elliott_> ais523: by "concurrency", I just meant lock-step or whatever
18:48:38 <elliott_> not native threads
18:48:42 <ais523> hmm, right
18:48:47 <ais523> you'd have to change the entire execution model of the program
18:48:55 <ais523> but the worrying thing is, this is Feather, and you can actually /do/ that
18:49:01 <Phantom_Hoover> <kallisti> in any case my 4D logical graph rewriting language is going to.. what's the word.. baller.
18:49:09 <Phantom_Hoover> Graphs are nondimensional you eejit.
18:49:28 <kallisti> okay fine well what's a graph except now it has distances in a 4D space.
18:49:46 <ais523> kallisti: a labeled-edge graph?
18:49:59 <ais523> (do the positions matter in 4D? or just the distances?)
18:50:07 <kallisti> oh? a labeled-edge GRAPH you say?
18:50:10 <Phantom_Hoover> kallisti, distances?
18:50:11 <Phantom_Hoover> What?
18:50:14 <kallisti> ais523: the position I think?
18:50:23 <kallisti> maybe just distances? both? -shrug-
18:50:23 <Phantom_Hoover> Graphs... don't have distances inherently.
18:50:36 <ais523> Phantom_Hoover: indeed; but you can certainly define a sort of graph that does
18:50:36 <kallisti> Phantom_Hoover: believe it or not I am actually familiar with graph theory
18:50:45 <ais523> and they are in fact useful
18:50:47 <Phantom_Hoover> You're just going to be assigning labels to edges based on some embedding of the graph.
18:50:54 <ais523> Phantom_Hoover: that's why I said labeled-edge graph
18:51:08 <Phantom_Hoover> Oh, right.
18:52:13 <Phantom_Hoover> kallisti, but why 4D?
18:52:17 <kallisti> I'm thinking only distances or relevant, so it may not really have 3 spatial dimensions.
18:52:25 <elliott_> 3 = 4
18:53:01 <kallisti> Phantom_Hoover: going for reversability, the 4th dimension would be forward and backward in computation steps.
18:53:05 <Phantom_Hoover> My guess is that the only thing actually having an embedding somewhere is going to change is the fact that the triangle inequality imposes limits.
18:53:13 <Phantom_Hoover> kallisti, um...
18:53:52 <ais523> Phantom_Hoover: nah, if you know nearly all the sides and diagonals of a hyper-n-gon, then that's going to lock in the location of the points, thus restricting the other sides and diagonals
18:54:06 <ais523> the value of n depends on the number of dimensions involved
18:55:08 <kallisti> in any case whether or not it actually corresponds to a 3 dimensional space is irrelevant. I don't think I'm going to keep track of position but instead just do distance relationships.
18:55:34 <Phantom_Hoover> But as ais523 says, you need to know position to tell if the distance relationships are meaningful.
18:55:59 <kallisti> meaningful in what sense? can't I just not care?
18:56:15 <ais523> you possibly can not care
18:56:16 <Phantom_Hoover> Sure, but then why call them distances at all?
18:56:22 <ais523> the problem is wondering about whether or not you have reason to care
18:56:24 <Phantom_Hoover> You're just assigning arbitrary numbers to edges.
18:56:36 <elliott_> ais523: argh, I'm trying to think of how the infinite division memory model works and it's so confusing
18:56:51 <ais523> as in, do you have a reason for them to act like distances? and if so, is it just triangle inequality, or do you need more than that?
18:57:01 <kallisti> ais523: not really no.
18:57:15 <Phantom_Hoover> ais523, BtW, your hyper-n-gon thing might just be a special case of the triangle inequality?
18:57:16 <kallisti> no reason for them to be distances.
18:57:21 <ais523> Phantom_Hoover: *general case?
18:57:32 <ais523> and it is, sort-of, but can lead to equalities as well as inequalities
18:57:33 <elliott_> f(x) = 1 : f(x) is easy to reject, because f^M(x) = 1 + f^M(x)
18:57:45 <Phantom_Hoover> No, I think the triangle inequality results in it?
18:57:49 <elliott_> "The worst example of this sort of thing in my lifetime, and arguably in the entire history of science, has been the AGW (anthropogenic global warming) panic. Now that the wheels are falling off that juggernaut, I’m starting to hear ordinary people around me wonder how I knew it was bullshit and hot air so much in advance…" --esr
18:57:54 * elliott_ gets popcorn
18:58:12 <ais523> ESR is a global warming denialist?
18:58:17 <elliott_> ais523: this surprises you?
18:58:18 <ais523> hmm, I'm not massively surprised
18:58:25 <ais523> I wouldn't have been surprised by the opposite either, though
18:58:45 <elliott_> think of an idiotic far-right libertarian position; if esr doesn't have it, you should be surprised
18:58:59 <ais523> but there are idiotic far-right libertarian positions that contradict each other
18:59:11 <elliott_> ais523: indeed
18:59:43 <Phantom_Hoover> I've discovered that the idiotic far-right libertarian at my school is a) crazy and b) probably an actual sociopath.
19:00:10 <kallisti> ais523: the nodes corresponding to a physical space was just an interesting idea, but the main proof of concept is the non-deterministic time-based shenanigans (we seem to be doing a lot of those lately)
19:00:23 <Phantom_Hoover> 'Lately'.
19:00:24 <elliott_> "Rhetoric that mixes science with the tropes of eschatological panic." actual quote
19:00:26 <ais523> yep, especially as I was playing Braid yesterday
19:00:38 <elliott_> Phantom_Hoover: lately?
19:00:44 <Phantom_Hoover> Feather transcends the timeline; ais has always not being developing it.
19:00:48 <elliott_> oh
19:00:54 <ais523> hey, I work on it sometimes
19:01:03 <ais523> I even did NEF just fine without getting very bad
19:01:04 <ais523> *very mad
19:01:06 <elliott_> ais523: is Braid actually worth playing? I've been put off by how pretentious the developer is
19:01:08 <ais523> although I'm not sure it's useful
19:01:16 <Phantom_Hoover> (I think I see '523' as ais' last name now.)
19:01:27 <ais523> elliott_: it's, umm, reasonably pretentious plotwise, but the graphics are pretty and the puzzles are interesting
19:01:38 <ais523> the "no filler" rule is really grating, though
19:01:42 <ais523> after a while you start wishing for filler
19:01:45 <elliott_> heh
19:02:04 <ais523> it's also very difficult
19:02:18 <ais523> which is arguably good, as it means you won't reach the ending, which is the most pretentious part
19:02:36 <Phantom_Hoover> :D
19:02:42 <elliott_> :D
19:03:02 <Phantom_Hoover> oklopol, come on, you're meant to join in there.
19:03:03 <elliott_> Phantom_Hoover: Can AII be a metaphor for globalisation please.
19:03:25 <elliott_> Like, after you finish the single-player campaign, "IT WAS GLOBALISATION ALL ALONG" pops up and you have to "OH I GET IT" to get back to the menu.
19:03:31 <Phantom_Hoover> Yes.
19:03:32 <kallisti> ais523: would a 3D space be easier to manage if I restricted the graph from forming cycles with its present edges. (think of present edges as just... normal graph edges)
19:03:42 -!- ais523 has quit (Read error: Connection reset by peer).
19:03:46 <elliott_> Phantom_Hoover: Except clicking "OH I GET IT" just makes it change into "VERY CLEVER".
19:03:48 <zzo38> I fixed another thing in Super ASCII MZX Town game
19:03:54 <elliott_> Phantom_Hoover: And you have to click it again.
19:04:07 -!- ais523 has joined.
19:04:32 <kallisti> < kallisti> ais523: would a 3D space be easier to manage if I restricted the graph from forming cycles with its present edges. (think of present edges as just... normal graph edges)
19:04:35 <ais523> [error] Closing Link: 147.188.254.189 (No more connections allowed in your connection class)
19:04:36 <ais523> ?
19:05:00 <kallisti> ais523: get off the internet, low-class scum.
19:05:04 <ais523> kallisti: yes, in fact you could do it even in a 2D space, but then you basically have a tree, not a graph (it becomes an actual tree if you give it a root)
19:05:38 <kallisti> ais523: wow, so a tree is like... a graph without cycles?
19:05:47 * elliott_ facepalm
19:06:00 <ais523> kallisti: that is the graph-theoretic definition of "tree", yes
19:06:15 <kallisti> (don't forget it's connected!)
19:06:17 <ais523> rooting it gives you the programming-language definition of "tree"
19:06:24 <ais523> well, OK, it's not a tree if it isn't connected
19:06:27 <ais523> it has to be connected to be a tree
19:06:34 <ais523> otherwise it's a forest (actual technical term)
19:06:36 <elliott_> "No more connections allowed in your connection class"
19:06:37 <elliott_> In English, this means the server is full for people like you, at least for now. People from different providers might still be able to connect. You might see this sometimes on servers that you were able to connect to just recently. Try a different port on the same server (other than 6667) or try a different server for a while.
19:06:39 <elliott_> how helpful
19:06:39 <zzo38> I made barrier monad transform now. newtype BarrierT f b m t = BarrierT { runBarrierT :: m (Either t (f, b -> BarrierT f b m t)) };
19:06:50 <ais523> "people like me"
19:06:52 <ais523> they exist?
19:06:55 <elliott_> lol
19:07:14 <kallisti> ais523: are you sure a tree has to have a root to be a tree in computer science? seems kind of arbitrary.
19:07:27 <kallisti> I mean, I know they typically do...
19:07:50 <elliott_> kallisti: it's not arbitrary; it's hard to define an ADT without one
19:07:56 <ais523> kallisti: I'm talking about the usual recursive definition in terms of trees having a possible value (perhaps only if they have no branches), and 0-n branches
19:07:59 <ais523> that naturally leads to a route
19:08:07 <ais523> *root
19:08:29 <ais523> you can imagine a sort of "doubly-linked tree" which wouldn't need one, but it probably wouldn't be very useful given the typical applications of trees in CS
19:08:39 <elliott_> ais523: that doesn't encompass, e.g. data Tree a = Branch (Tree a) (Tree a) | Leaf a
19:08:44 <elliott_> because n is fixed
19:08:53 <elliott_> <ais523> you can imagine a sort of "doubly-linked tree" which wouldn't need one, but it probably wouldn't be very useful given the typical applications of trees in CS
19:08:58 <elliott_> ais523: the closest thing is a tree zipper
19:09:01 <elliott_> which /is/ very useful
19:09:01 <kallisti> I honestly haven't considered efficiency at all for this language.
19:09:11 <elliott_> list zippers are what we use instead of doubly-linked lists, after all
19:09:34 <ais523> elliott_: right, indeed; I was talking about not needing a root, rather than not having the links back (which are potentially useful for reasons unrelated to rooting)
19:09:50 <kallisti> rewriting nodes based on whether or not they satisfy logical predicates in a huge graph that never shrinks is probably not going to be fast.
19:10:03 <ais523> also, the "n is fixed" is a special case; that's a binary tree, which is a case of a tree where n = 0 or 2
19:10:43 <elliott_> fair enough, but the n=2 case has no value
19:10:58 <elliott_> also, what about data Tree a = Branch a (Tree a) (Tree a) | Leaf? that has a value only when n=2
19:11:41 <kallisti> perhaps if I restrict the kinds of predicates that one can use, then I can make the lookup algorithm fairly efficient..
19:11:57 <ais523> elliott_: a conditional value is fine as well, I think
19:12:06 <ais523> conditional on n, or maybe even on something else
19:12:23 <ais523> kallisti: part of the reason I haven't implemented eodermdrome is that I can't think of an efficient way to do it
19:12:50 <kallisti> ais523: in particular I intend to restrict the rewrite rules so that subgraphs cannot be replaced in one rewrite.
19:13:11 <kallisti> well, single nodes are subgraphs I guess.
19:13:15 <elliott_> ais523: didn't oklopol come up with an efficient way? Phantom_Hoover?
19:13:25 <ais523> elliott_: I think oklopol was working on it, but I can't remember the outcome
19:13:40 <elliott_> I thought the efficient way has been well-known in here for ages.
19:13:56 <elliott_> ais523: can we delete [[Excela]] so people stop vandalising it?
19:13:58 <ais523> hmm, come to think of it, indexing by degree, and context degree up to n levels, would be pretty efficient
19:14:03 <elliott_> ais523: you should probably protect it, anyway
19:14:17 <ais523> elliott_: if it gets spammed much more, I'll put an appropriate protection level on
19:14:20 <ais523> is it anons or registered users?
19:14:23 <elliott_> ais523: it just got spammed
19:14:26 <elliott_> http://esoteric.voxelperfect.net/w/index.php?title=Excela&action=history
19:14:32 <elliott_> I don't think it's going to stop
19:14:34 <elliott_> and it's registered users
19:14:46 <elliott_> it's every three days, roughly
19:14:47 <kallisti> I'm thinking I could probably make it efficient if I restrict the kinds of rewrite rules and predicates that can be expressed, and by using other data structures besides a graph in the implementation, at the expense of more memory overhead.
19:14:52 <ais523> elliott_: you just made me revert your revert by mistake!
19:14:53 <elliott_> sometimes more often
19:14:55 * ais523 reverts
19:14:57 <kallisti> for a language that, as far as I can tell, does not ever free memory.
19:15:18 <kallisti> unless a garbage collection or manual memory management scheme can be created... but I have no idea how that would work.
19:15:35 <ais523> elliott_: with those spambots, in the past, all the spamming they've done has been confined to one article, but moves to a different one if you protect it
19:16:06 <elliott_> kallisti: most modern languages never free memory
19:16:28 <kallisti> ..wha? is this some weird technical distinction I'm missing?
19:16:40 <kallisti> I'm pretty sure they do.
19:16:48 <elliott_> no they don't
19:16:56 <elliott_> Python has no free(), Perl has no free()
19:16:57 <ais523> elliott_: do you mean "return memory to the OS" by "free"?
19:17:00 <elliott_> Ruby has no free()
19:17:02 <elliott_> Haskell has no free()
19:17:06 <elliott_> Common Lisp and Scheme have no free()
19:17:12 <ais523> ah, no, you mean "don't have an explicit command to free"
19:17:13 <kallisti> s/language/implementation/
19:17:18 <elliott_> ais523: no, I mean "don't free"
19:17:27 <ais523> elliott_: $x = undef; will free the previous thing that $x referred to if it was the only reference
19:17:32 <elliott_> the fact that most implementations optimise things by discarding memory that they can prove won't be referenced in the future is irrelevant tot he language
19:17:38 <elliott_> ais523: no it won't
19:17:45 <ais523> elliott_: and even run its finalisers
19:17:50 <kallisti> s/language/implementation/ --debate solved
19:17:53 <elliott_> well, finalisers are usually implementation-specific
19:17:58 <elliott_> and unpredictable
19:18:10 <elliott_> for instance, I bet Jython won't run finalisers if you do x = None
19:18:12 <ais523> elliott_: they're part of the language in Perl 5 and predictable; this sort of thing may be /why/ it only has one impl
19:18:14 <elliott_> because it doesn't use refcounting
19:18:23 <ais523> does Python even have finalisers?
19:18:30 <kallisti> yes.
19:18:35 <elliott_> __del__
19:18:40 <ais523> (also, is "finaliser" or "destructor" the more common name nowadays?)
19:18:49 <kallisti> destructor I believe
19:18:51 <kallisti> is what I see the most.
19:19:01 <elliott_> finaliser
19:19:07 <Phantom_Hoover> <elliott_> ais523: didn't oklopol come up with an efficient way? Phantom_Hoover?
19:19:17 <elliott_> destructor is Python jargon meaning something else, I think, which is why kallisti might see it more often
19:19:25 <elliott_> certainly I always see "finaliser" in memory-management texts
19:19:39 <kallisti> elliott_: no I see it in my Java and C++ classes as well.
19:19:40 <Phantom_Hoover> I concluded that implementing Ullman's algorithm with appropriate specialisations would get the match stage (the real time sink) down to polynomial time.
19:19:59 <ais523> I normally go with Java terminology for javaish-OO stuff, bceause Java's implementation on the javaish-OO world is quite large
19:20:05 <elliott_> Phantom_Hoover: I thought there was something simpler than that
19:20:14 <ais523> (we really need a name for the Java/C++/C#ish OO to distinguish it from Smalltalky OO)
19:20:18 <elliott_> ais523: well, they're called finalisers in java
19:20:22 <ais523> elliott_: I know
19:20:29 <elliott_> ais523: anyway, destructors are something subtly different, I believe
19:20:29 <ais523> that's why I used that name without really thinking
19:20:37 <elliott_> ais523: they're things you run explicitly
19:20:40 <elliott_> cf. C++
19:20:42 <ais523> even though you aren't meant to use finalisers in Java ever nowadays
19:20:45 <Phantom_Hoover> Well, Ullman's algorithm optimises subgraph matching down to polynomial if you have constant subgraphs.
19:20:49 <ais523> because they're so unpredictable
19:20:54 <Phantom_Hoover> Which is the case in Eodermdrome.
19:21:04 <kallisti> ais523: I think it's usually called class-based OO
19:21:06 <elliott_> ais523: why unpredictable? just because GC is?
19:21:09 <elliott_> kallisti: smalltalk is class-based
19:21:17 <kallisti> oh..
19:21:23 <kallisti> right. I was thinking of self and friends.
19:21:28 <ais523> elliott_: in Java, there's no guarantee that they're ever actually run at all
19:21:37 <elliott_> ais523: sure; that doesn't seem relevant to me
19:21:46 <ais523> and I'm not sure if it's purely GC-related
19:21:48 <elliott_> GHC's finalisers have the same property and they're used with abandon
19:21:48 <ais523> although it probably is
19:22:18 <ais523> also, hmm, what context do GHC finalizers run in? some suitable IO monad that's made to happen at an arbitrary time relative to other events?
19:22:39 <elliott_> http://hackage.haskell.org/packages/archive/base/4.4.1.0/doc/html/Foreign-ForeignPtr-Safe.html
19:22:53 <elliott_> your question is incoherent and contains type errors, so i'll just link you docs instead :P
19:23:01 <ais523> indeed, it contains type errors
19:23:10 <ais523> I missed that they aren't Haskell
19:23:21 <kallisti> elliott_: your mouth is a type error
19:23:26 <elliott_> ais523: huh?
19:23:41 <ais523> well, they're run via the FFI
19:23:42 -!- oerjan has joined.
19:23:43 <elliott_> oh, http://hackage.haskell.org/packages/archive/base/4.4.1.0/doc/html/System-Mem-Weak.html also has finalisers
19:23:45 <elliott_> ais523: no they're not
19:24:11 <ais523> "A finalizer is represented as a pointer to a foreign function…"
19:24:23 <elliott_> well, OK, but that's not relevant: http://hackage.haskell.org/packages/archive/base/4.4.1.0/doc/html/Foreign-Concurrent.html
19:24:35 <elliott_> and the System.Mem.Weak finalisers are just actions too
19:25:49 <ais523> so the answer is, they have to return a marshallable type, or an IO of a marshallable type
19:26:01 <ais523> and making them pure functions is obviously ridiculous, so in practice, they're IO actions
19:27:06 <Phantom_Hoover> Hey guys if you're libraring can you see if you can find an implementation of that algorithm.
19:27:55 <elliott_> ais523: huh?
19:27:59 <elliott_> <ais523> so the answer is, they have to return a marshallable type, or an IO of a marshallable type
19:28:03 <elliott_> this is wrong and/or makes no sense
19:28:31 <ais523> ah, I saw type FinalizerPtr a = FunPtr (Ptr a -> IO ())
19:28:42 <ais523> then looked up the definition of FunPtr, and saw its restriction on types it accepted
19:28:53 <ais523> and missed that FinalizerPtr had a stronger restriction (specificlaly, that it returned IO ())
19:28:55 <elliott_> ais523: you read wrongly
19:29:13 <elliott_> well, it's true that the types are always used that way in finaliser use
19:29:16 <ais523> elliott_: look, it's pointless linking me to docs if you're going to disagree with everything that I glean from them
19:29:20 <ais523> even if I'm wrong
19:29:21 <elliott_> but it's quite irrelevant, since the FinalizerPtr takes a Ptr
19:29:33 <elliott_> so it's irrelevant whether the a being finalised is marshallable or not
19:29:51 <ais523> I didn't say it was relevant
19:29:55 <ais523> I was talking merely about the return value
19:29:57 <ais523> which is IO ()
19:29:57 <elliott_> ais523: I link you to documentation because I can't think of any way to answer your question because it doesn't make any sense; I can just ignore false things you deduce from it if you want *shrugs*
19:30:39 <ais523> the return value is IO (), the argument isn't IO anything, thus the finalizer is an IO action
19:30:43 <ais523> which is what the question was in the first place
19:30:54 <elliott_> err, "the argument isn't IO anything"?
19:32:01 <ais523> elliott_: a function of type IO a -> IO a isn't really an IO action
19:32:09 <elliott_> functions aren't IO actions
19:32:15 <elliott_> IO actions look like IO a for some a
19:32:28 <ais523> ah, aha
19:32:29 <elliott_> (id m :: IO a) for some m, a is certainly an IO action
19:32:33 <ais523> terminology clash?
19:32:37 <elliott_> and (IO a -> IO a) is certainly a function from an IO action to an IO action
19:32:53 <ais523> the IO /value/ is what's referred to as the action
19:32:56 <elliott_> ais523: no, just the typical non-Haskeller mistake of assuming something like (IO a) is a "function of 0 arguments"
19:33:07 <elliott_> thus assuming that if (IO a) is an action then (... -> IO a) must be too
19:33:13 <elliott_> at least, that's how I usually see that mistake being made
19:33:22 <ais523> hmm, I think I might have made it based on different reasoning
19:33:27 <ais523> it's because of the whole do-sugar thing
19:33:43 <ais523> it's because you can >>= onto a function of type x -> IO a
19:33:51 <elliott_> well, OK
19:33:54 <ais523> and that's a behaviour of >>= rather than of IO
19:34:00 <ais523> but it feels like a behaviour of IO unless you concentrate
19:34:07 <elliott_> anyway, can anyone here get behind ACM paywalls who isn't too legalistic to share the spoils?
19:34:29 <elliott_> ais523: I think "join :: IO (IO a) -> IO a" may be clarifying, then, since you can use fmap/return/join instead of return/(>>=)
19:34:35 <zzo38> But of course there is more than >>= since there is also fmap, join, <$>, <*>, and so on
19:34:44 <ais523> elliott_: even people who can get behind the paywalls, it's heavily DRMed
19:34:56 <ais523> so I'm not entirely sure copying the resulting file would work, although it probably would to some extent
19:34:59 <elliott_> ais523: i.e., "if you have an IO program that produces another IO program that produces an a, then you can turn that into an IO program that produces an a (by just executing the program you get out of it)"
19:35:14 <elliott_> ais523: also, I'm pretty sure it would, since people regularly get pdfs behind paywalls for others...
19:35:24 <elliott_> oh, never mind, foudn it
19:35:25 <elliott_> found it
19:35:33 <ais523> my guess is you'd be able to read it, but need a hacked PDF reader to be able to do anything but read it
19:35:42 <ais523> perhaps it'd allow printing, if you were lucky
19:35:46 <elliott_> ais523: "hacked"? lol!
19:35:51 <elliott_> ais523: you realise that no pdf reader apart from like
19:35:53 <elliott_> acrobat and xpdf
19:36:00 <elliott_> actually obey the drm bullshit
19:36:00 <ais523> respects the DRM?
19:36:14 <zzo38> Retype it if you need to...
19:36:18 <ais523> elliott_: in that case, they're illegal in the US, or some such nonsense
19:36:29 <elliott_> ais523: I doubt that very much
19:37:08 <ais523> the DMCA is kind-of ridiculous
19:37:15 <ais523> it's much the same thing as libdvdcss, just on a smaller scale
19:37:39 <ais523> (in that instead of heavy encryption, it's just a note saying "please")
19:37:39 <Phantom_Hoover> <elliott_> anyway, can anyone here get behind ACM paywalls who isn't too legalistic to share the spoils?
19:37:59 <Phantom_Hoover> I have several friends in university who probably have access.
19:38:03 <Vorpal> <kallisti> Sgeo: updersation between itidus21, Vorpal, and kallisdeet <-- what?
19:38:05 <elliott_> ais523: you should delete evince, it's clearly illegal :)
19:38:09 <elliott_> Phantom_Hoover: Dude, I just linked you to the pdf.
19:38:18 <Phantom_Hoover> Yes, it was a general thing.
19:38:22 <ais523> elliott_: this sort of thing is why I refuse to go to the US :)
19:38:42 <elliott_> ais523: I'm sure we have something draconian enough to outlaw it
19:38:42 <ais523> also, why I didn't take any sort of computer with me to Canada, although that was at least just as much a distrust of airports
19:39:22 <ais523> I spent a week without Internet access there (except for a few minutes when I sneaked onto one of the computers the lecture hall used for projecting stuff on the screen; an old trick)
19:39:31 <Vorpal> heh
19:39:42 <ais523> without even usable phone, either, mobile or landline
19:40:09 <ais523> (there were payphones, but they took around 5 minutes to calculate the cost of a call to the UK, and then quoted an amount so large it'd have been really awkward to pay using coins)
19:42:28 <elliott_> OK, ais523 has to hear my terrible idea now because it'll either help me forget about it, or reassure me that I'm not the only one suffering
19:42:44 <ais523> elliott_: you have found your own Feather :)
19:43:16 <elliott_> ais523: a simple POSIX-alike where everything is run in ring 0 with @-style techniques; memory access requires checking that it's owned by the process
19:43:34 <ais523> enforced how?
19:43:41 <ais523> a ring 0 process could trivially change the perms
19:43:48 <elliott_> I /think/ it would end up more efficient than traditional implementations, because a branch per RAM access is cheaper than the syscall overhead
19:43:49 <ais523> oh, statically
19:44:02 <elliott_> ais523: yep; although I was also considering if hardware virtualisation stuff could do it
19:44:03 <ais523> you verify that the program is itself doing access checks on itself
19:44:05 <elliott_> since that's ubiquitous nowadays
19:44:08 <ais523> and don't run it if it doesn't
19:44:13 <ais523> that feels strangely evil
19:44:18 <elliott_> ais523: well, I was just going to make a C compiler do it
19:44:24 <elliott_> and have it be trusted
19:44:29 <elliott_> but checking the binary would be viable, too
19:44:32 <ais523> yes, but what it does to the poor binary is beautifully ridiculous
19:44:47 <ais523> it'd be the age of lawful programs
19:44:56 <ais523> don't do anything without checking it's legal first, even though they /could/
19:45:01 <elliott_> ais523: oh, and if the compiler is trusted that lets it optimise out certain checks
19:45:09 <ais523> indeed
19:45:18 <elliott_> e.g. a = malloc(...); if (a) { ... *a ... } -- you don't need to check a afterwards
19:45:21 <elliott_> in the block
19:45:23 <ais523> that sounds like a recipe for exploiting compiler bugs
19:45:28 <elliott_> ais523: yes, indeed
19:45:35 <elliott_> ais523: compiler bugs can already lead to exploits, though
19:45:42 <elliott_> if a daemon running as root is miscompiled
19:45:44 <ais523> again, indeed
19:46:04 <ais523> probably less likely to be exploitable on average, but it's still a qualititative difference
19:46:14 <elliott_> anyway, I'm tempted to do this because it sounds easier than @, and would be a neat proof-of-concept that some of its low-level details do increase efficiency
19:46:36 <ais523> hmm, I remember the paper that found that if a processor got even a single multiplication wrong, it would be possible to crack some sort of encryption (I forget what) done on it
19:46:36 <elliott_> and ofc with @ the risk for compiler bugs is reduced since it's not based on "checks" for safety, but safety-by-design using the object capability model and the type system
19:46:42 <elliott_> heh, neat
19:46:43 <elliott_> brb
19:46:44 <kallisti> There is no statement of there ever being any male Sheikah since the true gender of Sheik is debated by many fans.
19:46:47 <ais523> assuming you can get it to encrypt arbitrary text for you, or something like that
19:46:50 <kallisti> s/fans/slash fiction writers/
19:47:14 <ais523> kallisti: I think it's mostly an issue of semantics
19:47:21 -!- zzo38 has quit (Quit: zzo38).
19:47:43 <ais523> this reminds me of the argument over Metroid Prime's gender (he, she, it are all viable options with plausible arguments makeable for them; plot-wise, it doesn't matter in the least)
19:47:55 <kallisti> the thing about Sheik though
19:47:59 <kallisti> is that Sheik is Zelda
19:48:00 <ais523> and, by extension, Dark Samus'
19:48:13 <kallisti> and it doesn't explicitly mention anything about Sheik actually being male
19:48:14 <kallisti> so
19:48:18 <ais523> kallisti: I'd be very surprised if that prevented people writing Sheik/Zelda slashfic
19:48:19 <kallisti> I would just kind of assume
19:48:32 <kallisti> that Sheik is a female, like Zelda, since they're the same person
19:48:37 <ais523> Sheik was deliberately made with a male 3D model
19:48:46 <ais523> but that was to keep the Sheik=Zelda thing secret from the player until right at the end of the game
19:48:48 <kallisti> sure MAGICAL GENDER CHANGING is possible but... not mentioned so not canon.
19:49:11 <ais523> I think the most plausible argument is that Zelda is just very good at disguising herself, even if it includes cross-dressing
19:49:25 <kallisti> basically I think some people just want Sheik to have a penis.
19:49:39 * kallisti nods.
19:50:21 <kallisti> or like, they played the game thinking Sheik was a male and then when it was revealed they.... resisted changing their mind or something?
19:50:38 <ais523> perhaps
19:51:29 <kallisti> though you could argue that there may be magic involved, since sheik has different eye color (red, like a Sheikah)
19:51:41 <kallisti> maybe Zelda just has some awesome contacts though.
19:51:50 <kallisti> you know what's fun? speculation about video game characters.
19:51:54 <kallisti> so fun.
19:55:17 <Phantom_Hoover> kallisti, magic being involved is uncontroversial.
19:55:51 <Phantom_Hoover> Conservation of volume is presumably still conserved under normal circumstances, no matter how many bandages you use.
19:56:14 -!- calamari has quit (Quit: Leaving).
20:01:27 <elliott_> back; disappointed not to see "biarb" from ais523
20:02:10 <elliott_> kallisti: I find it odd to posit that magic is used for changing eye-colour but to consider it unreasonable to posit that magic was used to change a far more drastic change in bodily structure (note: I have never played a Zelda game for long)
20:02:26 <elliott_> ofc, this is unrelated to the question of gender
20:03:41 <elliott_> does anyone know much about AMD-V / Intel VT-x?
20:12:43 <ais523> elliott_: in Zelda games, magic exists but mostly only has a few defined effects
20:12:53 <elliott_> ais523: is changing eye-colour one of them?
20:12:56 <ais523> no
20:13:07 <ais523> but Zelda seems capable of unusual magical abilities
20:13:16 <elliott_> then my point stands :P
20:13:22 <ais523> so who knows what magic she can do
20:13:32 <ais523> I'm wondering if she was just using coloured contact lenses, though
20:14:37 <elliott_> thing it's hard to find information on: whether you can do hardware virtualisation in ring 0
20:14:42 <elliott_> as in, the code being virtualised runs in ring 0
20:15:30 <elliott_> ah, yes
20:15:34 <elliott_> that's what hardware virtualisation is for, it seems
20:20:29 <elliott_> ais523: hmm, I think what I'm doing is something like Xen, but where each program is an OS
20:20:40 <elliott_> and runs without a kernel
20:21:16 <ais523> this sounds like decent practice for @
20:21:55 <elliott_> ais523: yes, the only problem is that (a) I don't have a machine with the virtualisation stuff I need (b) it's literally all about low-level hardware details :)
20:23:01 <ais523> elliott_: I'm not sure if I should advise you to put @ off, or complete it now before you end up getting a job and not having time for that sort of large project
20:23:29 <elliott_> ais523: clearly the only solution is to have someone pay me to work on @
20:23:51 <elliott_> actually, I should write all but one line of @ while it's still in my head, and then write the last line whenever I need a Ph.D. handy :D
20:24:42 <ais523> elliott_: you can actually get a PhD entirely on work you've already done
20:24:49 <ais523> just, you're unlikely to get funded in that situation
20:25:03 <elliott_> heh
20:25:17 <elliott_> I think the main problem is that I'd have to write a book justifying @
20:25:23 <elliott_> actually, I've probably already done that in here
20:25:59 <ais523> the main problem is finding all the previous work on mildly related things
20:26:07 <ais523> to show how a) you were inspired by it, and b) it's different from what you're doing
20:26:33 <elliott_> ais523: I'm kind of already doing that by digging up everything related I can find to take inspiration from it :P
20:26:46 <ais523> elliott_: keep a record of it, then
20:26:53 <elliott_> that's the boring part :(
20:26:53 <ais523> citation details, at least
20:27:02 <elliott_> but I probably should at least have a bookmark folder or something
20:27:06 <ais523> nah, less boring doing it at the time when it's easy, then later when it takes a lot longer
20:27:07 <elliott_> since I keep losing things
20:27:14 <elliott_> ais523: s/then/than/, presumably
20:27:17 <ais523> err, yes
20:27:22 <ais523> grabbing citation details is quick and easy
20:27:33 <ais523> formatting them for consistency is the boring part, but that can easily be done much later
20:28:06 <elliott_> ais523: ooh, I know, I'll just do @ now, and then my Ph.D. can be /naming/ it
20:28:22 <elliott_> lots of graphs and statistics on the emotional response to various potential names
20:28:22 <ais523> hahahaha
20:28:33 <ais523> then it'd, umm, be a PhD in marketing
20:28:45 <ais523> which would be a bizarre thing for you to have
20:28:58 <elliott_> ais523: no, I'd, er, develop a New Kind of Name Generation Algorithm
20:29:04 <elliott_> that only works on @, for some reason
20:29:28 <ais523> elliott_: spambot-based naming?
20:29:39 <elliott_> perfect @ name generator algorithm that only works on @: get_current_os_name()
20:31:02 <ais523> but it only works on @ /after it's named/
20:31:13 <elliott_> ais523: it's not @ until it's named!
20:31:38 <ais523> wow, will this conversation look weird once @ /is/ named and we search-and-replace the logs
20:33:08 -!- GreaseMonkey has joined.
20:33:39 <elliott_> ais523: ooh, now i really hope Gregor does tha
20:33:39 <elliott_> t
20:33:53 <ais523> and clog's owners too?
20:34:09 <elliott_> ais523: clog will probably turn to rust before then
20:34:22 <ais523> but the logs will probably be backed up
20:34:24 <ais523> also, can IRC bots rust?
20:34:40 <elliott_> if any IRC bot can, clog can
20:35:28 <oerjan> it'll just eventually clog up
20:35:33 <elliott_> /kick oerjan
20:36:33 <oerjan> how rude
20:37:06 <shachaf> @ elliott_ You can't rewrite history!
20:37:19 <elliott_> My name is indeed @ elliott_.
20:37:21 <shachaf> @ ais523 I'm just going to start Twitter-addressing everybody.
20:37:24 <elliott_> I changed it after the completion of @ to honour it.
20:37:38 <elliott_> shachaf: that's not twitter-addressing, you need to omit the space, and also replace @ with an at sign
20:37:52 <shachaf> elliott_: With a what?
20:38:06 <shachaf> I don't know if I have it on my keyboard; you should type it so I can copy it.
20:38:33 <ais523>
20:39:07 <elliott_> shachaf: \@
20:39:13 <elliott_> (thankfully, the regexp will take escapes into account)
20:39:54 <shachaf> You could've picked a less common character...
20:41:14 <elliott_> shachaf:
20:41:15 <elliott_> [elliott@dinky esoteric]$ fgrep '\@' ????-??-??.txt | wc -l
20:41:15 <elliott_> 26
20:41:50 <shachaf> I mean, less common than '@'.
20:42:01 <ais523> `run fgrep '\@' ????-??-??.txt | wc -l
20:42:04 <HackEgo> fgrep: ????-??-??.txt: No such file or directory \ 0
20:42:08 <elliott_> shachaf: @ is the only thing that's right for it
20:42:09 <ais523> wait, I need to change the directory
20:42:11 <elliott_> everything else looks wrong
20:42:13 <ais523> `run fgrep '\@' logs/????-??-??.txt | wc -l
20:42:16 <HackEgo> fgrep: logs/????-??-??.txt: No such file or directory \ 0
20:42:20 <elliott_> `run fgrep '\@' /var/irclogs/_esoteric/????-??-??.txt | wc -l
20:42:20 <ais523> `ls
20:42:25 <ais523> aha, that's where it is?
20:42:39 <HackEgo> 31
20:42:44 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
20:42:59 <shachaf> `ls -F
20:43:01 <HackEgo> bin/ \ canary \ karma \ lib/ \ paste/ \ quotes \ share/ \ wisdom/
20:43:48 <elliott_> `? shachaf
20:43:50 <HackEgo> shachaf? ¯\(°_o)/¯
20:43:56 <elliott_> NOOOOOOO
20:43:57 <elliott_> `help
20:43:58 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
20:44:20 <elliott_> `run hg diff 1170 1171
20:44:24 <HackEgo> 1170: No such file or directory \ 1171: No such file or directory
20:44:28 <elliott_> `run hg diff -r 1170 -r 1171
20:44:31 <HackEgo> diff -r 0d97b97d3636 -r 1cc5d9c44760 wisdom/shachaf \ --- a/wisdom/shachaf.Sat Nov 26 18:17:45 2011 +0000 \ +++ /dev/null.Thu Jan 01 00:00:00 1970 +0000 \ @@ -1,1 +0,0 @@ \ -shachaf mad
20:44:42 <elliott_> `run hg diff -r 1170 -r 1171 | patch
20:44:45 <HackEgo> The next patch would delete the file shachaf, \ which does not exist! Assume -R? [n] \ Apply anyway? [n] \ Skipping patch. \ 1 out of 1 hunk ignored
20:44:49 <elliott_> `run hg diff -r 1170 -r 1171 | patch -R
20:44:52 <HackEgo> patching file shachaf
20:44:59 <shachaf> `ls wisdom
20:45:01 <elliott_> `run mv shachaf wisdom
20:45:02 <HackEgo> ​? \ ais523 \ augur \ banach-tarski \ c \ cakeprophet \ category \ elliott \ everyone \ finland \ finns \ fizzie \ flower \ friendship \ functor \ fungot \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ kallisti \ mad \ monad \ monads \ monoid \ monqy \ nooga \ oerjan \ oklopol \ phantom__hoover \ phantom_hoover \ php \ qdb \ qdbformat \ quine \ sgeo \ u \ vorpal \ welcome \ wiki \ you
20:45:03 <HackEgo> No output.
20:45:11 <shachaf> `? shachaf
20:45:14 <HackEgo> shachaf mad
20:45:21 <shachaf> Well.
20:45:33 * shachaf is flattered that you went to all that trouble.
20:45:34 <shachaf> `rm wisdom/shachaf
20:45:36 <HackEgo> No output.
20:45:37 <ais523> why not just re-add it by hand?
20:45:51 <ais523> it'd probably have been simpler
20:45:56 <Deewiant> `? banach-tarski
20:45:58 <HackEgo> ​"Banach-Tarski" is an anagram of "Banach-Tarski Banach-Tarski".
20:46:07 <elliott_> oerjan added that
20:46:09 <elliott_> I cannot be blamed
20:46:12 <elliott_> `revert
20:46:13 <HackEgo> Done.
20:46:14 <ais523> it's a good one
20:46:31 <ais523> elliott_: don't you need to revert 2? or does it just revert the last side-effecting command?
20:46:34 <ais523> `? shachaf
20:46:36 <HackEgo> shachaf mad
20:46:40 <ais523> ah, the latter
20:46:43 <elliott_> ais523: only mutating commands commit
20:46:52 <shachaf> `? c
20:46:54 <HackEgo> C is the language of��V�>WIד�.��Segmentation fault
20:46:54 <Vorpal> elliott_, like `quote ?
20:47:03 <elliott_> Vorpal: not any more
20:47:09 <shachaf> `rm wisdom/shachaf
20:47:11 <HackEgo> No output.
20:47:12 <shachaf> `hg commit
20:47:12 <elliott_> `revert
20:47:13 <Vorpal> elliott_, oh? Why did you remove that feature?
20:47:15 <HackEgo> abort: could not lock working directory of /hackenv: Read-only file system
20:47:19 <Vorpal> `? you
20:47:22 <elliott_> Vorpal: because it'd mess up transactional hackego :)
20:47:22 <HackEgo> you a haskell
20:47:26 * shachaf has no idea how to use hg.
20:47:29 <HackEgo> Done.
20:47:41 <shachaf> `rm wisdom/shachaf
20:47:41 <Vorpal> `? u
20:47:43 <HackEgo> No output.
20:47:45 <elliott_> `revert
20:47:45 <Vorpal> shachaf, stop it
20:47:47 <HackEgo> Done.
20:47:56 <shachaf> You stop it!
20:47:56 <HackEgo> u monad?
20:48:07 <shachaf> `cat bin/revert
20:48:09 <HackEgo> cat: bin/revert: No such file or directory
20:48:13 <elliott_> How is HackEgo talking withotu commands?
20:48:13 <shachaf> `rm wisdom/shachaf
20:48:15 <HackEgo> No output.
20:48:24 <Vorpal> shachaf, at least two people want to keep it. Me and elliott. That means a majority of us three.
20:48:36 <elliott_> It's okay, he can have it deleted.
20:48:40 <shachaf> Vorpal: I have extra votes because I'm me.
20:48:53 <Vorpal> elliott_, you just did that to annoy me. Good job :P
20:49:03 <ais523> shachaf: but kallisti has extra votes because he's Bjorn
20:49:26 <Vorpal> `help
20:49:28 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
20:49:32 <shachaf> Vorpal: The only reason you wanted to keep it was that elliott_ wanted it.
20:49:39 <shachaf> elliott_: You should get rid of the _.
20:49:45 <shachaf> It's grating on the fingers, you know.
20:49:45 <Vorpal> shachaf, come on. We two usually never agree on /anything/
20:49:58 <shachaf> Vorpal: Unless annoying a third party is at stake!
20:50:10 <Vorpal> shachaf, not really no
20:50:27 <ais523> shachaf: wait, you're annoying? I hadn't realised
20:50:35 <elliott_> X-D
20:50:41 <elliott_> Yes, shachaf is super annoy(ing|ed).
20:50:59 <shachaf> I hadn't either.
20:52:08 <ais523> <Oswald McWeany> Yeah, I was buying cell-batteries the other day and the retailer wanted me to enter a facebook user and password so it could automatically insert a facebook comment that I had purchased batteries from them.
20:52:37 <ais523> gah, my mind cannot comprehend the amount of stupidity in existence implied by that comment
20:52:44 <ais523> (not from the author, he clearly couldn't either)
20:53:23 <elliott_> ais523: if it makes money, it's not stupidity
20:53:29 <Vorpal> wow
20:53:40 <ais523> elliott_: I'm not convinced it's stupid from the retailers' point of view either
20:53:55 <ais523> but for it to be sensible from their point of view, implies a sufficient number of stupid people around that it actually makes a profit
20:54:59 <Vorpal> ais523, it could be an experiment to find out if that is the case?
20:55:00 <elliott_> ais523: well, it's not necessarily stupid to prioritise not being bothered by a retailer over very minorly annoying some people, considering how much noise facebook has anyway
20:55:05 <Vorpal> hopefully it is not the case
20:55:32 <ais523> elliott_: it /is/ stupid to give a username and password that you probably use for everything to a random retailer, though
20:56:15 <elliott_> ais523: well, OK, but I'd rather blame (a) the username/password model to start with and (b) the lack of proper computer security education, although (b) is massively impaired by the fact that the current systems are unusable (see (a))
20:56:39 <ais523> what model would be better than username/password, and also that people could be persuaded to use?
20:56:44 <elliott_> and there are situations where you have to give away your password; for instance, when trying to get my MacBook replaced, Apple demanded my password
20:56:53 <elliott_> which doesn't exactly educate people not to give their passwords away
20:57:11 <ais523> elliott_: err, what? that seems like a bizarre thing for them to want
20:57:22 <ais523> is that the login password to unlock the computer for the main user?
20:57:24 <elliott_> ais523: I tried notto think too much about it
20:57:29 <elliott_> and no, my Apple ID password
20:57:31 <elliott_> over the phone
20:57:35 <Vorpal> ...
20:57:37 <Vorpal> what
20:57:42 <ais523> ah, OK, probably to verify that you're an actual customer of theirs
20:57:53 <elliott_> yes, something like that
20:57:58 <ais523> a password to log in to the person at the other end of the phone is reasonable
20:58:07 <ais523> no obvious reason why they should be restricted to computers
20:58:15 <elliott_> yes, but it's still giving your password to someone else, so it's hardly surprising that people aren't averse to doing that
20:58:20 <ais523> other than salting/hashing being hard to do mentally
20:58:33 <Vorpal> ais523, hardware certificates + password entered on the hardware certificate device use to sign a response code. That should be better than classical user/password. Major PITA for anything except bank transactions and other high security stuff
20:58:35 <ais523> (actually, salting is easy)
20:58:49 <ais523> a password existing for the purpose of giving to specific other people is reasonable to give to those people
20:58:55 <elliott_> ais523: anyway, I don't know which model is necessarily better than passwords, but things like OpenID are a start, even if they have a password at the base of it; public key crypto is also promising
20:59:32 <Vorpal> elliott_, hardware certificates :P
20:59:42 <elliott_> Vorpal: a GPG key on a USB key integrated into your browser that asks for the passphrase when it's plugged in doesn't seem that bad to me
20:59:54 <elliott_> especially if the USB key doesn't expose the GPG key but just signs things as it
20:59:58 <Vorpal> elliott_, I was thinking along the lines of smartcard but sure
21:00:11 <ais523> elliott_: in that case, you can put a fingerprint reader on the USB device
21:00:25 <elliott_> ais523: everything i've read suggests fingerprint readers are completely insecure
21:00:27 <ais523> probably saves time over password memorisation, and you still have two factors
21:00:42 <ais523> elliott_: right, the problem is that they're too easily brute-forced
21:00:47 <Vorpal> fingerprint readers are insecure yeah
21:00:49 <elliott_> ais523: and copiable, I believe?
21:00:53 <ais523> but someone would probably notice brute-forcing in a shop
21:00:58 <Vorpal> you want an iris scanner!
21:01:12 <elliott_> ais523: true, but nobody wants an authentication mechanism that only works in shops
21:01:18 <ais523> ah, OK
21:01:31 <ais523> all biometrics are copiable for the same reason that all videos are copiable
21:01:38 <ais523> they have to be translated to data at some point, and you can copy that
21:01:51 <Vorpal> ais523, fingerprints are easy to copy however iirc
21:01:51 <elliott_> ais523: in a shop, something like logging in on a smartphone and passing an authentication to post a status update wirelessly seems like the most reasonable way to do something like this (not that it /should/ be done)
21:01:53 <ais523> and just use it directly rather than scanning it in
21:02:12 <elliott_> that way, the shop can't do anything at all apart from post one status update right then
21:02:15 <ais523> elliott_: hmm, perhaps the shop should have a QR code, and the smartphone scans that
21:02:23 <ais523> it probably knows the Facebook username/password already
21:02:25 <Vorpal> ais523, like if you have a laser printer + some stuff that is easy to get your hands on for not a lot of money you can copy a fingerprint
21:02:30 <elliott_> heh; I gather that QR codes aren't gaining traction because they're really ugly,t hough
21:02:33 <elliott_> *, though
21:02:34 <Vorpal> forgot the exact details
21:02:37 <ais523> you'd probably have to accept an authorisation popup first time
21:02:42 <ais523> elliott_: also, because they seem to have too much computational power
21:02:47 <elliott_> really?
21:02:49 <ais523> I heard a rumour of QR code trojans a while back
21:02:50 <Vorpal> elliott_, they are gaining traction here in Sweden, slowly.
21:02:57 <ais523> but I have no idea what level of social engineering that required to work
21:03:06 <elliott_> Vorpal: they might be a growing fad, but that doesn't mean they're gaining long-term traction
21:03:09 <elliott_> ais523: wow
21:03:12 <Vorpal> well sure
21:03:19 <elliott_> ais523: they only encode a small bit of textual data to my knowledge, so that's surprising
21:03:24 <ais523> it might have been as simple as "QR code points at website containing malicious software download"
21:03:55 <ais523> probably was, actually, and the media went crazy about it as usual
21:04:06 <coppro> definitely the former
21:04:11 <coppro> qr codes just encode data
21:04:28 <Vorpal> don't listen to mainstream media wrt viruses. They are bloody useless.
21:05:04 <elliott_> Vorpal: s/viruses/computers/
21:05:16 <elliott_> s/computers/anything/ (per Knoll's Law)
21:05:25 <elliott_> *Law of Media Accuracy
21:05:41 <ais523> Vorpal: well, this was tech media
21:05:45 <ais523> but they can be just as bad sometimes
21:05:51 <ais523> they just sound more like they know what they were doing
21:06:21 <Vorpal> elliott_, true
21:06:30 <Vorpal> ais523, heh
21:06:36 <elliott_> ais523: that's why you stick to respected institutions like The Register!
21:06:53 <ais523> elliott_: at least the Register is reasonably consistently biased
21:07:02 <ais523> (it has a strong pro-Paris-Hiltion bias)
21:07:02 <elliott_> heh
21:07:18 <elliott_> wat
21:07:37 -!- oerjan has quit (Quit: Good night).
21:07:43 <elliott_> Vorpal: do you know anything about x86 hardware virtualisation
21:08:20 <Vorpal> elliott_, yes
21:08:25 <Vorpal> elliott_, not much though
21:08:31 <Vorpal> elliott_, why?
21:08:52 <elliott_> Vorpal: well, I know it can be used to virtualise code running in ring 0
21:08:59 <elliott_> presumably it can be used to remap memory accesses by that code?
21:08:59 <Vorpal> yes and?
21:09:04 <Vorpal> hm
21:09:06 <elliott_> I know it can remap memory accesses by virtualised stuff in ring-3
21:09:33 <Vorpal> elliott_, no idea. Probably depends on if it is hardware stuff, in which case you need an IOMMU, which is not yet common on consumer (read: non-server) hardware
21:09:43 <elliott_> hmm
21:09:45 <Vorpal> as in DMA or such
21:09:45 <elliott_> http://en.wikipedia.org/wiki/Extended_Page_Table
21:09:48 <elliott_> I think this will work
21:09:55 <elliott_> "A separate set of page tables (the EPT tables) translate from guest-physical addresses to the host-physical addresses that are used to access memory."
21:10:03 <Vorpal> elliott_, sure
21:10:07 <Vorpal> elliott_, what about it?
21:10:11 <Vorpal> and why do you want it
21:10:13 <elliott_> well, it'll let me remap the memory
21:10:17 <elliott_> of ring-0 stuff being virtualised
21:10:26 <Vorpal> why are you virtualizing ring-0 stuff?
21:10:28 <elliott_> only Nehalem-onwards, but oh well
21:10:32 <elliott_> and looks like AMD implements the same thing
21:10:42 <Vorpal> elliott_, you want to use kvm. Because AMD and Intel use different models for it
21:10:45 <Vorpal> kvm abstracts that
21:10:49 <elliott_> Vorpal: no, I don't
21:10:55 <Vorpal> oh?
21:11:16 <elliott_> it's an OS ide I've had that is both significantly easier to do than @, and demonstrates/tests some of its low-level performance benefits
21:11:17 <elliott_> *idea
21:11:32 <elliott_> basically, it's a POSIX-ish kernel that runs everything in ring 0 that virtualises every process
21:11:36 <elliott_> (for security)
21:11:44 <Vorpal> heh
21:11:49 <Vorpal> but yeah
21:11:53 <Vorpal> my desktop can run that
21:12:03 <Vorpal> elliott_, I think virtualbox has it as a "nested page table" thingy
21:12:05 <elliott_> hmm, although, I'm not sure how expensive ring 0 stuff talking to the virtualisation code is
21:12:22 <Vorpal> elliott_, without that feature you just handle those page tables in you hypervisor software
21:12:24 <elliott_> if it's as expensive as a syscall, then my adventage is lost
21:12:39 <Vorpal> elliott_, might be more expensive
21:12:39 <elliott_> so if anyone knows the answer... let me know
21:12:47 <Vorpal> wouldn't surprise me
21:12:55 <elliott_> Vorpal: well, not much more expensive, at least, or Xen would be really slow
21:13:03 <elliott_> Vorpal: ISTR that running Linux under Xen is actually faster than running it natively
21:13:05 <elliott_> in certain scenarios
21:13:13 <Vorpal> heh
21:13:24 <Vorpal> I really want to see a citation on that
21:13:36 <elliott_> don't have one, I'm afraid
21:13:51 <Vorpal> elliott_, anyway linux has special code to run better as a guest
21:13:52 <elliott_> Vorpal: anyway, even if virtualisation isn't possible the OS idea will still work... I'll just go back to my original idea of building the checks into the compiled code
21:14:21 <elliott_> because I think a branch on every memory access will pay itself off by the vastly reduced syscall overhead
21:16:11 <elliott_> ais523: OK, your new job (changed from discouraging me to write this) is to make sure I continue writing it after I get a bootloader
21:16:18 <elliott_> I really like writing bootloaders
21:16:28 <ais523> haha
21:17:37 <elliott_> one of the main problems with @ is that it's not at all clear where it actually starts running
21:18:36 <ais523> presumably you have some outside-@ bootloader that just sets up for bits of disk to be swapped into memory so they can start running again
21:20:32 <elliott_> ais523: and then jumps where?
21:20:52 <ais523> to where the IP was the last time stuff got flushed to disk
21:20:53 -!- sebbu2 has changed nick to sebbu.
21:20:55 <ais523> which should be very recent
21:21:15 <ais523> in fact, it's going to be in the disk-flushing routines, which makes life rather easier
21:21:19 <elliott_> ais523: there's more than one IP, and there's more machine state than just RAM + registers
21:21:40 <elliott_> ais523: anyway, that doesn't work, because you need to set up more than that
21:21:44 <elliott_> timers, interrupts, and so on
21:21:47 <ais523> elliott_: well, it jumps to stuff to restore that, then to where stuff was
21:21:56 <ais523> the problem may be difficult, but it's easy to describe
21:21:56 <elliott_> (the IP of the disk-flushing stuff won't be stored)
21:22:06 <elliott_> (because it's run from a timer, and doesn't block anything)
21:22:13 <elliott_> (well, it does blockt hings, but not /everything/)
21:22:18 <elliott_> (it just causes a switch to another thread, mostly)
21:22:39 <elliott_> ais523: right, but where is that stuff? :)
21:22:52 <ais523> for proper orthogonal persistence, it has to be persisted
21:23:28 <ais523> alternatively, you could decide that some of it can't meaningfully be persisted (network driver state, for instance), in which case it'd be the driver's job to initialise it
21:23:44 <ais523> basically, look at what Linux does on hibernate/unhibernate; it's basically that
21:23:57 <elliott_> I know that much, but Linux unhibernate is too specialised
21:24:03 <elliott_> because it assumes all the structures and the like are the same
21:24:09 <Vorpal> <elliott_> because I think a branch on every memory access will pay itself off by the vastly reduced syscall overhead <-- depends on how IO-bound the code is.
21:24:11 <elliott_> @ can't assume that, it needs to have a completely generic bootloader
21:24:19 <Vorpal> for IO you traditionally need lots of syscalls
21:24:21 <elliott_> Vorpal: I disagree
21:24:36 <elliott_> Vorpal: even CPU-bound tasks that do, e.g. concurrency of any sort, have to do communication
21:24:49 <ais523> elliott_: it's not the bootloader's job to do most of the unhibernate
21:25:02 <elliott_> ais523: then whose job /is/ it, and how does the bootloader get to it?
21:25:22 <ais523> also, wrt the other conversation, concurrency primitives don't touch the kernel except when there's contention, nowadays
21:25:31 <Vorpal> elliott_, I'm considering the sort of heavy task I personally do a lot of. Which is stuff like optimising non-linear equations over thousands of data points for best fit.
21:25:37 <ais523> elliott_: it's the init scripts' job, IIRC
21:25:39 <elliott_> <ais523> also, wrt the other conversation, concurrency primitives don't touch the kernel except when there's contention, nowadays
21:25:41 <Vorpal> pure number crunching
21:25:44 <elliott_> ais523: yes, because syscalls are slow
21:25:45 <ais523> I can't remember if they're run by init directly during unhibernate, or some other way
21:25:49 <elliott_> and so removing syscall overhead sped things up
21:25:50 <ais523> elliott_: exactly
21:26:04 <ais523> but the point is, there isn't currently syscall overhead in that because it was removed a different way
21:26:16 <Vorpal> elliott_, avoiding checks on memory access by being smart in the compiler will certainly pay off for some tasks though
21:26:17 <elliott_> Vorpal: "tight loop of number crunching with a data set that fits into RAM and absolutely no concurrency whatsoever" is rare and becoming even rarer as multicore gets more and more ubiquitous
21:26:25 <ais523> so the issue is about how syscall-bound the program is
21:26:37 <elliott_> Vorpal: for a job like that, anyway, a /scheduler/ is a bottleneck
21:26:39 <ais523> Web of Lies gives you a really good idea of how syscall-bound a program is
21:26:46 <elliott_> and if you're not calling any syscalls, why not run it directly on bare hardware?
21:26:48 <ais523> as it has no timing effect on anything but syscalls
21:26:52 <Vorpal> elliott_, well yes.
21:26:53 <elliott_> so OSes are already working against tasks like that
21:27:00 <elliott_> nobody will care if they work against them a bit more
21:27:13 <ais523> elliott_: I've actually been wondering how @'s scheduler works, or if it has one, and if it doesn't have one what it does instead
21:27:25 <Vorpal> <elliott_> and if you're not calling any syscalls, why not run it directly on bare hardware? <-- because it is less convenient when debugging :P
21:27:55 <Vorpal> and usually you do some syscalls even in those cases. Load initial data set, write out final result
21:28:00 <Vorpal> at the very least
21:28:04 <elliott_> indeed
21:28:15 <elliott_> so reducing sysccall overhead helps there
21:28:18 <Vorpal> so that is like 3 syscalls minimum, one read, one write, one exit
21:28:22 <Vorpal> probably a few more
21:28:26 <elliott_> probably not as much as you lose, but it's likely that you do a bunch of read and writes
21:28:33 <elliott_> because a lot of datasets can't fit into RAM
21:28:40 <elliott_> at least, the datasets where you /really/ care about performance do
21:28:51 <elliott_> because a small change in constant factors has a large change on the end result due to the size of the data
21:28:56 <Vorpal> elliott_, the thing about those syscalls in this case is that they are one-time. They don't really vary that much between data sets of different sizes either. It is still a single read and a single write
21:29:02 <elliott_> Vorpal: see above
21:29:02 <elliott_> ais523: that's something I've been thinking about a lot recently
21:29:10 <elliott_> ais523: it definitely does have a scheduler
21:29:21 <Vorpal> elliott_, if your data set can't fit into your ram things are going to be horribly slow anyway
21:29:23 -!- Patashu has joined.
21:29:39 <Vorpal> elliott_, even without considering IO overhead disks are way slower than ram
21:29:47 <pikhq_> Vorpal: Most data sets don't fit in RAM.
21:29:50 <elliott_> Vorpal: not really, if you can do it in chunks of 8 gigs or so at a time...
21:29:56 <pikhq_> At least, most data sets you give a shit about.
21:29:59 <elliott_> assuming there's not too much interdependency
21:30:05 <Vorpal> pikhq_, indeed.
21:30:19 <elliott_> ais523: and, problematically, it needs a /really good/ scheduler
21:30:36 <pikhq_> In a land where heavy computing jobs go through a terabyte drive in a day, everything is IO bound.
21:30:37 <ais523> elliott_: with the caps to do anything
21:30:39 <Vorpal> anyway my /personal/ use case here is mostly stuff that fits into ram. Like 5-6 GB of data.
21:30:41 <elliott_> ais523: and it needs to handle millions of tasks (= processes/threads) running
21:30:54 <elliott_> ais523: oh, it's not a problem for such low-level code to have all permissions
21:30:58 <ais523> well, OK
21:31:00 <elliott_> although it doesn't need quite that many
21:31:22 <ais523> elliott_: it needs to be able to stick the IP in the middle of arbitrary code
21:31:28 <elliott_> ais523: basically I need tasks to be as cheap as lightweight threads in GHC(/Erlang/whatever)
21:31:57 <ais523> there's no real problem with a million-task scheduler with current technology; the issue is more adapting for various patterns of blocked/nonblocked
21:31:59 <Vorpal> yeah erlang have really light weight processes
21:32:08 <Vorpal> iirc ~300 words per thread + stack
21:32:08 <elliott_> Vorpal: not as lightweight as GHC, to my knowledge
21:32:21 <elliott_> at least speed-wise
21:32:22 <ais523> for handling operations like sleep, etc, you aren't going to do better than n log n (possible with a heap-like priority queue)
21:32:28 <ais523> is that going to be good enough?
21:32:30 <Vorpal> elliott_, quite possible
21:32:32 <elliott_> ais523: well, the problem is more memory usage
21:32:48 <elliott_> ais523: I need some subdivision of the massive heap to do effective GC
21:32:52 <Vorpal> just throw in more RAM. that is where computers are heading anyway
21:32:57 <elliott_> ais523: I want to be able to do copying, incremental GC
21:33:04 <ais523> elliott_: is the scheduler doing that?
21:33:05 <elliott_> ais523: tasks seem a reasonable unit to do that at
21:33:07 <Vorpal> elliott_, can't you have per-process heap for stuff not likely to be sent between threads?
21:33:07 <elliott_> ais523: no
21:33:10 <elliott_> ais523: but the point is, how do you divide it?
21:33:16 <elliott_> there's no concept of "process"
21:33:19 <elliott_> Vorpal: there's no concept of "process"
21:33:20 <Vorpal> elliott_, per task then
21:33:24 <elliott_> Vorpal: that's the problem
21:33:31 <ais523> I assume there is a concept of "unlikely to be sent to a different task", but it'd be quite hard to determine
21:33:42 <Vorpal> elliott_, or per unit that can be stopped independently from other units for GC tasks
21:33:43 <elliott_> my memory management strategy involved 2 mebioctets + 4 kibioctets per pool
21:33:47 <elliott_> in pages
21:33:50 <ais523> I suppose you could just use the generational GC approach, treating all data as that until it's actually sent to another task
21:33:51 <elliott_> that's not viable for millions of threads
21:34:01 <Vorpal> hm
21:34:03 <elliott_> 2 megs * 1 million = 2 terabytes
21:34:05 <elliott_> whoopsie!
21:34:12 <Vorpal> elliott_, do you need to split on whole pages?
21:34:13 <elliott_> (and this has to be in /RAM/, not on disk)
21:34:14 <ais523> elliott_: why not? just use a system where the address space is way bigger than the actual amount of memory
21:34:20 <elliott_> ais523: in /pages/
21:34:23 <ais523> although, x64 probably doesn't meet that requirement
21:34:25 <elliott_> that map to /physical RAM/
21:34:27 <Vorpal> elliott_, afaik erlang does not use a whole page per process
21:34:32 <ais523> elliott_: oh, physical, ouch
21:34:39 <elliott_> Vorpal: well, that was my memory management trick, to make an allocation take 2 cycles
21:34:43 <elliott_> and no branches
21:34:51 <elliott_> for allocations of less than 4 kilobytes
21:34:53 <Vorpal> elliott_, ... that might not be a good tradeoff
21:34:54 <elliott_> (= almost all of them)
21:35:06 <elliott_> Vorpal: it's an excellent tradeoff, it just means I can't have a pool per task
21:35:18 <elliott_> which brings up the question, how /do/ I divide pools?
21:35:18 <Vorpal> hm
21:35:31 <elliott_> note: two CPUs cannot allocate from the same pool at once
21:35:34 <elliott_> and I don't want to use locks
21:35:43 <elliott_> so I can't just say "oh, divide it between 100 tasks"
21:35:56 <elliott_> because those tasks will have vastly reduced concurrency
21:36:00 <Vorpal> a pool per cpu?
21:36:18 <Vorpal> or core or whatever
21:36:25 <elliott_> Vorpal: a CPU isn't really anything; this has to be of the real heap, which is of ~a terabyte in size
21:36:27 <elliott_> not RAM itself
21:36:31 <elliott_> because GC is done on the real heap
21:36:41 <Vorpal> elliott_, I don't see any reason why all the allocations of a single task have to come from the same pool
21:36:44 <elliott_> also
21:36:46 <Vorpal> if it is moved to a different CPU
21:36:49 <elliott_> that would tie tasks to CPUs permanently
21:36:53 <Vorpal> hm wait
21:36:55 <Vorpal> cache lines
21:37:01 <Vorpal> okay I see reasons
21:37:04 <elliott_> Vorpal: it's nothing to do with cache lines, but that's not what I said
21:37:13 <elliott_> the reason two CPUs can't use a pool is because there's a really nasty race condition
21:37:20 <Vorpal> elliott_, you don't want to share a page between two CPUs unless it is actually shared data :P
21:37:22 <elliott_> that could only be solved with a lock or slower CAS shit
21:37:27 <elliott_> which defeats my 2 cycle allocation strategy
21:37:38 <Vorpal> elliott_, when allocating yes. But not when /using/ said pages
21:37:48 <elliott_> that's what I said
21:37:50 <Vorpal> if you allocated offset 40-57 in the page
21:37:51 <elliott_> but
21:37:55 <Vorpal> you can use that freely
21:37:56 <elliott_> a program can allocate from its pool at any time
21:38:01 <elliott_> and a program only uses one pool at a time
21:38:05 <elliott_> (it's expanded when necessary)
21:38:08 <elliott_> (and is the unit of GC)
21:38:17 <Vorpal> elliott_, I suggest tying the pool to the cpu instead.
21:38:21 <Vorpal> but whatever
21:38:22 <ais523> elliott_: hmm, how common are allocations? and how common would they be if they were very cheap?
21:38:24 <elliott_> Vorpal: I just told you that doesn't work at all
21:38:28 <elliott_> Vorpal: _there is no CPU_
21:38:32 <Vorpal> elliott_, I don't think your GC design is viable.
21:38:35 <elliott_> it is
21:38:42 <elliott_> you just don't understand it
21:38:44 <Vorpal> not with millions of tasks
21:38:49 <elliott_> because you keep making references to "CPUs" and other things that don't exist
21:38:55 <ais523> also, hmm, how do you verify that a process doesn't access out-of-address-space when it's allocating memory dynamically
21:39:02 <elliott_> Vorpal: I never said I want a pool per task
21:39:04 <Vorpal> elliott_, what the fuck do you execute the damn code on then?
21:39:05 <elliott_> that's what I'm trying to avoid right now
21:39:08 <Vorpal> pink creepers?
21:39:14 <elliott_> Vorpal: lol, you're an idiot
21:39:23 <elliott_> Vorpal: you cannot make reference to CPU in the distribution of pools
21:39:32 <ais523> elliott_: CPU affinity is only meaningful wrt per-CPU cache, AFAICT
21:39:36 <pikhq_> elliott_: Then your memory model does not handle NUMA.
21:39:39 <Vorpal> elliott_, why?
21:39:43 <elliott_> pikhq_: w h a t
21:39:45 <ais523> and possibly, in the future, per-CPU RAM that isn't cache, but that's not standard yet
21:39:50 <Vorpal> and yes pikhq_ has a point
21:39:59 <ais523> however, I'm not convinced that per-CPU cache is unimportant here
21:39:59 <elliott_> Vorpal: I've decided explaining to you won't make you any less stupid, so I'm just going to answer ais523 instead
21:40:00 <Phantom_Hoover> NUMA?
21:40:05 <elliott_> <ais523> elliott_: hmm, how common are allocations? and how common would they be if they were very cheap?
21:40:07 <pikhq_> Non-Uniform Memory Access.
21:40:09 <elliott_> ais523: exceedingly common
21:40:11 <Vorpal> Phantom_Hoover, Non-uniform memory access
21:40:13 <Vorpal> like core i7
21:40:19 <elliott_> <ais523> also, hmm, how do you verify that a process doesn't access out-of-address-space when it's allocating memory dynamically
21:40:21 <elliott_> ais523: hm?
21:40:22 <Vorpal> at least with dual cpus (not cores)
21:40:44 <ais523> elliott_: say a process writes the equivalent of char* a = malloc(5); putc(a[7]);
21:40:54 <pikhq_> Wherein each CPU has its own memory (but can access that of others, though more slowly)
21:40:57 <ais523> hmm, that's not a huge problem, you could just insist on bounds checks everywhere
21:41:03 <ais523> and I think that'd be enough
21:41:11 <elliott_> ais523: it can't, and bounds checks aren't necessary
21:41:18 <Vorpal> pikhq_, I believe nehalem and after is that, rihght?
21:41:20 <Vorpal> right*
21:41:22 <ais523> elliott_: umm, I mean char[], not char*
21:41:24 <elliott_> ais523: the whole point of @ is that it doesn't run untrusted code
21:41:36 <pikhq_> Vorpal: For Intel, yeah.
21:41:38 <ais523> elliott_: I know; the question is, how do you determine whether such code is trustworthy
21:41:40 <Vorpal> pikhq_, yeah
21:41:45 <elliott_> ais523: umm, the capability model? come on
21:41:48 <ais523> and the answer, AFAICT, involves bounds checks, either runtime or statically
21:41:52 <Vorpal> pikhq_, I believe amd have on-cpu MMUs too?
21:41:55 <elliott_> ais523: if you can prove to the @lang compiler that you never access out of bounds, bounds checks can be omitted
21:41:56 <Vorpal> pikhq_, since even longer
21:41:59 <elliott_> ais523: for instance, length-carrying vectors
21:42:02 <Vorpal> didn't k8 introduce that?
21:42:05 <ais523> elliott_: yep, indeed
21:42:09 <ais523> that's what I meant by static bounds checks
21:42:09 <elliott_> there's no "checks" there, your program just doesn't type if it accesses things wrong
21:42:10 <pikhq_> Yeah, AMD's been doing NUMA a long freaking time.
21:42:15 <elliott_> ais523: I typed that before you said it
21:42:16 <ais523> I thought it was a problem, just realised it wasn't one
21:42:23 <Vorpal> pikhq_, and elliott_ has no clue about it...
21:42:28 <elliott_> Vorpal: lol
21:42:39 <pikhq_> 8 years now.
21:42:42 <elliott_> Vorpal: stop being a fucking moron and assuming that because you don't understand how @'s GC works, I know nothing about NUMA
21:42:45 <copumpkin> AMD Dragostea Din Tei?
21:42:55 <elliott_> copumpkin: lol
21:43:12 <Vorpal> elliott_, well pikhq_ had a point about you needing to use a local pool if possible or suffer bad speed.
21:44:00 <elliott_> that's irrelevant, since processes point to the abstract memory space.
21:44:13 <elliott_> if necessary, the pool can be loaded into the RAM of the CPU it's running on.
21:44:17 <Vorpal> hm
21:44:31 <Vorpal> elliott_, but you said there was no such thing as a CPU :P
21:44:50 <pikhq_> Vorpal: Insofar as virtual memory is concerned, there is no meaningful notion of "CPU".
21:44:56 <elliott_> Vorpal: because you kept trying to define pool allocation in terms of CPUs after I repeatedly told you that made no sense
21:45:01 <Vorpal> pikhq_, well obviously
21:45:02 <pikhq_> As the virtual memory space would be identical with 1 CPU or 1000.
21:45:03 <ais523> summary of elliott_'s arguments: CPUs are not a program-visible concept, in the cases where they're relevant that's handled by the memory allocator or pager
21:45:12 <elliott_> ais523: not exactly
21:45:18 <elliott_> you can't tie pools to CPUs because
21:45:24 <elliott_> (a) that'd mean tasks would be permanently tied to one CPU
21:45:24 <Vorpal> elliott_, I'm suggesting that as a way to avoid having as many pools *and avoid the race conditions*
21:45:32 <elliott_> (b) what the hell do you do for tasks on disk?
21:45:33 <Vorpal> elliott_, it means a completely different GC model though
21:45:35 <elliott_> you GC disk too
21:45:37 <elliott_> in units of pools
21:45:45 <elliott_> it makes no sense at all
21:45:59 <elliott_> Vorpal: well thanks, that's a really unuseful suggestion and also not what you actually said?
21:46:10 <Vorpal> <elliott_> (a) that'd mean tasks would be permanently tied to one CPU <-- no, the pool of the current cpu would be transparently used when allocating.
21:46:17 <Vorpal> and you could access any pool
21:46:25 <Vorpal> for stuff you already allocated
21:46:33 <Vorpal> <elliott_> (b) what the hell do you do for tasks on disk? <-- hm?
21:46:34 <elliott_> my GC model works perfectly fine with a decent way to allocate tasks, which you have so far not offered a single idea for, so I'm going to assume that you just don't understand the model, since you haven't asked for it or demonstrated any knowledge of it
21:47:11 <Vorpal> <elliott_> Vorpal: well thanks, that's a really unuseful suggestion and also not what you actually said? <-- it was exactly what I said
21:47:20 <pikhq_> elliott_: I vote you have a certain number of pools (based on RAM or disk size?), and when a thread starts it gets assigned the least used pool.
21:47:28 <elliott_> "pool per cpu durrr" != "<Vorpal> elliott_, I'm suggesting that as a way to avoid having as many pools *and avoid the race conditions*"
21:47:48 <Vorpal> elliott_, then you misunderstood me
21:47:55 <elliott_> sigh
21:47:58 <elliott_> this is pointless
21:48:02 <ais523> hmm, what's the reason for having more than one pool? I know it's a good one, but it'd probably make this clearer to have it spelt out
21:48:06 <Vorpal> elliott_, pikhq_'s idea makes sense
21:48:12 <Vorpal> elliott_, but you are likely going to ignore it
21:48:16 <elliott_> ais523: you can't do copying GC on a terabyte if you don't have another terabyte
21:48:34 <elliott_> Vorpal: i'm working on a response to him because he's not an insufferable shithead; you, on the other hand, are going on /ignore
21:48:42 <elliott_> fun fact: I can't type infinitely fast
21:49:00 <pikhq_> ais523: Incremental GC.
21:49:09 <elliott_> pikhq_: that's not viable, since GC of a pool pauses every task using that pool, and two tasks on the same pool cannot ever be run at the same time (= on different SMP CPUs)
21:49:13 <ais523> elliott_: hmm, OK; what's stopping you having half the memory as one pool, and the other half as the place it gets copied to? other than the wastefulness?
21:49:20 <elliott_> ais523: and you can hardly pause the entire OS while you GC an entire terabyte, either
21:49:24 <elliott_> that'd take an awfully long time
21:49:31 <ais523> ah, right
21:49:42 <elliott_> ais523: well, that's wasteful, but even then, doing a single atomic copying-GC on a terabyte pool -- on disk! -- would be insanely slow
21:49:55 <ais523> so, hmm, are you planning to go on a stop-and-copy architecture specifically? or some other sort of copying GC?
21:50:14 <elliott_> ais523: well, it'll be generational (pools will contain multiple generations, I think)
21:50:30 <elliott_> (and past a certain generation, they'll be dissociated from a pool entirely)
21:50:42 <elliott_> (so that really long-lived objects just sort of hang around on disk and are basically never touched by the GC)
21:50:59 <pikhq_> elliott_: That sounds like the limits of having multiple tasks per pool.
21:51:13 <elliott_> pikhq_: hm?
21:51:14 <pikhq_> And you already agreed that one pool per task isn't viable, so.
21:51:19 <elliott_> ais523: stop-and-copy seems the most viable strategy
21:51:32 <elliott_> ais523: although, it would be nice if you could have a tight loop with allocation that was guaranteed to never pause for long at all
21:51:51 <elliott_> ais523: so you could write things that really have to be realtimeish, e.g. small-buffer video/audio code
21:51:59 <elliott_> without having to avoid allocations (nearly impossible in @lang)
21:52:06 <pikhq_> What you need is a scheme for assigning task to pool, and so I gave you a simple one and claimed it was impractical because, basically, it would involve multiple tasks in a pool.
21:52:42 <pikhq_> Though: if you want to limit the stoppage, there's no reason for the pool assignment for a task to be *permanent*.
21:52:51 <Vorpal> pikhq_, I gave him another scheme for the same thing and he claimed it was impractical too. This discussion is being pretty pointless
21:52:52 <elliott_> pikhq_: well, you need to assign them with some intelligence
21:53:12 <elliott_> pikhq_: e.g., a cluster of 10 threads that "work together" in some sense to serve some larger task that started them, are probably OK to put on the same pool
21:53:22 <pikhq_> That's a fairly 'mundane' scheduling problem.
21:53:31 <elliott_> because they're "related", and so it doesn't matter if they don't run at the same time SMPly
21:53:41 <pikhq_> You get similar issues with trying to stick related tasks in the same NUMA group.
21:53:45 <elliott_> mm
21:54:02 <pikhq_> It's not exactly an *easy* problem, but it's at least a rather well-understood one, and not at all @-specific.
21:54:31 <elliott_> pikhq_: I wonder how fast I could get a concurrent allocator
21:54:47 <elliott_> I basically need an atomic form of {*y += n; x = *y;}
21:54:58 <elliott_> where x is a register and y is a memory location
21:56:18 <pikhq_> Definitely CMPXCHG.
21:56:35 <pikhq_> (x86's primary atomic instruction)
21:56:36 <Vorpal> pikhq_, that might need retrying if it fails
21:56:46 <Vorpal> isn't there an atomic increment?
21:56:52 <Vorpal> Not sure if it returns the old value
21:56:55 <elliott_> pikhq_: I have a feeling it's not going to be quite as fast as MOV + ADD
21:56:57 <Vorpal> or any value even
21:57:31 <pikhq_> elliott_: It is if there's no contention.
21:57:58 <elliott_> hmm, I'm not sure how cmpxchg would work, because you need to do an increment, not just a swap with some predetermined value
21:58:02 <elliott_> so it'll need some lock layering on top
21:58:48 <Vorpal> pikhq_, I presume elliott_ is actually ignoring me. But lock xadd might do the job
21:59:26 <Vorpal> unless I misunderstood the docs
21:59:35 <elliott_> which definitely won't be as fast
21:59:44 <pikhq_> elliott_: What you do is blithly fetch the value, increment it, and attempt the cmpxchg. If it fails, you restart.
21:59:45 <Vorpal> elliott_, oh lock xadd will be
21:59:54 <elliott_> oh, ah
21:59:56 <pikhq_> The thing is, you pass cmpxchg what the old value should be.
22:00:03 <elliott_> how cheap is cmpxchg with no contention?
22:00:11 <Vorpal> pikhq_, I'm /pretty/ sure lock xadd will do this even cheaper.
22:00:12 <elliott_> pikhq_: oh, that's a problem
22:00:20 <elliott_> presumably, you branch to determine whether the cmpxchg worked or not?
22:00:21 <Vorpal> pikhq_, you might want to inform elliott_
22:00:29 <elliott_> the whole idea with my 2-cycle allocator is to avoid branches
22:00:57 <pikhq_> Having a single branch that'll be predicted correctly almost always is not going to be notably worse. :)
22:01:09 <Vorpal> oh looks like pikhq_ is ignoring as well
22:01:13 <elliott_> pikhq_: it is when it's something as common as this :P
22:01:24 <elliott_> pikhq_: and I'm not so sure it'll always be predicted correctly
22:01:38 <Vorpal> ^say elliott I know the solution to this. There is a better atomic instruction. I told you above.
22:01:50 <Vorpal> ^help
22:01:50 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
22:01:50 <elliott_> allocation is really common, and probably follows very predictable patterns in @lang's generated code, so I would not be surprised if the contention rate was high for a pool
22:01:52 <pikhq_> Vorpal: Is xadd atomic?
22:01:59 <Vorpal> pikhq_, with the lock prefix
22:02:20 <Vorpal> pikhq_, but you need that for anything to be atomic
22:02:34 <pikhq_> Hmm, sure enough, that works better.
22:02:53 <elliott_> hmm, xadd? this looks like the right thing
22:02:53 <Vorpal> pikhq_, don't tell elliott_ since he doesn't want to know what I have to say :P
22:03:21 <elliott_> the question is how much slower LOCK XADD is compared to ADD + MOV in a uniprocessor situation
22:03:34 <elliott_> probably not noticeably, but it'd be interesting to know exactly
22:03:53 <Vorpal> you can trivially specialise the code on the fly
22:03:55 <pikhq_> In a uniprocessor situation, it's "ADD + MOV + MOV".
22:04:03 <Vorpal> and uniprocessors are kind of outdated anyway
22:04:36 <Vorpal> pikhq_, isn't it xchg,add even?
22:04:39 <elliott_> pikhq_: hmm, I don't think xadd can do memory
22:04:42 <elliott_> 0F C1/r XADD r/m32, r32 Exchange r32 and r/m32; load sum into r/m32.
22:04:46 <elliott_> oh, hmm, yes it can
22:04:55 <pikhq_> If it couldn't it would be worthless.
22:04:58 <elliott_> right :)
22:05:15 <pikhq_> "It's atomic because it accesses a per-thread resource!"
22:05:17 <elliott_> the fact that xadd has sparse google results is worrying, though
22:05:27 <elliott_> is it one of those CISCy instructions that nobody generates any more and so has really badly optimised microcode? :p
22:05:48 <pikhq_> No, it's one of the basic atomic primitives.
22:06:14 <elliott_> http://www.xadd.net/ Why did someone buy a domain for this
22:06:16 <Vorpal> what do you do when a pool is full anyway
22:06:31 <pikhq_> Collect.
22:06:51 <Vorpal> pikhq_, yeah but you need to reset the counter to be able to use this simple allocation stratergy
22:06:54 <Vorpal> or even move data
22:06:59 <elliott_> Vorpal: accesses to it will go into the 4k barrier page space and thus cause a page fault
22:07:05 <Vorpal> pikhq_, this simple scheme can't handle skipping holes after all
22:07:19 <pikhq_> Vorpal: Moving GCs are not magic.
22:07:20 <elliott_> Vorpal: nor do modern GCs
22:07:27 <elliott_> everyone uses a pointer-bumping allocator these days
22:07:32 <Vorpal> heh
22:07:33 <elliott_> they just do it with a branch
22:07:34 <Vorpal> really?
22:07:39 <Vorpal> interesting
22:07:42 <pikhq_> Yeah, basically everyone but Boehm.
22:07:46 <elliott_> Vorpal: yes, which is why you allocate a new pool and compact as you move it there
22:07:51 <pikhq_> And Boehm only doesn't because it needs to work with C.
22:07:52 <elliott_> by copying contiguously.
22:07:53 <Vorpal> I thought the glibc allocator for example was extent based
22:07:56 <ais523> <elliott_> http://www.xadd.net/ Why did someone buy a domain for this <-- I thought you were in favour of foldl.whatever?
22:08:00 <elliott_> Vorpal: glibc: "a garbage collector"
22:08:01 <pikhq_> Vorpal: That's *not* a GC.
22:08:06 <Vorpal> elliott_, well true, not the case
22:08:09 <elliott_> ais523: those were cute, this is just silly
22:08:27 <ais523> also, TLDs are getting increasingly obnoxious to remember
22:08:34 <ais523> if they were used for their original purposes, there wouldn't be a problem
22:08:41 <ais523> but there isn't really a TLD for "novelty website"
22:08:46 <Vorpal> heh
22:08:56 <elliott_> ais523: hey, I have a .net that's actually an internet service provider!
22:08:57 <pikhq_> The TLD system is just very poorly suited to the modern 'net.
22:09:04 <ais523> elliott_: wow
22:09:17 <ais523> arguably something like Freenode can plausibly correctly be .net too
22:09:26 <Vorpal> pikhq_, the ccTLDs kind of work still. Except for US.
22:09:34 <elliott_> ais523: admittedly, the service we provide is mainly a minecraft server
22:09:40 <elliott_> but that's an internet service that we're providing
22:09:42 <ais523> haha
22:09:47 <Vorpal> heh
22:09:48 <elliott_> and web hosts are considered ISPs, so I don't see why that shouldn't be
22:09:58 <Vorpal> elliott_, they are!?
22:10:13 <pikhq_> Vorpal: In a sense. They provide a service on the Internet.
22:10:13 <elliott_> http://en.wikipedia.org/wiki/Internet_service_provider
22:10:19 <elliott_> the technical meaning differs from the colloquial meaning
22:10:24 <elliott_> (which only means "an actual internet link provider")
22:10:29 <Vorpal> pikhq_, well, that is not what people /usually/ mean by ISP
22:10:33 <Vorpal> elliott_, quite
22:10:36 <elliott_> bah, that page has the wrong definition
22:10:36 <pikhq_> Or "a provider of Internet service".
22:10:42 <elliott_> prescriptivists :)
22:10:46 <elliott_> but .net was originally meant for the technical meaning
22:10:51 <elliott_> not just the colloquial one
22:10:52 <Vorpal> I know that
22:10:57 <Vorpal> oh wait
22:11:01 <Vorpal> misread you
22:11:16 <Vorpal> <elliott_> but .net was originally meant for the technical meaning <-- that would include pretty much everything then
22:11:17 <ais523> elliott_: I think nowadays, I conclude that "internet service provider" and "ISP" actually have somewhat different meanings
22:11:40 <elliott_> Vorpal: not really; a corporation not in the business of selling internet services wouldn't
22:11:56 <elliott_> a web server isn't really "providing" anything
22:12:01 <elliott_> IMO
22:12:31 <Vorpal> hm x68/x87 really doesn't have that many general purpose instructions. It just have a lot of variants of each one. It *does* have a lot of floating point and SIMD instructions though.
22:12:39 <elliott_> x68
22:12:39 <ais523> x68?
22:12:45 <Vorpal> err x86
22:12:45 <Vorpal> typo
22:12:48 <elliott_> the only algol 68 coprocessor
22:12:51 <Vorpal> obviously :P
22:12:56 <ais523> elliott_: well, m68k is an arch
22:13:31 <Vorpal> it is still CISC obviously due to that nearly everything can do memory accesses.
22:13:41 <elliott_> pikhq_: I don't suppose there's a LOCK XADD AND ALSO JUMP HERE IF IT EXCEEDS A CERTAIN VALUE :)
22:13:49 <elliott_> or, to phrase that another way:
22:13:52 <elliott_> how do I do atomic allocations of >4k?
22:14:14 <elliott_> pikhq_: ouch, there's a nasty race condition even with atomic <4k allocations
22:14:29 <elliott_> what if you have exactly 1 byte left in the pool, and two processes do 4k allocations at once?
22:14:34 <elliott_> one of them gets an address /beyond/ the barrier page
22:14:38 <Vorpal> elliott_, I doubt there is. Possibly you could optimise if you know the allocation is larger/smaller than the size and do a slow path when you don't know.
22:14:41 <elliott_> that might even be in some other task's valid memory
22:14:47 <elliott_> and it can access it freely
22:14:47 <Vorpal> hm
22:14:55 -!- Slereah has quit (Ping timeout: 244 seconds).
22:15:14 <elliott_> if you restrict pools to non-concurrent access you can solve that easily, by checking the pool pointer for overflow on context switch
22:15:22 <elliott_> oh, hmm
22:15:24 <elliott_> that's actually a general flaw
22:15:31 <elliott_> if you allocate twice without actually accessing the RAM
22:15:33 -!- Slereah_ has joined.
22:15:40 <elliott_> I suppose the solution is to just ban allocating before you access a previous allocation
22:15:46 <elliott_> not a big deal
22:16:08 * ais523 works out how to mark a question where one of the requirements is "efficiently"
22:16:10 <Vorpal> elliott_, you could allocate numtask*largest barrier memory?
22:16:25 <ais523> luckily, this is easier than the mergesort issue, because I can populate the caches with invalid data and then see if the algo blindly trusts it
22:16:27 <elliott_> Vorpal: huh?
22:16:32 <ais523> if it doesn't, it's not efficient
22:16:41 <Vorpal> ais523, if applicable look for complexity?
22:16:57 <ais523> Vorpal: I thought of that first, and it is possibly applicable
22:17:25 <ais523> the average-case performance is probably the same, but I could make the worst-case performance for the most obvious unwanted method blow up
22:17:30 <ais523> but that's probably harder to write
22:17:45 <ais523> (the same in terms of complexity, that is, not in overall performance)
22:17:49 <Vorpal> elliott_, well if you can allocate at most n bytes if you have n*tasks_in_pool barrier memory it would be safe
22:17:59 <Vorpal> assuming you access all before next allocation
22:18:08 <elliott_> Vorpal: no, you would have to allocate n*tasks
22:18:20 <elliott_> so = millions
22:18:24 <elliott_> because you can have
22:18:26 <Vorpal> hm okay
22:18:34 <elliott_> {2M pool page}, {4k barrier page}, {2M pool page of another task entirely}
22:18:40 <elliott_> if you're 1 byte from the end of the first pool page
22:18:43 <elliott_> increment 4k, increment 4k
22:18:46 <elliott_> you're in someone else's memory
22:18:51 <elliott_> and it won't page fault when you access it
22:19:18 -!- kmc has joined.
22:19:18 <Vorpal> elliott_, is that 2M huge page?
22:19:24 <elliott_> yes
22:19:33 <Vorpal> elliott_, x86 can do unaligned ones?
22:19:36 <Vorpal> I'm surprised
22:19:40 <elliott_> well, probably not
22:19:42 <elliott_> it was a simplified example
22:19:49 <Vorpal> I would expect them to have to be aligned on 2 MB boundaries
22:20:04 <elliott_> even if I used a 2M barrier page
22:20:07 <Vorpal> which means your scheme would kind of not work very well, though beautiful
22:20:12 <elliott_> you just need to increase the number of allocations
22:20:17 <Vorpal> well yeah
22:20:18 <elliott_> to show that it's still a problem
22:20:21 <elliott_> Vorpal: well, it'll work fine
22:20:25 <elliott_> 2 megs is about as big as 4 megs
22:20:32 <Vorpal> heh
22:20:34 <elliott_> I only need to wait a few years for everybody's memory to double
22:21:24 <Vorpal> elliott_, I don't think I will be getting 32 GB in a hurry :P
22:22:14 <elliott_> actually, one problem with this allocator style is that you have to calloc pools
22:22:27 <elliott_> or, hmm, perhaps not
22:23:03 <ais523> elliott_: you definitely don't want processes reading privileged data from leftover pools, so you have to statically ensure it's not used before alloc, or else zero it on the alloc
22:23:16 <Vorpal> elliott_, hm why would the code be allowed to read uninitialised memory? After all isn't the system generating the machine code from @lang?
22:23:25 <Vorpal> which could ensure that didn't happen
22:23:33 <elliott_> ais523: @lang programs aren't allowed to just arbitrarily read from their pool, ofc
22:23:38 <ais523> elliott_: right, indeed
22:23:42 <Vorpal> elliott_, then it shouldn't be a problem
22:23:46 <ais523> they're only allowed to interpret it in ways they're allowed to
22:23:46 <elliott_> ais523: a Haskell compiler won't spit out code looking like that, so an @lang compiler won't either
22:23:51 <elliott_> Vorpal: the problem was:
22:23:59 <elliott_> the GC has to look at the bytes in the heap to determine object structure
22:24:06 <Vorpal> hm
22:24:07 <Vorpal> right
22:24:11 <elliott_> how does it know it's looking at a real, fully-allocated object, instead of just the garbage at the end?
22:24:14 <elliott_> but I think it's easy
22:24:14 <ais523> elliott_: bleh, no typed GC?
22:24:21 <elliott_> ais523: of course it's "typed"...
22:24:23 <elliott_> but I think it's easy
22:24:25 <elliott_> because the GC is only called on overflow
22:24:30 <Vorpal> elliott_, typed allocations.
22:24:31 <elliott_> so you /know/ the last object wasn't fully allocated
22:24:42 <elliott_> Vorpal: yes, of course; how do you think that solves the problem?
22:25:35 <Vorpal> well the GC could see how far we allocated. And we might write a bit in a header of the allocation to indicate that we have allocated it but not yet used it
22:25:45 <Vorpal> hm, probably rather awkward way of doing it
22:26:17 <elliott_> Vorpal: doesn't help
22:26:24 <Vorpal> hm true
22:26:27 <elliott_> Vorpal: what happens when another CPU overflows the pool after incrementing pointer
22:26:30 <elliott_> but before setting the bit
22:26:39 <elliott_> as in
22:26:42 <elliott_> before _this_ cpu sets the bit
22:26:47 <Vorpal> oh good point
22:26:47 <elliott_> these are all problems caused by concurrent pool access
22:26:58 <elliott_> why don't CPUs have transactional memory ffs
22:27:11 <Vorpal> elliott_, iirc powerpc does
22:27:13 <Vorpal> !
22:27:24 <elliott_> that would surprise me
22:27:28 <Vorpal> oh wait, it was load-store barriers
22:27:30 <Vorpal> nevermind
22:27:41 <Vorpal> still, they are considerably more powerful iirc
22:28:26 <elliott_> i'm tempted to just forbid concurrent access again and think of another way to do things
22:28:50 <Vorpal> hm
22:28:58 <Vorpal> elliott_, concurrent access has another problem anyway
22:29:06 <elliott_> maybe I could use small pools by default without the fancy barrier stuff and expand that on first gc
22:29:15 <Vorpal> and that is that of cache line ownership moving between CPUs
22:29:35 <elliott_> Vorpal: well. that will happen anyway
22:29:36 <Vorpal> cache lines are iirc about 64 bytes or such
22:29:51 <elliott_> Vorpal: since another task on the same pool will run on another CPU while other tasks on the same pool are stopped
22:30:06 <elliott_> I suppose I could tie pools to CPUs but that sounds like a pain on e.g. 4-core systems
22:30:11 <elliott_> where you just don't have many CPUs
22:30:22 <elliott_> (where by "CPU" i mean "core")
22:30:25 <Vorpal> elliott_, yes but you don't want that to happen for no good reason. Sure it will happen when rescheduling. And when sharing a lock for something (and you will need locks for some stuff I bet, hardware access at the very least)
22:30:39 <Vorpal> (like a lock for "accessing ethernet card memory mapped registers")
22:30:42 <elliott_> <elliott_> Vorpal: what happens when another CPU overflows the pool after incrementing pointer
22:30:42 <elliott_> <elliott_> but before setting the bit
22:30:42 <elliott_> <elliott_> as in
22:30:42 <elliott_> <elliott_> before _this_ cpu sets the bit
22:30:44 <elliott_> i thought of a solution to this
22:30:50 <Vorpal> oh?
22:31:00 <elliott_> i could make the GC wait until every process on the pool allocates again
22:31:04 <elliott_> and thus causes another pagefault
22:31:06 <Vorpal> heh
22:31:12 <elliott_> which would ensure that no partial allocations have been done
22:32:12 <Vorpal> elliott_, actually no you can't. Segfault is a *nix term. The x86 term is general protection fault or page fault depending on what exactly you are doing
22:32:16 <Vorpal> ;P
22:32:26 <elliott_> i never said segfault?
22:32:34 <Vorpal> huh I misread
22:32:36 <Vorpal> :(
22:32:39 <Vorpal> twice
22:32:46 <Vorpal> I did a double take on seeing "segfault"
22:32:48 <Vorpal> yet it wasn't there
22:32:51 <Vorpal> oh well
22:33:31 <Vorpal> elliott_, anyway wouldn't that go into the next page anyway?
22:33:37 <elliott_> hmm, even if i don't use this fancy barrier page strategy
22:33:51 <elliott_> I don't see any way to avoid allocating one page per task if I'm going the "really lightweight, no concurrent access model"
22:33:55 <Vorpal> elliott_, do you plan to have much of a stack btw?
22:34:02 <elliott_> or hmm yes i could
22:34:10 <Vorpal> because allocation on a task local stack would be /way/ cheaper.
22:34:51 <Vorpal> of course that means at least two pages anyway... with the barrier page
22:36:38 -!- ais523 has quit (Remote host closed the connection).
22:37:02 <elliott_> Vorpal: no it wouldn't
22:37:05 <elliott_> stack allocation is pointer-bumping
22:38:27 <elliott_> pikhq_: hmm, xadd (/without/ lock) will probably be slower than mov + add, right? thinking about a non-concurrent access scenario
22:41:44 <elliott_> Vorpal: stacks are basically thought to be faster because people use simpler allocators with them
22:41:52 <elliott_> namely, pointer-bumping
22:43:06 -!- Jafet has quit (Quit: Leaving.).
22:43:30 <Vorpal> back
22:43:42 <Vorpal> <elliott_> stack allocation is pointer-bumping <-- yes
22:43:50 <Vorpal> elliott_, but you still need to detect stack overflow
22:44:06 <elliott_> yes. so it is more expensive than my allocator
22:44:30 <elliott_> so i don't see how a stack would help
22:44:32 <Vorpal> elliott_, what is your GC root btw?
22:44:48 <elliott_> Vorpal: the continuation
22:44:51 <Vorpal> ah
22:45:50 <Vorpal> stack allocators have one advantage: no need to GC. Because returning just bumps the pointer the other way
22:46:01 <pikhq_> elliott_: xadd without lock is not much more than mov+add.
22:46:08 <elliott_> pikhq_: right. but it is more :)
22:46:22 <elliott_> Vorpal: they also require a traditional notion of stack
22:46:29 <Vorpal> well yes
22:47:29 <Vorpal> I have to say that the rep prefix of x86 is quite curious
22:48:34 <elliott_> useful for boot sector golfing
22:48:39 <Vorpal> sure
22:48:43 <Vorpal> but not much else
22:49:05 <Vorpal> it is truly a CISC left over
22:49:29 <elliott_> so is x86
22:50:57 -!- derrik has quit (Quit: nights).
22:51:28 <Vorpal> elliott_, touche
22:53:39 <Vorpal> "Any VEX-encoded instruction with a LOCK prefix preceding VEX will #UD." <-- it doesn't say anything else under "VEX and the LOCK prefix". Like it would be useful to say if it works in the other order.
22:53:43 <Vorpal> fuck you intel
22:54:00 <Vorpal> hm it doesn't
22:54:08 <Vorpal> because VEX isn't a prefix anyway
22:54:14 <Vorpal> so why no LOCK on VEX?
23:03:51 <elliott_> hmm, looks like my tasks have to take up at least 144 bytes
23:04:01 <Vorpal> elliott_, impressive
23:04:10 <elliott_> _at least_ :P
23:04:17 <elliott_> that's just the number of registers on x86-64, including IP
23:04:28 <elliott_> ofc if i don't use all registers for computation then they can take less...
23:04:41 <elliott_> or if certain registers are always used as like scratch space before being put into memory
23:04:46 <elliott_> then I can avoid storing them
23:04:52 <Vorpal> elliott_, "A newly spawned Erlang process uses 309 words of memory in the non-SMP emulator without HiPE support. (SMP support and HiPE support will both add to this size.)"
23:04:59 <Vorpal> so far you beat erlang
23:05:10 <elliott_> hmm, why do they need that much?
23:05:14 <elliott_> 2.4 kilobytes is quite a lot
23:05:17 <Vorpal> don't know
23:05:35 <Vorpal> elliott_, it may include the default stack
23:05:36 <Vorpal> perhaps
23:05:41 <elliott_> gah, i just thought of a response to something ais said, but he's left
23:05:54 <Vorpal> use @tell?
23:06:09 <elliott_> that doesn't have immediate payoff :) but fine!
23:06:18 <Vorpal> elliott_, "The size includes 233 words for the heap area (which includes the stack). The garbage collector will increase the heap as needed."
23:06:22 <Vorpal> elliott_, that is why it is so large
23:06:33 <elliott_> @tell ais523 <ais523> there's no real problem with a million-task scheduler with current technology; the issue is more adapting for various patterns of blocked/nonblocked
23:06:33 <lambdabot> Consider it noted.
23:07:08 <elliott_> @tell ais523 in @, there's no such thing as a "blocked task"; a blocked task's data (not necessarily including its pool data, just the pointer) is moved into whatever's being /blocked on/
23:07:09 <lambdabot> Consider it noted.
23:07:16 <elliott_> @tell ais523 and then removed from the scheduler's list of tasks
23:07:17 <lambdabot> Consider it noted.
23:07:18 <Vorpal> elliott_, anyway so the real overhead is 76 words
23:07:35 <elliott_> @tell ais523 that is, sockets know which threads are blocked on them, and resume those threads when they receive data or whatever
23:07:35 <lambdabot> Consider it noted.
23:07:37 <Vorpal> elliott_, which is far smaller
23:07:42 <elliott_> Vorpal: right, 608 bytes
23:08:03 <Vorpal> elliott_, 304 on 32-bit
23:08:27 <elliott_> irrelevant
23:08:32 <Vorpal> oh?
23:08:36 <Vorpal> 32-bit systems still exist
23:08:41 <elliott_> not for long
23:08:51 <elliott_> not in the pc market anyway
23:08:54 <Vorpal> well yeah
23:09:08 <Vorpal> elliott_, but globally most processors are likely 16-bit or 8-bit still
23:09:14 <elliott_> yeah, but they don't run erlang
23:09:17 <Vorpal> true
23:09:25 <elliott_> also, i think 32-bit is the most common nowadays actually, because of ARM in the embedded space
23:09:26 <elliott_> and things like that
23:09:34 <Vorpal> elliott_, still erlang can run on vxworks. Which opens up a whole embedded market
23:09:37 <elliott_> full CPUs in embedded stuff is becomming more common
23:09:49 <elliott_> unfortunately I don't think @ will work very well on 32-bit
23:09:53 <elliott_> maybe in the embedded space
23:09:58 <Vorpal> heh
23:10:04 <elliott_> not kidding
23:10:14 <elliott_> what kind of disks do vxworks devices have :P
23:10:16 <Vorpal> elliott_, 64-bit in embedded is rare. it is mostly consoles and PCs that are 64-bit
23:11:03 <Vorpal> elliott_, hm... the ones I used at university had either flash with some weird connector or plain CF cards.
23:11:08 <elliott_> i mean, size
23:11:23 <Vorpal> elliott_, well I have a CF card somewhere. Let me find a ruler ;)
23:11:32 <Vorpal> elliott_, anyway it was a dev system. Kind of high end.
23:11:43 <Vorpal> like x86, pentium, 500 MHz
23:11:50 <Vorpal> or something absurdly overpowered like that
23:11:57 <Vorpal> 1 or 2 GB flash probably
23:12:08 <elliott_> basically, a 32-bit @ system can address 4 gigabytes, total, including disk
23:12:10 <Vorpal> elliott_, but it varies depending on applications :P
23:12:16 <Vorpal> elliott_, ouch
23:12:25 <elliott_> so it works fine in like most embedded scenarios i guess
23:12:28 <elliott_> but not on a desktop
23:12:42 <elliott_> i can think of workarounds, but they're all sloooooooow
23:12:52 <Vorpal> anyway there is large file system support on other systems. Obviously not on @
23:13:07 <Vorpal> elliott_, wait, x86-64 systems actually have 48 bits virtual address space right?
23:13:10 <elliott_> Vorpal: well it doesn't really work because of the uniform address space
23:13:18 <pikhq_> Vorpal: Currently.
23:13:22 <Vorpal> pikhq_, indeed
23:13:23 <elliott_> basically you'd need to store all pointers as large filesystem addresses
23:13:30 <elliott_> dereferencing those would be slow as shit
23:13:30 <pikhq_> That's a limit of the MMU, not the ISA.
23:13:44 <Vorpal> that means 35.18 TB
23:14:12 <elliott_> Vorpal: and? :P
23:14:24 <Vorpal> elliott_, that is kind of close to modern storage size.
23:15:00 <elliott_> Vorpal: when single machines start addressing 35 terabytes, AMD and Intel will start releasing CPUs with MMUs that can address 64 bits.
23:15:04 <elliott_> or 54 bits or whatever :P
23:15:06 <pikhq_> elliott_: Better/worse: you could use segmentation.
23:15:21 <Vorpal> elliott_, I have like slightly more than 1/17th of that in disks in my computer
23:15:29 <elliott_> pikhq_: I don't see how that would work; pointers would have to store the segment they're in
23:15:35 <elliott_> Vorpal: moore's law doesn't work _that_ fast.
23:15:36 <Vorpal> elliott_, I meant for disks, Not for ram
23:15:48 <Vorpal> elliott_, since you do uniform address space
23:15:53 <Vorpal> the disk size matters for you
23:15:57 <elliott_> Did I contradict that?
23:16:02 <Vorpal> nope
23:16:21 <Vorpal> elliott_, I was just finishing my line of thought before reading further. I use blocking IO
23:16:26 <elliott_> Vorpal: I'm pretty sure that the MMU bit width will increase when we're living in the space age and people have 35 terabytes of disk.
23:16:26 <Vorpal> in my brain
23:16:36 <pikhq_> elliott_: Segments map to physical space. Recent x86 has 36-bit address space. :P
23:16:38 <elliott_> Even if it doesn't, 35 terabytes is a lot of storage.
23:16:54 <elliott_> I doubt you, as a person, will need >35 terabytes of personal storage before @ takes over the world.
23:17:05 <elliott_> pikhq_: that's still tiny :P
23:17:24 <pikhq_> elliott_: Also, alternately you *could* make it so that far pointer dereferencing is the expensive operation.
23:17:31 <pikhq_> Which nets you a potentially 46-bit address space.
23:17:40 <pikhq_> This would be an *insane* hack, though.
23:18:07 <Vorpal> elliott_, 35 TB is ~1501 blueray disc
23:18:25 <elliott_> Vorpal: I will consider your concerns if you personally buy 1501 blu-ray discs.
23:18:39 <Vorpal> nah I'll torrent them
23:18:49 <Vorpal> elliott_, I wonder how much traffic I download in a year
23:18:51 <pikhq_> Vorpal: If you use sane encodings, chop a order of magnitude off that.
23:18:55 <pikhq_> (x264 is awesome shit)
23:18:56 <Vorpal> err how much traffic downstream I mean
23:19:09 <Vorpal> pikhq_, who said movies
23:19:18 * elliott_ attempts to find a blank blu-ray on Amazon.
23:19:20 <Vorpal> pikhq_, games on blueray happens nowdays
23:19:31 <Vorpal> pikhq_, I downloaded a 25 GB game at one point
23:19:33 <pikhq_> Vorpal: Technically, yes. They're generally empty.
23:19:44 <Vorpal> pikhq_, nope. Rage was 25 GB download
23:19:50 <pikhq_> Due to targetting DVD platforms as well, and nobody likes multiple disks.
23:19:52 <Vorpal> or 24 or so
23:20:09 <pikhq_> Jesus, what did they include, the genomes of all sequenced species?
23:20:18 <Vorpal> pikhq_, really bad texture quality
23:20:22 <Vorpal> pikhq_, the install size was 27 GB iirc
23:20:49 <Vorpal> pikhq_, iirc they said the raw data of the game they had on their development servers was over 1 TB
23:21:15 <Vorpal> pikhq_, and Rage is a really bad game. Boring, uninspired story, mediocre gameplay
23:21:22 <Vorpal> and quite uneven texture quality
23:21:32 <Vorpal> everything from state of the art to something utterly jagged.
23:21:43 -!- kmc has quit (Quit: Leaving).
23:22:19 <pikhq_> "Higher res is better. Derp, scale!"?
23:22:39 <Vorpal> pikhq_, it feels like a tech demo for the engine to tell the truth :P
23:23:26 <Vorpal> pikhq_, the skydome was truly impressive though
23:24:58 <Vorpal> pikhq_, anyway there are many games that come on dual layer DVDs these days
23:25:19 <Vorpal> iirc witcher 2 was about 7 GB large download. Somewhat more when installed on disk
23:25:35 <Vorpal> and that game has high texture quality and good gameplay and everything :P
23:26:02 <Vorpal> hm system requirements is 16 GB free disk
23:27:17 <Vorpal> pikhq_, speaking of which... that is a rare game these days. Witcher 2 is completely DRM free.
23:27:39 <Vorpal> (except when bought from steam iirc)
23:29:56 <elliott_> Steam has DRM?
23:30:07 <Vorpal> elliott_, where have you been?
23:30:12 <elliott_> Not using Steam.
23:30:18 <Vorpal> right
23:30:39 <elliott_> That sucks.
23:30:42 <Vorpal> elliott_, steam has DRM that is fairly easy to work around by replacing a few dll files
23:30:57 <elliott_> Easier to pirate, no?
23:31:00 <Vorpal> replacement ones are kind of well developed already
23:31:05 <Vorpal> elliott_, pretty much.
23:31:46 <Vorpal> not all steam games use the drm of course
23:32:10 <Vorpal> generally you know when a game refuses to run without steam running, then it uses the drm
23:32:13 <Vorpal> elliott_, like skyrim does
23:32:22 <Vorpal> (note: easy to work around :P)
23:32:25 <elliott_> Gross.
23:32:51 <Vorpal> elliott_, yes we are talking about steam indeed :P
23:33:07 <elliott_> Why do people like Steam again?
23:33:49 <Vorpal> elliott_, because it was first and it is convenient. And there are far worse DRM examples.
23:34:13 <elliott_> Vorpal: But I've actually seen people rejoice when games they already own became available on Steam.
23:34:18 <Vorpal> elliott_, and because it has all the games (pretty much). Which it does because it is popular with the users.
23:34:25 <Vorpal> elliott_, really?
23:34:27 <Vorpal> why?
23:34:35 <Vorpal> elliott_, is it for the steam achievements?
23:34:44 <Vorpal> maybe...
23:34:47 <elliott_> Vorpal: The only reasons I've heard are because of the "social" features of it and the achievements and crap. Which I find completely incomprehensible.
23:35:08 <elliott_> I mean, I'd prefer to just ask people if they want a game rather than cyberstalking them for the purpose.
23:35:11 <Vorpal> elliott_, oh yeah you can use it for easy invites to friends for multiplayer games iirc.
23:35:14 <Vorpal> which is kind of nice
23:35:16 <elliott_> And achievements are a scourge.
23:35:31 <elliott_> Achievements are what happen when you can't think of a decent in-game way to reward players for doing things.
23:35:37 <elliott_> So you decide to annoy them instead
23:35:40 <elliott_> s/$/./
23:35:48 <Vorpal> elliott_, it is easier to click a friend's name in a list than to ask them to provide a port number and so on
23:36:23 * elliott_ is used to playing multiplayer games with decent lobby systems.
23:36:33 <elliott_> Admittedly skipping the lobby entirely would be preferable.
23:36:35 <Vorpal> <elliott_> Achievements are what happen when you can't think of a decent in-game way to reward players for doing things. <-- I like stuff that are kind of like achievements but are for the current game only and have an in game effect
23:36:50 <elliott_> So, not achievements.
23:37:24 <Vorpal> elliott_, like, in witcher 2, if you stay within a protective spell bubble during a part of the introduction of chapter 1 you get a +5 or something bonus to something
23:37:29 <Vorpal> stuff like that
23:37:57 <Vorpal> or following a certain path doing a certain mission within certain parameters grants you 100 extra carrying capacity
23:38:41 <Vorpal> elliott_, anyway you might want to reward a player who went through the entire game without killing any enemy, using sneaking and such instead.
23:38:46 <Vorpal> how would you do that?
23:38:53 <Vorpal> achievement is the usual answer
23:38:57 <elliott_> Well, badges at the end are OK
23:39:04 <Vorpal> hm
23:39:06 <elliott_> Achievements that happen mid-game not so much
23:39:10 <elliott_> I mean
23:39:10 <Vorpal> true
23:39:13 <elliott_> If it's just for things like easter eggs sure
23:39:17 <elliott_> But if it's like "100 kills" fuck that
23:40:04 <Vorpal> elliott_, what about stuff like "navigated down a steep hill without taking fall damage". Yogscast suggested that should be an achievement in skyrim (it isn't, it has the boring type of achievements, mostly "did questline x")
23:40:25 <Vorpal> of course it would be hard to measure that
23:40:36 -!- pumpkin has joined.
23:40:57 <Vorpal> elliott_, but yes, I seen pretty bad achievements. And I seen less bad ones.
23:41:03 <elliott_> The achievement comes from managing that in the first place :P
23:41:08 <Vorpal> heh
23:41:16 <elliott_> If it's obvious that you've done something hard, you don't need to yell at players that they've done it
23:41:22 <Vorpal> elliott_, but you want something you can brag about on your steam profile!
23:41:25 <Vorpal> ;P
23:42:25 <elliott_> pikhq_: Do you know much about hardware virtualisation
23:43:02 <Vorpal> elliott_, anyway I remember reading about some game where the devs put in achievements for stuff they thought were so improbable that they were for all practical purposes impossible. Just to see how long it took for players to figure out a way to do them.
23:43:09 -!- Jafet has joined.
23:43:19 <Vorpal> all were done within a year iirc
23:43:23 <Vorpal> forgot which game it was
23:43:28 <elliott_> heh
23:43:37 -!- copumpkin has quit (Ping timeout: 248 seconds).
23:44:39 <Vorpal> elliott_, anyway gamersgate is a better online store than steam really. No silly client crap.
23:46:09 <Vorpal> elliott_, another one I heard was good but which I never used myself is desura. Mostly focused on indie stuff iirc
23:46:21 <Vorpal> elliott_, so there are alternatives to steam that are less shitty
23:46:25 <Vorpal> just not as popular
23:46:34 <elliott_> Desura has a client thing.
23:46:50 <Vorpal> elliott_, yes, but a less obnoxious one
23:46:52 <Vorpal> by far
23:47:06 <elliott_> What ever happened to just delivering binaries.
23:47:35 <Vorpal> elliott_, that is gamersgate. They let you download a downloader program basically. And then that downloads the binary.
23:47:37 <Vorpal> so almost :P
23:47:51 <Vorpal> I guess a downloader makes sense on windows because I doubt IE can resume a broken download
23:47:57 <elliott_> Nobody uses IE
23:48:02 <elliott_> But Firefox sucks at resuming downloads
23:48:05 <elliott_> Probably Chrome too
23:48:05 <Vorpal> that too
23:48:14 <Vorpal> elliott_, so that is why they use a downloader
23:48:18 <Vorpal> I use wget for such stuff
23:48:23 <Vorpal> wget -c works wonders
23:49:54 * Phantom_Hoover → sleep
23:49:55 -!- Phantom_Hoover has quit (Quit: Leaving).
23:50:04 <Vorpal> heh gamersgate is a Swedish company? Didn't know that
23:50:25 -!- nooga has quit (Ping timeout: 244 seconds).
23:51:39 <elliott_> Why does scan.co.uk have to be so unusable.
23:53:28 <pikhq_> elliott_: Not much.
23:53:32 <elliott_> pikhq_: Damn
23:53:56 <elliott_> pikhq_: So you wouldn't know how expensive something in ring 0 calling on the hypervisor would be?
2011-11-29
00:02:28 <pikhq_> Not really.
00:02:34 <elliott_> :'(
00:05:28 <Vorpal> elliott_, benchmark it?
00:05:34 <Vorpal> (okay that is a LOT of work I know)
00:06:09 <Vorpal> elliott_, anyway I'm pretty sure hypervisor is more expensive than syscall. Or at least as expensive.
00:06:28 <Vorpal> anything else would greatly surprise me
00:10:56 <elliott_> :(
00:22:50 -!- kmc has joined.
00:32:36 -!- kmc has quit (Quit: Leaving).
00:49:25 <elliott_> hmm
01:00:49 -!- elliott has joined.
01:00:49 -!- elliott_ has quit (Read error: Connection reset by peer).
01:07:56 -!- SimonRC has quit (Ping timeout: 260 seconds).
01:09:27 -!- SimonRC has joined.
01:27:42 <itidus21> "The operating system was "inspired by the literary heritage of Dante Alighieri (particularly the Divine Comedy)"? What kind of sense does that make? I challenge anybody to tell me what it was about Dante's philosophy, politics, writing style or anything else that inspired this operating system."
01:38:24 <elliott> hi.
01:42:33 -!- Vorpal has quit (Ping timeout: 248 seconds).
01:49:23 <Jafet> x86 rings are not unlike the circles of hell
01:59:45 -!- kmc has joined.
02:04:18 <quintopia> elliott: hlep
02:04:28 <elliott> Jafet: :D
02:04:31 <elliott> quintopia: one cannot be hlepped
02:04:38 <quintopia> sad day
02:06:44 <elliott> quintopia: but go on
02:07:49 <quintopia> sam is crouched behind a desk with two guns pointed at him. he has a tiny revolver with four bullets. he has two guns pointed at him. his girlfriend is tied up with an enemy pointing another gun at her head. save him without a deus ex machina. she can die.
02:08:05 <quintopia> but she can't die by brains blowing cuz she has to say stuff before she dies
02:09:44 <Jafet> Uhhh
02:09:52 <Jafet> Can we see sam's character sheet first?
02:10:32 <elliott> quintopia: shoot the girlfriend, use element of surprise to escape
02:10:57 <elliott> not brains blowing, shoot the heart instead or w/e
02:11:01 <quintopia> he wouldn't shoot his girlfriend...
02:11:05 <quintopia> or would he...
02:11:07 <quintopia> hmmm
02:11:07 -!- kmc has quit (Remote host closed the connection).
02:11:19 <elliott> quintopia: that wasn't one of the requirements
02:11:27 <quintopia> it's his girlfriend!!!!!
02:11:30 <Jafet> She asks him to shoot her, he shoots her, and escapes
02:11:36 <Jafet> There, all criteria met
02:11:45 <elliott> quintopia: won't be his girlfriend if he dies, will she?
02:11:45 -!- kmc has joined.
02:11:46 <quintopia> she's pregnant. why would she ask him to shoot her?
02:11:50 <elliott> so he's basically fucked on the girlfriend front, either way
02:12:08 <quintopia> yes, but he i don't want him to do anything out of character
02:12:25 <elliott> quintopia: shoot a precisely-aimed bullet at the girlfriend so that her womb bursts open; grab baby and escape
02:12:26 <Jafet> Sam hypnotizes the enemies
02:12:27 <elliott> 100% realistic
02:12:35 <elliott> happens all the time
02:12:53 <Jafet> If you're Tarantino, shoot her in the side of the head.
02:12:53 <elliott> happened to me the other week, someone shot me and my baby escaped
02:12:54 <quintopia> she's only like 2 mos preggo
02:12:58 <quintopia> no baby yet just fetus
02:13:08 <elliott> quintopia: sam believes that life begins at conception.
02:13:10 <quintopia> walking fetus!
02:13:48 <elliott> quintopia: so what is the uh
02:13:49 <elliott> context here
02:13:59 <quintopia> a novel i'm writing?
02:14:22 <Jafet> It starts in media res
02:14:50 <elliott> quintopia: i suggest not getting sam in that situation
02:15:03 <Jafet> Novels with guns are shitty anyways
02:15:28 <elliott> quintopia: yeah they should be using uh
02:15:31 <elliott> bows 'n arrows instead
02:15:36 <quintopia> lol
02:15:42 <elliott> archery II: this time it's personal
02:15:46 <quintopia> but it's more exciting to have him in that situation
02:15:55 <quintopia> but i have an idea
02:16:02 * quintopia thinks text adventure
02:16:04 <quintopia> >look
02:16:09 <Jafet> Cloaks 'n daggers
02:16:12 <elliott> quintopia: have him start just like
02:16:13 <elliott> dancing
02:16:21 <elliott> he just starts dancing
02:16:23 <elliott> with the people with guns
02:16:31 <elliott> and he does a jig over to his girlfriend
02:16:33 <elliott> and kicks her out the window
02:16:35 <elliott> and then jumps after her
02:16:38 <elliott> but there's a trampoline underneath
02:16:38 <quintopia> YES
02:16:39 <elliott> so he bounces back up
02:16:41 <elliott> and shoots the bad guys
02:16:43 <quintopia> lul
02:16:45 <quintopia> best
02:17:07 <quintopia> i forgot about that patio outside!
02:17:38 <quintopia> he pulls the deskk drawer out
02:17:51 <quintopia> throws its contents at the guy with the girlfriend
02:18:15 <elliott> but the other dudes will just shoot him...
02:18:37 <Jafet> Desks are bulletproof, man.
02:18:55 <elliott> ah
02:19:33 <quintopia> this is a *big* desk
02:20:13 -!- pikhq has joined.
02:20:23 -!- pikhq_ has quit (Ping timeout: 252 seconds).
02:20:39 <quintopia> so then he jumps over the desk and runs at him with the other dudes shooting at him. but he shields himself with the desk drawer.
02:20:46 <quintopia> yep. it could happen.
02:21:09 <Jafet> Hollywood in writing
02:21:44 <quintopia> i know...its all so cliche :P
02:22:00 <Jafet> Actually that sounds more like a John Woo thing
02:22:19 <quintopia> so then he gets shot some when they figure out to shoot low...
02:22:46 <quintopia> and then...
02:22:50 <quintopia> rocks fall, everyone dies
02:22:57 <Jafet> Sam looks behind him and sees a fire extinguisher. He grabs it and uses it to lay down a smoke screen
02:23:05 <quintopia> oh shit good idea
02:24:12 <Jafet> Not knowing where he is, they start shooting at random and hit each other
02:24:15 <Jafet> The end
02:25:13 <Jafet> So, you have two days to finish the novel?
02:28:17 <elliott> this novel is terrible
02:31:45 <quintopia> it doesn't matter if it is terrible
02:31:47 <quintopia> it is fun
03:11:14 <itidus21> hmm
03:11:39 <itidus21> they really need to do an fps crossed with secondlife
03:12:03 <itidus21> not specifically secondlife but something like that
03:26:36 -!- elliott has quit (Quit: Leaving).
03:27:05 -!- elliott has joined.
03:27:11 <elliott> Gregor: Have you used Emscripten?
03:38:46 -!- kmc has quit (Quit: Leaving).
03:40:00 -!- zzo38 has joined.
03:46:17 -!- Nisstyre has quit (Ping timeout: 248 seconds).
03:56:00 -!- kmc has joined.
04:01:34 <kallisti> hey
04:04:13 <elliott> hi
04:05:53 <kallisti> 11 PM is an interesting time to wake up.
04:06:40 <elliott> yes
04:13:04 <kallisti> @tell Vorpal so in one of the earlier missions of Magicka there's this dude that freaks out about goblins and says a bunch of hilarious gibberish; is any of that Swedish?
04:13:05 <lambdabot> Consider it noted.
04:21:24 <Sgeo> Goblins?
04:21:47 <Sgeo> I don't seem to recall any goblins
04:22:23 <kallisti> ..
04:22:28 <kallisti> you lie.
04:23:04 <Sgeo> ..?
04:23:22 <Sgeo> I didn't say no goblins were ever mentioned, just that I don't remember goblins being mentioned
04:23:35 <Sgeo> We are talking about Puella Magi Madoka Magica, right?
04:23:37 <zzo38> What does it mean "Note: this does not yield a monad unless the argument monad is commutative. "
04:24:40 <kallisti> zzo38: in the context of what?
04:24:51 <kallisti> Sgeo: yes of course.
04:24:52 <kallisti> that thing
04:24:54 <kallisti> that I don't know of.
04:25:24 <zzo38> kallisti: ListT
04:25:55 <monqy> hi #esoteric
04:26:05 <monqy> good job sgeo
04:26:08 <Sgeo> zzo38, that's just the standard implementation that has that issue, I think?
04:26:16 <Sgeo> Although I don't understand it either.
04:26:20 <Sgeo> monqy, hm?
04:26:39 <monqy> pretty sure magicka is a game kallisti plays
04:26:43 <Sgeo> Oh
04:27:00 <kallisti> monqy smart
04:29:01 <monqy> Sgeo: does ListT mean anything other than the "standard implementation"?
04:29:19 <Sgeo> monqy, "ListT done right"?
04:32:04 <monqy> how should I know
04:33:28 -!- Sgeo has left ("Leaving").
04:33:31 -!- Sgeo has joined.
04:33:40 <kallisti> There is no need to keep referencing/commenting on the past to validate the present and future as a sort of musical emollient for the masses. All artists plunder from everywhere, so did Simon and Garfunkel but to put Fleetfoxes into a neat box of "our generations Simon and Garfunkel" is really missing the point in a major way and quite insulting to FFs. I'm listening carefully to music 30 years, and I've never heard anyt
04:33:47 <kallisti> youtube comments are great.
04:34:11 <monqy> yes
04:40:18 -!- augur has quit (Remote host closed the connection).
04:40:37 <elliott> coppro: Ping
04:41:49 <zzo38> Is there another kind of ListT?
04:42:36 <elliott> http://www.haskell.org/haskellwiki/Amb :-)
04:43:14 <coppro> elliott: pong
04:43:31 <kallisti> help I'm too dead to read this code.
04:43:34 <elliott> coppro: I thought I had a question, but then I realised that clang almost certainly does -m32, so I lost my question
04:44:12 <kallisti> well, I can read cut
04:44:18 <kallisti> it clears the state list.
04:44:18 <coppro> oh
04:44:21 * kallisti smart.
04:48:32 -!- pumpkin has changed nick to copumpkin.
04:52:04 <Jafet> Fleet Foxes are so authentic, they use reverb effect on every track
04:52:45 <elliott> Jafet: true authenticity comes from having reverb right in your SOUL
04:54:10 <Sgeo> copumpkin, are you a dual?
04:58:20 <kallisti> Jafet: elliott: lolwhat
05:07:49 <Sgeo> elliott, kallisti: UPDATE
05:08:25 <monqy> cool
05:12:47 -!- MDude has changed nick to MSleep.
05:20:33 -!- augur has joined.
05:34:32 -!- TheJimmyJames1 has joined.
05:47:14 -!- kmc has quit (Quit: Leaving).
05:52:50 <zzo38> What should a function be called: BarrierT f b m t -> BarrierT (f, b -> BarrierT f b m t) (BarrierT f b m t) m t and Barrier f b t -> Barrier (f, b -> Barrier f b t) (Barrier f b t) t
05:55:30 -!- kmc has joined.
06:02:26 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
06:05:59 -!- Jafet has quit (Quit: Leaving.).
06:09:33 <elliott> @tell Gregor pachelbel
06:09:33 <lambdabot> Consider it noted.
06:11:59 -!- Vorpal has joined.
06:14:37 <zzo38> Do you know what such functions and there inverse would be called? I don't know.
06:15:44 -!- TheJimmyJames1 has quit (Quit: Leaving.).
06:23:00 <Vorpal> wtf my dns is broken
06:23:01 <lambdabot> Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it.
06:23:50 <zzo38> The DNS breaks sometimes in my computer, and then later it is fixed.
06:24:17 <Vorpal> kallisti: I don't remember which part you refer to. But in general the voiced over dialogue is mostly made up language with some English and Swedish words thrown in.
06:24:30 <Vorpal> brb going to restart my bouncer
06:24:38 <Vorpal> it's dns is broken for most other networks
06:24:41 <Vorpal> (wtf...)
06:24:46 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
06:25:24 -!- Vorpal has joined.
06:25:57 <Vorpal> actually it is routing to half the internet that is broken
06:27:10 <Vorpal> wtf ping works but connecting does not?
06:27:16 <Vorpal> and nor does traceroute
06:27:46 -!- Vorpal has quit (Client Quit).
06:28:22 -!- Vorpal has joined.
06:28:55 <Vorpal> actually not that either. Everything works fine from my laptop...
06:29:15 <zzo38> I don't know??????
06:30:03 -!- kmc has quit (Quit: Leaving).
06:31:06 <zzo38> Do you have any suggestions of the names of the functions I have described?
06:35:03 -!- kmc has joined.
06:35:42 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
06:36:17 -!- Vorpal has joined.
06:38:16 -!- TheJimmyJames has joined.
06:44:44 -!- oerjan has joined.
06:46:38 <elliott> hi oerjan
06:47:50 -!- TheJimmyJames has quit (Read error: Operation timed out).
06:49:27 -!- TheJimmyJames has joined.
06:49:33 <oerjan> dammit why must the godel's letter comment feed be limited to 10 comments
06:49:59 <elliott> goedel's letter. not goedel's last letter. not goedel's first letter
06:49:59 <elliott> just
06:50:01 <elliott> goedel's letter
06:50:14 <oerjan> *+lost
06:50:38 <oerjan> every time the two MrX and Pelotom trolls and counter-trolls post i lose messages and end up hunting around recent posts
06:57:03 -!- augur_ has joined.
06:57:54 -!- augur has quit (Ping timeout: 255 seconds).
06:58:18 -!- TheJimmyJames has quit (Read error: Connection reset by peer).
06:58:21 -!- elliott has quit (Ping timeout: 255 seconds).
06:59:06 <zzo38> Someone tried to answer my questions but seems as they did not understand this question. Did you even understand that?
07:03:00 <zzo38> Do any NSF music files use the track numbers to specify different variations (such as repeat vs non-repeat, equal temperament vs just intonation, etc) instead of another song?
07:05:58 -!- Jafet has joined.
07:06:02 -!- Jafet has quit (Changing host).
07:06:02 -!- Jafet has joined.
07:12:59 * oerjan braces for embarrasment by commenting on the issue on the blog again.
07:13:41 <oerjan> (as in "why don't you just do this" embarassment)
07:18:27 <oerjan> *+s
07:22:14 -!- kmc has quit (Quit: Leaving).
07:29:07 -!- zzo38 has quit (Remote host closed the connection).
07:35:50 <kallisti> hmmm
07:35:53 <kallisti> I need a new username for things.
07:36:05 <oerjan> bad_apple
07:36:15 <kallisti> oerjan: one must never be afraid of embarassment
07:36:22 <oerjan> O KAY
07:36:27 <kallisti> WE ARE ALL FOOLS
07:36:34 <kallisti> it is foolish to pretend you are not.
07:36:35 <oerjan> one should also learn to fly by flapping one's arms.
07:36:46 <kallisti> well, no...
07:37:08 <oerjan> kallisti: why not? it's approximately as easy.
07:37:21 <kallisti> http://www.youtube.com/watch?v=_F9RJSPnf8A
07:37:23 <kallisti> because this is better.
07:41:45 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
07:41:50 <oerjan> That's not flying, that's falling with style.
07:42:21 -!- Vorpal has joined.
07:42:23 -!- Vorpal has quit (Remote host closed the connection).
07:43:26 <kallisti> oerjan: I want to do this, but I know I'd just crash into some rocks
07:44:30 <kallisti> . The United States Parachute Association (USPA) requires in the Skydivers Information Manual that any jumper flying a wingsuit for the first time have a minimum of 200 freefall skydives, made within the past 18 months, and receive one-on-one instruction from an experienced wing suit jumper, or 500 jumps experience to go without an instructor.[16] Requirements in other nations are similar. Wingsuit manufacturers offer train
07:45:57 -!- Vorpal has joined.
07:46:01 -!- Vorpal has quit (Changing host).
07:46:01 -!- Vorpal has joined.
07:46:43 <Vorpal> [ 0.585378] pci_root PNP0A08:00: address space collision: host bridge window [mem 0x000c8000-0x000dffff] conflicts with Video ROM [mem 0x000c0000-0x000cffff]
07:46:44 <Vorpal> gnh
07:52:04 <kallisti> oerjan: I want to jump off a skyscraper in one of those wingsuits
07:52:16 <kallisti> and then follow.... a carefully planned route so I doubt crash into anything.
07:52:57 <oerjan> i'd be worried about turbulence.
07:53:18 <oerjan> well, if there were any chance of getting beyond my immense fear of heights, that is.
07:53:36 <kallisti> oerjan: I'd be worried about a stray gust of wind.
07:53:41 <kallisti> presumably they only fly when there's no wind?
07:54:13 <oerjan> i thought that was more or less the same thing.
07:54:33 <kallisti> turbulence is a more abrupt change
07:54:35 <kallisti> in most contexts
07:54:43 <kallisti> These techniques include the orientation relative to the aircraft and the airflow while exiting, and the way in which the flier will spread his legs and arms at the proper time so as not to hit the aircraft or become unstable in the relative wind.
07:54:51 <kallisti> ah yeah, they could just decrease surface area if they need to
07:55:48 <Jafet> http://www.pbfcomics.com/28/
07:57:34 <kallisti> With body shape manipulation and by choosing the design characteristics of the wingsuit, a flier can alter both his forward speed and fall rate. The pilot manipulates these flight characteristics by changing the shape of his torso, arching or bending at the shoulders, hips, and knees, and by changing the angle of attack in which the wingsuit flies in the relative wind, and by the amount of tension applied to the fabric wing
07:57:40 <kallisti> I wonder how they like
07:57:43 <kallisti> make themselves rotate.
07:58:36 <kallisti> While still very experimental, powered wingsuits, often using small jet engines strapped to the feet[13] or a wingpack set-up, allow for even greater horizontal travel and even ascent.
07:58:40 <kallisti> wtf
07:58:40 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
07:59:20 <Jafet> The proper term is "holy wtf batman".
07:59:26 -!- Vorpal has joined.
08:02:12 -!- nooga has joined.
08:05:29 <oerjan> to the batwingsuit
08:07:52 <kallisti> http://www.youtube.com/watch?v=h4arnATc04U
08:07:54 <kallisti> this is so good
08:09:32 <Vorpal> kallisti: I bet being in the jet is more comfortable :P
08:10:11 <Vorpal> also those jets are flying rather slowly (for jets that is)
08:10:33 <kallisti> well, yeah...
08:12:42 <kallisti> still his power to weight ratio is going to be pretty high because... well it's just a carbon-fiber wingspan and a person.
08:13:03 <kallisti> he just lacks much fuel I'd imagine.
08:14:11 <Vorpal> kallisti: and the human body can only take so much...
08:14:46 <Vorpal> wrt air speed and so on
08:20:23 * kallisti watches a man fly over the English Channel in a JETPACK
08:21:16 <Vorpal> personally it is not how I would chose to commute
08:22:13 <kallisti> that's because you're boring.
08:25:28 <Vorpal> kallisti: got a link to the video though?
08:26:14 <Vorpal> brb
08:26:41 <kallisti> it's not as interesting as the grand canyon vid
08:27:42 <kallisti> http://www.youtube.com/watch?v=WgdIE2t8QkM
08:30:22 <kallisti> he does some neat stunts in that one.
08:38:44 <Vorpal> kallisti: obviously you don't do stunts when commuting :P
08:40:52 * kallisti zzzzzzs
08:41:15 <Vorpal> kallisti: creeper with dyslexia?
08:41:27 <kallisti> wat?
08:41:31 <Vorpal> kallisti: that sound
08:41:45 <kallisti> wat?
08:41:57 <kallisti> it's like a thing
08:41:59 <kallisti> that indicates sleeping
08:42:01 <Vorpal> kallisti: you never played minecraft?
08:42:13 <kallisti> ..
08:42:18 <kallisti> ugh
08:42:19 <kallisti> no
08:42:21 <Vorpal> kallisti: oh
08:42:21 <kallisti> I have better things to do
08:42:23 <Vorpal> ...
08:42:26 <Vorpal> come on it is fun
08:42:37 <kallisti> I disagree.
08:42:43 <Vorpal> kallisti: have you tried it?
08:42:51 <Vorpal> and I don't mean the free classic version
08:42:51 <kallisti> I've seen people play it.
08:42:57 <kallisti> I actually have a pretty good imagination
08:42:58 <kallisti> so like
08:43:01 <kallisti> I can imagine playing it
08:43:03 <kallisti> without even having to
08:43:05 <kallisti> it's the neatest thing.
08:43:10 <Vorpal> kallisti: well at least it isn't like starcraft. I watched people play that. Seems utterly boring.
08:43:19 <kallisti> ...that is where you are wrong.
08:43:29 <kallisti> starcraft is like real-time chess on crack.
08:43:38 <Vorpal> kallisti: which is utterly boring
08:44:20 <Vorpal> kallisti: I tried many RTS, but so far I only found one fun to play: darwinia.
08:44:41 <kallisti> http://www.youtube.com/watch?v=tbwG63KVQz4
08:44:44 <kallisti> this game is good.
08:45:01 <Vorpal> kallisti: is there any jargon in it?
08:45:12 <kallisti> maybe.
08:45:19 <kallisti> but Husky is pretty good at explaining what is happening
08:45:20 <kallisti> if you like
08:45:24 <kallisti> know starcraft basics
08:45:34 <Vorpal> not really
08:45:47 <kallisti> he says "macro"
08:45:51 <kallisti> which isn't really very jargony
08:45:59 <Vorpal> kallisti: meaning like autohotkey?
08:46:02 <kallisti> no.
08:46:04 <kallisti> macromanagement
08:46:07 <Vorpal> I see
08:46:13 <kallisti> it refers to how you produce and spend money.
08:46:14 <kallisti> your economy.
08:46:16 <kallisti> unit production
08:46:17 <kallisti> etc
08:46:35 <Vorpal> kallisti: he has an annoying voice IMO
08:46:47 <kallisti> when you expand to new bases, when you research new tech, and what units you produce... are basically the three important points of macro.
08:46:51 <Vorpal> anyway I need to leave for university soon, won't be able to watch the whole thing now
08:46:53 <kallisti> Vorpal: you get used to it :P
08:47:22 <kallisti> there's also "micro" which is micromanagement... which is movement of individual units / multitasking
08:47:43 <Vorpal> I know about micromanagement. I played dwarf fortress. Which is not exactly RTS. Still fun though.
08:47:48 <Vorpal> kallisti: ever played dwarf fortress?
08:47:55 <kallisti> yep
08:47:57 <kallisti> it's fun.
08:47:59 <Vorpal> yeah
08:48:05 <kallisti> Vorpal: micro has a more specific meaning than it's usual meaning.
08:48:06 <kallisti> in sc2
08:48:09 <Vorpal> I see
08:49:34 <Vorpal> kallisti: anyway, I prefer sandbox games. Like minecraft and dwarf fortress.
08:49:37 <Vorpal> or RPGs
08:49:46 <Vorpal> open world RPGs are especially fun
08:49:57 <kallisti> me too, I just don't like minecraft because it's not a fun game. :P
08:50:13 <kallisti> but I also like strategy/competitive real-time games
08:50:17 <Vorpal> kallisti: it sure is. Sure the combat is meh. I prefer creative.
08:50:31 <kallisti> some FPSes, super smash bros, magicka, starcraft,
08:50:46 <Vorpal> I kind of suck at aiming at moving objects :P
08:50:54 <Vorpal> I'm okay with stealth based FPS
08:50:59 <Vorpal> like deus ex
08:51:06 <kallisti> my favorite FPS game is zombies mod in CoD actually. don't really like the multiplayer but the zombies mode is very fun.
08:51:15 <kallisti> *mode
08:51:15 <Vorpal> mhm
08:51:58 <kallisti> my max round is 32 on the kino der toten map
08:52:02 <kallisti> solo
08:52:08 <Vorpal> kallisti: The only FPSes I found fun to play are ones that are RPG-FPS mixes really. Like Deus Ex Human Revolution. Or Fallout New Vegas (haven't played Fallout 3)
08:52:24 <kallisti> opposite for me on the fallout stuffs
08:52:28 <kallisti> I played fallout 3
08:52:36 <Vorpal> well, the mechanics are pretty similar
08:52:41 <Vorpal> just different setting and story
08:52:46 <kallisti> I've seen it.
08:52:56 <kallisti> the mechanics are a little different also. they changed some skills around.
08:53:03 <Vorpal> right
08:53:07 <kallisti> and the crafting stuff
08:53:09 <Vorpal> the VATS system is interesting
08:53:18 <kallisti> the vats system is boring. :(
08:53:27 <Vorpal> oh?
08:53:30 <Vorpal> I disagree
08:53:32 <Vorpal> but whatever
08:53:35 <kallisti> especially with all the vats-related perks.
08:53:40 <Vorpal> hm
08:53:52 <kallisti> you basically just vats everything and..... continue vatsing everything
08:53:52 <Vorpal> anyway I need to leave. Cya
08:53:56 <kallisti> mmk
08:53:57 <Vorpal> kallisti: actually no
08:54:15 <Vorpal> kallisti: VATS isn't realistic for sniper rifle over long distance at a large unmoving target
08:54:24 <Vorpal> VATS underestimate the chance to hit then
08:54:25 <Vorpal> bbl
08:54:37 <kallisti> oh... kAY? :p BYE
08:55:17 <Jafet> The chance to hit depends on your screen resolution, too
08:56:55 <kallisti> UNFAIR!
08:56:58 <kallisti> ..
08:57:43 <Jafet> And the bullets are instantaneous rays anyway, so it doesn't matter if they're moving
08:58:05 <kallisti> well I don't think vats is based on your screen res.
08:58:22 <Jafet> No, but manual aiming can be
08:58:37 <Jafet> If you max out your character so that there's no sway
08:58:58 <kallisti> HD TVS ARE OVERPOWERED. QQ
08:59:10 <Jafet> Uh, they have only HD resolution.
08:59:22 <Jafet> Nothing on my 2560x1440
09:00:04 <Jafet> Hm, did Bethesda really use the same game engine for four games?
09:00:18 <Jafet> That just feels like they pulled something on the world
09:01:06 -!- GreaseMonkey has quit (Quit: The Other Game).
09:03:03 <kallisti> Jafet: sort of.
09:03:15 <kallisti> Jafet: they used a new AI for the NPCs in skyrim
09:03:23 <kallisti> I'm sure there have been improvements.
09:03:31 <Jafet> Shiny rocks
09:03:44 <kallisti> graphics, yes. shiny interfaces.
09:04:34 <kallisti> oh, and, uh, giant fucking worlds filled with towns, caves, dungeons, random encounters, every NPC having voice-overs, multiple options for quests, etc.
09:04:55 <Jafet> The new AI isn't any more believable than the Oblivion ones, though
09:04:57 <kallisti> it's not like they're getting away with anything.
09:05:02 <Jafet> It's the NPC animations doing the most of the work
09:05:04 <kallisti> Jafet: well yeah, but it's new nonetheless
09:05:30 <kallisti> nothing was pulled, I think. I believe they've put plenty of work into each game.
09:05:32 <Jafet> The NPCs tilting their heads actually goes a long way to create realism
09:05:44 <kallisti> it's better than before, certainly
09:06:34 <Jafet> Well, when you set out to create a game on the scale that Bethesda does, you normally wouldn't want to release it in a rough, bug-ridden state like Bethesda does.
09:08:51 -!- oerjan has quit (Quit: leaving).
09:13:31 <nooga> what
09:13:33 <nooga> skyrim
09:13:37 <nooga> oh yeah
09:14:14 <nooga> that reminded me of my second pc which runs the game constantly for 3 days
09:28:06 <kallisti> @tell elliott amb is interesting. It does something similar to what I have in mind for my graph language, except that in the graph language it will be implicit to every change of state.
09:28:06 <lambdabot> Consider it noted.
09:29:00 <nooga> lambdabot - the Siri of IRC
09:30:39 <kallisti> @tell kallisti to stop using @tell
09:30:39 <lambdabot> You can tell yourself!
09:30:45 <kallisti> lambdabot: thanks
09:39:10 <kallisti> hmm
09:39:21 * kallisti checks out Oz to see how it efficiently does constraint programming.
09:42:11 <kallisti> I'm not really sure if any of this is relevant though
09:50:55 <kallisti> but basically the syntax would look something like....
09:51:21 <kallisti> constraint { node -> replacement; node -> replacement; ... }
09:51:31 <kallisti> the symbols can be changed later if desired.
09:53:01 <kallisti> and if the same node is replaced by two rules then this essentially creates two nodes with past edges that point back to the original node.
09:53:16 <kallisti> a sort of non-deterministic split.
09:54:21 <kallisti> so, the somewhat annoying problem of determining the order of execution of graph rewriting rules
09:54:24 <kallisti> is.. no longer a problem.
09:57:16 <kallisti> so I guess I should start working on a) what constraints look like b) how to define predicates to use in constraints c) how to define functions in general d) some built-in operations e) how to refer to nodes
09:57:29 <kallisti> I guess the constraint would have variables... so like
09:57:54 <kallisti> X > 2 { X -> X+1 }
09:58:29 <kallisti> X here refers to any node. if a node satisfied the constraint, then it's replaced by the node that's produced from adding one to the node's value.
10:00:21 <kallisti> X > Y { X -> null }
10:00:27 <kallisti> this would delete every node but the smallest.
10:01:21 <kallisti> (delete is kind of the incorrect word, as you can still backtrack)
10:06:07 -!- monqy has quit (Quit: hello).
10:06:15 <kallisti> monqy: hello
10:06:44 <kallisti> but I also want things like....
10:07:00 <kallisti> X > Y { X -> past(X) }
10:07:10 -!- hagb4rd has joined.
10:07:42 <kallisti> which would replace X with a past node of itself. since there could possibly be more than one past node this is non-deterministic.
10:08:07 <kallisti> hmmm okay I could just have sets.
10:08:18 <kallisti> X > Y { X -> [X, X+1] }
10:08:43 <kallisti> replace all non-minimum nodes with both itself and itself plus 1
10:09:02 <kallisti> and then have a | which applys constraints to sets.
10:10:20 <kallisti> something like...
10:11:07 <kallisti> X > Y { X -> e in past(X) | e = e^2 }
10:12:21 <kallisti> or....
10:13:27 <kallisti> X > Y { X -> a,b in past(X) | distance(X,a) > distance(X, b) }
10:13:37 <kallisti> to revert to the most recent past node.
10:14:55 <kallisti> minimum(X) := a,b in X | distance(X, a) > distance(X, b)
10:15:22 <kallisti> X > Y { X -> minimum(past(X)) }
10:15:34 <kallisti> er...
10:15:34 <kallisti> no
10:15:35 <kallisti> wait
10:15:46 <kallisti> that doesn't work :P
10:16:06 <kallisti> you need something like...
10:16:37 <kallisti> minimum(X) := b where a,b in X | distance(X, a) > distance(X, b)
10:16:56 <kallisti> (will improve the syntax of these things at some point)
10:20:55 <kallisti> > let x = [1..5] in [b | a <- x, b <- x, a > b]
10:20:55 <lambdabot> [1,1,2,1,2,3,1,2,3,4]
10:20:59 <kallisti> lol
10:21:38 <nooga> whoa
10:24:21 -!- azaq23 has joined.
10:24:37 -!- azaq23 has quit (Max SendQ exceeded).
10:27:10 -!- nooga has quit (Ping timeout: 255 seconds).
10:29:30 -!- ais523 has joined.
10:30:38 -!- nooga has joined.
10:40:57 <kallisti> > let x = [1..5] in [b | let s = join(liftA2(,))x, (a,b) <- s, a > b]
10:40:58 <lambdabot> [1,1,2,1,2,3,1,2,3,4]
10:41:00 <kallisti> :(
10:41:13 <kallisti> same thing.
10:42:01 <Deewiant> > concat . init . inits $ [1..5]
10:42:03 <lambdabot> [1,1,2,1,2,3,1,2,3,4]
10:42:54 <Vorpal> kallisti, weren't you going to sleep?...
10:44:12 <ais523> :t init
10:44:12 <lambdabot> ais523: You have 4 new messages. '/msg lambdabot @messages' to read them.
10:44:13 <lambdabot> forall a. [a] -> [a]
10:44:17 <Vorpal> ais523, hello
10:44:19 <ais523> hi
10:44:23 <kallisti> Vorpal: no
10:44:29 <ais523> > init [1,2,3,4,5]
10:44:30 <lambdabot> [1,2,3,4]
10:44:32 <ais523> backwards tail?
10:44:37 <Vorpal> kallisti, pretty sure you said like "zzzzzs" or something
10:44:37 <kallisti> I was actually zzzzzing because you were putting me to sleep. :P
10:44:42 <Vorpal> kallisti, oh
10:44:50 <kallisti> Vorpal: ha ha ha
10:45:24 <Vorpal> hm that is some interesting xmas decoration in the window to the robotics lab here at university
10:45:35 <kallisti> anyway how do you implement minimum on a set without doing something like a fold
10:45:52 <ais523> kallisti: well, you could do an associative fold
10:45:57 <ais523> which isn't the same as foldl or foldr
10:46:03 <ais523> but you might still consider it as being like a fold
10:46:22 <Vorpal> basically LEDs mounted on a fan, rotating. The LEDs are synced to the rotation so they spell out a word
10:46:27 <Vorpal> gnh, did that get through? Just lost wlan for a bit
10:46:29 <Vorpal> ("God Jul", Swedish for "Merry Christmas")
10:46:48 <Vorpal> fuck microwave ovens.
10:46:51 <kallisti> or I guess actually what I'm asking
10:46:54 <Vorpal> they mess up wlan badly
10:47:08 <kallisti> is how do you use universal quantification to get the minimum of a set.
10:47:19 <kallisti> oh...
10:47:20 <kallisti> duh
10:47:43 <kallisti> exists a. forall b. a < b
10:47:46 <Vorpal> hm and the time too
10:47:48 <Vorpal> on the fan
10:48:20 <kallisti> hmmm my mother seems to be under the impression that second-hand hookah vapor is somehow going to be bad for her because she has asthma.
10:48:27 <kallisti> which I think is probably not true.
10:52:55 <kallisti> because I'm on the other side of the house
11:41:35 -!- ais523_ has joined.
11:41:59 -!- ais523 has quit (Disconnected by services).
11:42:01 -!- ais523_ has changed nick to ais523.
11:42:05 <ais523> X just exited for no obvious reason…
11:44:16 <kallisti> ais523: I love when that happens.
11:47:12 <ais523> hmm, there's garbage on tty2
11:48:25 <kallisti> ais523: data has feelings too. just because no one's using it doesn't mean it's not data.
11:48:39 <kallisti> garbage is insulting to those poor bits. :(
11:48:52 <ais523> *desert login: 1*41*41*41*41*4Password: HHHHHHHHHHHPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPHHHHQQQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPUbuntu 10.04.3 LTS desert tty2
11:48:54 <ais523> desert login:
11:49:03 <ais523> (note: that isn't actually my password)
11:49:09 <kallisti> good password
11:51:15 <ais523> (nor my username)
12:22:22 -!- nooga has quit (Ping timeout: 255 seconds).
12:37:07 -!- augur_ has changed nick to augur[afk].
12:44:24 -!- ais523 has quit (Ping timeout: 244 seconds).
12:46:30 -!- sebbu2 has joined.
12:46:31 -!- sebbu2 has quit (Changing host).
12:46:31 -!- sebbu2 has joined.
12:47:27 -!- Phantom_Hoover has joined.
12:47:31 -!- ais523 has joined.
12:48:09 -!- sebbu has quit (Ping timeout: 248 seconds).
12:49:32 <kallisti> can anyone explain why you would said "pairwise distinct" instead of "all elements are unique"
12:51:02 -!- ais523 has quit (Excess Flood).
12:52:40 -!- ais523 has joined.
13:01:03 <kallisti> what the hell
13:01:07 <kallisti> about a week ago
13:01:25 <kallisti> I was commenting on how warm it is in November
13:01:27 <kallisti> and today
13:01:28 <kallisti> it's snowing.
13:02:01 <kallisti> I don't even think it's below freezing. no, it's not.
13:10:39 <itidus21> erss kapakassa ja vakioasiakas ehdotti hnelle
13:15:59 -!- ais523 has quit (Ping timeout: 252 seconds).
13:18:54 <kallisti> itidus21: don't pretend you're not American.
13:19:19 <itidus21> http://s3.amazonaws.com/data.tumblr.com/tumblr_l99k91VcPO1qdpbleo1_1280.jpg?AWSAccessKeyId=AKIAJ6IHWSU3BX3X7X3Q&Expires=1322659120&Signature=ZADFaT4zuI5XQjZSiuliUVob0VQ%3D
13:20:04 <kallisti> ah, this must be what Sweet Bro and Hella Jeff is parodying.
13:20:16 -!- ais523 has joined.
13:24:36 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/mt83n/dear_sociologists_why_do_black_people_not_enjoy/
13:24:37 <lambdabot> Phantom_Hoover: You have 9 new messages. '/msg lambdabot @messages' to read them.
13:24:38 <Phantom_Hoover> This, wow.
13:26:36 -!- ais523 has quit (Ping timeout: 244 seconds).
13:27:25 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:27:32 <Phantom_Hoover> @tell elliott why why why this was a good day
13:27:32 <lambdabot> Consider it noted.
13:28:17 <kallisti> Phantom_Hoover: you're so popular.
13:31:35 <kallisti> interesting, so pistachio seeds actually split open like that because of artificial selection.
13:39:12 -!- nooga has joined.
14:11:19 <kallisti> http://pics.kuvaton.com/kuvei/there_is_no_censorship_in_us.jpg
14:22:08 <Phantom_Hoover> kallisti, that's a significantly more complex thing than straight "censorship".
14:26:59 <kallisti> yes I agree.
14:27:32 <kallisti> it seems to strange to me that for some reason the US needs different information/stuff from the rest of the world.
14:28:13 <Phantom_Hoover> It'll mainly be a combination of culture, world prominence and the size of the market.
14:30:49 -!- olsner has quit (*.net *.split).
14:36:47 -!- olsner has joined.
14:48:58 -!- ais523 has joined.
14:59:47 -!- Zuu has quit (Read error: Connection reset by peer).
15:01:51 -!- copumpkin has joined.
15:03:53 -!- Zuu has joined.
15:17:37 <Phantom_Hoover> http://www.dalnefre.com/wp/2011/11/fexpr-the-ultimate-lambda/
15:17:47 <Phantom_Hoover> This looks exceptionally stupid from a cursory glance.
15:18:04 <Phantom_Hoover> "Application of a Lambda causes evaluation of its operands, producing arguments which are combined as specified by a body expression."
15:18:16 <Phantom_Hoover> Yes, yes it is.
15:19:42 <kallisti> that doesn't make sense to me.
15:19:44 <kallisti> producing arguments?
15:19:59 <kallisti> oh
15:20:12 <kallisti> ...that's... stupid.
15:20:48 <Phantom_Hoover> It appears he's reinvented lazily-evaluated lambdas.
15:23:47 <kallisti> "application of a lambda causes evaluation of its operands" sounds pretty unlazy to me.
15:32:21 -!- mrgaddy has joined.
15:33:16 <mrgaddy> hello to all esoterics!
15:33:54 <Phantom_Hoover> `? welcome
15:34:02 <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
15:35:52 -!- mrgaddy has quit (Client Quit).
15:36:40 <Phantom_Hoover> Another neopagan sent packing.
15:39:00 -!- MSleep has changed nick to MDude.
15:40:23 -!- copumpkin has quit (Remote host closed the connection).
15:40:48 -!- copumpkin has joined.
15:43:59 <kallisti> Phantom_Hoover: sometimes I wish we were a joint channel between neopagans and amateur language designers.
15:44:18 <Phantom_Hoover> Hey, oklopol's a professional language designer.
15:45:07 <kallisti> I guess Gregor kind of is too?
15:45:08 <kallisti> well, no
15:45:19 <kallisti> unless he wrote a paper about Plof?
16:02:48 -!- pikhq has quit (Ping timeout: 244 seconds).
16:02:57 -!- pikhq has joined.
16:05:17 -!- ais523 has quit (Remote host closed the connection).
16:24:34 -!- elliott has joined.
16:26:50 <kallisti> !perl print "\n" =~ /\s/
16:26:53 <EgoBot> 1
16:26:57 <kallisti> whew. sanity.
16:29:33 -!- elliott has set topic: The IOCCC is back on! http://www.ioccc.org | http://codu.org/logs/_esoteric/.
16:29:41 * elliott now proceeds to find out why oerjan did that.
16:29:41 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:33:26 <kallisti> !perl my $x = "hi hi ho hi"; while ($x =~ /hi/g) {print $&}
16:33:27 <EgoBot> hihihi
16:33:33 <kallisti> whew. sanity.
16:33:38 <kallisti> sometimes I have to check when I'm writing perl.
16:34:24 <elliott> isn't loss of sanity the standard perl coding state
16:34:42 <kallisti> yes.
16:34:57 <kallisti> actually it's the loss of sanity that makes me check all of these dumb things.
16:35:15 * kallisti cannot remember like 3 million special cases of stuff all the time.
16:37:10 -!- sebbu2 has changed nick to sebbu.
16:44:50 <oklopol> i wasn't accepted in stacs :(
16:45:09 <Phantom_Hoover> Oh noklopol?
16:45:51 <oklopol> if you look at accepted papers in http://stacs2012.lip6.fr/, you'll see why
16:45:53 <oklopol> they are idiots.
16:46:28 <elliott> oklopol is dum lol
16:54:01 -!- ais523 has joined.
17:03:52 -!- kallisti has quit (Ping timeout: 258 seconds).
17:05:56 <ais523> elliott: here? if you're reading this live and not logreading, here's a hilariously breakage of a phpBB webforum: http://mafiascum.net/forum/viewtopic.php?f=8&t=14360&start=50
17:06:00 <ais523> everyone's panicking, obviously
17:06:13 <ais523> (creating new posts works, incidentally, it's just that all existing information seems to be badly messed up)
17:06:14 <elliott> hi
17:06:21 <elliott> ha
17:06:29 <ais523> my favourite bit is the "Jump to" box at the bottom
17:06:35 -!- kallisti has joined.
17:06:43 <ais523> oh, and half the pages fail with an internal error, the others are like that
17:07:04 * Sgeo was vaguely considering playing on MS once
17:07:10 <Sgeo> Not sure I have the patience though
17:07:19 <ais523> if you're not sure, you don't
17:07:47 <ais523> elliott: as a bonus, none of the site admins are online, but one of the art people is, and tried to fix the problem by changing the default style to be one that they were working on as a joke
17:07:58 <ais523> (or at least, that had amsuing placeholder graphics in)
17:08:02 <elliott> heh
17:08:10 <ais523> so everyone assumed that it was some sort of hack attempt
17:08:16 <ais523> (they changed it back after it was clear that it did nothing useful)
17:08:29 <ais523> but now everyone is blaming the tigers
17:08:41 <Sgeo> ais523, where can you see what anyone is actually saying?
17:08:53 <Sgeo> Oh, is there an IRC channel?
17:09:08 <ais523> Sgeo: any thread which was created after this happened
17:09:09 <ais523> like http://mafiascum.net/forum/viewtopic.php?f=8&t=19711
17:09:23 <Sgeo> Ah
17:09:47 <kallisti> hmm, I /might/ actually end up using the state variable declaration in PErl
17:09:47 <kallisti> for my IRC bot
17:12:13 <ais523> elliott: any idea of what could cause that sort of breakage?
17:12:20 <ais523> it seems to be some sort of systematic corruption
17:14:10 -!- monqy has joined.
17:14:25 -!- kallisti has quit (Ping timeout: 255 seconds).
17:14:30 -!- kallisti has joined.
17:14:30 -!- kallisti has quit (Changing host).
17:14:30 -!- kallisti has joined.
17:15:36 <elliott> ais523: hmm, reordering of table columns?
17:15:41 <elliott> or inserting a new one in the wrong place
17:15:53 <kallisti> @help
17:15:54 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:15:56 <kallisti> @help help
17:15:57 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:16:04 <ais523> perhaps, but it pretty clearly involves more than one table with any sensible architecture
17:16:09 <ais523> e.g. everyone's showing as having joined on the epoch
17:16:17 <elliott> weird
17:16:30 <ais523> (I'm not assuming that phpBB's arch is sensible, but I don't think it'd be /that/ crazy)
17:16:36 <elliott> "Who the Eff are you and how did you join in 1969"
17:16:50 <ais523> hmm, unless join dates are calculated from the posts table
17:16:59 <elliott> ais523: they're not
17:17:07 <elliott> I know a /very slight/ amoutn about phpBB
17:17:13 <ais523> good to know
17:17:20 <ais523> there's definitely an index on (user, thread, date)
17:17:23 <ais523> in the posts table
17:17:39 <ais523> so it wouldn't be impossible to assume there's one on (user, date) too; it'd just be wrong
17:19:35 <elliott> ais523: well, join date can't be calculated from date of first post
17:19:47 <ais523> yes, that's what I meant by "wrong"
17:19:56 <ais523> oh, everyone's avatar vanished too
17:20:09 <ais523> (but changing avatars worked and put them back to normal, or alternatively tiger-themed)
17:20:14 <ais523> and that can't be related to the posts table, surely
17:20:37 <elliott> ais523: well, IIRC avatar info is stored in a table, just not the files themselves
17:21:05 <ais523> right, but it wouldn't be the same table as posts unless the database was normalized in a really crazy way
17:21:17 <ais523> typically, changing avatar changes it on all posts, you don't want to go back over all the posts and update it by hand
17:21:29 <ais523> thus, it's stored in a separate table, almost certainly
17:21:30 <elliott> lol
17:21:35 <elliott> i think it's stored in the user table
17:21:51 -!- kallisti has quit (Ping timeout: 240 seconds).
17:22:05 -!- kallisti has joined.
17:22:05 -!- kallisti has quit (Changing host).
17:22:05 -!- kallisti has joined.
17:22:15 <kallisti> help I'm in wlan limbo
17:22:44 <elliott> "The tigers are unrelated to the problem at hand."
17:23:27 <elliott> ais523: this xalxe person sure does post a lot
17:23:33 <kallisti> elliott: I wonder how long "pretentious hipster" has been cool.
17:23:44 <ais523> elliott: he's not a top poster site-wide, he's just interested in the whole tigers incident
17:23:44 <kallisti> at least since like the 50s right?
17:23:55 <elliott> Tiger Incident(tm)
17:24:32 <ais523> well, it has to be called something
17:24:43 <elliott> ais523: the blognomic dynasty is still going?
17:24:58 <ais523> elliott: it's the one after the one that started during the Agoran invasion
17:25:03 <elliott> yep, I know
17:25:10 <ais523> the last one was very short
17:25:14 <ais523> this one seems a more usual length
17:25:15 <elliott> it's been on this one the last like ten times i've checked :P
17:25:19 <ais523> although it's in need of a win condition
17:25:40 <kallisti> you know what would be awesome
17:25:42 <ais523> elliott: btw, I realised that Braid's time travel model is a superset of Feather's; e.g. the first puzzle in world 3 is pretty much exactly a <<= operation, giving the key to the player
17:25:49 <elliott> haha
17:25:58 <ais523> and world 2 should serve as a big demonstration of why timeloops are so easy to make by mistake in Feather
17:26:06 <kallisti> little balls of soft pretzel, filled with mozzarella. one day I shall make that.
17:26:10 <ais523> it's actually a good visualisation tool
17:26:20 <elliott> has it solved any feather problems yet?
17:26:26 <ais523> no, I don't think so
17:26:40 <ais523> in Braid, things can just have a glowy green outline and be outside the usual flow of time
17:26:46 <ais523> that's like the Feather version of unsafePerformIO
17:26:48 <elliott> cheating!
17:26:53 <monqy> did someone say feather
17:26:58 <elliott> can you play the game without that?
17:27:20 <ais523> you can't cause things to do that; some puzzles (all in world 3, and many elsewhere) have them naturally on the map, thouhg
17:27:21 <ais523> *though
17:27:56 <ais523> each world has its own gimmick (apart from 2, whose gimmick is not having a gimmick)
17:28:06 <ais523> btw, the worlds are numbered starting from 2; it's an effect of the pretentiousness
17:28:07 <ais523> 2 is first
17:28:26 <elliott> the end is 1, right?
17:28:43 <ais523> yep
17:29:01 <ais523> well, or beginning depending on how you look at it, the game's plot is time-reversed (probably inevitably)
17:29:35 <ais523> but it's the level you play last
17:29:45 <elliott> ais523: a video title on YouTube you might find amusing: "55 Bugs in 3 Minutes (Minecraft 1.0.0)"
17:29:56 <ais523> indeed
17:30:05 <ais523> is it single-segment, or IL?
17:30:14 <elliott> ?
17:30:37 <ais523> are there discontinuities in the action, like saving and then loading elsewhere, or cutting with things done during the cut?
17:31:06 <ais523> (if it repeatedly saves and loads in the same place, it's segmented, but that seems really unlikely for that sort of video)
17:31:23 <elliott> oh, there's a cut after every bug
17:31:31 <elliott> demonstrating them all with one large contraption would be... impressive
17:32:10 <ais523> single-segments are much more impressive than ILs for that reason
17:32:14 <Phantom_Hoover> Project for Pyralspite?
17:32:16 <elliott> "in single player, arrows don't affect a pressure plate until a particle effect intersects the pressure plate"
17:32:32 <ais523> although ILs are generally much faster, to make up for it
17:32:37 <elliott> still can't get over how unlikely that bug is
17:32:38 <Phantom_Hoover> That bug still amazes me.
17:33:06 <elliott> ais523: (What is that terminology from? TASes?)
17:33:07 <Phantom_Hoover> Boosters, I can get. Water ladders, I can get. Boatvators, I can get. But that?
17:33:14 <ais523> elliott: unassisted speedruns
17:33:22 -!- TheJimmyJames has joined.
17:33:23 <ais523> TASes are really heavily segmented by definition
17:33:38 <ais523> although there's been one attempt I know of at an IL TAS, TASvideos wouldn't accept it
17:34:05 <ais523> as they verify that the whole run is continuous using emulators, and ILs aren't continuous by definition
17:34:09 <elliott> ais523: well, TASes are indistinguishable from someone playing ridiculously well without save-scumming, no?
17:34:17 <elliott> I mean, the end result
17:34:23 <ais523> elliott: right, indeed
17:34:27 <elliott> oh, I had the terminology the wrong way aroudn
17:34:29 <ais523> so they look like single-segments when played back
17:34:33 <kallisti> Phantom_Hoover: all creative sandboxy games need perpetual motion machines.
17:34:36 <elliott> what does IL stand for?
17:34:39 <ais523> or occasionally, single-segment with resets
17:34:41 <ais523> individual level
17:34:43 -!- TheJimmyJames has quit (Client Quit).
17:34:51 <ais523> because you have to play the whole game a level at a time in any order
17:35:07 <elliott> heh
17:35:17 <ais523> it's typically used for things like racing games
17:35:28 <ais523> where the levels are all independent, and any ordering of the levels is entirely arbitrary
17:35:48 <ais523> (and continuity is thus not required; SDA even allows the levels of an IL to be done by different people, and just adds together the best time achieved for each level)
17:36:00 <elliott> "A half-block with ice underneath it is slippery."
17:36:03 <elliott> Phantom_Hoover: we are using this
17:36:13 <Phantom_Hoover> Yes.
17:36:17 <Phantom_Hoover> Yes we are.
17:37:47 <kallisti> elliott: I think I would play minecraft if it were more CAy
17:38:11 <kallisti> Conway's Game of Life: the Game!
17:38:45 <kallisti> I guess redstone is kind of like wireworld???? kind of???????
17:38:52 <ais523> kallisti: Elliottcraft (the game I'm not really working on but am designing, and that's named after elliott to cause confusion) is basically a bully automaton
17:38:55 <ais523> with only a few individual components
17:39:00 <ais523> being 3D rather than 2D means only a few are needed
17:39:07 <ais523> and I think it's TC, although haven't proven it
17:39:23 <kallisti> ais523: import state: ground
17:39:26 <kallisti> *important
17:39:36 <kallisti> assuming you walk around in it
17:39:51 <ais523> kallisti: there is a possible content for a cell that is solid and does nothing
17:40:03 <kallisti> good.
17:40:06 <ais523> two, in fact, one that falls and can be pushed around, and one that's immobile and just hangs there in midair
17:40:14 <kallisti> excellent.
17:40:26 <elliott> ais523: So, sand and stone? :-)
17:40:34 <kallisti> stupid minecraft and its IMPOSSIBLY FLOATING STRUCTURES which are SOMETIMES NOT WANTED.
17:40:38 <kallisti> but OTHERTIMES KIND OF COOL.
17:40:41 <elliott> ais523: (in Minecraft, sand and gravel alone are affected by gravity)
17:40:44 <ais523> elliott: I don't think they have names yet, other than really descriptive names
17:40:57 <ais523> but the moveable one acts rather more solid than sand
17:41:05 <elliott> ais523: sand is solid in MC
17:41:10 <ais523> oh, right
17:41:22 <kallisti> I read MC as mind control.
17:41:24 <ais523> well, the game isn't going to make much sense real-worldly, but it should make at least more sense than /that/
17:41:44 <ais523> I've even vaguely envisaged it working as an MMO
17:42:02 <kallisti> ais523: glider guns are a must.
17:42:03 <ais523> and I'm trying to work out how easily you could attack people by building walls around them or sending lots of factory blocks at them
17:42:11 <ais523> kallisti: oh, don't worry about that
17:42:21 <ais523> there's a block whose purpose is to be a glider with side effects, and it's quite easy to create
17:42:46 <kallisti> reflecty mirror things that move gliders around?
17:42:54 <kallisti> also: portals
17:42:58 <kallisti> every game benefits from portals.
17:43:15 <kallisti> for example see: portal
17:43:19 <elliott> ais523: I've always liked the idea of games that are basically single-player MMOs
17:43:25 <ais523> let's see… we have air, ground-like blocks (mobile/levitating), conveyor blocks (mobile/levitating), factory blocks
17:43:35 <ais523> conveyor blocks and factory blocks both have six possible orientations
17:43:38 <kallisti> elliott: that sounds horrible kind of. almost as horrible as regular MMOs
17:43:55 <ais523> none of the blocks can self-propel; but factory blocks can repeatedly create conveyor blocks beneath themselves
17:44:05 <ais523> which effectively gives you a side-effecting glider
17:44:13 <kallisti> ais523: you could eliminate the diffusion of mobile and levitating by just putting block on a single kind of levitating block.
17:44:17 <elliott> i.e., the only mode is online server play
17:44:18 <elliott> /but/
17:44:23 <elliott> everyone spawns like miles and miles away from each other
17:44:34 <elliott> so you never know unless you like accidentally cross the path of someone exploring far out
17:44:35 <ais523> kallisti: that'd make severe differences from the way computation worked
17:44:39 <elliott> or make plans to meet up with someone
17:44:40 <ais523> elliott: but then, how would you play it offline?
17:44:48 <ais523> also, someone would probably make some sort of space-filling machine before long
17:44:54 <ais523> and everyone would come across it eventually
17:44:58 <elliott> ais523: you don't (bonus points if it doesn't tell you it's connecting to the network before you realise it yourself)
17:45:15 <ais523> elliott: then it's effectively malware
17:45:19 <elliott> ais523: AWESOME malware
17:45:23 <kallisti> ais523: peano curves: the game?
17:45:24 <ais523> well, yes, but still malware
17:45:31 <ais523> elliott: more to the point, my network connection is often very unreliable
17:45:41 <ais523> so I'd notice the game repeatedly crashing
17:45:43 <elliott> ais523: well, it helps to dilute the world of malware with fun malware
17:45:47 <elliott> a world with fun malware > a world with unfun malware
17:46:42 <kallisti> a world with fun malware + a world with unfun malware = a world with unfun malware
17:46:46 <kallisti> therefore, a world with fun malware = 0
17:47:20 <kallisti> ...
17:47:36 * kallisti good math
17:47:37 <ais523> therefore, a world with unfun malware < 0
17:47:48 <ais523> (and <0 < <3)
17:48:25 <kallisti> > (<0) < (<3)
17:48:26 <lambdabot> *Exception: (==): No overloading for function
17:49:06 <ais523> hmm, I wonder why that's erroring on (==)
17:49:15 <kallisti> a large part of me wishes that functions were orderable and equatable.
17:49:33 <monqy> then define ordering and equality on functions
17:49:35 <kallisti> ais523: I wonder why that's a runtime error.....
17:49:40 -!- nooga has quit (Ping timeout: 245 seconds).
17:49:48 <elliott> because
17:49:58 <elliott> > (sin + cos) pi
17:49:59 <lambdabot> -0.9999999999999999
17:50:10 <ais523> elliott: some library, presumably?
17:50:18 <ais523> also, what?
17:50:20 <elliott> library for what
17:50:22 <ais523> > cos pi
17:50:22 <lambdabot> -1.0
17:50:26 <ais523> > sin pi
17:50:26 <lambdabot> 1.2246467991473532e-16
17:50:30 <ais523> oh, I see
17:50:32 <kallisti> ais523: num instance for functions
17:50:41 <ais523> elliott: defining + on functions
17:50:44 <monqy> sin pi.....
17:50:50 <elliott> ais523: it's just a Num instance
17:50:55 <elliott> but Num requires Eq and Show
17:50:56 <elliott> because bad
17:51:00 <ais523> oh, aha
17:51:14 <kallisti> elliott: does Eq requite Ord?
17:51:20 <elliott> erm
17:51:22 <elliott> but Num requires Ord and Show
17:51:23 <Sgeo> Ord requires Eq
17:51:24 <elliott> or does it
17:51:25 <elliott> @src Num
17:51:25 <lambdabot> class (Eq a, Show a) => Num a where
17:51:25 <lambdabot> (+), (-), (*) :: a -> a -> a
17:51:25 <lambdabot> negate, abs, signum :: a -> a
17:51:25 <lambdabot> fromInteger :: Integer -> a
17:51:26 <kallisti> oh...
17:51:27 <kallisti> okay.
17:51:29 <elliott> no Ord isn't required
17:51:31 <elliott> I wonder why they defined it
17:51:42 <kallisti> me too.
17:52:04 <ais523> and I wonder why they defined it in terms of ==
17:52:13 <ais523> @src (a->b) <
17:52:13 <lambdabot> Source not found. BOB says: You seem to have forgotten your passwd, enter another!
17:52:22 <kallisti> > ((+3) > (+4)) 5
17:52:23 <lambdabot> Couldn't match expected type `t1 -> t'
17:52:23 <lambdabot> against inferred type `GHC.B...
17:52:36 <kallisti> ..
17:52:38 <kallisti> yeah
17:52:38 <ais523> it'd be great if the rest of the error was printed
17:52:45 <ais523> :t ((+3) > (+4))
17:52:45 <lambdabot> Bool
17:52:48 <Sgeo> Pretty clearly GHC.BOol or siome..
17:52:50 <ais523> ah, there we go
17:52:59 <ais523> in retrospect, that was inevitable
17:53:03 <kallisti> ..heh, indeed.
17:54:03 <kallisti> elliott: does caleskell do any other stuff with function instances that would require Ord?
17:54:11 <elliott> don't think so
17:54:48 <Sgeo> @info (->)
17:54:48 <lambdabot> Parse error at "->)" (column 2)
17:54:57 <Sgeo> @help info
17:54:58 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:55:05 <Sgeo> @help @info
17:55:05 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:55:10 * Sgeo facepalms
17:56:42 <kallisti> ais523: I imagine one of the tests of the compare function or <= (whichever they defined for (->)) involves equality somewhere.
17:56:56 <kallisti> and then < etc are defined from that.
17:57:26 <Sgeo> Um, why would they define Ord Num with compare or <= being anything other than error?
17:57:29 <kallisti> but that doesn't really explain why there is a completely useless Ord instance of (->)
17:57:35 <Sgeo> Erm, I mean, Ord (->)
17:58:13 <kallisti> maybe they were lazy and just used the same error message they use with (==) to make their shitty useless instance.
18:00:30 <kallisti> perhaps it's actually a bug and no one realized that the Ord instance isn't actually needed.
18:00:47 <kallisti> ,,
18:01:00 <kallisti> ...
18:03:19 * Sgeo gets the discussion going in #haskell
18:08:29 <ais523> Sgeo: it's Ord (a->b), right? (->) is quite different from (a->b)
18:08:36 <Sgeo> Oh
18:09:01 <kallisti> ais523: probably.
18:09:16 <kallisti> > () > ()
18:09:17 <lambdabot> False
18:09:19 <elliott> ais523: people often abbreviate instances for (->) in that way, it's kinda gross though
18:09:21 <kallisti> ...bah
18:09:29 <ais523> elliott: does the language accept it?
18:09:33 <kallisti> no.
18:09:36 <elliott> no, but we're not talking in haskell
18:09:40 <ais523> well, OK
18:09:49 <ais523> but that's like abbreviating int* to int in C
18:10:00 <kallisti> not really
18:10:06 <ais523> even if you're not talking in C, it's still going to be really confusing
18:10:20 <kallisti> it's definitely obvious that you're saying (make functions do stuff) in much the same way as saying something like "an instance for monads"
18:11:04 <Sgeo> Oh
18:11:12 <Sgeo> There is a sensible definition of Ord for a->b
18:11:17 <Sgeo> Well, actually
18:11:22 <Sgeo> Don't know about sensible, but
18:11:30 <elliott> no there isn't
18:11:34 <Sgeo> :t max
18:11:35 <lambdabot> forall a. (Ord a) => a -> a -> a
18:12:04 <elliott> ais523: not really, since Ord (->) is totally invalid, and there's only one possible "expansion" to validity
18:12:08 <elliott> as opposed to Ord Int vs. Ord (Ptr Int)
18:12:14 <Sgeo> > max (+2) (+3) $ 5
18:12:15 <lambdabot> 8
18:12:24 <Sgeo> Well, not "sensible"
18:12:25 <elliott> Sgeo: ...and?
18:12:27 <elliott> :t compare
18:12:28 <lambdabot> forall a. (Ord a) => a -> a -> Ordering
18:12:30 <elliott> @src Ord
18:12:30 <lambdabot> class (Eq a) => Ord a where
18:12:30 <lambdabot> compare :: a -> a -> Ordering
18:12:30 <lambdabot> (<), (<=), (>), (>=) :: a -> a -> Bool
18:12:30 <lambdabot> max, min :: a -> a -> a
18:12:33 <ais523> elliott: Ord (a->a)?
18:12:36 <elliott> How do you implement compare
18:12:37 <Sgeo> But max and min are defined
18:12:46 <elliott> So? The others aren't
18:12:50 <kallisti> elliott: with guards.
18:12:53 <kallisti> and stuff
18:12:53 <elliott> But ah, I guess that's why
18:12:58 <copumpkin> I wrote a consistent compare for functions
18:12:59 <kallisti> or something.
18:13:02 <elliott> ais523: (a -> b), Ord (a -> a) isn't valid and wouldn't work if it did
18:13:04 <copumpkin> it was kind of slow though
18:13:13 <elliott> s/did$/was/
18:13:16 <kallisti> ais523: for example: "an Ord instance for monads" when you actually mean an Ord instance for (Monad m, Ord a) => m a or something.
18:13:24 <elliott> uh
18:13:25 <ais523> aha, you can define <= in terms min as (<=) a b = min a b == a
18:13:32 <copumpkin> kallisti: not sure how you'd define that
18:13:32 <elliott> kallisti: that instance would be terrible and not work
18:13:32 <ais523> that's where the call to == is coming from, probably
18:13:34 <elliott> and
18:13:36 <elliott> nobody says that
18:13:40 <ais523> *in terms of min
18:13:41 <elliott> and nobody would know what you meant if you said that :P
18:13:49 <elliott> ais523: right
18:13:56 <ais523> that's actually a plausible definition of <= for functions, it's just uncomputable
18:14:10 <ais523> (and non-transitive)
18:14:16 <copumpkin> I had a valid definition of it for functions
18:14:43 <elliott> copumpkin: What did it do
18:14:53 <elliott> Try the entire argument space?
18:15:03 <copumpkin> yeah, but it's not that simple
18:15:16 <elliott> That sounds fairly non-terminating :P
18:15:46 <ais523> copumpkin: does "valid" here imply "computable"?
18:16:05 * ais523 tries to work out if sorting functions lexicographically by what they map the entire argument space to makes any sort of sense
18:16:25 <ais523> I think it does with restrictions on the functions; differentiability is probably enough, but too strong
18:16:36 <Sgeo> WTF
18:16:38 <Sgeo> >deriv abs 0
18:16:42 <Sgeo> > deriv abs 0
18:16:43 <lambdabot> 0
18:16:46 <ais523> (that is, it's meaningful, but impossible to compute without more information)
18:16:47 <Sgeo> > deriv abs (-1)
18:16:48 <lambdabot> -1
18:16:59 <ais523> > deriv abs 20
18:17:00 <lambdabot> 1
18:17:03 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:17:10 <ais523> Sgeo: I bet it's just taking the average of left-derivative and right-derivative
18:17:14 <Sgeo> > deriv abs x
18:17:15 <lambdabot> signum x * 1
18:17:17 <kallisti> elliott: I'm pretty sure I've heard the phrase "instance for monads" used before. also: I wasn't anticipating my example would be reviewed for its plausibility of implementation. :P
18:17:25 <ais523> ah no, doing it symbolically
18:17:28 <Sgeo> @src deriv
18:17:28 <lambdabot> Source not found. Where did you learn to type?
18:17:28 <ais523> >deriv sin
18:17:32 <ais523> > deriv sin
18:17:33 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
18:17:33 <lambdabot> arising from a use of `...
18:17:44 <ais523> > deriv sin x
18:17:45 <lambdabot> 1 * cos x
18:17:51 <ais523> yep, symbolically all right
18:18:10 <kallisti> @hoogle (Monad m) => m a -> a
18:18:11 <lambdabot> Prelude (>>) :: Monad m => m a -> m b -> m b
18:18:11 <lambdabot> Control.Monad (>>) :: Monad m => m a -> m b -> m b
18:18:11 <lambdabot> Control.Monad.Instances (>>) :: Monad m => m a -> m b -> m b
18:18:11 <elliott> :t deriv
18:18:12 <lambdabot> forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b
18:18:21 <copumpkin> elliott, ais523: it only worked on finitely enumerable domains, and it would create a list of all functions
18:18:23 <elliott> ais523: not symbolically, I don't think
18:18:23 <kallisti> oh come on, Haskell, no breakMonads function?
18:18:25 <elliott> although it might be
18:18:27 <copumpkin> and then find who appeared first in that list
18:18:32 <elliott> I think it's AD
18:18:34 <copumpkin> it was awesome
18:18:36 <elliott> and the symbolicness comes from the Expr stuff
18:18:39 <elliott> which comes in because of x
18:18:41 <elliott> > deriv sin 99.4
18:18:42 <lambdabot> 0.4257869286693041
18:18:45 <elliott> :t deriv sin 99.4
18:18:46 <lambdabot> forall a. (Floating a) => a
18:18:47 <elliott> yeah
18:18:50 <ais523> elliott: how does it differentiate sin to cos without doing it symbolically?
18:18:54 <ais523> and actually say the result is cos
18:19:02 <ais523> is it just guessing that the result acts like cos?
18:19:03 <elliott> ais523: that's part of the definition of sin
18:19:03 <elliott> :t sin
18:19:04 <lambdabot> forall a. (Floating a) => a -> a
18:19:10 <elliott> it's part of the Floating instance for Dif
18:19:20 -!- zzo38 has joined.
18:19:23 <ais523> > deriv (\a -> sin a * sin a) x
18:19:24 <lambdabot> 1 * cos x * sin x + sin x * (1 * cos x)
18:19:24 <kallisti> tl;dr typeclass hacks.
18:19:32 <elliott> it's not a typeclass hack
18:19:52 <ais523> elliott: it has to know that the input is sin, surely?
18:19:56 <elliott> ais523: what
18:20:02 <ais523> otherwise it's comparing functions and we already know that's impossible
18:20:10 <elliott> no it's not
18:20:13 <zzo38> @messages
18:20:14 <lambdabot> You don't have any new messages.
18:20:20 <elliott> :t deriv
18:20:21 <lambdabot> forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b
18:20:30 <elliott> instance Blah (Dif a) where sin = ...
18:20:45 <ais523> elliott: right, symbolic
18:20:48 <elliott> no
18:20:49 <elliott> not symbolic
18:21:03 <ais523> the definition of sin will be something that says "this is sin"
18:21:13 <ais523> thus, it's symbolic
18:21:17 <elliott> no
18:21:17 <elliott> not symbolic
18:21:19 <ais523> unless you're using a really weird definition of the term
18:21:24 <elliott> ais523: the reason it says cos
18:21:26 <elliott> is because you used "x"
18:21:27 <elliott> :t x
18:21:28 <lambdabot> Expr
18:21:30 <elliott> > sin x
18:21:30 <lambdabot> sin x
18:21:31 <elliott> > cos x
18:21:32 <ais523> you're just saying lots of stuff that proves it's symbolic
18:21:32 <lambdabot> cos x
18:21:39 <ais523> you are still doing stuff that says it's symbolic
18:21:45 <elliott> ais523: you're just saying lots of stuff that proves you don't know wtf it's doing
18:21:47 <elliott> THE EXPR STUFF IS SYMBOLIC
18:21:50 <elliott> the deriv stuff isn't
18:22:06 <ais523> elliott: it's printing the result symbolically because I used x, indeed
18:22:18 <ais523> but it was symbolic all along, because you can't go backwards from numerical to symbolic, in general
18:22:18 -!- elliott has left ("ragequit").
18:22:56 <Sgeo> elliott rageparts easily.
18:23:01 <kallisti> ais523: presumably it has to do some maths
18:23:04 <Sgeo> I'm not used to elliott rageparting
18:23:07 <kallisti> ais523: on top of being symbolicish
18:23:27 <ais523> symbolic differentiation basically means that it's using some sort of AST or similar representation of the functions, and operating on that
18:23:33 <ais523> rather than evaluating the functions and operating on the resulting values
18:23:40 -!- elliott has joined.
18:23:44 <ais523> and then somehow making them back into functions
18:23:55 <elliott> ais523: I suggest you look up automatic differentiation
18:23:59 <elliott> rather than arguing from incredulity
18:24:59 <ais523> elliott: I've just looked it up; Wikipedia says that it isn't symbolic differentiation, then goes on to define it, with a definition that shows that it clearly is symbolic after all
18:25:11 <ais523> unless "symbolic differentation" refers to something other than differentiation which is symbolic
18:25:13 <elliott> you are incorrect
18:25:21 <zzo38> ais523: Then, go there and fix it if it is wrong?
18:25:25 <elliott> http://blog.sigfpe.com/2005/07/automatic-differentiation.html
18:25:36 <elliott> the fact that the operations are defined with variables
18:25:38 <elliott> does not make them symbolic
18:25:40 <zzo38> Or, put a note on the Talk page to notify them in case someone has reasons to keep it how it is?
18:25:46 <elliott> because there are no symbols at runtime
18:25:49 <elliott> and no symbol manipulation at runtime
18:25:55 <elliott> the only thing involving symbols or symbol manipulation is Expr
18:26:00 <elliott> which is completely distinct from the automatic differentiation code
18:26:07 <elliott> and unrelated to it
18:27:26 * elliott tries to find sigfpe's longer post.
18:28:24 <ais523> elliott: OK, so automatic differentiation there is an optimization of an optimization of symbolic differentiation where you're superstrict
18:28:30 <elliott> no
18:28:33 <ais523> it's basically a specialiser
18:28:36 <elliott> no
18:28:50 <ais523> elliott: if you give in x as the argument, then you don't get any specialisation hapening
18:28:52 <ais523> *happening
18:28:53 * elliott will just keep saying "no" every time you make an incorrect statement, since you don't actually listen to the corrections.
18:28:58 <elliott> ais523: you can't give x in as an argument. x is not a number.
18:29:04 <elliott> > deriv (sin :: Double -> Double) pi
18:29:07 <ais523> elliott: nor is d
18:29:12 <elliott> you cannot pass x to that sin
18:29:15 <elliott> because it only takes Doublse
18:29:16 <elliott> Doubles
18:29:19 <elliott> oh wait, type error
18:29:22 -!- quintopia has quit (Ping timeout: 244 seconds).
18:29:24 <elliott> sigh
18:29:25 <elliott> anyway
18:29:28 <ais523> automatic differentiation works because it redefines * on d
18:29:30 <ais523> such that d*d = 0
18:29:32 <elliott> no
18:29:53 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif a'
18:29:53 <lambdabot> against inferr...
18:29:55 <ais523> elliott: the type error there is /mandatory/
18:30:00 <ais523> because, d is not a Double
18:30:10 <elliott> yes, it is, it was a trivial mistake and irrelevant because you don't actually understand how AD works
18:30:17 <Sgeo> > deriv (sin :: Dif Double -> Dif Double) pi
18:30:18 -!- Phantom_Hoover has joined.
18:30:18 <lambdabot> -1.0
18:30:31 <Sgeo> I presume a Dif Double accepts d
18:30:33 <elliott> and also, are not interested in understanding, as opposed to just telling me I'm wrong and apparently Wikipedia and everyone else on the planet too based on misunderstandings
18:30:35 <elliott> so I'm done
18:30:46 <ais523> elliott: I've read the page, and I understand AD pretty well, by now
18:30:53 <ais523> it's orthogonal to symbolic versus not symbolic
18:31:11 <ais523> however, it requires redefining terms in the original expression
18:31:20 <ais523> and thus, you need a symbolic version of the input
18:31:46 <elliott> no you don't, you just need a polymorphic function
18:32:25 <Sgeo> Is there an instance (Num a) => Num (Dif a)?
18:32:35 <kallisti> I would hope so.
18:32:46 <elliott> > let f :: forall a. (Floating a) => a -> a; f x = sin x + cos x {- haskell has no facility for "inspecting" this function symbolically -} in (f (pi :: Double), deriv f (pi :: Double))
18:32:47 <lambdabot> (-0.9999999999999999,-1.0000000000000002)
18:33:32 <ais523> elliott: actually, Haskell /can/ inspect that function symbolically
18:33:38 <elliott> incorrect
18:33:45 <ais523> create a new type, of typeclass Floating, that builds an AST
18:33:48 <ais523> and defines sin, +, cos
18:33:54 <ais523> (which it does, as it's of typeclass Floating)
18:34:00 <elliott> that is not "inspecting the function symbolically"
18:34:06 <elliott> also, types aren't "of typeclasses".
18:34:07 <ais523> how is it not?
18:34:15 <ais523> well, with an instance of that typeclass
18:34:20 <elliott> ais523: by that argument, map is "symbolic"
18:34:24 <ais523> I didn't mean to imply that a type could only belong to one typeclass
18:34:30 <elliott> > map (\x -> "f " ++ show x) [1,2,3,4]
18:34:31 <lambdabot> ["f 1","f 2","f 3","f 4"]
18:34:35 <ais523> elliott: but, umm, it is?
18:34:35 <elliott> OMG SYMBOLIC!
18:34:54 <kallisti> > cycle ["yes no "] --tl;dr
18:34:56 <lambdabot> ["yes no ","yes no ","yes no ","yes no ","yes no ","yes no ","yes no ","yes...
18:34:59 <kallisti> oops
18:35:02 <elliott> > foldr (\a b -> a ++ " `f` (" ++ b ++ ")") "z" ["a","b","c","d"]
18:35:03 <lambdabot> "a `f` (b `f` (c `f` (d `f` (z))))"
18:35:04 <kallisti> > cycle "yes no " --tl;dr
18:35:05 <elliott> OMG FOLDR IS SYMBOLIC
18:35:05 <lambdabot> "yes no yes no yes no yes no yes no yes no yes no yes no yes no yes no yes ...
18:35:12 <ais523> elliott: again, why would you expect it to not be?
18:35:16 <elliott> EVERYTHING IS SYMBOLIC DESPITE THERE BEING NO SYMBOLIC SEMANTICS IN HASKELL OR CODE IN GHC
18:35:16 <ais523> it doesn't need to evaluate anything
18:35:26 <elliott> ais523: it's true that if you define every function as symbolic, then AD is symbolic, yes.
18:35:39 <elliott> maybe there are even two people on the planet stupid enough to take such a view
18:35:41 <ais523> wait, actually, no
18:35:54 <ais523> hmm
18:36:27 <elliott> ais523: btw, I think you'll find that most implementations of AD look like data Dif a = Dif a a, which has a conspicuous lack of symbolic d.
18:36:41 <elliott> (d = Dif 0 1, _not_ symbolic at all, _not_ handled specially by the Num instance at all)
18:36:43 <ais523> elliott: right, that's a specialization
18:36:55 <elliott> no, that's the definition
18:37:00 <kallisti> > deriv (const 4) pi
18:37:02 <lambdabot> 0
18:37:05 <elliott> http://en.wikipedia.org/wiki/Dual_number
18:37:13 <ais523> ah, I know why map isn't symbolic, despite everything; it's because it doesn't try to provide definitions for any of the subexpressions of the original
18:38:36 <Phantom_Hoover> AD is that differentiation thing— yep.
18:39:35 -!- quintopia has joined.
18:39:35 -!- quintopia has quit (Changing host).
18:39:35 -!- quintopia has joined.
18:39:53 <Sgeo> > deriv (\x -> x^x) x
18:39:54 <lambdabot> No instance for (GHC.Real.Integral
18:39:54 <lambdabot> (Data.Number.Dif.Dif...
18:39:54 <Phantom_Hoover> Are you discussing whether it counts as symbolic derivation or not.
18:39:58 <Sgeo> > deriv (\x -> x**x) x
18:39:58 <elliott> oh, forgot Conal has a serise of posts about it: http://conal.net/blog/posts/what-is-automatic-differentiation-and-why-does-it-work
18:39:59 <lambdabot> (1 * recip x * x + log x * 1) * exp (log x * x)
18:40:00 <zzo38> What should I name the function to put the barrier monad into the other form?
18:40:01 <ais523> elliott: hmm, I think you'll agree with the following statement: "Any function that doesn't mention Dif and is valid input to dif is also valid input to \f -> f x"
18:40:06 <elliott> Phantom_Hoover: no, ais is blindly claiming it is without justification
18:40:18 <ais523> do you?
18:40:43 <ais523> (where x is Expr's x, there)
18:40:44 <elliott> ais523: no, (Dif a) could easily have instances that Expr doesn't
18:40:55 <kallisti> Replace every number X with the number x + x'ε, where x' is a real number, but ε is nothing but a symbol with the property ε^2 = 0. Using only this, we get for the regular arithmetic
18:40:58 <ais523> elliott: does it?
18:40:59 <kallisti> elliott: IT'S JUST A SYMBOL DUDE
18:41:02 <kallisti> elliott: SYMBOLIC
18:41:02 <ais523> and would it make sense for it to?
18:41:02 <Phantom_Hoover> It's... kind of symbolic, in that it only works for functions that only use + and *, but that's not really symbolic in the conventional sense.
18:41:09 <ais523> and couldn't the same instances be added to Expr too?
18:41:16 <elliott> kallisti: moron
18:41:25 <elliott> Phantom_Hoover: Uhh, it works for functions that use plenty other than + and *.
18:41:32 <Phantom_Hoover> elliott, hmm, like?
18:41:37 <elliott> Phantom_Hoover: AD is widely used to differentiate entire procedural algorithms written in C.
18:41:44 <elliott> Phantom_Hoover: Like anything?
18:41:47 <elliott> Any operator.
18:41:55 <kallisti> elliott: (note: sarcasm)
18:41:57 <elliott> ais523: I don't know whether it does
18:42:01 <ais523> elliott: but they need either the source code or the resulting binary to work, presumably
18:42:05 <Phantom_Hoover> Sorry, I meant to clarify, that doesn't use any numerical operations other than + and *.
18:42:21 <elliott> ais523: if you made your question precise -- "any f :: (Num a) => a -> b can have be applied to (x :: Expr) where instance Num Expr"... no shit?
18:42:28 <elliott> Phantom_Hoover: ...no?
18:42:41 <ais523> so, I think by "symbolic", I mean "there is enough polymorphism present that you can just give a lot of AST-building definitions of the operators and end up with a parse tree of the function"
18:42:46 -!- zzo38 has quit (Remote host closed the connection).
18:42:47 <kallisti> > deriv sin (x :: Expr)
18:42:48 <ais523> which is clearly different from your definition, thus the argument
18:42:49 <lambdabot> 1 * cos x
18:42:57 <Phantom_Hoover> elliott, how would you use it on, say, ln x.
18:43:04 <kallisti> I notice a distinct lack of + and *
18:43:08 <elliott> ais523: your definition is ridiculous: every polymorphic function becomes symbolic
18:43:17 <Phantom_Hoover> Without using the series expansion; that's just expressing it in terms of + and *.
18:43:23 <kallisti> > deriv log (x :: Expr)
18:43:24 <lambdabot> 1 * recip x
18:43:29 <elliott> > deriv log (pi :: Double)
18:43:30 <lambdabot> 0.3183098861837907
18:43:35 <ais523> elliott: hmm, I suppose they are
18:43:36 <elliott> Using Expr just confuses things.
18:43:39 <ais523> and that's probably a good thing
18:43:43 <kallisti> elliott: I think it clarifies.
18:43:48 <elliott> it doesn't
18:43:51 <elliott> because Expr only works for a small subset
18:44:05 <elliott> iirc it fucks up on abs or something, I forget exactly what I ran into when I tried to use AD with Expr
18:44:05 <ais523> well, because it's missing instances, but right
18:44:13 <elliott> no
18:44:14 <kallisti> > abs x
18:44:15 <elliott> because the types don't work out
18:44:16 <lambdabot> abs x
18:44:22 <kallisti> > deriv abs (x :: Expr)
18:44:23 <lambdabot> signum x * 1
18:44:32 <ais523> > deriv signum (x :: Expr)
18:44:32 <lambdabot> 0
18:44:35 <elliott> <elliott> iirc it fucks up on abs or something, I forget exactly what I ran into when I tried to use AD with Expr
18:44:42 <elliott> "I forget exactly what I ran into"
18:44:50 <ais523> indeed
18:45:00 <ais523> and I'm currently trying to work out what leads to the sin -> cos case
18:45:21 <kallisti> Floating instance for dual numbers.
18:45:23 <kallisti> I think?
18:45:29 <elliott> ais523: the definition of sin for Diff references cos, obviously
18:45:35 <elliott> ais523: as the definition of sin for dual numbers /involves/ cos
18:45:40 <elliott> because of the infinitesimal part
18:45:49 <elliott> ais523: but the sin and cos referenced are those of the underlying numeric type
18:45:54 <ais523> aha, of course
18:45:59 <elliott> and for Expr, that consists of prepending "cos " (roughly)
18:46:40 <Phantom_Hoover> elliott, but, um, seriously, the proof of AD uses a polynomial; how do you use it on things that aren't polynomials?
18:46:53 <kallisti> magic.
18:47:03 <ais523> Phantom_Hoover: well, all the things that it's being tried on are polynomials
18:47:14 <ais523> in the case of sin/cos, they're infinite-degree, but still polynomials
18:47:26 <ais523> and in general, working on all polynomials means it works on anything that has a Taylor expansion
18:47:35 <ais523> and things that don't are unlikely to be meaningfully differentiable anyway :)
18:47:55 <elliott> Note that the standard ad libraries don't actually define things via Taylor expansions.
18:48:04 <Phantom_Hoover> elliott, yes, so how do they do it?
18:48:07 <ais523> no, because it would be stupid to do so
18:48:17 <ais523> they're only relevant in proving that the technique works
18:48:23 <kallisti> Phantom_Hoover: they use basic calculus.
18:48:30 <Phantom_Hoover> Um, no?
18:48:38 <elliott> Phantom_Hoover: sin = liftAD sin cos
18:48:56 <elliott> for instance
18:49:01 <elliott> the ad library has
18:49:07 <elliott> lift1 :: Num a => (a -> a) -> (D t a -> D t a) -> t a -> t a
18:49:08 <Phantom_Hoover> What does liftAD do?
18:49:19 <elliott> where sin = lift1 sin cos
18:49:25 <elliott> Phantom_Hoover: Depends on which type you use
18:49:29 <elliott> for the simple
18:49:29 <elliott> data Forward a = Forward !a a deriving (Show, Data, Typeable)
18:49:30 <elliott> it's
18:49:33 <elliott> lift1 f df (Forward b db) = Forward (f b) (dadb * db)
18:49:34 <elliott> where
18:49:34 <elliott> Id dadb = df (Id b)
18:49:42 <elliott> (where
18:49:42 <elliott> type D Forward = Id
18:49:42 <elliott> )
18:50:58 -!- oerjan has joined.
18:51:21 <elliott> oerjan: why did you put the tunes logs in the topic? I logread but didn't see anything about it :P
18:51:43 <oerjan> elliott: it was while glogbot was crashed
18:51:52 <kallisti> elliott: that's a lot of glue code..
18:51:52 <elliott> ah
18:51:58 <elliott> kallisti: because it's generic
18:52:01 <elliott> kallisti: it has all kinds of AD types
18:52:12 <elliott> including like
18:52:13 <elliott> -- | A @Tape@ records the information needed back propagate from the output to each input during 'Reverse' 'Mode' AD.
18:52:13 <elliott> data Tape a t
18:52:13 <elliott> = Lift !a
18:52:13 <elliott> | Var !a {-# UNPACK #-} !Int
18:52:14 <elliott> | Binary !a a a t t
18:52:16 <elliott> | Unary !a a t
18:52:17 <kallisti> elliott: right. I think probably a simple example would be easier to follow though?
18:52:18 <elliott> deriving (Show, Data, Typeable)
18:52:20 <elliott> -- | @Reverse@ is a 'Mode' using reverse-mode automatic differentiation that provides fast 'diffFU', 'diff2FU', 'grad', 'grad2' and a fast 'jacobian' when you have a significantly smaller number of outputs than inputs.
18:52:23 <elliott> newtype Reverse a = Reverse (Tape a (Reverse a)) deriving (Show, Typeable)
18:52:25 <elliott> that uses StableNames and observable sharing and shit
18:52:26 <elliott> kallisti: I was giving an actual example
18:52:30 <kallisti> elliott: yes I know.
18:52:32 <elliott> to show something that actually works
18:53:01 <elliott> big :: Nat -> Bool
18:53:01 <elliott> big (S (S (S (S (S (S (S (S (S (S _)))))))))) = True
18:53:01 <elliott> big _ = False
18:53:02 <elliott> what a swell function
18:53:36 <kallisti> but you could also just say sin (Dif x dx) = Dif (sin x) (dx * cos x)
18:53:39 <kallisti> to demonstrate the basic idea.
18:53:48 <elliott> sure
18:53:51 <Phantom_Hoover> elliott, hangonhangonhangon, is liftAD just /defining/ the derivative?
18:54:07 <elliott> Phantom_Hoover: sin on the dual numbers inherently involves cos.
18:54:13 <elliott> It's not "defining" the derivative.
18:54:26 <elliott> Computing sin on the dual numbers involves computing sin on the underlying number type, and cos on the same dual number type.
18:54:39 <elliott> You could also define "sin x = x+1", it just wouldn't be sin.
18:54:50 <elliott> Similarly, the only sin for the dual numbers is lift1 sin cos.
18:55:02 <Phantom_Hoover> Oh, OK.
18:57:10 <kallisti> elliott: the formal definition of dual numbers is oddly similar to complex numbers.
18:57:22 <elliott> kallisti: it's not really odd
18:57:22 <Phantom_Hoover> Well nawww.
18:57:26 <elliott> kallisti: complex numbers is adding i^2 = -1
18:57:29 <elliott> kallisti: dual numbers is adding d^2 = 0
18:57:39 <elliott> they're both gonna end up looking pretty similar :P
18:57:44 <kallisti> right that is the similarity I was talking about. :P
18:58:10 <kallisti> it's basically just a different complex number algebra.
18:58:44 <Phantom_Hoover> A different complex number algebra?
18:58:45 -!- derrik has joined.
18:59:12 <elliott> oh you can do second derivatives like this also you just need a second level
18:59:13 <elliott> or more generally
18:59:19 <elliott> data Diff a = Diff a (Diff a)
18:59:24 <Phantom_Hoover> The complex numbers are just ((R,R), +, *); change + or * and you don't have the complex numbers any more.
18:59:27 <elliott> but some things stop terminating if you do it like /that/ :P
19:00:01 <kallisti> Phantom_Hoover: you can't take square roots, sins, and cosines of complex numbers?
19:00:17 <kallisti> well, scratch square roots actually
19:00:27 <Phantom_Hoover> kallisti, those are all derived from the stuff I stated.
19:01:13 <kallisti> oh right division.
19:01:15 * elliott wishes there was Automatic Integration. :p
19:01:20 <elliott> Codual numbers!
19:01:31 <kallisti> elliott: make them
19:01:42 <kallisti> publish paper
19:01:43 <kallisti> get rich
19:03:31 <Phantom_Hoover> kallisti, we can already do integration on polynomials really easily.
19:04:07 <kallisti> but not with codual numbers!
19:04:25 <elliott> Phantom_Hoover: --Phantom "Help runge kutta" Hoverboard
19:04:49 <Phantom_Hoover> elliott, hey, I found highly contradictory information on what it could be applied to!
19:05:13 <elliott> Phantom_Hoover: (Wait what if we just rewrote Newtonian physics with polynomials?)
19:05:19 <elliott> Phantom_Hoover: (THINK ABOUT IT)
19:05:28 <kallisti> Phantom_Hoover: are you sure you don't need like triangles or something to define sine?
19:05:30 <Phantom_Hoover> elliott, they tried that, turns out it's impossible.
19:05:42 <elliott> Phantom_Hoover: Maybe they didn't try hard enough?
19:05:48 <elliott> Phantom_Hoover: Maybe they used the wrong foundation.
19:05:52 <Phantom_Hoover> kallisti, sin x = x - x^3/3! + x^5/5! - ...
19:05:53 <elliott> Let's try it with THE POWER OF TYPE THEORY AND UNSAFECOERCE.
19:05:58 -!- azaq23 has joined.
19:06:02 -!- azaq23 has quit (Changing host).
19:06:02 -!- azaq23 has joined.
19:06:32 <Phantom_Hoover> kallisti, this definition is demonstrably equivalent to the triangle one, although it's pretty circuitous to actually show it.
19:06:45 <kallisti> Phantom_Hoover: oh okay. but then you forgot the infinite paper.
19:06:52 <olsner> elliott: aren't those two opposite powers?
19:06:52 <elliott> Phantom_Hoover: 3/3! = 1! = 1 idiot dummy
19:07:04 <elliott> sin x = x - x^1 + x^1 - ...
19:07:05 <elliott> ===
19:07:08 <elliott> sin x = x - x + x - ...
19:07:10 <elliott> .Q.E.D
19:07:10 <Phantom_Hoover> olsner, yes, they fight crime.
19:07:24 <kallisti> elliott "bad at teaching" hird
19:07:28 <Phantom_Hoover> You've proven that sin x doesn't converge for all x?
19:07:35 <Phantom_Hoover> Well, all nonzero x.
19:07:41 <elliott> Phantom_Hoover: no we just need to use
19:07:42 <olsner> ooh, TYPE CRIME, it's like thoughtcrime
19:07:44 <elliott> ZETA FUNCTION REGULARISATION
19:07:49 <elliott> it solves all summing problems
19:07:57 <Phantom_Hoover> elliott, I think fax may have been a bad influence on you.
19:08:00 * kallisti has never had a problem summing.
19:08:23 <elliott> Phantom_Hoover: OK I have determined that sin(x) = 1/4e^pi + (x*0.0000000000014) for all x apart from 3.
19:08:30 <elliott> sin(3) = god.
19:08:53 <Phantom_Hoover> Is that what zeta function regularisation actually says.
19:09:05 <elliott> Yes. It has helped us find god.
19:09:12 <elliott> Thanks, zeta function regularisation. Theta function regularisation.
19:09:52 <elliott> Phantom_Hoover: I really want to believe in string theory because one kind of string theory involves using zeta function regularisation to work out a sum for actual physical things???
19:10:02 <elliott> I want to believe that God is awesome enough to put that into physics.
19:10:11 <Phantom_Hoover> elliott, check out the WP article?
19:10:20 <kallisti> elliott: too bad that's bad because string theory ew
19:10:31 <elliott> Phantom_Hoover: ?
19:10:45 <Phantom_Hoover> The first example is bog-standard QFT.
19:11:00 <elliott> Phantom_Hoover: Is it? YESSSSSSSSSSSSS
19:11:04 <elliott> THANKS GOD
19:11:12 <elliott> kallisti: Aw c'mon, everyone likes string theory, it's so elegant!
19:11:34 <elliott> (Before Phantom_Hoover rips into me: it's a joke.)
19:12:15 <Phantom_Hoover> elliott, wait, how much do you actually know about zeta function regularisation beyond "you can use it to prove mad things about infinite sums".
19:12:29 <kallisti> elliott: sometimes I feel like have a superpower to recognize jokes.
19:12:33 <kallisti> unless they're just incredibly deadpan.
19:12:41 <elliott> Phantom_Hoover: I am like the world's foremost expert of zeta function regularisation?
19:12:55 <Phantom_Hoover> elliott, what's the zeta function.
19:13:05 <elliott> Phantom_Hoover: RIEMANNIAN
19:13:22 <olsner> elliott: of all the people I know you seem to know the most about it, so that's a yes
19:13:29 <kallisti> Riemann, mon.
19:13:36 <Phantom_Hoover> olsner, you knew fax, no?
19:14:22 <elliott> Zeta-Function Regularization is Uniquely Defined and Well
19:14:24 <elliott> E. Elizalde
19:14:26 <elliott> (Submitted on 6 Aug 1993)
19:14:28 <elliott> Hawking's zeta function regularization procedure is shown to be rigorously and uniquely defined, thus putting and end to the spreading lore about different difficulties associated with it. Basic misconceptions, misunderstandings and errors which keep appearing in important scientific journals when dealing with this beautiful regularization method ---and other analytical procedures--- are clarified and corrected.
19:14:33 <elliott> Q.E.D. bitchen
19:14:46 <olsner> Phantom_Hoover: nope, I've never used fax
19:15:11 <Phantom_Hoover> elliott, is E. Elizalde you in a previous life.
19:15:17 <elliott> Phantom_Hoover: Yes.
19:15:27 <elliott> Phantom_Hoover: I revived two years later.
19:15:56 <Phantom_Hoover> I should probably learn some analysis sometime, it seems cool.
19:16:52 <elliott> Phantom_Hoover: Yes then you will know 1 thing, ha ha ha
19:17:05 <elliott> <Phantom_Hoover> :'(
19:17:15 <oerjan> <kallisti> oh come on, Haskell, no breakMonads function? <-- it makes very little sense to do that for an arbitrary monad
19:17:46 <oerjan> because different monads need different kind of setup to get started
19:17:52 <Sgeo> elliott, update
19:17:55 <elliott> oerjan: some can't get started at all
19:18:01 <elliott> kallisti: dupdog
19:18:02 <Phantom_Hoover> What does breakMonads do.
19:18:17 <oerjan> Phantom_Hoover: <kallisti> @hoogle (Monad m) => m a -> a
19:18:28 <oerjan> would be its type
19:18:56 <Phantom_Hoover> Ah, yes, the classic "help i want out" response to a monad.
19:19:33 <Sgeo> Don't most useful monads have a function like that, except with more arguments?
19:19:37 <oerjan> i mean, _even_ if you admit unsafePerformIO it still doesn't make sense for every monad.
19:19:54 <elliott> oerjan: unsafePerformIO is in the report :)
19:19:59 <oerjan> Sgeo: yeah. except sometimes the output too has more arguments.
19:20:05 <elliott> Sgeo: not necessarily
19:20:09 <oerjan> e.g. lists
19:20:15 <elliott> I mean, the function monad doesn't, except it does if you consider the input "more arguments"
19:20:18 <Phantom_Hoover> Sgeo, and there's the crux of the matter: m a isn't associated with any particular value of a.
19:20:30 <kallisti> 14:17 < elliott> kallisti: dupdog
19:20:33 <kallisti> elliott: what about it?
19:20:33 <Sgeo> elliott, why shouldn't I?
19:20:45 -!- sebbu2 has joined.
19:20:45 -!- sebbu2 has quit (Changing host).
19:20:45 -!- sebbu2 has joined.
19:20:49 <kallisti> oerjan: well you could always add it as a method to Monad, with the default definition of undefined
19:20:58 <elliott> Sgeo: well you are basically just defining "useful monad" as "something which can be turned into a function from something else to something with an a in it"
19:21:01 <kallisti> so that it still breaks arbitrary monads. :>
19:21:14 <oerjan> kallisti: yeah fail needs company in its brokenness
19:21:15 <elliott> But yes, like Phantom_Hoover said.
19:21:18 <elliott> I think (a -> Bool) is a monad.
19:21:22 <elliott> (pure sets)
19:21:30 <elliott> oh, for Eq a
19:21:46 -!- sebbu has quit (Ping timeout: 248 seconds).
19:21:58 <elliott> er hm
19:21:59 <oerjan> elliott: Cont r may be a better example
19:22:02 <Sgeo> elliott, what's wrong with that as a definition of a useful monad?
19:22:02 <elliott> how do you do join
19:22:08 <elliott> Sgeo: (a -> Bool) -> a
19:22:11 <elliott> can you write that?
19:22:12 <oerjan> you just cannot get an a result out of that
19:22:38 <Phantom_Hoover> elliott, least value of a such that the function results in true, for some arbitrary well-ordering.
19:22:42 <oerjan> assuming r and a are not allowed to depend on each other
19:22:44 <Sgeo> oerjan, even with applying id?
19:22:46 <elliott> Phantom_Hoover: you only have (Eq a)
19:22:49 <elliott> Sgeo: um
19:22:51 <Phantom_Hoover> ZFC'd.
19:22:52 <elliott> newtype PS a = PS (a -> Bool)
19:22:54 <Sgeo> erm, using id
19:22:58 <elliott> run :: (Eq a) => PS a -> a
19:23:08 <oerjan> Sgeo: id doesn't give you Cont r a -> a
19:23:12 <elliott> oh
19:23:13 <elliott> for Cont, ok
19:23:21 -!- nooga has joined.
19:23:21 <Sgeo> :t runCont
19:23:22 <lambdabot> forall r a. Cont r a -> (a -> r) -> r
19:23:40 <elliott> oerjan: oh PS isn't a monad
19:23:41 <elliott> unfortunately
19:23:41 <Sgeo> You... get an r?
19:23:45 <oerjan> obviously that shows id works if a = r
19:23:48 <elliott> because it's not a functor, it's a contrafunctor
19:24:07 <elliott> er, hmm
19:24:09 <elliott> that seems wrong
19:24:14 <elliott> because Set /is/ a monad, modulo Ord constraint
19:24:16 <elliott> so what's up?
19:24:24 <oerjan> Sgeo: note that breakMonad was supposed to have the type forall m a. Monad m => m a -> a
19:24:37 <elliott> fmap :: (a -> b) -> (a -> Bool) -> (b -> Bool)
19:24:37 <oerjan> *breakMonads
19:24:41 <elliott> wtf
19:24:46 <elliott> oerjan: how is Set a monad again? that makes no sense
19:25:01 <oerjan> elliott: it's not
19:25:07 <elliott> oerjan: MODULO ORD CONSTRAINT
19:25:42 <elliott> ugh
19:25:47 <elliott> it's because Set can access its inner "list of values"
19:26:22 <oerjan> elliott: apply f to that list, then nub . sort, i presume
19:26:40 <elliott> oerjan: yes, but it's really gross because it means Set is nothing like a set :(
19:26:44 <oerjan> oh, and set union somewhere
19:26:51 <kallisti> elliott: yes the set monad is basically the same as the list monad, modulo ord constraint
19:27:03 <elliott> oerjan: even worse: you can't define contramap for Set
19:27:09 <elliott> but you /can/ for (-> Bool)
19:27:14 <elliott> Sets are like the opposite of sets :P
19:28:53 <Sgeo> contramap?
19:28:59 -!- sebbu2 has changed nick to sebbu.
19:29:49 <elliott> Sgeo: see contravariant package
19:31:26 <Sgeo> contramap scares me
19:31:32 <oerjan> -> Bool is a contravariant functor, yes. also it's its own adjoint functor, and when you compose those you get Cont Bool as the monad.
19:32:08 <elliott> oerjan: yes, i'm just annoyed that (Set a) and (a -> Bool) are almost opposites
19:32:14 <elliott> Set has fmap, (-> Bool) has contramap
19:32:41 <elliott> I would think of the former as the latter except (a) faster and (b) you can get a magic ordered list of values out of it, but that doesn't affect what you can actually "do" to it :P
19:33:16 <oerjan> elliott: it may be somewhat analogous to how a finite dimensional vector space is its own dual, but the isomorphism is not natural (you need to pick an arbitrary basis)
19:33:24 <elliott> heh
19:33:55 <elliott> oerjan: I'm trying to think of monads that you can't "run" apart from data Trivial a = Trivial (or was it data Trivial a) and Cont...
19:34:04 <elliott> having a hard time of it :P
19:34:25 <kallisti> elliott: hmmm.. what is "run" for lists?
19:34:40 <elliott> kallisti: head :P
19:34:46 <kallisti> ah
19:34:47 <elliott> but more relevantly,
19:34:50 <elliott> [a] -> Maybe a
19:34:57 <elliott> Sgeo probably considers that close enough to "running"
19:35:02 <elliott> since (Maybe a) sometimes has an a in it
19:35:20 <kallisti> elliott: at least you know when it doesn't run.
19:35:55 <kallisti> so wait is Sgeo arguing in favor of breakMonads or something? I haven't been paying attention
19:36:44 <oerjan> come to think of it, inner products are what you add to _make_ that self-dualism natural for vector spaces, maybe there's an analogue for Set a and a -> Bool
19:39:11 <Sgeo> safeIndex would probably be better
19:39:30 <Sgeo> fsvo "better"
19:39:47 <elliott> FSVO IS MINE
19:39:48 <elliott> MIIIIIIIINE
19:41:10 <kallisti> elliott: friendship fsvo
19:41:22 <olsner> elliott: ... fsvo fsvo
19:41:30 <elliott> iouhfjkhflsd
19:41:36 <kallisti> elliott: hi friendship fsvo help
19:41:46 <elliott> monqy: HELP
19:41:50 <kallisti> monqy: hlep
19:41:51 <Phantom_Hoover> fsvo friendship
19:42:58 <kallisti> :t Expr
19:42:59 <lambdabot> Not in scope: data constructor `Expr'
19:43:02 <kallisti> @hoogle Expr
19:43:03 <lambdabot> Text.Parsec.Expr module Text.Parsec.Expr
19:43:03 <lambdabot> Text.ParserCombinators.Parsec.Expr module Text.ParserCombinators.Parsec.Expr
19:43:03 <lambdabot> Text.ParserCombinators.Parsec.Expr buildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a
19:43:19 <kallisti> hmm is there a SimpleReflect type that has a parameter?
19:44:10 <elliott> http://hackage.haskell.org/packages/archive/show/0.4.1.1/doc/html/SimpleReflect.html
19:45:47 <kallisti> so no
19:46:07 <kallisti> would a... simple-reflect monad be possible?
19:46:15 <oerjan> heh
19:46:44 <monqy> elliott, kallisti: hi
19:46:51 <elliott> monqy: stop kallisti
19:46:57 -!- sebbu2 has joined.
19:46:57 -!- sebbu2 has quit (Changing host).
19:46:57 -!- sebbu2 has joined.
19:47:01 <elliott> kallisti: no. return :: a -> Reflect a
19:47:02 <monqy> qhat did kallisti do
19:47:03 <elliott> what string do you use?
19:47:09 <elliott> <Sgeo> fsvo "better"
19:47:09 <elliott> <elliott> FSVO IS MINE
19:47:09 <elliott> <elliott> MIIIIIIIINE
19:47:09 <elliott> <kallisti> elliott: friendship fsvo
19:47:09 <elliott> <olsner> elliott: ... fsvo fsvo
19:47:10 <elliott> <elliott> iouhfjkhflsd
19:47:12 <elliott> <kallisti> elliott: hi friendship fsvo help
19:47:14 <elliott> <elliott> monqy: HELP
19:47:16 <elliott> <kallisti> monqy: hlep
19:47:26 <monqy> kallisti: :(
19:49:52 <kallisti> :)
19:49:58 -!- Klisz has joined.
19:51:06 -!- sebbu has quit (Ping timeout: 248 seconds).
19:52:57 <elliott> https://github.com/ghc/testsuite/commit/dfdb979305d5ebb7b28fcabce06d9095d81d34da
19:53:01 <elliott> monqy: oerjan: Phantom_Hoover: terrifying
19:53:36 <Phantom_Hoover> ???
19:53:47 <elliott> terrifying
19:54:27 <elliott> But that’s not all! Humble Introversion Bundle customers now have access to the source code for Darwinia, Multiwinia, DEFCON, and Uplink! Once you've purchased the bundle, check your download page for a source snapshot and gain access to Introversion's developer forums, wiki, and SVN repository.
19:54:28 <elliott> !!!!!!!1183748975438957
19:54:44 <oerjan> you mean the call stack thing which he promised a while ago?
19:54:59 <elliott> oerjan: yes but I DIDN'T KNOW IT WAS BEING EXPOSED TO USER CODE...
19:55:12 <elliott> https://plus.google.com/107890464054636586545/posts/YJzAAxw28N7
19:55:22 <oerjan> heh
19:56:47 <monqy> what is this thinge..
19:57:12 <monqy> call stack inspection for ghc haskells?
19:57:19 <monqy> terrifying indeed
19:57:31 <kallisti> what about call stack /manipulation/?
20:00:07 <Sgeo> elliott, I think this is old news that I saw in here but didn't process properly, but Introversion source now available for Humble Bundle purchasers
20:00:16 <elliott> <elliott> But that’s not all! Humble Introversion Bundle customers now have access to the source code for Darwinia, Multiwinia, DEFCON, and Uplink! Once you've purchased the bundle, check your download page for a source snapshot and gain access to Introversion's developer forums, wiki, and SVN repository.
20:00:16 <elliott> <elliott> !!!!!!!1183748975438957
20:00:16 <elliott> <oerjan> you mean the call stack thing which he promised a while ago?
20:00:16 <elliott> <elliott> oerjan: yes but I DIDN'T KNOW IT WAS BEING EXPOSED TO USER CODE...
20:00:17 <elliott> <elliott> https://plus.google.com/107890464054636586545/posts/YJzAAxw28N7
20:00:19 <elliott> <oerjan> heh
20:00:21 <elliott> <monqy> what is this thinge..
20:00:23 <elliott> <monqy> call stack inspection for ghc haskells?
20:00:25 <elliott> <monqy> terrifying indeed
20:00:27 <elliott> <kallisti> what about call stack /manipulation/?
20:00:29 <elliott> <Sgeo> elliott, I think this is old news that I saw in here but didn't process properly, but Introversion source now available for Humble Bundle purchasers
20:00:35 <elliott> sgeo's memory lasts less than 6 minutes
20:00:46 <Sgeo> elliott, I could swear I saw it earlier than 6 minutes ago
20:00:51 <Sgeo> Like hours ago or something
20:02:30 <oerjan> elliott: maybe his memory only keeps the first reference
20:03:40 <oerjan> like: "Major online game" -> "Active Worlds"
20:03:55 * oerjan coughs
20:04:15 <elliott> :D
20:04:40 -!- Jafet has quit (Quit: Leaving.).
20:05:33 <olsner> wow, he remembers things from hours ago, Sgeo is quite the memory artist
20:06:10 <monqy> he should join a circus
20:06:12 <oerjan> that's nothing, i remember things from _months_ ago. like, er, um...
20:06:16 <elliott> :D
20:06:17 <monqy> you too
20:06:19 -!- GreaseMonkey has joined.
20:06:19 <Sgeo> Introversion forums, why are you down?
20:08:22 -!- sebbu2 has changed nick to sebbu.
20:08:39 * kallisti still remembers most of his schedule throughout high school.
20:09:11 <kallisti> and college schedules, even!
20:09:31 <oerjan> i vaguely remember that i once remembered my schedule
20:10:40 <kallisti> I think I took some typing class and geometry at the same time.
20:10:42 <kallisti> so bad.
20:10:54 <monqy> typing
20:10:55 <monqy> class
20:10:59 <monqy> ??????
20:11:00 <kallisti> yes.
20:11:07 <kallisti> it was like "how to use microsoft office: the class"
20:11:13 <monqy> wow great
20:11:14 <kallisti> and it included a lot of typing of documents
20:11:16 <kallisti> and spreadsheets.
20:11:28 <kallisti> it was actually awesome because I would always finish first and then basically do nothing the rest of the class.
20:11:35 <kallisti> normally doing nothing is boring
20:11:40 <kallisti> but doing nothing with a computer is AWESOME.
20:11:46 <olsner> most of my high school schedule was unscheduled time, not exactly hard to remember that schedule
20:11:51 * Phantom_Hoover downloads the Uplink source.
20:12:25 <kallisti> monqy: I also took this class called construction
20:12:27 <kallisti> it was hilarious
20:12:30 <kallisti> and awful.
20:12:37 <monqy> I'm imagining a class about playing with blocks
20:12:39 <kallisti> I USED SAWS. YEAAAAAH
20:12:50 <kallisti> I'm bad at saws.
20:12:56 <Phantom_Hoover> We call that DT over here.
20:13:01 <kallisti> well except jigsaws. jigsaws are fun.
20:13:22 <Phantom_Hoover> I made a stick man out of metal and also a plastic self-portrait.
20:14:55 <elliott> Phantom_Hoover: So, a stick man out of metal and a stick man out of plastic?
20:15:07 <Phantom_Hoover> No, it was a Phantom_Hoover.
20:15:59 -!- Slereah has joined.
20:16:37 <kallisti> http://en.wikipedia.org/wiki/File:Frida_Kahlo_(self_portrait).jpg "Its inclusion in the article adds significantly to the article because it shows the subject of the article"
20:16:42 <kallisti> Frida Kahlo is the history of art.
20:17:42 -!- Slereah_ has quit (Ping timeout: 260 seconds).
20:26:04 <elliott> "As you’ve discovered, the grandaddy machine-learning algorithm of them all, back-propagation, is nothing but steepest descent with reverse mode automatic differentiation. This means that if you wrote a neural network that simply evaluated, but didn’t know how to learn, and passed it into a routine for optimisation using steepest descent by reverse mode AD, then it would use back-propagation without anyone having to even know that such a thing
20:26:04 <elliott> as back-propagation existed. Internally it would actually perform exactly the same operations as back propagation."
20:26:10 <elliott> ais523: thanks for being wrong, it's made me google up things and remember how cool AD is
20:30:56 <kallisti> elliott: neat
20:33:42 <kallisti> > deriv log 0
20:33:43 <lambdabot> Infinity
20:33:47 <kallisti> ha ha ha ha
20:33:57 <Sgeo> > deriv abs 0
20:33:58 <lambdabot> 0
20:34:13 <kallisti> shocking
20:34:20 <Sgeo> >deriv (\x -> if x > 5 then 0 else x) 4
20:34:25 <Sgeo> > deriv (\x -> if x > 5 then 0 else x) 4
20:34:27 <lambdabot> 1
20:34:29 <Sgeo> > deriv (\x -> if x > 5 then 0 else x) 6
20:34:30 <lambdabot> 0
20:34:58 <Sgeo> If I put in 5 it's going to be 1, isn't it, even though that's not the right answer
20:35:01 <Sgeo> > deriv (\x -> if x > 5 then 0 else x) 5
20:35:02 <lambdabot> 1
20:35:17 <kallisti> how is it not right?
20:35:28 <kallisti> oh, nevermind..
20:35:47 <kallisti> "limits? what are those?"
20:35:49 <elliott> Sgeo: Were you expecting itto work perfectly?
20:35:53 <elliott> *it to
20:36:01 <Sgeo> elliott, no, but I can dream, can't I?
20:36:10 <elliott> No.
20:36:35 <Sgeo> Hmm, maybe there should be an if' function that ... does something
20:36:49 <monqy> what
20:36:53 <kallisti> elliott: how does it determine that constants have a derivative of zero but variables have a derivative of one. actually nevermind I see how it works for variables but not for constants.
20:37:18 <kallisti> it just passes in the argument with the 1
20:37:25 <elliott> I suppose you could have (==*) :: (Eq a) => Diff a -> Diff a -> Diff Bool; ifE :: Diff Bool -> Diff a -> Diff a, but I have no clue what you'd do with Diff Bools.
20:37:30 <Sgeo> if' :: (Num a) -> a -> (a,a) -> (a -> a) -> (a -> a) -> a
20:37:40 <kallisti> :t deriv
20:37:41 <lambdabot> forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b
20:37:48 <kallisti> oh... nevermind
20:37:49 <elliott> kallisti: const 1 :: Diff Double -> Diff Double
20:37:52 <elliott> kallisti: === const (D 1 0)
20:37:53 <monqy> kallisti: fromInteger in the Num instance?
20:38:00 <monqy> i havent read the thing
20:38:01 <elliott> const (D 1 0) (D 0 1) == (D 1 0)
20:38:01 <monqy> ;_;
20:38:03 <elliott> blah blah blah
20:38:08 <monqy> a while ago i read stuff about AD then i forgot it all
20:38:08 <monqy> oops
20:38:25 <kallisti> elliott "bad at teaching still" hird
20:38:39 <kallisti> but I got it
20:38:40 <kallisti> so nevermind.
20:40:29 <kallisti> monqy: I keep forgetting fromInteger is a method of Num and not just some magical thing somewhere else.
20:41:52 <kallisti> > deriv (\x -> 2*x) 3
20:41:54 <lambdabot> 2
20:42:32 <elliott> > deriv (sin + cos) x
20:42:32 <lambdabot> 1 * cos x + 1 * negate (sin x)
20:42:37 <elliott> > reduce $ deriv (sin + cos) x
20:42:38 <lambdabot> 1 * cos x + 1 * negate (sin x)
20:42:41 <elliott> :-(
20:43:00 <Sgeo> :t reduce
20:43:01 <lambdabot> Expr -> Expr
20:43:17 <Sgeo> :t reduce $ x - x
20:43:18 <lambdabot> Expr
20:43:27 <Sgeo> > reduce $ x - x
20:43:29 <lambdabot> x - x
20:43:38 <Sgeo> @src reduce
20:43:39 <lambdabot> reduce _ 0 = undefined
20:43:39 <lambdabot> reduce x y = (x `quot` d) :% (y `quot` d)
20:43:39 <lambdabot> where d = gcd x y
20:43:39 <Phantom_Hoover> @hoogle (a -> a) -> a -> Int -> a
20:43:40 <lambdabot> Data.Sequence iterateN :: Int -> (a -> a) -> a -> Seq a
20:43:40 <lambdabot> Data.Sequence adjust :: (a -> a) -> Int -> Seq a -> Seq a
20:43:41 <lambdabot> Data.IntMap adjust :: (a -> a) -> Key -> IntMap a -> IntMap a
20:43:50 <elliott> Sgeo: wrong reduce
20:44:04 <Phantom_Hoover> Huh.
20:44:20 <Phantom_Hoover> I'd've thought that function would be one of the basic ones.
20:44:44 <elliott> Phantom_Hoover: To do what? Iterate a function?
20:44:47 <elliott> The arguments are all the wrong way around.
20:44:53 <elliott> Int -> (a -> a) -> a -> a would be the right way.
20:44:56 <kallisti> iterate and !!, tada!
20:45:17 <Phantom_Hoover> elliott, I thought Hoogle was order-blind.
20:45:30 <elliott> Phantom_Hoover: It doesn't exist in the stdlib.
20:45:33 <elliott> I'm just saying if it did...
20:47:13 <kallisti> @pl i n f a = iterate f a !! n
20:47:13 <lambdabot> i = flip (flip . ((!!) .) . iterate)
20:47:27 <kallisti> :t (n f a = iterate f a !! n
20:47:28 <lambdabot> parse error on input `='
20:47:28 <kallisti> er
20:47:35 <kallisti> :t (\n f a -> iterate f a !! n)
20:47:36 <lambdabot> forall a. Int -> (a -> a) -> a -> a
20:47:54 -!- pikhq_ has joined.
20:47:55 -!- pikhq has quit (Ping timeout: 252 seconds).
20:50:40 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
20:52:27 <Sgeo> > foldr (\x acc -> x:acc) [] [x,y,z]
20:52:28 <lambdabot> [x,y,z]
20:52:45 <Sgeo> > foldr (:) [] [x,y,z] -- before someone yells at me about the lambda
20:52:46 <lambdabot> [x,y,z]
20:53:23 <Sgeo> @help quickcheck
20:53:24 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
20:53:28 <Sgeo> @quickcheck
20:53:29 <lambdabot> Unknown command, try @list
20:53:30 <kallisti> Sgeo: too late. you can't fix it.
20:53:42 <kallisti> shouldn't use lambdas for simple things.
20:54:27 <kallisti> so. I'm kind of bad at quantum mechanics. enlighten me: is there anything in quantum mechanics that disproves determinism?
20:54:32 <kallisti> I think there is.
20:54:49 <Sgeo> Well, disproves it assuming you hold to no causal influences exceeding c
20:54:54 <Sgeo> Wait, no
20:55:09 <Sgeo> Hidden variables are disproved assuming no non-local influences
20:55:31 <Sgeo> I think multiple-worlds is considered deterministic without being a local variable theory
20:58:44 <kallisti> I
20:59:22 <kallisti> 'm just wondering if my deterministic viewpoint is perhaps unwarranted due to things I don't understand about the universe.
21:11:02 <Sgeo> elliott, kallisti update
21:17:04 -!- Ngevd has joined.
21:19:16 <Ngevd> Hello!
21:20:16 <Ngevd> I found a 29-step wiki surf loop
21:26:18 <ais523> first link or last link?
21:26:33 <Ngevd> It loops
21:26:35 <Ngevd> Um
21:26:58 <Ngevd> I'm not sure which link you mean
21:28:45 <olsner> do you follow the first or last link on each page?
21:28:50 <Ngevd> Last in the intro
21:29:52 <Ngevd> I put the path in an article on our wiki
21:29:59 <elliott> err, that sounds off-topic
21:30:07 <Ngevd> In my userspace
21:30:09 <elliott> oh
21:30:17 <Ngevd> User:Taneb/Wiki surf
21:30:22 <elliott> "made because I am bored and lonely and have no access to IRC"
21:30:25 <elliott> Ngevd: http://webchat.freenode.net/
21:30:30 <Ngevd> Blocked in school
21:30:36 <elliott> lame
21:37:30 <oerjan> Ngevd: i recalled some of the members of your loop from before but not the loop itself, so i followed it and the link Policy studies -> Public administration has already been broken by an edit
21:37:40 <Ngevd> !!!
21:38:41 <Ngevd> It is possible I made a mistake
21:39:04 <oerjan> Ngevd: no, there was definitely a recent edit prior to which that was correct
21:39:10 <Ngevd> Wow
21:39:26 <oerjan> so, these long loops may not be very stable :P
21:41:40 <oerjan> in suspect the entire Public administration -> Policy studies part was included in what we did previously - all of them sound familiar.
21:42:07 <elliott> tempting to write a bot to try and find these loops
21:42:17 <oerjan> *i suspect
21:42:27 <elliott> longest path from A to A has to be something CS has optimised to hell by now, right? :)
21:42:36 <oerjan> heh
21:42:48 <elliott> only need to do it some 2 million times to get the longest one
21:43:19 <elliott> oerjan: (/is/ there a fast algorithm for that? :P)
21:43:45 <oerjan> well yeah you just need to iterate all pages and for each page follow its path until you hit one you already visited, so it's O(n) in total
21:44:24 <oerjan> and obviously that's as fast as you can hope for
21:44:31 <elliott> well, OK :P
21:44:45 <elliott> oerjan: already visited globally, or from the last iteration?
21:44:46 <elliott> of the pagespace
21:44:51 <oerjan> globally
21:45:04 <elliott> yeah i guess it's not too bad
21:45:07 <oerjan> unless you want to duplicate work
21:45:27 <oerjan> it should _still_ be O(n*max path length) if you don't, though
21:45:35 <elliott> and you only have to track the set of seen pages
21:45:38 <elliott> not all the paths
21:45:42 <elliott> you can flush out paths to disk
21:45:46 <elliott> so it won't take much ram either
21:46:14 <oerjan> seen pages and the path lengths of them
21:46:45 <elliott> oerjan: hm right
21:47:36 <oerjan> and it will be slightly different if you hit a seen page from a previous iteration or a seen page from this one (the latter means a _new_ loop, naturally)
21:48:27 <elliott> oerjan: um you can't have a new loop with an immutable set can you
21:48:31 <elliott> because each page has exactly one successor
21:49:10 <elliott> by definition there is only zero or one cycles involving any given page
21:50:02 <oerjan> elliott: by "new" i mean "not previously discovered"
21:50:11 <elliott> ah
21:53:59 <elliott> oerjan: dammit now I want to write this :P
21:54:49 <oerjan> getting the intuitive "last link" detection quite right might be tricky.
21:54:58 <oerjan> especially with your section rule.
21:55:00 -!- copumpkin has quit (Ping timeout: 244 seconds).
21:55:26 <elliott> oerjan: well things like references and the "citation needed" links don't look like [[...]] in wikicode
21:55:43 <oerjan> well ok
21:55:44 <elliott> so once you have a section, just scan back for a [[...]]
21:55:56 <elliott> to isolate the section, just take up to the next line starting with =
21:56:04 <elliott> or <h if you want to be even fancier about it
21:56:15 <oerjan> interwiki links need to be ignored too, i've skipped some wiktionary ones
21:56:36 <elliott> oerjan: yeah
21:57:52 <elliott> oerjan: ooh now i'm imagining a pretty graph you could draw with this
21:57:59 <elliott> actually hm would that work
21:58:03 <elliott> oh no it wouldn't :(
21:58:26 <oerjan> and probably other namespaces, in case you hit an article which has no introduction links other than those top boxes
21:58:46 <oerjan> oh and what about side boxes, i've ignored those. but i guess they are templates anyway.
21:58:49 -!- Patashu has joined.
21:58:51 <elliott> oerjan: yeah, to both.
21:58:56 <elliott> oerjan: it doesn't have to be completely perfect :P
21:59:11 <elliott> oerjan: i doubt the longest chain involves ten non-templated side boxes that link into the Wikipedia namespace
21:59:28 <oerjan> MAYBE
21:59:54 <elliott> oerjan: oh i thought of a graph that could be drawn. but it's very silly
22:01:03 <olsner> maybe you could make a chain by following the random page link until the PRNG cycles
22:01:07 <oerjan> there's only one outgoing edge from each page. reminds me of BackFlip's > command
22:01:53 <elliott> oerjan: given a page p, start with a node of just that, and connect it to all the n-chains of p. the 0-chain of p is following the first link, the 1-chain of p is following the second (at each step, ofc), the (-1)-chain of p is following the last, the (-2)-chain is second-last, etc.
22:02:02 <elliott> hmm that wouldn't work unless all pages had the same number of links :(
22:02:11 <elliott> I JUST WANT A PRETTY GRAPH
22:02:27 <oerjan> hm
22:02:29 -!- Jafet has joined.
22:05:52 <elliott> oerjan: ofc i could just draw a graph of all links but that kind of thing has been done and it isn't related to this game :P
22:06:11 <elliott> (I wonder how well graphviz deals with such massive graphs...)
22:15:39 -!- oerjan has quit (*.net *.split).
22:16:00 <elliott> smallest netsplit
22:16:03 <elliott> netsplit kitten
22:16:08 <elliott> so adorable
22:17:46 <Ngevd> I'm pretty sure that that's just oerjan's quit message
22:18:03 <elliott> ...no, it's not.
22:18:11 -!- oerjan has joined.
22:18:11 <elliott> he usually goes for "Good night".
22:18:34 <Ngevd> Then he must be unusually susceptible to netsplits?
22:18:45 <nooga> false
22:18:47 <oerjan> wat
22:18:52 <nooga> oerjan is up all the time
22:18:56 <Ngevd> Or I sort of roll about half the people in this channel to one in my head?
22:19:36 <nooga> I wonder in which half am I then
22:19:40 <elliott> oerjan: oh. by the way
22:19:46 <elliott> oerjan: I found an example of an applicative functor that isn't a monad, IIRC
22:19:48 <oerjan> way the by.
22:19:56 <elliott> oerjan: on the epigram blog.
22:19:58 <Ngevd> weigh the bi
22:20:15 <oerjan> IT DOESN'T COUNT IF IT NEEDS DEPENDENT TYPING
22:20:30 <elliott> oerjan: um no, in haskell.
22:20:32 <elliott> oerjan: http://www.e-pig.org/epilogue/?p=186
22:20:40 -!- Phantom_Hoover has joined.
22:20:41 <elliott> "Structure cops will note that De is another example of an applicative functor which is not a monad — join would bring things from the far future to the near future, and that had better not be possible. However, where applicative functors in general only pull through traversable functors (containers with finitely many elements), De pulls through all containers. So it’s a bit special. I wonder what it is."
22:21:00 -!- derrik has quit (Quit: quitter).
22:22:28 <Ngevd> Is there a simple way to tell if a list is finite in Haskell?
22:22:52 <oerjan> "‘NuDe’ is a fixpoint giving co-trees with delayed children."
22:23:02 <oerjan> I SEE
22:23:16 <oerjan> Ngevd: not that halts if it isn't
22:23:58 <elliott> oerjan: it's mcbride, you are surely used to the puns by now :P
22:24:05 <elliott> Ngevd: mathematically impossible
22:24:10 <oerjan> hm i may not have read that many of his
22:24:27 <elliott> oerjan: really?
22:24:31 <elliott> but he's so cool :(
22:27:13 <nooga> what are you... ah.. haskell & theory
22:27:33 <elliott> that's all we ever do
22:28:22 <Sgeo> I think I actually understand folds now
22:28:31 <elliott> you
22:28:32 <elliott> what
22:28:37 <Sgeo> Just sort of think of accum as the rest of the fold
22:28:37 <elliott> how have you failed to understand folds for this long
22:28:38 <oerjan> hm that argument that De isn't a Monad looks rather like "it isn't a monad because we have disallowed the obvious way of making it one for semantic reasons."
22:28:44 <elliott> > foldr f z [a,b,c,d]
22:28:45 <lambdabot> f a (f b (f c (f d z)))
22:28:53 <Phantom_Hoover> I think we should make a #esoteric-haskell; there's been far more Haskell chat than Minecraft chat.
22:28:54 <Sgeo> @src foldr
22:28:55 <lambdabot> foldr f z [] = z
22:28:55 <lambdabot> foldr f z (x:xs) = f x (foldr f z xs)
22:29:02 <elliott> oerjan: um no
22:29:06 <elliott> oerjan: because the implementation isn't the specification
22:29:12 <elliott> oerjan: (the specification doesn't talk about unsafeCoerce!)
22:29:12 <Ngevd> Phantom_Hoover: +1
22:29:18 <Jafet> Phantom_Hoover: Haskell is the best esoteric language!
22:29:21 <Phantom_Hoover> Ngevd, quiet, you.
22:29:25 <elliott> oerjan: like
22:29:32 <Sgeo> I actually understand that definition better than the expanded form, I think
22:29:32 <elliott> oerjan: the implementation could _also_ implement a function that exposed the unsafeCoerceness
22:29:50 <elliott> oerjan: being able to implement an interface for an implementation doesn't mean that the semantic model can do it, because exposing that interface might /break/ the model
22:29:51 <nooga> Phantom_Hoover: I though that Minecraft has been forgotten
22:30:15 <elliott> Sgeo: s/:/`f`/, s/[]/z/
22:30:18 <elliott> a : b : c : d : []
22:30:19 <elliott> ->
22:30:24 <elliott> a `f` b `f` c `f` d `f` z
22:30:27 <elliott> (except right-associative)
22:30:28 <Phantom_Hoover> Only because of the Bukkit team's lack of appropriate psychostimulants.
22:30:45 <Jafet> infixr 9 `f`
22:31:26 <oerjan> elliott: well, i'm not convinced that it gives an example of an Applicative in _haskell_ which cannot be made into a Monad.
22:31:40 <elliott> oerjan: because you need unsafeCoerce to implement it?
22:31:59 <Sgeo> In dependent typing, is it possible to make a thingy such that it's impossible to implement a Monad thingy that violates the monad laws?
22:32:05 <Sgeo> As in, the compiler checks the monad laws?
22:32:33 <oerjan> um the unsafeCoerce isn't even used in the Applicative instance. which is obviously isomorphic to Identity, btw.
22:32:39 <elliott> Sgeo: it "checks" them because you have to prove them
22:32:48 <elliott> oerjan: well ok
22:32:50 <Sgeo> Ah, cool
22:32:52 <Phantom_Hoover> elliott, you do?
22:32:57 <Phantom_Hoover> Oh, dependent typing.
22:33:01 <elliott> Sgeo: "cool", heh
22:33:14 <elliott> Sgeo: Spoken like someone who's never tried to prove anything substantial in Coq or Agda before
22:34:39 <Phantom_Hoover> The, um
22:34:50 <Phantom_Hoover> The top result for "hardback" on DDG is Memory Beta.
22:34:59 <Phantom_Hoover> As in, the definition box at the top.
22:35:05 <olsner> elliott: do those things have unsafeProveAnything?
22:35:19 <elliott> olsner: well yes
22:35:33 -!- oerjan has quit (Quit: unsafeGoodNight).
22:35:49 <Phantom_Hoover> They have Axiom unsafeProveAnything : forall x, x.
22:35:58 <Ngevd> Remember when we created ABCDEF...G?
22:36:44 <Phantom_Hoover> OK so I have discovered a cupboard in the school lab which contains, among other things, toluene, nitric acid and sulphuric acid.
22:36:45 <Phantom_Hoover> FINALLY
22:37:17 -!- GreaseMonkey has quit (Remote host closed the connection).
22:39:26 <Ngevd> http://esoteric.voxelperfect.net/wiki/User:Taneb/ABCDEF...G
22:39:38 <Ngevd> Someone make sense out of that
22:40:35 -!- copumpkin has joined.
22:40:42 <Sgeo> We didn't even implement ABCDEF
22:42:46 <Ngevd> @tell oerjan Sgeo needs a swat for abbreviating Adjudicated Blind Collaborative Design Esolang Factory
22:42:46 <lambdabot> Consider it noted.
22:43:46 -!- azaq23 has quit (Quit: Leaving.).
22:45:27 <Ngevd> I've been swatted for less
22:48:42 -!- hagb4rd has quit (Ping timeout: 248 seconds).
22:50:28 <Jafet> AbstractBeanClassDelegationExceptionFactoryGenerator
22:54:29 <elliott> @hoogle zipWith5
22:54:29 <lambdabot> Data.List zipWith5 :: (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]
22:54:31 <elliott> yesss
22:56:20 <elliott> hmm, what's a fast way of doing (last . takeWhile p)
22:58:04 -!- GreaseMonkey has joined.
22:58:04 -!- GreaseMonkey has quit (Changing host).
22:58:04 -!- GreaseMonkey has joined.
23:00:41 <Jafet> last . takeWhile p
23:02:52 <Deewiant> foldr1 (\a b -> if p b then b else a), maybe
23:05:03 <elliott> Jafet: Fast :P
23:05:07 <elliott> Deewiant: Fair enough
23:05:11 <elliott> I'm fine if it has a Maybe result
23:06:07 <Jafet> How is that slow?
23:06:51 <elliott> Jafet: Hmm, I was thinking it'd involve two traversals, but it won't will it
23:06:52 <elliott> Alright then
23:07:10 <Jafet> It might, but that's still fast
23:07:25 <Jafet> Cons, uncons, cons, uncons
23:07:37 <elliott> That's what I meant, they're in lock-step
23:07:40 <elliott> In a strict language it'd be slow
23:07:49 <Jafet> It'd still be fast!
23:07:55 <Jafet> ...unless allocation is slow.
23:08:59 <elliott> Jafet: I have a fear of traversing lists multiple times
23:09:03 <elliott> I just don't do it, ever
23:13:17 -!- Ngevd has quit (Ping timeout: 260 seconds).
23:14:01 <Jafet> {-# RULE "warm blanket" last . takeWhile p = my'Faster'LastTakeWhile #-}
23:15:58 <elliott> :D
23:24:22 -!- Jafet has quit (Quit: Leaving.).
23:27:46 -!- Phantom__Hoover has joined.
23:30:50 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
23:56:39 -!- ais523 has quit (Remote host closed the connection).
23:58:19 -!- augur[afk] has changed nick to augur.
2011-11-30
00:06:14 <elliott> 15:26:12 <tnks> is there a canonical example of an applicative functor that isn't a monad?
00:06:14 <elliott> 15:26:56 <tnks> or rather can't have a monad constructed around it.
00:06:14 <elliott> 15:29:51 <dmwit> tnks: ZipList
00:06:14 <elliott> 15:29:53 <hpc> tnks: ZipList
00:06:15 <elliott> AAAAAAARGH
00:06:27 <elliott> @tell oerjan GET YOUR ZIPLIST JOIN FORMULATED, I NEED TO GO ON THE OFEFNSIVE ALREADY
00:06:27 <lambdabot> Consider it noted.
00:06:35 <elliott> @tell oerjan *OFDSIOFG
00:06:35 <lambdabot> Consider it noted.
00:12:14 -!- Jafet has joined.
00:20:17 -!- Nisstyre has joined.
00:21:52 <elliott> Phantom__Hoover
00:21:55 <elliott> Im disapointe in you
00:23:53 <shachaf> elliott: What?
00:23:56 <shachaf> ZipList join?
00:24:01 <elliott> Yes.
00:24:24 <shachaf> You can make such a thing?
00:24:36 <elliott> oerjan reckons he has.
00:24:37 -!- nooga has quit (Ping timeout: 260 seconds).
00:24:52 <elliott> It's basically just diagonalisation a la the reader monad, but tricksy because of the no guarantee of equal length.
00:25:18 <shachaf> Right, but I thought that was "tricksy" as in "impossible" because of that.
00:25:19 <elliott> (oerjan is sceptical that there are any Haskell ADTs that can be made applicative functors that can't be made monads (with the two instances agreeing))
00:25:34 <elliott> shachaf: Well, he wrote it out once in here I think and claimed it worked :P
00:26:04 <elliott> <elliott> (oerjan is sceptical that there are any Haskell ADTs that can be made applicative functors that can't be made monads (with the two instances agreeing))
00:26:08 <elliott> Well, I suppose that's easily disprovable.
00:26:15 <elliott> But you need existential quantification.
00:44:23 -!- Jafet has quit (Quit: Leaving.).
00:51:45 * Phantom__Hoover → sleep
00:51:54 <Phantom__Hoover> If only I had a way of indicating DEFCONery.
00:52:05 -!- Phantom__Hoover has quit (Quit: Leaving).
01:02:53 -!- Jafet has joined.
01:04:16 -!- Jafet has quit (Client Quit).
01:05:01 -!- Jafet has joined.
01:13:29 -!- Jafet has quit (Quit: Leaving.).
01:16:08 -!- xmorc has joined.
01:18:04 -!- xmorc has quit (Client Quit).
01:30:26 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/b/bd/CricketBattingAverageHistogram.gif Wow.
01:40:25 <elliott> integration should be banned
01:41:40 <elliott> pikhq_: join me in "anti integration league"
01:41:45 <elliott> wait no that sounds racist
01:43:01 -!- pikhq has joined.
01:43:03 -!- pikhq_ has quit (Ping timeout: 240 seconds).
01:48:16 <elliott> pikhq: :(
01:55:46 <pikhq> elliott: ?
01:55:51 <elliott> <elliott> integration should be banned
01:55:51 <elliott> <elliott> pikhq_: join me in "anti integration league"
01:55:51 <elliott> <elliott> wait no that sounds racist
01:55:56 <pikhq> Ah.
01:56:03 <pikhq> Why should it be banned?
01:56:16 <elliott> It's icky. Also uncomputable.
01:56:53 <pikhq> ^in the general case
01:57:15 <elliott> pikhq: The general case including........... Newtonian physics
01:57:36 <pikhq> Um?
01:58:04 <elliott> Which means numeric approximations
01:58:06 <elliott> Which means pain :'(
01:59:28 <elliott> pikhq: ("Um?"?)
02:08:42 -!- Jafet has joined.
02:19:21 <elliott> > text $ "pikhq: (" ++ fix ("\"" ++) ++ "Um" ++ fix (++ "\"?") ++ ")"
02:19:26 <elliott> > var $ "pikhq: (" ++ fix ("\"" ++) ++ "Um" ++ fix (++ "\"?") ++ ")"
02:19:33 <elliott> WORK WITH ME HERE LAMBDABOT
02:19:38 <lambdabot> mueval-core: Time limit exceeded
02:19:38 <lambdabot> thread killed
02:19:53 <elliott> > "pikhq: (" ++ fix ("\"" ++) ++ "Um" ++ fix (++ "\"?") ++ ")"
02:19:58 <lambdabot> mueval-core: Time limit exceeded
02:20:10 <elliott> pah
02:33:03 -!- pikhq has quit (Ping timeout: 240 seconds).
02:33:09 -!- pikhq_ has joined.
03:10:47 -!- Jafet has quit (Quit: Leaving.).
03:11:26 -!- Jafet has joined.
03:46:42 <kallisti> > deriv (\x -> (+3) * x) (+4)
03:46:43 <lambdabot> Couldn't match expected type `a -> a'
03:46:43 <lambdabot> against inferred type `Data.N...
03:50:22 <Sgeo> Hmm!
03:50:44 <Sgeo> > ((cos^2) + (sin^2))
03:50:46 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
03:50:46 <lambdabot> arising from a use of `...
03:50:49 <Sgeo> > ((cos^2) + (sin^2)) 5
03:50:50 <lambdabot> 0.9999999999999999
03:51:17 <elliott> :t deriv (\x -> (+3) * x)
03:51:18 <lambdabot> Couldn't match expected type `a -> a'
03:51:18 <lambdabot> against inferred type `Dif a1'
03:51:18 <lambdabot> In the second argument of `(*)', namely `x'
03:51:29 <Sgeo> > deriv (\x -> (+3) * x) (+4) 10
03:51:31 <lambdabot> Couldn't match expected type `a -> a'
03:51:31 <lambdabot> against inferred type `Data.N...
03:51:43 <elliott> @env
03:51:43 <lambdabot> Maybe you meant: v wn
03:51:47 <elliott> bleh /me finds L.hs
03:51:54 <elliott> gotta track down where deriv is from so I know what the constructor is
03:52:42 <elliott> http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/Data-Number-Dif.html
03:53:19 <elliott> :t deriv (\x -> df (+3) (deriv (+3)) * x)
03:53:20 <lambdabot> The section `+ 3' takes one argument,
03:53:21 <lambdabot> but its type `Dif a' has none
03:53:21 <lambdabot> In the first argument of `df', namely `(+ 3)'
03:53:31 <elliott> er duh
03:53:43 <elliott> :t deriv (\x -> df (+3) 1 * x)
03:53:44 <lambdabot> The section `+ 3' takes one argument,
03:53:44 <lambdabot> but its type `Dif a' has none
03:53:44 <lambdabot> In the first argument of `df', namely `(+ 3)'
03:53:46 <elliott> oops
03:53:51 <elliott> :t (\x -> df (+3) 1 * x)
03:53:52 <lambdabot> The section `+ 3' takes one argument,
03:53:52 <lambdabot> but its type `Dif a' has none
03:53:52 <lambdabot> In the first argument of `df', namely `(+ 3)'
03:53:58 <elliott> oh!
03:54:00 <elliott> :t deriv (\x -> mkDif (+3) 1 * x)
03:54:01 <lambdabot> forall a. (Num a) => (a -> a) -> a -> a
03:54:07 <elliott> > deriv (\x -> mkDif (+3) 1 * x) (+4)
03:54:08 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
03:54:08 <lambdabot> arising from a use of `...
03:54:09 <elliott> kallisti: ^
03:54:23 <Sgeo> :t mkDif
03:54:24 <lambdabot> forall a. a -> Dif a -> Dif a
03:55:22 <Sgeo> I don't see what's wrong with kallisti's original thing?
03:55:46 <elliott> the types don't work
03:55:50 <elliott> (+3) does not match (Dif _)
03:55:53 <elliott> because it's (_ -> _)
03:56:55 <kallisti> ah right
03:56:59 <kallisti> can't do fromInteger magic there.
03:57:12 <elliott> > deriv (\x -> mkDif (+3) 1 * x) (+4) pi
03:57:13 <lambdabot> *Exception: (==): No overloading for function
03:57:17 <elliott> A+
03:57:31 * elliott doesn't know why that doesn't work.
03:57:44 <elliott> :t deriv (\x -> mkDif (+3) 1 * x) (+4) pi
03:57:45 <lambdabot> forall a. (Floating a) => a
04:30:20 <kallisti> elliott: I'm guessing pi for (->) is const pi?
04:30:36 <elliott> it couldn't exactly be anything else
04:31:15 <Sgeo> Ah
04:31:38 * elliott has no idea why the deriv thing there invokes ==
04:32:53 <kallisti> > mkDif (+3) 1
04:32:54 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
04:32:54 <lambdabot> arising from a use of `...
04:32:58 <kallisti> > mkDif (+3) 1 * pi
04:32:59 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
04:32:59 <lambdabot> arising from a use of `...
04:33:19 <Sgeo> > deriv (\x -> (+ (Dif 3)) * x) (+4)
04:33:20 <lambdabot> Not in scope: data constructor `Dif'
04:33:21 <kallisti> maybe it checks the output for some reason?
04:33:25 <kallisti> Sgeo: ...
04:33:32 <Sgeo> > deriv (\x -> (+ (Dif 3 0)) * x) (+4)
04:33:34 <lambdabot> Not in scope: data constructor `Dif'
04:33:40 <Sgeo> > deriv (\x -> (+ (D 3 0)) * x) (+4)
04:33:41 <lambdabot> Not in scope: data constructor `D'
04:35:54 <kallisti> I believe in you Sgeo.
04:36:02 <kallisti> I believe in your ability to read previous lines of code.
04:36:08 <Sgeo> :t mkDif
04:36:09 <lambdabot> forall a. a -> Dif a -> Dif a
04:36:15 <kallisti> Sgeo: yesssss!
04:36:18 <kallisti> triumph!
04:37:03 <Sgeo> :t deriv
04:37:05 <lambdabot> forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b
04:38:31 <kallisti> "Now we're told that coyotes don't TYPICALLY eat children" -- local CBS news
04:40:57 <elliott> wow
04:41:22 <kallisti> elliott: there are apparently some coyotes in Atlanta's parks
04:41:26 <kallisti> (park? I don't know)
04:46:03 <Sgeo> kallisti, elliott update
04:46:45 <quintopia> there are lots of parks
04:47:08 <quintopia> if any has coyotes, i'd bet on palisades
04:47:19 <quintopia> its just a forest
04:49:24 <kallisti> ..no
04:50:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
04:53:35 -!- copumpkin has joined.
05:05:18 -!- Jafet has quit (Quit: Leaving.).
05:09:18 -!- zzo38 has joined.
05:24:07 <zzo38> Now I invented the functions: opencont, closecont, opencontT, closecontT
05:25:23 <Sgeo> o.O
05:26:11 <zzo38> opencont (Barrier a c) = Barrier (a, c) opencont; closecont (Barrier (a, c) f) = Barrier a $ closecont . f . c;
05:26:37 <Sgeo> Oh
05:26:47 * Sgeo still has no idea what barrier monads are
05:26:52 <elliott> nobody does
05:26:57 <zzo38> closecont . opencont = id
05:27:31 <zzo38> Sgeo: Do you know about the generator functions (with yield) in JavaScript and in Python? Barrier monads is similar to that
05:27:41 <Sgeo> Ah
05:27:53 <Sgeo> Not familiar with JS, but am familiar with Python generator functions
05:28:21 <Sgeo> There's a Haskell library with yield somewhere
05:28:23 <zzo38> I think the JS and Python generator functions are similar to each other
05:32:31 -!- Sgeo has quit (Ping timeout: 244 seconds).
05:33:05 -!- Sgeo has joined.
05:36:30 <elliott> @pl \f xs -> tail xs ++ [f xs]
05:36:30 <lambdabot> liftM2 (++) tail . flip flip [] . ((:) .)
05:36:33 <elliott> @t \f xs -> tail xs ++ [f xs]
05:36:34 <lambdabot> Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v
05:36:35 <elliott> @ty \f xs -> tail xs ++ [f xs]
05:36:38 <lambdabot> forall a. ([a] -> a) -> [a] -> [a]
05:36:43 <elliott> @. hoogle ty \f xs -> tail xs ++ [f xs]
05:36:44 <lambdabot> Plugin `compose' failed with: Unknown command: "ty"
05:36:47 <elliott> @. hoogle type \f xs -> tail xs ++ [f xs]
05:36:48 <lambdabot> Parse error:
05:36:48 <lambdabot> forall a. ([a] -> a) -> [a] -> [a]
05:36:48 <lambdabot>
05:36:55 <elliott> @hoogle ([a] -> a) -> [a] -> [a]
05:36:55 <lambdabot> Foreign.Marshal.Utils withMany :: (a -> (b -> res) -> res) -> [a] -> ([b] -> res) -> res
05:36:56 <lambdabot> Data.Generics.Aliases ext1Q :: (Data d, Typeable1 t) => (d -> q) -> (forall e. Data e => t e -> q) -> d -> q
05:41:43 <Sgeo> zzo38, http://hackage.haskell.org/packages/archive/generator/0.5.4/doc/html/Control-Monad-Generator.html
05:43:13 <elliott> um
05:43:17 <elliott> Sgeo: isn't that just Writer
05:43:18 <elliott> except stupid
05:43:43 <pikhq_> Life is weird at times.
05:43:52 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/3/3d/Ventricaria_ventricosa.JPG That's a fucking single-celled life form.
05:44:21 <pikhq_> They typically are 1-4 centimeters in diameter.
05:45:05 <Sgeo> I take it that Barrier is more like Python's abilities to pass in arguments to a generator?
05:45:26 <Sgeo> Or, actually, even getting items out one at a time makes sense, doesn't it... no, it does not
05:45:38 <Sgeo> Except as an already existing monad
05:45:57 <Sgeo> Will laziness cause the writer monad to also pause?
05:46:09 <Sgeo> If I only ask for the log
05:46:28 <elliott> "pause"?
05:46:53 <Sgeo> elliott, as in, not continuing to compute past, say, the first tell until I ask for the next item in the list
05:47:13 <elliott> how could it compute things you didn't force
05:47:55 <Sgeo> What was the other function used with the Writer monad
05:48:32 <zzo38> In JavaScript, there is a function g.send(x) that sends x to the result of yield inside of the generator function
05:48:48 <Sgeo> zzo38, Python has something similar
05:49:06 <Sgeo> And I guess that's what Barrier monads do?
05:49:40 <Sgeo> "The Monad: and other essays upon the higher consciousness - Google Books Result"
05:49:40 -!- kallisti_ has joined.
05:49:49 <Sgeo> "The sceptic erects a barrier round himself by his aggressive unbelief — a barrier which it is not worth the while of the non-physical entity to pierce ..."
05:50:15 <zzo38> Sgeo: Yes, it does that. This is the definition: data Barrier f b t = Unit t | Barrier f (b -> Barrier f b t) | Fail String; yield :: f -> Barrier f b b; yield = flip Barrier Unit;
05:51:45 -!- kallisti has quit (Ping timeout: 245 seconds).
05:51:58 <Sgeo> So f is the type of values that can be passed out of the Barrier monad, and b is the type that can go into it?
05:52:56 <zzo38> Sgeo: Yes.
05:53:07 <Sgeo> That's cool
05:53:14 <Sgeo> Is it on Hackage yet?
05:53:14 <Sgeo> >.>
05:53:33 <zzo38> Not yet. But I will put it on later.
05:54:20 <Sgeo> It vaguely reminds me of Iteratees, although Iteratees can only give one answer
05:54:26 <Sgeo> iirc
05:59:17 <zzo38> The function to make it to a list is collect :: Barrier f () t -> [f]
05:59:51 <zzo38> There is also reverse operation is uncollect :: [x] -> Barrier x a ()
06:02:45 <Sgeo> I'm trying to envision bind
06:03:12 <zzo38> I can tell you how I defined it if you want that
06:03:27 <Sgeo> Hmm, I guess if the thing on the left is a Barrier f (b -> Barrier f b t), the whole thing could be of that form
06:04:21 <Sgeo> But sure
06:05:15 <zzo38> Unit x >>= f = f x; Barrier a c >>= f = Barrier a $ c >=> f;
06:06:20 <Sgeo> That is far more concise than I could have written at first glance.
06:06:49 <Sgeo> I assume Fail a >>= _ = Fail a
06:06:50 <Sgeo> ?
06:07:04 <zzo38> Sgeo: Yes.
06:07:26 <zzo38> And there is instance of Alternative which is based on that.
06:07:36 -!- Jafet has joined.
06:07:42 * Sgeo is still a bit shaky on how Alternatives work in general
06:07:47 <Sgeo> Or what they're useful for
06:08:02 <Sgeo> Except parsing monads, ofc, but I don't understand how parsing monads work internally either
06:09:01 <Jafet> They allow parser embiggenment
06:09:29 <zzo38> They can be used with things other than parsers too.
06:10:13 -!- DCliche has joined.
06:11:42 <zzo38> Now I added a MonadPlus instance. However, it doesn't follow the right zero law but MonadPlus for many other monads also does not follow right zero law (but there are also many that do follow the right zero law).
06:12:01 <zzo38> empty = Fail []; Unit x <|> _ = Unit x; Fail y <|> x = annotateFail y x; Barrier a c <|> x = Barrier a $ \y -> (c y <|> x);
06:12:09 <zzo38> mzero = empty; mplus = (<|>);
06:13:46 -!- Klisz has quit (Ping timeout: 244 seconds).
06:13:53 <Sgeo> zzo38, when you were writing Barrier a c >>= f = Barrier a $ c >=> f, did you first write that c >=> f as something else?
06:14:11 <Sgeo> I guess I want reassurance that I don't need to catch things like that immediately
06:14:54 <zzo38> Sgeo: I did first write it like that, but maybe some other people might not (I don't know)
06:18:43 <Sgeo> zzo38, it should be possible to write crosstalk :: Barrier f b t1 -> Barrier b f t2 -> ([f],[b]), right?
06:19:45 <Sgeo> Wait, what if one wants to consume more than the other?
06:28:08 <zzo38> Sgeo: I have not thought of that function, but I might be able to. I suppose if one wants to consume more than the other, then you just use the shorter one
06:37:25 -!- pikhq has joined.
06:37:42 -!- pikhq_ has quit (Ping timeout: 252 seconds).
06:42:07 <elliott> @ask oklopol remember when you used to be stupid? <oklopol> j-invariant: actually i probably couldn't lecture all night, since the first nontrivial thing you usually do about CA is a theorem i actually don't know how to prove :D
06:42:08 <zzo38> I managed to do this: crosstalk :: Barrier f b t1 -> Barrier b f t2 -> [(f, b)]; crosstalk (Barrier a1 c1) (Barrier a2 c2) = (a1, a2) : crosstalk (c1 a2) (c2 a1); crosstalk _ _ = [];
06:42:08 <lambdabot> Consider it noted.
06:54:35 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:01:36 <zzo38> crosstalkT :: (Functor m, Monad m) => BarrierT f b m t1 -> BarrierT b f m t2 -> m [(f, b)]; crosstalkT x y = liftM2 (liftA2 (,)) (runBarrierT (() <$ x)) (runBarrierT (() <$ y)) >>= either (const $ return []) (\((a1, c1), (a2, c2)) -> ((a1, a2) :) <$> crosstalkT (c1 a2) (c2 a1));
07:06:44 <zzo38> crosstalkT x y = liftM2 (liftA2 (,)) (runBarrierT ([] <$ x)) (runBarrierT ([] <$ y)) >>= either return (\((a1, c1), (a2, c2)) -> ((a1, a2) :) <$> crosstalkT (c1 a2) (c2 a1));
07:13:24 -!- GreaseMonkey has quit (Quit: The Other Game).
07:22:58 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
07:33:21 <kallisti_> @hoogle deriv
07:33:21 <lambdabot> package derivation-trees
07:33:21 <lambdabot> package derive
07:33:21 <lambdabot> package derive-gadt
07:33:32 <kallisti_> aw, mu-eval doesn't have those.
07:33:39 <kallisti_> :t deriv
07:33:40 <lambdabot> forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b
07:33:46 <kallisti_> @hoogle (Dif a -> Dif b) -> a -> b
07:33:47 <lambdabot> Warning: Unknown type Dif
07:33:47 <lambdabot> Data.Generics.Aliases ext1T :: (Data d, Typeable1 t) => (forall e. Data e => e -> e) -> (forall f. Data f => t f -> t f) -> d -> d
07:37:49 <elliott> kallisti_: i found the package earlier
07:39:06 <kallisti_> elliott: so you actually added it to lambdabot?
07:39:15 <elliott> ...no
07:39:34 <kallisti_> @src deriv
07:39:35 <lambdabot> Source not found. You speak an infinite deal of nothing
07:39:56 <kallisti_> elliott: also how does AD work in languages like C where there's no operator overloading.
07:40:03 <kallisti_> you said it could be used to differentiate C functions and the like.
07:40:09 <elliott> external tools
07:40:18 <elliott> in C++ they do horrible template hacks
07:41:39 <kallisti_> well duh
07:41:49 <kallisti_> that's how you do anything complex in C++
07:43:03 <kallisti_> does it require the C source?
07:43:07 <elliott> obviously
07:44:40 <kallisti_> elliott: who knows it could do some machine code hacks.
07:45:37 <kallisti_> elliott: so if you didn't add ad to lambdabot how is it there?
07:45:45 <elliott> lambdabot imports a fuckton of shit
07:45:52 <kallisti_> oh.
07:46:05 <kallisti_> hm, I guess mu-eval hasn't caught up or doesn't use the same imports.
07:46:10 <kallisti_> it's very picky about its imports.
07:50:40 <kallisti_> what's the name of the package that defines deriv?
07:51:27 <kallisti_> tried ad, fad, rad, and Data.Ring.Module.AutomaticDifferentiation but I don't think it's the same one
07:51:42 <elliott> kallisti_: stop attributing these things to mueval
07:51:44 <elliott> it is L.hs alone
07:52:52 <elliott> grr, I wish this glib queue had the property I want
07:53:30 <kallisti_> elliott: L.hs?
07:53:37 <elliott> kallisti_: see lambdabot sourec
07:57:24 <Sgeo> I think lists encode an at-most:
07:57:28 <kallisti_> Data.Number.Dif is commented out from the mueval source. :(
07:57:32 <Sgeo> [] fits the type [a], [[a]], etc.
07:57:43 <elliott> kallisti_: mueval is irrelevant
07:57:56 <kallisti_> elliott: ...to?
07:57:57 <Sgeo> Is there a way to encode at-least?
07:58:03 <elliott> kallisti_: the lambdabot imports
07:58:08 <elliott> Sgeo: i don't have any idea what you are talking about
07:58:10 <kallisti_> elliott: it's certainly relevant to what I'm talking about.
07:58:14 <kallisti_> which is not lambdabot
07:58:16 <kallisti_> it's mueval
07:58:28 <elliott> heh
07:58:44 <kallisti_> ..I mean, clearly lambdabot imports it.
07:58:47 <kallisti_> that wasn't the issue. :P
07:58:55 <Sgeo> [] fits the type [[[a]]], as do [[]] and [[[]]] and [[[[]]]] but [[[[[]]]]] does not
07:59:37 <Sgeo> (Typeclasses could be used to clean up that a, but I need to go to sleep soon)
07:59:56 <Sgeo> So [[[a]]] means "Accept at most [[[[]]]] but no numbers larger than that"
08:00:15 <Sgeo> (Treating these nested lists as numbers)
08:00:34 <Sgeo> I should go to sleep now, I have an exam tomorrow
08:01:53 <Sgeo> Hmm, I'd wonder if tuples are a better bet, but there are no one-element tuples
08:02:02 <Sgeo> ...and also, it wouldn't work, so n/m
08:02:40 <kallisti_> 1-tuples are a completely pointless thing.
08:02:49 <elliott> ugh, this sucks
08:03:15 <kallisti_> except newtypes I guess. newtypes are kind of like 1-tuples I guess.
08:03:33 <Sgeo> The point here is the nesting, though
08:04:10 <kallisti_> Just (Just (Just Nothing ) ) zomg
08:05:17 <Sgeo> That works just as well (or better), but which is easier to type?
08:05:27 <kallisti_> > Nothing :: Maybe ( Maybe ( Maybe a ) )
08:05:28 <lambdabot> Nothing
08:06:16 <Sgeo> What I'm curious about is if it's possible to encode at-least
08:06:20 <kallisti_> Sgeo: which is less broken. (not completely unbroken, but less broken at least)
08:06:37 <kallisti_> Sgeo: what does that even mean.
08:06:46 <kallisti_> (note: I read the explanation above; still confused)
08:06:52 <Sgeo> Values of a certain "value" or greater, as specified in the type, pass the type
08:06:56 <kallisti_> basically, what are you doing.
08:07:14 <Sgeo> What I currently have is values of a certain "value", or less, as specified in the type, pass the type
08:07:21 <Sgeo> So [] represents 0, for instance
08:07:36 <Sgeo> And passes [a], [[a]], [[[a]]], etc
08:07:39 <elliott> pikhq: Deewiant: I need a C language lawyer, ping
08:07:45 <Deewiant> Pong
08:08:03 <Sgeo> Whereas [[]] represents 1 and passes ... erm, [a], [[a]], [[[a]]]. Let's say that [[]] is 0
08:08:14 <Sgeo> [[[]]] passes.... ok, bluh
08:08:16 <kallisti_> elliott: I need a real lawyer; I may actually kill Sgeo.
08:08:19 <Sgeo> Let's start this again
08:08:21 <Deewiant> Sgeo: [[]] doesn't pass [a]
08:08:29 <elliott> Deewiant: Does C99 give enough guaranteed on accesses to a global volatile bool so that {x = false;} and {x = true;} are atomic with respect to "if (x)"
08:08:40 <Sgeo> [] doesn't fit the oh so heavy burden imposed by a?
08:08:48 <elliott> i.e. can I assume it works like an atomic shared bit for setting and testing
08:08:56 <elliott> (Setting to constants)
08:09:18 <Deewiant> "At sequence points, volatile objects are stable in the sense that previous accesses are complete and subsequent accesses have not yet occurred."
08:09:29 <Sgeo> Let's say that [] is 0. It passes [()], [[()]], [[[()]]], etc.
08:09:41 <kallisti_> > [[]] :: [a]
08:09:42 <lambdabot> Couldn't match expected type `a1' against inferred type `[a]'
08:09:43 <lambdabot> `a1' is a ...
08:09:53 <elliott> kallisti_: You can pass [[]] to a function expecting [a]
08:09:57 <elliott> Is I think Sgeo's point
08:10:05 <elliott> Deewiant: Alright. I still feel bad about using it.
08:10:13 <Sgeo> [[]] 1, by contrast, does not fit [()], but does fit [[()]], [[[()]]], etc.
08:10:41 <kallisti_> > let id :: [a] -> [a]; id x = x in id [[]]
08:10:43 <lambdabot> [[]]
08:10:50 <elliott> Deewiant: (I was hoping to eliminate the global volatile variable world_running from mcmap, but GLib doesn't offer something as simple as "a queue that you can disown so that pushes just do nothing" (or equivalent).)
08:11:00 <Sgeo> So, So, [[]] 1 is not at-most [()] 0
08:11:08 <elliott> Deewiant: (So removing world_running would cause every received world-relevant packet to leak memory in the queue.)
08:11:09 -!- oerjan has joined.
08:11:09 <Sgeo> (The former is the value, the latter is the type)
08:11:11 <elliott> (If the world's stopped.)
08:11:37 <Sgeo> So, [()] in the type means at-most 0. [[()]] in the type means at-most 1. etc.
08:11:50 <Deewiant> elliott: Can't you clear the queue at some later time?
08:12:00 <Sgeo> I'm still pondering potential usages of this, but I also have to wonder if there's a way to encode at-least.
08:12:01 <elliott> Deewiant: Clear it howso
08:12:11 <elliott> Deewiant: The point is that after the world thread ends, nobody is popping the queue
08:12:15 <elliott> But the proxy thread is still pushing
08:12:27 <Deewiant> When does this matter
08:12:47 <Deewiant> The world thread sounds like something important (note: I have no idea what the threads are for)
08:13:04 <Sgeo> kallisti_, is anything I'm saying making sense?
08:13:15 <elliott> Deewiant: When the world thread crashes in a predictable manner :)
08:13:32 <elliott> Deewiant: fizzie thought it important that the proxy continue to function even if the map and commands break
08:13:42 <Deewiant> elliott: And you want to keep the program running after this?
08:13:47 <elliott> ./world.c:stopf("chunk update decompression: inflateInit: %s", zError(err));
08:13:47 <elliott> ./world.c:stopf("chunk update decompression: inflate: %s", zError(err));
08:13:47 <elliott> ./world.c:stopf("broken decompressed chunk length: %d != %d and < %d",
08:13:47 <elliott> ./world.c:stopf("too high chunk update: %d..%d", y0, y0+ys-1);
08:13:53 <elliott> Basically it happens when chunk updates are fucked
08:14:02 <elliott> Deewiant: Well, it already does
08:14:09 <Vorpal> elliott: haven't Mojang fixed them?
08:14:18 <elliott> Deewiant: It works fine without even world_running, it just leaks memory
08:14:33 <kallisti_> Sgeo: um... I guess.
08:14:37 <elliott> Deewiant: I'd rather remove stop entirely or make it not leak memory and not use a volatile global
08:14:40 <kallisti_> but.. I don't know why you're doing that.
08:14:42 <elliott> I don't know how to achieve the latter
08:14:47 <Sgeo> kallisti_, BECAUSE I CAN
08:14:48 <Deewiant> elliott: What exactly works fine, what does the world thread do :-P
08:14:57 <Sgeo> (Also: Note: Practical usages still to be determined)
08:15:01 <elliott> Deewiant: Processes incoming world-relevant packets
08:15:08 <elliott> Deewiant: Map chunk updates, entity position updates, chat messages
08:15:19 <kallisti_> Sgeo: DUDE EITHER ENCODES LIKE..... LINKED LISTS
08:15:21 <Deewiant> elliott: Right, so, what exactly is still happening without the world thread
08:15:23 <elliott> Deewiant: Basically the world thread handles everything that isn't part of mcmap's fun ol' proxying/console regime
08:15:25 <elliott> Deewiant: Proxying
08:15:28 <elliott> Proxying and the console
08:15:34 <Vorpal> Deewiant: iirc it handles tracking of the world, for map display purposes and so on. Basically everything that isn't just "pass on to client/server"
08:15:35 <elliott> The map just freezes
08:15:45 <Deewiant> Right, hmh
08:15:50 <kallisti_> Sgeo: Either Int (Either Bool (Either (IO Awesome) ()))
08:15:55 <kallisti_> duuuuude think of the implications
08:16:04 <elliott> (The world thread is separate because fizzie thinks processing world packets might be slow; in reality the threading overhead almost certainly dwarfs it, but that's a battle for another day)
08:16:12 -!- nooga has joined.
08:16:23 <elliott> Deewiant: I get the feeling that a volatile global is The Way to do this, and if I want to avoid them I should use a super-high-level concurrency library
08:16:34 <elliott> Rather than glib's "here's some thread-starting functions... and a mutex... and a queue".
08:16:39 <elliott> "Have fun with that."
08:16:43 <Vorpal> heh
08:16:50 <elliott> (Heck, glib even has some operations on volatile pointers to lock bits atomically.)
08:17:09 <Vorpal> elliott: so are the glib threads any better than pure pthreads? Apart from portability concerns that is.
08:17:42 <elliott> Vorpal: Well, they have a bit more than just mutexes; run-once sections, conditions, and the aforementioned queues
08:17:48 <elliott> Maybe pthreads has queues, I dunno
08:17:50 <elliott> But portability is nice
08:18:02 <elliott> Oh, also read-write locks
08:18:04 <elliott> That's nice too
08:18:08 <Vorpal> elliott: I know pthreads have condition variables. No idea about run-once sections.
08:18:25 <elliott> Also ~RECURSIVE MUTEXES~
08:18:32 <Vorpal> pthreads have that
08:18:45 <Vorpal> also pthread_rwlock_init
08:18:56 <elliott> Deewiant: I'm wondering why I don't just make stopf situations drop the current packet
08:19:01 <elliott> Deewiant: The network protocol is synchronised at that point anyway
08:19:05 <kallisti_> Adjective:
08:19:07 <kallisti_> (of words or the person speaking them) Fluent and voluble but insincere and shallow.
08:19:15 <elliott> So... I'm gonna do that
08:19:22 <Vorpal> elliott: hm... won't that fuck up for the client?
08:19:35 <elliott> Vorpal: This happens after it's forwarded to the client
08:19:38 <Vorpal> ah okay
08:19:46 <elliott> The Notchian client just sort of magically makes sense of any data you throw at it
08:19:57 <Vorpal> elliott: might want to rename it from stopf to something else then
08:20:12 <Vorpal> elliott: really? I guess you should look at mcp stuff to figure out what you are missing then
08:20:15 <elliott> Vorpal: I'm not going to modify the macro to insert a return :-P
08:20:21 <elliott> And no, it mostly just ignores things
08:20:24 <Vorpal> heh
08:20:29 <elliott> I don't think we ever actually get these stopf errors these days
08:20:37 <elliott> But that's life, or some such
08:20:46 <Vorpal> bbl
08:20:51 <Vorpal> (university)
08:21:00 <elliott> More like unicrappity
08:21:31 <kallisti_> bbl
08:21:34 <kallisti_> (christmas carols)
08:21:59 <elliott> Deewiant: My delightful new prefix for these "zlib fucked up" errors is [WHAT]
08:29:06 <kallisti_> http://www.cracked.com/article_16508_6-terrifying-things-they-dont-tell-you-about-childbirth.html
08:29:11 <kallisti_> oh, I'm on this part of the internet again.
08:35:30 <zzo38> Is there any proper name for this? data T a b = T b ((T a b -> a) -> a); What is its meaning?
08:38:53 -!- Phantom_Hoover has joined.
08:39:31 <elliott> Deewiant: Can you please shoot whoever made gcc too stupid to realise that if (...) { x = y; } else if (...) { x = z; } else call_noreturn_function() cannot leave x uninitialised
08:40:02 <Phantom_Hoover> lambdabot!
08:40:03 <lambdabot> Phantom_Hoover: You have 8 new messages. '/msg lambdabot @messages' to read them.
08:41:04 <Deewiant> elliott: Ah, but what if somebody else provides a call_noreturn_function() that actually returns
08:41:17 <elliott> Deewiant: IT'S __ATTRIBUTE__((NORETURN))
08:41:18 <elliott> IN THE HEADER
08:41:33 <Deewiant> elliott: Do those __attribute__s actually have to match?
08:41:35 <Jafet> Shoot whoever made you use -Werror
08:41:36 <Deewiant> (I'm not sure)
08:41:57 * kallisti_ has just now watched double rainbow.
08:42:02 <elliott> Deewiant: I don't define it with that attribute in the .c file since it includes the relevant header :-P
08:42:10 <elliott> Jafet: fizzie
08:42:28 <elliott> Jafet: But I'm kinda warning-phobic anyway, it only takes about four warnings to make me start ignoring any fifth warning that might pop up
08:42:30 <Deewiant> elliott: But anyway, what if you explicitly return thereafter
08:42:32 -!- monqy has quit (Quit: hello).
08:42:57 <elliott> Deewiant: Doesn't work (thank god)
08:43:07 <elliott> I'm not sure what it's complaining about
08:43:14 <Jafet> Remember the zero-one-infinity rule. Fix all warnings, or fix the first warning, or ignore all warnings
08:43:15 <elliott> Is it just complaining because I declare them without initialising them RIGHT THERE...
08:43:31 <Jafet> C is easy anyway, you can initialize almost anything with 0
08:43:36 <Jafet> Be thankful you're not in C++
08:43:55 <elliott> http://sprunge.us/bGIN ;; COME ON LET ME APPLY THIS
08:44:03 <elliott> Jafet: Nope, socket_t must be used abstractly here
08:44:07 <elliott> Jafet: Could be a struct
08:44:17 <elliott> Jafet: On Windows it's a "SOCKET", whatever that is
08:44:40 <Jafet> A shout, for one thing
08:45:06 <elliott> Deewiant: BTW once I get around to pushing this stuff could you test the Windows build, I think it should even be working
08:46:21 <Deewiant> When I'm next in Windows after that, sure
09:05:00 * oerjan swats Sgeo for abbreviating Adjudicated Blind Collaborative Design Esolang Factory -----###
09:05:00 <lambdabot> oerjan: You have 3 new messages. '/msg lambdabot @messages' to read them.
09:05:57 <oerjan> :t ZipList
09:05:58 <lambdabot> forall a. [a] -> ZipList a
09:14:28 <oerjan> > scanl1 (zipWith (flip const)) [[1,2,3],[4,5],[6,7,8,9]]
09:14:30 <lambdabot> [[1,2,3],[4,5],[6,7]]
09:14:38 <oerjan> > scanl1 (zipWith (flip const)) []
09:14:40 <lambdabot> []
09:18:28 <zzo38> \setbox0=\hbox{\write16{\csname zzz\endcsname}}\show\zzz\shipout\box0\show\zzz
09:19:20 <elliott> oerjan: is that it?
09:19:23 <elliott> Deewiant: Language lawyer time
09:19:31 <elliott> Deewiant: Is it OK to define a function in a header and then never talk about it again and then link the program
09:19:33 <oerjan> no, just a small part
09:19:50 <Deewiant> elliott: Define, not declare?
09:19:54 <elliott> Er, declare
09:20:11 <Deewiant> Yes, of course
09:21:09 <elliott> Deewiant: Gross
09:21:12 -!- nooga has quit (Quit: Lost terminal).
09:21:34 <oerjan> > scanr1 ((drop 1 .) . (:)) [[1,2,3],[4,5],[6,7]]
09:21:35 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
09:21:40 <kallisti_> elliott: the alternative would be macro hacks.
09:21:41 <oerjan> oops
09:21:45 <Deewiant> elliott: math.h can be used without linking libm, you know :-P
09:22:09 <oerjan> > scanr1 ((. drop 1) . (:)) [[1,2,3],[4,5],[6,7]]
09:22:10 <elliott> Deewiant: BUT STILL
09:22:10 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
09:22:15 <oerjan> wtf
09:22:25 <oerjan> :t scanr1 ((. drop 1) . (:))
09:22:26 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
09:22:26 <lambdabot> Expected type: [a]
09:22:26 <lambdabot> Inferred type: [[a]]
09:22:29 <Deewiant> ?ty (. drop 1) . (:)
09:22:30 <lambdabot> forall a. a -> [a] -> [a]
09:22:35 <Deewiant> ?ty scanr1
09:22:36 <lambdabot> forall a. (a -> a -> a) -> [a] -> [a]
09:22:44 <oerjan> oh hm
09:23:00 <Deewiant> ?ty scanr
09:23:01 <lambdabot> forall a b. (a -> b -> b) -> b -> [a] -> [b]
09:23:06 <oerjan> > scanr ((. drop 1) . (:)) [] [[1,2,3],[4,5],[6,7]]
09:23:08 <lambdabot> [[[1,2,3]],[[4,5]],[[6,7]],[]]
09:23:20 <oerjan> > scanr ((drop 1 .) . (:)) [] [[1,2,3],[4,5],[6,7]]
09:23:22 <lambdabot> [[],[],[],[]]
09:23:30 <oerjan> oh hm
09:23:55 <Deewiant> > scanr1 ((. drop 1) . (++)) [[1,2,3],[4,5],[6,7]]
09:23:56 <lambdabot> [[1,2,3,5,7],[4,5,7],[6,7]]
09:24:03 <Deewiant> > scanr1 ((drop 1 .) . (++)) [[1,2,3],[4,5],[6,7]]
09:24:05 <lambdabot> [[2,3,5,6,7],[5,6,7],[6,7]]
09:24:19 * oerjan swats Deewiant for disturbing him
09:24:25 <oerjan> * -----###
09:24:36 <Deewiant> What're you trying to do :-P
09:24:46 <oerjan> ZipList join
09:25:40 <oerjan> :t (. ?f) . (:)
09:25:41 <lambdabot> forall (f :: * -> *) a. (?f::f [a], Functor f) => a -> f [a]
09:25:41 <zzo38> Once I made a join function for ZipList
09:26:19 <oerjan> :t (Prelude.. ?f) Prelude.. (:)
09:26:20 <lambdabot> forall a a1. (?f::a -> [a1]) => a1 -> a -> [a1]
09:26:41 <oerjan> argh
09:26:49 <oerjan> pointless is pointless today
09:27:13 <kallisti_> oerjan: complete double rainbow all the way.
09:27:21 <oerjan> :t scanr (\x xs -> x:map (drop 1) xs) [] [[1,2,3],[4,5],[6,7]]
09:27:22 <lambdabot> forall a. (Num a) => [[[a]]]
09:27:27 <oerjan> > scanr (\x xs -> x:map (drop 1) xs) [] [[1,2,3],[4,5],[6,7]]
09:27:27 <lambdabot> [[[1,2,3],[5],[]],[[4,5],[7]],[[6,7]],[]]
09:27:34 <oerjan> oops
09:27:39 <oerjan> > foldr (\x xs -> x:map (drop 1) xs) [] [[1,2,3],[4,5],[6,7]]
09:27:40 <lambdabot> [[1,2,3],[5],[]]
09:29:17 <oerjan> :t let join = ZipList . diag . scanl1 (zipWith (flip const)) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) [] in join
09:29:18 <lambdabot> forall a. ZipList [a] -> ZipList a
09:29:24 <oerjan> oops
09:29:41 <oerjan> :t let join = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) [] in join
09:29:42 <lambdabot> forall a. ZipList (ZipList a) -> ZipList a
09:30:03 <oerjan> @let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) [] in zjoin
09:30:03 <lambdabot> Parse error: in
09:30:09 <oerjan> @let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
09:30:10 <lambdabot> Defined.
09:30:17 <kallisti_> ze join
09:30:45 <oerjan> > getZipList . zjoin . ZipList . map ZipList $ [[1,2,3],[4,5],[6,7,8,9]]
09:30:47 <lambdabot> [1,5]
09:30:57 <oerjan> good, good
09:30:58 <elliott> oerjan: hm what are the monad laws stated with join...
09:30:59 <oerjan> elliott: ^
09:31:35 <oerjan> i have a cold so i'm not sure i can get all that
09:31:49 <Phantom_Hoover> Isn't join (return m) = m one of them?
09:32:00 <oerjan> i was just writing that.
09:32:03 <elliott> Phantom_Hoover: assuredly
09:32:27 <elliott> oerjan: and return (join m) = m, presumably?
09:32:43 <oerjan> no that doesn't look reversible
09:33:09 <oerjan> also join (return m) = m needs to be well typed
09:33:34 <elliott> join (fmap g (join (fmap f m))) = join (fmap (join . fmap g . f) m)
09:33:40 <elliott> is the long one
09:33:42 <elliott> translated directly
09:33:44 <elliott> it's uh
09:33:45 <elliott> quite ugly
09:33:46 <oerjan> some stuff like that
09:33:50 <elliott> hm well
09:33:53 <elliott> join x = join y
09:33:54 <elliott> can be reduced to
09:33:55 <elliott> x = y
09:33:56 <elliott> obviously
09:33:57 <oerjan> elliott: surely there must be some blog that has them
09:34:10 <elliott> fmap g (join (fmap f m)) = fmap (join . fmap g . f) m
09:34:14 <elliott> and surely we can lift that join outwards...
09:34:22 <elliott> oerjan: well ok
09:34:25 <oerjan> elliott: join is not a reversible operation, i said
09:34:37 <elliott> -- The standard monad laws.
09:34:37 <elliott> join . return == id
09:34:38 <elliott> join . fmap return == id
09:34:38 <elliott> join . join == join . fmap join
09:34:43 <elliott> those ones, apparently
09:34:52 <elliott> those seem... strangely short
09:34:57 <elliott> but i guess associativity is a detail of (>>=) itself
09:35:02 <Jafet> > join [[1]] == join [[],[1]]
09:35:03 <lambdabot> True
09:35:10 <oerjan> there are also the laws of fmap itself as a Functor, of course
09:35:19 <elliott> oerjan: yes but we know those are OK
09:35:22 <elliott> since we're only introducing Monad
09:35:34 <Jafet> fmap, like batman, has only one rule.
09:35:53 <oerjan> Jafet: two, actually
09:35:54 <elliott> @src ZipList return
09:35:54 <lambdabot> Source not found. That's something I cannot allow to happen.
09:35:58 <elliott> *grr*
09:36:29 <kallisti_> iiro[3[[3452#$[323523[62[45#${^347[2246}$%&4[646}#$%[34]3[4534[3[$)%%_3#
09:37:47 <oerjan> my brain was _just_ too fried to get \x xs -> x:map (drop 1) xs into point-free form, so the monad laws are obviously beyond reach.
09:37:49 <zzo38> I think the ZipList has similar to (Natural ->) monad (that is, assuming a type for any natural numbers!)
09:38:02 <zzo38> Except that ZipList can be finite
09:38:06 <elliott> oerjan: i'm working on proving these btw
09:38:47 <elliott> oerjan: hm would you call map getZipList (repeat m) = repeat (getZipList m) a distributive property
09:38:48 <Jafet> oerjan: foldr (.) id . map fmap == fmap . foldr (.) id
09:39:14 <oerjan> zzo38: yes, it's the finiteness that makes it complicated. in particular if the sublists are not sorted by length, monad laws break without the scanl1 (zipWith (flip const)) adjustment. i _hope_ that's enough.
09:39:42 <kallisti_> http://www.youtube.com/watch?v=f0P_btTkUgg
09:39:48 <oerjan> Jafet: the problem isn't me understanding it in general, it's understanding it when i have a cold
09:39:56 <kallisti_> that shit was off the chain wicked bananas.
09:40:00 <Jafet> Oh wait, my rule doesn't type in Haskell
09:40:34 <oerjan> you might want to include the actual function mapped over
09:41:01 <Jafet> I wanted to make it pointfree
09:41:18 <oerjan> Jafet: oh that's your formulation of the functor laws as one equation?
09:41:31 <elliott> > scanl1 f (repeat x)
09:41:32 <lambdabot> [x,f x x,f (f x x) x,f (f (f x x) x) x,f (f (f (f x x) x) x) x,f (f (f (f (...
09:41:48 <elliott> o-kay
09:42:02 <elliott> oerjan: proof of first law is currently at " ZipList . diag . scanl1 (zipWith (flip const)) . repeat $ getZipList m" btw
09:42:09 <elliott> which is
09:42:09 <zzo38> Do you know what this is? data T a b = T b ((T a b -> a) -> a); I don't know what this is?
09:42:10 <elliott> not very far :P
09:42:22 <Jafet> It's one law that says a functor is a group homeomorphism or something
09:42:35 <elliott> oerjan: btw what would you call \x xs -> x : map (drop 1) xs
09:42:36 <oerjan> elliott: you might want to understand join on a more intuitive level first?
09:42:40 <Jafet> Sadly in Haskell they must be written as two laws
09:42:51 <elliott> i put it in its own definition to keep my columns sane :P
09:42:56 <kallisti_> zzo38: cobarrier monads
09:43:05 <kallisti_> barrier comonads?
09:43:08 <kallisti_> cobarrier comonads?
09:43:08 <elliott> oerjan: ha! as if I could apply _intuition_ to a problem like this
09:43:42 <elliott> oerjan: isn't zipWith (flip const) = flip (zipWith const)
09:43:43 <kallisti_> oerjan: I understand join on an intuitive level. does that mean I can prove everything?
09:44:06 <elliott> > zipWith (flip const) x x
09:44:07 <lambdabot> Couldn't match expected type `[a]'
09:44:07 <lambdabot> against inferred type `SimpleRef...
09:44:13 <elliott> @check \xs -> zipWith (flip const) xs xs == xs
09:44:14 <lambdabot> "OK, passed 500 tests."
09:44:18 <kallisti_> elliott: hoo hoo hoo
09:44:22 <zzo38> kallisti_: Actually I don't know what it is.
09:44:58 <elliott> <elliott> oerjan: btw what would you call \x xs -> x : map (drop 1) xs
09:45:03 -!- augur has quit (Read error: Connection reset by peer).
09:45:12 <kallisti_> zzo38: it's a cobarrier monad..
09:45:12 <oerjan> elliott: the intuition is to take the diagonal of a matrix, but with the restriction that not just the diagonal elements but all elements above and to the left must also exist
09:45:25 <kallisti_> zzo38: (it's probabky not)
09:45:39 <oerjan> elliott: shear?
09:45:43 <elliott> oerjan: ok
09:46:01 <elliott> > foldr f z (repeat x)
09:46:02 <lambdabot> f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (...
09:46:35 <kallisti_> elliott: astonishing
09:46:42 <elliott> quite
09:46:50 <zzo38> kallisti_: I think it isn't, but I don't know. But I think it is a functor fmap f (T x y) = T (f x) $ \z -> y (z . fmap f);
09:46:56 <elliott> oerjan: now at the point ZipList . concat . takeWhile (not . null) . map (take 1) . fix . shear $ getZipList m :P
09:47:03 <oerjan> kallisti_: well you also have to understand _proofs_, i guess
09:47:17 <kallisti_> oerjan: sure I get proofs.
09:47:25 <oerjan> good, then there's hope.
09:47:31 <kallisti_> you start with X, you do shit until it's Y. QED
09:47:58 <elliott> ZipList . concat . takeWhile (not . null) . map (take 1) . fix $ \xs -> getZipList m : map (drop 1) xs
09:48:02 <oerjan> kallisti_: i assume you're being sarcastic
09:48:07 <elliott> oerjan: looks like we're getting somewhere
09:48:13 <kallisti_> oerjan: well that's one way to write proofs isn't it?
09:48:35 <oerjan> kallisti_: yes, but it's so vague it would apply to the work of most crackpots.
09:48:52 <kallisti_> of course it doesn't really describe proof by contradiction or induction very well.
09:49:33 <kallisti_> I bet there are proof techniques I've never even /heard/ of!!
09:49:44 <Jafet> Proof by crackpots
09:50:01 <elliott> oerjan: hm is map f $ fix (\xs -> x : map g xs) ==> fix (\xs -> f x : map g xs) valid
09:50:03 <elliott> i think so
09:50:20 <elliott> oh wait no
09:50:31 <zzo38> I am not very good at proofs in general but I could prove some things by myself, including Pythagorean theorem, and that the sequence of repeated run length encoding starting with 1 (1, 11, 21, 1211, 111221, etc) has only 1,2,3 and has no "333" in it
09:50:33 <elliott> map f $ fix (\xs -> x : map g xs) ==> fix (\xs -> f x : map (f . g) xs)
09:50:34 <elliott> is, though, I think
09:50:39 <elliott> (validate me oerjan? is this correct)
09:50:56 <oerjan> i have a cold, i say.
09:51:00 <elliott> > map f (fix (\xs -> x : map g xs)) :: [Expr]
09:51:01 <kallisti_> elliott: that doesn't look right to me.
09:51:01 <lambdabot> [f x,f (g x),f (g (g x)),f (g (g (g x))),f (g (g (g (g x)))),f (g (g (g (g ...
09:51:10 <elliott> > fix (\xs -> f x : map (f . g) xs) :: [Expr]
09:51:11 <lambdabot> Ambiguous type variable `a' in the constraints:
09:51:11 <lambdabot> `SimpleReflect.FromExpr ...
09:51:20 <kallisti_> elliott: oh wait
09:51:20 <elliott> > fix (\xs -> f x : map (\x -> f (g x)) xs) :: [Expr]
09:51:21 <kallisti_> nevermind
09:51:21 <lambdabot> Ambiguous type variable `t' in the constraints:
09:51:21 <lambdabot> `GHC.Show.Show t'
09:51:21 <lambdabot> a...
09:51:24 <elliott> argh!
09:51:29 <kallisti_> that looks right to me.
09:51:32 <kallisti_> I misreaed.
09:51:37 <elliott> kallisti_: shut up and let me get lambdabot to take it :)
09:51:50 <Jafet> > fix $ ([0,1]++) . map succ . concatMap ((:) <$> length <*> pure.head). group
09:51:51 <elliott> i think it is _not_ valid actually.
09:51:52 <lambdabot> [0,1,2,1,2,2,2,3,2,2,4,3,2,4,3,3,2,5,2,4,2,3,2,5,3,4,2,3,2,6,2,3,2,5,2,3,2,...
09:51:59 <elliott> :t fix (\xs -> f x : map (\x -> f (g x)) xs) :: [Expr]
09:52:00 <lambdabot> Ambiguous type variable `t' in the constraints:
09:52:00 <lambdabot> `Show t' arising from a use of `f' at <interactive>:1:29-35
09:52:00 <lambdabot> `SimpleReflect.FromExpr t'
09:52:00 <kallisti_> oh wait
09:52:01 <kallisti_> yeah
09:52:02 <kallisti_> nevermind
09:52:03 <elliott> :t fix (\xs -> f x : map (\x -> f (g x)) xs)
09:52:04 <lambdabot> forall a t. (SimpleReflect.FromExpr a, SimpleReflect.FromExpr (a -> t), SimpleReflect.FromExpr (t -> a)) => [a]
09:52:04 <kallisti_> it's not.
09:52:10 <elliott> sigh
09:53:09 <elliott> > let m = [1,2,3,4] in fix (\xs -> m : map (drop 1) xs)
09:53:09 <lambdabot> [[1,2,3,4],[2,3,4],[3,4],[4],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[...
09:53:13 <zzo38> Equatorial coordinates have right ascension and declination, or hour angle and declination, but is it sense to have local declination too?
09:53:18 <elliott> > inits [1,2,3,4]
09:53:19 <lambdabot> [[],[1],[1,2],[1,2,3],[1,2,3,4]]
09:53:23 <elliott> > tails [1,2,3,4]
09:53:24 <lambdabot> [[1,2,3,4],[2,3,4],[3,4],[4],[]]
09:53:27 <elliott> > tails [1,2,3,4] ++ repeat []
09:53:28 <lambdabot> [[1,2,3,4],[2,3,4],[3,4],[4],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[...
09:53:45 <kallisti_> elliott: with map f on the outside f only gets applied once to each element
09:53:49 <elliott> yes, I nkow
09:53:50 <elliott> know
09:53:56 <kallisti_> on the inside it gets applied... um, a lot.
09:53:59 <elliott> sh
09:54:00 <elliott> hh
09:54:36 <elliott> > map (take 1) (tails [1,2,3,4] ++ repeat [])
09:54:38 <lambdabot> [[1],[2],[3],[4],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[...
09:54:54 <elliott> > map pure [1,2,3,4] ++ repeat []
09:54:55 <lambdabot> [[1],[2],[3],[4],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[...
09:55:07 <kallisti_> > join . map $ (take 1) (tails [1,2,3,4] ++ repeat [])
09:55:08 <lambdabot> Couldn't match expected type `[a1] -> a'
09:55:08 <lambdabot> against inferred type `[a]'
09:55:18 <kallisti_> > join . map (take 1) $ (tails [1,2,3,4] ++ repeat [])
09:55:22 <lambdabot> mueval-core: Time limit exceeded
09:55:37 <kallisti_> can someone submit a bug report for me.
09:55:55 <kallisti_> titled "halting problem not solved"
09:56:03 <elliott> oerjan: ZipList . concat . takeWhile (not . null) $ map (:[]) (getZipList m)
09:56:12 <elliott> oerjan: looks like it's working
09:56:14 <Jafet> It is solved
09:56:20 <Jafet> See NonTerminationException
09:56:33 <oerjan> <elliott> (oerjan is sceptical that there are any Haskell ADTs that can be made applicative functors that can't be made monads (with the two instances agreeing))
09:56:36 <oerjan> i didn't say that.
09:56:41 <elliott> oerjan: i clarified later, but ok
09:57:32 <kallisti_> elliott: hmmm, I've run out of fractals. perhaps I need a new updoot theme?
09:57:42 <oerjan> kallisti_: CANTFIX
09:57:54 <elliott> oerjan: behold the most handwavey thing _ever_ written: http://sprunge.us/hfGR
09:58:02 <elliott> at least my steps are trivial enough to justify, I'm just too lazy to
09:58:16 <zzo38> Define a type of function, that if you have this function and pure and <*> then you can make join. Is there such a thing?
09:58:23 <elliott> zzo38: join
09:58:27 <elliott> it's called join.
09:58:56 <zzo38> I know that, but it isn't what I meant
09:59:26 <kallisti_> elliott: pick a theme for me
10:00:08 <kallisti_> hmm I'll try to find more fractals I guess.
10:00:12 <oerjan> elliott: pure m is what i call a "rectangular" element, so zjoin really cannot break on it - it essentially doesn't go outside the _Applicative_ part.
10:00:21 <elliott> oerjan: right
10:00:54 <elliott> oerjan: the join . fmap return one is going well: ZipList . diag . scanl1 (zipWith (flip const)) . map repeat $ getZipList m
10:01:12 <oerjan> that is, on a rectangular element, join is determined entirely by the Applicative functions.
10:01:20 <kallisti_> Sgeo: upoundary of the tame deetdragon
10:01:24 <oerjan> elliott: that one is also rectangular.
10:01:44 <elliott> oerjan: yes, I am sure that zjoin works fine in the theory you have used to create it :P
10:01:53 <oerjan> heh
10:02:15 <elliott> > scanl1 (zipWith (flip const)) $ map repeat [a,b,c]
10:02:17 <lambdabot> [[a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a...
10:02:19 <oerjan> elliott: for rectangular elements, the scanl1 (zipWith (flip const)) part does nothing.
10:02:22 <elliott> > tail . scanl1 (zipWith (flip const)) $ map repeat [a,b,c]
10:02:23 <lambdabot> [[b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b...
10:02:27 <elliott> right.
10:03:06 -!- Ngevd has joined.
10:03:11 <elliott> > foldr f z (map repeat [a,b,c,d])
10:03:12 <lambdabot> f [a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,...
10:03:20 <elliott> > foldr f z (map pure [a,b,c,d])
10:03:21 <lambdabot> No instance for (GHC.Show.Show (f SimpleReflect.Expr))
10:03:21 <lambdabot> arising from a us...
10:03:23 <Ngevd> Hello!
10:03:27 <elliott> > foldr f z (map (:[]) [a,b,c,d])
10:03:27 <lambdabot> f [a] (f [b] (f [c] (f [d] z)))
10:03:32 <elliott> ok not immensely surprising :P
10:04:05 <elliott> oh duh
10:04:11 <elliott> foldr f z . map g = foldr (f . g) z
10:04:12 <elliott> that'll help
10:04:30 <kallisti_> hahahaha broccoli has a measure Hausdorff dimension of 2.66
10:04:31 <kallisti_> awesome.
10:04:41 <kallisti_> *measured
10:06:19 <oerjan> that's also a measure dimension, sort of.
10:06:45 <oerjan> as it's the dimension of sets that may have nontrivial hausdorff measure of that degree
10:07:00 <oerjan> (degree may not be actual term)
10:07:51 <elliott> oerjan: join . fmap return = id proved
10:07:57 <elliott> join . join = join . fmap join -- this seems like the hard one
10:08:15 <kallisti_> elliott: oerjan: Norway is more Hausdorffy than Great Britain. Fight.
10:09:08 <oerjan> (apparently dimension is the term used)
10:09:26 <kallisti_> oerjan: indeed
10:09:31 <oerjan> kallisti_: why should i fight, it's obviously true
10:10:12 <oerjan> elliott: yeah that's the one where you have to test non-"rectangular" sets, so the scanl1 (zipWith (flip const)) part becomes important
10:10:21 <elliott> ZipList . diag . scanl1 (zipWith (flip const)) . map getZipList . diag . scanl1 (zipWith (flip const)) . map getZipList . getZipList $ m
10:10:22 <elliott> ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList . join) $ getZipList m
10:10:26 <elliott> oerjan: i have to prove these two lines equal
10:10:27 <kallisti_> oerjan: because you guys should take mathematics /personally/
10:10:28 <elliott> fml :P
10:10:36 <elliott> hmm
10:10:44 <elliott> ZipList . diag . scanl1 (zipWith (flip const)) . map getZipList . diag . scanl1 (zipWith (flip const)) . map getZipList . getZipList $ m
10:10:47 <elliott> ZipList . diag . scanl1 (zipWith (flip const)) . map getZipList . map join $ getZipList m
10:10:59 <elliott> so actually
10:11:00 <elliott> i just need to prove
10:11:01 <elliott> diag . scanl1 (zipWith (flip const)) . map getZipList
10:11:02 <elliott> = map join
10:11:04 <elliott> no?
10:11:13 <kallisti_> oerjan: also, maybe elliott secretly thinks having a lower Hausdorff dimensions is better for a high quality nation.
10:11:38 <oerjan> oh and on ZipLists "rectangular" elements obviously are what you intuitively call rectangles, it's just that it applies more generally to any attempt to extend Applicatives to Monads, i believe.
10:12:21 <elliott> oerjan: so what is it you actually believe about Applicative then
10:12:42 * kallisti_ believes Applicative created the world and made it flat.
10:13:04 <elliott> http://sprunge.us/XfUi; too lazy to do the last proof for now
10:13:06 <elliott> aka
10:13:09 <elliott> the one involving any kind of thought at all
10:13:31 <elliott> oerjan: have you checked whether this monad's ap and liftM agree?
10:14:44 <oerjan> that would be rather astounding, since they don't have the same type ;P
10:15:54 <oerjan> kallisti_: well lower hausdorff dimension probably gives easier industrial packaging.
10:16:00 <elliott> oerjan: har har har
10:16:03 <elliott> with the Applicative instance I mean of course
10:17:03 <Jafet> The Peano curve packs pretty well
10:17:03 <oerjan> elliott: well the zjoin is _designed_ to be correct on rectangular elements automatically, and all elements that are actually joined when constructing ap and liftM stuff are rectangular.
10:18:18 <elliott> oerjan: i meant tested empirically :P
10:18:26 <oerjan> probably not :P
10:19:48 <oerjan> fmap (\x -> fmap (f x) m) n is the general form of a rectangular element in an arbitrary Functor.
10:21:43 <elliott> Deewiant: I don't suppose you know how to get backtraces for individual threads in gdb after they all exit
10:21:43 <kallisti_> empiricism in math? zah1
10:21:45 <oerjan> applying join to that should give liftM2 f n m, so it's determined by the Applicative part.
10:22:00 <Deewiant> elliott: Nope, printf all the way
10:22:15 <elliott> Deewiant: :(
10:23:44 <oerjan> elliott: basically, you might want to prove zjoin (fmap (\x -> fmap (f x) m) n) = liftA2f n m as a lemma to use.
10:23:54 <oerjan> *liftA2 f n m
10:24:02 <elliott> oerjan: yes. when i get back to it :P
10:24:41 <oerjan> in a sense it is the initial definition of zjoin, which is then extended in some hopefully consistent way to all elements.
10:25:25 <oerjan> and from it should follow that everything Applicative behaves correctly with it.
10:27:30 <oerjan> and also the first and second monad laws. it's just the third one which can still break.
10:27:33 <oerjan> afair.
10:29:41 -!- Ngevd has quit (Ping timeout: 245 seconds).
10:31:26 <oerjan> elliott: btw my intuitive but maybe not sufficiently checked reason for why the scanl1 (zipWith (flip const)) adjustment should fix the join . join == join . fmap join third law formulation is that it forces the necessary _cubic_ parts of the m (m (m x)) element to exist.
10:31:34 <elliott> heh
10:31:43 <elliott> you should publish this >:)
10:31:50 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa
10:32:30 <elliott> Functional Pearl: Categorical Gardening: Applicative Functors to Monads with Shears and Cubes
10:33:37 <oerjan> that is, an element is included in join (join m) iff its entire ancestor "cube" is included, which should be the same as the requirement for an element in join (fmap join m) to be included.
10:34:37 <kallisti_> elliott: Gregor has a paper called "The Eval that Men Do"
10:34:44 <kallisti_> which makes me cringe
10:34:47 <kallisti_> everytime I read it.
10:35:16 <oerjan> (the "cube" being the elements that are above and to the left of it in any of the containing sublists, seen as a 3-dimensional grid)
10:36:00 <elliott> kallisti_: we named that
10:36:28 <oerjan> elliott: that "shear" was a bit of a joke, it just looks like a geometric shear transformation in how it moves list elements.
10:37:04 <kallisti_> elliott: who's "we"?
10:37:36 <elliott> kallisti_: #esoteric
10:37:55 <oerjan> <kallisti_> elliott: Gregor has a paper called "The Eval that Men Do" <-- i recall that, i vaguely think he asked us for more eval suggestions :P
10:39:57 <Phantom_Hoover> The Root of All Eval is an obvious one.
10:40:11 <elliott> Phantom_Hoover: Yes, we covered all the bases.
10:40:16 <oerjan> i'm sure it was m... right
10:40:28 <Phantom_Hoover> Oh dear god this paper is amazing.
10:40:29 <oerjan> all your eval bases are belong to us
10:40:45 <kallisti_> "The Eval that Men Do" is better because it's still a horrible pun while also being relevant to the paper.
10:41:03 <kallisti_> whereas "The Root of All Eval" is less relevant
10:41:09 <oerjan> *-s
10:41:09 <kallisti_> unless you're talking about like.... trees or something.
10:50:52 -!- variable has quit (Excess Flood).
10:52:07 -!- variable has joined.
11:01:29 <elliott> "Encapsulate world queue into an abstract interface"
11:01:36 <elliott> Gotta think of a way to make this commit subject less terrible
11:05:37 <kallisti_> elliott: Inact the principle of information hiding on world queue by means of implementing an abstract protocol."
11:05:45 <kallisti_> s/^/"/
11:05:47 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
11:19:11 -!- Phantom_Hoover has joined.
11:28:00 -!- zzo38 has quit (Remote host closed the connection).
11:36:26 -!- oerjan has quit (Quit: leaving).
11:40:02 -!- sebbu2 has joined.
11:40:54 -!- sebbu has quit (Ping timeout: 244 seconds).
12:15:39 -!- elliott_ has joined.
12:15:39 -!- elliott has quit (Read error: Connection reset by peer).
12:32:28 -!- sebbu2 has quit (Ping timeout: 260 seconds).
12:35:00 -!- sebbu2 has joined.
12:35:00 -!- sebbu2 has quit (Changing host).
12:35:00 -!- sebbu2 has joined.
12:37:24 -!- Phantom_Hoover has left ("Leaving").
12:37:42 -!- Phantom_Hoover has joined.
12:39:26 -!- sebbu3 has joined.
12:41:35 -!- augur has joined.
12:43:23 -!- sebbu2 has quit (Ping timeout: 248 seconds).
12:53:27 -!- sebbu3 has changed nick to sebbu.
13:00:48 <itidus21> elliott_: you could try dumbing it down
13:01:55 <itidus21> "I maed an abstract interface out of teh world queue."
13:05:00 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:16:12 -!- Ngevd has joined.
13:20:28 <Ngevd> Hello!
13:36:48 -!- sebbu2 has joined.
13:37:47 -!- sebbu has quit (Ping timeout: 248 seconds).
13:45:41 <kallisti_> > 2 + 2
13:45:42 <lambdabot> 4
13:47:24 <Ngevd> > tau
13:47:25 <lambdabot> Not in scope: `tau'
13:48:46 <Ngevd> > (0/0) == (0/0)
13:48:47 <lambdabot> False
13:52:24 <kallisti_> I think it's time
13:52:28 <kallisti_> for two monitors once again.
14:16:07 -!- elliott_ has quit (Read error: Connection reset by peer).
14:16:49 -!- elliott_ has joined.
14:18:17 <kallisti_> elliott_: hi
14:18:23 <elliott_> hi
14:25:59 <kallisti_> I wonder if Coke and coffee mixed together is good
14:29:44 <kallisti_> > pi :: Expr
14:29:45 <lambdabot> pi
14:29:50 <kallisti_> > deriv sin pi
14:29:51 <lambdabot> -1.0
14:29:57 <kallisti_> > deriv sin (pi :: Expr)
14:29:59 <lambdabot> 1 * cos pi
14:30:42 <kallisti_> elliott_: using Expr with deriv is actually very cool.
14:30:49 <elliott_> Yes, when it works :P
14:31:00 <kallisti_> what breaks, in particular?
14:32:00 <elliott_> I forget, sorry.
14:32:48 <kallisti_> elliott_: noooooo, how could you.
14:33:13 <kallisti_> I have abstracted you from "human being" to "limitless and impatient well of information"
14:33:25 <kallisti_> you're breaking my encapsulation!
14:36:47 <kallisti_> > deriv (\a -> a * sin a * ln a * a^2 + 1) (x :: Expr)
14:36:48 <lambdabot> Not in scope: `ln'
14:36:52 <kallisti_> > deriv (\a -> a * sin a * log a * a^2 + 1) (x :: Expr)
14:36:54 <lambdabot> ((1 * sin x + x * (1 * cos x)) * log x + x * sin x * (1 * recip x)) * (x * ...
14:37:42 <quintopia> why must it have 1 * everywhere?
14:37:46 <quintopia> what a waste!
14:38:22 <kallisti_> I guess Expr could special case 1 so that it's omitted, however, I think it's left in for demonstration of function implementations.
14:38:56 <kallisti_> it would be nice to have different Expr "styles", one that attempts to reduce expressions and one that's verbatim
14:40:47 <kallisti_> hmmm, also
14:41:23 <kallisti_> you could probably also extend Expr to generate ASTs?
14:44:03 <kallisti_> "I can (well, almost) hear you asking yourselves "why?". Hurd will be
14:44:03 <kallisti_> out in a year (or two, or next month, who knows), and I've already got
14:44:05 <kallisti_> minix."
14:44:19 <kallisti_> -- Linux Torvalds, 1991
14:44:25 <kallisti_> ...
14:44:27 <kallisti_> yes Linux
14:44:30 <kallisti_> I refuse to correct it.
14:46:23 <elliott_> <kallisti_> I guess Expr could special case 1 so that it's omitted, however, I think it's left in for demonstration of function implementations.
14:46:29 <elliott_> > reduce $ deriv sin (pi :: Expr)
14:46:30 <lambdabot> 1 * (-1.0)
14:46:35 <elliott_> heh
14:46:44 <elliott_> > exprValue $ deriv sin (pi :: Expr)
14:46:44 <lambdabot> Not in scope: `exprValue'
14:46:47 <kallisti_> oh interesting
14:47:18 <kallisti_> :t reduce
14:47:19 <lambdabot> Expr -> Expr
14:47:22 <kallisti_> @hoogle Expr -> a
14:47:23 <lambdabot> Warning: Unknown type Expr
14:47:23 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
14:47:23 <lambdabot> Prelude id :: a -> a
14:47:27 <kallisti_> bleh
14:47:29 <kallisti_> stupid hoogle
14:47:30 <elliott_> > intExpr $ deriv sin (pi :: Expr)
14:47:31 <lambdabot> Not in scope: `intExpr'
14:47:33 <elliott_> > doubleExpr $ deriv sin (pi :: Expr)
14:47:34 <lambdabot> Not in scope: `doubleExpr'
14:47:36 <elliott_> lame
14:48:09 <kallisti_> or wait, does Num make any assumptions about whether or not it's a field?
14:48:31 <kallisti_> :t fromIntegral
14:48:32 <lambdabot> forall a b. (Integral a, Num b) => a -> b
14:48:44 <kallisti_> in other words, is it required that fromIntegral 1 * x == x ?
14:49:28 <elliott_> Num has no laws
14:49:33 <kallisti_> oh, okay.
14:49:43 <elliott_> @quote without laws
14:49:44 <lambdabot> No quotes for this person. There are some things that I just don't know.
14:49:47 <elliott_> @quote elliott laws
14:49:48 <lambdabot> No quotes match. Take a stress pill and think things over.
14:49:50 <elliott_> @quote elliott_ laws
14:49:51 <lambdabot> No quotes for this person. Take a stress pill and think things over.
14:49:53 <elliott_> @quote elliott type
14:49:53 <lambdabot> elliott says: a typeclass is nothing without semantics
14:49:55 <kallisti_> @quote fuck
14:49:55 <elliott_> Oh.
14:49:56 <lambdabot> medfly says: <Ptival> THIS IS SPARTA! <medfly> go fuck yourself
14:50:00 <elliott_> I misremrembered myself'e'. :'(
14:50:16 <elliott_> Wow, Google just understood "ahaskel wekly naws".
14:50:49 <kallisti_> indeed it does.
14:51:00 <kallisti_> IT'S LIKE THEY DO SOME KIND OF LEVENWEEJRIJSJW DISTANCE
14:51:09 <elliott_> http://www.google.co.uk/search?gcx=w&sourceid=chrome&ie=UTF-8&q=LEVENWEEJRIJSJW+DISTANCE
14:51:21 <kallisti_> alas
14:51:44 <kallisti_> LEVENstEW DISTANCE
14:51:45 <kallisti_> works
14:52:02 <elliott_> leven stew
14:52:41 <kallisti_> help sleep deprivation and weird blood pressure drops.
14:56:26 <kallisti_> elliott_: help me find ways to break deriv
14:56:41 <kallisti_> :t logBase
14:56:42 <lambdabot> forall a. (Floating a) => a -> a -> a
14:58:12 <kallisti_> elliott_: how is differentiation implemented in mathematica?
14:58:21 <elliott_> symbolically and badly
14:58:37 -!- copumpkin has joined.
14:58:49 <kallisti_> > deriv (\x -> fromEnum . isInfinity $ x) 3
14:58:50 <lambdabot> Not in scope: `isInfinity'
14:58:59 <kallisti_> > deriv (\x -> fromEnum . isNegativeZero $ x) 3
14:59:00 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif b'
14:59:01 <lambdabot> against inferr...
14:59:10 <kallisti_> > deriv (\x -> fromEnum . x == 2) 3
14:59:11 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif b'
14:59:12 <lambdabot> against inferr...
14:59:12 <kallisti_> lol
14:59:18 <kallisti_> > deriv (\x -> fromEnum (x == 2)) 3
14:59:19 <lambdabot> Couldn't match expected type `Data.Number.Dif.Dif b'
14:59:20 <lambdabot> against inferr...
14:59:22 <kallisti_> orjeiojwrrijweroijhweroihwetoihwer
14:59:26 <kallisti_> :t fromEnum
14:59:27 <lambdabot> forall a. (Enum a) => a -> Int
14:59:28 <kallisti_> oh
14:59:45 <kallisti_> > deriv (\x -> fromIntegral (fromEnum (x == 2))) 3
14:59:46 <lambdabot> 0
15:41:58 <Gregor> kallisti_: PUNPUNPUN
15:41:58 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
15:44:26 <kallisti_> Gregor: FUNFUNFUN
15:44:42 <kallisti_> > 1 `mappend` 2
15:44:43 <lambdabot> Ambiguous type variable `a' in the constraints:
15:44:43 <lambdabot> `Data.Monoid.Monoid a'
15:44:43 <lambdabot> ...
15:44:59 <kallisti_> :t Add
15:45:00 <lambdabot> Not in scope: data constructor `Add'
15:45:38 <kallisti_> > Sum 1 `mappend` Sum 2
15:45:39 <lambdabot> Sum {getSum = 3}
15:45:46 <kallisti_> amazing.
15:47:24 -!- copumpkin has quit (Remote host closed the connection).
15:47:42 <kallisti_> > const (Sum 3) `mappend` const (Sum 4) $ 6
15:47:44 <lambdabot> Sum {getSum = 7}
15:47:48 -!- copumpkin has joined.
15:48:46 <kallisti_> > tail `mappend` (++"dongs") $ " lol"
15:48:48 <lambdabot> "lol loldongs"
15:50:14 <kallisti_> sometimes I feel the number of instances you can make with a -> b is just out of hand.
15:50:38 <kallisti_> most of the time, however
15:50:41 <kallisti_> I don't think that.
16:00:11 -!- kallisti_ has quit (Ping timeout: 252 seconds).
16:05:33 -!- kallisti has joined.
16:05:33 -!- kallisti has quit (Changing host).
16:05:34 -!- kallisti has joined.
16:12:14 -!- ais523 has joined.
16:13:09 <ais523> well, I completed Braid, anyway (any%; 100%ing it takes years without spoilers, apparently, and the game disguises the fact that there is a better ending than the obvious one)
16:20:19 <elliott_> ais523: apparently you have to wait on one level for like two hours or some other dumb shit like that
16:21:12 <ais523> yep
16:21:19 <ais523> around an hour and a half
16:21:30 <elliott_> why did he think that was a good idea
16:23:14 <ais523> well, the mere existence of the stars is hidden
16:23:18 <elliott_> incidentally, does anyone know a better way of deleting a function definition in vim than d/^}/?
16:23:32 <ais523> and putting things behind very long waits is a good way to hide them
16:23:37 <elliott_> ddd% works, but is gross
16:23:44 <ais523> (it's how most of the instances of Totaka's Song are hidden, for instance)
16:24:20 <elliott_> oh, d]} might do it
16:24:32 <elliott_> oh! d}
16:24:37 <elliott_> nice
16:26:40 <ais523> the other issue with Braid is that you don't get to hear the music much
16:26:49 <ais523> as half the time it's playing backwards or at a crazy speed or whatever
16:27:59 <ais523> hmm, fun thing I just noticed by accident: the MediaWiki keyboard shortcut for "delete" (alt-shift-d) means "undelete" on a nonexistent page
16:29:30 <elliott_> (diff) (hist) . . m Excela‎; 12:24 . . (+1,570) . . Oerjan (Talk | contribs) (Fnord)
16:29:30 <elliott_> (diff) (hist) . . Excela‎; 10:35 . . (-1,570) . . Theodorex1Jf (Talk | contribs)
16:29:35 <elliott_> ais523: _please_ protect Excela already...
16:29:42 <elliott_> oh wait
16:29:47 <elliott_> you said they moved to another page if they did that
16:29:49 <ais523> yep
16:29:52 <elliott_> have we had google translate bots before?
16:29:57 <elliott_> I don't recall any but I may be wrong
16:30:06 <ais523> I don't think so
16:30:14 <elliott_> ais523: just protect every page except [[Snack]] for a few days
16:30:17 <ais523> but it may be the same framework finding anew way to get around filters
16:30:19 <elliott_> then we don't have to bother reverting
16:30:34 <ais523> also, protecting an entire namespace needs dev powers
16:30:43 <elliott_> I meant manually :)
16:30:44 <ais523> or a huge amount of very very spammy protection by hand
16:31:03 <elliott_> ais523: ooh, now I want to not revert the spam for long enough to see if the bots will ever re-mangle a mangled page
16:31:21 <elliott_> maybe if left to their own devices they'll turn any page into completely unintelligible mush
16:31:26 <elliott_> s/maybe if/maybe/
16:33:11 -!- aloril has quit (Ping timeout: 252 seconds).
16:34:41 -!- Ngevd has quit (Ping timeout: 245 seconds).
16:38:08 -!- Ngevd has joined.
16:38:27 -!- Ngevd has quit (Client Quit).
16:41:14 <Vorpal> <ais523> as half the time it's playing backwards or at a crazy speed or whatever <-- that annoyed me too
16:41:25 <Vorpal> anyway how did you end up playing Braid?
16:41:57 <Vorpal> <elliott_> ais523: apparently you have to wait on one level for like two hours or some other dumb shit like that <-- just let it run in the background while you eat lunch
16:42:28 <ais523> Vorpal: I watched a speedrun, and it inspired me to play the game
16:42:32 <Vorpal> heh
16:42:39 <ais523> I had it already, but it had a dependency on nvidia-something so I thought it wouldn't work
16:42:42 <Vorpal> ah
16:42:46 <ais523> but I installed the nvidia package anyway and it did work
16:42:54 <Vorpal> hm
16:43:04 <Vorpal> ais523: I played it on ati/amd so yeah
16:43:32 <ais523> I use Intel graphics; I deliberately aim for laptops which have them
16:43:43 <ais523> works better on Linux than the alternatives, typically
16:43:49 <Vorpal> hybrid graphics is a nice alternative there
16:43:56 <elliott_> ais523: Better modulo their being terrible
16:44:02 <elliott_> Good drivers only get you so far :P
16:44:03 <Vorpal> you can use intel unless you want good 3D performance
16:44:04 <ais523> elliott_: they're good /enough/
16:44:07 <ais523> for what I want to do
16:44:22 <ais523> what's important for me are good drivers and good enough 3D performance
16:44:25 <ais523> and Intel hits both requirements
16:44:50 <Vorpal> you have very low 3D expectations then
16:45:54 <ais523> it's good enough to play Neverwinter Nights
16:46:00 <ais523> which admittedly is a pretty old game
16:46:12 -!- aloril has joined.
16:46:46 <Vorpal> ais523: come on, I had some third-party stuff fail on intel graphics in NWN due to texture compression formats that weren't supported
16:46:56 <Vorpal> and you can't really drag the graphical quality settings to max
16:47:10 <Vorpal> which is ridiculous for such an old game.
16:47:35 <Vorpal> anything that isn't intel graphics have been able to run nwn on max graphical settings for several years
16:47:57 <itidus21> so OSX is estimated at 86,000,000 lines of code.. windows xp at 45,000,000 lines of code.. do you think a haskell OS would end up down at 1,000,000?
16:49:07 <Vorpal> os x is larger than windows xp?
16:49:08 <Vorpal> heh
16:49:11 <Vorpal> which version of os x
16:49:23 <itidus21> i said estimated anyway
16:49:26 <Vorpal> ah okay
16:49:29 <itidus21> 10.4
16:49:46 <itidus21> wiki reference says
16:49:50 <itidus21> "Jobs, Steve (August 2006). "Live from WWDC 2006: Steve Jobs Keynote". Retrieved 2007-02-16. "86 million lines of source code that was ported to run on an entirely new architecture with zero hiccups.""
16:52:40 <itidus21> Windows XP, released in 2001, has 35 million lines of code
16:52:57 <itidus21> . Windows XP was compiled of 45 million lines of code.
16:53:16 <itidus21> whats 10 million lines of code between friends
16:55:15 <itidus21> Several thousand engineers have labored to build and test Windows Vista, a sprawling, complex software construction project with 50 million lines of code, or more than 40 percent larger than Windows XP.
16:55:43 <itidus21> clearly theres a bit of bullshitting going on somewhere
16:56:59 <itidus21> the new york times says "35 million lines of code."
16:57:10 <itidus21> wiki sourcing the windows facebook page says 45
16:57:33 <itidus21> seems these numbers are fairly meaningless
16:58:04 <itidus21> jeff atwood says 40 million
16:58:30 <itidus21> apparently quoting wikipedia
17:12:07 -!- copumpkin has quit (Remote host closed the connection).
17:17:45 -!- copumpkin has joined.
17:25:14 -!- monqy has joined.
17:25:45 <kallisti> in 2008 Linux had approx. 6 million lines of actual code.
17:25:56 <kallisti> over 10 million includes whitespace and comments.
17:26:52 <kallisti> note this is just the kernel itself.
17:29:36 <kallisti> 9793 Torvalds, an asteroid named after Linus Torvalds
17:29:36 <kallisti> 9882 Stallman, an asteroid named after Richard Matthew Stallman, American hacker, founder of the free software movement and the GNU project
17:29:39 <kallisti> 9965 GNU, an asteroid named after the GNU project
17:29:53 <kallisti> 9885 Linux is an asteroid discovered on October 12, 1994 by Spacewatch. The asteroid is named after the Linux operating system kernel
17:30:18 <kallisti> I love asteroid names.
17:31:59 <kallisti> wow there are 18,269 Main Belt asteroid articles.
17:33:27 <elliott_> probably mostly autogenerated
17:33:38 <elliott_> kallisti: 1994?
17:33:46 <elliott_> named after Linux only 3 years after it began...
17:34:00 <Deewiant> Discovered
17:34:06 <Deewiant> Named, possibly later
17:34:14 <elliott_> Ah
17:34:28 <Deewiant> Or not, but I think that's possible
17:35:04 <elliott_> I suppose Linux would have been fairly popular in that kind of environment by 1994
17:36:01 <Deewiant> 14070060 total lines in Linux 3.1.1, according to ohcount; 10011948 excluding comments and whitespace
17:36:30 <elliott_> Deewiant: How much excluding drivers?
17:36:40 <Deewiant> (This includes xml, xslt, scheme, and other languages)
17:36:51 <elliott_> I bet a lot of that is documentation
17:37:00 <elliott_> Probably not *that* much though :P
17:37:16 <kallisti> As of January 4, 2011, using current LOC and wage numbers with David A. Wheeler's calculations it would cost approximately 3 billion USD (about 2.2 billion EUR) to redevelop the Linux kernel.
17:37:24 <Deewiant> If you want just the C and assembler files, 13233055+459402 and 9396007+362268
17:37:38 <elliott_> kallisti: David A. Wheeler's calculations = sloccount's bullshit estimates :P
17:37:50 <elliott_> Ohloh and sloccount and all these things always estimate like a million times what things would actually cost to develop
17:37:53 <Deewiant> There's also 247515+149638 of "cpp", which I guess is headers
17:38:01 <elliott_> I think they claimed cfunge would cost like $80k or something
17:38:20 <elliott_> Deewiant: I'm more interested in how much of that is driver code
17:38:39 <Deewiant> elliott_: I'm running your not-drivers calculation, it'll take a while
17:38:41 <kallisti> elliott_: hey programmers are expensive. and lazy.
17:38:47 <elliott_> Adding a driver doesn't really increase the overall complexity of a system, so in some sense drivers are free from the perspective of the rest of the system
17:39:00 <elliott_> Whereas adding code within the core system does increase complexity
17:42:13 <Deewiant> elliott_: http://sprunge.us/TXcC
17:42:50 <elliott_> Wow, so only 56% of Linux is drivers
17:43:01 <elliott_> That's an awfully big core
17:44:11 <kallisti> elliott_: so assuming an average yearly salary of $63k (current average in the US), they're saying it would take....
17:44:44 <kallisti> > (63/80)*12
17:44:46 <lambdabot> 9.45
17:44:55 <kallisti> one person 9.45 months to code cfunge?
17:45:30 <kallisti> (granted they probably used a different estimation technique)
17:45:39 <kallisti> (or at least a different average salary)
17:46:03 <elliott_> kallisti: I believe the method is literally "take statistic for lines/day a programmer writes, scale by salary"
17:46:26 <elliott_> http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/763f01599ff4 Ha ha ha oh boy
17:46:59 <kallisti> oh, well that's kind of reasonable I guess.
17:48:50 <kallisti> assuming it's non-whitespace lines.
17:49:04 <kallisti> well...
17:49:13 <kallisti> no I guess those kind of count too? comments do anyway
17:49:29 <kallisti> as that represents documentation effort.
17:53:45 <elliott_> "Of course 5 years from now that will be different, but 5 years from now everyone will be running free GNU on their 200 MIPS, 64M SPARCstation-5."
17:53:52 <elliott_> linus v. tanenbaum is so fun
17:54:05 <elliott_> it's like they're pretending to be oblivious people in 1992
17:54:09 <elliott_> badly
17:54:53 -!- oerjan has joined.
17:54:53 * kallisti is like he's pretending to be an oblivious person in 2011
17:55:59 <kallisti> interestingly enough it takes about as much time for a person to produce cfunge as it does to create a baby.
17:56:06 <kallisti> based on that probably horrible estimate.
17:56:24 -!- Ngevd has joined.
17:56:26 <Ngevd> Hello!
17:57:02 <oerjan> hi
17:57:52 <oerjan> next: produce a funge98 interpreter through genetically engineering a baby
17:58:39 <kallisti> !hey
17:58:39 <kallisti> it would be horrible if compilers attempted to detect typos and simply corrected them under the hood...
17:58:58 <Ngevd> I've heard of a compiler that did that
17:59:05 <Ngevd> Apparently it was awful
17:59:31 <Ngevd> <kallisti> interestingly enough it takes about as much time for a person to produce cfunge as it does to create a baby. <-- it takes 2 people to create a baby
17:59:34 <oerjan> well perl supposedly resolves ambiguities automatically
17:59:48 <Vorpal> ais523: I just saw an interesting way to upload a *.patch to a mediawiki installation that didn't accept that type: "File:Makefile.patch.png"
18:00:11 <Vorpal> ais523: do people ever try that sort of stuff on wikipedia?
18:00:13 <elliott_> Vorpal: just write a piet program that performs the patch
18:00:22 <elliott_> nobody can delete that for not being a valid image
18:00:23 <Vorpal> hah
18:00:28 <Gregor> `addquote <kallisti> interestingly enough it takes about as much time for a person to produce cfunge as it does to create a baby.
18:00:34 <Vorpal> elliott_: it is on the defcon dev wiki
18:00:37 <HackEgo> 741) <kallisti> interestingly enough it takes about as much time for a person to produce cfunge as it does to create a baby.
18:00:47 <ais523> Vorpal: people attempted it occasionally; on Wikipeida such files can be speedied
18:00:49 <ais523> *Wikipedia
18:00:50 <Vorpal> ah
18:00:56 -!- derrik has joined.
18:01:33 <Vorpal> elliott_: you know you get dev access to uplink/darwinia/defcon/multiwinia with the humble bundle now
18:01:36 <Vorpal> which is great
18:01:51 <elliott_> No, I completely missed getting an email about it and it being near the top of /r/programming.
18:01:56 <Vorpal> I think normally they sell that for a higher price
18:02:03 <elliott_> See, what I usually do is ignore my email and not read reddit, because hey, Vorpal will let me know.
18:02:06 <Vorpal> elliott_: ah good thing I told you then :P
18:02:16 <ais523> happy australian mailman mailing list reminders day!
18:02:22 <elliott_> Vorpal: DEFCON and Multiwinia source are new, I believe.
18:02:27 <Vorpal> hm really
18:02:29 <Vorpal> okay
18:02:33 <elliott_> No, just DEFCON.
18:02:35 <ais523> elliott_: it's even on Slashdot
18:02:37 <Vorpal> elliott_: anyway my statement was correct then. I forgot the question mark above
18:02:37 <Gregor> ais523: It's the most - wonderful tiiiiime of the year!
18:02:47 <Vorpal> so yes you knew it. Which was all I stated :P
18:02:53 <elliott_> ais523: happy ammlr day!
18:03:00 <elliott_> hmm, abbreviation ruins it
18:03:09 <ais523> yep, you have to write it out
18:03:14 <Vorpal> speaking of which. Tomorrow is my birthday
18:03:25 <elliott_> ais523: happy australian mailman mailing list reminders day, then
18:03:39 <elliott_> Vorpal: sorry, I only wish people happies on australian mailman mailing list reminders day.
18:03:42 <Ngevd> Vorpal, how old will that make you?
18:03:47 <oerjan> the day we worship the ancient sumerian god Amm Lr
18:03:52 <elliott_> Vorpal: try getting a better birthday
18:04:05 <elliott_> ais523: haha, I just noticed how many players blognomic has now
18:04:06 <Vorpal> Ngevd: err, I'm old enough to not think much about my age. Lets see... *gets calculator*
18:04:23 <oerjan> Vorpal is old as dirt
18:04:24 <Vorpal> 22
18:04:24 <ais523> elliott_: it's going back to normal
18:04:39 <elliott_> oerjan: have you had a birthday recently, i kinda lose track
18:04:44 <Vorpal> oerjan: but seriously, you stop thinking about exact age once you get past 20 or so.
18:04:48 <ais523> wow, I'm older than Vorpal?
18:04:56 <elliott_> of course you are
18:04:57 <Vorpal> ais523: aren't you like 24?
18:05:00 <ais523> yes
18:05:14 <elliott_> does ais523 not remember when Vorpal was 18
18:05:17 <Vorpal> anyway of course, I thought it was well established
18:05:19 <elliott_> or was it 19
18:05:28 <oerjan> elliott_: if by "recently" you mean in the last 6 months, then yes.
18:05:32 <Vorpal> elliott_: err I was in this channel before I turned 18 I'm pretty sure
18:05:43 <elliott_> Vorpal: no
18:05:46 <elliott_> oerjan: happy belated australian mailman mailing list reminders day!
18:05:49 <Vorpal> elliott_: yes.
18:05:53 <elliott_> Vorpal: 2008
18:05:59 <oerjan> Vorpal: only until you start reaching round numbers again :P
18:06:07 <Vorpal> hm
18:06:12 <Vorpal> oerjan: :/
18:06:15 <elliott_> oh, hmm, 2007
18:06:21 <elliott_> Vorpal: 2007-10-30
18:06:27 <Vorpal> elliott_: so 17 then
18:06:31 <elliott_> is the day I made my worst mistake
18:06:35 <Vorpal> lol
18:06:35 <Ngevd> elliott_, how old were you when you came here?
18:06:46 <Vorpal> 11 or 12 iirc?
18:06:48 <elliott_> Ngevd: umm, 11 or 12
18:06:50 <elliott_> I forget exactly
18:07:12 <Ngevd> When I was 11 or 12, that was about when I started in the Murderous Maths forum
18:07:13 <Ngevd> I think
18:07:20 <Ngevd> Which I have since sadly abandoned
18:08:05 <oerjan> Ngevd: well it's good you left before you were murdered
18:08:07 <Vorpal> arvid=> select * from irc.logs_na where nick = 'elliott' order by serial ASC limit 1;
18:08:07 <Vorpal> serial | tstamp | nick | target | uhost | type | body
18:08:07 <Vorpal> --------+---------------------+---------+--------+--------------------------------------------+------+------
18:08:07 <Vorpal> 208001 | 2006-12-29 21:42:41 | elliott | | n=ehird@user-5440e204.wfd80a.dsl.pol.co.uk | 3 |
18:08:12 <Vorpal> elliott_: you can count it from that
18:08:17 <Ngevd> Yep, I was 12
18:08:29 <Ngevd> The 16th of October 2007
18:08:29 <Vorpal> (note, normalised nick, that is why it says elliott)
18:08:32 <elliott_> Vorpal: that one doesn't count, i joined, was too intimidated to say anything, then left
18:08:37 <elliott_> the next time i joined was in 2007
18:08:44 <Vorpal> elliott_: wait is it normalised or normalized in UK English?
18:08:55 <elliott_> Vorpal: depends on dialect
18:08:58 <Ngevd> Depends whether en-gb or en-gb-OED
18:08:59 <elliott_> OED uses -zed
18:09:13 <elliott_> Ngevd: *en-GB, *en-GB-oed
18:09:14 <Vorpal> 208001 | 2006-12-29 21:42:41 | elliott | | n=ehird@user-5440e204.wfd80a.dsl.pol.co.uk | 3 |
18:09:14 <Vorpal> 208002 | 2006-12-29 21:43:09 | elliott | | | 4 |
18:09:14 <Vorpal> 271393 | 2007-05-14 17:48:38 | elliott | | n=ehird@user-54457988.lns6-c11.dsl.pol.co.uk | 3 |
18:09:22 <Vorpal> elliott_: too intimidated by what?
18:09:25 <Ngevd> I joined the UMMF 17 days before my 13th birthday
18:09:30 <elliott_> Vorpal: lots of people and silence!!!!
18:09:34 <Vorpal> elliott_: heh
18:09:45 <elliott_> you could have all been nasty. I don't talk until I'm sure I'm the nastiest one present
18:09:56 <Vorpal> hah
18:10:18 <elliott_> anyway 11 then, assuming i can do arithmetic
18:10:22 <oerjan> wait OED isn't the default for en-gb? sacrilege!
18:10:23 <elliott_> which i'm not sure of
18:10:30 <elliott_> 1995-08 --> 2006-12
18:10:36 <elliott_> or --> 2007-05, the same either way
18:10:55 <elliott_> oerjan: -zed is the only common case where -oed disagrees from common british english usage iirc
18:11:03 <oerjan> aha
18:11:26 <elliott_> oerjan: and they list -ise too
18:11:29 <elliott_> just not as the preferred spelling
18:11:36 <elliott_> "The use of -ize instead of -ise does not affect the spelling of words ending in -yse, such as analyse, paralyse and catalyse"
18:11:38 <elliott_> didn't know that
18:12:11 <oerjan> an excellent analyzis
18:14:12 <elliott_> oerjan: oh, looks like OED has a few other idiosyncrasies too, like preferring "co-operate"
18:14:29 <oerjan> coöperäte
18:14:33 <elliott_> oerjan: confusing matters further, it seems like "cooperate" is what appears in their "consumer" dictionaries
18:14:42 <elliott_> as opposed to the unusable-as-a-dictionary OED text itself :P
18:14:44 <Gregor> As opposed to English cooperate, or Esoterian coperate.
18:15:11 <elliott_> Read as "Estonian".
18:15:12 <oerjan> or volapük köüperät
18:15:23 <elliott_> Was confusing, 'cuz they do use os and diaereses a lot.
18:15:24 <oerjan> (note: possibly not actual volapük)
18:15:57 <elliott_> lojban c'ou,. zrxrope
18:16:20 <oerjan> c'ou,. tvtrope
18:16:29 -!- Slereah_ has joined.
18:16:59 <elliott_> http://oxforddictionaries.com/definition/cooperate?view=uk or is it.....
18:17:06 <elliott_> i don't care enough to try and dig deeper
18:17:22 <Phantom_Hoover> Coöperate.
18:17:28 <oerjan> cöpærüt
18:17:35 <Ngevd> http://en.wiktionary.org/wiki/cooperate#Alternative_forms
18:17:47 <elliott_> oerjan: pretty
18:17:47 -!- Slereah has quit (Ping timeout: 248 seconds).
18:17:54 <elliott_> Phantom_Hoover: <Gregor> As opposed to English cooperate, or Esoterian coöperate.
18:18:05 <elliott_> Phantom_Hoover: Anyway I will stop being annoyed by your diaeresing if you apply it properly.
18:18:07 <Phantom_Hoover> Ah, of course.
18:18:18 <Phantom_Hoover> elliott_, excuse me how else do you apply it.
18:18:23 <elliott_> Phantom_Hoover: I.e., to all diaereses, not just diaereses on adjacent vowels.
18:18:35 <elliott_> I once talked like that for an /entire minute/; I'm sure you can manage.
18:18:42 <Phantom_Hoover> Yes fine I will do it.
18:18:42 <elliott_> Erm
18:18:46 <elliott_> s/adjacent vowels/repeated vowels/
18:19:59 <Phantom_Hoover> This is quite easy.
18:20:15 <Phantom_Hoover> ('ea' isn't a diaeresis.)
18:20:20 <Phantom_Hoover> (Nor is that one.)
18:20:37 <elliott_> Phantom_Hoover: Talk about poetry.
18:20:46 <Phantom_Hoover> *poëtry.
18:21:14 <elliott_> Phantom_Hoover: Also shouldn't it be di(ae with " on top)resis because of the i, or am I wrong.
18:21:23 <elliott_> In phonology, hiatus (English: /haɪˈeɪtəs/; Latin: [hɪˈaːtʊs] "gaping")[1] or diaeresis (/daɪˈɛrɨsɨs/ or /daɪˈɪərɨsɨs/,[2] from Ancient Greek διαίρεσις diaíresis "division")[3] refers to two vowel sounds occurring in adjacent syllables, with no intervening consonant. When two adjacent vowel sounds occur in the same syllable, the result is instead described as a diphthong.
18:21:23 <elliott_> The English words hiatus and diaeresis themselves contain a hiatus between the first and second syllables.
18:21:59 <elliott_> Yeah, you need "diæ̈resis".
18:22:13 <Phantom_Hoover> How far does this rabbit hole go?
18:22:31 <elliott_> SO FAR.
18:22:37 <Ngevd> I would have gone for potry
18:22:48 <elliott_> Phantom_Hoover: Will you cooperate on your hiatus to produce poetry with diaereses?
18:22:50 <Phantom_Hoover> Yes, that is because you are an idiöt.
18:23:13 <oerjan> 16:29:35: <elliott_> ais523: _please_ protect Excela already...
18:23:14 <oerjan> 16:29:42: <elliott_> oh wait
18:23:14 <oerjan> 16:29:47: <elliott_> you said they moved to another page if they did that
18:23:31 <oerjan> what we need is some way to protect the page so the bots don't actually realize it is protected
18:23:33 <Phantom_Hoover> is excela a brainfuck derivative
18:23:41 <elliott_> oerjan: ghostprotecting?
18:23:54 <oerjan> ...i guess
18:24:01 <Phantom_Hoover> Ghostecting.
18:24:07 <elliott_> oerjan: ("ghostbanning" is a common term for the forum equivalent of that)
18:24:13 <elliott_> (only the ghostbanned user can see their own posts)
18:24:28 <oerjan> elliott_: well it sounds like what reddit does with voting
18:24:28 <elliott_> that would require an extension that probably doesn't even _exist_ yet though, so good luck with that :P
18:24:37 <elliott_> oerjan: yeah
18:24:53 <Phantom_Hoover> Wow, diȧėreses (look, I don't have a compose binding for it) are remarkably uncommon.
18:25:11 <elliott_> Phantom_Hoover: æ̈ here you go.
18:25:24 -!- elliott_ has left ("Leaving").
18:25:26 -!- elliott_ has joined.
18:25:27 <Phantom_Hoover> elliott_, better, get me a decent .XCompose.
18:25:38 <elliott_> Phantom_Hoover: I think if you get an ae, and then do what you do for a diaeresis and then press space, it'll work.
18:26:07 <Phantom_Hoover> Nope.
18:26:32 <elliott_> *shruggot*
18:26:33 <oerjan> elliott_: it's rather ridiculous with a page that has a plethora of recent edits but hasn't really been changed since 2006 :P
18:26:36 <elliott_> I wish I knew of a decent .XCompose.
18:26:48 <elliott_> oerjan: we should start improving it to confuse the spambots
18:26:52 <oerjan> heh
18:27:19 <oerjan> die, reses!
18:27:29 <Phantom_Hoover> elliött_, I distinctly recall someöne linking me to one on reddit, but I didn't keep track of it.
18:28:44 <Phantom_Hoover> http://forums.introversion.co.uk/introversion/viewtopic.php?t=3003
18:28:49 <Phantom_Hoover> *snigger*
18:30:19 <elliott_> Phantom_Hoover: hehehehehe
18:30:21 <elliott_> headclot
18:30:46 <elliott_> "Who said I was joking - I bought the Humble Introversion bundle and I was quite impressed at what I saw."
18:30:52 <oerjan> <kallisti> 9882 Stallman, an asteroid named after Richard Matthew Stallman, American hacker, founder of the free software movement and the GNU project
18:30:53 <elliott_> Email: Technology_rocks@hotmail.com
18:31:02 <oerjan> if that ever gets close to earth, we're fucked
18:31:52 <elliott_> "We do not exist on the internet yet at least. :/"
18:31:54 <oerjan> Humble INTP bundle
18:31:55 <elliott_> heheheheehehehehehehe
18:32:42 <oerjan> hm i haven't seen myers-briggs mentioned much in a while
18:46:03 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:47:58 <elliott_> oerjan: where?
18:48:44 <oerjan> elliott_: um, i didn't mean to imply that i'd seen it, i just thought of the fact i hadn't after making that pun
18:49:12 <elliott_> ok
18:49:34 -!- derrik has quit (Quit: restart).
18:52:40 <oerjan> boredom -> Special:Random -> Kit Osbourne -> Combat Zone Wrestling -> Philadelphia -> Gentrification -> Property tax -> Mill (currency) -> Latin -> Ancient Greek which we've hit before
18:54:15 <oklopol> we got a strong acceptance to STACS 2012!
18:54:16 <lambdabot> oklopol: You have 1 new message. '/msg lambdabot @messages' to read it.
18:54:45 -!- derrik has joined.
18:54:58 <oklopol> elliott_: about that message, didn't i then prove the theorem?
18:55:18 <oerjan> Ancient Greek still leads roundabout to Greek language :P
18:55:42 <oklopol> also, other reviewers may or may not have given us equally great reviews.
18:56:08 <oklopol> and some of them may or may not have pointed out a full page listing of typos and thinkos
18:56:29 <elliott_> oklopol: can you prove a lil' theorem oerjan needs
18:56:50 <oklopol> which one
18:57:23 <oerjan> hm this was one of the really long ones, still passing through Human (after Ngevd's very temporary cycle i feel like rechecking where this one goes; no change so far i think)
18:57:44 <elliott_> oklopol: oh it's just a simple one, proving the equivalence of two really simple functions
18:57:46 <elliott_> isn't that right oerjan
18:57:53 <Ngevd> Did we ever come to a conclusion on differentiation chains?
18:58:00 <elliott_> oerjan's just not smart enough to do it you see
18:58:00 <oklopol> yeah oerjan solved it
18:58:12 <Ngevd> The answer was?
18:58:18 <elliott_> Ngevd: answer to what
18:58:22 <oklopol> just look at e^(ax)
18:58:31 <oerjan> elliott_: are you talking about the ZipList stuff? i think it's pretty clear in principle.
18:58:41 <oklopol> and choose a fittingly
18:58:49 <oklopol> but oerjan: did you get uniqueness from that?
18:59:12 <oklopol> i think you then get that from taylor series with little trouble for analytic functions
18:59:16 <oerjan> oklopol: i didn't actually _give_ the proof, i just recalled what i remembered as the answer
18:59:53 <oklopol> i consider e^(ax) a proof of existence, but okay so you know it's unique
19:01:41 <oerjan> oklopol: i'm pretty sure, although i don't recall how it goes, it's probably some linear operator proof
19:02:36 -!- Phantom_Hoover has joined.
19:02:43 <oerjan> also i think you need only something like C^n functions to make it so
19:03:08 <oerjan> ...well, it's obviously C^infty once something _is_ a solution.
19:08:29 <oerjan> oklopol: oh it may involve one of the basic extension theorems for differential equations - if the values of a solution function and its n-1 first derivatives at a point are given, then its extension to some neighborhood is unique and by some linear algebra some linear combination of the e^(ax) things obviously fits.
19:09:19 <oerjan> iirc
19:13:01 <oerjan> ah the Human article after a while actually reaches Ngevd's Valuation (finance)
19:14:41 <oerjan> so basically this path is ridiculously long
19:15:01 -!- GreaseMonkey has joined.
19:15:18 <Ngevd> I think I first encountered that loop via Human Population...?
19:15:22 <Ngevd> I started at "chess"
19:15:51 <oerjan> oh wait sorry it wasn't one of Ngevd's anyway, he had Valuation of options -> Option (finance) at one point
19:15:57 <Phantom_Hoover> Oh, did they remove the philosophy loop?
19:15:59 <oerjan> which is similar but not the same
19:16:08 <oerjan> Phantom_Hoover: we are not doing the same game
19:16:15 <Phantom_Hoover> Ah.
19:17:16 <oerjan> we are looking at the last link of the introduction section, which tends to give _rather_ longer paths
19:17:30 <oerjan> but still has some commonly occuring end cycles
19:17:46 -!- kmc has joined.
19:18:23 <elliott_> oerjan: hm i wonder what the longest cycle on wikipedia in _general_ is
19:18:33 <elliott_> i.e. picking which link to follow by a magic oracle that picks the one that leads to the longest cycle :P
19:19:11 <oerjan> ah now reaching President of the United States. i don't believe anything has changed on this path since last time
19:20:10 <oerjan> elliott_: hm i wonder what would be an algorithm for that. in fact isn't that hamiltonian-cycle like, so likely NP-complete
19:20:16 -!- derrik has quit (Ping timeout: 240 seconds).
19:20:59 <elliott_> oerjan: http://en.wikipedia.org/wiki/Longest_path_problem ?
19:21:06 <elliott_> NP-complete, apparently
19:21:07 <oerjan> that is, solving it requires at a minimum finding out whether there is a hamiltonian cycle
19:21:07 <elliott_> :(
19:21:08 <oklopol> could even be harder, but certainly at least as hard as hamiltonian.
19:21:18 <elliott_> oklopol: hamiltonian hard, it seems
19:21:23 <elliott_> godo term that
19:21:25 <elliott_> hamiltonian hard
19:21:49 <oerjan> well it's the usual meaning of "hard" in complexity theory
19:22:05 <oklopol> that's just hardness / completeness of the decision problem. but wait, that's enough.
19:22:16 <oklopol> then just do a binary search
19:22:26 <oerjan> that's the way it usually goes
19:22:34 <oklopol> err
19:22:41 <oerjan> assuming the decision problem has a suitable parameter to search by
19:23:08 <oklopol> except nono, a nondeterministic tm cannot necessarily show that something is not doable
19:23:27 <oklopol> or that some length cannot be done
19:24:27 <oerjan> oklopol: well of course. you end up with the oracle class P^NP
19:24:46 <oklopol> so we agree that it's probably not np-complete
19:24:56 <oerjan> np-hard, is the term :P
19:25:16 <oklopol> obviously i know that, since i just used it
19:25:24 <oerjan> which is obvious from hamiltonian-hard + hamiltonian being NP-complete
19:26:12 <oklopol> basically we'd need to show it's in co-np i guess
19:26:55 <oerjan> erm
19:27:14 <oklopol> i mean
19:27:22 <oerjan> it's likely to be hard for _both_ NP and co-NP, i'd think
19:27:48 <oklopol> but if the decision problem is in both np and co-np, then isn't the problem of actually finding the longest path in np
19:28:20 <oklopol> since you can then do binary search within np
19:28:30 <oerjan> NFP
19:28:40 <oklopol> well sure
19:28:56 <oerjan> or wait
19:29:11 <oklopol> please stop arguing about terminology and start agreeing with everything i say
19:29:11 <Vorpal> ais523: there?
19:29:35 <ais523> yes
19:29:37 <oerjan> FNP, was it
19:29:40 <Vorpal> ais523: know anything about Dungeons of Dreadmor? All I know it is a rouge like, and was added to the last humble bundle.
19:29:45 <ais523> I don't
19:29:47 <Vorpal> So I figure you might know if it is any good
19:29:47 -!- MDude has quit (Ping timeout: 248 seconds).
19:29:48 <Vorpal> ah okay
19:29:50 <oklopol> fnp
19:29:57 <Vorpal> well I'll give it a try
19:30:35 <oklopol> functions calculabilated in nondeterministic polynomial time
19:30:35 <oerjan> well, maybe. it looks a little tricky.
19:30:45 <Vorpal> heh, difficulty setting: elves (easy), dwarves (normal), going rouge (hard). Plus a permadeath option
19:30:53 <Vorpal> hm what to chose
19:31:03 <Vorpal> I'm tempted to go for the nethack way of doing it
19:31:31 <Gregor> Going rouge ... SO RED ... SO RED IT HURTS MY EYES
19:31:43 <Vorpal> typoed that :P
19:31:54 <Vorpal> rogue of course
19:31:58 <oklopol> get an upper bound for biggest value, then do binary search, starting both the np algo and the np algo for the complement at the same time, one of them returns true in polynomial time, continue for linearly many steps to reach value
19:32:10 <oerjan> hm we're on to South Korea, i vaguely recall we may be on the way to the Petronas Towers cycle
19:32:16 <oklopol> no?
19:32:22 <Vorpal> okay no class selection. Instead you select 5 skills from a set of... ~40
19:32:56 <Vorpal> actually 7 out of 34. I fail at counting today
19:33:01 <Vorpal> and there is a random button
19:33:03 <oklopol> running the algos at the same time is a polynomial increase, and there's a linear bound on the length of the upper bound
19:33:27 <oerjan> oklopol: well i'm just not quite sure that's what they meant by FNP in wikipedia
19:33:42 <elliott_> oerjan: hmph now i really want to know the longest cycle in wikipedia :P
19:33:47 <elliott_> oerjan: how many years do i gotta wait to bruteforce it
19:34:09 <oklopol> oerjan: that's the definition of NP imo :D
19:34:43 <oerjan> oklopol: er NP is decision problems. you are trying to calculate a function problem, which obviously has a different name.
19:34:51 <Vorpal> no race selection
19:35:09 <oerjan> i'm just not sure wikipedia's FNP is precisely the class you are using.
19:35:24 <oerjan> it had this strange relation definition
19:35:51 <elliott_> oerjan: HOW MANY YEAAAAAAARS
19:35:57 <oerjan> oh it has its own article too, i just looked at FP
19:36:15 <oklopol> oerjan: yeah but i mean fnp has nothing to do with the class fnp in complexity theory imo
19:36:25 <oerjan> elliott_: get to the singularity first, and we can start estimating
19:36:28 <oklopol> that's just the language of witnesses
19:36:35 <elliott_> oerjan: cries
19:36:35 <oklopol> or whatever they like to call it
19:36:40 <elliott_> oklopol: how many years !!!!
19:36:52 <Ngevd> elliott_: 14
19:37:06 <oerjan> elliott_: there is of course a possibility that wikipedia's graph allows for some greatly simplifying optimizations
19:37:24 <oklopol> i just checked the definition of fnp in my book and it's definitely the relations computable by a nondeterministic turing machine.
19:37:33 <elliott_> oerjan: well paths are very short in general
19:37:47 <oklopol> in the sense that you get nondeterministic output from your tm
19:37:59 <oklopol> but let me check again, actually...
19:38:03 <Vorpal> ais523: so far it seems like a good rougelike. Good game music too. It doesn't take itself seriously though.
19:38:17 <ais523> that's also often good in roguelikes
19:38:20 <elliott_> oerjan: "If you follow the best route in all cases, it takes an average of 4.573 clicks to get from any Wikipedia article to any other."
19:38:51 <oerjan> "Bellare and Goldwasser showed in 1994 using some standard assumptions that there exist problems in NP such that their FNP versions are not self-reducible, implying that they are harder than their corresponding decision problem.
19:38:55 <ais523> elliott_: I wonder what the value is not counting orphan and linkless?
19:38:55 <oerjan> "
19:39:16 <oklopol> so.
19:39:31 <elliott_> ais523: "Wikipedia has 2301486 articles with 55550003 links between them (at least in my dataset, those numbers have definitely changed by now). The largest "strongly-connected-component" of wikipedia has 2111480 articles. That is, there are 2111480 articles with the property that from any of them, it is possible to get to any other one. The rest are mostly pages that no-one has linked to or disambiguation pages. For the graph-theory nerds, there is no
19:39:31 <elliott_> other disjoint strongly connected component of more than about 3 articles. For everyone else, the remaining 190006 articles are pretty boring, linkwise."
19:39:34 <elliott_> ais523: so i doubt it'd change much
19:39:46 <ais523> ah, interesting
19:39:52 <Ngevd> Screw this, I'm getting the latest humble indie bundle
19:39:56 <oklopol> fnp, in my book, is not even anything, they use the terms NPMV and NPSV for multi- and single-valued functions calculated by a tm
19:40:02 <oerjan> elliott_: um i was assuming you wanted to always take the _worst_ route
19:40:05 <elliott_> oerjan: well yes
19:40:08 <oklopol> fp is what it should be
19:40:09 <ais523> wow, someone's probably been looking carefully for walled gardens
19:40:12 <elliott_> oerjan: i was just telling you the only thing i knew about wikipedia's graph :P
19:40:15 <ais523> (articles linking to each other but not to articles in general)
19:40:16 <elliott_> ais523: that was in 2008
19:40:32 <Vorpal> ais523: well yeah, it is graphical of course. What else would one expect from a modern game. Oblique graphics (I think the term is, like isometric but aligned with one axis)
19:40:33 <elliott_> ais523: I think it's more infoboxes
19:40:37 <elliott_> and obsessive linking of dates
19:40:38 <elliott_> and thinks like that
19:40:39 <elliott_> *things
19:40:41 <elliott_> and countries
19:40:43 <ais523> elliott_: those only go one way
19:40:47 <elliott_> well, OK
19:40:48 <ais523> that doesn't lead to a strongly connected component
19:40:51 <ais523> unless it goes both ways
19:41:24 <elliott_> "In the complexities below, I just use "n" to denote either number of nodes or number of edges. Since the graph is so sparse, they're mostly interchangeable."
19:42:05 <Phantom_Hoover> Graphs? Complexity? This is Eodermdrome, right?
19:42:26 <Ngevd> I had an idea for another graph-based esolang
19:42:41 <Ngevd> But then I remembered I still need to finish Salesman
19:42:43 <oerjan> Petronas Towers it was.
19:42:57 <elliott_> Phantom_Hoover: wikipedia
19:43:19 <oerjan> elliott_: wikipedia as an eodermdrome program. discuss.
19:43:20 <Phantom_Hoover> Wikidermdrome.
19:43:25 <Vorpal> ais523: the game has some interesting name for your basic stats. I think "burliness" is it's name for "strength" and so on
19:43:33 <elliott_> heh
19:43:34 <Vorpal> sagacity is probably int I guess?
19:43:42 <Phantom_Hoover> Vorpal, stat names are always a sign of quality!
19:43:42 <Vorpal> caddishness I don't know
19:43:49 <oerjan> well i suppose eodermdrome state fits better.
19:43:52 <Phantom_Hoover> Caddishness, I assume, would be charisma.
19:44:01 <Vorpal> Phantom_Hoover: no but in this case a sign that the game is not taking itself seriously at all.
19:44:32 <Vorpal> there is nimbleness (dex I presume), savvy (wis?) and stubbornness (?)
19:45:53 <Ngevd> help how do I install .rpm
19:45:58 <Vorpal> a traffic cone as a helmet... heh
19:46:21 <Phantom_Hoover> Ngevd, is this a Humble Bundle thing?
19:46:24 <Ngevd> Yes
19:46:28 <Ngevd> DEFCON
19:46:46 <Ngevd> Ooh, there's a .deb
19:46:47 <Vorpal> Ngevd: just use the .tar.gz?
19:46:49 <Vorpal> or that
19:46:49 <Ngevd> .debs are easy
19:46:49 <Phantom_Hoover> I'd just download the .gz, TbH.
19:47:25 <Phantom_Hoover> Much less fuss, and it's not like adding a launcher (the only serious advantage of a .deb in this context) isn't much work.
19:49:39 * Phantom_Hoover purges SpaceChem, uses APT again.
19:49:42 <elliott_> Um.
19:49:45 <elliott_> The .deb is not much less fuss.
19:49:51 <elliott_> You can literally double click them to install.
19:49:58 <elliott_> *more fuss
19:50:01 <elliott_> Ngevd: Use the .debs.
19:50:23 <Ngevd> I was only not using the .debs because of momentary selective blindness
19:51:06 <Vorpal> wand of laser
19:51:43 <Ngevd> Is it bad that so far my favourite roguelike is Pokmon Mystery Dungeon Red Rescue Team?
19:52:18 <Vorpal> ais523: the description of wand of laser is funny: "Aside from tangential properties, this wand's primary magical power involves distracting cats"
19:52:41 <Vorpal> pretty effective still
19:53:09 <Vorpal> stats are "entropy: 27, burn rate: 15" whatever that means
19:53:30 <Phantom_Hoover> Perhaps it's describing the standard entropy value.
19:53:58 <Vorpal> oh okay the tutorial just told me, it has a chance of burnout when used based on entropy and entropy increases with every use
19:54:10 <Vorpal> not sure about burn rate though
20:02:11 <ais523> Ngevd: no, it's a pretty good roguelike
20:02:33 <ais523> Explorers of Time/Darkness/Sky is better, though; Sky removed a lot of rough edges but added a couple of silly mechanics, but it's probably still the best of the three
20:02:39 <ais523> the problem is that it starts out far too easy
20:02:44 <ais523> (all three, that is)
20:07:07 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
20:08:12 -!- zzo38 has joined.
20:09:21 -!- Phantom_Hoover has joined.
20:11:49 <elliott_> oerjan: thanks for reminding me of that six degrees of wikipedia thing, followed some links and the guy has an interesting series of haskell posts on his blog :P
20:12:27 -!- BeholdMyGlory has quit (Ping timeout: 248 seconds).
20:12:47 <oerjan> yw
20:13:39 <elliott_> unfortunately it involves arrows so i don't understand it :'(
20:15:19 <zzo38> Can Applicative be defined in terms of fmap and pure and (liftA2 (,)) instead of (<*>) and pure?
20:15:42 <oerjan> zzo38: yes, i said.
20:16:55 <oerjan> fm <*> x = uncurry ($) `fmap` liftA2 (,) fm x
20:18:52 <oerjan> also i mentioned that a blog comment called it lax monoidal category or something like that
20:33:34 <Gregor> <Gregor> Please describe in glowing terms the inventor of IRP.
20:33:34 <Gregor> <FreeFull> I have no idea who invented IRP
20:33:34 <Gregor> <Gregor> :(
20:33:45 <Gregor> (In #irp )
20:34:12 <oerjan> SIC TRANSIT GLORIA MVNDI
20:36:55 <elliott_> Gregor: Can you go back in time and not invent IRP?
20:37:23 <Gregor> elliott_: If I hadn't invented IRP, you couldn't have even just requested that in IRP#esoteric NOW COULD YOU
20:40:31 <olsner> IRP, is that the internet relay programming or whatchamacallit?
20:40:48 <elliott_> No.
20:40:54 <elliott_> IRP is Ignorant Rabbi Preachers.
20:40:58 <elliott_> Gregor is one.
20:41:16 <oerjan> why am i suddenly having this deja vu feeling
20:41:40 <oerjan> `log [i]gnorant rabbi preachers
20:42:08 <HackEgo> 2011-11-30.txt:20:40:54: <elliott_> IRP is Ignorant Rabbi Preachers.
20:43:36 <oerjan> i guess i must have loaded from a saved game, or something.
20:43:49 <elliott_> oerjan: you know how temperamenatl `log is :P
20:43:57 <elliott_> or does synchronicity guarantee that it would have given the right result
20:43:59 <oerjan> `log [i]gnorant rabbi preachers
20:44:06 <HackEgo> 2011-11-30.txt:20:42:08: <HackEgo> 2011-11-30.txt:20:40:54: <elliott_> IRP is Ignorant Rabbi Preachers.
20:44:40 <oerjan> elliott_: it doesn't look _overly_.
20:44:56 <oerjan> there would be another word if my brain were working.
20:47:41 <olsner> "were"? how many brains do you have?
20:48:02 <oerjan> in which we learn that olsner doesn't know about the subjunctive.
20:49:36 <oerjan> i'm starting to worry about my increasing snarkiness. slightly.
20:49:38 <elliott_> *sigh* this troll on reddit hasn't replied to the second-last phase of my argument
20:51:51 <olsner> oerjan: hmm, is that the subjunctive? can you combine subjunctive with if?
20:52:02 <oerjan> pretty sure
20:52:59 <oerjan> in fact i suspect that's the _majority_ of uses
20:55:32 -!- augur has quit (Read error: Connection reset by peer).
20:57:48 <olsner> oh well.. I'm not the authority on moods anyway, not even the subjunctive one
20:59:36 <elliott_> oerjan: your original line was slightly awkward-seeming btw
20:59:46 <oerjan> which one?
20:59:47 <elliott_> but not wrong at all
20:59:51 <elliott_> <oerjan> there would be another word if my brain were working.
20:59:58 <elliott_> "there would be another word were my brain working" seems better to me
21:00:06 <oerjan> aha
21:00:47 <oerjan> which of course looks more awkward to _me_, but... :P
21:01:00 <olsner> aha! told ya the if was wonky
21:01:55 <elliott_> oerjan: well the whole thing is kind of awkward, it doesn't feel like the way someone would talk without trying to
21:02:42 <oerjan> Quiet, Thou
21:03:09 <olsner> talking without trying to is also awkward
21:03:22 <oerjan> nah is fohel askgaøla gloher
21:03:26 <olsner> ... were it to happen
21:24:15 -!- augur has joined.
21:32:47 <elliott_> oerjan: heh i just realised that arrow notation having banana brackets is funny
21:33:03 <oerjan> O KAY
21:33:12 <elliott_> oerjan: do you
21:33:13 <elliott_> get it
21:33:19 <oerjan> no.
21:33:26 <elliott_> oerjan: time flies like a
21:33:32 <elliott_> *n
21:33:39 * oerjan swats elliott_ -----###
21:33:45 <elliott_> :'(
21:33:49 <elliott_> crying
21:33:56 <oerjan> there was a banana fly on your head
21:34:52 <elliott_> oerjan: (do you (understand arow,)es)
21:35:04 <oerjan> no one does
21:35:29 <oerjan> even oleg just pretends they're applicatives + category
21:35:56 <elliott_> oerjan: i have not found that to help, seeing as I failed to derive arr from Applicative + Category without looking it up :P
21:36:01 <elliott_> ((<$> id))
21:36:09 <oerjan> funny that
21:36:25 <elliott_> are you implyig im stupid :(
21:37:25 <oerjan> nah just retired
21:37:36 * elliott_ cry
21:37:55 <oerjan> lack of oxygen.
21:38:33 <Vorpal> elliott_: you know about weird C++ stuff right?
21:38:42 <elliott_> Phantom_Hoover: kill oerjan , to die for, insult with old meme
21:38:53 <elliott_> Vorpal: i AM weird C++ stuff --leonardo de vinci
21:38:57 <elliott_> *da
21:38:58 <Phantom_Hoover> wha
21:39:05 <elliott_> oh wai
21:39:06 <elliott_> t
21:39:10 <oerjan> obnoxious meme is obnoxious
21:39:10 <elliott_> da is actually rihght
21:39:11 <Vorpal> elliott_: any idea why foo might not work (due to "'foo' was not declared in this scope") while this->foo works perfectly?
21:39:13 <elliott_> that was meant to be a funny joke
21:39:15 <elliott_> oops.
21:39:19 <Vorpal> elliott_: templates are involved
21:39:29 <elliott_> Vorpal: is this a puzzle or can i see code
21:39:57 <Vorpal> elliott_: it is from darwinia source, trying to get it to compile. Adding this-> worked. I don't think I'm legally allowed to paste it just like that.
21:40:09 <elliott_> Vorpal: i own the bundle.
21:40:19 <Vorpal> elliott_: well I need to paste it to you in private then, sec
21:41:55 * oerjan wonders if internet memes will be like fashion, and recycle in a few decades
21:42:17 <Phantom_Hoover> xkcd did a comic on that, although I can't remember if it was pre- or post-decay.
21:42:26 <elliott_> oerjan: http://xkcd.com/286/
21:42:31 <elliott_> Phantom_Hoover: WAY AHEAD OF YOU
21:42:47 <Phantom_Hoover> Pre-decay, then.
21:42:57 <oerjan> all your memes are belong to us
21:43:16 <Phantom_Hoover> Retroturn.
21:43:32 <olsner> hmm, when was aybabtu?
21:44:24 <fizzie> "-- became an Internet phenomenon or meme in 2000–2002."
21:44:25 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
21:44:31 <Vorpal> elliott_: see /msg
21:44:32 <fizzie> Why ask a random channel when you can ask Wikipedia?
21:44:53 <olsner> I asked first, then I went to wikipedia and waited for someone to repeat the information I just read there
21:44:56 <oerjan> WHAT IF WE WANT A RANDOM ANSWER
21:45:05 <olsner> or a funnier answer
21:45:14 <elliott_> fizzie: YOUR MISTAKE WAS SPEAKING
21:45:33 <fizzie> Most of what I speak is like that.
21:48:33 <elliott_> fizzie: Oh, you're cheating.
21:48:37 <elliott_> You can't speak and then chat like that.
21:48:41 <elliott_> *cheat
21:49:38 -!- Patashu has joined.
21:59:08 -!- Taneb has joined.
22:02:11 -!- Ngevd has quit (Ping timeout: 245 seconds).
22:02:22 -!- MDude has joined.
22:04:22 -!- oerjan has quit (Quit: Good night).
22:07:04 -!- lambdabot has quit (Quit: #lesswrong).
22:18:17 -!- Jafet has quit (Quit: Leaving.).
22:20:16 <elliott_> Deewiant: Test the Windows build already
22:20:26 <Vorpal> elliott_: help
22:22:05 <ais523> <mikehart> Just noticed my email in my account settings was 0.034064395384923 I asume that was the issue.
22:22:09 <ais523> hahaha
22:22:20 <ais523> (it seems to be back to normal now…)
22:23:01 -!- elliott_ has quit (Read error: Operation timed out).
22:26:29 <Phantom_Hoover> http://www.youtube.com/watch?v=rzXOVbYUamc
22:26:36 <Phantom_Hoover> Conclusion: quintopia should live in IKEA.
22:30:37 -!- ais523 has quit (Remote host closed the connection).
22:50:22 <Vorpal> <Phantom_Hoover> http://www.youtube.com/watch?v=rzXOVbYUamc <-- cool
23:20:02 * Phantom_Hoover → sleep
23:20:04 -!- Phantom_Hoover has quit (Quit: Leaving).
23:20:12 <Taneb> Good idea
23:42:12 -!- Taneb has quit (Ping timeout: 260 seconds).
23:57:17 -!- Klisz has joined.
←2011-10 2011-11 2011-12→ ↑2011 ↑all