←2007-03-03 2007-03-04 2007-03-05→ ↑2007 ↑all
00:05:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
00:05:36 -!- UpTheDownstair has joined.
00:05:46 -!- UpTheDownstair has changed nick to nazgjunk.
00:27:46 <bsmntbombdood> I have a great urge to do something incredibly esoteric with pointers right now
00:28:54 <bsmntbombdood> And I need your help to fulfil this urge
00:28:58 <bsmntbombdood> Ideas please.
00:29:17 * GreaseMonkey points: (::'''
00:30:01 <bsmntbombdood> ?
00:30:41 <SevenInchBread> not much you can do with an integer pointer to make it esoteric... floating point, imaginary, rational?
00:31:00 <SevenInchBread> ...quaternion?
00:31:05 <bsmntbombdood> The actual pointer doesn't have to be esoteric, just its use
00:31:21 <SevenInchBread> ...make it point to a pointer.
00:31:31 <bsmntbombdood> boring
00:31:38 <SevenInchBread> that points to an integer, which becomes to pointers new value.
00:31:51 <sebbu> SimonRC, watching what ?
00:31:56 <bsmntbombdood> what for?
00:32:22 <SevenInchBread> well... it gives you some moderate form of control flow.
00:32:44 <SimonRC> sebbu: the moon
00:32:52 <SimonRC> the eclipse is nearly over now
00:33:43 <SimonRC> bsmntbombdood: you can use pointers as your only primitive type?
00:33:55 <bsmntbombdood> sure
00:33:56 <SimonRC> actually, make that cons cells as your only primitive type
00:34:07 <bsmntbombdood> ...
00:34:11 <SimonRC> nil is a cons cell that points to itself twice
00:34:17 <SevenInchBread> hahaha... lists with nothing to put in them :)
00:35:13 <bsmntbombdood> more lists
00:35:23 <SimonRC> a number might become a listy-kinda thing
00:35:49 <SimonRC> with clever sharing, a number could easily be a tree with NILs at the leaves
00:35:55 <SevenInchBread> yeah.
00:35:56 <SimonRC> in log-space
00:36:05 <bsmntbombdood> how?
00:36:08 <SevenInchBread> so then concatenation of the trees would be like addition.
00:36:22 <SimonRC> well, you have 0 = nil...
00:36:32 <SimonRC> ah, wait, no...
00:36:38 <SimonRC> oh, yes
00:36:41 <SimonRC> 0 = NIL
00:36:50 <SimonRC> 1 = a pair of differnt NILs
00:36:55 <SimonRC> or maybe that would be 1 and 2
00:37:10 <SimonRC> 2 would be two pointers to the same copy of 1
00:37:21 <SimonRC> 3 would be a pointer to one and 2
00:37:26 <bsmntbombdood> oh
00:37:30 <SimonRC> I am sure you can think of a way
00:37:52 <SevenInchBread> (cons (cons (cons (cons (cons nil))))) ...5, and then use the properties of lists to do arithmetic.
00:38:14 <bsmntbombdood> SevenInchBread: cons takes two arguments
00:38:26 <SevenInchBread> ... just assume all of those have nill on them or whatever :P
00:38:42 <SevenInchBread> basically what simon said
00:38:49 <SimonRC> nil = (nil . nil), BTW
00:38:56 <SimonRC> because all pointer have to be valid
00:39:15 <SimonRC> actually, you can do this a better way...
00:39:16 <bsmntbombdood> nil = NULL
00:39:27 * SimonRC searches for the thing he needs
00:39:31 <SimonRC> bsmntbombdood: nonono
00:39:35 <SimonRC> or maybe yes
00:39:58 <SevenInchBread> yeah, I'm pretty sure nil is a null pointer by itself.
00:40:11 <bsmntbombdood> 1 doesn't make sense
00:40:20 <SevenInchBread> not a pointer to nils... that's a recursive definition and you'd never be able to end a list. :)
00:40:32 <bsmntbombdood> if the value of a node is the sum of its children...
00:40:58 <SevenInchBread> 1 = (nil nil)
00:41:01 <SimonRC> here we go: http://www.cs.st-andrews.ac.uk/~eb/writings/bignums.ps
00:41:07 <SimonRC> "Every Number Has At Most Two Digits"
00:41:09 <SevenInchBread> you basically making a base-1 nuimeral system.
00:41:10 <SimonRC> just what we need
00:41:20 <SimonRC> and it works in log-space
00:41:29 <bsmntbombdood> bah, ps
00:41:52 <bsmntbombdood> and sideways
00:42:16 <SimonRC> for me it is upside-down
00:42:26 <SimonRC> just tell your viewer to turn it the right way up
00:42:34 <SevenInchBread> 0 = nil 1 = (0 nil) 2 = (1 nil) 3 = (2 nil) 4 = (3 nil) etc
00:43:29 <bsmntbombdood> there
00:43:46 <bsmntbombdood> xpdf renders it nicely
00:44:15 -!- thematrixeatsyou has joined.
00:44:37 -!- GreaseMonkey has quit (Nick collision from services.).
00:44:44 -!- thematrixeatsyou has changed nick to GreaseMonkey.
00:45:57 <SimonRC> bsmntbombdood: basically, a number is either: all zero or first half zero + second half non-zero, or first half non-zero + second half anything.
00:46:13 <bsmntbombdood> I don't understand the notation though
00:46:34 <bsmntbombdood> page 5
00:47:10 <SimonRC> ah, that's the magic type theory notation
00:47:21 <SimonRC> it comes from the types-as-proof-specifications thingy
00:47:58 <SimonRC> the things on top are the data and types you start off with, and the bit at the bottom is the data or type that you can construct
00:48:19 <SimonRC> it's not really much beyond Haskell's GADTs
00:48:55 <SevenInchBread> I really wish OSes had some easy way for languages to easily communicate without whole processes.
00:49:04 <SimonRC> if we represent a zero in either half as a pointer to the cons cell itself, we have a high-efficiency representation not only for small numbers, but also for sparse bit vectors (if we are clever when the first half is non-zero and the second half is zero).
00:49:43 <SimonRC> If we are not clever in that latter case, we get an efficient notation for small numbers but not for all sparse ones
00:49:59 <SimonRC> SevenInchBread: it's called "threads"
00:50:10 -!- oerjan has joined.
00:50:19 <SevenInchBread> ...I've never actually figured out what threads are...
00:50:32 <SimonRC> like processes, but they share an address space
00:50:33 <bsmntbombdood> lightweight proceses
00:50:49 <bsmntbombdood> http://en.wikipedia.org/wiki/Image:PM1%2B1%3D2lemma.jpg
00:50:52 <SevenInchBread> eh... so then you'd communicate solely by address?
00:50:58 <bsmntbombdood> that's some dense notation right there
00:51:24 <SimonRC> SevenInchBread: eh?
00:51:36 <SimonRC> nonono, I mean they share a heap and globals between them
00:52:17 <SevenInchBread> yeah... they share a heap... so in order to communicate they need to alter data on the heap yeah?
00:53:00 <bsmntbombdood> yeah
00:53:02 <SimonRC> of course, properly you should not share address space without a proper shared-address-space system. Channels from Erlang are good, STM from Haskell is good, even though they got it from the database world, and locks and monitors suck with a suckage of several Lovelace.
00:53:14 -!- sebbu has quit (Client Quit).
00:53:45 <SimonRC> Channels are good if you know how the data will flow, and STM (transactions) is good if you don't care much about the exact order updates happen.
00:54:29 <SimonRC> STM has a horrible overhead sometimes, but it is still a win if it lets you use 8 cores rather than 1.
00:54:34 <SevenInchBread> How do you make a thread exactly?
00:56:23 <SimonRC> you start by RTFM
00:56:26 <bsmntbombdood> pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
00:56:34 <bsmntbombdood> like that
00:56:49 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:57:21 <SimonRC> Then you give up and write it in a language with some actual concurrency *support* rather than a concurrency *burden*.
00:59:17 <bsmntbombdood> Then you remember that it was implemented in C
01:00:04 <SimonRC> like I said, C=bad for this
01:00:35 * oerjan wonders if you could do reverse pointers - like COME FROM.
01:00:58 <bsmntbombdood> I've seen COME FROM somewhere
01:01:06 <SimonRC> you might be able to do some dreadful hashing trick
01:01:07 <GreaseMonkey> um, with an instruction trap perhaps?
01:01:15 <oerjan> in INTERCAL, but that is for program flow.
01:01:15 <SimonRC> bsmntbombdood: INTERCAL
01:01:24 <bsmntbombdood> ph
01:01:27 <bsmntbombdood> oh
01:01:34 <oerjan> i meant for data.
01:01:37 <SimonRC> some Fortrans had an "AT", which was like a COME FROM
01:01:54 <SimonRC> and of course COME FROM is back in fasion with the emergence of AOP.
01:05:44 <SevenInchBread> ...reverse pointers... like...
01:05:59 <SevenInchBread> ...
01:06:02 <SevenInchBread> hmmm...
01:06:11 <fizzie> FORTRAN's DO loop is somewhat come-from-y, since you just give the line number where the loop ends, and there's nothing at that line marking the end of the loop. (Most people would probably stick a CONTINUE statement there, though.)
01:06:35 * SimonRC lols at the "reverse-find" algorithm
01:06:56 <SevenInchBread> ...what would a reverse pointer do? Point to itself?
01:07:23 <SimonRC> It's complexity bound has possibly the world's slowest-growing function that tends to infinity and is yet useful for something.
01:07:41 <SimonRC> it contains the inverse of the ackermann function
01:09:28 <oerjan> hm... googling reverse-find + ackermann gives me nothing
01:09:55 <oerjan> or more precisely, one page in Hebrew.
01:10:11 <oerjan> which is about equivalent. :)
01:11:22 -!- ihope_ has joined.
01:11:34 <ihope_> ~ctcp #esoteric ACTION ACTION ACTION
01:11:35 * bsmnt_bot ACTION ACTION
01:11:46 <ihope_> Mm-hmm.
01:11:51 <oerjan> SimonRC: That was supposed to be a hint to get a URL, btw :)
01:12:01 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION ACTION\001")
01:12:02 * bsmnt_bot ACTION
01:12:06 <SimonRC> ah...
01:12:10 <SimonRC> http://www.scottaaronson.com/writings/bignumbers.html
01:12:21 <ihope_> ...Never mind?
01:12:25 <SimonRC> I meant "union-find"
01:12:26 <oerjan> thank you.
01:17:29 <ihope_> Oh, huh.
01:17:36 <ihope_> ~exec self.raw("PRIVMSG #esoteric :Foobar\001")
01:17:36 <bsmnt_bot> Foobar<CTCP>
01:17:48 <ihope_> ~exec self.raw("PRIVMSG #esoteric :Foo\001ACTION bar\001")
01:17:48 <bsmnt_bot> Foo<CTCP>ACTION bar<CTCP>
01:17:57 <oerjan> hm...
01:18:19 <ihope_> My client failed to display that one.
01:18:40 <oerjan> Mine too. Not quite RFC-compliant.
01:19:07 <oerjan> But then the RFC doesn't seem very useful in this case.
01:20:07 <oerjan> did anyone see it properly?
01:20:35 <oerjan> (I.e. Foo and bar on separate lines, the last as an emote)
01:22:26 <ihope_> Is it supposed to do that?
01:22:34 <ihope_> Mine didn't show it at all.
01:22:42 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION bar\001"Foo)
01:22:42 <bsmnt_bot> SyntaxError: invalid syntax
01:22:50 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION bar\001Foo")
01:22:50 <bsmnt_bot> <CTCP>ACTION bar<CTCP>Foo
01:22:59 <ihope_> Didn't see that either.
01:23:27 <oerjan> That one came out as an emote to me, but with an \A inside.
01:23:30 <ihope_> ~exec self.raw("PRIVMSG #esoteric :foo\001bar\001\r\nPRIVMSG #esoteric :\001bar\001foo")
01:23:30 <bsmnt_bot> foo<CTCP>bar<CTCP>
01:23:30 <bsmnt_bot> <CTCP>bar<CTCP>foo
01:23:45 <ihope_> I didn't see anything there either.
01:24:06 <oerjan> you mean you saw absolutely nothing?
01:24:20 <ihope_> Absolutely nothing.
01:24:30 <ihope_> I didn't realize bsmnt_bot replied at all until I read the logs.
01:25:00 <ihope_> ~exec self.raw("PRIVMSG #esoteric :foo\001\001bar")
01:25:00 <bsmnt_bot> foo<CTCP><CTCP>bar
01:25:07 <ihope_> ~exec self.raw("PRIVMSG #esoteric :foo\001\001")
01:25:08 <bsmnt_bot> foo<CTCP><CTCP>
01:25:15 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001bar")
01:25:16 <bsmnt_bot> <CTCP><CTCP>bar
01:25:32 <ihope_> ...wait a minute...
01:25:34 -!- ihope_ has quit ("Reconnecting...").
01:25:48 -!- ihope_ has joined.
01:25:59 <oerjan> it seems my client uses the first character to decide whether it is an emote, but then ignores anything inside.
01:26:05 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001bar")
01:26:06 <bsmnt_bot> <CTCP><CTCP>bar
01:26:35 <oerjan> bsmnt_bot [i=gavin@abacus.kwzs.be] requested unknown CTCP Abar from #esoteric:
01:26:45 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001")
01:26:45 <bsmnt_bot> <CTCP><CTCP>
01:26:52 <oerjan> *A=\A
01:27:10 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION throws a \001 at ihope_\001")
01:27:10 * bsmnt_bot throws a <CTCP> at ihope_
01:27:19 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001\001")
01:27:20 <bsmnt_bot> <CTCP><CTCP><CTCP>
01:27:53 <oerjan> unknown CTCP \A
01:28:06 <oerjan> (I am using \A for inverted A on my screen)
01:28:18 <ihope_> === Unknown CTCP [\0x01] () from bsmnt_bot
01:28:41 <oerjan> that seems standard-compliant, at least.
01:28:49 <oerjan> or, wait.
01:28:57 <oerjan> not quite.
01:29:27 <oerjan> it should have been unknown CTCP "" followed by a single \A in a message, I think.
01:29:58 <ihope_> All so very weird.
01:30:03 <oerjan> anyhow, the conclusion is that you can count on \A working only at the ends of messages.
01:30:21 <oerjan> *beginning and end
01:30:43 <ihope_> It looks to me that if there's more than one \1 in a message, it fails to show.
01:30:52 <ihope_> Naturally, our clients are different...
01:30:57 -!- GreaseMonkey has quit (Read error: 60 (Operation timed out)).
01:31:22 <ihope_> Do most clients implement CTCP as "if it starts with \1 and ends with \1 then the first word of what's in between is the command and everything else is the parameters"?
01:31:40 <oerjan> mine seems to only look at "starts with \1"
01:32:22 <oerjan> (irssi)
01:32:24 <ihope_> Maybe #tapthru would be a better place to ask...
01:32:53 <oerjan> probably
01:34:12 <oerjan> it occurs to me that it is reasonable to ignore multiple CTCPs, since they could be used to flood your screen.
01:45:45 <bsmntbombdood> ackerman function is funny
01:47:37 <bsmntbombdood> gah
01:47:45 * bsmntbombdood wants to understand that bignums paper
01:48:14 <oerjan> anything in particular?
01:48:40 <bsmntbombdood> the notation
01:49:10 <bsmntbombdood> I'm lost after page 3
01:49:38 <oerjan> eh, the pages aren't numbered
01:50:02 <bsmntbombdood> "Representation of natural numbers" is page 3
01:51:00 <oerjan> oh. i don't think we are reading the same URL...
01:51:16 <bsmntbombdood> http://www.cs.st-andrews.ac.uk/~eb/writings/bignums.ps
01:51:56 -!- manveru has left (?).
02:16:43 -!- nazgjunk has quit ("Leaving").
02:23:52 -!- GreaseMonkey has joined.
02:28:52 -!- ihope_ has changed nick to ihope^.
02:32:13 -!- ihope^ has changed nick to ihope_.
02:41:05 <SevenInchBread> mmm... parsers are very easy to make messy. :)
02:43:37 <SimonRC> the solution is the Use a parser-generator or a monadic parsing library
02:43:42 <SimonRC> *to use
02:44:11 <SimonRC> the latter give you unbelievably awful code but you never have to look at it.
02:44:15 <SimonRC> *former
02:44:38 <SimonRC> the latter give you nice lear code, though it might be fiddly to use sometimes
02:49:45 <SevenInchBread> I'm just using a... class-with-some-event-methods approach.
02:52:38 <oerjan> hm... do the methods correspond to tokens of the grammar?
02:53:34 <oerjan> otherwise you might indeed end up messy, if you try to make it input-driven rather than grammar-driven.
02:55:20 <oerjan> but recursive descent can be simple if the grammar is suitable for it.
02:57:59 <SimonRC> predictive is trivial even in Pascal
03:03:50 <SevenInchBread> well... I see it happening in "stages" so to speak...
03:04:18 <SevenInchBread> this part of it is building the AST by just finding literal characters and reacting to them.
03:04:45 <SevenInchBread> so far I've managed to keep it fairly clean.
03:08:29 <SevenInchBread> What's the... uh.. typical way to do it?
03:09:14 -!- GreaseMonkey has quit (Nick collision from services.).
03:09:20 -!- thematrixeatsyou has joined.
03:13:54 <oerjan> the typical way is to make the parser call the input routines rather than the other way around.
03:14:25 <oerjan> and to let the parser branch and do recursive calls to sub-parsers based on what was read.
03:15:07 <SevenInchBread> oooh... I've got a really good way to implement that...
03:15:14 <SevenInchBread> I made it for a different purpose...
03:15:21 <SevenInchBread> but... it would work great for parsing.
03:15:59 <oerjan> (sometimes it would be useful to recurse even before anything was read)
03:16:15 <oerjan> like with operator precedence.
03:16:27 <SimonRC> SevenInchBread: do tell
03:16:39 <SevenInchBread> let me see if I can find it...
03:17:06 <oerjan> oh, and usually you need lookahead for input, since sub-parsers and post-parsers may need to look at a token again.
03:17:31 <SevenInchBread> yeah... I used that... having a readuntil() makes things way less messy. :)
03:19:00 <SevenInchBread> http://deadbeefbabe.org/paste/3859
03:19:34 <SevenInchBread> _read will be the most relevant
03:19:35 <oerjan> incidentally the parser generators mentioned before are input-driven, and as SimonRC said, the resulting code is horribly messy (but efficient)
03:20:50 <SevenInchBread> well... that's a bad demostration of it... since it just shows thei internals... lemme find where I used it.
03:21:02 <oerjan> being based around a constructed finite automaton which few would want to create by hand.
03:22:18 <SevenInchBread> basically you give it a coroutine that yields output and will be sent input.
03:23:06 <SevenInchBread> if it yields a string, the string if outputted... if it yields another coroutine, it'll make that coroutine the "sub-reader" for as long as its active..
03:23:53 <SevenInchBread> ...
03:24:14 <SevenInchBread> you'd need to modify the concept some... but it could effectively be the basis for a parser.
03:24:59 <oerjan> except that it is the coroutine that is the real parser.
03:25:51 <SevenInchBread> you could have the parser do an event-based call thing... and take the return value of the callback as its yield.
03:25:54 <SevenInchBread> or something.
03:26:07 <oerjan> so this is exactly the opposite of what i suggested.
03:26:18 <SevenInchBread> ...probably
03:26:26 <oerjan> if you let the parser do the calling, you don't need coroutines.
03:26:42 <SevenInchBread> ...it does
03:26:51 <SevenInchBread> that's what I'm doing right now...
03:28:06 <oerjan> ok to be more precise: if you let the parser do the calling and let the result be passed as the return value of the call.
03:30:44 <SevenInchBread> that's what Im... doing? :)
03:31:13 <oerjan> ok then
03:31:19 -!- calamari has joined.
03:31:24 <calamari> hi
03:34:42 <ihope_> I suddenly want to see the results of one of those "uptime games" in this channel.
03:34:52 <ihope_> Voice everybody, see who stays voiced the longest.
03:35:09 <ihope_> And hope the network doesn't catastrophic(al)ly fail.
03:35:15 <calamari> wouldn't be me.. I shut down every night
03:35:19 <SimonRC> I will last weeks usually
03:35:46 <ihope_> Who'd last the longest?
03:35:49 <ihope_> clog?
03:35:52 <ihope_> :-P
04:01:34 -!- GreaseMonkey has joined.
04:01:50 -!- thematrixeatsyou has quit (Nick collision from services.).
04:29:58 * SimonRC goes to bed
04:31:28 <bsmntbombdood> 9:28PM up 83 days, 4:38, 1 user, load averages: 0.10, 0.09, 0.08
04:31:54 <bsmntbombdood> Irssi uptime: 39d 2h 31m 20s
04:31:55 <bsmntbombdood> :)
04:32:09 <ihope_> Who's that, now?
04:32:16 <bsmntbombdood> me
04:32:23 <ihope_> 39 days?
04:32:32 <ihope_> Not bad :-)
04:33:00 <bsmntbombdood> that's actually not running on one of my boxes
04:33:04 <bsmntbombdood> but the 83 days is
04:37:54 -!- oerjan has quit ("leaving").
04:52:15 -!- GreaseMonkey has quit (Nick collision from services.).
04:52:33 -!- GreaseMonkey has joined.
05:44:17 -!- ihope_ has changed nick to ihope.
06:18:43 -!- calamari has quit ("Leaving").
07:43:48 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)).
07:50:35 -!- RodgerTheGreat has quit.
07:55:22 -!- RodgerTheGreat has joined.
07:55:34 -!- RodgerTheGreat has quit (Client Quit).
07:56:32 -!- RodgerTheGreat has joined.
07:56:44 -!- RodgerTheGreat has quit (Client Quit).
07:57:15 -!- RodgerTheGreat has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:05:35 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)).
08:15:06 -!- helios24 has joined.
09:13:24 -!- wooby has joined.
09:22:30 -!- Sukoshi has joined.
09:28:14 -!- sebbu has joined.
09:45:10 -!- sebbu2 has joined.
10:04:18 -!- sebbu has quit (Connection timed out).
10:13:58 -!- ShadowHntr has joined.
10:22:37 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)").
10:29:04 -!- wooby has quit.
10:42:05 -!- ihope_ has joined.
10:45:45 -!- nazgjunk has joined.
10:47:15 -!- cmeme has quit (Remote closed the connection).
10:59:39 -!- ihope has quit (Read error: 110 (Connection timed out)).
11:06:56 -!- cmeme has joined.
12:03:18 -!- ShadowHntr has quit ("End of line.").
12:12:22 -!- jix__ has joined.
12:43:16 -!- Sukoshi`` has quit (Read error: 110 (Connection timed out)).
12:46:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
12:46:43 -!- nazgjunk has joined.
13:04:16 -!- jix__ has changed nick to jix.
13:08:43 -!- tgwizard has joined.
13:12:01 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
13:28:28 -!- nazgjunk has joined.
13:31:49 -!- sebbu has joined.
13:47:10 -!- nazgjunk has quit ("Leaving").
13:51:13 -!- sebbu2 has quit (Read error: 110 (Connection timed out)).
14:22:57 -!- ihope_ has quit (Connection timed out).
14:28:02 -!- nazgjunk has joined.
15:01:10 -!- nazgjunk has quit ("Leaving").
15:02:18 -!- helios24 has quit ("Leaving").
15:15:19 -!- nazgjunk has joined.
15:34:41 -!- oerjan has joined.
16:11:45 -!- tgwizard has quit (Connection timed out).
16:12:15 -!- tgwizard has joined.
16:15:24 <oklopol> hmmmm
16:15:25 <oklopol> ....
16:15:32 <oklopol> this window is broken.
16:16:03 <oerjan> you better get it changed then.
16:25:45 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
16:27:52 -!- nazgjunk has joined.
16:28:19 <oklopol> yeah... just had to read the logs first
16:28:25 <oklopol> here goes!
16:28:27 -!- oklopol has left (?).
16:28:31 -!- oklopol has joined.
16:28:52 * oklopol enjoys his brand new window <3
16:31:01 <oerjan> is it made with Glass?
16:31:22 <oklopol> i doubt it
16:31:25 <oerjan> indeed, why doesn't Glass have a window system?
16:31:33 <oklopol> yep, wondering the same thing
16:31:35 <oerjan> it's illogical!
16:31:49 <oklopol> it should have a lot of inbuilt window stuff
16:32:00 <oklopol> class W to be precise
16:33:10 <RodgerTheGreat> it'd be poor object-oriented design. Windows should extend glass, adding special properties, while Glass is a more general case, also extended by classes like PetriDish and MagnifyingGlass
16:34:07 <oerjan> the windows system has to be made out of Glass, not just written in C++.
16:36:21 <RodgerTheGreat> something like fluidic logic?
16:36:43 <RodgerTheGreat> it'd be difficult to make anything mechanical entirely out of glass
16:39:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
16:39:44 -!- nazgjunk has joined.
16:39:57 <RodgerTheGreat> I guess there's always optical computing as well
16:41:09 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
16:41:17 <oerjan> right... we need an F class for fibers.
16:41:56 -!- nazgjunk has joined.
16:49:28 <oklopol> are fibers just faster threads?
16:49:56 <RodgerTheGreat> they also have less overhead, I believe, unless that's what you mean by "faster"
16:50:31 <oklopol> i meant better
16:52:12 -!- UpTheDownstair has joined.
16:53:00 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
17:06:08 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)).
17:06:47 -!- UpTheDownstair has joined.
17:07:49 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)).
17:08:14 -!- UpTheDownstair has joined.
17:11:11 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)).
17:16:06 -!- nazgjunk has joined.
17:38:13 -!- digital_me has joined.
17:59:18 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)).
18:11:05 -!- digital_me has quit ("Lost terminal").
18:26:03 -!- helios24 has joined.
18:32:58 -!- ShadowHntr has joined.
18:39:24 -!- goban has quit (Read error: 104 (Connection reset by peer)).
18:39:39 -!- goban has joined.
18:45:34 -!- helios24 has quit ("Leaving").
18:48:42 -!- helios24 has joined.
18:56:01 -!- jix__ has joined.
18:59:54 -!- jix has quit (Nick collision from services.).
18:59:56 -!- jix__ has changed nick to jix.
19:23:28 -!- kxspxr has joined.
19:24:27 -!- kxspxr has quit (Client Quit).
19:27:00 -!- pgimeno has left (?).
19:35:45 -!- ihope has joined.
19:35:53 <ihope> ~ctcp #esoteric Foo
19:36:03 <ihope> Eh.
19:37:25 <jix> ~ctcp #esoteric Version
19:37:42 <jix> ~ctcp #ruby-de Version
19:37:44 <ihope> Heh.
19:38:56 <ihope> ...I could have just used /names, eh?
19:39:24 <jix> hm?
19:39:33 <jix> yeah
19:45:05 * bsmntbombdood writes a VM
19:45:10 <bsmntbombdood> register machine
19:47:21 <bsmntbombdood> for no particular reason
19:48:43 <ihope> Minsky?
19:50:23 <bsmntbombdood> no
19:53:04 <bsmntbombdood> Segmentation fault (core dumped)
19:53:25 <bsmntbombdood> wtf.
19:54:21 <bsmntbombdood> hmmm
19:54:38 <bsmntbombdood> that's odd
19:54:46 <oerjan> off-by-one error?
19:55:27 <oerjan> hint: add bounds checks
19:55:30 <bsmntbombdood> it segfaults at cur = code[state.pc], saying "Cannot access memory at address &cur"
19:55:39 * SimonRC sends oerjan to get the keys to the spin-lock.
19:55:52 <oerjan> ???
19:56:31 <oerjan> now that does sound strange
19:56:50 <oerjan> maybe cur is the result of a cast?
19:56:59 <SimonRC> And while you're there, could you kill the idle process?
19:57:02 <SimonRC> :-P
19:57:11 <bsmntbombdood> nope
19:57:16 <bsmntbombdood> struct instruction cur;
19:57:41 <oerjan> is it a global?
19:57:46 <SimonRC> Sorry, I've just been reading about fictional objects and tasks that noobs are sent to fetch/do.
19:57:51 <bsmntbombdood> no, local
19:58:09 <SimonRC> bsmntbombdood: some architectures pass structs by reference in C.
19:58:15 <SimonRC> I have read about such things.
19:58:27 -!- SevenInchBread has joined.
19:58:43 <SimonRC> But you'd only be able to break that by writing an ill-typed program.
19:58:58 <bsmntbombdood> other locals are broken too
19:59:04 <SimonRC> :-S
19:59:20 <oerjan> is cur a parameter?
19:59:36 <bsmntbombdood> no
19:59:58 <bsmntbombdood> stack is undereferenceable too
20:00:17 <ihope> Wait... is this Python or no?
20:00:22 * SimonRC asks bsmntbombdood to find out the password for the root window.
20:00:42 * bsmntbombdood laughs at ihope
20:00:47 <oerjan> have you set any strange options?
20:01:02 <bsmntbombdood> nope
20:01:04 <bsmntbombdood> gcc -g
20:01:31 <SimonRC> (The root window in X Windows is "root" in the graph theory sense, not like the "root user".)
20:01:58 <bsmntbombdood> mmm hmmm
20:02:04 * SimonRC asks ihope to fetch an optical mouse ball from the cupboard.
20:02:13 <bsmntbombdood> heh
20:02:17 <SimonRC> sorry, i am having an attack of silly creativity.
20:02:29 * ihope does so
20:02:42 <oerjan> :D
20:03:10 <bsmntbombdood> this is weird
20:03:32 <oerjan> what other variables are broken?
20:03:47 <bsmntbombdood> stack, an array
20:03:49 <SevenInchBread> hmmm... bugSophia actuallys looks pretty fun... I should implement it.
20:04:06 <bsmntbombdood> of struct state s
20:04:33 <SimonRC> maybe your linker fucked up
20:05:04 <bsmntbombdood> It's all one file
20:05:19 <oerjan> pastebin
20:06:07 <bsmntbombdood> http://pastebin.ca/381344
20:06:32 <bsmntbombdood> line 17 is where is segfaults
20:08:47 <oerjan> immediately, or does it go throught the loop?
20:09:40 <bsmntbombdood> immediatly
20:09:42 <oerjan> what happens if you make cur global?
20:11:05 <bsmntbombdood> segfaults on line 18
20:11:39 -!- ShadowHntr has quit ("End of line.").
20:12:39 -!- helios24 has quit ("Leaving").
20:14:11 <oerjan> well i give up
20:25:34 -!- oerjan has quit ("leaving").
20:26:35 <bsmntbombdood> this is weird
20:28:06 * jix is writing a compiler
20:28:13 <jix> but it's for a non esoteric language
20:28:17 <jix> so it's a bit offtopic
20:28:37 <bsmntbombdood> we don't care
20:28:38 <oklopol> i just coded a working game ai in python
20:28:43 <oklopol> took about 3 hours
20:28:47 <oklopol> ...and now it's gone
20:28:56 <jix> how could that happen?!
20:29:03 <oklopol> i have no idea.
20:29:13 <oklopol> i opened the file and it loaded a 4 hour old version
20:29:14 <oklopol> :)
20:29:28 <oklopol> maybe python doesn't save on alt-f-s
20:29:31 <oklopol> like notepad
20:29:41 <oklopol> i just do thatit does
20:29:44 <oklopol> *it does
20:29:52 <oklopol> so... no idea
20:30:08 <oklopol> hmm... maybe i'll rewrite it... what could be more fun
20:30:17 <jix> uhm how could python save?
20:30:22 <oklopol> pyidle
20:30:30 <jix> hmm
20:30:31 <jix> dunno
20:30:46 <oklopol> idle is the name i think
20:30:51 <oklopol> an ide for python
20:30:51 -!- sebbu2 has joined.
20:31:27 <jix> i'm writing my compiler using test driven development
20:31:55 <oklopol> i don't really feel like coding anymore... i'll go kill myself or something ->
20:32:04 <jix> oklopol: nah don't do that
20:32:26 <jix> oh and i don't have a girlfriend anymore!
20:32:32 <oklopol> and i do!
20:32:40 <oklopol> just got one
20:32:41 <jix> oklopol: you have one?
20:32:44 <oklopol> yeah
20:32:47 <jix> i got one a month ago
20:32:53 <oklopol> :D
20:33:08 <jix> so you know what will happen to you in a month
20:33:10 <oklopol> i don't agree with your "prefer spending time with her over programming" though
20:33:15 <oklopol> what?
20:33:42 <ihope> oklopol: you'll turn into jix, of course.
20:33:45 <ihope> You know German, right?
20:33:54 <lament> If not, you have a month to learn it.
20:34:00 <ihope> Aye.
20:34:05 <ihope> And to move to Germany.
20:34:16 <ihope> Or at least proxy through Germany, or something.
20:34:29 <jix> oklopol: no i don't hope those things will happen to me... i got really depressed and everything before we decided to uhm ... "break up" (sais my dictionary)
20:34:30 <oklopol> hmm... i'm not sure if that's what jix was about to say
20:34:46 <SevenInchBread> ....business programming always makes me nauseas...
20:35:05 <ihope> SevenInchBread: is it always done in COBOL?
20:35:06 <jix> *will happen to you
20:35:22 <oklopol> jix i'm not that social... i think i'll manage a break-up
20:35:33 <jix> oklopol: no the break-up wasn't the problem
20:35:46 <SevenInchBread> but... taking 3 hours to type out the (truncated) 99 bottles of beer song in a language that doesn't even have an implementation... is the kind that gets me excited.
20:35:47 <jix> the time before that
20:35:50 <oklopol> :P
20:35:57 <jix> 1.5 weeks before that
20:36:15 <lament> one would think being social makes it _easier_ to manage a break-up
20:36:31 <oklopol> hmm... social is not the word
20:36:34 <oklopol> human
20:36:36 <oklopol> maybe
20:39:34 <jix> well but now i have time to code :)
20:40:41 <oklopol> i'm pretty furious now, fuck this
20:40:49 <oklopol> python
20:40:52 <oklopol> i'll strangle it
20:40:59 <lament> python is nice.
20:41:13 <bsmntbombdood> WHY YOU SEGFAULT!
20:41:14 <oklopol> python is mean
20:43:29 -!- sebbu3 has joined.
20:50:26 -!- sebbu has quit (Connection timed out).
21:02:02 -!- sebbu2 has quit (Read error: 110 (Connection timed out)).
21:07:24 <bsmntbombdood> ok, figured it out
21:07:35 <bsmntbombdood> I was requesting too much memory from the stack
21:32:01 <bsmntbombdood> I am confused
21:34:32 -!- goban has quit (Read error: 104 (Connection reset by peer)).
21:34:37 -!- goban has joined.
21:42:47 -!- goban has quit (Read error: 104 (Connection reset by peer)).
21:43:02 -!- goban has joined.
21:48:45 <bsmntbombdood> ok my vm fails
21:50:04 <SevenInchBread> mmm... http://esolangs.org/wiki/BugSophia#99_bottles_of_beer_.28truncated_lytics.29 <--coolest looking 99BoB ever.
21:50:32 <bsmntbombdood> heh
21:51:59 <bsmntbombdood> I thought I had a good idea but I didn't
21:53:58 <SevenInchBread> >.>
21:54:37 <bsmntbombdood> Can't figure out how to return values from subroutines
21:55:23 <SevenInchBread> in?
21:55:47 <bsmntbombdood> This little vm I was writing
21:56:19 <SevenInchBread> I've never figured out what a vm was other than some kind of abstract-assembly type thing.
21:56:26 <bsmntbombdood> yeah
21:57:09 <SevenInchBread> either way... your system architecture needs to be able to work with the vm... so I don't get how it's any better than without it. :P
21:57:49 <bsmntbombdood> ?
21:58:45 <SevenInchBread> that's supposed to be the advantage of a VM right? You don't need to be compatable with the architecture underneath.
21:58:51 <bsmntbombdood> yeah
21:59:34 <SevenInchBread> hmmm.... once I make a bS interpreter... I should give it a count mode so that it'll keep track of how many "threads" were created during execution.
21:59:53 <SevenInchBread> the 99 BoB would be at least a hundred.
22:00:37 <SevenInchBread> they're not really threads to the OS... but they work concurrently...
22:04:07 <oklopol> i remade the ai :DDDDDDDDDDDDDDDDDD
22:04:16 <oklopol> was a 20 min job on the second attempt :P
22:04:20 <oklopol> okay, 30
22:04:23 <oklopol> maybe 40
22:04:26 <oklopol> but you get the point
22:04:32 <SevenInchBread> bsmntbombdood, but doesn't the VM have to be compatable with the architecture?
22:04:45 <SevenInchBread> -nod- things are way easier once you know how you're going to do them. :)
22:05:24 <SevenInchBread> let's see.... the minimum amount of threads the 99 bottles program would create is....
22:06:32 <bsmntbombdood> SevenInchBread: The point of a vm is to play with it's assembly language
22:06:44 <bsmntbombdood> It's nothing more than an implementation of a language
22:08:00 <SevenInchBread> (25 * 99) for the strings.... 1 for the counter... and 1 + (27 * 99) for the main loop
22:08:11 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:09:29 <SevenInchBread> 2 + (52 * 99) ...mmm, -opens up Python to do the next bit-
22:09:50 <SevenInchBread> 5150
22:11:31 <bsmntbombdood> zomg, that's the sum of all numbers below 100, + 200
22:13:30 -!- goban has quit (Read error: 104 (Connection reset by peer)).
22:13:39 -!- goban has joined.
22:13:42 <SevenInchBread> ...wow... what a coincidence?
22:16:37 <bsmntbombdood> indeed
22:20:36 <SevenInchBread> oklopol, What kind of ai? I admit I'm a little curious... I wouldn't know where to begin with ai.
22:20:51 -!- sebbu has joined.
22:21:25 <oklopol> a brute force ai :)
22:21:46 <oklopol> the game's rules are somewhat complicated... i took the short road
22:22:27 <oklopol> just a board game by me and a friend... would have rules online, but once again in finnish
22:22:28 <SevenInchBread> brute force... that's where the ai simply simulate every possible situation that could occur and determine which is best?
22:22:35 <oklopol> yes
22:22:57 <SevenInchBread> How far do you go with each of them?
22:23:12 <oklopol> you can specify it for the
22:23:13 <oklopol> ai
22:23:32 <oklopol> but, the problem is never depth, it's width
22:23:35 <oklopol> bredth
22:23:37 <oklopol> whatever
22:24:15 <SevenInchBread> O think a fun game to play would be like "befunge hockey chess"... where you have two goals and take turns placing befunge characters on the field inbetween instruction ticks or something.
22:24:45 <oklopol> because a human will easily recognize it does not matter in which order he does some 20 moves... while it's very hard to make the computer do the same
22:24:54 <SevenInchBread> and try to be the first to complete the specified object and output the results to your output stream. :)
22:25:27 <oklopol> the game is kinda sick, every turn means putting a piece on the board and doing a lot of recursive jumping...
22:25:40 <oklopol> hmm, sounds like fun :D
22:25:53 <oklopol> i wish i had irl friends who could program befunge...
22:26:15 <bsmntbombdood> heh
22:26:25 <SevenInchBread> could rig up some over-the-network thing with a basic GUI
22:26:38 <oklopol> yeah, actually not that hard
22:26:43 <SevenInchBread> IN TKINTER.
22:26:45 <oklopol> do it and well have fun together ;D
22:26:45 <SevenInchBread> :)
22:26:51 <SevenInchBread> ...suuure
22:26:53 <oklopol> *we'll
22:27:21 <SevenInchBread> ...I really don't want to have to swap IP addresses... not for security or anything... I'm just really lazy
22:29:10 <bsmntbombdood> http://freedns.afraid.org/
22:29:47 <SevenInchBread> ....sweet. :)
22:31:46 <SevenInchBread> ...will they spam your email? :)
22:34:14 -!- UpTheDownstair has joined.
22:34:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
22:35:30 -!- UpTheDownstair has changed nick to nazgjunk.
22:37:44 <bsmntbombdood> no
22:40:12 -!- sebbu3 has quit (Connection timed out).
22:41:37 <bsmntbombdood> (am bored i)
22:41:55 <oklopol> okay... anybody wanna explain something to me
22:41:59 <oklopol> (wait, i'll tell)
22:42:27 <oklopol> i made a timeout for my algo, it only does 300000 iterations before terminating
22:42:41 <bsmntbombdood> heh
22:42:46 <oklopol> this way i get 35 moves (the algo tries to find the longest combo)
22:43:49 <oklopol> okay, i have no idea why, but i put if iterations>100000 and random.random()<0.1: return combo << a short termination randomly in every 10th recursive call
22:44:23 <oklopol> and suddenly it finds length 50 combos
22:44:58 <oklopol> (i have manually archieved a 15 combo from that starting point :P)
22:45:48 <bsmntbombdood> It's a sign from the jeebus
22:46:27 <SevenInchBread> hmm... alright.
22:46:37 * SevenInchBread got a subdomain... now just needs to figure out how to access it.
22:46:41 <oklopol> actually... it of course does the 300000 iterations anyway, because i just increase the counter when i call the function... so it won't be increased when short terminating
22:46:56 <SevenInchBread> aah.. wait nevermind.
22:47:05 <SevenInchBread> duh... it just goes to my IP address. :P
22:47:25 <oklopol> you gotta love it when you get a feeling you should do something no matter if it seems not to make sence... and it doubles the capability of your program
22:48:55 <SevenInchBread> hmm... now I need to find a decent befunge interpret that works incrementally instead of all at once.
22:49:01 <SevenInchBread> otherwise I'll just make my own.
22:51:08 <oklopol> make your own!
22:51:30 * oklopol loves torturing his computer
22:52:11 <SevenInchBread> ...I wonder how terrible of a server my computer makes. :)
22:52:22 * SevenInchBread has the cheapest Dell he could have bought.
22:53:31 -!- tgwizard has quit (Remote closed the connection).
22:53:43 <oklopol> muahaha! two million iterations!
22:54:01 <SevenInchBread> hmmm... usually servers are designed to have a lot of storage space and RAM right?
22:54:09 <oklopol> i don't know
22:54:17 <oklopol> i don't play with hardware
22:54:21 <oklopol> never seen a computer naked
22:54:35 <SevenInchBread> I doubt you'd design one with high-end graphics cards. ;)
22:54:51 <oklopol> huh?
22:54:56 <oklopol> server you mean?
22:55:02 <oklopol> ah yeah
22:55:10 <oklopol> true, might be kinda redundant
22:56:41 <oklopol> i've done 3 semesters of cisco ccna... but i have no idea how to set up a server
22:57:02 <bsmntbombdood> and proccessor...and bus speed...
22:58:56 <bsmntbombdood> and 1337n355
23:02:36 <SevenInchBread> it would depend on what you're using it for though.
23:03:25 <SevenInchBread> a large website would want a lot of disk space... while a search engine would want massive massive hoards of anything good.
23:14:35 <oklopol> kay... a combo of 901 moves... record move is 35 from last night...
23:14:57 <oklopol> i don't think this is such a good training opponent after all -______-
23:25:54 * SimonRC procedes to write a program with a runtime that explodes like ackermann's function.
23:26:11 <SimonRC> It is only for the purpose of writing a proof, though.
23:26:20 <SimonRC> I just need to show something is copmputable.
23:26:37 <oklopol> 1+1 is pretty computable
23:26:48 <oklopol> doesn't explode though
23:27:03 <SimonRC> nonono, a particular thing
23:27:36 <oklopol> i misread your typo, sorry
23:27:37 <oklopol> :P
23:27:46 <oklopol> hmm
23:27:49 <oklopol> there was no typo
23:27:56 <oklopol> yes there was
23:34:13 <SevenInchBread> ....this is basically just an echo server.
23:34:28 <SevenInchBread> takes input and shouts it out to everyone.
23:38:32 <SevenInchBread> ...with a number next to it.
23:38:53 <bsmntbombdood> what's the point of ackermann's function
23:39:20 -!- oerjan has joined.
23:39:50 -!- nazgjunk has quit ("Leaving").
23:53:03 -!- Asztal has joined.
23:56:02 <oerjan> bsmntbombdood: in general, or in SimonRC's program?
23:56:17 <bsmntbombdood> in general
23:56:56 <oerjan> it was invented in order to show that there are functions that can be computed with general recursion but not with primitive recursion.
23:57:15 <SevenInchBread> yaaay... got the server done..
23:57:39 <SevenInchBread> now I just need to flesh out the GUI and an interpreter thing.
23:58:17 <oerjan> in order to do this, it had to grow at a whopping speed.
23:58:18 -!- RobHu has joined.
23:58:19 <SevenInchBread> in the meantime... I shall turn my domain name into AN AWESOME WEBSITE.
23:58:31 <SevenInchBread> where's a lazy-to-use HTML server program I could use.
23:58:40 <SevenInchBread> er...
23:58:42 <SevenInchBread> HTTP
23:59:09 <Asztal> camping!
23:59:16 <SevenInchBread> ...heh, I'll just write one... while I'm at it.
23:59:37 <oerjan> Asztal: Here? And did you bring a tent?
←2007-03-03 2007-03-04 2007-03-05→ ↑2007 ↑all