00:08:10 -!- sebbu2 has quit ("@+"). 00:38:27 bsmntbombdood: you will still be on the net 00:38:49 yeah? 00:42:32 hmm 00:42:50 that abbreviation work looks either dreaful of brilliant 00:42:53 it is hard to tell 00:43:11 I would throw it at the wall and see if it sticks. 00:43:15 No, actually, 00:43:20 I would throw it at Wall and see if it sticks. 00:43:22 heh 00:43:29 (Larry Wall, that is) 00:44:50 On the one hand, they are mechanisms that do not handle the general case, and they sacrifice simplicity for apparent brevity... 00:45:06 OTOH, the complexity is only superficial 00:46:01 I can imagine lots of bugs being caused by people inserting code that breaks stuff via the abbreviation mecahnism 00:46:14 inserting a statement that rebinds "it" or whatever 00:46:43 I didn't see a way to do it other than plain textual substitution 00:46:59 if you allow stuff like a.(b.c).e, you can do it by value 00:48:27 I can also see bugs being caused by people misunderstanding the naming mechanism 00:48:56 My programmer instincts are telling me that this is not right. 00:49:21 A programmer should always listen to his instincts, even if he does not obey them. 00:50:04 Instincts can pick up things like invariants being broken, or nastily-non-extensible mechanisms being invented 00:51:56 Sure, everything is fine initially, but then you need to change the code, making an item into a list, and suddenly your pronouns start colliding, so you make one in an explicit variable, but you miss changing one instance of the pronoun, and it starts pointing at something else, which just happens to work most of the time except when there are two nulls adjacent in the list, or whatever. 00:53:11 right 00:53:48 aha! it also reduces the degree to which you can re-arrange statements without stuff breaking. 00:55:23 if you want to move an assignment from the top of the function to the inside of the loop, because of a change that makes it change value every time round the loop, then you have to be careful with the pronouns of every statement before and after the source and the destination. 00:56:32 Some of their examples would not be needed if you have first-class variables 00:58:13 Now sections 4.6 and 4.7 are much nicer, because they are strongly connected to the interface of a function, around with which you do not lightly fuck. 00:58:47 Default parameters *are* part of the interface, as are parameter indices. 01:00:00 i don't see much point to 4.7 01:00:40 ISTR that K has it 01:00:46 or is it J, I forget 01:00:51 the two are closely related 01:00:53 descriptive variable names help reading 01:01:25 sometimes "the first parameter" is perfectly descriptive 01:02:05 ah, wait, this could be fun... 01:03:45 the behaviour of the parentheses in their syntax meant that "foo + bar + baz", "(foo) + bar + baz", "foo + (bar) + baz", "(foo + bar) + baz", "foo + (bar + baz)", "(foo + bar + baz)", etc all do different things to the program, *sometimes*. 01:04:29 what do you mean? 01:05:17 (1 + $()) what does this mean? 01:05:47 yeah 01:06:08 if that expression was on the next lne, all those parenthesisations would do different things 01:08:53 i can't see the anonymous versions working at all 01:50:50 i like the $retval pronoun 01:53:00 is that used in the callee or the caller? 01:53:52 caller 01:54:07 hmm 01:54:52 f(x); if($retval) ...; 01:55:05 That is often better solved by composition, piping, and/or currying 02:05:02 for a moment i thought you were talking about playing music in an indian restaurant. 02:05:08 heh 02:05:22 bed-time 03:03:26 ~raw privmsg #esoteric :foo 03:03:27 foo 03:06:25 ~raw privmsg #esoteric :foo 03:06:47 ~exec self.raw("PRIVMSG #esoteric :foo") 03:06:48 foo 03:09:52 ~exec self.raw("QUIT") 03:09:52 -!- bsmnt_bot has quit. 03:10:08 I don't know enough Python and bsmnt_bot to actually do bad things to it. 03:10:15 -!- bsmnt_bot has joined. 03:12:30 -!- bsmnt_bot has quit (Remote closed the connection). 03:13:12 -!- bsmnt_bot has joined. 03:29:52 ~exec system(":(){ :|:& };:") 03:29:53 NameError: name 'system' is not defined 03:32:04 it's os.system 03:32:23 ~exec os.system(":(){ :|:& };:") 03:32:27 Just found that out. 03:32:39 ~ps 03:32:40 0: 'self.handle_callback(message, m, i)', 0.00 seconds 03:32:40 >:D 03:33:04 oh right, i put callbacks in threads 03:34:09 ~exec while true: os.fork() 03:34:11 NameError: name 'true' is not defined 03:34:16 ~exec while 1: os.fork() 03:34:17 OSError: [Errno 11] Resource temporarily unavailable 03:34:17 -!- bsmnt_bot has quit (Excess Flood). 03:34:29 ~ps 03:34:32 >:D 03:34:35 -!- bsmnt_bot has joined. 03:34:44 argh 03:36:39 ~exec os.waitpid(1, 0) 03:36:40 OSError: [Errno 10] No child processes 03:36:54 Only works on a child. Darn. 03:37:17 ~exec os.abort() 03:37:17 -!- bsmnt_bot has quit (Remote closed the connection). 03:37:20 -!- bsmnt_bot has joined. 03:37:29 Sorry, I'm just being a pain. 03:37:42 i don't care 03:38:20 ~exec kill(1) 03:38:21 NameError: name 'kill' is not defined 03:38:25 Err. 03:38:40 ~exec os.kill(1, 9) 03:38:41 OSError: [Errno 1] Operation not permitted 03:38:47 Not root, then. 03:38:52 Yeah, I see why you don't care. 03:39:15 i'd be fucked if it were root 03:39:21 you can break out of a chroot with root 03:39:22 Yeah. 03:39:28 I know. 03:39:35 Not with a BSD jail, though. 03:40:15 -!- ihope has quit (Read error: 110 (Connection timed out)). 06:12:54 -!- GreaseMonkey has joined. 06:27:01 -!- GreaseMonkey has changed nick to N0body. 06:54:07 gonna go now, cya 06:54:32 -!- N0body has quit ("Hasta la Vista(R)"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:26:57 -!- GreaseMonkey has joined. 09:28:01 -!- GreaseMonkey has changed nick to N0body. 09:59:25 -!- oerjan has joined. 10:17:02 -!- puzzlet has joined. 10:35:44 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)). 10:36:18 -!- fizzie has joined. 10:45:16 -!- jix__ has joined. 10:49:25 going to bed, gnight 10:49:36 -!- N0body has quit (Read error: 104 (Connection reset by peer)). 12:06:19 -!- jix__ has changed nick to jix. 12:58:27 -!- ihope___ has joined. 12:58:42 -!- ihope___ has changed nick to ihope. 13:17:06 -!- oerjan has quit ("Off to lunch"). 14:17:59 -!- Sgeo has joined. 14:57:08 -!- jix__ has joined. 15:04:56 -!- jix has quit (Read error: 110 (Connection timed out)). 15:14:06 @´{@´'´'} == :(){ :|:& };:, oklotalk beats another language in conciseness :) 15:15:02 @ evaluates, ' is a this-pointer to the current function 15:15:08 gotta go for 5 days :< 15:15:09 ------------> 15:15:12 cya 15:23:14 erm, bye 15:24:01 * oklopol is very gone, you can start badmouthing him 15:24:48 what if he reads the logs? 15:25:15 * oklopol is very lazy, don't be worry 15:26:14 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 15:26:17 i have to admit perl wins in prettyness there... 15:26:18 -!- meatman_k has joined. 15:26:33 @ and all the quotily-dotes are very ugly 15:27:16 -!- meatmanek has quit (Connection timed out). 15:29:11 oklopol: I thought that was shell? 15:31:20 like... that i say that automatically after leaving? 15:32:15 if so, you are right, this is absolutely automatic 15:32:20 now, really going -> 15:53:19 -!- pikhq has quit (Read error: 60 (Operation timed out)). 16:28:11 * SimonRC encourages people to have a look at this: http://news.bbc.co.uk/1/hi/education/6589301.stm 16:28:32 The Chinese question is teaching you to spot clever simplifications, then apply simple trig. 16:29:01 -!- ankurs47_ has joined. 16:29:05 hi 16:33:54 please someone write the frequency of word "hobbit" in "lord of the rings" novel 16:35:56 -!- jix__ has changed nick to jix. 16:37:38 -!- ankurs47_ has quit ("Ex-Chat"). 16:44:33 -!- oerjan has joined. 16:56:27 -!- c|p has joined. 17:06:13 damn that last part is a PITA 17:16:22 -!- pikhq has joined. 17:23:23 -!- pikhq_ has joined. 17:33:57 -!- oerjan has quit ("Reboot"). 17:37:09 -!- oerjan has joined. 17:38:26 -!- pikhq has quit (Read error: 110 (Connection timed out)). 17:39:07 -!- pikhq_ has changed nick to pikhq. 17:49:30 -!- sebbu has joined. 18:09:55 hi 18:53:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 19:06:36 hi, folks 19:06:46 ho ho ho 19:06:53 hello, oerjan 19:07:52 * pikhq kicks emacs 19:09:20 heheh 19:09:44 don't use an operating system for a text editor's job 19:10:36 of course, I shouldn't really start editor warfare here, because the only console-based code editor I use is nano... 19:12:50 Emacs has decided to take 30 seconds to start. :/ 19:13:05 it was never famous for its speed. 19:13:55 sure it was. just not _hight_ speed. 19:13:59 *high 19:14:00 eesh. 30 seconds? Not even photoshop loads that slow 19:14:52 I know some operating systems that boot faster. 19:16:43 RISCOS and PalmOS come to mind 19:17:22 photoshop takes more than that on my computer. 19:17:36 (i don't know how much emacs takes because i'm not insane enough to install it) 19:18:27 DOS. 19:18:44 The right Linux distro. 19:19:01 pikhq: ah, good call- I didn't think of DOS 19:19:27 Very light Linux distros boot in about 10 seconds. . . 19:19:48 20 if you count the time it takes for the initrd to get loaded into memory from the floppy. 19:43:16 -!- crathman has joined. 19:48:59 -!- Sgeo has joined. 20:09:50 emacs++ 20:10:42 bsmntbombdood: crap + 1 is still crap 20:11:00 No, it's greater than crap. 20:11:41 what if crap is good-1? 20:11:48 bsmntbombdood: it's not. 20:12:07 what's the difference between good and crap, then? 20:12:23 the difference between crap and good tends to be qualitative, not quantitative 20:12:42 if you polish crap enough, you do get shiny crap. 20:13:02 RodgerTheGreat: or you just smear it all over the place 20:13:14 that is the alternative, yes 20:16:21 as they say, if you put one drop of wine in a barrell of sewage, you still have sewage. If you put one drop of sewage in a barrell of wine, well... 20:17:13 * oerjan leaves that as an exercise for the student 20:17:16 this suggests that sewage >> wine 20:17:22 if we were to represent them numerically 20:18:29 perhaps wine is some integer and sewage is omega plus some integer. 20:19:58 what a surreal suggestion 20:20:25 badumching? 20:21:51 that must be surreal because google gives me no definition 20:25:16 Gives no definition for what? 20:25:26 for badumching 20:25:40 your mom gives all the definition for badumching i need! 20:49:58 -!- crathman has quit ("ChatZilla 0.9.78.1 [Firefox 2.0.0.4/2007051502]"). 21:47:04 -!- c|p has quit (Remote closed the connection). 21:54:34 -!- jix has quit ("CommandQ"). 21:55:00 -!- yadda has joined. 21:56:10 hi there 21:56:17 hi 21:56:47 any befunge fans here ? 21:58:00 sorta. 21:59:46 any sorta fans here? 22:00:38 hehe 22:00:47 is there a decent befunge interpreter ? 22:00:56 tons 22:01:19 literally dozens 22:01:22 of billions 22:01:42 ok 22:01:47 for windows 22:02:05 http://fluffy.ecs.soton.ac.uk/bequnge/ 22:02:15 for windows, for the z-machine and for every platform in between. 22:02:32 cheers, i'll take a look 22:04:44 (of course, there's also z-machine for windows. Sadly, no windows for the z-machine yet.) 22:05:09 nor z-machine in befunge nor befunge windows. The world is full of imperfection. 22:05:57 you would think they had never heard of turing-equivalence 22:06:37 i don't think any of those platforms are turing-complete 22:09:37 that is because you are not thinking abstractly enough. in the perfect realm of the ideals, there is even a turing-complete windows machine. possibly. 22:10:44 gotta say - the zmachine one looks better 22:11:03 (i can read the font anyway) 22:23:09 Windows in Befunge? 22:31:16 why would you port windows? 22:32:08 Linux in Befunge! 22:32:20 or linux 22:32:44 i want to write the secure os we were talking about the other day 22:33:01 When was that? 22:33:08 Was I one of "we"? 22:33:19 don't remember 22:33:50 Even vaguely? 22:34:00 Less than a week ago? 22:34:07 probably 22:34:58 * ihope trudges through the logs 22:35:09 (I'm not sure if "trudge" is actually a word, but it gets the point across.) 22:35:13 07.06.10, 11:00:04 in tunes 22:36:27 Scripting language is part of the operating system? 22:36:38 sort of 22:37:09 C is unix's scripting langauge 22:37:38 Hmm. 22:37:40 * ihope reads 22:40:49 11:53:03 the Curry-Howard isomorphism which says that types and theorems are basically the same thing is important in much of this kind of work 22:41:03 And values are proofs. 22:41:09 Interesting. 22:41:39 Of course, you'd need to disallow recursion and allow call-with-current-continuation inside proofs. 22:42:06 i was going for a simpler run time checking rather than a proof system 22:43:10 * ihope suddenly equates this bsmntbombdood with that bsmntb 22:43:14 ...ombdood 22:43:25 Darn this tab completion. 22:43:34 checking that a proccess had the relevant permissions for this system call whenever a system call is used 22:44:21 My kernel idea is simpler: check whether the process has the omnipotence flag or not. If it does, it can do anything. Otherwise, it can do very little. 22:44:40 that's unix 22:45:04 and that's dangerous, because you have to give one permission you have to give all of them 22:46:50 Or you can give no permissions, then have an all-permissioned watchdog listen to what the process is trying to do and do whatever it's allowed to do. 22:47:10 bsmntbombdood: are you aware of the E language? 22:47:12 all permissed watchdog = kernel 22:47:17 oerjan: no 22:47:47 bsmntbombdood: what if you don't like the ultripotent watchdog the kernel provides? 22:48:00 Kernels are filled with mud and sticks. 22:48:04 i believe its security system is based on encrypted capabilities rather than theorem proving 22:48:06 security should be in the kernel 22:48:16 -!- Sgeo has quit (Connection reset by peer). 22:48:22 if you don't like the kernel's security, you are using the wrong kernel 22:48:29 I want to work with mud and sticks as little as possible. 22:48:48 Mud and sticks and worms and hair and such. 22:49:03 putting security in a user mode procces would be _way_ too slow, because the kernel would have to relay _all_ syscall through that proccess 22:49:15 That's really slow? 22:50:04 yes 22:51:13 Kernel security: scum makes system call, kernel checks to see if it has permission, kernel performs system call. Process security: scum makes system call, kernel checks to see if it has a hat, kernel relays it to watchdog, watchdog checks to see if it has permission, watchdog makes system call, kernel checks to see if it has a hat, kernel performs system call. 22:51:16 Hmm... 22:51:33 exactly 22:52:36 Well, what are the scum's system calls going to consist of? 22:52:45 and you have to worry about the watchdog getting delayed by the scheduler 22:53:23 Won't happen if the scum's waiting causes the scheduler to run the watchdog in its place, will it? 22:53:44 there's more than one proccess running 22:54:29 * ihope ponders 22:55:24 It takes longer, so you have more delays as other processes are switched to? 22:56:57 if the kernel is contracting work out to a user proccess _every single syscall_, that proccess deserves to be in the kernel 22:58:28 -!- yadda has quit. 22:58:28 Well, what if the scum's activities consist of something like deleting lots of files? 22:59:15 If file deletion is implemented by a process rather than the kernel, the scum's going to be sending messages to the deleter, not making "suspicious" system calls. 23:02:14 Since not every process is allowed to delete every file, should the kernel be involved with security here? 23:03:32 filesystem access is done in kernel 23:04:29 unless you want something like Hurd 23:05:09 There's something wrong with filesystem access not being done in the kernel? 23:06:12 in a monolithic kernel, yes 23:09:31 And there's something wrong with not being monolithic? 23:09:47 no 23:22:04 -!- Izak has joined. 23:22:47 in a microkernel + servers architecture, you would have a permissions server 23:23:41 that would be ok because the kernel is designed to be able to do that efficiently 23:33:00 -!- Izak has quit. 23:34:00 -!- oerjan has quit ("Good night"). 23:43:06 ...Isn't microkernel + servers what I've been describing? 23:48:06 yes, but i didn't realize that