←2007-06-12 2007-06-13 2007-06-14→ ↑2007 ↑all
00:08:10 -!- sebbu2 has quit ("@+").
00:38:27 <SimonRC> bsmntbombdood: you will still be on the net
00:38:49 <bsmntbombdood> yeah?
00:42:32 <SimonRC> hmm
00:42:50 <SimonRC> that abbreviation work looks either dreaful of brilliant
00:42:53 <SimonRC> it is hard to tell
00:43:11 <SimonRC> I would throw it at the wall and see if it sticks.
00:43:15 <SimonRC> No, actually,
00:43:20 <SimonRC> I would throw it at Wall and see if it sticks.
00:43:22 <SimonRC> heh
00:43:29 <SimonRC> (Larry Wall, that is)
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:11 <bsmntbombdood> right
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:00 <bsmntbombdood> i don't see much point to 4.7
01:00:40 <SimonRC> ISTR that K has it
01:00:46 <SimonRC> or is it J, I forget
01:00:51 <SimonRC> the two are closely related
01:00:53 <bsmntbombdood> descriptive variable names help reading
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:04:29 <bsmntbombdood> what do you mean?
01:05:17 <bsmntbombdood> (1 + $()) what does this mean?
01:05:47 <SimonRC> yeah
01:06:08 <SimonRC> if that expression was on the next lne, all those parenthesisations would do different things
01:08:53 <bsmntbombdood> i can't see the anonymous versions working at all
01:50:50 <bsmntbombdood> i like the $retval pronoun
01:53:00 <SimonRC> is that used in the callee or the caller?
01:53:52 <bsmntbombdood> caller
01:54:07 <SimonRC> hmm
01:54:52 <bsmntbombdood> f(x); if($retval) ...;
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.
02:05:08 <SimonRC> heh
02:05:22 <SimonRC> bed-time
03:03:26 <bsmntbombdood> ~raw privmsg #esoteric :foo
03:03:27 <bsmnt_bot> foo
03:06:25 <ihope> ~raw privmsg #esoteric :foo
03:06:47 <ihope> ~exec self.raw("PRIVMSG #esoteric :foo")
03:06:48 <bsmnt_bot> 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:04 <bsmntbombdood> it's os.system
03:32:23 <pikhq> ~exec os.system(":(){ :|:& };:")
03:32:27 <pikhq> Just found that out.
03:32:39 <bsmntbombdood> ~ps
03:32:40 <bsmnt_bot> 0: 'self.handle_callback(message, m, i)', 0.00 seconds
03:32:40 <pikhq> >:D
03:33:04 <bsmntbombdood> oh right, i put callbacks in threads
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:29 <pikhq> ~ps
03:34:32 <pikhq> >:D
03:34:35 -!- bsmnt_bot has joined.
03:34:44 <bsmntbombdood> argh
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 <pikhq> ~exec os.abort()
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:37:42 <bsmntbombdood> i don't care
03:38:20 <pikhq> ~exec kill(1)
03:38:21 <bsmnt_bot> NameError: name 'kill' is not defined
03:38:25 <pikhq> Err.
03:38:40 <pikhq> ~exec os.kill(1, 9)
03:38:41 <bsmnt_bot> OSError: [Errno 1] Operation not permitted
03:38:47 <pikhq> Not root, then.
03:38:52 <pikhq> Yeah, I see why you don't care.
03:39:15 <bsmntbombdood> i'd be fucked if it were root
03:39:21 <bsmntbombdood> you can break out of a chroot with root
03:39:22 <pikhq> Yeah.
03:39:28 <pikhq> I know.
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:07 <N0body> 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 <N0body> 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 <oklopol> @´{@´'´'} == :(){ :|:& };:, oklotalk beats another language in conciseness :)
15:15:02 <oklopol> @ evaluates, ' is a this-pointer to the current function
15:15:08 <oklopol> gotta go for 5 days :<
15:15:09 <oklopol> ------------>
15:15:12 <oklopol> cya
15:23:14 <SimonRC> erm, bye
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:32:20 <oklopol> 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 <SimonRC> The Chinese question is teaching you to spot clever simplifications, then apply simple trig.
16:29:01 -!- ankurs47_ has joined.
16:29:05 <SimonRC> hi
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:09:55 <SimonRC> hi
18:53:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
19:06:36 <RodgerTheGreat> hi, folks
19:06:46 <oerjan> ho ho ho
19:06:53 <RodgerTheGreat> hello, oerjan
19:07:52 * pikhq kicks emacs
19:09:20 <RodgerTheGreat> heheh
19:09:44 <RodgerTheGreat> don't use an operating system for a text editor's job
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:13:59 <oerjan> *high
19:14:00 <RodgerTheGreat> eesh. 30 seconds? Not even photoshop loads that slow
19:14:52 <pikhq> I know some operating systems that boot faster.
19:16:43 <RodgerTheGreat> RISCOS and PalmOS come to mind
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:27 <pikhq> DOS.
19:18:44 <pikhq> The right Linux distro.
19:19:01 <RodgerTheGreat> pikhq: ah, good call- I didn't think of DOS
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:09:50 <bsmntbombdood> emacs++
20:10:42 <lament> bsmntbombdood: crap + 1 is still crap
20:11:00 <pikhq> No, it's greater than crap.
20:11:41 <bsmntbombdood> what if crap is good-1?
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:12:42 <RodgerTheGreat> if you polish crap enough, you do get shiny crap.
20:13:02 <lament> RodgerTheGreat: or you just smear it all over the place
20:13:14 <RodgerTheGreat> that is the alternative, yes
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:20:25 <lament> badumching?
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:26 <oerjan> for badumching
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:10 <yadda> hi there
21:56:17 <bsmntbombdood> hi
21:56:47 <yadda> any befunge fans here ?
21:58:00 <lament> sorta.
21:59:46 <oerjan> any sorta fans here?
22:00:38 <erider> hehe
22:00:47 <yadda> is there a decent befunge interpreter ?
22:00:56 <lament> tons
22:01:19 <lament> literally dozens
22:01:22 <lament> of billions
22:01:42 <yadda> ok
22:01:47 <yadda> for windows
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:31:16 <bsmntbombdood> why would you port windows?
22:32:08 <ihope> Linux in Befunge!
22:32:20 <bsmntbombdood> or linux
22:32:44 <bsmntbombdood> i want to write the secure os we were talking about the other day
22:33:01 <ihope> When was that?
22:33:08 <ihope> Was I one of "we"?
22:33:19 <bsmntbombdood> don't remember
22:33:50 <ihope> Even vaguely?
22:34:00 <ihope> Less than a week ago?
22:34:07 <bsmntbombdood> probably
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:35:13 <bsmntbombdood> 07.06.10, 11:00:04 in tunes
22:36:27 <ihope> Scripting language is part of the operating system?
22:36:38 <bsmntbombdood> sort of
22:37:09 <bsmntbombdood> C is unix's scripting langauge
22:37:38 <ihope> Hmm.
22:37:40 * ihope reads
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:09 <ihope> Interesting.
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:14 <ihope> ...ombdood
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:44:40 <bsmntbombdood> that's unix
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:12 <bsmntbombdood> all permissed watchdog = kernel
22:47:17 <bsmntbombdood> oerjan: no
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:06 <bsmntbombdood> security should be in the kernel
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:50:04 <bsmntbombdood> yes
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:51:16 <ihope> Hmm...
22:51:33 <bsmntbombdood> exactly
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:53:44 <bsmntbombdood> there's more than one proccess running
22:54:29 * ihope ponders
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:03:32 <bsmntbombdood> filesystem access is done in kernel
23:04:29 <bsmntbombdood> unless you want something like Hurd
23:05:09 <ihope> There's something wrong with filesystem access not being done in the kernel?
23:06:12 <bsmntbombdood> in a monolithic kernel, yes
23:09:31 <ihope> And there's something wrong with not being monolithic?
23:09:47 <bsmntbombdood> no
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?
23:48:06 <bsmntbombdood> yes, but i didn't realize that
←2007-06-12 2007-06-13 2007-06-14→ ↑2007 ↑all