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