←2007-01-02 2007-01-03 2007-01-04→ ↑2007 ↑all
00:12:45 -!- Asztal has quit (Read error: 113 (No route to host)).
00:13:05 -!- Asztal has joined.
00:18:31 -!- jix__ has changed nick to jix.
00:24:35 -!- tgwizard has quit (Remote closed the connection).
00:59:06 -!- Asztal has quit (Read error: 113 (No route to host)).
00:59:45 -!- Asztal has joined.
01:21:54 -!- digital_me has joined.
02:00:24 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
02:05:39 -!- Sandman has joined.
02:06:28 <Sandman> Hello, world
02:06:52 <bsmntbombdood> Enter, Sandman
02:07:06 <CakeProphet> 99 bottles of beer on the wall.
02:07:22 <oerjan> Please write "Hello, world" _before_ I make this request.
02:07:23 <CakeProphet> hmmm...
02:07:37 <CakeProphet> I should make a language based on coroutines.
02:07:47 <CakeProphet> and... somehow mix it into my genetic language idea.
02:07:51 <Sandman> Sandman entered
02:08:01 <bsmntbombdood> coroutine?
02:08:04 <oerjan> Thank you.
02:08:07 <CakeProphet> Yeah...
02:08:34 <CakeProphet> a subroutine takes input, executes, and returns an output to its caller.
02:08:58 <bsmntbombdood> ...
02:09:33 <CakeProphet> a coroutine takes in input, executes, returns a value, halts execution, awaits more input, continues execution until it returns a new value, repeat.
02:09:47 <CakeProphet> a glorified generator.
02:09:56 <bsmntbombdood> oh
02:10:28 <CakeProphet> you can use them to do psuedothreads nicely.
02:10:36 <CakeProphet> since they can halt their execution.
02:10:49 <CakeProphet> and take in more input when they continue.
02:11:27 <CakeProphet> You could actually use a coroutine to simulate an infinite list.
02:11:33 -!- Administrator has joined.
02:11:42 -!- Administrator has changed nick to kilovh.
02:11:53 <kilovh> hi
02:12:12 <kilovh> Please, write the 99 bottles lyrics
02:12:16 -!- kilovh has quit (Client Quit).
02:12:32 <Sandman> 99 nine bottles of beer on the wall
02:12:36 <Sandman> 98 nine bottles of beer on the wall
02:12:40 <Sandman> 97 nine bottles of beer on the wall
02:12:43 <Sandman> 96 nine bottles of beer on the wall
02:12:58 <oklopol> a lazy evaluator like me won't do that if the programmer isn't looking
02:13:16 <Sandman> 99...0 bottles of beer on the wall
02:13:57 <RodgerTheGreat> 0 bottles of beer on the wall, 0 bottles of beer, go to the store, pick up some more, 99 bottles of beer on the wall
02:14:09 <jix> i don't like beer
02:14:14 <RodgerTheGreat> me neither
02:14:24 <RodgerTheGreat> seems like just decrementing would be easier
02:14:30 <jix> so 99 bottles of beer on the wall... (2 hours later) still 99 bottles of beer on the wall
02:14:35 <RodgerTheGreat> lol
02:14:38 <Sandman> 99 bottles of beer go to the store and pick upp 99 bottles, 99*99 bottles of beer on the wall
02:15:03 <RodgerTheGreat> that's picking up way more than 99 bottles
02:16:00 <Sandman> oh sorry it should have been: 99 bottles of beer go to the store and pick upp 99 bottles each, 99*99 bottles of beer on the wall
02:16:54 <pikhq> Sandman: Join #irp; we need programmers.
02:17:03 <RodgerTheGreat> what I've always wondered about the song is: "why do they store all the beer on a *wall*? Wouldn't a box, refrigerator, or at least shelf prove a more efficient storage medium?"
02:18:36 <Sandman> Yeah me too...walls ive tried storing bottles of beer on the wall, and guess what? They fell to the floor
02:19:59 <RodgerTheGreat> You could glue them to the wall, but it'd make it tricky to take them down again
02:20:27 <pikhq> Cleverly arranged nails, perhaps.
02:20:37 <RodgerTheGreat> I imagine something like a workbench tool rack, with beer bottle-sized loops
02:21:00 <Sandman> I once heard something about some shelve thingy. dont really know what thats all about
02:33:12 -!- Asztal has quit (Read error: 113 (No route to host)).
02:37:04 -!- Sandman has quit ("Merry christmas to ya all out there!").
02:39:56 <CakeProphet> hmmm... I kind of regret that = become the most popular way to assign variables.
02:40:17 <bsmntbombdood> why?
02:40:47 <oklopol> a<-b :DD
02:40:57 <bsmntbombdood> eeew
02:41:10 <oerjan> There is of course the broken BF version.
02:41:18 <CakeProphet> one of the most common confusions by new programmers is the distinction between variabe assignment and mathematical equality... most likely because = (the symbol for mathematic equality) is used for it...
02:41:33 <bsmntbombdood> CakeProphet: The symbol used doesn't matter
02:41:35 <CakeProphet> and they look superficial similar at first glance (VERY first glance :D )
02:41:41 <CakeProphet> it does when you're starting out.
02:41:45 <CakeProphet> not later.
02:41:50 <oerjan> 0 bottles of bear on the wall, 0 bottles of beer. Take one down, pass it around, 255 bottles of beer on the wall!
02:41:52 <CakeProphet> once you know the symbol means nothing :P
02:41:55 <bsmntbombdood> If someone can't wrap their head around that, they aren't very smart
02:42:28 <oklopol> I myself do not really care how hard it is for newbies to start programming :\
02:42:30 <CakeProphet> Pretty much everyone makes the leap... I just wonder why it's nessicary to put the cliff there. :P
02:42:37 * CakeProphet does.
02:42:48 <CakeProphet> C is a bitch...
02:42:57 <CakeProphet> to start out on.
02:43:03 <oklopol> you can do a:=b
02:43:06 <bsmntbombdood> C is fun
02:43:16 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
02:43:17 <CakeProphet> if programming is a bitch... programming looks painful and boring.
02:43:22 <CakeProphet> if it's easy... it looks fun.
02:43:41 <CakeProphet> It -is- fun... but only if you know what you're doing.
02:43:47 <oklopol> i use c++ almost exclusively
02:43:53 <bsmntbombdood> oklopol: ewwww
02:43:56 <oklopol> :D
02:44:01 <bsmntbombdood> CakeProphet: As with anything
02:44:28 <CakeProphet> So I think it's best to start with something that's easy to learn... so programming starts out fun.
02:45:07 <bsmntbombdood> if it's easy to learn it's not going to be worth using
02:45:38 <CakeProphet> Not true. ;)
02:45:50 <CakeProphet> If it's easy to learn... that means it's more intuitively worth using.
02:46:08 <CakeProphet> or... it could mean it's not worth using.
02:46:20 <CakeProphet> but... let's be optimistic and go with the first option.
02:46:25 <CakeProphet> :D
02:46:30 <oklopol> I started with basic, was a bitch changing to C++ since i couldn't understand the distinction between = and ==, i though "How can I know which kind of equality this is?".
02:47:59 <CakeProphet> yeah... things like that are bad..
02:48:43 <bsmntbombdood> pssh
02:49:15 <CakeProphet> You should start from the top and work your way down... not stay at the top and keep the bottom hidden (ir works nicely for abstraction, but not for learning)
02:49:32 * pikhq went Basic -> Javascript -> rm -rf basic -> Tcl -> shell -> C -> C++ -> way, way too many esolangs.
02:49:34 <oklopol> tho i was kinda small, didn't really understand what was happening there, prolly properly taught a basic programmer would've understood the difference even tho the same symbon is used :)
02:51:19 * oklopol wants to list too: Basic -> C++ -> python -> C++ -> Brainfuck -> Java -> C++ -> Haskell -> C++
02:51:26 <CakeProphet> Python -> Scheme -> Python -> C (for a second) -> esolangs yay
02:51:38 <oklopol> esolangs all the way
02:51:44 <CakeProphet> I should really get to know a lot of other languages better... rather than just skimming over them.
02:51:58 <oerjan> shall we see...
02:52:07 <CakeProphet> C makes my stomach churn... so not going there.
02:52:29 <CakeProphet> Perl and Lisp (definetely Lisp) look cool...
02:52:35 <CakeProphet> Smalltalk?
02:53:33 <oklopol> i don't know perl, lisp, pascal, cobol, intercal or smalltalk, i hate it when i know the name but not the language
02:53:35 <oklopol> :\
02:53:41 <pikhq> I've gotten to the point where I can at least do a minor amount of fiddling around in the vast majority of languages (with the help of Google).
02:53:59 <CakeProphet> I'm more familiar with Scheme than I am Lisp.
02:54:05 <CakeProphet> but... they're not that different anyways.
02:54:08 <pikhq> Scheme is a Lisp.
02:54:12 <CakeProphet> yeah.
02:54:19 <CakeProphet> By "lisp" I mean Common Lisp.
02:54:24 <pikhq> Ah.
02:54:25 <oerjan> Basic -> Turbo Pascal -> Modula -> LPC -> C -> Perl -> Ocaml -> Haskell and a bunch that i just read about
02:54:45 <oerjan> or used even less than the ones mentioned
02:54:48 <pikhq> It's comparable to the difference between C and C++.
02:55:16 <CakeProphet> I like that Scheme uses a single define function :D
02:56:25 <CakeProphet> LPC... hmmm... a language used to create MUDs...
02:56:36 <CakeProphet> sounds like something I would enjoy... but probably not.
02:56:40 <oerjan> oklopol: it is usually not considered a disadvantage not to know cobol. :)
02:56:44 * CakeProphet is making a MUD in Python that uses freaky meta-programming stuff.
02:57:24 <CakeProphet> Perl is a little weird... it has a lot of obvious disavantages, but I like the philosophy behind it.
02:57:37 <pikhq> oklopol: The use of COBOL cripples the mind, therefore, it's teaching should be considered criminal.
02:58:01 <oklopol> i wanna learn it :(
02:58:12 <pikhq> Learn ORK.
02:58:19 <oerjan> You are supposed to change your nick to dijkstra when you say that :)
02:58:36 <pikhq> Rather,
02:58:44 <pikhq> oerjan: Yeah, yeah, yeah
02:59:12 <oklopol> i'll learn ork once i see a complete reference for it
02:59:17 <oklopol> or a tutorial
02:59:28 <pikhq> Hit the Esolangs wiki.
02:59:43 <pikhq> And realise that code is a bunch of English sentences.
03:00:17 <oklopol> i thought there was just a few examples
03:00:27 <oklopol> pikhq, i've seen ork code
03:00:48 <pikhq> It's not that hard. . .
03:00:55 <pikhq> When the program starts:
03:01:00 <oerjan> the wiki doesn't describe the builtin classes very well, i guess.
03:01:06 <pikhq> There is a scribe named Hi.
03:01:14 <pikhq> Hi is to write "Hello, world!\n."
03:01:19 <CakeProphet> http://esoteric.voxelperfect.net/files/ork/doc/README
03:02:02 <oklopol> i've made a lot of english based langs while planning on a project etc but never made an interpreter for any since they often grow quite complex
03:02:27 <CakeProphet> short jumbled-up-series-of-characters languages are starting to grow on me.
03:02:34 <CakeProphet> as are overly verbose ORK-ish languages.
03:02:48 <pikhq> It's compiled into C++.
03:02:59 <CakeProphet> Yeah.
03:03:12 <CakeProphet> So what?
03:04:41 <pikhq> Just saying.
03:05:39 <CakeProphet> :P Most languages go to assembly at some point... doesn't mean I'd enjoy coding in assembly very much. :P
03:06:12 <oklopol> I like assembly :)
03:06:29 * CakeProphet has never actually seen assembly code before.
03:06:48 <CakeProphet> I wonder what CPython looks like...
03:06:52 * CakeProphet goes and checks.
03:07:15 * pikhq doesn't do any assembly. . .
03:07:38 <pikhq> Although I do tons of equally crazy stuff. ;)
03:08:13 <CakeProphet> I can see where ORK sometimes looks like obvious syntatic sugar over C++... but it's strangely different in a way that I like. :D
03:08:45 <pikhq> It's syntactic sugar over C++ and some libraries, in some ways.
03:09:24 <CakeProphet> I don't consider syntatic sugar a bad thing though.
03:09:39 <CakeProphet> Everything is just syntax sugar for some super low-level operation anyways.
03:11:05 <oklopol> i don't like asciiWrite
03:11:06 <oklopol> :\
03:11:12 <pikhq> oklopol: Why not?
03:11:16 <oklopol> so poetic otherwise
03:12:03 <CakeProphet> yeah... I don't like readOne :D
03:12:13 <CakeProphet> why not just read one?
03:13:07 <CakeProphet> The whole function-names-blending-into-the-syntax is the coolest part.... so seeing readOne is just kind of annoying. :P
03:13:14 <oklopol> yeah, ORK should try to avoid anything that looks like programming imo
03:13:18 <oklopol> actually
03:13:19 <pikhq> Functions with a space in the name produce some vagueness in parsing.
03:13:25 <oklopol> exactly what CakeProphet said
03:13:37 <GregorR> ORK doesn't support multi-word function names :(
03:13:49 <oklopol> make it support :) then i love it
03:13:51 <GregorR> Due to the parsing difficultimpossibility.
03:13:54 <bsmntbombdood> lisp does!
03:14:05 <GregorR> The problem is this:
03:14:10 <GregorR> <actor> is to <function> <variable>
03:14:24 <GregorR> If both functions and variables can have spaces, it's very difficult to parse.
03:14:31 <oklopol> yeah, but you can avoid that if you know it
03:14:35 <oklopol> oh
03:14:51 <oerjan> you could demand an article between <function> and <variable>.
03:14:52 <bsmntbombdood> In lisp symbol names can be anything
03:14:55 <pikhq> And impossible if one has two function/variable combinations that match.
03:15:08 <GregorR> oerjan: Yeah, but then it doesn't read well X_X
03:15:13 <GregorR> pikhq: A-yup :(
03:15:17 <oklopol> but the compiler could give an error if names can collide
03:15:19 <GregorR> It's the one corner of ORK that bugs me 8-X
03:15:28 <GregorR> oklopol: And then what? There's still no solution ;P
03:15:34 <CakeProphet> hmmm... Python has a just-in-time compiler implementation... neato.
03:15:45 <oklopol> GregorR, why?
03:15:49 <oklopol> it is a solution
03:15:52 <oerjan> it can read well if the variables are nouns
03:16:38 <oerjan> common nouns i mean
03:16:51 <CakeProphet> it would still parse fine...
03:16:53 <oklopol> if there are say 5 words in the bit that has <function> and <variable>, it checks all possibilities (4 of them) and does the right one
03:17:22 <GregorR> oklopol: But if there are conflicts, there would then be no way to right it.
03:17:34 <oklopol> an error
03:17:40 <oklopol> compile-time error
03:17:53 <oklopol> if there are 2 that apply
03:18:06 <CakeProphet> hmmm...
03:18:21 <oerjan> now wait. proper nouns can be detected because they are capitalized.
03:18:50 <pikhq> Perhaps a rewrite of the sentence's grammer?
03:19:05 <oerjan> so a variable would be either 'the' <common noun>, 'a' <common noun> or a capitalized proper noun.
03:19:22 <GregorR> oerjan: That's a good point ...
03:19:41 <oklopol> i mean, if a thing has functions "a b c" and "a b" and vars called "c d e" "d e", it would give an error, very easy to check for each class
03:19:42 <CakeProphet> Doggie Samuels is to be or not to be that is the question when there is the functions "to be" "be or not"
03:20:15 <CakeProphet> hmmm... if it finds the variable first... it can clip off the variable name and know -exactly- what function to look for.
03:20:20 <CakeProphet> but...
03:20:24 <GregorR> oklopol: Giving an error isn't a solution, it just leaves the coder with no way to call that particular selection :P
03:20:27 <CakeProphet> there's something wrong with that.
03:20:53 <oklopol> GregorR, you still have the old way of naming if you MUST have colliding names
03:21:03 <GregorR> True *shrugs*
03:21:16 <oklopol> and, it can support the ucase thing too
03:21:36 <CakeProphet> so in that example... the parse would find the variable "to be that is the question"... and could conclude that "to be or not" is the only function.
03:21:37 <oklopol> if collision, check for uppercase and solve that way
03:21:56 <CakeProphet> but... there could be ambigious -between- multiple functions and variables... which is where you would have problems.
03:22:42 <oklopol> as i said, then check if there are uppercase beginnings in words that indicate change of noun, if not, tell the programmer his names are colliding
03:22:57 <oklopol> and please supply me with a better word that collision...
03:23:00 <oklopol> :)
03:23:14 <oklopol> might be fine tho
03:23:14 <CakeProphet> yeah... the chance of colliding names is rare enough that it could simply complain to the programmer about it.
03:23:44 <CakeProphet> and then have OPTIONAL syntax to explicitly mark the beginning of the parameter... should a name collision occur.
03:23:54 <CakeProphet> :D
03:24:13 <oklopol> yep, just harder to make a compiler, but not much
03:24:26 <CakeProphet> I would interpreter it myself...
03:24:32 <CakeProphet> er.. interpret
03:24:38 <oklopol> i'll do it if GregorR won't
03:24:46 <oklopol> THAT'LL show him
03:25:04 <CakeProphet> It's line-by-line statements that each do one thing... so it can't be that harder than a compiler.
03:25:41 <CakeProphet> it actually sounds easier than convert all of it to C.
03:25:46 <CakeProphet> (++)
03:26:58 <oklopol> both simple, i just meant the pattern-matching for the var- and cuntnames
03:27:01 <oklopol> -_________-
03:27:03 <oklopol> funcnames
03:27:07 <CakeProphet> but yeah... the chance of there being a bunch of name overlaps that ORK couldn't possibly figure out is so rare that it can just be solved by optional syntax to split up the two.
03:27:09 <CakeProphet> hahahahaha
03:27:14 <oklopol> :D
03:27:47 <oklopol> or, it can be guaranteed to be lazy
03:28:08 <CakeProphet> yeah, de-ambiguity rules is the other route.
03:28:08 <oklopol> i mean, shortest possible func for example
03:28:10 <oklopol> and the rest as a var
03:28:22 <CakeProphet> stating what the interpreter will do during ambiguity...
03:28:24 <GregorR> oklopol: I would, but since you volunteered, feel free :P
03:28:26 <CakeProphet> I like the optional syntax route myself.
03:28:59 <oklopol> GregorR, depends on whether i go to sleep still
03:29:00 <CakeProphet> it would be the Perl way to go about it. :D
03:29:21 <CakeProphet> well no... hueristical evaluation is also in Perl's domain.
03:30:08 <oklopol> must the built-in classes be named like that? i mean, inputter is too programmingish imo, ork shouldn't sound like that
03:30:33 <CakeProphet> there could just e a single read/write class called scribe.
03:30:40 <CakeProphet> or typist... or any other nifty name you want.
03:30:57 * CakeProphet writes an ORK interpreter for Python.
03:32:26 <CakeProphet> maybe with static typing removed :P
03:32:32 <CakeProphet> but it kinda adds a nice touch to the syntax.
03:32:41 <CakeProphet> so I'll probably keep it.
03:33:30 <CakeProphet> hmm... what's the delimiter for statements... periods or newlines (or both?)
03:34:06 <pikhq> Both, I believe.
03:34:50 <CakeProphet> aaand... # is comment I'm guessing? Like Python comments?
03:35:01 <CakeProphet> yeah.
03:35:32 <pikhq> oklopol: inputter is a temporary name. . . Like, Gregor doesn't know of a better name for it.
03:35:39 <CakeProphet> oooh... I like the separation of function and class...
03:35:45 <CakeProphet> you can mix and match classes to functions.
03:36:47 <CakeProphet> oh wait...
03:37:03 <CakeProphet> no they're connected right? ...to prevent scoping ambiguity.
03:37:29 <GregorR> Only newline is a delimiter.
03:37:30 <oklopol> # is a comment in ork?
03:37:32 <GregorR> Periods are just fluff.
03:37:46 <GregorR> # is a comment, yes :P
03:37:51 <GregorR> (Perhaps this should be a comment)
03:38:03 <CakeProphet> yeah... I like that :D
03:38:11 <CakeProphet> you could use it for inline comments.
03:38:26 <CakeProphet> Like asides to the actual program.
03:38:29 <oklopol> This is an object for expressing BigNums, but that is ignored.
03:38:37 <oklopol> ^^^^ comment
03:38:53 <oklopol> () is good too
03:39:04 <CakeProphet> This is an object for expression BigNum, but nobody cares. (reference to an uncyclopedia inside joke)
03:39:16 <oklopol> thought about that too
03:39:29 <oklopol> i mean
03:39:35 <oklopol> not that exact string of course :)
03:39:42 <CakeProphet> http://uncyclopedia.org/wiki/Nobody_cares
03:39:49 <CakeProphet> I like () though.
03:40:44 <CakeProphet> I think "backwards if" statements look a little more englishy.
03:41:23 <CakeProphet> Bob is to eat a sandwhich, if my kitchen is not exploded.
03:41:49 <oerjan> I thought i heard someone here say today that they hated such statements. :)
03:42:14 <CakeProphet> I use them quite a bit... since it's how Python does conditional expressions
03:42:31 <CakeProphet> x = (True if MyConditional() else False)
03:42:39 <CakeProphet> so I'm just used to them. :D
03:43:42 <oklopol> When looper is to loop a number:
03:43:43 <oklopol> There is a mathematician called Fibonacci.
03:43:43 <oklopol> I have a number called current.
03:43:43 <oklopol> Fibonacci's first operand is the number.
03:43:43 <oklopol> Fibonacci's second operand is 1.
03:43:43 <oklopol> Fibonacci is to subtract.
03:43:44 <oklopol> current is Fibonacci's result.
03:43:46 <oklopol> Fibonacci's first operand is Fibonacci's result.
03:43:48 <pikhq> Looks like [set x [expr {1 ? [myConditional] : 0}]]
03:43:48 <oklopol> Fibonacci's second operand is 0.
03:43:50 <oklopol> Fibonacci is to compare.
03:43:52 <oklopol> If Fibonacci says it's greater then I am to loop.
03:43:54 <oklopol> whoops
03:43:56 <oklopol> long paste :)
03:44:05 <pikhq> Or:
03:44:14 <pikhq> Err.
03:44:22 <oklopol> well, anyways, "I have a number called current." means int &current = number; ? because otherwise number wouldn't change
03:44:31 <pikhq> That's [expr {[myConditional] ? 1 : 0]}] XD
03:45:07 <pikhq> I think it means "number &current;".
03:45:15 <pikhq> Err.
03:45:15 <oklopol> :O
03:45:18 <pikhq> "number current;"
03:45:20 <oklopol> i don't
03:45:27 <oklopol> eh
03:45:30 <oklopol> in c++?
03:45:31 <CakeProphet> I don't like C's conditional expressions :P
03:45:39 <pikhq> Nah, it's "double current;".
03:45:59 <pikhq> (thought that Gregor had number as a seperate class, which he doesn't.)
03:46:03 * CakeProphet needs to figure out all the possible statements in ORK to do a proper implementation of it.
03:46:05 <oklopol> okay, then this is an infinite loop, right?
03:46:22 <oerjan> we don't have to choose. we could make it alternating current.
03:46:49 * CakeProphet implements a form of coroutine in his ORK :D
03:47:12 <oklopol> right?
03:47:15 <pikhq> Right.
03:47:16 <oklopol> isn't it?
03:47:29 <oklopol> This would loop from the value you gave it down to 0. You would of course want to add some sort of
03:47:30 <oklopol> functionality there, too.
03:47:33 <oklopol> so it's wrong?
03:49:03 <pikhq> It's an infinite Fibo loop.
03:49:27 <pikhq> Err.
03:49:29 <pikhq> Never mind.
03:49:44 <pikhq> I'm stupid.
04:01:47 -!- anonfunc has joined.
04:11:08 <oklopol> GregorR, you'll prolly make it faster, i've only done some basic classes
04:11:30 <oklopol> if you have the old code, i mean, it won't take long prolly :)
04:12:59 <oklopol> haha made a regexp parser last night and got to use it right away :)
04:20:05 * CakeProphet is just now definining the new number class for ORK numbers.
04:20:34 -!- oerjan has quit ("Good night.").
04:20:37 <CakeProphet> it would basically be a floating point with an overriden __str__ class... so it doesn't print the a trailing .0 like Python does.
04:26:00 <RodgerTheGreat> hm. I just had a thought- can anyone think of a way to calculate the length of an optimal BF program that generates a constant, without actually creating he program?
04:28:59 <oklopol> i've made the calculations i think
04:29:05 <oklopol> i'll check if i finished
04:31:20 <RodgerTheGreat> the problem with creating a compiler to Def-BF is the absolute addresses- if you don't use a constant-generation command (?), you have to generate values in-place. This means that making constants changes code length, requiring a change in what the resulting values should be. The only way I can see to get around this would be making use of a lookup table as on the BF-constants page.
04:31:27 <RodgerTheGreat> it's a really inelegant approach
04:31:53 <oklopol> yeah, i've researched it a bit, but can't find the fucking file :(
04:32:48 <oklopol> you can brute force the most optimal way to create a number quite easily
04:33:50 <oklopol> 1 levels, takes: N
04:33:51 <oklopol> 2 levels, takes: Abase+A+B+7, where N=Abase+B*A
04:33:51 <oklopol> 3 levels, takes: Abase+Bbase+A+B+C+14, where N=Abase+(Bbase+C*B)*A
04:34:06 <oklopol> levels is the amount of memory slots you are willing to use
04:34:22 <RodgerTheGreat> hm. interresting
04:34:41 <oklopol> i've not come up with a clever algoritm to produce good bases for 3 levels, but you don't need it often
04:34:52 <oklopol> hmm levels, good name :)
04:36:20 <oklopol> if you use one memory slot for help, you the smallest possible "Abase+A+B+7" where a*b+abase = your number
04:37:19 <oklopol> and constructed of course A times + [ > B times + < - ] > abase
04:37:33 <RodgerTheGreat> yeah
04:38:01 <oklopol> the amount of auxiliary symbols is (memory slots used)*7
04:38:13 <oklopol> if you want the result in your starting slot
04:38:28 <RodgerTheGreat> what about programs of the form A+ [>B+<-]>C+/- ?
04:38:45 <oklopol> abase can be negative
04:38:53 <oklopol> actually
04:39:03 <oklopol> abs(Abase)+A+B+7
04:39:06 <oklopol> like that
04:39:52 <RodgerTheGreat> ah- I see
04:39:55 <oklopol> but, seems i didn't make it thro to the end
04:39:56 <oklopol> sorry
04:40:03 <oklopol> i don't have an algorithm :)
04:42:04 <oklopol> hmm take the squareroot of the number and make a and b that, or if not an integer, a<sqrt, b>sqrt
04:42:22 <oklopol> abase will be balance it out
04:42:32 <oklopol> that is the best algorithm i think, actually
04:43:33 <oklopol> with three levels, taking the cuberoot and brute forcing different values for abase and bbase while changing a, b and c near the cuberoot might do the trick
04:45:38 <RodgerTheGreat> hm
04:45:47 <oklopol> for numbers smaller than 256 you don't get much profit from 3 levels
04:45:56 <RodgerTheGreat> well, that's a lot of help
04:46:03 <oklopol> hopefully
04:46:10 <RodgerTheGreat> in most cases, we'll be dealing with relatively large numbers
04:46:21 <oklopol> okay
04:46:28 <oklopol> you can take the easy way out of course
04:46:31 <RodgerTheGreat> the Def-BF standard pretty much requires 32-bit cells
04:46:38 <RodgerTheGreat> which is?
04:46:38 <oklopol> just split the numbers in 4 pieces
04:46:49 <oklopol> with num>>8
04:47:01 <RodgerTheGreat> hm
04:47:04 <oklopol> octet by octet
04:47:17 <oklopol> then just merge them by multiplying with 256
04:47:18 <oklopol> actually
04:47:28 <oklopol> much worse
04:47:35 <RodgerTheGreat> yeah- then it just becomes a problem of generating the components, which could feasibly be done via lookup...
04:47:39 <oklopol> since the 256 takes 36 symbols again
04:48:06 <oklopol> +++>>++++++[-<++++++>]<[-<+++++++>]< is the smallest 256 i think
04:49:15 <oklopol> it has abase=3, bbase=0, c=6, b=6, a=7 3+(0+6*6)*7
04:49:32 <oklopol> 3+(0+6*6)*7 was just to help me think
04:49:34 <oklopol> :)
04:49:39 <RodgerTheGreat> the smallest non-wrapping level 3 is one of four variants that are 32 commands
04:50:04 <RodgerTheGreat> wait, three variants
04:50:31 <oklopol> huh?
04:50:43 <oklopol> one of what variants?
04:50:50 <RodgerTheGreat> >>++++++++[-<[-<++>]<+[->+<]>>]< (32, 3) non-wrapping
04:50:50 <RodgerTheGreat> >+>+++++++[-<[-<++>]<+[->+<]>>]< (32, 3) non-wrapping
04:50:51 <RodgerTheGreat> >>++++[-<[-<++++>]<+++[->+<]>>]< (32, 3) non-wrapping
04:50:57 <oklopol> yes
04:51:02 <oklopol> i forgot to mention that
04:51:35 <oklopol> all that matters about the small differences in the final length is where you end
04:52:05 <oklopol> otherwise you have many strategies to position abase, bbase etc
04:52:24 <RodgerTheGreat> luckily, Def-BF makes memory use in programs a little less vital than most BF-derivatives, so we don't have to do something messy like hard-allocate 3 cells per constant
04:53:46 <oklopol> you do realize that even if using 4 levels allows a 32-bit number to be expressed in <60 symbols, it still takes 2^32 cycles to create? :)
04:55:10 <RodgerTheGreat> yeah
04:55:57 <RodgerTheGreat> we're assuming for now that either the machine is fast enough for anything we want or that the BF-ASM compiler is infinitely deep in it's analysis and optimization of code
04:56:40 <oklopol> ++++[>++++<-]>[>++<-]> (32, 2)
04:57:06 <oklopol> i have all loops separate in the system
04:57:59 <oklopol> i'll do the complete algorithm to find the optimal way for that someday unless i see it somewhere else
04:58:06 <oklopol> i'll continue the ork now
04:58:41 <oklopol> 176 "smth had to be truncated to 256 characters for debug information" warnings
04:58:47 <oklopol> so far so good :D
04:59:43 <RodgerTheGreat> haha
05:01:56 <oklopol> can i see an ork program to check the final syntax? :D
05:03:06 <oklopol> if there are accidental infinite loops in a tutorial, i'd like to check i working program to be sure
05:03:15 <oklopol> *a working
05:04:16 <oklopol> sleep retry ->
05:05:08 <CakeProphet> http://esoteric.voxelperfect.net/files/ork/src/orkfuck.ork
05:06:06 <GregorR> Woooh, ORKFuck!
05:06:37 <CakeProphet> GregorR, hmmm... do you have some sort of docs on the exact specs of ORK?
05:06:45 <GregorR> Ha! It is to laugh!
05:06:57 <CakeProphet> I'm too lazy to crack open the source and read it with my shoddy C++ literacy.
05:07:17 <GregorR> I do, but the site it's all on is apparently down >_>
05:07:43 <oklopol> There is such a thing as a brainfuck interpreter.
05:07:45 <oklopol> A brainfuck interpreter can instanciate.
05:07:45 <oklopol> A brainfuck interpreter can subinstanciateData a number.
05:07:45 <oklopol> A brainfuck interpreter can subinstanciateProgram a number.
05:08:03 <oklopol> put the "There is... " line beneath the others?
05:08:39 <oklopol> and, could i declare "A brainfuck interpreter can instanciate." in say, the main
05:08:56 <GregorR> No and no.
05:08:57 <RodgerTheGreat> 'night, everyone. I should be on again late tomorrow.
05:09:01 <oklopol> i'm making an interpreter now, tho it's a trivial conversion if needed
05:09:05 <oklopol> good
05:09:17 <GregorR> Bye RodgerTheGreat
05:09:27 <oklopol> Bye
05:09:39 -!- RodgerTheGreat has quit.
05:10:16 <oklopol> godfuck... who wrote the bfork?
05:10:43 <oklopol> orkfuck i mean
05:10:56 <GregorR> <--
05:12:12 <oklopol> haha you're sick
05:12:27 <oklopol> or did you just do an evil conversion?
05:15:23 <GregorR> I wrote it from the top.
05:15:30 <GregorR> I don't recall anything about it *shrugs*
05:16:58 <CakeProphet> hmm... the comments in the source should be enough to get all the possible syntax.
05:17:07 <CakeProphet> unless you randomly don't-comment-certain-parts
05:17:13 <CakeProphet> my C-reading skills are lacking.
05:36:00 <pikhq> oklopol: Allow me to give you a much shorter version of 255.
05:36:06 <pikhq> - (1, 1) wrapping
05:38:01 <oklopol> true, i meant non-wrapping since i assumed bignum
05:38:50 * pikhq is generally used to having wrapping, since chars, well, wrap.
05:39:01 <oklopol> and secondly, i'm lying, i recalled wrapping much after i'd said said my thing
05:39:16 <pikhq> HEheh.
05:42:33 <CakeProphet> hmmm... are function definitions independent of class declarations?
05:42:44 <oklopol> in ork?
05:42:46 <CakeProphet> or are they "within" the last defined function.
05:42:48 <CakeProphet> yeah.
05:42:55 <CakeProphet> er... last defined class
05:43:05 <pikhq> See the C++ code. ;)
05:43:25 <oklopol> they are in the class that is mentioned in the "When a ... is to ..."
05:43:29 <oklopol> the first ...
05:43:42 <CakeProphet> ooooh.
05:43:46 <CakeProphet> duh :P
05:44:09 <CakeProphet> pikhq, See makes my eyes hurt when I try to understand it.
05:44:20 <CakeProphet> but the comments are useful.
05:53:03 -!- digital_me has quit (Read error: 54 (Connection reset by peer)).
06:28:00 <CakeProphet> GregorR, haha... you could introduce metaclasses into ORK
06:28:13 <CakeProphet> "thing" being the default metaclass :D
06:28:17 <GregorR> lol
06:28:26 <CakeProphet> There is such a <metaclass> as a <class>
06:28:47 <CakeProphet> +
06:28:49 <pikhq> There is such a mammal as a dog.
06:29:05 <pikhq> Wheee. . .
06:29:13 <GregorR> There is such a thing as a <class>, which is a type of <metaclass>
06:29:31 <pikhq> I prefer Cake's idea. . .
06:29:40 <pikhq> But whatever.
06:29:40 <CakeProphet> Yeah :D
06:30:43 <CakeProphet> There is such a thing as a thing
06:30:47 <CakeProphet> O.o
06:31:01 <CakeProphet> No clue how metaclasses would work in ORK though.
06:31:38 * CakeProphet sometimes wishes there was a simpler version of regex that used that kind of syntax
06:31:49 <CakeProphet> This <variable> is a <blank> that likes to <blank>
06:32:06 <CakeProphet> ... I could... make it?
06:32:13 <CakeProphet> :D
06:32:25 * CakeProphet makes it.
06:37:58 * Sukoshi groans.
06:38:03 <Sukoshi> Ugggh. Metaclasses.
06:39:27 <Sukoshi> The future of OOP: An abstract framework of abstract metaclasses.
06:44:58 <CakeProphet> haha
06:45:03 <CakeProphet> metaclasses are magical :P
06:45:12 <Sukoshi> How are they magical?
06:45:17 <CakeProphet> Dunno...
06:45:22 <CakeProphet> they're not very useful for most things.
06:45:35 <Sukoshi> That about sums up all of theoretical OOP.
06:45:36 <CakeProphet> only a few specific things that need a little funky class-based magic.
06:45:52 <CakeProphet> OOP can at times be redundent... and it's a little weird.
06:46:04 <CakeProphet> but it makes things weirdly effective.
06:47:43 <pikhq> Sukoshi: The future of OOP:
06:48:04 <pikhq> There is an object which does everything I want.
06:48:58 <pikhq> The stdlib always has every object that does everything you want.
06:49:10 <CakeProphet> factory functions that produce classes are strangely powerful....
06:49:21 <pikhq> And it's an abstraction ontop of 500 different layers. . . ;)
06:49:42 <CakeProphet> you can box a few generalized patterns about certain class designs into a single word.
06:52:44 <Sukoshi> You remind me of the wackiest abstraction I made/used.
06:53:34 <pikhq> Yes?
06:54:09 <pikhq> (that abstraction is?)
06:54:50 <Sukoshi> I wanted to generalize binary classes in a user-made package that had the same named slots but different names under one generic class so I could save myself the typing, so I made an alist with the keys as the symbols for the generic class names and what was assoc'd with the key was an anonymous function produced by a macro for the metaclass definition. This function then defined a new class according to another macro, and generated an
06:54:50 <Sukoshi> instance of it if desired.
06:59:54 <pikhq> That's almost like writing an OS to implement dc.
07:03:25 <Sukoshi> I wanted to save 40 lines of typing.
07:04:53 <Sukoshi> I did -- I did the thing in like 10 lines.
07:06:28 <pikhq> Still.
07:06:48 <Sukoshi> What? I saved my hand from OCD.
07:06:50 <Sukoshi> Errr...
07:06:52 <Sukoshi> RSI.
07:06:59 <Sukoshi> ;D
07:07:28 <Sukoshi> Ah the power of Lisp.
07:17:21 <CakeProphet> hmmm...
07:17:23 <CakeProphet> not surprisingly.
07:17:30 <CakeProphet> when you use regex to substitute things into regex.
07:17:32 <CakeProphet> problems arise.
07:18:03 <Sukoshi> I can't think why if you use your macros correctly.
07:18:12 <Sukoshi> Oh wait -- this is Python.
07:18:22 <CakeProphet> Yah.
07:18:31 * Sukoshi pities the stringent syntax.
07:18:46 <CakeProphet> eh... I must be used to it.
07:18:51 <CakeProphet> I find it very "lazy".
07:19:05 <Sukoshi> Haskell is lazier :P
07:19:08 <CakeProphet> No semicolons and braces and all that jazz.
07:19:28 <CakeProphet> C looks gawd-awful to type... but I guess you'd get used to all the symbols after a while.
07:19:42 <Sukoshi> It's easy to parse.
07:19:51 <Sukoshi> Plus, it makes for fun formatting tricks.
07:20:11 <Sukoshi> I, personally, abhor overreliance on whitespace.
07:20:32 <CakeProphet> meh... small rewards for the task of typing all that crap out.
07:20:44 <Sukoshi> Typing what out?
07:20:47 <Sukoshi> A semicolon?
07:20:57 <CakeProphet> semicolons and braces... not to mention it looks ugly.
07:21:07 <CakeProphet> A few hundred semicolons.
07:21:27 <Sukoshi> What if you were working on a very small resolution display, and indendation would look horrible?
07:21:50 -!- MM2 has joined.
07:21:56 <CakeProphet> ...I haven't thought about it much.
07:22:02 <Sukoshi> :P
07:22:13 <CakeProphet> Good argument though.. :P :P :P
07:22:45 <Sukoshi> Also, think about using regexps to go through Python code and change stuff around -- annoying.
07:23:22 <CakeProphet> It's like saying "You'd care more about how slow Python is if you were on a 1980s IBM"
07:23:55 <Sukoshi> More like "You'd care more about how slow Python is if you did anything system critical."
07:24:31 <CakeProphet> I remember some implementation of Python written in Python, with the very ambitious goal of becoming faster than C. :P
07:24:46 <CakeProphet> Don't think it'll happen anytime soon.
07:24:50 <Sukoshi> There's Jython, and that's scary.
07:24:56 <CakeProphet> PyPy
07:25:16 <Sukoshi> Python being compiled by Java. Whoo.
07:25:24 <CakeProphet> Yeah...
07:26:02 <CakeProphet> I've never encounted any slowness with Python so far... but I haven't really worried about it
07:26:56 <Sukoshi> Python is slow on my box.
07:27:00 <Sukoshi> At times.
07:27:07 <Sukoshi> My box is on the older side, so.
07:27:45 <Sukoshi> Take a look at the Computer Language Shootout results.
07:39:37 * CakeProphet doesn't trust benchmarks.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:26:14 -!- anonfunc has quit.
09:52:12 <CakeProphet> whjoooo
10:25:58 -!- xpika has joined.
10:26:19 -!- xpika has left (?).
11:53:48 -!- tgwizard has joined.
13:19:30 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
13:48:39 <MM2> please tell me 8 first fibonacci numbers
14:27:39 -!- tgwizard has joined.
15:01:29 -!- jix has joined.
15:04:21 -!- Asztal has joined.
15:07:29 -!- Asztal has quit (Client Quit).
15:21:30 -!- oklopol has quit (Read error: 110 (Connection timed out)).
15:41:22 -!- oklopol has joined.
16:11:36 -!- oerjan has joined.
16:32:41 -!- CakeProphet has quit ("haaaaaaaaaa").
16:55:36 -!- digital_me has joined.
17:15:06 -!- CakeProphet has joined.
17:21:55 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
17:35:49 -!- digital_me has quit (Read error: 104 (Connection reset by peer)).
17:41:00 -!- digital_me has joined.
17:57:00 -!- digital_me_ has joined.
18:04:10 * SimonRC goes ooh: http://www.coolopticalillusions.com/optical_illusions_pictures_3/candy_stripes.htm
18:06:05 <oerjan> cool
18:07:00 <SimonRC> There seems to be a battle going on in the high-tech language world.
18:07:37 <SimonRC> On one side, there is Lisp, with its ability to perform arbitrary transformations on program source code.
18:08:10 <SimonRC> On another side, there is Haskell, with its power of manipulating actual programs and computations.
18:08:35 * oerjan is at the moment programming Brainfuck in Haskell
18:08:40 <SimonRC> On a third side, there are the OO languages with high-powered reflection.
18:08:59 <SimonRC> oerjan: define "programming Brainfuck in Haskell"
18:09:06 <oerjan> making an interpreter
18:09:18 <pikhq> On the fourth side, there are low-level languages saying "we can do it, too!"
18:09:28 -!- digital_me has quit (Read error: 110 (Connection timed out)).
18:10:10 <oerjan> I wanted to make a brainfuck interpreter that is completely customizable as to tape size, cell value sizes and wrapping.
18:10:37 <SimonRC> oerjan: ooh
18:10:51 -!- digital_me has joined.
18:11:19 * digital_me goes oooh too
18:11:57 <SimonRC> at my URL, not what oerjan said I hope
18:12:06 <SimonRC> unless you forgot to turn your ESP off again
18:12:09 <SimonRC> XP
18:13:07 <pikhq> Is bad for you.
18:13:21 * SimonRC is reading _Thud_ by PTerry. Very good book, especially page 290.
18:19:05 <digital_me> SimonRC: yes, lol
18:28:44 -!- digital_me_ has quit (Connection timed out).
18:40:59 -!- sebbu has joined.
18:41:47 -!- CakeProphet has joined.
18:59:38 <SimonRC> CakeProphet: hi
19:07:15 -!- oerjan has quit ("leaving").
19:16:21 <CakeProphet> mskeg
19:16:22 <CakeProphet> Hey.
19:18:40 * SimonRC wonders what MS Keg would be if it existed.
19:20:42 <CakeProphet> hmmm
20:07:42 * SimonRC has dinner
20:23:12 -!- RodgerTheGreat has joined.
20:23:29 <RodgerTheGreat> howdy
20:55:29 <CakeProphet> aah
20:56:18 * CakeProphet is toying with new ideas on how to turn common parts of programming languages into unconvential data types.
20:56:39 <CakeProphet> Everything should be data... if it isn't, you can't manipulate it to its full potential.
20:58:05 <CakeProphet> So thinks like variable names, call stacks, evaluation stack, parse trees, and language syntax should all be expressable by data of some sort.
20:59:48 <CakeProphet> So... for example...
21:00:21 <CakeProphet> x = syntax("(")
21:00:28 <CakeProphet> y = syntax(")")
21:00:43 <CakeProphet> 2root = sqrty x 2 y
21:00:48 <CakeProphet> should yield the square root of two.
21:02:00 <CakeProphet> a weird example... but I'm sure with some tweaking to how it works you could make some interesting applications with it.
21:02:58 <CakeProphet> That would requite some interesting runtime parsing mechanics. :P
21:03:28 <CakeProphet> Better yet... you could do it like Lisp with the quote operator.
21:03:52 <CakeProphet> and have the quote operator represent a "suspended" sytax... that isn't evaluated till later.
21:09:25 -!- Keymaker has joined.
21:09:53 <Keymaker> hello. 99 bottles of beer in underload: http://koti.mbnet.fi/~yiap/programs/underload/99.ul
21:10:14 <Keymaker> finally got around finishing this one. i'm happy about it, as it's my first program in this kind of language
21:10:32 <Keymaker> first that does something logic, that is
21:10:52 <Keymaker> my two others in underload are a quine and something that prints natural numbers in unary
21:11:03 * SimonRC returns himself.
21:11:38 <SimonRC> CakeProphet: yuk
21:11:57 <SimonRC> Thou shalt not fuck around with the parser at runtime.
21:12:16 <RodgerTheGreat> Keymaker: cool
21:12:21 <Keymaker> thanks
21:13:49 * SimonRC wonders where Underload is defined
21:14:11 <RodgerTheGreat> http://esoteric.voxelperfect.net/wiki/Underload
21:14:17 * RodgerTheGreat slaps SimonRC
21:14:36 <RodgerTheGreat> this is why we can't have nice things
21:17:52 <SimonRC> heh
21:17:56 <SimonRC> nice
21:18:07 <CakeProphet> SimonRC, Why not :(
21:18:27 <CakeProphet> You could assign expressions to any generic set of symbols...
21:18:46 <CakeProphet> '[ := '(
21:18:52 <CakeProphet> Hello["World")
21:19:15 <SimonRC> I feel that changing suck things at runtime would make the language a little slow.
21:19:52 <CakeProphet> Not if you do it right
21:20:00 <SimonRC> In fact, you are almost screwing with the lexer at run-time.
21:20:19 <CakeProphet> If the language is designed for it's purposes... rather than implementing it as a bolt-on later in life... it'll be more well-suited for it.
21:20:31 <SimonRC> plus you would end up leaving large holes all over your language spec.
21:21:15 <CakeProphet> ...it's an esolang idea... it's supposed to be weird. :P
21:21:19 <SimonRC> Lisp only gets away with it because it restricts lexer-around-with-screwing to read-time.
21:21:45 <SimonRC> You know about the lifecycle of Lisp source code, right/
21:21:46 <SimonRC> ?
21:21:50 <CakeProphet> No.
21:22:15 <SimonRC> the compiler reads a series of "forms" from each input file.
21:22:23 <SimonRC> that s called read time
21:22:51 <SimonRC> any of those forms may change the lexer.
21:22:56 <Keymaker> termination..
21:22:59 -!- Keymaker has quit.
21:23:16 <SimonRC> ah, they may only change the lexer for following forms
21:24:07 <CakeProphet> The if the lexer holds a series of states... and plugs in the proper values from these malleable state values... it would be trivial to have a lexer that can change how it parses mid-runtime.
21:24:16 <SimonRC> once the forms are read it, there is compile time, which IIRC starts with macro-expansion, which allows you to pass parts of parse trees (s-expressions) through arbitrary functions, which it handy.
21:24:28 <CakeProphet> it would most likely be an interpreted language though.
21:24:37 <SimonRC> CakeProphet: yeah, but that reduces your ability to optimise
21:24:58 <SimonRC> it prevents such fundamental optimisations as, say, *compiling* the program.
21:25:03 <CakeProphet> ...no use optimizing a interpreter/compiler that doesn't exist yet.
21:26:02 <CakeProphet> I don't care about speed.
21:43:57 -!- RodgerTheGreat_ has joined.
21:44:00 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
21:44:13 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
21:56:55 -!- RodgerTheGreat_ has joined.
21:57:11 <RodgerTheGreat_> motherfucking wifi
22:00:05 -!- ihope_ has joined.
22:00:15 <ihope_> Any idea how much bandwidth the esowiki uses?
22:02:42 -!- oerjan has joined.
22:04:37 <bsmntbombdood> ONE MILLION MEGABITS
22:05:04 <oerjan> ooh
22:05:40 <RodgerTheGreat_> make that ONE BILLION and you have yourself a deal
22:05:42 <ihope_> Per day?
22:05:58 <bsmntbombdood> ihope_: No, per seconds
22:05:59 <ihope_> ONE BILLION per day?
22:06:03 <ihope_> Oh.
22:06:11 <ihope_> Per how many seconds? :-P
22:06:12 <bsmntbombdood> s/second/mu second/
22:06:25 <ihope_> Still plural.
22:06:33 <bsmntbombdood> s/seconds/mu second/
22:09:08 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
22:12:28 -!- RodgerTheGreat_ has quit (Remote closed the connection).
22:12:47 -!- RodgerTheGreat has joined.
22:15:07 <RodgerTheGreat> http://youtube.com/watch?v=WwylBRucU7w&mode=related&search <- lol
22:18:21 <bsmntbombdood> LOL 2 U
22:23:07 <CakeProphet> jajajaja
22:31:13 <ihope_> Is that that blender thing?
22:41:00 -!- digital_me has quit ("Lost terminal").
22:51:29 -!- RodgerTheGreat_ has joined.
22:51:46 -!- RodgerTheGreat_ has quit (Remote closed the connection).
22:52:26 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
22:52:26 -!- RodgerTheGreat_ has joined.
23:31:08 -!- digital_me has joined.
←2007-01-02 2007-01-03 2007-01-04→ ↑2007 ↑all