00:01:20 hi oerjan ooejiowerjina 00:01:48 AHA 00:01:48 hi elliott 00:01:50 what i fi 00:01:50 hmm 00:02:20 elliott: so do you understand the analysis in the paper? 00:02:35 there was analysis? :D 00:04:30 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 elliott: well, the stuff about how the determiner sharing comes about 00:04:54 not the facts but the gapping-as-ellipsis account 00:05:21 augur: i am bad at reading :( 00:05:30 elliott: lol 00:05:49 subsection 2.1 00:06:17 elliott has no MonadReader instance. 00:06:20 (ooooh, sick burn) 00:07:45 hmm, actually that solution i thought i had just lead to an infinite regress :( 00:07:54 elliott: which solution 00:08:07 augur: not related to your thing 00:08:27 o 00:08:31 model-view-controller is actually not as terrible as I thought it would be.. 00:08:34 infinite regress shows up in natural language you know :D 00:09:57 CakeProphet: Why would separating the parts of your program sanely be terrible? 00:10:05 (Even if you are using a degenerate language.) 00:10:25 (Not that I'm saying you are, just that there are those that do.) 00:10:31 mvc is awful because controllers are necessarily degenerate 00:10:40 either that, or things go into the controller which should be in the view (vastly most common case) 00:10:50 evincar: I thought the specific model might be constraining. 00:10:54 also because decoupling controllers from views never really works out at all 00:10:57 so basically mvc is stupid 00:11:22 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 elliott: Or just applicable to fewer problems than it's applied to. Like a hellton of things in the programming world. 00:11:29 CakeProphet: yes it does 00:11:31 view = template 00:11:34 controller = view 00:11:38 ah okay. 00:11:40 django calls things different because it's stupid 00:11:44 makes perfect sense. :P 00:12:17 CakeProphet: It is constraining, that's what gives it any shred of decency. 00:12:19 evincar: damn! your unjustified assertion has totally beaten my attempted explanation to the ground 00:12:43 at least the model part is spot-on. 00:13:06 can't go wrong there. (cue elliott.. :P ) 00:13:11 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 CakeProphet: it's probably the best you can do within the constraintrs of model 00:13:34 evincar: wait -- wait -- back up here 00:13:39 elliott: right, it has to be all databasey 00:13:44 if you have a problem to which MVC is suited 00:13:48 MVC is suited to it??? 00:14:10 elliott: If you feel like missing the point entirely, yes. 00:14:12 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 "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 "If you have an application that's naturally divisible into model, view, and controller components, then MVC is a good idea." 00:14:44 "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 "If your application = model + view + controller, then model-view-controller is a good idea." 00:15:48 hey what I'm working on fits that pretty well! 00:15:49 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 I think he's just covering his bases. 00:16:28 are you saying my reduction of that sentence was incorrect, because you definitely made a few typos if so 00:17:06 CakeProphet: you speak which language natively? 00:17:21 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 I prefer MVC where MVC = Master Vizier Count 00:17:52 augur: CakeProphet is from Svalbard. 00:17:53 it employs a rigid code of operation based on feudal tradition 00:18:07 so swedish or whatever 00:18:23 CakeProphet: How many Master Vizier should use in program? \(O_o)/ 00:18:39 no they're three different things 00:18:44 master is different from vizier. 00:18:49 it makes total sense. 00:19:11 I prefer to think you meant the number of viziers who are masterful. 00:19:20 i like how augur believes me 00:19:27 viziers totally have nothing to do with mastery of things. 00:19:38 viziers are sycophantic scum. 00:20:18 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 elliott: why not! 00:20:38 Assuming vizierhood is by appointment. 00:20:46 I'm making a lot of assumptions today. 00:20:48 evincar: that's a valid trope, yes. 00:21:04 but only works sometimes. 00:21:13 Hooray, now I know how to write a book that will work sometimes. 00:21:14 to use the parlance of our times, viziers are pussy bitches. 00:22:23 oh god deadlines, someone shoot me. 00:23:14 oerjan: hi write my parser thanks 00:23:24 oerjan: hi write my website thanks 00:24:28 always happy to help with procrastination 00:24:32 elliott: Parsers are easy to write. Especially in Haskell (as I recently learned) of which you are so fond. 00:25:01 evincar: try writing a parser for transformational grammars! 00:25:15 evincar: Sure, if your grammar is trivial! 00:25:16 also, elliott, i still prefer agda to coq 00:25:33 evincar: challenge: write a Perl parser in Parsec 00:25:42 They're two different things, it's just that Coq is the better orange. 00:25:50 CakeProphet: but using Counts only works if your hierarchy has no cycles! 00:25:55 CakeProphet: Challenge: write a Perl parser. 00:26:13 don't forget you may need to interpret perl code in order to parse perl code. 00:26:19 a perl parser is trivial in parsec 00:26:20 also yacc 00:26:21 (Hint: it's not strictly possible.) 00:26:22 also everything 00:26:25 yes it is 00:26:43 I don't feel like reimplementing perl, thank you very much. 00:26:50 If I want to parse Perl, I'll use perl. 00:26:55 "i don't feel like it -> it's not possible" 00:27:00 perl has a c api, anyway 00:27:02 Yes. 00:27:02 which has, you know, eval 00:27:24 elliott: I was under the impression that the perl parser had to be handwritten. 00:27:28 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 rrright 00:27:44 elliott: or at least, couldn't be written with yacc, I mean. 00:27:46 CakeProphet: doesn't it use yacc with a bunch of hacks or something 00:27:52 oh... 00:27:56 yes, I think so. 00:28:00 certainly the last part. 00:28:01 evincar: which is why you told CakeProphet it wasn't possibl 00:28:01 e 00:28:15 but not strictly yacc 00:28:17 elliott: Damn skippy. 00:28:26 also in a deterministic universe, exactly one thing is possible. and it sucks ass. 00:28:35 as the way it parses depends silly hacks, yes. 00:28:46 +on 00:29:52 elliott: So what's this oh-so-complex parser of yours for? Must I logread? 00:30:20 who doesn't logread 00:30:23 me. 00:30:52 I have IMPORTANT THINGS to do. 00:30:57 that do not involve the reading of logs. 00:31:04 for example: acting cool 00:31:24 smoking hookah. getting rowdy with friends. sleeping. chatting on IRC. 00:31:48 wow 00:31:55 i wish i could be you for like one day 00:32:06 yeah it's awesome. probably because I'm so cool. 00:32:11 * CakeProphet does a cool pose. 00:32:22 wait, when did CakeProphet turn into oklopol? 00:33:11 so I think my car actually bears some semblance of functionality now. 00:33:11 so 00:33:22 I can get on with procrastinating as usual. 00:33:34 -!- centrinia has joined. 00:33:42 CakeProphet, what about your cdr? 00:33:51 HA. HA. HAHAHA. HA. HA. HA. 00:34:18 Vorpal: cdr is still using the old stateful object-oriented system. 00:34:27 heh 00:34:46 elliott: All I find is you complaining that you may have to write a parser. :/ 00:34:48 CakeProphet, well I guess we are even on the puns 00:34:48 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 evincar: Looks like you didn't read enough logs then! 00:35:13 oklopol: Hi. 00:35:28 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 Wait hasn't centrinia been here before. 00:35:30 hi elliott, what's up? 00:35:32 Let's assume no. 00:35:33 `? welcome 00:35:33 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 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 elliott: believe so. 00:35:44 I have been here once. 00:36:01 centrinia: why did you leave? why did you come back? who are you? 00:36:02 centrinia: What kind of idiot would repeat the experience? Weren't we bad enough?! 00:36:13 oklopol: :( you put pain in my heart. 00:36:17 oh elliott you so sillies. 00:36:19 I was not paying attention the first time. 00:36:35 CakeProphet: i know exactly where your buttons are. 00:37:13 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 Thank you. 00:37:41 * CakeProphet stares longingly at a pastry, waiting for that old spark. 00:37:47 (2009-08-01 and 2011-10-07.) 00:37:58 oh god he's making me cry as well 00:38:12 this is just horrible 00:38:27 CakeProphet, it uses lemon slices and metal rods? 00:38:56 well since I adopted Master Vizier Count I've been using the soothsaying plugin 00:39:06 which I believe examines the entrails of various domesticated mammals. 00:39:27 CakeProphet, that one went over my head. 00:39:36 it's... a strange thing 00:39:38 people used to do. 00:39:40 back in the day. 00:39:50 and I tied it in with Django weirdly. I wouldn't worry too much about it. 00:39:57 heh 00:40:01 * evincar returns from logreading with no news to report. 00:41:04 evincar: You didn't read enough logs. 00:41:34 did you see the part where me and elliott spammed for hours and hours 00:41:46 I have seen 00:41:48 all the parts. 00:42:12 AWWWWW YEAH FRUITS LOOPS THE TURING COMPLETE CEREAL FUCKING DELICIOUS YES. 00:42:13 By which I mean no. 00:42:32 i think our last session was like a year ago 00:43:09 sheesh, is my turing completeness detection hampered by me not smoking hookah... 00:43:45 oerjan: yep 00:43:49 also not acting cool enough. 00:43:52 this is important. 00:44:01 to see the turing completeness in everyday, cool life. 00:44:06 oerjan: were you proud when that guy wrote a program in :()^ :') 00:44:08 ah. no hope for me, then. 00:45:06 elliott: i felt strangely empty 00:45:11 oerjan: :( 00:45:45 oerjan: this is merely the sign of the blossoming forest within. 00:45:52 * CakeProphet sagenods. 00:46:31 wow you guys I lost an entire bowl of Fruit Loops 00:46:32 I have no clue 00:46:33 where it is. 00:46:48 you accidentally smoked it 00:48:53 perhaps my brain is subconsciously trying to further delay work on this Django stuff. 00:54:09 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 o modification." 00:54:21 heh, it's even software-rendered 01:00:33 -!- Patashu has joined. 01:03:25 It looks like fun. 01:07:25 https://aur.archlinux.org/packages.php?ID=53606 yay 01:07:56 better extract the 64-bit version from the .deb, sigh 01:10:13 oh wait, that one's 32-bit too :) 01:10:55 Vorpal: how did you get voxatron working on 64-bit 01:14:14 elliott, ./vox-run iirc 01:14:18 elliott, from the tar.gz 01:14:25 Vorpal: oh, so you already have the 32-bit libs 01:14:26 elliott, I had the required 32-bit libs I guess? 01:14:33 elliott, yes, multilib repo 01:14:39 the aur package works but doesn't depend on the 32-bit versions of the libs 01:14:46 which sucks 01:14:46 elliott, use the multilib repo 01:14:48 not aur 01:14:49 for this 01:15:05 Vorpal: I very much doubt there is a voxatron package in the multilib repo. 01:15:15 elliott, no I meant for the libs 01:15:33 I just rebooted desktop to windows, so not going to check which ones were required, try ldd? 01:15:35 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 elliott, ah I did it manually 01:15:52 elliott, and leave a comment about it 01:15:55 I did. 01:16:03 Hopefully it'll be fixed, since it was just added an hour ago and there have already been fixes. 01:16:05 right, just wait and play it by hand until then 01:16:22 or just wait 01:16:56 * elliott reiterates what he said about not doing anything outside the package manager any more. 01:17:24 what about your own code? 01:17:41 I don't run that :-) 01:17:48 :P 01:17:58 -!- tiffany has quit (Quit: Leaving). 01:19:30 I wonder how one convinces people to set up mirrors. Also, build bots. 01:19:36 I will try... murder. 01:20:03 money. promises of fame. a brilliant idea. 01:20:16 Murder's cheaper. 01:20:45 blackmail. sexual favors. threats of violence (possibly including murder). drugs. free advertising. 01:20:59 wtf windows, it doesn't detect my PS/2 keyboard properly unless it is after a warm reboot from any OS. 01:21:00 Why threaten when you can do? 01:21:12 good luck getting dead people to mirror for you. 01:21:24 I could murder their family. 01:21:32 that's acceptable. 01:21:44 still not much motivation to mirror your stuff. 01:21:49 you still need a threat 01:21:51 to coerce them. 01:22:01 you can't just kill their family and expect them to start doing things. 01:22:03 for no reason. 01:22:15 they'll probably just grieve or do something equally human-like. 01:22:21 I could kill half their family and threaten to kill the rest? 01:22:28 that's good 01:22:37 it demonstrates that you're not to be trifled with. 01:22:42 while also providing coercion. 01:23:37 don't forget the horse heads 01:23:44 elliott: anyway if you have an awesome project I think you could probably find a university that will provide a mirror. 01:23:55 but I have no clue how that works. 01:24:00 I doubt it's quite that easy. 01:24:17 Build bots are probably more useful, anyway. 01:24:20 kernel.org mirrors several distros, including arch, debian and so on 01:24:30 Vorpal: I doubt they accept new distros :P 01:24:56 elliott, well they accepted ubuntu some time ago. I guess they only accept sufficiently large ones though 01:25:14 Ubuntu is from 2004. 01:25:17 Arch 2003, I think. 01:25:18 etc. 01:25:21 elliott, in 2004 it was new 01:25:34 Vorpal: And in 2005 it was the biggest. 01:25:43 hm did it go that fast? 01:25:53 Well, at least by 2006. 01:25:57 well yes 01:26:53 owning a limited liability probably helps with stuff like that. 01:27:07 hm? 01:27:15 Canonical Ltd. 01:27:16 arch linux is community driven iirc 01:27:32 so how would that help with kernel.org mirroring 01:27:33 CakeProphet: Yes, money does indeed begat services. 01:27:34 oh I thought we were talking about Ubuntu. 01:27:37 Oh. 01:27:39 CakeProphet, as well 01:28:15 CakeProphet: No, Ubuntu benefitted from having a literally infinitely rich, tech-savvy, people-person for a manager :P 01:28:52 it will fall the day he dies. Maybe not right away. But it will go quickly downhill then. 01:29:02 Vorpal: I doubt it 01:29:10 AFAICT he doesn't do that much any more 01:29:16 elliott, iirc Canonical makes a loss? 01:29:30 Hmm 01:29:47 "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 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 hm 01:31:12 right 01:31:33 * elliott tries to figure out Nix's dependency story 01:31:40 elliott, oh? 01:31:48 elliott, I thought you said nix was bad ;P 01:31:50 Yes, I don't know what it is from what I know :) 01:31:54 And yes, but I can steal ideas from it. 01:32:26 Why does Unix only offer like three atomic operations 01:32:48 rename, unlink, creat... is there anything else? 01:32:49 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 elliott, ^ 01:32:56 how very strange 01:32:59 heh 01:33:17 http://rcrowley.org/2010/01/06/things-unix-can-do-atomically.html 01:33:19 aha 01:34:01 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 how bullshit is that 01:35:05 Vorpal: lament 01:35:10 actually I really really want a transactional filesystem 01:35:28 where a process can make a "begin" call on a directory, have that directory's contents freeze in a consistent state 01:35:29 make modifications 01:35:34 and commit or rollback it 01:35:39 it would be super-cool 01:37:49 elliott: perhaps this could be included in an orthogonally persistent filesystem? 01:38:20 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 ow 01:39:25 I'm not sure what doesn't make sense.. 01:39:36 elliott: he was probably just quoting mezzacotta 01:39:46 the business speak guy 01:43:15 how does "make this stuff atomic" syscalls not make sense in orthogonal persistence? 01:43:43 "orthogonally persistent filesystem" 01:43:55 okay so it's not really a filesystem 01:45:28 still, if you're doing any kind of reference-passing across threads you'll have to deal with thread safety. 01:45:29 CakeProphet: Anyway, in the presence of orthogonal persistence, one can simply overlay mechanisms like STM to achieve the desired concurrency properties. 01:45:57 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 So it's as atomic as memory itself is. 01:46:20 (Well, OK, I suppose there's no CAS instruction for hard disks.) 01:46:27 which is: not very atomic :P 01:46:46 CakeProphet: Are you saying nobody achieves atomicity on top of memory? 01:46:53 not at all 01:47:01 I was referring to "memory itself" as in the lowest level. 01:47:08 Whatever system works for software also works for the disk in orthogonal persistence, that's all I'm sayin'. 01:47:29 I guess the only thing the syscalls would do is create a system-wide standard. 01:47:35 which I guess isn't necessary. 01:48:15 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 Anyway syscalls are unnecessary in an orthogonally-persisted system, but that's irrelevant. 01:48:54 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 are you saying this kind of system secures itself via explicit reference passing? 01:51:06 If that's an awkward way of saying object-capability, then yes. 01:51:09 or do you need some kind of intermediary? 01:51:41 ah, okay. 01:51:52 so you have to explicitly specify which operations can be performed. 01:51:57 Uhhh... 01:52:06 I'll let you figure this one out yourself. 01:52:11 for the thing youre passing the reference to. 01:52:48 Vorpal: Oh gross, the parts of Nix that aren't in C++ are in Perl. 01:53:00 ewwww 01:53:03 it should be all perl. 01:53:09 C++? really? 01:53:22 die "who ARE you? go away" unless defined $userName; 01:53:26 Rude. 01:53:57 guests who come unaccounced are rude. 01:54:00 they must die. 01:54:12 -!- centrinia has quit (Quit: Leaving). 01:54:26 More MVC? 01:54:46 no;;; 01:54:49 Actually it's better than Perl: They're written in... autoconf perl? 01:54:52 https://nixos.org/repos/nix/nix/trunk/scripts/nix-channel.in 01:55:19 "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 Heyyy, this manual told me Nix doesn't care about the actual versions. 01:55:31 I was LIED to. 02:04:56 Hmm what are some neat things I can do with the free SMS gateway my carrier provides? 02:05:53 Make it really easy to compromise my system if my phone ever gets stolen? :P 02:27:32 jesus, I have... 30 tabs of Django documentation open. 02:28:14 28 actually. 02:28:31 a perfect number. 02:28:46 good to know. 02:30:05 this is good practice though. 02:30:12 there's a lot of Django jobs out there. 02:30:27 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 I want elastic tabstops implemented in more editors so I can quit using fixed-width typefaces. :( 02:41:57 Also better Unicode syntax support in programming languages. 02:42:33 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 Targets (16): lib32-glibc-2.14.1-1 lib32-libpciaccess-0.12.1-2 02:43:56 lib32-libdrm-2.4.26-1 lib32-libxdmcp-1.1.0-1 02:43:56 lib32-libxau-1.0.6-2 lib32-libxcb-1.7-2 lib32-libx11-1.4.4-1 02:43:56 lib32-libxext-1.2.0-1 lib32-libxxf86vm-1.1.1-1 02:43:56 lib32-libxfixes-4.0.5-3 lib32-libxdamage-1.1.3-3 02:43:57 lib32-expat-2.0.1-7 lib32-libglapi-7.11-4 lib32-libgl-7.11-4 02:43:59 lib32-libxrender-0.9.6-4 lib32-sdl-1.2.14-8 02:44:01 ugh 02:44:39 I want a programming language I can program with my brain. 02:44:51 direct brain-to-program interface. 02:45:46 none of this foolish character-based crap. 02:46:53 libliblib 02:47:58 is that lib32-libliblib or lib64-libliblib? 02:48:02 you could program it directly from your brain with sex thoughts. hm, what would be a good name ... 02:48:05 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 evincar: given the limitations of my keyboard, no. 02:48:37 but I am bothered by the limitations of my keyboard. 02:48:57 On Linux I use a compose key, and extend my compose map liberally, but it's not really enough. 02:49:26 We should be able to beautifully typeset our source code like mathematics and prose. 02:49:51 And quit designing languages that are so backward-compatible they can be typed on a typewriter from 1960. 02:50:11 just wait until time-travel 02:50:25 then we have to worry about forward-compatability 02:50:39 they'll never be able to solve that 02:50:49 If we have time travel, I think we'll cope (have be will copen?) somehow. 02:51:21 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 Har. 02:52:00 what will has did "have be will copen" mean? 02:52:21 Seriously, these ASCII approximations don't bother anyone else? 02:52:33 <-- nah 02:52:44 evincar: What bothers me is that I have a mere 104 keys. 02:52:59 I *demand* a Japanese typewriter. 02:52:59 :P 02:53:27 (aka "movable type") 02:53:47 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 Well, several people use spoken languages that need editor support. 02:54:29 And I doubt anyone's going to be writing programs with formatting markup anytime soon. 02:54:34 I do not type "例えば", I type "tatoeba". 02:55:19 oh my god I'm terrible at web programming. 02:55:22 True. I type in Chinese (and less frequently Japanese) quite often, and I always thought it worked quite well. 02:55:29 Especially if you're using a hiragana keyboard. 02:55:46 I dislike hiragana keyboard layouts rather strongly. 02:55:58 But these things have demand. People actually speak Japanese, etc. 02:56:19 Not that QWERTY is best or anything, but: seriously, kana would be *really* well-suited to a chording keyboard. 02:56:41 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 I think the only way you could get people to change is to alter all source files passed to the implementation. 02:57:30 Quietly but seamlessly replacing ASCII characters with their Unicode equivalents. 02:57:55 That is, ASCII di- and trigraph approximations with the genuine article. 02:59:30 I'm imagining typing Japanese with just 16-odd keys. *drool* 03:00:08 With most of the things being 2-key chords, too. :) 03:01:16 And Chinese with...initials+finals+tones. I don't recall offhand how many initials and finals there are. 03:01:27 But it'd be a lot more convenient than Pinyin input. 03:02:03 Although there are abbreviations for common phrases in existing input methods, such as dbq for duibuqi. 03:04:02 Speaking of Unicode and CJK ideographs, fuck Unicode. 03:04:10 It's a shame that Pinyin is prefered over Pinyin. 03:04:29 Erm. 03:05:06 There should be combining radicals, not a code point for every damn ideograph. 03:05:43 -!- pikhq has joined. 03:05:58 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 s/Pinyin./bopomofo./ 03:06:38 Bopomofo isn't exactly intuitive for non-native Chinese speakers. 03:06:41 Bopomofo is just a significantly better orthography for Mandarin. 03:06:53 Hell, I don't know that it's intuitive for native Chinese speakers either. :P 03:06:56 Neither is Pinyin. 03:07:30 Pinyin puts native speakers at a slight disadvantage, I guess? 03:07:42 Because they have to know the Latin alphabet (kinda). 03:07:50 Um, it's really not intuitive for non-native speakers. 03:08:18 What, Pinyin? No, but it uses the Latin alphabet. 03:08:25 It uses Latin glyphs, but uses rather unique phoneme values for them. 03:08:51 Right, it's...mnemonic, I guess? 03:09:13 -!- pikhq_ has quit (Ping timeout: 256 seconds). 03:09:41 Apart from q, c, and x. 03:09:58 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 What do you mean? 03:11:27 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 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 This is a bit of a circular argument, but bopomofo is really only used in Taiwan anymore. 03:13:27 Well aware. 03:17:11 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 I wonder if we'll ever see the end of hanzi. 03:18:01 Or more likely their mutation into something similar and simpler. 03:18:57 Korea successfully got rid of hanja in all but official documents, but China seems awfully attached. 03:19:13 Japanese has no hope, with a syllable structure like that. 03:22:50 Anyway, back to programming, I'd like to see a language with modern typographical sensibilities. 03:23:13 Or, hell, a language with typographical sensibilities from hundreds of years ago. 03:23:25 We've regressed. 03:25:05 elliott: Django kind of has a good idea going with these generic views. 03:25:10 only problem: they don't compose in any way 03:27:57 evincar: Personally, I'm kinda amazed Korea managed to actually get rid of hanja. 03:28:20 What with the absurd number of potentially-ambiguous loans from China that are probably utter hell when reading. 03:28:35 Ditto. But I guess it doesn't matter as much in practice. 03:28:54 And Japanese, well. They're slowly *increasing* the number of kanji in use, thanks to IMEs. :) 03:28:55 Or people structure their sentences in such a way that they're not ambiguous. 03:29:12 Buh. 03:29:20 I wonder how long it'll be before 之 is back in common use. 03:29:54 It's used in Chinese in a few situations, mostly formal. 03:30:02 But some not. 03:30:22 So I dunno. Perhaps. 03:30:26 It's heavily archaic in Japanese. I think it's only in "common" use in names any more. 03:30:41 Though, of course, the word itself is about as common as "the" in English. 03:33:48 Oh, wait, in Japanese it's kore? In Chinese it's zhi = de = Japanese particle no. 03:34:02 In Japanese it's Japanese particle no. 03:34:18 Oh, sure enough, it can also be read 'kore'. 03:34:23 -!- Nisstyre has quit (Ping timeout: 252 seconds). 03:34:29 Oh. Just looked it up on Google Translate to check. :P 03:34:31 此れ is the more "typical" kanji for that, though. 03:34:51 Though anyone actually *using* that is probably more of a pedant than I. 03:34:59 Yep. 03:35:06 Never seen that... 03:36:54 Well, I've seen it in Chinese, actually. 03:37:06 But I'm sure I see a lot of hanzi that aren't kanji. :P 03:37:12 Or aren't common as kanji. 03:37:43 Well, yeah, at a minimum you see simplified glyphs. 03:38:37 Screw simplification, I wanna write 龍! :P 03:42:02 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 Still, if I go to Taiwan I'm probably fucked/ 03:42:31 *? 03:42:40 -!- Jafet has joined. 03:42:53 I find simplified trivial to read. Well, as trivial as someone who has never studied Mandarin at all can expect. :P 03:44:03 Bit harder to remember how to write, though. Mangles all the components too much. 03:50:50 ... 03:51:03 *Would* a language with semantic markup be a bad idea? 03:51:27 Nothing remotely resembling SGML... 03:51:40 But...something. 03:52:28 To make typesetting, formatting, and highlighting simple and consistent, without getting in the way. 03:52:38 Mumble mumble ALGOL 68 03:53:43 I guess a well-designed language has that anyway. 03:54:03 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 So nevermind. 03:56:28 if it's redundant then it's not one-to-one >:) 03:56:45 It could be non-bijective. 03:57:02 There is only one level of syntax but there are multiple levels of semantics 03:57:09 then it's _still_ not one-to-one. 03:57:31 or, it is not surjective, which is even less useful 03:58:15 Is mergesort semantically identical to heapsort? 03:58:18 (one-to-one = injective, where i learned terminology) 03:58:47 well if we're going to _that_ level, then we'll hit rice's theorem pretty fast :P 04:00:00 The faster evincar crashes into Rice's, the better 04:00:14 ...maybe. 04:01:10 is evincar crashing into Rice's? 04:01:25 can't say I didn't expect it 04:01:28 can say I expected it 04:01:48 Sigh. 04:02:52 one-to-one from syntacs to semantics tends to do that, i should think 04:02:57 Say "[a]" means "the type of lists with elements of type a". Semantically one-to-one, syntactically redundant. 04:02:58 *syntax 04:03:31 wat 04:03:53 The one term "[a]" corresponds to one concept. 04:04:06 that's not what one-to-one means. 04:04:08 It also includes unnecessary information. 04:04:45 -!- sebbu has quit (Ping timeout: 240 seconds). 04:04:48 oh hm 04:05:01 "one-to-one correspondence" can mean bijective 04:05:12 Blame the french. 04:05:17 "one-to-one function" means injective. 04:05:26 The faster evincar crashes into Rice's, the better 04:05:28 ricervincar 04:05:32 oops 04:05:34 r creeped in 04:05:35 ricevincar 04:05:50 noo i will be smooshed noo 04:06:33 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 what discussion are we having 04:06:50 And for the record I was talking about bijection. 04:06:52 anyway, " The one term "[a]" corresponds to one concept." says that your correspondence is a _function_. one-to-one is something else. 04:07:06 Okay. 04:07:12 I'll leave it at that. 04:07:21 How is "[a]" redundant 04:07:41 there are other ways of writing it 04:07:45 :k [] a 04:07:46 Not in scope: type variable `a' 04:07:47 Could be "List a", for instance. 04:07:52 er 04:08:04 :k [] Int 04:08:04 * 04:08:06 Fewer tokens, same meaning. 04:08:13 Hypothetically. 04:08:19 [] is one token 04:08:30 Settle down, highway star 04:08:47 :k [ ] Int 04:08:47 * 04:08:50 -!- myndzi\ has joined. 04:08:56 i don't think haskell's parser agrees :P 04:09:04 It's a magical token 04:09:13 hi elliott 04:09:19 hi monqy 04:09:20 ok it may be a nonterminal one 04:09:39 :k ( {-: :-} ,) 04:09:40 * -> * -> * 04:11:31 monqy: help django hell 04:11:41 too late 04:11:45 -!- myndzi has quit (Ping timeout: 245 seconds). 04:36:10 so is plof kind of like io but way better? 04:38:24 Plof is like * but more Gregor. 04:40:28 is * the name of something or a bash wildcard in a session where the wd is /the_universe/programming_languages ? 04:47:10 Wildcard. 04:51:33 -!- Jafet has quit (Quit: Leaving.). 04:51:46 elliott: will you be mad if I make a programming language called @ and (c) it. 04:52:19 on the bright side: there are plenty of alternative names. For example, you can name it ttoillex 04:52:35 He can also feast on your succulent brain-meats. 04:52:46 after yourself. or your reverse self in a reverse universe. 04:52:52 reversiverse. 04:55:16 pretty sure @ is just a placeholder for @'s eventual name 04:55:43 yep 04:55:45 but ttoillex is a good name 04:56:23 CakeProphet you should name your language ttoillex in honour of elliott 04:56:32 this is a god idea. 04:56:41 yes 04:56:57 god itier 04:57:04 @ is a good name though. 04:57:08 for things. 04:57:29 and you can market it as being all trendy and abstrackt 04:57:35 things that you don't want to google 04:57:58 google will fall soon after @ is born. 04:58:08 ok 04:58:09 either that or it will fix its stupid query language to be less stupid. 04:58:18 one can hope. 05:01:45 are there any programming languages that work like polyglots. 05:01:47 in other words. 05:02:01 the language has, say, two or three different interpreters executing the same source. 05:02:09 with different syntax/semantics for each. 05:02:25 * CakeProphet thinks this is a fine idea for an esolang. 05:02:28 wierd? whirl? i forget 05:03:51 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 That's my intuition, but I don't like the performance hit. 05:04:05 literate haskell 05:04:25 or any literate programming 05:04:41 evincar: itt: smalltalk #become: 05:05:11 what was itt again 05:05:25 you can do it with mark and sweep 05:05:40 sincr thst traverses hthe object graph 05:05:50 -!- CakeProphet has changed nick to ElliottDrone1. 05:05:54 oerjan: read the logs. 05:05:54 just force a gc and use it to rewrite referencred 05:05:58 references 05:06:41 -!- ElliottDrone1 has changed nick to CakeProphet. 05:06:44 Hmm. Rewriting references occasionally versus double-indirection always. Bluh. 05:06:59 um oh it's _not_ an obscure irc acronym? 05:07:00 I guess in the latter case it can be optimised away quite often. 05:07:17 gc doesnt take long 05:07:18 oerjan: no, it's associated with 4chan but may originate from prior to it. 05:07:30 and you're doing it anyway 05:07:35 i mean, "i think that" simply doesn't fit 05:07:47 doing it a bit earlier doesn't matter 05:08:08 `log itt 05:08:29 evincar: why not just replace the representation in-place 05:08:31 2011-10-19.txt:05:41:41: I'm a sucker for fancy things (that don't have shitty interfaces. see: most fancy looking desktop environments) 05:08:44 `log \<[i]tt\> 05:08:54 help wat 05:08:54 2010-10-15.txt:20:22:24: ITT: people don't allocate full bandwidth to torrents 05:09:05 elliott: That requires there to be enough storage for the new representation, which I can't necessarily guarantee. 05:09:10 oerjan: it means "in this thread" 05:09:16 bah 05:09:28 evincar: use a copying gc 05:09:29 I'm thinking about automatic promotion from machine integers to bigints when necessary, as one example. 05:09:43 allocate enough space when you copy 05:09:44 You want the underlying type of the object to change, but the apparent type to remain the same. 05:09:50 uh 05:10:00 maxhine ints should be tagged pointers 05:10:04 Like, the user has an opaque type "integer". 05:10:07 not allocated objects. 05:10:22 evincar: just use perl 05:10:25 all problems will be solved. 05:10:29 except for performance problems. 05:10:40 Those are the problems I'd like to solve. :( 05:11:14 then wait for Perl 6. maybe it fixes that stuff! 05:12:06 evincar: what problems? 05:12:52 monqy: I was using a bad example, but basically just using fast types when possible and non-fast types when necessary. 05:13:21 just allocate the full size up-front 05:13:34 ram is much cheaper than cpu 05:13:36 Memory is cheap, I guess. 05:13:38 Yeah. 05:14:10 or allocate one ptr extra on the fast repr 05:14:30 when it's non-null, it's a ptr to the new bigger repr 05:14:50 evincar: yes use big ints always. 05:14:58 overhead: one branch when fast, one branch + deref when slow 05:15:05 CakeProphet: not what i said 05:15:06 That's prolly what I'll end up doing. 05:15:16 What elliott did say. 05:16:05 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 And choosing the largest one might not always be the best idea. 05:17:03 (Term "shakeins" borrowed from http://tal.forum2.org/static/cv/Shakeins.pdf linked from an article about become: in smalltalk.) 05:17:36 Convenient that it showed up, really. 05:19:24 not a problem. shakeins just add flavor. 05:21:30 elliott: also neither wierd nor whirl seem to match that description. 05:22:44 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 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 *between rectangular and polar 05:24:19 does not change its size 05:25:14 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 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 not vastly less efficient 05:30:05 e.g. cons 05:30:17 two totally different structures 05:30:52 differing strictness, too. 05:31:54 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 evincar has never used Haskell. 05:32:43 if you think unbounded length is the only thing that strictness changes then 05:32:44 L 05:32:45 O 05:32:45 L 05:33:36 consider a 4 TB string. now consider strict vs. non-strict 05:34:06 have i mentioned cons yet 05:34:14 You'd use a still different representation for that. Buffered in chunks, perhaps. 05:34:18 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 Like a rope. 05:34:41 you cannot substitute two structures that are completely different 05:34:48 it is stupid and misguided. 05:34:58 Ugh, that's not what I'm suggesting. 05:35:13 programs must be written for their structures or they will be inefficient 05:35:18 full stop 05:35:34 I'm just saying it may be possible to substitute structures as an optimisation. 05:35:58 And isn't generic programming sort of a point against you, full stop? 05:36:21 lemme know when you get an example that doesn't change semantics 05:36:32 and no it's not. 05:36:34 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 what a parenthical 05:37:05 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 i'm done. 05:38:39 Apparently. 05:40:22 HEY GUYSCZECH I TOUT I M ON TH WEB: http://127.0.0.1:8000/ 05:41:49 i WILL soon b f4moose 05:42:04 .ljh< 05:42:42 your parlance has grown quite obscure, sir ttoille. 05:42:54 .,lo987654esxcvbnm, 05:43:26 nice path. 05:43:50 I daresay 05:43:52 a circuit 05:45:24 uuuugh 05:45:38 I wonder how long I can procrastinate writing a Django template. 05:45:50 * CakeProphet writes more Python instead. 05:59:50 wow Django's web docs are really shitty. 06:03:37 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 "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 huh 06:17:26 wonder how that interacts with setuid and friends... 06:23:55 i suppose it nixes them 06:24:10 oerjan: har har 06:26:27 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 elliott: hmmm? 06:42:45 where? 06:42:47 citation needed. 06:43:21 -!- oklopol has quit (Ping timeout: 258 seconds). 06:43:38 $_ = s/^/[/r =~ s/$/]/r 06:43:49 (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 "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 Right. 07:03:12 Morning 07:03:43 Note to self: Ask the Nix people how they handle gcc not being deterministic. 07:04:04 aaaah! 07:04:11 They changed Google Reader! 07:04:32 Also, ask them why they rebuild packages depending on dynamic libraries even when it's unnecessary. 07:04:32 elliott: help I'm trying to do something incredibly simple and I'm getting bogged down in object-oriented cruft. 07:04:48 CakeProphet: Python mind virus. And with that... 07:04:50 -!- elliott has quit (Quit: Leaving). 07:05:13 but I don't have that mind virus! 07:09:35 I think he meant to get it 07:09:48 That is, for you to get it 07:09:49 yes I know. 07:09:58 I'm saying I can't get it! I'm already immune 07:10:08 Oh dear 07:10:08 I had it and then got cured, years ago. 07:10:16 Try a different strain 07:10:23 IronPython 07:11:04 perhaps if I think of the Python paradigm as "memorize a bunch of classes, methods, and huge keyword argument lists" 07:11:59 @method_decorator(login_required) 07:11:59 def dispatch(self, *args, **kwargs): 07:12:01 return super(ProtectedView, self).dispatch(*args, **kwargs) 07:12:02 wow.... 07:12:27 that is so much boilerplate, to apply that login_required decorator bit to every instance of a class 07:12:30 THREE WHOLE LINES 07:12:35 with *args **kwargs and super nonsense. 07:13:00 also TWO IMPORTS 07:43:23 -!- Ngevd has quit (Quit: Goodbye). 07:45:40 good python 07:45:47 friend python 07:46:38 Deadly python. 07:49:21 ugh 07:49:22 bad python. 07:49:33 actually 07:49:39 bad incomplete Django documentation 07:49:57 a huge crufty web app framework should have utterly complete docs. 07:50:52 naturally 07:58:59 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 fizzie: the book doesn't document this new class-based generic view stuff I'm attempting to use. 08:36:14 perhaps.... I should use the old stuff? 08:36:39 like, I'm literally browsing source code to figure this shit out. 09:07:27 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 ugh 09:07:54 #django was no help at all. 09:08:08 the opposite of help in fact. 09:08:13 led me in the wrong direction 09:08:14 HOURS later 09:08:17 I finally figured out 09:08:21 how to do this incredibly simple thing. 09:13:10 nevermind... I didn't. 09:13:29 seriously this is stupid. 09:17:11 -!- oklopol has joined. 09:24:37 -!- DH____ has joined. 09:33:24 o 09:33:24 o 09:33:24 o 09:33:24 o 09:33:24 o 09:33:24 o 09:33:25 o 09:33:25 o 09:33:26 o 09:33:26 o 09:47:12 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 Actually it's better than Perl: They're written in... autoconf perl? <-- wow 10:37:57 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 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 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 ais523, so, someone ascended already. Quite impressive. 14:24:38 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:32:27 Vorpal: not that surprising 14:32:33 especially as there's a prize for first ascension 14:32:48 true 14:32:57 ais523_, still it is pretty quick. 14:33:12 ais523_, and it was with tourist 14:33:45 tourist is a pretty powerful role, actually 14:33:46 ais523_, I find tourist hard to play personally 14:33:49 hm 14:33:55 it has a bad start, but not as bad as some other roles 14:33:59 and gets very good very quickly 14:34:10 hm, perhaps 14:34:19 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 fungot: hi 14:45:15 CakeProphet: i have no fnord is that the sentence that came out as normal words 14:45:22 fungot: hi 14:45:22 CakeProphet: i dunno. it was sent in 2002. a very clean apartment. 14:45:27 fungot: hi 14:45:27 CakeProphet: i did one of it's kernels. ( especially with working menus thanks to carbon emacs) 14:45:28 ^style 14:45:28 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 fungot: hi 14:47:25 :( 14:47:33 -!- CakeProphet has changed nick to ElliottDrone1. 14:47:34 fungot: hi 14:47:35 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 why the spam 14:47:39 fungot: hi 14:47:40 CakeProphet: their children are normal. :p these are actually video lectures. 14:47:45 spam? no. 14:47:45 ^ignore 14:47:46 Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them. 14:48:15 spam is good for the heartsoul 14:48:56 -!- Jafet has quit (Quit: Leaving.). 14:49:05 ^help 14:49:06 ^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 14:49:11 ^cmds 14:49:14 -!- copumpkin has joined. 14:49:20 Oh for... 14:49:49 Phantom_Hoover, ? 14:50:04 What's the command to bring up fungot's ignore list? 14:50:04 Phantom_Hoover: there isn't a problem, you should return ( leaf-node 4) 14:50:15 Phantom_Hoover, I think only fizzie can edit that 14:50:15 fungot, return it to whom? 14:50:15 Phantom_Hoover: it didn't seem to be 14:50:27 Phantom_Hoover, to the sender 14:52:09 -!- derdon has joined. 14:52:43 fungot: there is no cow level. 14:52:44 CakeProphet: ihope is being a dj the primary source of their income?) 14:54:34 ^ignore 14:54:34 ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)! 14:54:37 But it only works for me. 15:02:02 fungot: produce for me a measure of great wit. 15:02:03 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 Hello! 17:22:10 -!- ais523 has joined. 17:23:32 I've been thinking of a new esolang 17:24:00 But I don't know what to do 17:24:07 which instruction did you change to a different symbol? 17:24:33 -!- Nisstyre has quit (Ping timeout: 240 seconds). 17:25:46 hehehh 17:26:06 `. 17:26:06 Just to confuse everyone. 17:26:12 wwwow 17:26:12 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: .: not found 17:26:18 It's called apostraphuck 17:28:06 ph 17:28:28 Dammit, oklopol 17:28:29 You woke up HackEgo 17:38:15 I could think of a data structure that hasn't been used in many esolangs 17:38:33 Decimal trees? 17:40:12 Tertiary trees? 17:40:21 Trees that actually start at the bottom and go up 17:40:27 You know, like trees that are outside 17:42:24 have any languages done photosynthesis/related yet 17:42:34 That's an idea... 17:42:39 Ngevd, erm, such a tree is the same as the normal type, but just drawn the other way around? 17:42:50 Vorpal, exactly. 17:42:55 BUT DIFFERENT 17:42:59 in which case it doesn't actually matter when you implement it, it is just a matter of terminology 17:43:21 instead of recursing down you might recurse up. Same thing 17:43:33 But it will also have roots! 17:43:36 Which will be hidden 17:43:51 okay that is somewhat different then 17:44:01 Ngevd, what use is the roots 17:44:24 Keeps the tree in place, and allows it to gather nutrients from the surrounding soil 17:44:34 Ngevd, in the programming language I meant 17:44:44 It's an esoteric programming language 17:44:49 well yes 17:45:04 So, they are for a very similar purpose to actual trees 17:45:07 Ngevd, but what actual effect on programming in it would the hidden roots have? 17:45:29 They're... used for system calls? 17:45:35 To make programming harder? 17:45:56 Those were two separate ideas, not meant to be taken together, by the way 17:46:03 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 If you don't make the roots heavy or big enough, the tree falls over and the program crashes 17:46:49 If they are too heavy and not big enough, arithmetic becomes harder to do 17:47:03 is the tree for the program itself or as a data structure for the program? 17:47:10 Both, in a way 17:47:22 okay 17:47:23 But mainly the data structure 17:47:35 Actually, I think I was meant to say the data structure 17:47:57 "was meant", by whom? 17:48:00 The program describes how nutrients should be moved around 17:48:10 Your question 17:48:20 hm. 17:48:21 The program will be plain-text 17:48:29 Intercal-like 17:48:48 well one could argue that Intercal is not exactly plain text. ;P 17:48:53 I'm thinking of calling the language Bonsai 17:48:59 It's more plaintext than Piet 17:49:11 Oh, wait, there was an emoticon 17:49:15 In which case, ha 17:49:58 Ngevd, well yes, also Intercal has stuff like using a literal backspace to write two letters in the same place 17:50:10 True, true 17:50:20 Okay, maybe more like... ORK 17:50:27 -!- elliott has joined. 17:50:32 Ngevd, wait, isn't that a bf clone? 17:50:44 That would be Ook! 17:50:58 ORK is the Object-Oriented one 17:50:59 elliott, btw I finally got around to looking at that constant wrapping code. I have one question though. 17:51:06 Yes? 17:51:09 frac n d 17:51:09 | n `rem` d == 0 = n `div` d 17:51:09 | otherwise = (n+d) `div` d 17:51:10 that bit 17:51:17 how does that behave wrt negative numbers 17:51:22 which direction does it round 17:51:37 rem is like C % 17:51:40 elliott, and div? 17:51:42 mod is like mathematics 17:51:50 Vorpal: divMod/quotRem 17:51:50 does it round to 0 or to -inf 17:51:54 latter is C 17:51:54 hm 17:51:58 actually 17:52:00 this is worrying 17:52:04 elliott, so the division rounds in a non-C way then 17:52:04 maybe it should be `quot` 17:52:07 ...but it works :) 17:52:14 mycology tests negative fungespace, right? 17:52:40 elliott, yes but it might only hit an even divisible case 17:52:41 who knows 17:52:42 Vorpal: eh, just check fungot works :p (I can't run fungot) 17:52:43 elliott: now it froze again before the program was tiled across 2d space, and i got 3 for that 17:52:48 that should test well if underload is tested 17:53:20 Once again, fungot replied appropriately 17:53:21 Ngevd: a command would switch your " current" one and you could find. 17:53:32 Vorpal: can you sprunge the code for me? I don't have it here :P 17:53:38 elliott, oh also, I gather it is not meant to be used unless you detected already you crossed outside the borders? 17:53:41 Okay, fizzie, I'm scared 17:53:46 elliott, sec 17:53:58 Vorpal: It replaces the loop you have. So yes. 17:54:22 elliott, http://sprunge.us/DLNE 17:54:52 Vorpal: hmm, that's actually not the latest code, Vector became its own type :-) 17:54:54 but right 17:55:09 elliott, okay, it is the one I had though 17:55:31 I'll check the rem/div thing using logs of the source 17:55:36 elliott, also "f"? 17:55:43 Yes, f 17:55:56 You are free to figure out what an appropriate name for it is 17:56:02 elliott, I was just about to ask you 17:56:05 But I'd just call it f 17:56:17 -!- myndzi has joined. 17:56:20 elliott, hell I'll go with static int f(int, int, int, int) 17:56:28 not very idiomatic, but whatever 17:56:34 Vorpal: static INLINE! 17:56:40 _FUNGE_FAST or whatever it is 17:57:04 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 elliott, hm, frac_dir might work 17:57:27 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 elliott, btw sometimes it seems to return coords outside the boundaries. 18:00:11 I blame your division 18:00:13 so it needs a step to get into the boundaries 18:00:22 elliott, no, your haskell version 18:00:33 Oh. Right, I think I advance after doing that, or something. 18:00:35 Dunno. 18:00:53 *Main> wrap (0,0) (10,10) (Ray (5,5) (2,0)) 18:00:53 Ray (-1,5) (2,0) 18:01:06 yeah I guess so 18:01:22 FFS, why does reddit make it so hard to go to a given page of a comment overview? 18:01:34 (same with 11,5 for the coord btw) 18:02:16 Yay, my pull request got merged. 18:02:27 elliott: happy happy joy 18:02:31 elliott, pull request for what? 18:02:38 https://github.com/pbrisbin/aurget/pull/4 18:03:11 oh, aurget 18:03:14 is that like yaourt? 18:04:02 Vorpal: Yes, except it just does AUR 18:04:09 And has far less annoying prompts/output 18:04:36 elliott, so if you need a dep from the main repo you have to do that by hand? 18:04:42 No, it calls out to pacman 18:04:51 well, then it doesn't just do AUR ;P 18:09:49 -!- augur has quit (Remote host closed the connection). 18:11:45 elliott: I need some meme advice: when using "accidentally" as a verb, is the third-person form "accidentally" or "accidentalies"? 18:11:53 I suppose the former would be more consistent with the etymology 18:12:01 but it looks really wrong 18:12:05 Singular or plural? 18:12:07 ais523: don't... don't do that 18:12:16 whatever you're doing :P 18:12:16 elliott: I'm not 18:12:18 but someone else did 18:12:31 and it threw me for a loop, and I'm trying to recover 18:12:40 Ngevd: singular, obviously; there's no problem with plural 18:12:46 anyway, I think "accidentally" 18:12:49 accidentally isn't really the verb 18:12:55 it's just the word before the invisible verb 18:13:19 I think accidentallies... 18:13:38 so do I 18:13:47 but someone used just "accidentally" in the context, and it /looks wrong/ 18:13:51 perhaps that's the point 18:15:03 Hmm 18:15:15 I like the Koan of Drescher and the Toaster 18:21:43 https://lists.fedoraproject.org/pipermail/devel/2011-October/158845.html 18:21:50 What; Lennart is doing something reasonable for once? 18:25:46 elliott, btw why did you error out on zero delta? 18:25:51 as far as I know it is perfectly valid 18:26:12 Vorpal: CCBI does, too; you can replace it with for(;;) sleep(9999999999) if you wish. 18:26:19 heheh 18:26:23 It's nice to have an option to report that, though. 18:26:43 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 Vorpal: But I hereby license my code under the "You're not allowed to put an explicit busyloop" license. :p 18:26:48 At least sleep it out! 18:26:51 Baaaaaah. 18:26:52 You are bad. 18:26:56 That is, like, so un-green. 18:27:06 It's... RED. 18:27:10 elliott, that would break compatibility with previous behaviour. 18:27:44 Anyway, I might make cfunge error on it. 18:28:29 elliott, anyway do you error if delta is zero and you are not wrapping? 18:28:33 if not, that is quite weirfd 18:28:35 weird* 18:28:45 Not yet :) 18:29:05 -!- hagb4rd has quit (Ping timeout: 248 seconds). 18:29:06 elliott, also iirc there is a fingerprint to poke the delta of other IPs 18:29:10 elliott, you would not support that 18:29:32 I'm just going to make it return to allow for easy implementation of such a fingerprint in the future 18:30:07 elliott, anyway how could you get outside of the borders with a zero delta 18:30:11 is that even possible? 18:30:20 Probably 18:30:21 sure, if there was a fingerprint to poke another thread 18:31:05 I think the Jargonwiki is what we are stopping ourselves from becoming 18:31:16 It has been overran with spam 18:31:44 No, wait, I just caught it at a bad time 18:31:49 No, wait 18:31:57 Oh dear god it's bad 18:32:53 elliott, btw why did you name that "m", what does it stand for 18:32:58 Ngevd: Oh no, it's based on the wrong jargon file. 18:33:25 Vorpal: Nothing. I don't think I named it m, actually. 18:33:37 elliott, well... "where m" 18:33:38 I wouldn't worry too much about the names. 18:33:40 it says that there 18:33:57 if it isn't named m then the code is lying :P 18:34:27 I didn't say it wasn't named m. 18:34:38 There are only a finite number of BF Joust programs 18:35:57 Ngevd: *fundamentally different BF Joust programs 18:36:10 True, I'll grant you 18:36:28 However, an interpreter can cut all programs off after 100000 with NO change to execution 18:36:41 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 Ngevd: untrue 18:37:09 (...)*0 18:37:31 100000 characters 18:37:37 Yes. 18:37:38 Untrue. 18:37:40 (...)*0 18:37:44 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 I see not what that is doin 18:37:48 g 18:37:53 Hmm 18:37:54 (blah blah blah)*0 is a comment. 18:37:56 In fact, so is "qhdfdjkfhsdkjf". 18:37:58 ais523, unless said spec is bugged. 18:37:59 Ooooh 18:38:01 So it is 18:38:03 Hmm 18:38:06 All those things take no cycles but many characters. 18:38:27 ais523, from now on however I will just skip handling that IP. 18:39:08 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 Better? 18:39:11 Vorpal: I believe that's wrong 18:39:15 Zero-delta is meant to lock up 18:39:23 elliott, why do you error out then? 18:39:31 Will it execute the command it's over repeatedly? 18:39:35 That would make sense 18:39:38 Vorpal: Because locking up sucks 18:39:42 But context-switching to other IPs is wrong 18:39:44 Ngevd: Expansion of brackets is untenable, nobody has enough RAM to do that for the programs we write nowadays 18:39:51 elliott, hm. 18:39:56 Ngevd: But what you've said approximately reduces to "after 100000 cycles"... :P 18:40:06 elliott, unless there are loops 18:40:07 elliott, where does it say that? Isn't this perhaps undefined behaviour? 18:40:15 Vorpal: Ask Deewiant 18:40:15 we need Deewiant and cpressy here 18:40:20 Deewiant, prod. 18:40:28 Is cpressy alive? 18:40:36 As opposed to dead? 18:40:39 And it's cpressey. 18:40:44 So it is 18:40:49 cpressy is non-existant 18:40:59 But as opposed to dead to us 18:41:02 Anyway, he's quite thoroughly alive: http://catseye.tc/news.html 18:41:09 He just doesn't come on IRC much any more. 18:41:13 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 Ooh, dinner 18:41:58 he could have died since he wrote that 18:42:01 -!- Ngevd has quit (Quit: noms). 18:43:26 Vorpal: By the way, the Voxatron Arch package now works perfectly on 64-bit. 18:43:31 s/Arch/AUR/ 18:43:41 nice 18:43:42 Be sure to install the optional dependency it mentions if you want sound support :) 18:44:18 I'm still impressed it looks as good as it does seeing as it's software-rendered. 18:44:33 elliott, it is software rendered!? 18:44:35 wow 18:44:41 Yep, with SDL. 18:44:45 elliott, well that explains why I only got about 110 FPS 18:44:51 "Only| 18:44:52 with the antialias on 18:44:54 s/|/"/ 18:45:07 and also why it ignored the vsync setting 18:45:07 Vorpal: There's a reason the sysreqs are "1 GHz CPU and any graphics card" :P 18:45:17 elliott, sysreqs? Who reads them 18:45:27 Vorpal: Also: The whole thing is done completely through the voxel array. 18:45:29 Even the menus. 18:45:33 elliott, I did notice that 18:45:42 Yeah, but it's not just an illusion, it's even like that in the code apparently. 18:45:52 So you could run it on a "voxel display" without changes :P 18:45:52 elliott, sadly I seemed unable to shoot the help text that the sign displayed 18:45:54 I did try 18:46:04 What are you doing this time? 18:46:06 elliott, I'm not even sure what a voxel display is 18:46:09 Phantom_Hoover: Voxatron, buy it already. 18:46:14 Vorpal: Nor am I :P 18:46:18 Phantom_Hoover, reading this: http://catseye.tc/projects/flobnar/doc/Flobnar.falderal 18:46:20 I don't remember where my moneys are. 18:46:38 Phantom_Hoover, on your VISA-card? 18:46:45 or paypal 18:47:04 Vorpal, I don't remember where that is either. 18:47:19 Phantom_Hoover: If you have it saved in PayPal you don't need to. 18:47:20 Phantom_Hoover, in your wallet ? 18:47:24 If you can remember your username and password. 18:47:30 This is of course SO SAFE. 18:47:45 elliott, that does worry me quite a bit about PayPal I have to say. 18:47:53 elliott, too much like hard work. 18:48:08 Phantom_Hoover: Seriously, you want to buy this one. 18:48:30 I was referring to PayPal. 18:48:38 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 lol, Subwayspam offers me a FREE 6-inch sub when I buy another one ... before 9AM. 18:49:21 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 Vorpal: It's also alpha :P 18:49:40 Think Minecraft alpha 1.0 or whatever the fuck. 18:49:48 Vorpal: The idea is to make it completely scriptable. 18:49:53 Oh, right, it was that VoxelNatural game now. 18:49:55 (From the dev's post about it) 18:49:57 elliott, this is what you get if the resolution in the y-direction is an odd number: https://imgur.com/cYF77 18:50:06 Nice 18:50:11 It's emulating a CRT for you 18:50:25 elliott, the lines are tied to the models, not to the position on the monitor 18:50:31 it seems 18:50:32 fizzie, wait, you were there for the VoxelNats? 18:50:42 Phantom_Hoover: Where? 18:51:01 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 Yes, I read the thread. 18:51:11 elliott, ah 18:51:41 elliott, then you saw the image too? Since I posted such a thread iirc 18:52:45 elliott, anyway I do find the font a bit hard to read in that game sometimes 18:53:13 I don't recall an image. 18:53:22 ah okay 18:54:21 Phantom_Hoover: Where? 18:54:24 -minecraft. 18:54:53 Phantom_Hoover: Yes, I think I was lurking at that time. 18:54:54 Anyway the gateway to my moneys is sealed to me. 18:55:54 elliott, what do you do on the second level 18:55:57 elliott, I don't get it 18:56:13 Vorpal: Haven't gotten that far yet, was busy dealing with audio troubles. 18:57:40 Did all of you buy that thing already, or is there some sort of a thing? 18:58:07 fizzie, I bought it for a cheap sum, will increase that if they add more games 18:59:11 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 fizzie, heard about it. Didn't work very well from what I remember 19:00:12 fizzie, from seeing an attempt at a video of it 19:00:32 fizzie, I did buy Cthulhu saves the world from the halloween sale though 19:00:49 quite a nice game done as a NES-style RPG with a lot of parody thrown in 19:00:56 I noticed it was very cheap. 19:01:00 fizzie: I bought it but Phantom_Hoover can't because he is a robot. 19:01:01 Skipped, though. 19:01:11 fizzie, I think it was worth the money 19:01:17 fizzie, totally hilarious 19:03:43 But two whole euros. It's, like, one more than one. 19:04:04 Okay, the second is not quite whole. 19:04:07 elliott, how dare you, Roombas are soulless automata. 19:05:52 fizzie, I got it for 1.33 € for both it and another game together iirc (for the steam game mentioned above) 19:06:07 used steam because it cost slightly more on gamers gate, and just one game there 19:06:33 I plan to pay 1p. 19:09:04 1p press start. 19:10:11 ais523: oh /no/ 19:10:19 elliott, what? 19:10:23 and why me? 19:10:40 ais523: I... have a use for the Secret Project 19:10:53 elliott, really? What is it? 19:10:55 err, are you sure? 19:11:00 you don't know what the Secret Project is for yet 19:11:01 ais523: I think so??? 19:11:22 let me know the use, anyway 19:11:28 ais523: The Secret Project gives perfectly deterministic (and thus repeatable) execution of Linux programs without being ridiculously slow, right? 19:12:05 can't you read the TSC from the user space? Or is that instruction kernel only? 19:12:16 elliott: yes, or will do when it's finished 19:12:25 ais523: That's exactly what I need. :( 19:12:33 note that this is a statement that's true about the Secret Project, rather than being its purpose 19:12:33 elliott, for what? 19:12:52 Vorpal: Package building. 19:12:57 ah right 19:13:00 Nix has problems with e.g. people depending on the system clock or uname. 19:13:07 Which obviously violates the purity it tries hard to create. 19:13:19 So the solution is... the Secret Project. 19:13:37 hm 19:13:37 Also does something use "dbpq" as a twirlie in place of a "-/|\"? 19:13:39 What I'm saying is, ais523: how long do I gotta wait for a public release :P 19:13:43 note that the Secret Project may well set them to arbitrary values 19:13:48 And yes, that's fine. 19:13:53 and, err, quite a while, as I have higher priorities and am at work 19:14:03 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 if it is set to 0 you can always introduce non-determinism 19:14:27 ais523: Butbutbut... 19:14:54 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 ais523: hmm, can Secret Project-ran programs write to a filesystem? 19:15:08 elliott, well then, it is usually enabled I guess 19:15:11 aha, I need to call that prctl 19:15:21 ais523, that might stop the program from working 19:15:24 elliott: yes, to a hidden filesystem 19:15:30 Vorpal: It is usually enabled, but I doubt many people use it. 19:15:33 ais523, how far has the secret project progressed btw? 19:15:36 the filesystem in question has a lifetime tied to that of a process 19:15:37 ais523: which can then be read after it's finished? 19:15:41 oh 19:15:48 Vorpal: Performance counters were discussed back then. 19:15:48 elliott: it could theoretically be tied to a file 19:15:50 it isn't, but it could be 19:15:50 ais523: what if I need to get the resulting FS? 19:15:59 so it wouldn't be too hard to modify to do that 19:16:01 fizzie, hm 19:16:23 -!- Ngevd has joined. 19:16:28 ais523: hmm, the worst part of needing the Secret Project is that you need the Secret Project 19:16:30 Hello! 19:16:31 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 ais523: just to check, you're not writing it for package building, right? 19:16:44 no 19:16:46 Vorpal: It obviously isn't even working for my purposes yet 19:16:56 elliott, well, it is a good start 19:16:56 Vorpal: I probably could, but it wouldn't work 19:16:59 Which secret project are we talking about? 19:17:00 in its current state 19:17:04 as opposed to starting from scratch 19:17:05 Ngevd: /the/ Secret Project 19:17:07 Vorpal: So I'll just do what Nix does (set the obvious stuff to dummy values and trust the package.) 19:17:09 the one that gets capital letters on its name 19:17:10 s/.)/)./ 19:17:28 Oh, that one 19:17:28 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 Vorpal: After all, it only needs to work right, not to be right. 19:17:36 elliott, and do it in a chroot with just what it needs according to the package description visible? 19:17:37 Vorpal: It's like foo = unsafePerformIO randomNumber. 19:17:46 Vorpal: It's bad, but it probably isn't going to cause actual problems. 19:17:53 It's just another broken package. 19:18:01 elliott, btw, valgrind must be installed in the --prefix given to it's ./configure 19:18:09 elliott, it won't run from anywhere else. 19:18:19 Vorpal: Tons of packages do that, that's why DESTDIR was invented; what's your point? 19:18:22 reason, hard coded paths. Why? Because it doesn't use libc 19:18:32 elliott, indeed. Just saying you can't relocate it. 19:18:40 Vorpal: Why would you want to? 19:18:53 elliott, well, the valgrind people thought it worth documenting this 19:19:11 ...Why are you telling me...? 19:19:22 Oh, two more games in that thing? How coincidental. 19:19:31 fizzie, oh? nice, will check them out 19:20:07 fizzie: It was inevitable. 19:20:18 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 Vorpal: Even dpkg and friends have to deal with that, if they don't use fakeroot. 19:20:44 ooh I heard nice things about "Blocks That matter" 19:20:45 Since they have to put the files in a subdirectory to package up. 19:20:50 supposed to be really screwy 19:21:11 Vorpal: But anyway, in a Nix-style system no relocation is done, ever. 19:21:15 and wtf, "the binding of isaac" I heard it was quite nasty. Like super-nasty 19:21:30 "nasty" 19:21:34 Looks like it's from one of the Super Meat Boy guys 19:21:44 never played that 19:21:46 what is it? 19:22:01 A ridiculously popular indie platformer thing. 19:22:08 It's good, if painful. 19:22:12 I see 19:22:15 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 hm 19:22:53 "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 Heh. 19:22:57 That's some plot. 19:23:08 Yay @ randomly-generated. 19:23:49 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 pikhq: (gcc) 19:24:02 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 I might define an XML-based game development language 19:24:14 Don't. 19:24:15 like the door shape and everything 19:25:03 Hmm, I wonder how much I could parallelise expression evaluation. 19:25:21 I gather Nix is quite a bit slower than apt and the like because packages are much more powerful. 19:25:32 Maybe I could compile them :-) 19:25:47 Or possibly just XML-incorporating 19:25:58 Why 19:25:59 XML is awful 19:26:17 -!- derrik has left. 19:26:29 Because I feel like it 19:26:36 elliott, for building and downloading and so on? Or during actual runtime? 19:26:44 Vorpal: ? At which part? 19:27:06 elliott, I mean potentially the lookup time for finding a given dependency could be different on NixOS 19:27:24 elliott, btw does it use RPATH magic or how is it done on NixOS? 19:27:24 Building is irrelevant, the context is binary packages 19:27:37 elliott, no lookup time during runtime 19:27:41 to find libssl.so 19:27:41 The point is that you have to load and run a fuckton of programs to calculate dependencies and the like 19:27:43 or whatever 19:27:47 Maybe I'll subsequently create a JSON version 19:27:49 Vorpal: What do you mean, how is what done? 19:28:16 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 how is that bit done 19:28:26 by hard coding the RPATH into foo? 19:28:28 When do you need to do that 19:28:35 elliott, when executing foo 19:28:39 unless you do static linking 19:28:40 Why 19:28:46 and I don't think nixos does 19:28:50 Foo links to /nix/store/89sdfusd89fu89sdfu9-libssl-3.9/lib/libssl.so 19:28:59 elliott, right, but how is that done on the ELF level 19:29:16 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 yes, which one 19:29:27 Perhaps the latter, since they have that patchelf thing. 19:29:30 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 hm 19:29:33 I don't know. It seems immaterial. 19:29:38 But the latter is easier to do w/ commercial binaries. 19:29:41 You just need to patch the RPATH. 19:29:42 Rather than having it look in a cross-compilation prefix. 19:29:48 Which is what their patchelf does. 19:30:07 pikhq: Right. That's actually irrelevant to me I think since I'd override that anyway. 19:30:09 Most of the technology seems to be there in SVG+SMIL+XSLT 19:30:12 pikhq: What're the non-main distinctions? :p 19:30:16 elliott, anyway what about building your own stuff in ~, how do you find the include files, lets say you do #include 19:30:25 I haven't tried that on nixos 19:30:44 Vorpal: ls ~/.nix-profile/usr/include, one presumes. 19:30:51 Probably /usr/include would work too. 19:31:05 hm 19:31:24 elliott: Shit sometimes breaks because gcc -m32 looks like you're building a native binary with some weird optimisation flag. 19:31:42 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 Especially with autoconf. 19:32:00 pikhq: Oh good. So my decision to avoid -m32 entirely was the correct one. 19:32:22 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 (where it won't automagically do the x86 stuff for, say, ld.) 19:33:19 If we consider XSLT+SVG+SMIL, we really just need some method of input 19:33:30 -!- tiffany has joined. 19:33:33 ais523: What's the Secret Project's startup time like? 19:33:43 i.e. how long does `secret echo hi` take 19:33:50 let me try it 19:34:05 pikhq: So yay. 19:34:28 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 It's actually pretty easy to do if you're not tied into the concept of "libraries go in /usr/lib/". 19:35:31 0.02user 0.01system 0:01.04elapsed 3PU (0avgtext+0avgdata 6960maxresident)k 19:35:31 Hey tiffany 19:35:32 0inputs+0outputs (0major+884minor)pagefaults 0swaps 19:35:36 elliott: seems to be around a second 19:35:53 ais523: that's not bad 19:35:53 also, /usr/bin/time has really different output from bash's time, it seems… 19:36:17 pikhq: Libraries do go in /usr/lib in my system (sort of). 19:36:31 oh good, it's stopped leaking filesystems 19:36:33 pikhq: There's definitely nothing like /usr/blah-linux-gnu/lib/. 19:36:42 I think a filesystem leak is possibly one of the silliest leaks possible 19:36:56 What the world really needs is a HTML version that uses a markup system other than SGML or XML 19:37:30 HTML5; done. 19:37:56 Based on SGML, that is, I think 19:38:05 -!- GreaseMonkey has joined. 19:38:06 Get better grammer, to do, I need 19:38:17 No. It uses a unique syntax. 19:38:31 HTML 4 was SGML-based, though nobody (and I mean nobody) actually implemented it that way. 19:39:15 In fact, I don't think there was a single reasonably complete HTML 4 implementation. 19:39:43 Hey GreaseMonkey 19:40:14 'lo 19:40:36 My favourite part of HTML5 is the part where it says "if someone asserted that cats were vegetables". 19:41:08 Really? 19:41:32 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 But quoted out-of-context like that it sounds delightfully nonsensical. 19:41:54 It's in the list of examples at http://dev.w3.org/html5/spec/Overview.html#the-em-element 19:42:18 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 fizzie: It's not really a "work-in-progress". 19:42:31 -!- augur has quit (Remote host closed the connection). 19:42:40 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 fizzie: From that, the W3C are working on the HTML5 spec to be published. 19:43:10 fizzie: But the publication is roughly irrelevant as far as everyone else is concerned. 19:44:06 elliott: It is relevant in the context of whether the W3C spec will or will not contain "cats were vegetables", though. 19:44:10 Compare the JSON-like {"head":{"title": "Hello!"},"body":[{"p": "Hello World!"}]} to the XML-like Hello!

Hello World!

19:44:18 fizzie: True. 19:44:33 Ngevd: A data language is not suited for markup purposes. 19:44:45 Something like sexprs do decently because they're lightweight enough. 19:44:47 It is PERFECTLY suited. 19:44:53 But JSON would get incredibly noisy very quickly. 19:44:58 Especially with string quoting. 19:45:13 Nobody wants to write ten pages of heavily-nested JSON. 19:45:21 It's a data interchange format, not anything for humans. 19:45:25 But JSON is the only data language other than XML I'm familiar with 19:45:58 ...What is sexprs? 19:46:40 S-expressions. 19:46:48 Okay 19:46:54 But they still have the same string-escaping problem. 19:50:06 I'm not all to familiar with S-expressions, I'll check them out... 19:53:10 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 S-expressions look interesting 20:00:38 Wow, rename(2) wasn't atomic on OS X until a few months ago 20:01:57 Wow, S-expressions are handy 20:02:23 ((5:title6:Hello!)(1:p12:Hello World!)) 20:02:48 That... 20:02:48 What? 20:02:54 That's not an s-expression. 20:03:01 Going by the RDF submission 20:03:05 What? 20:03:13 http://en.wikipedia.org/wiki/S-expression 20:03:22 http://people.csail.mit.edu/rivest/Sexp.txt 20:03:22 Got submitted to and rejected by the RDF people 20:03:27 Oh, that thing. 20:03:31 Wikipedia links to i 20:03:31 t 20:03:32 No, those aren't what anyone means by "s-expressions". 20:03:34 Oooh 20:03:36 Okay 20:03:50 (html (head (title "Hello!")) (body (p "Hello world!"))) is more what I'd expect. 20:04:38 Okay 20:04:55 Still very short 20:06:40 Hmm 20:06:56 Of course, sane people (most aren't) would write that as: Hello!

Hello World! 20:07:33 Yet another thing I need a psychiatrist for 20:09:03 Or (valid HTML 4): 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!

Hello World! 20:14:57 should validate fine 20:15:04 Yeah, that's perfect HTML5. 20:15:12 might give an error about encodings that won't occur with correctly-configured server 20:15:24 yep 20:15:25 validates fine 20:15:27 no errors 20:15:41 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 third one is complaining because i used direct input rather than giving a url 20:16:04 second one is an actual warning that wouldn't appear with a properly-configured server 20:17:44 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 heh 20:18:27 yeah btrfs has transactions 20:18:47 nilfs2 is pretty exciting, at least it does most of what's cool about btrfs 20:20:26 elliott: Not really transactions. 20:20:40 wikipedia said user-defined transactions but ok, that is a slightly weird wording 20:21:00 A btrfs "transaction" is saying "don't commit anything to disk until I let go". 20:21:06 Only one can occur at a time. 20:21:41 Gross. 20:22:11 Hmm, I'll have to be slightly careful about multiarch support in Kitten. 20:22:43 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 Shouldn't affect packages themselves, though. 20:22:56 -!- ais523\unfoog has quit. 20:23:34 HALLO 20:23:43 -!- ais523\unfoog has joined. 20:24:12 elliott: So, what filesystem layout are you intending to use, anyways? 20:24:12 Linux is Monolithic, HURD is Microlithic. 20:24:18 I have no idea what the difference is. 20:24:30 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 elliott: I'm finally home :P 20:25:15 He's been sleepwalking 20:25:20 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 As opposed to vice versa. 20:26:00 pikhq: Packages are installed Nix-style to /something/923874c23894uc98jf9sd8ff-pkgname/ and links + executable references point there too. 20:26:03 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 The actual user-exposed hierarchy being a sham, symlinks or unionfs (depends on Gregor :-P) 20:26:33 pikhq: x86: /something/sdfu34nfs8498hf89hf893y4h-glibc-99.4/lib/libc.so.6 20:26:45 pikhq: x86_64: /something/asdia0de3j898w7e-glibc-99.4/lib/libc.so.6 20:26:49 Making it a union makes it potentially per-process, which is sexitude. 20:27:00 So, nix-style linking. 20:27:01 Gregor: Yes, that's why I wanted to talk to you :) 20:27:17 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 I would potentially be willing to rewrite my cunionfs as a kernel module. 20:27:27 Well, then /usr/lib/ will either be pointless or strange. 20:27:43 pikhq: It'll be used for when you use "gcc" from the command-line. 20:28:07 -!- ais523 has joined. 20:28:27 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 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 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 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 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 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 Hypothetically speaking some things might look in their configured prefix for *other* programs. 20:32:03 ais523\unfoog: Yep, that's fine; it checks the configured prefix first, right? 20:32:08 I can't remember 20:32:11 but probably 20:32:17 Though, this is going to break in common usage anyways. 20:32:21 Basically, everything will work fine as long as everybody checks their configured prefix /before/ snooping around where argv[0] is. 20:32:27 Keyword before. 20:32:39 Anything that doesn't, welp, gotta patch it :P 20:32:46 But I have relative confidence that it'll work fine. 20:32:53 Programs that stupid probably can't handle a symlink argv[0] anyway. 20:34:12 -!- evincar has joined. 20:37:50 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 elliott: there you go 20:38:02 that's C-INTERCAL's algo for finding files it needs 20:38:08 "path they should be in" = configured prefix 20:38:14 ais523\unfoog: thanks 20:39:18 ais523\unfoog: I think C-INTERCAL should handle Kitten just fine, then 20:39:33 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 (>>=) 20:40:34 Somehow I managed to read Haskell as Befunge 20:40:37 elliott: that answer, while correct, is useless 20:40:45 ais523\unfoog: no, it's not 20:40:49 `addquote Somehow I managed to read Haskell as Befunge`addquote 20:40:52 705) Somehow I managed to read Haskell as Befunge`addquote 20:40:53 (>>=) :: Parser a -> (a -> Parser b) -> Parser b 20:41:01 run a parser computation, get its result 20:41:05 construct parser for rest appropriately 20:41:07 that's what monads /do/ 20:41:13 `delquote 705 20:41:15 ​*poof* 20:41:16 I was going to say to use p to subtly change the program 20:41:17 `addquote Somehow I managed to read Haskell as Befunge 20:41:19 705) Somehow I managed to read Haskell as Befunge 20:41:31 elliott: not an intentional lie, of course 20:41:33 `quote 20:41:34 `quote 20:41:35 213) Vorpal loves the sodomy. elliott, sure why not 20:41:36 `quote 20:41:37 `quote 20:41:37 8) TODO: sex life 20:41:39 44) I spent the last minute or so killing myself repeatedly 20:41:39 `quote 20:41:40 510) My memory passed rest in peace sgeos memory 20:41:42 295) anyway, no CSS editing for me right now, I fear I'd get sucked into a holy war [...] I also fear it might end up breaking one of the Graue Regulations which are rules that you get into serious trouble for breaking, that nobody knows what they are until someone breaks them 20:41:47 hmm 20:41:52 295 isn't very funny, too verbose 20:41:55 none of those are very funny 20:41:58 8 as well 20:42:07 I like 44 a lot 20:42:11 well, OK 20:42:14 it's probably the best there 20:42:21 8 or 295, what do you think? 20:42:40 295 could be split into two quotes 20:42:43 I'm biased, as 295 is all mine 20:42:53 but I'm not sure which way I'm biased 20:42:53 hmm 20:42:56 `delquote 295 20:42:57 it's just too long 20:42:58 ​*poof* 20:42:58 which makes it worse, because I can't counter for it 20:43:02 if it were two quotes, they'd probably be alright 20:43:27 That sound of silence is the sound of Gregor furiously working on the best unionfs the world has EVER SEEN. 20:43:31 `quote 20:43:31 `quote 20:43:32 `quote 20:43:32 `quote 20:43:33 `quote 20:43:35 129) alise: nobody is allowed to fnord me in soviet russia 20:43:38 486) Fuck clay its only purpose is ecoration 20:43:40 330) 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 (Last one. Promise I won't make it a habit.) 20:43:48 415) You have no idea how desperately I want to avoid being a GC guy :P 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 73) 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 Those are all pretty funny. :( 20:44:02 129 is good for a fungot quote 20:44:03 ais523\unfoog: mail me your link/ data.scm. 20:44:16 oklopol one is a classic, two Grgor ones are great 20:44:20 415 is better than 330, but they're both good 20:44:20 I guess Sgeo's isn't that funny 20:44:30 what is 486's purpose? 20:44:39 note that you don't have to delete one if they're all good 20:44:42 but I don't get 486 20:44:42 ais523\unfoog: I think it's mostly amusing because of the in front of it 20:44:57 I think the context was Minecraft, but imagining Sgeo ranting about clay being useless is vaguely amusing 20:45:00 But eh 20:45:02 `delquote 486 20:45:02 elliott: couldn't you apply that to everything Sgeo says? 20:45:04 ​*poof* 20:45:08 ais523\unfoog: Point 20:45:38 Gregor: Did I mention that updating the branches must be atomic? :P 20:45:47 How tricky would it be to rig HackEgo to pretend to add everything that Sgeo says? 20:46:00 HackEgo can only be made to trigger on `... 20:46:10 So, very tricky. 20:49:39 Ngevd: OTOH HackEgo has access to the logs. 20:49:41 `log Sgeo 20:49:52 2011-10-14.txt:06:38:16: ...Overlapping? 20:50:48 `addquote ...Overlapping? 20:50:50 704) ...Overlapping? 20:51:00 That is oddly funny to me 20:51:43 Ngevd: odd 20:51:55 -!- lambdabot has joined. 20:52:57 lambdabot awwww you're back friendship lambdabot. 20:53:36 lambdabot's a mouse now!? 20:54:07 Yes. 20:54:09 A rouse. 20:54:30 Whatever happened to friendship mouse? 20:54:57 Phantom_Hoover: Tell. 20:55:28 Ngevd, it was foraging in a wastebasket and I stuffed a blanket into the top. 20:55:42 So it would be comfortable 20:55:44 awwwwwwwwwwwwwwwwwwwww 20:55:45 I then released it outside and spent ten minutes keeping the cat away from it. 20:55:46 How thoughtful 20:56:02 And... not really, the blanket was just the first thing to hand. 20:56:04 Why can't I be a friendship mouse. 20:56:12 Ngevd, friendship mouse? wtf is that 20:56:19 Vorpal: Die. 20:56:20 elliott, because then you'd have to be in Scotland 20:56:30 elliott, because you are not a mouse that is why. 20:56:38 elliott, what? 20:56:44 !glogbot_help 20:56:54 `log friendship mouse 20:56:59 2011-11-01.txt:20:56:12: Ngevd, friendship mouse? wtf is that 20:57:32 Phantom_Hoover, how relevant 20:57:53 It was a mouse that made friends with Phantom_Hoover 20:57:57 Phantom_Hoover: Well maybe I am a mouse? 20:57:59 Just SAYING. 20:58:11 Ngevd, as in, a computer mouse? 20:58:14 Oh for christ's sake why does that rsync hate me. 20:58:23 No, as in a squeaky run around get eaten by cats mouse 20:58:30 Ngevd, ah 20:58:42 Ngevd, not live I presume? 20:58:48 Yes, obviously. 20:58:49 No, very live 20:58:57 You can't be friends with a dead mouse. 20:59:02 `log friendship grave 20:59:08 2011-08-10.txt:22:44:37: friendship grave 20:59:15 aren't they unhygienic? 20:59:21 Only in Glasgow 20:59:52 http://codu.org/logs/log/_esoteric/2011-08-10 20:59:55 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 Specifically, http://codu.org/logs/log/_esoteric/2011-08-10#141057PhantomHoover 21:00:33 Hey, I was the first person to respond 21:00:36 Look at that 21:00:40 Or maybe it was evil me. 21:00:46 Nah, he uses the nick "elliott" 21:00:57 Evil me is much more confident than good me 21:01:04 14:22:42: SHOW SOME MAMMALIAN SOLIDARITY 21:01:12 Enjoy being locked in your mammal of solidarity. 21:01:39 ...eeew. 21:02:11 Phantom_Hoover: Hey, is that log the last appearance of lament here? 21:02:22 15:14:28: haskell is awful 21:02:22 15:15:08: hoogle is even worse than haskell 21:02:26 His final words. 21:02:47 The mouse got him. 21:03:03 And the olympic games were in OCaml 21:10:30 17:07:40: aAHAHAHAHVFAFVAOEKRHF 21:10:31 17:07:41: I HAVE IT 21:10:31 17:07:44: AHAHHAHAHAHAHAHAHAHAHAHA 21:10:39 The happiest five seconds of my life. 21:13:41 I may create a cellular automaton 21:16:29 pikhq: Actually I might be able to omit /usr entirely... 21:17:14 If everything is done per-user. 21:17:26 Although I suppose mounting the union to /usr is nicer than ~/.blah. 21:17:34 Hang on, I already HAVE created a cellular automaton 21:17:48 Ngevd: Cool, your work is done. Have a beer. 21:18:07 I just need to right it down 21:18:23 * elliott wrongs it up. 21:18:53 pikhq, there? 21:18:55 Oh no! 21:19:08 Now I need to right it down even further 21:19:28 I think it may become my first esolang not to be Turing-Complete! 21:19:34 Unless Numberwang isn't Turing-Complete 21:19:48 I suspect Numberwang may be harder to program in than Malbolge 21:20:16 numberwang the game show? or is there an esolang with the name numberwang too? 21:20:33 Two esolangs, actually 21:20:40 One of which sucks 21:21:40 The other of which is a brainfuck derivaitve 21:23:59 * pikhq is here 21:24:41 elliott: I kinda dislike /usr/, though. Admittedly, how you're using it is *much* better than most uses. 21:24:47 Namely, it makes *any sense at all*. 21:25:32 pikhq: The alternative is making / a unionfs. 21:25:36 Which, just... no. 21:25:41 True. 21:25:47 I may create a cellular automaton 21:25:48 Oh god. 21:26:16 I remember when elliott tried to create a CA that had relativity despite knowing nothing about either. 21:26:33 IT WAS GREAT 21:26:38 Relativity in a CA? 21:26:43 That would be really strange. 21:26:46 Awesome, but strange. 21:26:57 Not least because the Lorentz transformation is continuous. 21:27:06 Didn't that Mark guy already do it. 21:27:07 So... hmm. 21:27:15 The Wolfram guy? 21:27:18 Phantom_Hoover linked me to a thesis. 21:27:27 And I'm pretty sure that not having global time references would fuck up CAs. 21:27:41 elliott, yeah, by setting v=c at all times so that it doesn't require non-integral transforms. 21:27:41 pikhq, ah hi! tup question 21:27:52 Phantom_Hoover: Heh. 21:27:56 Si? 21:27:58 Phantom_Hoover: What did that end up with? 21:28:04 pikhq: I wonder if I can make /etc be /usr/etc instead :-) 21:28:17 elliott, photons moving around at c in 1D. 21:28:30 Phantom_Hoover: Exciting./ 21:28:31 elliott: Only thing barring you ought to be moronically hard-coded paths. 21:28:35 s/\/// 21:28:36 It simulated diffusion, and was terrible. 21:28:41 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 pikhq: It's probbly not a good idea, anyway. 21:28:55 The magnetisation and entropy ones were good, though. 21:28:57 pikhq: BTW, Fedora are working on unifying /bin, /sbin, /usr/bin and /usr/sbin into /usr/bin. 21:29:00 Vorpal: Nothing easy *at present*. 21:29:09 pikhq, ah okay. So there are plans? 21:29:14 Vorpal: Variants. 21:29:19 elliott, hm? 21:29:20 It's the next planned big feature. 21:29:23 ah 21:29:23 elliott: So close, and yet so far. 21:29:24 nice 21:29:25 Also allows debug builds. 21:29:31 well yes 21:29:38 debug vs optimised would be nice indeed 21:29:42 pikhq: Shrug, I think it's decent enough, because /usr contains stuff that can be shared. 21:29:46 pikhq: Stuff like /etc and /var can't be. 21:29:52 So if you unify those, /usr gains actual semantics. 21:30:22 I still feel like it'd be better to lose /usr. But whatever. 21:30:39 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 not certain about that 21:31:01 Vorpal: /bin/ will probably be a symlink to /usr/bin 21:31:04 ah 21:31:05 that works 21:31:19 Vorpal: (a) They're doing symlinks, but I don't think there'd be as much breakage as you expect. 21:31:30 Vorpal: (b) ISTR testing it and it worked. 21:31:49 pikhq: It's also nice in that with that unification, /usr can be mounted read-only. 21:31:50 Vorpal: binfmt_misc goes before #!, IIRC. 21:31:58 pikhq: Whereas things like /var can't. 21:31:58 pikhq, ah good 21:32:10 So, it does have some semantics as a whole. *shrug* 21:32:16 Having both /bin and /usr/bin is criminally stupid, though. 21:32:16 elliott: Oh, so they're giving /usr actual semantics? 21:32:27 For a 6-state automaton using the Von Neumann neighbourhood, this is surprisingly tedious 21:32:28 "Things that can be shared and needn't be written to in normal operation"? 21:32:36 pikhq: Basically, "subset of distribution". 21:32:41 "Unix system resources" and all that. 21:32:50 Well, that's at least not devoid of a point. 21:32:51 elliott, it makes sense for boot stuff, when /usr is separate. I know that is not so popular these days 21:32:58 Vorpal: Nope 21:33:05 Vorpal: That doesn't work nowadays 21:33:08 elliott, well there is initramfs to mount /usr I guess 21:33:13 Because of udev, primarily 21:33:17 elliott, it still works on arch. barely. 21:33:29 Arch probably takes extra effort to make it work. 21:33:30 Vorpal: Except that the failures it causes are mostly silent 21:33:33 So you can't really know at all :-) 21:33:41 But yeah, we have initramfs so it's basically pointless nowadays. 21:33:49 elliott, it causes about 4 udev rules to fail, and no visible side effects from them 21:34:00 How reassuring! 21:34:03 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 that provides backward compat 21:34:12 Yes, obviously. 21:35:12 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 I mean, it mostly works without initramfs for me currently 21:35:43 so unless having an initramfs disable some sort of fallback code in the kernel, it should be trivial 21:35:45 elliott: Hmm. Is Fedora also knocking out /lib? 21:35:59 I would assume so 21:36:01 (modulo ld.so?) 21:36:03 pikhq: That isn't in the specific plan I read, but they might be. 21:36:12 that is going to break a lot 21:36:17 Vorpal: Not really. 21:36:21 Vorpal: With a symlink? 21:36:27 elliott, well okay, that solves it 21:36:28 Even without, it wouldn't break much if you kept ld.so. 21:36:33 Vorpal: The only hard-coded library path, in general, is ld.so. 21:36:34 Note that Nix doesn't even have /lib/ld.so. 21:36:38 That's why they have elfpatch :P 21:36:51 elliott, so a binary from a different system won't even run on nixos? 21:36:57 That's why they have elfpatch :P 21:36:59 hm 21:37:05 will have to check that out 21:37:13 It safely rewrites the dynamic linker and RPATH. 21:37:16 Of an ELF. 21:37:46 elliott iirc it is quite hard to add RPATH unless there already is one there 21:37:56 I'm NOT going to switch unless nwn and so on work flawlessly 21:38:09 Vorpal: It handles growing the ELF; and nobody cares what you switch to. 21:38:15 Also, chroots exist. 21:38:59 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 cfunge hasn't even seen a release for three years, to my knowledge. 21:39:41 elliott, nor has tup. It is fetch from vcs now 21:40:30 Meanwhile, I'm thinking about using a zipper for shiro's fungespace. 21:41:12 elliott, hm interesting 21:41:25 elliott, which package on nixos is elfpatch in 21:41:38 http://nixos.org/patchelf.html 21:41:46 But I would presume "patchelf". 21:41:54 ah you said elfpatch above 21:41:55 not patchelf 21:42:07 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 Ngevd: a brain 21:44:11 -!- wareya has left. 21:44:33 elliott, where can I get one? 21:44:54 Try having kids. 21:45:22 Asexual, remember 21:45:39 I'll have to adopt 21:46:16 Yes that was the: joke. 21:46:25 Where did PH go. 21:46:32 I presume bed 21:46:43 I've found a bit where I don't know what would happen... 21:47:19 -!- Phantom_Hoover has joined. 21:49:30 Okay, my solution makes the initial state "X" in a field of " " stable. 21:49:37 Ends up in a four-tick cycle 21:50:43 Okay, this cellular automaton is pretty lame 21:50:49 No spaceships, no guns 21:51:05 No steamboats 21:51:58 You can't know that. 21:53:06 No character makes more life than is needed to create it 21:53:39 There are cases where life can be destroyed 21:53:54 fair enough 21:54:06 So, I think I /can/ know that 21:54:19 The spaceship one is just a conjecture 21:54:21 I thought you just tried a few configurations and decided that :P 21:55:44 Is Conway's game of life Turing Complete when on a hyperbolic plane? 21:59:19 I'm going for "Probably" 22:08:58 -!- wareya has joined. 22:09:02 -!- wareya has left. 22:11:57 pikhq: Wait have I even told you about the best part of my Kitten design YOU ARE SO MISSING OUT 22:14:41 I think I may have a finite Morphy number 22:19:47 -!- wareya has joined. 22:19:58 -!- wareya has left. 22:20:00 I just did a game of Q20, trying for "Befunge" 22:20:03 It got "Email" 22:22:44 Got Chess set in 18 questions 22:23:36 Ngevd, Q20? 22:23:42 20q.net 22:24:54 ah 22:25:07 elliott: I don't think so. 22:25:26 pikhq: The package manager is the service manager. 22:25:31 Ah, right. 22:25:42 Wait did I tell you that. 22:25:46 I so don't remember telling you that. 22:25:48 Because it is the best idea. 22:25:53 You talked about it rather a lot. 22:25:57 DAMN 22:26:00 I gotta get something new 22:26:10 Did I mention I was considering making the package manager teh build system too??? 22:26:21 What's Kitten? 22:26:24 No, but it seems only natural if you're going to do things right. 22:26:39 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 Kitten would get on with friendship mouse, methinks 22:35:09 -!- Madoka-Kaname has changed nick to Lymia. 22:35:09 I think I may have a lower than average Morphy number 22:36:39 Lymia... sounds oddly familiar 22:37:30 Morphy number 22:37:48 Ngevd, Lymia was what she was called originally. 22:37:52 Oooh 22:38:03 A Morphy number is a bit like a Bacon number, but with Chess 22:38:07 Ah. 22:38:29 But it's to someone who lived in the 1800's 22:38:39 So people generally have bigger Morphy numbers 22:39:09 What they should do with these is, whenever 0 dies, everyone's number decreases by one. 22:39:19 That'd be more sustainable :p 22:39:48 I played an IM at chess once 22:39:52 I lost really badly, ofc 22:40:21 but it probably means I have a reasonable Morphy number 22:40:29 But my uncle taught someone how to play chess, who ended up being really good 22:40:31 as IMs and GMs have a tendency to all play each other 22:41:00 I think he ended up being Australia's second Grand Master or something 22:41:31 So, maybe in terms of chess, I have a low ais523 number 22:44:29 I wonder how high my cpressey number is 22:44:48 In terms of esolangs collaborated on 22:45:10 Infinity. 22:45:19 (Have you collaborated with anyone?) 22:45:32 Sort of not really zzo38 22:45:51 I don't think one can be said to collaborate with zzo. 22:46:30 There needs to be more esoteric collaborations 22:48:23 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 Hello centrinia 22:54:07 Hello Ngevd. 22:54:26 hi 22:54:28 `welcome 22:54:30 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found 22:54:36 there, that's a great welcome 22:54:38 `?welcome 22:54:40 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found 22:54:57 `? welcome 22:55:00 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 Thanks. :) 22:55:21 let's just do that to centrinia every time they come in 22:55:28 typos included? 22:55:30 yes! 22:55:34 it's becoming tradition 22:55:47 how many times has it happened? 22:55:49 more than 1? 22:56:01 well, i think i messed it up yesterday too 22:56:08 might be wrong 22:56:40 With a very loose definition of "collaborated", I have a Pressey number of 3, I think 22:57:35 I collaborated with rjan Johansen on Numberwang 22:57:54 rjan Johansen collaborated with Ben Olmstead on Malbolge Unshackled 22:58:03 FSVO collaboration 22:58:14 Ngevd: you poor man 22:58:35 Ben Olmstead collaborated with Chris Pressey on Wierd 22:58:44 Okay, only the last of those really counts 23:00:43 hmm, I don't really have many esolang collaborations, I'm more of a solo esolanger 23:00:49 Also, "FSVO"? 23:00:53 Oh yes 23:01:30 With a very loose definition of "collaborated" 23:02:40 oh i forgot to mention, my erds number is now 4 23:03:03 oklopol: wow! do you know the chain? 23:03:26 me, jarkko kari, christopher morre, leonard j schulman, erds 23:03:32 *moore 23:03:46 -!- pikhq_ has joined. 23:04:06 -!- pikhq has quit (Ping timeout: 258 seconds). 23:04:09 i actually solved some of moore's open problems at some point so maybe he'd be interested in collaborating 23:04:25 just because i'd have 3- 23:04:27 *. 23:05:20 oklopol: hope you get to 0 someday 23:05:49 (you have to exhume erdős' grave, then use alchemical voodoo to merge his spirit and corpse with yours) 23:06:08 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 "alchemical voodoo"? 23:06:11 (this has only been done three times in history, each time being swiftly followed by the murder of the mathematician involved) 23:06:52 Gregor: Ping :-P 23:06:56 they don't even mention my name anywhere in there, fuckers 23:07:26 (BY THE MATHS POLICE!!!!) 23:07:49 :( 23:08:50 I still think there should be more esolang collaborations 23:08:54 Who wants a Pressey number below 5? 23:09:12 i'm fine with an oklopol number of 0 23:10:49 I have an oklopol number of 1 23:11:05 which one are you counting 23:11:10 Clue (oklopol version) 23:11:16 ah yes 23:11:22 certainly 23:11:58 but even better, that means i have wolfram number 2 23:12:38 oklopol: no no no, you mean gamma 23:12:53 wolfram alpha is actually just wolfram himself chained to a computer 23:13:07 ais523\unfoog: wait, how was that a collaboration? 23:13:09 moving the page? :P 23:13:12 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 elliott: pm stuff 23:13:19 elliott: we discussed it in PM a lot 23:13:24 -!- Ngevd has quit (Ping timeout: 255 seconds). 23:13:24 ah 23:13:37 that must be why it sucked so much before i got to it OH BURRRRRRN 23:13:43 thank you all yr. welcome 23:13:45 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD 23:13:49 i'm here all week 23:14:48 Underload is going to be my best esolang ever, isn't it :( 23:15:07 ais523\unfoog: most likely. 23:15:12 ais523\unfoog: you will spend the rest of your life trying to surpass it. 23:15:29 on your deathbed people will offer comfort. no, no, feather "failed prototype version" was very good. 23:15:31 but they lie. 23:15:31 * oklopol resists making a feather joke 23:15:32 it's all lies. 23:15:34 :'( 23:15:40 elliott: ...? 23:16:00 oklopol: I think all the good feather jokes have been done 23:16:00 Gregor: hi Gregor 23:16:21 feather <<= /dev/null 23:16:23 * oklopol wonders if that's a feather joke 23:16:26 there, that got rid of it 23:16:32 Gregor: Re cunionfs: 23:16:32 or would, if I had feather working 23:16:32 20:28:27: 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 20:28:46: 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 20:29:29: 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 Yeah, I had considered ways of communicating changes at runtime. I was thinking about a sysfs-esque pseudofile. 23:17:49 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 Which is impossible :P 23:18:43 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 Then I'd just have to rewrite the branch list of their login shell or whatever, which could be done atomically. 23:19:09 Just wondering about ways to do it. 23:19:43 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 That's the UNIX way, after all. 23:20:51 Gregor: I thought the inheritance was done by just inheriting the env var at startup time in the current thing. 23:20:51 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 As long as I can replace the branches of a process tree atomically :P 23:21:17 Well, remember the pseudofile is a PSEUDO-file. It doesn't have file semantics. 23:21:25 Right. 23:21:52 Gregor: I know aufs does stuff in /sys/fs/aufs/, I think. 23:23:18 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 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 I would say you'd have to fork, then change the file, then exec. 23:27:43 -!- copumpkin has joined. 23:27:48 I'd like to keep it as simple as possible without making security impossible :P 23:28:14 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 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 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 oh, wow, it's a binary day 23:32:46 ais523\unfoog: 2 is not a binary digit and it won't be a binary for 7,989 years. 23:32:51 *a binary day 23:33:11 Gregor: Lazy people use 2-digit years. 23:33:12 Gregor: isn't the century/millennium normally omitted? 23:33:18 Gregor: Per-line breaks paths with \n :) 23:33:25 * elliott would just NUL-separate it. 23:33:25 01-11-11 :) 23:33:31 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 NUL-terminate, rather. 23:34:08 ais523\unfoog: weird definition of probably, also of happen 23:34:10 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 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 we will be using unary 23:34:29 I'd go with "and we can't even make guesses about 10,000" 23:34:32 Gregor: Yeah, it seems reasonable. 23:34:49 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 (As opposed to my only moderate paranoia about performance :P) 23:35:23 elliott: It just has to be atomic w.r.t. exec ... 23:35:44 Gregor: No. Consider mutating a parent process. 23:35:48 The child process has to inherit those changes. 23:39:31 Gregor: Or were you intending inheritance to only inherit from the values present at fork-time? 23:41:21 Uhhhhhhh, only at fork time. 23:41:34 Good lawd, I'm not trying to communicate some whole hideous tree here ... 23:41:46 I was going to have one global master, the per-process. 23:41:50 Erm 23:41:53 I was going to have one global master, then per-process. 23:42:48 Gregor: The problem is, like I said, that I need atomic updates... 23:43:30 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 I think your process-tree model is making things needlessly complicated. 23:44:14 Two ideas: 23:45:14 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 Hmm, what if I had the login shell's union list be /some/other/union 23:45:54 Had the rest inherit from that 23:45:56 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 And just modified /some/other/union's branch list 23:46:07 Oh, that's interesting. 23:46:12 3) What you just said :P 23:46:20 Gregor: (2) seems nicer to me than (1), though; it's inherently more flexible :P 23:46:30 Hmm 23:46:35 (3) seems nicer to me than (2), as it fits the model better. 23:46:51 Gregor: Actually, (4): Instead of a branch list, /every/ process just has a pointer to a branch list. 23:46:57 The branch list is an atomically-modifiable pseudofile. 23:47:06 That gives (3) without duplicating mounts all over the place. 23:47:21 But it doesn't give you inheritance if you also have changes. 23:47:23 And the pointer is inherited, etc. 23:47:30 Gregor: Yes it does: you just modify the branch list. 23:47:34 Everything pointing to it gets the updates. 23:47:54 I mean this: 23:48:27 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 Do you have a usecase for that? :P ...oh, I just thought of one: you say: 23:49:27 $ with 'gcc == 3.*' sh 23:49:30 [subsh]$ do-thing 23:49:33 done 23:49:39 [at this point, some other library is updated in the host system] 23:49:45 [subsh]$ do-another-thing 23:49:51 [...but do-another-thing is still using the old version! this sucks] 23:49:58 Gregor: So yeah, I agree that's desirable. 23:50:02 Yeah, I don't think it's such an unimaginable situation, and (2) and (3) both give you that. 23:50:10 Gregor: BUT, B also has to be able to /remove/. 23:50:19 Because the shell from which "with" is run has its own gcc in scope. 23:50:24 Yes, and I'm not sure how to handle that in any of these semantics. 23:50:34 So the subsh has to have "remove , add ", but what if you upgrade the outside gcc while it's still running? 23:50:53 Bleh ... remove by pattern match? *brain axplote* 23:51:38 Gregor: Hideous :P 23:51:50 Gregor: What I /really/ need is to have my package manager calculate the branch lists :P 23:52:09 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 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 The updates happen atomically. 23:52:44 That way, I can just recalculate the branches for all the constraints and the like, and update 'em atomically. 23:57:07 Gregor: (I'm aware this is kind of ugly :P) 23:57:22 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 That makes inheritance with changes possible, but massively difficult ... 23:59:22 Gregor: No? The whole point is that an external package manager is going to be calculating which directories to add. 23:59:32 Gregor: So if you do "with 'gcc == 3.*' ...", it'll store that that process wants gcc == 3.*. 23:59:46 Whenever the global package DB is updated, it just calculates packages + constraint --> branches again and writes 'em all out. 23:59:53 It already has to do that logic in the first place.