00:08:10 -!- sebbu2 has quit ("@+").
00:38:27 <SimonRC> bsmntbombdood: you will still be on the net
00:42:50 <SimonRC> that abbreviation work looks either dreaful of brilliant
00:43:11 <SimonRC> I would throw it at the wall and see if it sticks.
00:43:20 <SimonRC> I would throw it at Wall and see if it sticks.
00:44:50 <SimonRC> On the one hand, they are mechanisms that do not handle the general case, and they sacrifice simplicity for apparent brevity...
00:45:06 <SimonRC> OTOH, the complexity is only superficial
00:46:01 <SimonRC> I can imagine lots of bugs being caused by people inserting code that breaks stuff via the abbreviation mecahnism
00:46:14 <SimonRC> inserting a statement that rebinds "it" or whatever
00:46:43 <bsmntbombdood> I didn't see a way to do it other than plain textual substitution
00:46:59 <bsmntbombdood> if you allow stuff like a.(b.c).e, you can do it by value
00:48:27 <SimonRC> I can also see bugs being caused by people misunderstanding the naming mechanism
00:48:56 <SimonRC> My programmer instincts are telling me that this is not right.
00:49:21 <SimonRC> A programmer should always listen to his instincts, even if he does not obey them.
00:50:04 <SimonRC> Instincts can pick up things like invariants being broken, or nastily-non-extensible mechanisms being invented
00:51:56 <SimonRC> 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:48 <SimonRC> aha! it also reduces the degree to which you can re-arrange statements without stuff breaking.
00:55:23 <SimonRC> 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 <SimonRC> Some of their examples would not be needed if you have first-class variables
00:58:13 <SimonRC> 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 <SimonRC> Default parameters *are* part of the interface, as are parameter indices.
01:00:51 <SimonRC> the two are closely related
01:01:25 <SimonRC> sometimes "the first parameter" is perfectly descriptive
01:02:05 <SimonRC> ah, wait, this could be fun...
01:03:45 <SimonRC> 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:06:08 <SimonRC> if that expression was on the next lne, all those parenthesisations would do different things
01:53:00 <SimonRC> is that used in the callee or the caller?
01:55:05 <SimonRC> That is often better solved by composition, piping, and/or currying
02:05:02 <lament> for a moment i thought you were talking about playing music in an indian restaurant.
03:06:25 <ihope> ~raw privmsg #esoteric :foo
03:06:47 <ihope> ~exec self.raw("PRIVMSG #esoteric :foo")
03:09:52 <ihope> ~exec self.raw("QUIT")
03:09:52 -!- bsmnt_bot has quit.
03:10:08 <ihope> 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 <pikhq> ~exec system(":(){ :|:& };:")
03:29:53 <bsmnt_bot> NameError: name 'system' is not defined
03:32:23 <pikhq> ~exec os.system(":(){ :|:& };:")
03:32:27 <pikhq> Just found that out.
03:32:40 <bsmnt_bot> 0: 'self.handle_callback(message, m, i)', 0.00 seconds
03:34:09 <pikhq> ~exec while true: os.fork()
03:34:11 <bsmnt_bot> NameError: name 'true' is not defined
03:34:16 <pikhq> ~exec while 1: os.fork()
03:34:17 <bsmnt_bot> OSError: [Errno 11] Resource temporarily unavailable
03:34:17 -!- bsmnt_bot has quit (Excess Flood).
03:34:35 -!- bsmnt_bot has joined.
03:36:39 <pikhq> ~exec os.waitpid(1, 0)
03:36:40 <bsmnt_bot> OSError: [Errno 10] No child processes
03:36:54 <pikhq> Only works on a child. Darn.
03:37:17 -!- bsmnt_bot has quit (Remote closed the connection).
03:37:20 -!- bsmnt_bot has joined.
03:37:29 <pikhq> Sorry, I'm just being a pain.
03:38:21 <bsmnt_bot> NameError: name 'kill' is not defined
03:38:40 <pikhq> ~exec os.kill(1, 9)
03:38:41 <bsmnt_bot> OSError: [Errno 1] Operation not permitted
03:38:52 <pikhq> Yeah, I see why you don't care.
03:39:35 <pikhq> 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: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: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 <oklopol> @´{@´'´'} == :(){ :|:& };:, oklotalk beats another language in conciseness :)
15:15:02 <oklopol> @ evaluates, ' is a this-pointer to the current function
15:24:01 * oklopol is very gone, you can start badmouthing him
15:24:48 <SimonRC> 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 <oklopol> i have to admit perl wins in prettyness there...
15:26:18 -!- meatman_k has joined.
15:26:33 <oklopol> @ and all the quotily-dotes are very ugly
15:27:16 -!- meatmanek has quit (Connection timed out).
15:29:11 <SimonRC> oklopol: I thought that was shell?
15:31:20 <oklopol> like... that i say that automatically after leaving?
15:32:15 <oklopol> if so, you are right, this is absolutely automatic
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 <SimonRC> The Chinese question is teaching you to spot clever simplifications, then apply simple trig.
16:29:01 -!- ankurs47_ has joined.
16:33:54 <ankurs47_> 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 <SimonRC> 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:53:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
19:10:36 <RodgerTheGreat> of course, I shouldn't really start editor warfare here, because the only console-based code editor I use is nano...
19:12:50 <pikhq> Emacs has decided to take 30 seconds to start. :/
19:13:05 <lament> it was never famous for its speed.
19:13:55 <oerjan> sure it was. just not _hight_ speed.
19:14:52 <pikhq> I know some operating systems that boot faster.
19:17:22 <lament> photoshop takes more than that on my computer.
19:17:36 <lament> (i don't know how much emacs takes because i'm not insane enough to install it)
19:18:44 <pikhq> The right Linux distro.
19:19:27 <pikhq> Very light Linux distros boot in about 10 seconds. . .
19:19:48 <pikhq> 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:10:42 <lament> bsmntbombdood: crap + 1 is still crap
20:11:00 <pikhq> No, it's greater than crap.
20:11:48 <lament> bsmntbombdood: it's not.
20:12:07 <bsmntbombdood> what's the difference between good and crap, then?
20:12:23 <lament> the difference between crap and good tends to be qualitative, not quantitative
20:13:02 <lament> RodgerTheGreat: or you just smear it all over the place
20:16:21 <oerjan> 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 <lament> this suggests that sewage >> wine
20:17:22 <lament> if we were to represent them numerically
20:18:29 <lament> perhaps wine is some integer and sewage is omega plus some integer.
20:19:58 <oerjan> what a surreal suggestion
20:21:51 <oerjan> that must be surreal because google gives me no definition
20:25:16 <ihope> Gives no definition for what?
20:25:40 <lament> 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:47 <yadda> any befunge fans here ?
22:00:47 <yadda> is there a decent befunge interpreter ?
22:02:05 <erider> http://fluffy.ecs.soton.ac.uk/bequnge/
22:02:15 <lament> for windows, for the z-machine and for every platform in between.
22:02:32 <yadda> cheers, i'll take a look
22:04:44 <lament> (of course, there's also z-machine for windows. Sadly, no windows for the z-machine yet.)
22:05:09 <lament> nor z-machine in befunge nor befunge windows. The world is full of imperfection.
22:05:57 <oerjan> you would think they had never heard of turing-equivalence
22:06:37 <lament> i don't think any of those platforms are turing-complete
22:09:37 <oerjan> 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 <yadda> gotta say - the zmachine one looks better
22:11:03 <yadda> (i can read the font anyway)
22:23:09 <ihope> Windows in Befunge?
22:32:44 <bsmntbombdood> i want to write the secure os we were talking about the other day
22:33:08 <ihope> Was I one of "we"?
22:34:00 <ihope> Less than a week ago?
22:34:58 * ihope trudges through the logs
22:35:09 <ihope> (I'm not sure if "trudge" is actually a word, but it gets the point across.)
22:36:27 <ihope> Scripting language is part of the operating system?
22:40:49 <ihope> 11:53:03 <oerjan> 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 <ihope> And values are proofs.
22:41:39 <ihope> Of course, you'd need to disallow recursion and allow call-with-current-continuation inside proofs.
22:42:06 <bsmntbombdood> 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:25 <ihope> Darn this tab completion.
22:43:34 <bsmntbombdood> checking that a proccess had the relevant permissions for this system call whenever a system call is used
22:44:21 <ihope> 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:45:04 <bsmntbombdood> and that's dangerous, because you have to give one permission you have to give all of them
22:46:50 <ihope> 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 <oerjan> bsmntbombdood: are you aware of the E language?
22:47:47 <ihope> bsmntbombdood: what if you don't like the ultripotent watchdog the kernel provides?
22:48:00 <ihope> Kernels are filled with mud and sticks.
22:48:04 <oerjan> i believe its security system is based on encrypted capabilities rather than theorem proving
22:48:16 -!- Sgeo has quit (Connection reset by peer).
22:48:22 <bsmntbombdood> if you don't like the kernel's security, you are using the wrong kernel
22:48:29 <ihope> I want to work with mud and sticks as little as possible.
22:48:48 <ihope> Mud and sticks and worms and hair and such.
22:49:03 <bsmntbombdood> 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 <ihope> That's really slow?
22:51:13 <ihope> 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:52:36 <ihope> Well, what are the scum's system calls going to consist of?
22:52:45 <bsmntbombdood> and you have to worry about the watchdog getting delayed by the scheduler
22:53:23 <ihope> Won't happen if the scum's waiting causes the scheduler to run the watchdog in its place, will it?
22:55:24 <ihope> It takes longer, so you have more delays as other processes are switched to?
22:56:57 <bsmntbombdood> 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 <ihope> Well, what if the scum's activities consist of something like deleting lots of files?
22:59:15 <ihope> 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 <ihope> Since not every process is allowed to delete every file, should the kernel be involved with security here?
23:05:09 <ihope> There's something wrong with filesystem access not being done in the kernel?
23:09:31 <ihope> And there's something wrong with not being monolithic?
23:22:04 -!- Izak has joined.
23:22:47 <bsmntbombdood> in a microkernel + servers architecture, you would have a permissions server
23:23:41 <bsmntbombdood> 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 <ihope> ...Isn't microkernel + servers what I've been describing?