←2011-10-31 2011-11-01 2011-11-02→ ↑2011 ↑all
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-10-31 2011-11-01 2011-11-02→ ↑2011 ↑all