←2006-11 2006-12 2007-01→ ↑2006 ↑all
2006-12-01
00:28:25 -!- wooby has joined.
01:01:06 -!- wooby has quit.
01:10:19 -!- wooby has joined.
01:15:24 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
01:24:38 -!- GregorR-L has quit ("Leaving").
01:38:14 -!- wooby has joined.
03:48:53 -!- Asztal has joined.
04:27:53 -!- SevenInchBread has quit (Read error: 60 (Operation timed out)).
05:12:14 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
05:14:15 -!- Arrogant has joined.
07:04:30 -!- anonfunc has joined.
07:30:54 -!- wooby has quit.
07:31:46 -!- Sgeo has quit ("Ex-Chat").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:53:39 -!- evilC has joined.
08:56:38 -!- evilC has left (?).
11:00:55 -!- cmeme has quit (Remote closed the connection).
12:09:13 -!- Arrogant has quit ("Leaving").
15:50:55 -!- jix has joined.
15:51:02 -!- tgwizard has joined.
16:53:21 -!- oerjan has joined.
17:06:31 -!- anonfunc has quit.
17:11:48 -!- GregorR-L has joined.
21:09:17 -!- oerjan has quit ("Good night").
21:50:10 -!- SevenInchBread has joined.
21:57:55 -!- Sgeo has joined.
21:58:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:09:50 -!- Aardwolf has joined.
22:09:56 <Aardwolf> Hello
22:11:53 <bsmntbombdood> HI!!!
22:12:03 <bsmntbombdood> !help
22:12:14 <bsmntbombdood> aah egobot still isn't here
22:12:56 <Aardwolf> Sup with the wiki?
22:38:54 -!- tgwizard has quit (Remote closed the connection).
23:27:04 <GregorR-L> EgoBot isn't here because people abused it and I'm tired of that.
2006-12-02
01:14:54 -!- Razor-X has quit (Remote closed the connection).
01:23:25 -!- Razor-X has joined.
01:32:06 -!- GregorR-L has quit ("Leaving").
01:53:22 <Aardwolf> what's the IP address of esolangs.org?
01:53:41 <Aardwolf> after the move
01:56:34 <Razor-X> ** Ping ** ping ** esolangs.org PING esolangs.org.org (209.86.66.93) 56(84) bytes of data.
01:56:45 <Razor-X> Does that answer your question?
01:58:23 <Aardwolf> yep, because if I pinged it, it said:
01:58:28 <Aardwolf> ping esolangs.org
01:58:28 <Aardwolf> ping: unknown host esolangs.org
01:58:43 <Razor-X> M-x ping
01:58:46 <Razor-X> Gotta love Emacs.
01:59:20 <bsmntbombdood> hehe
01:59:23 <bsmntbombdood> do you use ERC?
01:59:31 <Aardwolf> the IP brings me to a spammy earthlink site though
01:59:58 <bsmntbombdood> I hate how earthlink does that
01:59:58 -!- wooby has joined.
02:00:11 <bsmntbombdood> I want real dns, damnit!
02:00:24 <Aardwolf> :(
02:00:37 <Aardwolf> I think that my DNS server is confused about esolangs.org somehow
02:01:38 <Aardwolf> can anyone of you access the wiki?
02:04:14 <Razor-X> Yeah, I do bsmntbombdood.
02:07:06 <Razor-X> Although, recently RCIRC has been getting the news articles.
02:09:19 <bsmntbombdood> Maelzel, who bade me pleasant weather the eyelids were it will be sure trader, I believed from tree stood a man whipped syllable!
02:12:49 <bsmntbombdood> How fairy-like hue of the danger of a thousand years, upon the moral soul has nothing. We may be impels us, and after our depth. There is the first.
02:13:17 <bsmntbombdood> this is fun
02:13:27 <Aardwolf> what is it
02:13:32 <Aardwolf> texts from spam mails? :D
02:13:40 <bsmntbombdood> nope
02:14:02 <Aardwolf> source code?
02:14:03 <bsmntbombdood> 37,000 lines of edgar allen poe ran through a markov chain based text generation algorithm
02:14:15 <Aardwolf> aha
02:14:58 <bsmntbombdood> From the House of the lips resumed the lonely went boldly out
02:15:40 <bsmntbombdood> The house of lips!
02:15:59 <Aardwolf> hehe, I'm sure that spam mail generators use a similar algorithm
02:18:18 <bsmntbombdood> this is awsome
02:19:08 <bsmntbombdood> You can generate some crazy words
02:19:27 <bsmntbombdood> som Frof luessan thaut, asperach thand undclifich terslike
02:20:51 <bsmntbombdood> woureattledia! Uponed enegen se no in theas shruce
02:22:40 <Aardwolf> oard perfect factsrisk assessment mapstate, by state datauseful?
02:24:13 <bsmntbombdood> I need some other author to do it with
02:25:27 -!- pikhq has joined.
02:31:43 * pikhq lives again.
02:32:34 <bsmntbombdood> If you are interested, the code is at http://bsmntbombdood.mooo.com/markov.lisp
02:59:04 * SimonRC does evil things to "pointsfree".
02:59:14 <SimonRC> I gave it \a:b:c:d:e:f:z->f:e:d:c:b:a:z
02:59:51 * pikhq has made the optimizer in BFM much smarter, and is in the middle of a rewrite into several passes (for clarity purposes).
03:00:17 <wooby> Aardwolf: you're right it's not working
03:00:24 <wooby> Aardwolf: you can get to the wiki from here though: http://esoteric.voxelperfect.net/
03:58:41 <Razor-X> I've decided to play around with Common Lisp, but I wonder what makes it so ``Lisp-y'' if it uses iterative loops.
04:00:07 <bsmntbombdood> Scheme has iterative looping constructs doesn't it?
04:00:17 <Razor-X> Yeah it does, but it's considered bad Scheme style.
04:00:28 <Razor-X> And if you need anything more crazy than that, you just use call/cc.
04:00:48 <bsmntbombdood> Someone in #lisp told me to rewrite a recursive function iteratively
04:01:02 <Razor-X> I can do both fairly well.
04:01:39 <Razor-X> There are some applications where recursion is simply an easier way to code. An infix expression parser is one of those.
04:01:49 <bsmntbombdood> indeed
04:02:06 <bsmntbombdood> The LOOP macro is extremely unlispy
04:02:16 <Razor-X> I remember LOOP scaring me.
04:02:22 <Razor-X> Because it was so much to memorize.
04:02:38 <bsmntbombdood> (loop for i from 0 to (- (length seq) len) by len collecting (subseq seq i (+ i len)))
04:03:06 <pikhq> I'm scared shitless.
04:03:12 <Razor-X> One of the main reasons DO is not used in Scheme very often is because the syntax is longer to remember than tail recursion. Of course, tail recursion pays the price of computing effeciency until you learn the streams abstraction.
04:03:33 <bsmntbombdood> streams abstraction?
04:03:34 <Razor-X> There's a whole LOOP sublanguage. Like the DEFMACRO sublanguage.
04:03:43 <Razor-X> bsmntbombdood: ... You haven't read SICP?!
04:03:47 <bsmntbombdood> DEFMACRO doesn't have a sublanguage
04:03:49 <SimonRC> The essence of common lisp lies not in being functional, because it often isn't, but in it's macros.
04:04:09 <Razor-X> DEFMACRO is not hygenic Common Lisp.
04:04:22 <SimonRC> s/it's/its/
04:04:25 <Razor-X> Which is why Scheme SYNTAX-CASE macros are specifically called ``hygenic macros''.
04:04:34 <bsmntbombdood> DEFMACRO is the only way to do some stuff
04:04:39 <bsmntbombdood> Non-functional stuff
04:04:53 <Razor-X> GENSYMs were annoying. I remember that much too.
04:05:04 <bsmntbombdood> Nope, what's SICP?
04:05:09 * Razor-X dies.
04:05:19 <Razor-X> One of THE best treatises on computer science EVER.
04:05:30 <Razor-X> Structure and Interpretation of Computer Programs.
04:05:59 <bsmntbombdood> meh
04:06:51 <bsmntbombdood> (defmacro queue-push (item place) `(setf ,place (append ,place (list ,item))))
04:06:52 <Razor-X> I can't see why there isn't something in between Common Lisp and Scheme. Something hygenic, but also having machine-like capabilities.
04:07:01 <bsmntbombdood> You can't write that as a function
04:07:38 <Razor-X> Why? Can't Common Lisp functions produce other functions?
04:07:54 <bsmntbombdood> Yes...
04:08:36 <bsmntbombdood> Why would that make a difference?
04:09:34 <Razor-X> (define (queue-push item place) (define (queue-push* item place) `(set! ,place (append ,place (list ,item)))) (eval (queue-push* item place) <implementation-dependant environment>))
04:10:08 <bsmntbombdood> common lisp doesn't have define, but ok
04:10:11 <Razor-X> A subfunction generates the new function, and then the outer function evaluates it. Simple.
04:10:27 <Razor-X> Well, DEFINE here is being used in the same way as DEFUN, no?
04:10:32 <bsmntbombdood> yeah
04:11:03 <bsmntbombdood> But that still doesn't work
04:11:09 <Razor-X> Why not?
04:11:17 <bsmntbombdood> (common) lisp doesn't have pass by reference
04:11:38 <Razor-X> Errr.... ?
04:12:15 <bsmntbombdood> Well, it does
04:12:33 <Razor-X> I'm not quite seeing what pass by reference and pass by value have anything to do here.
04:12:47 <Razor-X> I suspect this is some difference in the way procedures are handled.
04:12:49 <pikhq> Sounds like someone's brain is borken.
04:13:04 <bsmntbombdood> For a function to modify its args, you need pass by reference
04:13:05 <Razor-X> Meh.
04:13:18 <Razor-X> But, how does it matter? I'm generating a new function?
04:13:38 <Razor-X> QUEUE-PUSH* returns a new function, which is then EVALed.
04:14:04 <bsmntbombdood> Which is the whole point of DEFMACRO
04:14:18 <Razor-X> Oh... you can't do that in your average DEFUN ?
04:14:57 <bsmntbombdood> DEFMACRO does what you did for you
04:14:58 <bsmntbombdood> sorta
04:15:05 <Razor-X> Meh.
04:15:39 <bsmntbombdood> (defmacro queue-push (item place) `(setf ,place (append ,place (list ,item))))
04:16:06 <bsmntbombdood> (defun queue-push (item place) `(setf ,place (append ,place (list ,item))))
04:16:20 <bsmntbombdood> er, (defun queue-push-f (item place) `(setf ,place (append ,place (list ,item))))
04:16:32 <Razor-X> The DEFUN definition should just produce a procedure, no?
04:16:52 <bsmntbombdood> (queue-push ...) === (eval (queue-push-f ...))
04:16:53 <Razor-X> Or a closure... I think the Common Lisp term was.
04:17:17 <bsmntbombdood> yeah
04:18:38 <bsmntbombdood> But I only barely know cl, so I might be leading you off track
04:19:31 <Razor-X> (defun my-cons* (arg) `(cons ,arg '())) (defun my-cons (arg) (eval (my-cons* arg)))
04:19:33 <pikhq> What bsmntbombdood is saying is true seems absolutely unLispy to me. . .
04:19:39 <Razor-X> (my-cons 5) => (5)
04:19:54 <Razor-X> So it seems you don't need DEFMACRO.
04:20:02 <bsmntbombdood> no
04:20:22 <bsmntbombdood> You can't modify arg in MY-CONS
04:20:34 <Razor-X> Err, I'm not modifying any arg....
04:20:39 <Razor-X> And try that in your REPL too. It works.
04:21:44 <bsmntbombdood> yeah
04:22:47 <Razor-X> I know in Scheme the only reason I'd use a macro was if some piece of code kept repeating itself over and over again, or I was in this sort of a position, where it's technically better Lisp-style to use a macro to generate the code instead of having a helper procedure produce a procedure that is evaluated by the outer procedure.
04:22:50 <bsmntbombdood> But (defun my-cons (arg) (cons arg nil)) works just as well
04:23:48 <bsmntbombdood> (defun foo (arg) (setf arg 1)) doesn't modify arg outside of foo
04:23:56 <bsmntbombdood> (and can't)\
04:25:01 <Razor-X> Oh oh. I see.
04:25:13 <Razor-X> So, you're talking about modifying a top-level definition?
04:25:20 <bsmntbombdood> yeah
04:25:33 <Razor-X> Like, in Scheme, (define alpha 5) (define (test) (set! alpha 3)) ?
04:25:57 <bsmntbombdood> I don't know, what does that do?
04:25:59 <Razor-X> Maybe the first DEFINE usage becomes DEFPARAMETER in Common Lisp. I can't remember the difference between DEFPARAMETER and DEFVAR.
04:26:27 <bsmntbombdood> defparameter changes the value of the variable if it is already defined
04:26:35 <Razor-X> Ah-hah.
04:26:41 <Razor-X> So then the first DEFINE would be a DEFVAR.
04:27:03 <Razor-X> And I believe that SET! would become SETQ, but I'm not sure on that.
04:27:20 <bsmntbombdood> yeah
04:27:25 <bsmntbombdood> I think
04:27:51 <Razor-X> The R5RS standard is really tiny. Even the draft for R6RS is pretty small too. It's fairly simple to memorize everything in it.
04:28:27 <Razor-X> Common Lisp seems appealing because of its support for such things as variable types and endian-ness and good binary file support and such. Just seems more robust.
04:29:22 <bsmntbombdood> I think that Scheme is more pure, and cl is more usefull (outside of the educational world)
04:29:41 <Razor-X> Yeah. Scheme manipulating binary files becomes a bit cumbersome.
04:30:50 <bsmntbombdood> I was looking at some code to read a file, it is very unlispy
04:30:53 <Razor-X> In Chicken, you'd end up creating your own mini OOP system (unless you want to use something that already exists like TinyCLOS, but I hate them all) to represent the byte structure of the file and other abstractions for binary data slots.
04:31:34 <Razor-X> And even in R6RS there's nothing like bit shifting and stuff. The closest thing they have to the architecture in the R6RS draft is endian-ness.
04:32:19 <Razor-X> I love Lisps :3
04:32:25 <bsmntbombdood> heh
04:33:08 <Razor-X> Oh, have you read the post that started StumpWM?
04:33:14 <bsmntbombdood> no
04:33:31 <Razor-X> It's funny. It's part of the coding-Lisp-under-acid ethos.
04:34:12 <bsmntbombdood> I love my window manager
04:34:33 <Razor-X> I used Ratpoison, so I'd love to see StumpWM become a tour de force.
04:34:46 <Razor-X> s/used/use/
04:34:51 * bsmntbombdood uses ion
04:34:59 <Razor-X> Ion's too complicated for me, heh.
04:35:08 <Razor-X> Too many dadgummed keys to remember.
04:35:50 <bsmntbombdood> I go out of ion style and use the mouse for some stuff
04:36:17 <Razor-X> The mouse is useless in ratpoison.
04:36:34 <bsmntbombdood> yeah
04:36:57 <Razor-X> I, frankly, don't like reaching the 30 cm over to my trackball.
04:37:03 <Razor-X> It's too far.
04:40:10 <Razor-X> Even though I'd get dreadfully flamed out in both #scheme and #lisp for saying this, I think both of the lisps are drifting towards each other. R6RS really shows the burden of having such a minimal standard on Scheme, and I think CL is also beginning to adopt a more ``clean abstraction'' style.
04:42:15 <Razor-X> I'm having a Paul Graham moment :P
04:42:59 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
04:43:05 <bsmntbombdood> never heard of him
04:43:10 <Razor-X> O_O
04:43:23 <Razor-X> You're... learning CL.... without hearing about Paul Graham?!?!?!
04:43:30 * Razor-X oggles.
04:43:38 <bsmntbombdood> I guess I should look him up
04:43:49 <Razor-X> He is *the* foremost Lisp elitist out there.
04:44:26 <Razor-X> He and Chuck Moore are singular to their dedication to their paradigms of choice, and have written hopeless amounts of propoganda for their respective paradigms.
04:44:46 <Razor-X> (And then there's Jeff Fox, who sounds like Moore Came To Him in a Revelation and was Saved by Moore.)
04:45:42 <Razor-X> If Graham were writing for Stalin instead of for Lisp, the people would be whooping and cheering in love for The Party.
04:47:35 -!- pikhq has joined.
04:49:34 <bsmntbombdood> It's crazy how old lisp is
04:52:32 <bsmntbombdood> this is cool: http://www.levenez.com/lang/history.html#04
05:03:49 <Razor-X> Yeah, it is.
05:03:56 <Razor-X> I can't even understand how other languages got traction.
05:04:16 <Razor-X> Well, I can understand C, but I would see the word as: Low-level: C, High-level: Lisp.
05:05:16 <pikhq> I can understand C++ gaining traction, by merit of being C-oid. . .
05:05:38 <pikhq> Although what it's been abused for is rather surprising.
05:05:56 <Razor-X> I can't imagine C++ getting traction. Why, how, what drove these mad people?!
05:06:21 <Razor-X> g++ after being worked on for years by hundreds of developers is only slightly stronger than GHC, OCaML, and clisp.
05:06:40 <Razor-X> And it even loses in certain tests.
05:06:41 <pikhq> Getting away from the restrictions of C while still being C.
05:06:52 <Razor-X> I call that C and a monkey's bastard child.
05:07:17 <Razor-X> Yeah, that's my respect for C++.
05:07:31 <pikhq> I can understand it getting traction simply because there are people mad enough to think its the world's greatest language.
05:07:59 <Razor-X> But someone would have to commit the original folly before the university hordes begin being indoctrinated in it.
05:08:25 <Razor-X> I feel how the old C++ites feel with Java now. They must feel like leftovers from the Last Crusade.
05:08:41 <Razor-X> s/feel how/wonder how/
05:26:08 * SimonRC goes to bed
05:28:23 -!- Sgeo has quit (Remote closed the connection).
05:37:47 -!- anonfunc has joined.
05:52:19 <bsmntbombdood> Ok, what came after lisp?
05:52:21 <bsmntbombdood> COBOL
05:52:37 <bsmntbombdood> Now, people like cobol for it's englishness
05:53:18 <bsmntbombdood> Now, I don't know where I'm going with this
05:54:02 <pikhq> People *hate* Cobol for it's Englishness, actually. XD
05:54:27 <bsmntbombdood> Well then how did it catch on?
05:54:44 <pikhq> Managers, unlike human beings, like Cobol for that trait.
05:55:01 <Razor-X> That needs to be quoted :P
05:55:10 <bsmntbombdood> And managers controll what language there subordinates use
05:55:41 <Razor-X> Rather than having books on Scheme or Haskell or even Forth in the miscellaneous languages section of our local Borders, you have Common Lisp and COBOL.
05:55:48 <Razor-X> And FORTRAN.
05:55:52 -!- twobitsprite has joined.
05:56:12 <twobitsprite> is there a channel for the Joy language anywhere? (I figured you guys would know)
05:56:21 <pikhq> Classifying Lisp and COBOL together is like classifying Life and Death together.
05:56:28 <twobitsprite> or... is there at least anyone on here that knows anything about Joy?
05:56:29 <pikhq> twobitsprite: If it's an esolang, this'd be it. :p
05:56:41 <bsmntbombdood> Razor-X: ?
05:56:47 <Razor-X> As you just saw twobitsprite, nope.
05:56:55 <twobitsprite> I don't know if Joy is intended to be an esolang
05:56:57 <Razor-X> On the channels business.
05:57:05 <twobitsprite> Razor-X: yeah...
05:57:06 <Razor-X> A link to Joy please?
05:57:16 <twobitsprite> http://en.wikipedia.org/wiki/Joy_programming_language
05:57:22 <Razor-X> ありがとう。
05:57:28 <twobitsprite> it looks like it's mostly in early developement...
05:58:17 <Razor-X> Oh, so that's where I remember it from...
05:58:26 <Razor-X> You'll be getting the most support from #forth.
05:58:36 <twobitsprite> that's what I was thinking
05:59:02 <Razor-X> Functionality and stack usage scare me.
05:59:05 <bsmntbombdood> interesting
05:59:29 <bsmntbombdood> why?
05:59:31 <Razor-X> They're paradigms which I see as almost entirely mutually exclusive (unless you implement a stack in a functional language, which is something different altogether).
06:00:08 <twobitsprite> Razor-X: joy seems to be doing alright...
06:00:10 <bsmntbombdood> I think you can functionally program in forth
06:00:19 <Razor-X> You can, but it's not a preferred way.
06:00:24 <Razor-X> Now, that's just me, of course.
06:00:35 <pikhq> Razor-X: Yay! Unicode works here for once!
06:00:36 <Razor-X> I can't imagine recursion very well with a dedicated stack.
06:00:48 <bsmntbombdood> forth has recursion
06:00:55 <Razor-X> Tail recursion, rather.
06:01:17 <twobitsprite> factor has full tail-call optimization
06:01:17 <Razor-X> It has tail recursion (by way of RECURSE), but it's not used very often.
06:01:31 <pikhq> For a second there, I was thinking that it was "Ari ga tou", though. . . XD.
06:01:38 <Razor-X> ... ;D
06:01:50 <Razor-X> The and is truth?
06:01:54 <Razor-X> *ant
06:02:39 <Razor-X> Of course, If Factor and its like do fly, I'd love to pursue it, but IMO I don't think I can cope well with the paradigm.
06:02:55 <Razor-X> Kinda like how I'm not that good with OOP paradigms.
06:03:48 <bsmntbombdood> OOP is great
06:04:27 <pikhq> It suffers from "when all you have is a hammer, everything starts looking like a nail", though.
06:04:39 <bsmntbombdood> I'm not saying it works for everything
06:05:09 <pikhq> Not saying you did. I'm just saying that OOP suffers from that problem.
06:06:10 <twobitsprite> yeah... it's easy to think to yourself "but everything /is/ an object" until you get into strange constructs which would only occur in a program which are not easily stuffed into an object
06:08:17 <pikhq> "but everything /is/ a function". ;)
06:09:38 <Razor-X> Everything is *not* an object.
06:09:58 <bsmntbombdood> It is in java
06:10:07 <Razor-X> Meh. That's true.
06:10:28 <Razor-X> Objects, in my experience, are only useful for situations in which you need differing state per instance of object and assosciated functions to this instance that manipulate local state.
06:10:47 <Razor-X> I've never actually thought of programming in terms of manipulating objects.
06:11:00 <RodgerTheGreat> hm
06:11:05 <twobitsprite> but the problem is, proceedures (which is what any program is in a language like Java, etc, that fact is just disguised from you) to not easily (or, at least not obviously) break down in to categorical heirarchies
06:11:24 <Razor-X> Yes.
06:11:37 <Razor-X> I also hate the fact about OOP in that, what should belong to the superclass, what to the subclass, etc.
06:11:45 <Razor-X> Even though the decision is at best aesthetic.
06:11:45 <twobitsprite> A quicksort is not an object
06:12:02 <bsmntbombdood> But a quicksort can be a method
06:12:06 <bsmntbombdood> on a lits
06:12:08 <bsmntbombdood> list
06:12:25 <RodgerTheGreat> twobitsprite: it should be a method contained by an object that manages related types of methods
06:12:36 <Razor-X> Yeah, I can understand Lisp's everything-is-a-procedure methodology pretty well.
06:12:54 <Razor-X> Obviously there are places where it's cumbersome.
06:13:12 <Razor-X> I doubt that most people define constants using Church Numerals in their Scheme programs.
06:13:20 <twobitsprite> bsmntbombdood: I understand this... bad analogy really... there are however proceedures which can be applied to "objects" (data structures, really) which do not all belong to some superclass...
06:13:30 <bsmntbombdood> Yeah
06:13:58 <RodgerTheGreat> OOP doesn't necessarily mean "everything is an object", it means you use objects to categorize and organize your code logically and modularly. Modularity is the main advantage, really.
06:14:05 <twobitsprite> To think that everything in the world can be boiled down into some top-down heirarchy is just silly
06:14:12 <RodgerTheGreat> true, true
06:14:13 <pikhq> bsmntbombdood: What'd be better is a generic quicksort function which applies to many datatypes.
06:14:44 <Razor-X> My two best paradigms are either on the byte level, where I can think of things as simply bytes and structures pointing to positions of bytes, or the functional methodology.
06:14:59 <Razor-X> Of course, OOP is invaluable in certain situations as well.
06:15:01 * pikhq likes the Brainfuck paradigm. :p
06:15:04 <RodgerTheGreat> but every language effectively imposes it's own design philosophy on how you do things, and the related limitations or caveats
06:15:16 <pikhq> I've been doing too much on BFM lately.
06:15:33 <Razor-X> I'm spread between 2 projects, and am about to tackle on a third.
06:15:43 <pikhq> (optimization is approaching perfection, and BFM is being split into multiple passes of compilation for clarity's sake)
06:15:47 <RodgerTheGreat> that's why everyone should learn many different languages with different paradigms- and that's what Esoteric Programming is all about
06:15:55 <Razor-X> Yup.
06:16:13 <Razor-X> An ID3v2 parser/creator, and SLUMTP. I'll be attempting to create a port of jMemorize soon enough.
06:16:42 <twobitsprite> RodgerTheGreat: right, of course... I'm mostly ranting on about how the IT industry likes to think that OOP is god's gift to software
06:17:19 <RodgerTheGreat> yeah
06:17:22 <RodgerTheGreat> I understand
06:17:39 <twobitsprite> In reality, if you designed your program well enough in the abstract from the beginning, it really doesn't matter what language you use to implement it, it's all simply a matter of taste and style
06:17:45 <RodgerTheGreat> Personally, I like Java, but it's not the best tool for everything.
06:17:57 * twobitsprite personally despises java
06:17:59 <RodgerTheGreat> Language choice should reflect the task at hand
06:18:01 <twobitsprite> dispises*
06:18:05 <Razor-X> No RodgerTheGreat has the right of it. Each language has its own biases.
06:18:12 <pikhq> twobitsprite: If you designed your program that well in the beginning, you're not in the real world.
06:18:30 <pikhq> One should attempt to use a language which is biased in favor of what you need from it.
06:18:33 <Razor-X> Lisps have the capability to be tuned to your program domain, but that tuning requires thinking Lispily.
06:18:56 <twobitsprite> pikhq: of course, no design is perfect, and knowing the nuances of your chosen language will effect your design, but for the most part and language, so long as it is turing complete, will do
06:19:22 <twobitsprite> s/and/any
06:19:39 <pikhq> twobitsprite: That goes without saying.
06:20:10 <pikhq> (if you are worthy of the title "programmer", that is)
06:20:28 <RodgerTheGreat> I think the most useful thing I learned from LISP is the related design philosophy- code everything assuming the rest of your program works.
06:20:47 <twobitsprite> it's mostly a matter of which language provides the most features which will save you typing and save you from focusing on to many inane details
06:21:18 <RodgerTheGreat> I'd agree with that
06:23:02 <RodgerTheGreat> I've been playing with LUA lately- I really like the design of the language. It embodies a number of the things I liked about BASIC.
06:23:30 <RodgerTheGreat> without all of the business these days of "making BASIC a *real* language"
06:28:04 * pikhq notes that the next Gnash version is due "any day now". . .
06:29:02 <pikhq> Which should, in theory, support all of Flash v7 and parts of v8. . .
06:29:21 <pikhq> The version supporting all of v9 is targeted for this summer. :)
06:31:01 <bsmntbombdood> hmm
06:43:18 -!- Robdgreat has joined.
06:43:30 * RodgerTheGreat coughs
06:46:41 <pikhq> Thief.
06:50:28 -!- pikhq has quit ("leaving").
07:00:19 <Robdgreat> eh.
07:06:23 * twobitsprite sharpens his tension knife
07:07:08 <RodgerTheGreat> hah. wit.
07:07:30 * twobitsprite tries.
07:07:34 -!- sreeram has joined.
07:07:56 * Robdgreat shrugs.
07:08:14 <Robdgreat> I've only been using this nick for 10 years. But I can change just for you.
07:08:16 -!- Robdgreat has changed nick to Asaph.
07:08:40 <twobitsprite> eh?
07:09:30 <Asaph> I entered and was greeted with a cough and "Thief."
07:09:58 <Asaph> eh, screw it.
07:09:59 <twobitsprite> ahh... is this about the similarity of nicks between you and RodgerTheGreat? lol...
07:10:23 * RodgerTheGreat shrugs
07:10:25 <Asaph> I suppose.
07:10:47 <Asaph> no worries
07:10:51 <Asaph> have a good night
07:10:56 -!- ivan` has quit (" Try HydraIRC -> http://www.hydrairc.com <-").
07:10:58 -!- Asaph has quit ("Error 1606. Press any key to continue.").
07:11:07 <twobitsprite> that was odd
07:11:31 <bsmntbombdood> Error 666. Just too damn evil.
07:16:11 <RodgerTheGreat> lol
07:32:00 -!- twobitsprite has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:40 -!- sreeram has left (?).
08:05:03 <Razor-X> RodgerTheGreat: Oh? You've never programmed top-down before?
08:05:20 <Razor-X> I do it quite routinely.
08:05:40 <Razor-X> If x, do complex-y else complex-z. And then I later code complex-y and complex-z.
08:05:57 <Razor-X> I am a bit biased to top-down planning myself, because it suits my on-the-spot thinking style more.
08:13:21 <RodgerTheGreat> my tendency was building from the bottom-up, but I've found myself using top-down more for homework and such in my CS classes
08:13:46 <RodgerTheGreat> if I run into a problem, I can keep making progress toward completing the assignment, rather than just being stumped
08:14:47 <RodgerTheGreat> well, g'night everyone.
08:15:21 <wooby> goodnight
09:09:35 -!- anonfunc has quit (brown.freenode.net irc.freenode.net).
09:09:35 -!- Razor-X has quit (brown.freenode.net irc.freenode.net).
09:09:36 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net).
09:09:36 -!- pgimeno has quit (brown.freenode.net irc.freenode.net).
09:09:39 -!- puzzlet has quit (brown.freenode.net irc.freenode.net).
09:09:39 -!- sp3tt has quit (brown.freenode.net irc.freenode.net).
09:09:39 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
09:09:39 -!- lindi- has quit (brown.freenode.net irc.freenode.net).
09:09:40 -!- wooby has quit (brown.freenode.net irc.freenode.net).
09:09:40 -!- Aardwolf has quit (brown.freenode.net irc.freenode.net).
09:09:40 -!- SevenInchBread has quit (brown.freenode.net irc.freenode.net).
09:09:40 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
09:09:42 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
09:09:43 -!- lament has quit (brown.freenode.net irc.freenode.net).
09:09:43 -!- SimonRC has quit (brown.freenode.net irc.freenode.net).
09:09:44 -!- mtve has quit (brown.freenode.net irc.freenode.net).
09:09:44 -!- meatmanek has quit (brown.freenode.net irc.freenode.net).
09:11:33 -!- anonfunc has joined.
09:11:33 -!- wooby has joined.
09:11:33 -!- Razor-X has joined.
09:11:33 -!- Aardwolf has joined.
09:11:33 -!- SevenInchBread has joined.
09:11:33 -!- RodgerTheGreat has joined.
09:11:33 -!- pgimeno has joined.
09:11:33 -!- puzzlet has joined.
09:11:33 -!- SimonRC has joined.
09:11:33 -!- fizzie has joined.
09:11:33 -!- lindi- has joined.
09:11:33 -!- sp3tt has joined.
09:11:33 -!- bsmntbombdood has joined.
09:11:33 -!- lament has joined.
09:11:33 -!- GregorR has joined.
09:11:33 -!- meatmanek has joined.
09:11:33 -!- mtve has joined.
09:54:36 <Aardwolf> wooby, thanks for the link
09:54:57 <wooby> Aardwolf: no problem
09:55:08 <wooby> i emailed graue, i thought it might have been a dns problem
09:55:16 <wooby> apparently the server randomly stops working
10:16:08 <Aardwolf> Deltaplex is done
10:20:02 * wooby investigates
10:22:41 <wooby> ha that's awesome
10:23:51 <Aardwolf> I just hope someone will have the courage to make something in it, because it's so annoying to code in pixels
10:29:19 <wooby> heh
10:29:24 <wooby> perhaps an IDE is in order?
10:36:56 <Aardwolf> hah maybe :D
10:37:41 <wooby> hehe
10:38:06 <wooby> are you familiar with mondrian, the artist?
10:38:27 <wooby> he's the dutch guy that did the paintings that are multicolor blocks with black lines
10:40:34 <Aardwolf> yep, I know both him and the Piet programming language
11:00:24 <wooby> right
11:00:36 <wooby> well i was researching his stuff
11:00:44 <wooby> and did some preliminary research into
11:00:49 <wooby> a mondrian encoding scheme
11:00:57 <wooby> IE the most efficient way to store his original works
11:01:55 <wooby> and hm, its just kinda interesting :)
11:52:28 -!- jix has joined.
11:54:12 -!- sedimin has joined.
11:54:16 <sedimin> hi there
12:18:06 <Aardwolf> hi
12:24:24 -!- SevenInchBread has quit ("haaaaaaaaaa").
12:24:49 <sedimin> howdy?
12:34:53 <Aardwolf> sup
12:35:25 <sedimin> I have posted idea for new language
12:35:34 <sedimin> http://esoteric.voxelperfect.net/wiki/Stalactite
12:44:06 -!- anonfunc has quit.
12:47:06 <Aardwolf> checking...
12:57:04 -!- wooby has quit.
13:03:17 <Aardwolf> always nice if an esolang comes out of a dream ;)
13:04:44 <sedimin> hehe
13:04:58 <sedimin> this happened to me for the first time
13:05:22 <sedimin> but I don't think it happens usually, that would be quite crazy :)
13:34:49 -!- sedimin1958 has joined.
13:50:54 -!- sedimin has quit (Read error: 110 (Connection timed out)).
14:25:22 -!- jix_ has joined.
14:30:19 -!- jix has quit (Read error: 110 (Connection timed out)).
15:01:06 -!- sedimin1958 has quit (Read error: 110 (Connection timed out)).
15:06:23 -!- tgwizard has joined.
15:57:54 -!- cmeme has joined.
15:58:24 -!- cmeme has quit (Remote closed the connection).
15:58:55 -!- cmeme has joined.
16:02:28 -!- cmeme has quit (Read error: 131 (Connection reset by peer)).
16:02:33 -!- cmeme has joined.
16:03:02 -!- cmeme has quit (Remote closed the connection).
16:03:34 -!- cmeme has joined.
16:24:29 -!- SevenInchBread has joined.
16:41:08 -!- Sgeo has joined.
17:24:01 -!- SevenInchBread has quit (Connection reset by peer).
17:24:59 -!- SevenInchBread has joined.
17:26:15 <Razor-X> I'm reading over LOOP. Why would anyone want to use LOOP instead of DO?
17:26:39 <Razor-X> It stinks much too much of COBOL to me.
17:29:30 -!- pikhq has joined.
17:31:03 <pikhq> My bfm.tcl rewrite is now partially working.
17:32:31 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)).
17:33:22 -!- SevenInchBread has joined.
17:33:35 -!- SevenInchBread has quit (Connection reset by peer).
17:34:25 -!- SevenInchBread has joined.
17:35:26 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)).
17:36:20 -!- SevenInchBread has joined.
17:37:02 * pikhq ties SevenInchBread to the Freenode server
17:40:18 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)).
17:41:10 -!- SevenInchBread has joined.
17:50:53 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)).
17:51:46 -!- SevenInchBread has joined.
17:55:31 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)).
17:56:24 -!- SevenInchBread has joined.
17:59:10 -!- SevenInchBread has quit (Read error: 131 (Connection reset by peer)).
18:00:03 -!- SevenInchBread has joined.
18:15:59 -!- SevenInchBread has quit ("haaaaaaaaaa").
18:18:48 -!- CakeProphet has joined.
18:19:49 -!- CakeProphet has left (?).
18:19:55 -!- CakeProphet has joined.
18:27:47 -!- calamari has joined.
18:29:08 <pikhq> 'Lo.
18:29:21 <calamari> hi
18:29:34 <lament> med
18:46:03 <SimonRC> dadadaDOM!#
18:48:07 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
18:48:23 <RodgerTheGreat> howdy, everyone.
18:48:44 -!- pikhq has joined.
19:08:22 * SimonRC refers people to the famous story about Qc Na.
19:08:55 <SimonRC> I believe that is the definitive opinion on OO versus non-OO.
19:09:35 <pikhq> Care to refer to it?
19:09:41 <SimonRC> GIYF
19:16:19 <SimonRC> RodgerTheGreat: Surely the problem with top-down programming is when you try to split the problem up in ways it won't split. This complements the problem of bottom-up programming, which is writing a load of pieces of elegant code that each do a simple, well-defined task, but none of whic approach solving your actual problem.
19:16:36 <RodgerTheGreat> yes
19:18:47 <RodgerTheGreat> the only real solution is rigorously designing the interactions of portions of your code beforehand. Of course, building from the bottom up without such a previously defined design generally creates re-useable code even when not all of it ends up being necessary
19:21:01 <SimonRC> yup
19:21:46 <SimonRC> Although you may end up with a library of functions that are all very nice but not used much
19:22:32 <pikhq> As with all other things, the solution involves someone with a modicum of grey matter. . .
19:23:23 <SimonRC> heh
19:24:34 <SimonRC> ESR advocates a style he calls "midle-out programming" where you write the bit sof code that actually *do* stuff, and gradually move the nice setup, teardown, do-multiple-things, etc into layers above, and move the low-level details into layesr below.
19:25:44 <SimonRC> I do however advocate trying to decide all the functions/methods you are going to write in you head first.
19:25:55 <SimonRC> s/however //
19:26:33 <SimonRC> You will end up missing a lot of them, but that doesn;t matter too much as you will have *thought* about the problem.
19:29:15 <RodgerTheGreat> the best way to start coding any moderately sized application is by sitting down and thinking about it for a while.
19:31:57 <pikhq> The worst way, of course, is to just start throwing shit together. . .
19:32:10 <SimonRC> indeed
19:33:11 <pikhq> (Pre-rewrite BFM started showing some of those issues. . . Largely because the language evolved faster than the compiler0
19:44:26 * SimonRC lols at the Visitor Pattern.
19:44:54 <SimonRC> AFAICT, it's just the map operation.
19:45:10 * pikhq is still crazy enough to think BFM is a good idea. XD
19:46:11 <SimonRC> Do you have the translator source online?
19:46:17 <SimonRC> s/translator //
19:46:33 <pikhq> I've got a very outdated source up.
19:47:27 <pikhq> I'm trying to finish my multi-pass rewrite, make the optimizing pass a bit nicer, and add an "expr" command to be called from whilet and ift. . .
19:47:58 <pikhq> So, if I bother working on it today, I should have a modern BFM release up. . . Tomorrow?
19:49:30 <pikhq> (for the record: ift and whilet, with expr, should allow for traditional "if {foo==0}" statements)
19:51:02 <SimonRC> ok
19:51:52 <pikhq> Well, to be fair, it'd be "if var {expr var==0} {code-here} : temp0 temp1".
19:52:04 <pikhq> s/if/ift/
20:05:07 <Sgeo> Why are we not working on the Factory language?
20:05:24 <pikhq> Because it's horrible.
20:05:29 <pikhq> Absolutely horrible.
20:05:38 <pikhq> I'm still getting nightmares from it.
20:10:27 <SimonRC> Hmm... Paul Graham is making an interesting point here: http://paulgraham.com/gap.html
20:11:10 <SimonRC> Though the monetary gap between rich and poor (within a developed country) is very wide, it doesn't matter much.
20:12:49 <SimonRC> If a rich man can spend 10,000 time as much on something as a non-rich one, it doesn't get him a suit that looks 10,000 times as good, or a journey 10,000th or the duration, or a computer 10,000 times as easy to use.
20:13:18 <SimonRC> As PG puts it: "If Lenin walked around the offices of a company like Yahoo or Intel or Cisco, he'd think communism had won. Everyone would be wearing the same clothes, have the same kind of office (or rather, cubicle) with the same furnishings, and address one another by their first names instead of by honorifics. Everything would seem exactly as he'd predicted, until he looked at their bank accounts. Oops."
20:14:33 <pikhq> Or until he saw the CEO.
20:15:26 <SimonRC> hm
20:24:47 <GregorR> Heh
20:41:20 <Razor-X> I tend to write my programs the same way I write my essays -- I make sure I'm familliar with my topic or problem domain, I formulate a rough sketch in my head of how the program will flow, I begin writing code according to this scaffolding, attempting to create sub-functions on demand unless I realize that it takes too long a time to do in my first ``pass'', and keep going until I run out of steam or I realize that most of my program is
20:41:20 <Razor-X> using functions I haven't defined.
20:41:58 <Razor-X> At that point, begin looking at the helper functions I've left undefined to identify common pieces of code and start making a library for those, and then I code these bottom-up.
20:42:32 <Razor-X> So I use a weird combination of both methods.
20:44:37 <Razor-X> I absolutely abhor precise planning. I just can't create anything if I've made a complete paper-pencil model of the program. It turns to uncreative mush.
20:45:07 <pikhq> I end up making a rough little sketch of what needs to be done. . .
20:46:31 <Aardwolf> if I had 10,000 times as much money, I'd know how to use it, you still can buy a 100x more expensive house and stuff
20:46:33 * Razor-X refers pikhq to the Unicode elipsis.
20:46:43 <Razor-X> Huh?
20:46:53 <Aardwolf> (in reply to SimonRC)
20:47:17 * pikhq doesn't care
20:57:27 -!- Arrogant has joined.
20:58:09 <SimonRC> Razor-X: There is nothing to say that you can't do the first stages of that process with PnP, or better, in your head.
21:01:55 <Razor-X> SimonRC: Well, what I tend to have in my head is a rough idea, not something like an essay outline or a strict flowchart.
21:02:37 <RodgerTheGreat> I'd say that's pretty much how I go about things
21:03:01 <Sgeo> PnP?
21:03:19 <Razor-X> Plug n Play?
21:03:31 <Razor-X> Paper and Pencil, I assumed.
21:04:09 * RodgerTheGreat shrugs
22:27:51 <SimonRC> yes, PnP = paper and pencil, (as in RPG systems)
22:28:07 * SimonRC finds some clever code to flatten a Scheme-style tree:
22:28:25 <SimonRC> in Haskell, we would, of course have:
22:28:26 <SimonRC> flatten (Cons Null r) = flatten r
22:28:29 <SimonRC> oops
22:28:34 <SimonRC> data SCM = Cons SCM SCM | Null | ...
22:29:16 <SimonRC> you can apparently flatten in linear time and ocnstant space, lazily if you use the clever trick:
22:29:21 <SimonRC> flatten (Cons (Cons l m) r) = flatten $ Cons l $ Cons m r
22:29:30 <SimonRC> the rest just writes itself
22:29:49 <bsmntbombdood> I just read about pipes in lisp
22:29:53 <bsmntbombdood> very interesting
22:30:20 <SimonRC> pipes?
22:30:48 <bsmntbombdood> a list of the form (1 2 3 . #<function to return next object>)
22:30:53 <SimonRC> (I got that trick from here: http://okmij.org/ftp/Scheme/misc.html#lazy-flattener)
22:31:14 <SimonRC> ah, nice
22:31:34 <bsmntbombdood> Kinda like python generators
22:32:59 <SimonRC> <mutter>In Haskell you get those for free</mutter>
22:33:02 <SimonRC> :-)
22:33:11 <bsmntbombdood> heh yeah
22:37:32 <Razor-X> Similar to a stream.
22:38:35 <Razor-X> (stream-list 1 2 3) => (1 . (delay (2 3)))
22:38:44 <Razor-X> It's the same thing as lazy evaluation.
22:38:50 <bsmntbombdood> yeah
22:41:02 <Razor-X> (define (interval x y) (if (< x y) (list x (delay (interval (+ x 1) y))) '()))
22:41:38 <Razor-X> That way, the Scheme interpreter only interprets as many list items as neccessary to complete an operation.
22:41:48 <Razor-X> There's your effecient tail recursion.
23:05:56 -!- ivan` has joined.
23:17:13 -!- oerjan has joined.
23:21:50 -!- anonfunc has joined.
23:31:26 <oerjan> while i understood the meaning of GIYF when simonRC used it, my translation was considerably less polite than the official one.
23:34:21 <oerjan> which, apparently, wikipedia already has noted
23:39:43 <pikhq> 'Lo, oerjan.
23:39:57 <oerjan> hi pikhq
23:40:11 * pikhq contemplates discussing his recent changes to BFM, for the benefit of oerjan.
23:40:22 * oerjan runs away screaming
23:40:27 <oerjan> just kidding
23:41:10 <pikhq> First change, which I've discussed previously, is the C string support.
23:41:34 <pikhq> Secondly, if one doesn't specify a location to @, it assigns one.
23:41:50 <pikhq> Third, optimization is smarter.
23:41:56 <bsmntbombdood> fun
23:42:22 <pikhq> Finally, I've *almost* finished a rewrite of the compiler, splitting it into multiple passes for clarity's sake.
23:42:23 <oerjan> i've noticed all except the third before
23:42:33 <oerjan> and fourth
23:43:19 <oerjan> how is optimization smarter?
23:44:01 <pikhq> Remember your suggestion for having a cleared-cell stack?
23:44:12 <oerjan> yes
23:44:17 <pikhq> Implemented.
23:45:03 <pikhq> Also, I've got calls to right and left not clearing out the cleared-cell stack unless an operation which changes memory is used while doing relative addressing.
23:45:23 <pikhq> So, string output doesn't affect the cleared-cell stack at all.
23:46:59 <oerjan> i see
23:47:24 <oerjan> i had some further ideas about declarations
23:48:02 <pikhq> Yeah?
23:48:11 <oerjan> basically, a keeps0 declaration
23:48:20 <pikhq> Which does?
23:49:51 <oerjan> it is used at the beginning of a while. it checks the value of the location before the loop and acts as is0 only if it actually was zero
23:50:29 <pikhq> Hmm. . .
23:50:52 <pikhq> So, something that'd be rather simple to add to the optimize pass. . .
23:51:46 <oerjan> and a "touches" declaration, with sort of the opposite meaning
23:52:24 <pikhq> An "isnot0" if it wasn't 0 at the end of the loop?
23:52:26 <oerjan> it would be a guarantee that those variables are the _only_ ones changed by the loop. useful to avoid some stack clearing
23:52:37 <pikhq> Oh.
23:52:42 <pikhq> I see.
23:53:10 <Razor-X> You should write actual documentation so that people who don't know TCL can help out.
23:53:28 <oerjan> it could be combined with left/right and would be a way to avoid clearing everything in that case
23:53:35 <pikhq> Might require a little bit of redesigning in ::optimize. . . Oh well. This kind of thing is *why* I split it into multiple passess.
23:53:42 <pikhq> Razor-X: oerjan is one of those people. :p
23:53:56 <Razor-X> oerjan: So uh... what ze heck is is0 ?
23:54:05 <Razor-X> Is the cell 0?
23:54:18 <Razor-X> What optimizations does the compiler perform?
23:54:18 <oerjan> a declaration that a cell is supposed to be 0 at that point of the program
23:54:24 <pikhq> It tells the compiler that the cell is 0, so that it can avoid cell-clearing.
23:54:37 <pikhq> Razor-X: Currently, it eliminates pointless cell-clearing.
23:54:40 <Razor-X> Cell-clearing. Makes a lot of sense, seeing how much else I know of it :P
23:55:21 <pikhq> I've got plans to make it check if the cell is 1, 2, -1, or -2, so that it can make some cell-clearing shorter.
23:55:32 <Razor-X> Why are you cell-clearing?
23:56:02 <pikhq> Some of the macros do cell-clears to make sure the temporary variables are safe to use. . .
23:56:13 <oerjan> cell-clearing is the first step of setting a brainfuck cell to a known value if it is unknown
23:56:21 <Razor-X> Temporary variables was what I suspected.
23:56:50 <Razor-X> Although why you would keep the BF array and temporary variables on the same contiguous chunk of memory I have no idea. I would use something like a stack.
23:57:03 <pikhq> Also common is, well, breaking out of a loop.
23:57:10 <oerjan> because it compiles _to_ brainfuck
23:57:21 <Razor-X> Oh yah.
23:57:38 <pikhq> The temporary variables are passed as an argument to the macros. . .
23:58:05 <Razor-X> But if the macros are clean, the temporary variables should leave no trace, no?
23:58:17 <pikhq> But the coder might *not* be clean. ;)
23:58:25 <GregorR> DIRTY, DIRTY CODER
23:58:32 <pikhq> It's a matter of severe paranoia.
23:58:48 <Razor-X> Extra swaddling eh?
23:59:01 <Razor-X> Very un-C-like.
23:59:08 <oerjan> no it is simply due to clean macros clearing both before and after use
23:59:11 <pikhq> That, and I'm not sure if *all* of the macros are clean, anyways.
23:59:21 <Razor-X> Then why not use the Lisp philosophy of creating disparate namespaces for clean and unclean macros?
23:59:58 <oerjan> but the optimizer removes unnecessary cleanness
2006-12-03
00:00:05 -!- tgwizard has quit (Remote closed the connection).
00:00:15 <oerjan> making disparate namespaces unnecessary
00:00:25 <Razor-X> Well, it's a performance hit.
00:00:54 <pikhq> Given that the compiler takes under a second on the largest known BFM program, that's a moot point.
00:01:28 <oerjan> _not_ optimizing would be trading cheap compiler performance for expensive programmer performance
00:01:34 <Razor-X> Well, I like listening to Bran Cohen, who tells me to make sure that no part of your application is dependant on ``sane input defaults''.
00:01:52 <Razor-X> Well, IMO, it's more in the BF philosophy, but that's just me.
00:02:30 <oerjan> which would mean always using clean macros which cleared before and after use, as today
00:02:58 <pikhq> One last thing to mention: the optimizing pass removes loops that won't ever run.
00:03:37 <oerjan> right, very easy with cleared cell handling
00:03:48 <pikhq> That works right. . .
00:04:28 <pikhq> I *was* going to do it when I first had cleared cell handling, but because it wasn't working well at all, I opted not to.
00:32:32 * SimonRC goes to bed
00:42:57 <Sgeo> "loops that won't ever run"?
00:43:51 <oerjan> if the loop variable happens to be zero
00:44:56 <Sgeo> Unless cleaning those up is occuring during runtime or something, how do you determine whether or not it will be zero at that point?
00:44:58 <oerjan> or rather: can be statically determined to be zero at this point of the program
00:45:16 <oerjan> that's the point of the cleared cell stack
00:45:53 <Sgeo> oh
00:46:03 <pikhq> Sgeo: We can determine that some cells, at some points, are guaranteed to be 0. . .
00:46:13 <pikhq> At other points, the codeer can tell the compiler the same thing.
01:26:32 -!- Arrogant has quit ("Leaving").
01:34:01 -!- oerjan has quit ("Later").
03:11:11 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
03:42:36 <bsmntbombdood> I hate this stuff
03:42:39 <bsmntbombdood> http://www.kidsprogramminglanguage.com/
03:44:54 <RodgerTheGreat> hm
04:37:32 <ivan`> that looks harder than python
04:37:53 <bsmntbombdood> Teaching kids to program is broken by defualt
04:38:01 <ivan`> why?
04:38:07 <ivan`> they should take the initiative?
04:38:35 <bsmntbombdood> Yeah
04:38:46 <RodgerTheGreat> not everyone is destined to be a coder, but starting early is a huge advantage.
04:38:56 <ivan`> that was easier when everything was monochrome and only ran BASIC and asm
04:39:21 <ivan`> today kids fulfill their computer torture quota fixing windows
04:39:45 <pikhq> That looks just wrong.
04:40:51 <pikhq> All one should do is give a kid the opportunity to become a programmer. . . Not. . . That. Eeeew.
04:41:11 <bsmntbombdood> Yeah
04:41:18 <RodgerTheGreat> I think BASIC remains a *great* way to introduce kids to programming. QBASIC is freeware now, I think...
04:41:31 <bsmntbombdood> Why?
04:41:36 <ivan`> python > QBASIC
04:41:41 <ivan`> don't braindamage any more innocent kids
04:41:48 <bsmntbombdood> I first coded on QBASIC
04:41:49 <pikhq> Python, IMO, is a decent language for introducing programming.
04:42:09 <pikhq> Basic's decent, but a kid who gets serious can't move on further.
04:42:18 <bsmntbombdood> We certainly don't need to engineer special languages for kids
04:42:27 <ivan`> tell that to the coders who made the qbasic flight sim
04:42:47 <ivan`> too bad it couldn't double buffer
04:43:13 <RodgerTheGreat> QBASIC is powerful for most things a kid could code on their own. DarkBASIC is a bit slow, but I think it's a pretty fantastic language.
04:43:16 <pikhq> ivan`: That's comparable to a chess program in Brainfuck. . . Just because it can be done doesn't mean it *should*.
04:43:57 <pikhq> RodgerTheGreat: I'd be much more skillful if I had started with a 'serious' language in the first place, I feel. . .
04:44:13 <bsmntbombdood> I remember longing for arrays when I coded in qbasic
04:44:23 <bsmntbombdood> (even though I didn't know what an array was back then)
04:44:39 <pikhq> I remember longing for *functions* when I did Apple Basic (although I didn't know what it was then).
04:44:44 <ivan`> i remember trying to do some parallel port communication without any debugging
04:44:56 <bsmntbombdood> I barely could understand GOSUB
04:45:01 <ivan`> i never figured out GOSUB
04:45:11 <bsmntbombdood> just calling a subroutine
04:45:18 <pikhq> There was no "GOSUB".
04:45:24 <pikhq> GOTO was it.
04:45:29 <bsmntbombdood> I was like "why would someone want to do this?"
04:45:37 <bsmntbombdood> there's gosub in qbasic
04:46:10 <RodgerTheGreat> BASIC taught me to build constructs by myself- I *invented* stacks and other data structures to build games. I designed my own GUI library because Basic didn't have any facilities for it apart from graphics primitives. If I had started with a language like Python, all I would have learned was how to use existing versions of these things.
04:46:30 <bsmntbombdood> So teach kids asm or c
04:46:43 <bsmntbombdood> s/teach/introduce to/
04:47:50 <Sgeo> I remember learning VB5. I hold that that forever crippled any ability to make GUIs by hand
04:48:06 <RodgerTheGreat> owch
04:48:36 <pikhq> I remember being forced to learn VB6 so that my *dad* could pass the damned class.
04:48:57 <pikhq> (I've since rm -rf'd it)
04:49:11 <RodgerTheGreat> I never really liked VB, mainly because the GUI portions always seemed to get in my way when I wanted to get actual work done. I'd have preferred trusty DarkBASIC any day.
04:49:40 <pikhq> I hated it with a passion, even then.
04:50:04 <RodgerTheGreat> then you probably never understood it.
04:50:27 <pikhq> No, that's what *caused* me to hate it with a passion. . .
04:51:05 <pikhq> Wasn't my first programming language. . .
04:57:55 <RodgerTheGreat> my favorite aspect of BASIC was that you could "escape" from the language- you could start loading and calling assembly or using pointers if you wanted to. It became as powerful a language as you wanted it to be.
04:59:21 <pikhq> You could (in theory) do psuedo-machine code. . .
04:59:41 <pikhq> Large amounts of POKEs could do it. :p
05:00:19 <RodgerTheGreat> I've never used another interpreted language that gave you so much power over the machine.
05:01:15 <pikhq> *echm* C interpreter.
05:07:04 <ivan`> python + embedded C
05:07:07 <pikhq> `$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
05:07:07 <pikhq> $!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
05:07:07 <pikhq> $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
05:07:08 <pikhq> ;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
05:07:21 <pikhq> And people say Perl isn't an esoteric programming language.
05:07:33 <ivan`> that's the worst case example
05:08:30 <bsmntbombdood> RodgerTheGreat: Forth
05:08:45 <bsmntbombdood> pikhq: wtf is that
05:09:12 <bsmntbombdood> ivan`: How do you embed C in python?
05:09:21 <RodgerTheGreat> I wouldn't call FORTH a good language for beginners, bsmntbombdood
05:09:22 <pikhq> bsmntbombdood: It outputs "Just another Perl hacker".
05:09:37 <bsmntbombdood> RodgerTheGreat: Why not?
05:11:23 <ivan`> bsmntbombdood, http://72.14.253.104/search?q=cache:LcJmrOj-b1sJ:old.scipy.org/documentation/weave+python+weave&hl=en&gl=us&ct=clnk&cd=1
05:11:53 <ivan`> part of http://www.scipy.org/
05:12:08 <bsmntbombdood> hmm
05:12:20 <bsmntbombdood> How does it do it?
05:12:30 <pikhq> Dunno.
05:13:19 <ivan`> weave.inline() compiles and executes
05:13:32 <ivan`> their idiotic webpage is broken
05:13:32 <ivan`> http://72.14.253.104/search?q=cache:8tUB6cC5RsUJ:old.scipy.org/documentation/weave/weaveusersguide.html+python+weave&hl=en&gl=us&ct=clnk&cd=2
05:14:00 <ivan`> oh you're asking about the perl monstrosity
05:14:30 <bsmntbombdood> No I was asking about the python+c
05:16:43 * bsmntbombdood tries weave
05:18:00 <bsmntbombdood> ...and it doesn't work
05:18:10 <RodgerTheGreat> lol
05:18:33 <RodgerTheGreat> reminds me of trying DarWine this morning,
05:18:49 <RodgerTheGreat> it couldn't even run the copy of notepad.exe it came with.
05:30:53 -!- pikhq has quit ("leaving").
05:32:09 <RodgerTheGreat> http://i19.photobucket.com/albums/b190/MissMaryMack/pics/Cool_Shit/Kitties/KittyHate.jpg
05:32:20 * RodgerTheGreat laughs heartily
06:05:02 <RodgerTheGreat> g'night everyone.
06:14:32 -!- cmeme has quit (Excess Flood).
06:16:44 -!- cmeme has joined.
06:21:22 -!- cmeme has quit (Excess Flood).
06:23:49 -!- cmeme has joined.
07:43:52 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:20:49 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- Leading Edge IRC").
08:43:46 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
10:11:23 -!- sebbu has joined.
12:15:57 -!- Eidolos has quit (Read error: 110 (Connection timed out)).
13:13:12 -!- Aardwolf has quit ("Ik zen der is mee weg").
13:59:52 -!- jix has joined.
14:12:58 -!- jix_ has joined.
14:29:58 -!- jix has quit (Read error: 110 (Connection timed out)).
16:04:22 -!- CakeProphet has quit ("haaaaaaaaaa").
16:14:07 -!- oerjan has joined.
16:53:17 -!- CakeProphet_ has joined.
16:53:19 -!- CakeProphet_ has changed nick to CakeProphet.
17:04:58 * Razor-X imagines RodgerTheGreat as Santa Claus.
17:06:19 <RodgerTheGreat> lol
17:07:15 <RodgerTheGreat> er, I mean "Ho Ho Ho"
17:07:23 <Razor-X> Yes! There you go!
17:15:48 <oerjan> *sigh* i used to think of myself as a linux fan. but now that i'm accidentally using windows and IE i am starting to get so annoyed at certain anti-IE webpages that i want to stay with IE just out of stubborness.
17:16:11 * Razor-X shudders.
17:16:22 <Razor-X> I was never anti-IE, but that's no reason to stick with an anathema.
17:18:18 <SimonRC> Gah! My intuitive asymptotic ordering on a set of asymptotically strictly-increasing functions is not transitive!
17:18:54 <RodgerTheGreat> Gah indeed
17:18:58 <Razor-X> Haha. Order it better.
17:19:07 <Razor-X> Although why it needs to be transitive is anyone's guess.
17:19:27 <oerjan> well, otherwise it is not an ordering.
17:19:39 <Razor-X> Doh.
17:19:49 <Razor-X> You know? I feel sorta bad when someone in #scheme says they've been wrangling with a homework problem for 5 hours and I can think up a solution in a few minutes.
17:20:06 <Razor-X> Now, maybe the guy is just very stupid, but whatever.
17:20:54 <SimonRC> I feel the same when I go to a lecture and it turns out to be a 1-hour explanation of the obvious.
17:21:02 <oerjan> well, you know, half of everybody is more stupid than average :)
17:21:11 <Razor-X> Well, this guy's in a college CS class.
17:21:19 <Razor-X> I mean.... that's what the real scary part is to me.
17:21:45 <SimonRC> One of my formally assessed questions consists of ordering 25 functions by their asymptotic behaviour. :-(
17:21:50 <SimonRC> I thought it would be easy
17:22:52 <Razor-X> And now that I'm seeing, the differences between CL and Scheme are very very pedagogic in certain places.
17:23:03 <RodgerTheGreat> I know several people in CS that honestly have no business programming
17:23:11 <oerjan> well, if the functions are arbitrary it is probably impossible to do nicely.
17:24:16 <oerjan> but if they are all o(...) each other in some direction then that should give you an ordering.
17:24:47 <SimonRC> they are all strictly-increasing after some point
17:24:57 <oerjan> that won't help.
17:25:25 <oerjan> they could still be dipping above and below each other indefinitely.
17:25:30 <SimonRC> AFAICT, they in fact have an ordering
17:26:52 <oerjan> of course if they eventually don't cross each other then you can use the eventual order
17:27:49 <RodgerTheGreat> I think the problem with CS is that the average starting salary for that field is extremely high, so some people choose the major for the money. Hopefully, those people will switch majors after the first year or two.
17:31:01 <RodgerTheGreat> I'll tell you, it's pretty frustrating trying to help someone whose only coding experience is a one-semester class in VB code in Java. Some people just don't get it, and probably never will.
17:31:58 -!- tgwizard has joined.
17:35:25 <Razor-X> Heh.
17:40:20 * SimonRC is suprised that a certain function turns out to be constant
18:19:09 <bsmntbombdood> Programming classes just make stupid people who can't code think that they can
18:20:51 <RodgerTheGreat> yeah, true.
18:21:27 <RodgerTheGreat> it takes more than a class to learn to be a programmer. If you aren't devoting a fair amount of your free time to coding, you'll never be good at it.
18:21:47 <bsmntbombdood> indeed
18:25:39 <lament> s/coding/anything
18:30:07 <bsmntbombdood> I should do some of those coding contests
18:31:18 <RodgerTheGreat> I've done a few
18:32:17 <bsmntbombdood> What's a good one?
19:18:19 -!- Sgeo has joined.
19:44:59 -!- Eidolos has joined.
19:58:03 -!- oerjan has quit ("Good night").
20:17:29 -!- pikhq has joined.
20:53:11 -!- sebbu2 has joined.
21:12:31 -!- sebbu has quit (Read error: 110 (Connection timed out)).
21:32:52 * SimonRC goes for pizza.
21:33:35 <bsmntbombdood> fun
21:34:13 * pikhq yells at bitlbee
21:35:16 <pikhq> 14:30 [localhost] -!- *** glibc detected *** double free or corruption (!prev): 0x080d3f18 ***
21:35:21 <pikhq> Bastard.
21:37:44 <Razor-X> Haha. Garbage collection bug.
21:40:40 <bsmntbombdood> fun, garbage collection
21:41:16 <Razor-X> Has anyone here heard of jMemorize?
21:42:13 <pikhq> The magic words are "identify password"
21:42:29 <Razor-X> identify password
21:42:38 <pikhq> That kills bitlbee.
21:42:44 <Razor-X> Oh, really?
21:42:58 <Razor-X> Lemme try it.
21:43:33 <pikhq> Well, it does that for me. . .
21:43:45 <pikhq> s/password/your_password_here/, BTW.
21:43:55 <Razor-X> Oh.
21:44:22 <Razor-X> Nope.
21:45:37 <bsmntbombdood> ha, bitlbee
21:45:55 <Razor-X> Also, does anyone here use rcirc and want to compare it to erc?
21:46:10 <bsmntbombdood> ha, erc
21:46:35 <Razor-X> What do you use?
21:46:46 <Razor-X> You either use irssi or XChat if you are on *Nix. I assure you.
21:47:52 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:48:04 <bsmntbombdood> Yep, xchat
21:48:17 <bsmntbombdood> and irssi sometimes
21:57:41 <bsmntbombdood> whoa, http://www.emacswiki.org/cgi-bin/wiki/ErcChess
22:01:20 -!- sebbu2 has quit (Connection timed out).
22:09:24 <GregorR> lol
22:37:25 -!- tgwizard has quit ("Leaving").
23:28:12 -!- dibic0 has joined.
23:29:27 -!- dibic0 has left (?).
23:57:49 -!- ihope has joined.
2006-12-04
00:06:34 * pikhq should get off his lazy ass and do *something*.
00:06:44 <bsmntbombdood> heh
00:07:11 <pikhq> I've even failed to enjoy myself.
00:10:15 * pikhq salutes Yahoo for making me even more sure that they're dumbasses. . .
00:10:42 <pikhq> They're pushing IE7 to: Linux users, Mac users, and Windows users that either can't or won't switch to IE7.
00:13:44 <GregorR> ?
00:15:05 <pikhq> They've got something to the effect of "if(browser!=ie7) show_ie7_ad();" in their page.
00:15:24 <GregorR> Hahaha
00:15:41 <pikhq> I highly doubt, say, a PPC Debian user is going to switch to IE7. ;)
00:16:12 <GregorR> With QEmu and Wine, it could happen ;)
00:17:30 <GregorR> Ha-HAH, awesome.
00:17:36 <GregorR> I searched for "what is the true meaning of life"
00:17:45 <GregorR> And the top result wasn't Jesusy :)
00:17:53 <GregorR> "The meaning of life is to increase fitness"
00:18:09 <GregorR> Second one is Jesusy though ;)
00:18:51 <GregorR> http://www.gotquestions.org/images/bridge.gif < Another brilliant Jesus-imation!
00:19:23 <bsmntbombdood> lol
00:45:56 -!- pikhq has quit ("leaving").
00:48:45 <Razor-X> What you say?!
00:48:49 <Razor-X> What hell?!
00:51:22 -!- Razor-X has quit (Remote closed the connection).
00:52:11 -!- Razor-X has joined.
00:52:48 <ihope> GregorR: I think I saw that once some long time ago.
00:53:08 <ihope> Long long long. I must have been, like...
00:53:18 * ihope holds his hand about an inch above the ground
01:06:37 <GregorR> Back when you were a zygote?
01:15:59 <ihope> Something like that, yeah.
01:39:40 -!- anonfunc has quit.
01:44:58 -!- CakeProphet has quit (Read error: 131 (Connection reset by peer)).
01:47:06 -!- CakeProphet has joined.
02:38:12 -!- GregorR-L has joined.
04:03:50 -!- CakeProphet has quit (Read error: 60 (Operation timed out)).
04:49:35 -!- ivan` has joined.
04:51:03 -!- ihope has quit (Connection timed out).
05:19:29 -!- ivan` has quit (Connection timed out).
06:03:40 -!- ivan` has joined.
06:23:17 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- IRC with a difference").
06:23:31 -!- ivan` has joined.
07:24:52 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:40:00 -!- cmeme has quit ("Client terminated by server").
08:41:27 -!- cmeme has joined.
09:33:10 -!- GregorR-L has quit ("Leaving").
14:36:43 -!- nooga has joined.
14:37:18 <nooga> uouo
16:08:53 -!- nooga has quit (Read error: 131 (Connection reset by peer)).
16:52:15 -!- jix has joined.
19:18:26 -!- cmeme has quit (Excess Flood).
19:19:50 -!- cmeme has joined.
19:38:38 -!- oerjan has joined.
20:32:05 -!- Sgeo has joined.
20:48:39 -!- oerjan has quit ("Later").
20:55:53 -!- CakeProphet has joined.
20:55:56 -!- CakeProphet has quit (Client Quit).
20:57:24 -!- CakeProphet_ has joined.
20:57:25 -!- CakeProphet_ has changed nick to CakeProphet.
21:01:14 -!- GregorR-L has joined.
22:08:14 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:10:16 -!- ihope__ has joined.
2006-12-05
01:21:19 -!- GregorR-L has quit ("Leaving").
01:36:11 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- Go on, try it!").
01:38:30 -!- ihope__ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
01:40:31 -!- pikhq has joined.
01:41:29 * pikhq has the BFM rewrite *almost* finished; going to work on packaging it up nicely.
01:55:00 -!- ivan` has joined.
02:31:51 * pikhq doesn't wanna make his passes into seperate passes. . . :'(
02:38:39 <bsmntbombdood> meh
02:38:48 <pikhq> Err.
02:38:53 <pikhq> s/passes./packages./
02:39:05 * pikhq also doesn't want to do the whole "documentation" thing
03:19:37 -!- niarium has joined.
03:34:19 <niarium> hi all
03:34:34 <bsmntbombdood> hi
03:47:26 * pikhq leaveth
03:47:32 <pikhq> Will return with BFM v0.1
03:47:34 -!- pikhq has quit ("leaving").
04:13:51 -!- CakeProphet has quit ("haaaaaaaaaa").
04:14:45 -!- GreaseMonkey has joined.
05:13:29 -!- ivan` has quit (Read error: 104 (Connection reset by peer)).
05:14:22 -!- ivan` has joined.
05:37:25 -!- Sgeo has quit (Remote closed the connection).
05:41:48 -!- GreaseMonkey has changed nick to GreaseMonkey_afk.
06:24:37 -!- GreaseMonkey_afk has changed nick to GreaseMonkey.
06:46:51 <Razor-X> Why does TK look so awful on non-commercial *nix based systems?
07:01:25 <GregorR> Newsflash:
07:01:28 <GregorR> Tk looks awful everywhere;.
07:01:36 <niarium> ROFL
07:03:36 <GreaseMonkey> hey gregor
07:03:43 <GreaseMonkey> TK = ?
07:03:47 <GreaseMonkey> me=matrix
07:32:10 <Razor-X> It doesen't look too awful on Mac OS X.
07:32:12 <Razor-X> Just bad.
07:32:23 <Razor-X> GreaseMonkey: You know? The graphic toolkit TK?
07:36:38 <GreaseMonkey> erm... the one with KDE?
07:36:57 <GreaseMonkey> wait, that's QT
07:37:51 -!- SimonRC has quit (Read error: 110 (Connection timed out)).
07:38:02 <Razor-X> Neither QT nor GTK.
07:38:23 <Razor-X> Someone needs to remake TK's primitive widgets.
07:38:27 <GreaseMonkey> never used it
07:38:35 <Razor-X> You've never heard of it?
07:38:52 <Razor-X> TK should use, oh I dunno, modern fonts maybe?
07:51:33 -!- anonfunc has joined.
07:57:21 <GreaseMonkey> hello anonfunc
07:57:27 <anonfunc> hello
07:57:49 <GreaseMonkey> /ctcp version me
07:58:12 <anonfunc> i'd rather not
07:58:18 <GreaseMonkey> bummer, doesn't say the OS
07:58:34 <GreaseMonkey> xchat 2.0.7 - MandrakeLinux 10.0
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:54 <Razor-X> .... Mandrake?
08:00:56 <Razor-X> No comment.
08:05:01 -!- jix has joined.
08:06:11 <GregorR> Don't knock it 'til you try it.
08:07:02 <GregorR> Also, Mandrake 10.0 is out of date, Mandriva 2007.
08:07:07 <GregorR> Free download, just do it :-P
08:07:12 <GregorR> (That's @ GreaseMonkey )
08:10:04 <Razor-X> I've tried it.
08:10:09 <Razor-X> So, I get to knock it then?
08:16:19 <GreaseMonkey> k, gonna go, cya
08:16:48 -!- GreaseMonkey has quit ("SdBot2 sucks").
08:31:49 -!- jix has quit ("This computer has gone to sleep").
10:10:37 -!- SimonRC has joined.
10:35:22 -!- Eidolos has quit ("Leaving").
12:32:33 -!- oklopol has joined.
13:01:15 -!- jix has joined.
13:04:00 -!- jix has quit (Client Quit).
13:04:16 -!- jix has joined.
14:14:19 -!- jix_ has joined.
14:31:24 -!- jix has quit (Read error: 110 (Connection timed out)).
15:06:01 -!- niarium has quit ("나갑니다").
15:57:44 -!- Razor-X` has joined.
16:12:35 -!- Razor-X has quit (Read error: 110 (Connection timed out)).
17:57:22 -!- calamari has joined.
18:17:55 -!- anonfunc has quit.
19:07:05 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
19:07:45 -!- cmeme has joined.
19:08:14 -!- cmeme has quit (Remote closed the connection).
19:08:46 -!- cmeme has joined.
19:30:38 -!- tgwizard has joined.
19:48:16 -!- cmeme has quit (Read error: 131 (Connection reset by peer)).
19:49:07 -!- cmeme has joined.
19:49:38 -!- cmeme has quit (Remote closed the connection).
19:50:09 -!- cmeme has joined.
21:00:46 -!- CakeProphet has joined.
21:04:22 -!- GregorR-L has joined.
21:21:10 -!- GregorR-L has quit ("Leaving").
21:33:25 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:36:04 -!- tgwizard has quit ("Leaving").
22:11:29 -!- GregorR-L has joined.
22:40:17 -!- Sgeo has joined.
22:45:03 -!- GregorR-L has quit (Remote closed the connection).
23:46:22 -!- evilC has joined.
23:48:40 -!- evilC has left (?).
2006-12-06
00:06:22 -!- clog has joined.
00:06:22 -!- clog has joined.
00:06:49 -!- fizzie has quit (anthony.freenode.net irc.freenode.net).
00:11:17 -!- sekhmet has joined.
00:11:52 -!- fizzie has joined.
00:13:54 -!- GreaseMonkey has joined.
00:58:16 -!- Razor-X` has quit (Remote closed the connection).
01:09:39 -!- Razor-X has joined.
02:05:30 -!- GregorR has changed nick to GR______________.
02:06:08 -!- GR______________ has changed nick to GregorR.
02:21:57 -!- Rugxulo has joined.
02:23:34 -!- calamari has quit ("Leaving").
02:25:36 <Rugxulo> quick poll: favorite esoteric language?
02:26:01 <GreaseMonkey> perl
02:26:07 <GreaseMonkey> k, maybe no
02:26:10 <GreaseMonkey> t
02:26:17 <GreaseMonkey> i like befunge
02:27:01 * Rugxulo likes sed ... but if that doesn't count, I guess Brainf*** and then not sure, False perhaps??
02:28:00 <Rugxulo> Befunge is nifty, but Malbolge (I think) is just ridiculous
02:28:20 <Rugxulo> and unlambda is way, way over my head
02:28:41 <GreaseMonkey> got the game "enigma 1.00"? there's a level called "print 23" which you have to make a brainfuck program
02:29:03 <Rugxulo> what kind? what's it supposed to do?
02:30:43 <GreaseMonkey> it's a clone of oxyd
02:31:02 <GreaseMonkey> oxyd is loke memory except you gotta do some weird puzzles
02:31:10 <GreaseMonkey> you guide a ball around
02:31:59 <GreaseMonkey> im working on a particle automaton
02:33:18 <Rugxulo> o_o
02:33:22 <GreaseMonkey> i have an AND gate now
02:33:55 <GreaseMonkey> now made an OR gate
02:37:45 <GreaseMonkey> now an XOR
02:47:31 <GreaseMonkey> here's my OR:
02:47:33 <GreaseMonkey> ###-###
02:47:38 <GreaseMonkey> #> + <#
02:47:41 <GreaseMonkey> ### ###
02:47:46 <GreaseMonkey> __# #
02:47:53 <GreaseMonkey> _ goes to space
02:55:54 <lament> Rugxulo: favourite? probably Befunge
02:56:37 <lament> i think befunge has pretty much exactly the right feature set for fun _programming_
02:56:58 <lament> (unlike say unlambda, which is really cool but nobody writes anything in it)
02:57:26 <SimonRC> heh
02:57:38 <SimonRC> I keep meaning to make a C-> befunge compiler or something.
02:57:41 <Rugxulo> they're all cool, but understanding how to write something nifty in it ... that's a whole other ball game :P
02:57:44 <lament> false is pretty nice but befunge totally gets it right
02:57:48 <SimonRC> Maybe Forth->befunge
02:58:21 <Rugxulo> there are already a few converters (not necessarily for those but anyways ...)
02:58:22 <lament> (befunge-93 anyhow)
02:59:52 -!- thematrixeatsyou has joined.
03:02:12 <SimonRC> Rugxulo: where?
03:03:34 <lament> SimonRC: i think he just means that compilers targeting esolangs exist.
03:03:36 <Rugxulo> not for Forth to Befunge, I just meant in general
03:05:01 <SimonRC> ah, ok
03:06:09 <lament> which is good news!
03:08:51 * bsmntbombdood looks up unlambda
03:09:28 <SimonRC> enigma looks cool
03:11:26 <bsmntbombdood> unlambda is weird
03:11:40 <Rugxulo> yup
03:11:46 <Rugxulo> (surprised?) ;)
03:12:14 <Rugxulo> http://lvogel.free.fr/sed.htm#unlambda
03:12:18 <Rugxulo> :D
03:12:47 <bsmntbombdood> a sed interpreter for unlambda ?!
03:13:09 <bsmntbombdood> crazy
03:13:52 <Rugxulo> yup, almost as crazy as sokoban in sed (or factor or bf2c or dc or hanoi or ...)
03:14:05 <bsmntbombdood> holy crap
03:15:16 <lament> bf2c is completely trivial
03:15:30 <Rugxulo> yes
03:15:32 <bsmntbombdood> I should write a minimal-scheme interpreter
03:15:33 <lament> and i'm guessing so is hanoi
03:15:38 <bsmntbombdood> define and lambda
03:16:45 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)).
03:17:21 <Rugxulo> http://www.pell.portland.or.us/~orc/Code/bsd/bsd-current/sed/TEST/hanoi.sed
03:17:29 <Rugxulo> (not sure if that's the latest but whatever)
03:19:33 -!- thematrixeatsyou has quit (Connection timed out).
03:21:54 -!- CakeProphet has quit (Read error: 110 (Connection timed out)).
03:34:30 <SimonRC> hehehe: http://video.google.com/videoplay?docid=4049365580674350429&q=half+life+2+physics+domino+effect
04:40:38 <bsmntbombdood> what's the point of s in unlambda?
04:46:12 <Rugxulo> no idea, too bizarre for me
04:48:00 <lament> um
04:48:09 <lament> 's' is for 'standard'
04:50:05 <bsmntbombdood> ?
04:50:33 <lament> s is a very standard combinator
04:53:26 <bsmntbombdood> ...
04:55:08 <lament> ..?
04:55:18 <lament> unlambda didn't invent all its stuff
04:55:28 <bsmntbombdood> meh I'll figure it out later
04:55:52 <lament> i'm sure you will.
04:59:58 <bsmntbombdood> school is really harming my ability to think
05:02:40 <Razor-X> It kinda does that to all of us.
05:03:32 <Razor-X> Our school is being charged $5/student for someone to create a system which a teacher can check a bunch of checkboxes, and input a Student's ID and these checkboxes will compose a voice message that will be sent out to the student's listed phone number.
05:03:54 <Razor-X> If the hardware interface is added correctly, then that is a total RIP OFF.
05:04:33 <Razor-X> I'm torn between offering to help and betraying the students.
05:05:31 <Rugxulo> "The language is named after Malebolge, the eighth level of hell in Dante's Inferno, which is reserved for perpetrators of fraud."
05:05:38 <Rugxulo> better not defraud anyone ;)
05:06:03 <lament> malbolge sucks.
05:06:21 <Razor-X> I admire Malbolge for being incredibly incredibly esoteric and awful to program in.
05:06:36 <Razor-X> While still retaining a semblance of programmability, and an allure of Turing completeness.
05:06:36 <lament> it's not hard to create languages like malbolge.
05:06:56 <Razor-X> But lament is right. In that way, I think BF is genius.
05:07:53 <bsmntbombdood> I wonder who inveneted BF
05:08:23 <Rugxulo> Brainf***?
05:08:26 <Rugxulo> Urban Mueller
05:08:29 <Razor-X> Yeah.
05:08:38 <Razor-X> I call it BF mainly to elide the expletive, meh.
05:08:42 <bsmntbombdood> He have anything else?
05:08:43 <lament> Rugxulo: come on, spell fuck correctly
05:08:46 <Rugxulo> inspired by False, I think
05:09:00 <Rugxulo> dunno, can't remember
05:09:07 <Rugxulo> not that I know of
05:09:15 <bsmntbombdood> Urban Dominik Müller is the creator of the Aminet Amiga archive, the original author of the XPK compression library and the creator of the Brainfuck programming language.
05:09:15 <Rugxulo> (but I think the False guy had lots of other stuff)
05:09:58 <lament> aardappel ("the false guy") has like 20 other esolangs and a few seriously cool programs (eg Cube)
05:10:09 <lament> he used to hang out here but sadly disappeared :(
05:10:19 <lament> he's a genius programmer
05:11:50 <bsmntbombdood> hmm
05:12:32 <bsmntbombdood> brainfuck has to be the most popular esolang
05:13:24 <lament> i think the popularity of brainfuck is mostly due to the character set chosen for the instructions
05:13:29 <lament> it just looks so pretty
05:13:33 <lament> otherwise, the language is nothing special
05:14:42 <Rugxulo> really? I think it's quite nice ... I mean, how do you compare languages anyways? they are all different, meant for different things, etc.
05:15:26 <Rugxulo> http://wouter.fov120.com/index.html
05:15:30 <Rugxulo> (False creator's web page)
05:21:41 <Rugxulo> BTW, a cool Brainf*** compiler (outputs .COM) written in NASM is here: http://home.arcor.de/partusch/html_en/bfd.html
05:26:50 <lament> Rugxulo: you compare languages with a magical language comparator.
05:27:10 <lament> Rugxulo: i doubt many people here can run .com files
05:27:18 <Rugxulo> http://dosbox.sf.net
05:27:25 <Rugxulo> :P
05:27:45 <lament> easier to write your own compiler
05:28:05 <Rugxulo> but you can run so many other goodies with DOSBOX :D
05:28:14 <Rugxulo> and it ain't a huge download either
05:34:33 <SimonRC> (Come *ON* Wikipedia you slow pile of crap!)
05:36:29 <SimonRC> www. works fine but en. gives:
05:36:31 <SimonRC> While trying to retrieve the URL: http://en.wikipedia.org/wiki/Main_Page
05:36:31 <SimonRC> The following error was encountered:
05:36:31 <SimonRC> * Connection to 145.97.39.155 Failed
05:36:31 <SimonRC> The system returned:
05:36:34 <SimonRC> (113) No route to host
05:37:30 <lament> i was just getting 502 errors on google (!!!)
05:37:38 <lament> perhaps there's a serious DoSing in progress
05:38:09 <SimonRC> oh, it's suddenly working again
05:41:18 -!- Rugxulo has left (?).
05:46:16 <RodgerTheGreat> in my computer science class, we were assigned a group of functions to implement recursively. It was really easy, so now I'm working on reimplementing them in BASIC. doing recursion without actual function calls and no variable scoping makes it a great deal more interesting.
05:46:31 <bsmntbombdood> How does that work?
05:47:59 <lament> stack-in-an-array?
05:48:22 <RodgerTheGreat> well, so far I did a simple addition routine
05:48:34 <RodgerTheGreat> let me paste in my code:
05:49:56 <RodgerTheGreat> 10 INPUT A,B:GOSUB 20:PRINT A:END
05:50:18 <RodgerTheGreat> 20 IF B>1 THEN B=B+1:GOSUB 20
05:50:30 <RodgerTheGreat> 30 A=A+1:RETURN
05:51:32 <SimonRC> erm, that would crash if B>1, surely?
05:52:00 <SimonRC> Or overflow the call stack rather.
05:52:15 <RodgerTheGreat> erk
05:52:23 <RodgerTheGreat> B=B+1 should be B=B-1
05:52:26 <SimonRC> indeed
05:52:27 <RodgerTheGreat> typed it in wrong
05:52:31 <lament> RodgerTheGreat: GOSUB counts as a funtion call
05:52:49 <lament> since there's a stack
05:53:04 <SimonRC> But there is no local scope.
05:53:10 <lament> right.
05:53:33 <RodgerTheGreat> yeah, it's a primitive type of function call
05:59:00 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
06:25:34 -!- GregorR-L has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:25 -!- GregorR-L has quit ("Leaving").
08:02:26 -!- GreaseMonkey has joined.
08:10:56 <Razor-X> Meh. Reading the Vorbis specification truly humbles me.
08:24:20 -!- Arrogant has joined.
08:36:44 <GreaseMonkey> ###-###
08:36:45 <GreaseMonkey> #> + <#
08:36:45 <GreaseMonkey> ### ###
08:36:45 <GreaseMonkey> # #
08:36:58 <GreaseMonkey> an OR gate for my new particle automaton
08:37:14 <GreaseMonkey> k, gonna get some sleep, cya
08:39:08 -!- GreaseMonkey has quit ("Remember: I need a banana banana banana teracotta banana teracotta terracotta pie.").
08:39:12 <oklopol> has anyone done quicksort in brainfuck?
08:58:10 <SimonRC> lol
08:58:19 * SimonRC goes for breakfast
09:03:51 <oklopol> :DD
09:16:08 <Razor-X> Recursion isn't exactly... BF's strongpoint.
09:24:47 <oklopol> true, but i've been making this string parser as a wimpmode for it, stacks are as easy to use with it as in ... languages they are easy to use :D
09:27:26 <Razor-X> The amount of work being done in BF is huge. Notably BFC and BFASM for something akin to today's developing tools or pikhq's BFM for an optimizing BF semi-high-level macro system.
09:29:59 <oklopol> eh... bad idea you say? :D
09:31:01 <Razor-X> Well, go ahead, I guess. Heh.
09:31:21 <Razor-X> Me, personally, I'm tired of BF. It was really innovative the first time I saw it.
09:31:35 <oklopol> well, equally fun, stupid or not :)
09:31:46 <Razor-X> INTERCAL is fun.
09:31:54 <oklopol> yes, this is prolly the last thing i do with it :)
09:32:38 <oklopol> never done intercal :\
09:32:52 <oklopol> maybe today
09:34:30 -!- oerjan has joined.
10:11:23 -!- Arrogant has quit ("Leaving").
11:02:32 -!- oerjan has quit ("Later").
12:31:52 -!- jix has joined.
13:02:01 -!- cmeme has quit ("Client terminated by server").
13:02:16 -!- cmeme has joined.
13:35:45 -!- nooga has joined.
13:36:16 <nooga> oi
14:23:44 -!- jix_ has joined.
14:31:31 -!- jix has quit (Read error: 110 (Connection timed out)).
16:01:42 -!- nooga has quit (Read error: 113 (No route to host)).
18:28:32 -!- GregorR-L has joined.
18:38:02 -!- meatmanek has quit (SendQ exceeded).
20:28:12 -!- meatmanek has joined.
21:04:56 -!- Sph1nx has joined.
21:38:46 -!- Sph1nx has quit (" !").
22:27:24 -!- GreaseMonkey has joined.
22:45:59 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
23:08:15 -!- CakeProphet has joined.
23:10:24 <GreaseMonkey> hello
23:15:16 <SimonRC> hi
23:17:18 <SimonRC> what happens when I do this:
23:17:19 <SimonRC>
23:18:17 <GreaseMonkey> you get a blank message
23:18:18 <GreaseMonkey>
23:18:37 <SimonRC> it was supposed to make your compuer beed a lot
23:18:48 <SimonRC> it was supposed to be a string of BELs
23:19:04 <GreaseMonkey> but i have nix
23:19:09 <GreaseMonkey> linux
23:19:33 <GreaseMonkey> "gotta take a linux" "don't forget to flush"
23:25:32 <SimonRC> :-S
23:31:34 <RodgerTheGreat> lol
23:32:11 <GreaseMonkey> hey, is nonlogic taking new accts?
23:32:15 <GreaseMonkey> if not, then when?
23:38:41 <bsmntbombdood> hum
23:38:48 <bsmntbombdood> talked to the programming teacher at my school just now
23:39:38 <bsmntbombdood> "OOP OOOP OOP OOP OOP IS THE AWNSER OOP OOP"
23:40:24 <GregorR-L> Java teacher?
23:41:21 <bsmntbombdood> He teachs c++ and java
23:41:24 <GreaseMonkey> c++ is teh ghey
23:41:27 <GreaseMonkey> c ftw
23:41:32 <bsmntbombdood> c is fun
23:41:33 <GreaseMonkey> well, c++ IS an ass
23:41:44 <GreaseMonkey> i can do OOP in C
23:41:52 <bsmntbombdood> yeah
23:41:52 <GreaseMonkey> i usually make my own scripting langs though
23:41:56 <bsmntbombdood> I tried to convince him that
23:42:19 <bsmntbombdood> "OOP means data hiding"
23:42:34 <GreaseMonkey> OOP means incompatibility with real langs
23:42:37 <bsmntbombdood> "it can be oop unless it has compiler enforce private methods"
23:42:45 <bsmntbombdood> s/it can/it can't/
23:42:59 <GreaseMonkey> minor typo there
23:43:23 <GregorR-L> OOP is a tool. Passing it off as worthless is just as stupid as accepting it as the solution for all problems.
23:43:39 <bsmntbombdood> No one said it was worthless
23:43:44 <GreaseMonkey> i was slinging mud at C++
23:43:47 <bsmntbombdood> OOP is a style, not part of the language
23:43:54 <GreaseMonkey> yep
23:44:13 <GreaseMonkey> for all i know, it could be a Befunge program
23:44:26 <GregorR-L> It's a paradigm made easier to use with language support, though such support is not strictly necessary.
23:44:38 <GregorR-L> And C++ gets a bad name, and D doesn't get enough press.
23:44:42 <SimonRC> erm, function pointers are generally considered a prerequisite to implementing an OO language.
23:45:18 <bsmntbombdood> GregorR-L: exactly
23:45:43 <SimonRC> You could write OO assembler without difficulty.
23:45:57 <GreaseMonkey> yep
23:45:59 <bsmntbombdood> yeah
23:46:10 <bsmntbombdood> not according to him though
23:46:11 <GreaseMonkey> CALL [ebx] , anyone?
23:46:49 <bsmntbombdood> "oop needs inheritance, polymorphism, encapsulation
23:46:51 <bsmntbombdood> "
23:46:52 -!- CakeProphet has quit ("haaaaaaaaaa").
23:47:05 <SimonRC> Alas, some OO langs have ended up using the same mechanism (classes) for encapsulation, datatype definition, and method inheritance. That sucks.
23:47:44 <SimonRC> oh, and classes are sometimes used where interface should be used, futher muddying the matter.
23:48:11 <bsmntbombdood> interface?
23:48:17 <bsmntbombdood> a class is an interface
23:48:39 <SimonRC> I was refering to thing like "List" being an abstract.
23:48:42 <SimonRC> + class
23:48:57 <bsmntbombdood> WHat's wrong with that?
23:49:02 <bsmntbombdood> That's how python is
23:50:15 <SimonRC> encapsulation should be done with modules, datatypes should be defined seperately from their methods, multiple dispatch/overriding/virtual methods should be done with multimethods (and multiple-parameter typeclasses preferrably).
23:50:19 <SimonRC> bsmntbombdood: erm, no
23:50:38 <bsmntbombdood> ?
23:50:41 <SimonRC> Python uses duck typing, interfaces are defined in the comments, informally.
23:50:55 <bsmntbombdood> A list is a class
23:51:01 <SimonRC> yes
23:51:15 <SimonRC> Ah, wrong terminology.
23:51:53 <SimonRC> I meant that there would be an *abstract* sequence class that vectors and linked lists inherited from.
23:52:10 <GregorR-L> http://www.esolangs.org/wiki/Glass . 'nuff said.
23:52:12 <SimonRC> Vectors actually being Python's lists, to confuse matters
23:52:42 <bsmntbombdood> New style classes in python have a common inheritance
23:53:19 <SimonRC> OST, maybe I am wrong about what I just said.
23:53:21 <SimonRC> never mind
23:53:32 <SimonRC> But algebraic datatypes rock.
23:53:54 <SimonRC> as do typeclasses
23:54:23 <SimonRC> especial multiple-parameter typecalsses with fundeps.
23:54:55 <bsmntbombdood> ...that being?
23:55:16 <SimonRC> hard to explain
23:56:22 <GreaseMonkey> OOP wouldn't be too bad in TheSquare
23:56:25 <SimonRC> They are like interfaces, except that can apply to more than one (OO) class.
23:56:38 <SimonRC> Fundeps allow the compiler to deduce more stuff
23:59:43 -!- CakeProphet has joined.
2006-12-07
00:00:06 <SimonRC> hi
00:00:41 <CakeProphet> mmm
00:01:18 <lament> You are all wrong.
00:01:31 <SimonRC> orly? how so?
00:01:46 <GregorR-L> lament could have that on a T-Shirt.
00:03:09 * SimonRC hopes lament is typing a long and enlightening sentance.
00:03:21 * bsmntbombdood too
00:03:41 * GregorR-L hopes that lament is typing a long rant that will make this conversation keep spiraling into the tubes.
00:04:18 <lament> no.
00:04:19 <bsmntbombdood> Well - I need an idea for a project for the programming teacher
00:05:56 <SimonRC> A roguelike!
00:06:18 <bsmntbombdood> boring
00:06:22 <SimonRC> They can last as a project from a few days to a lifetime.
00:13:25 <lament> bsmntbombdood: a virtual girlfriend
00:13:36 <bsmntbombdood> hehe
00:15:54 -!- DarthLappy has joined.
00:19:49 <SimonRC> WRU?
00:22:13 <bsmntbombdood> WRU?
00:33:14 -!- DarthLappy has left (?).
00:51:04 <CakeProphet> hmmm...
00:51:36 <CakeProphet> Changing the entire foundation of your fairly-developed-but-not-quite-complete system structure is absolutely lovely
00:54:54 -!- Keymaker has joined.
01:02:44 <GreaseMonkey> ##-#
01:02:45 <GreaseMonkey> 1 > +< 2
01:02:45 <GreaseMonkey> #
01:02:45 <GreaseMonkey> -
01:02:45 <GreaseMonkey> #
01:02:45 <GreaseMonkey> ##
01:02:50 <GreaseMonkey> ftw
01:15:31 * GreaseMonkey is away: afk pie
01:15:50 <GregorR-L> Pie made from the sweet sweet AFK berries.
01:20:32 -!- Sgeo has joined.
01:24:09 -!- GregorR-L has quit ("Leaving").
01:25:30 * GreaseMonkey is back (gone 00:09:58)
01:39:42 -!- Keymaker has left (?).
02:32:44 -!- JadussD has joined.
02:50:57 <SimonRC> hi
02:51:05 <SimonRC> JadussD: who are you?
02:51:11 <JadussD> a wanderer i guess
02:51:35 <SimonRC> Did you know what this place was before coming here?
02:51:55 <JadussD> in a way, i had an idea.
02:52:06 <SimonRC> Where did you find out about it?
02:52:14 <JadussD> i guessed that it existed.
02:52:19 <SimonRC> hm
02:52:25 <lament> didn't we all.
02:52:43 <SimonRC> No. I think I read about it on an esolanging webpage
02:53:06 <SimonRC> Although I know a few of the inhabitants here from other channels
02:53:17 <lament> i don't :(
02:53:51 <SimonRC> Have a look around the wiki, there're loads of esolangs on there, not all implemented.
02:53:57 <JadussD> i have encountered brainfuck before...
02:54:01 <JadussD> this is new to me though
02:54:23 <SimonRC> that was the first esolang I found out about too
02:54:51 <SimonRC> NewScientist ran a small column on esolangs many years back, and I Googled#.
02:55:04 <SimonRC> IIRC I was in secondary school.
03:01:58 <JadussD> i had no idea there were so many programming languages, cool. does anyone know of one designed for relating words, ie, one designed for words grouped into categories like "synonym", "antonym", a two word replacement for a single word, etc?
03:15:56 <lament> no.
03:25:27 -!- CakeProphet has quit ("haaaaaaaaaa").
03:53:16 -!- Razor-X has quit (Remote closed the connection).
03:53:55 -!- Razor-X has joined.
03:54:04 -!- GregorR-L has joined.
04:02:23 -!- JadussD has quit (Read error: 110 (Connection timed out)).
05:04:49 <GreaseMonkey> gtg food
05:05:11 -!- GreaseMonkey has quit ("Connection error 130 (Monkey too greasy)").
05:22:08 -!- pgimeno has quit (anthony.freenode.net irc.freenode.net).
05:26:08 -!- pgimeno has joined.
05:29:11 -!- Sgeo has quit (Remote closed the connection).
07:14:15 -!- GregorR-L has quit ("Leaving").
07:22:09 -!- ivan` has quit (" Like VS.net's GUI? Then try HydraIRC -> http://www.hydrairc.com <-").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:21:39 -!- ShadowHntr has joined.
09:34:42 -!- tgwizard has joined.
10:14:32 -!- ShadowHntr has quit ("End of line.").
10:50:51 -!- tgwizard has quit (Remote closed the connection).
14:49:24 -!- jix has joined.
16:18:57 -!- oklopol has quit (Read error: 110 (Connection timed out)).
16:20:02 -!- Arrogant has joined.
16:29:01 -!- fizzie has quit (Read error: 54 (Connection reset by peer)).
16:40:23 -!- fizzie2 has joined.
17:01:50 -!- fizzie2 has quit (Read error: 54 (Connection reset by peer)).
17:04:57 -!- fizzie2 has joined.
17:31:56 <RodgerTheGreat> hey guys, check this out: http://archives.nesc.ac.uk/gcproposal-5/0080.html
17:32:55 <RodgerTheGreat> http://www.bookofparagon.com/Mathematics/PerspexMachineIII.pdf
17:52:52 -!- tgwizard has joined.
18:58:43 -!- RodgerTheGreat has quit (Read error: 113 (No route to host)).
19:07:48 -!- RodgerTheGreat has joined.
19:33:52 <SimonRC> RodgerTheGreat: Ah, just some guy who seems to have invented a nice way to extend the reals to handle 0/0.
19:36:14 <tokigun> i've heard the story in the another channel, and concluded the guy was pretty boring so make (or invent) that useless symbol.
19:39:05 <tokigun> btw, i wonder last time i tell something here :S
19:39:32 <SimonRC> He's apparently got a mildly useful system out of it.
19:40:19 <SimonRC> Oh, there is a great quote in his paper (from memory): "The popularity of IEEE floating-point shows that the Reals are not fit for purpose."
19:41:13 <Razor-X> Bleh. I heard about this story just a few hours ago in another channel.
19:41:47 <Razor-X> So, what *is* nullity / nullity?
19:54:35 -!- wooby has joined.
19:54:47 -!- wooby has quit (Client Quit).
19:56:05 <SimonRC> Razor-X: 0/0 it appears
19:56:36 <SimonRC> A CS grad I know says that this system looks useful for his work (program correctness, among other things).
20:02:15 <Razor-X> Heh.
20:02:26 <Razor-X> I haven't read the actual paper, just someone else's gloss-over.
20:02:38 <Razor-X> If it's too intense I won't until my flu abates, either.
20:04:29 <tokigun> PerspexMachineIII.pdf is the actual paper? link seems broken.
20:28:47 -!- oklopol has joined.
20:29:29 -!- Arrogant has quit ("Leaving").
20:44:23 <Razor-X> Is there some sort of little-DSP-vocabulary-knowledge version of the Vorbis (or MP3) standard out there?
21:08:11 <SimonRC> In trying to cut down the possible algorithms for sorting 5 items with just 7 comparisons, I think I am gradually creating a proof that such an algorithm cannot exist.
21:08:29 <bsmntbombdood> fun
21:08:47 <SimonRC> Trying to find one is summative coursework.
21:08:59 <bsmntbombdood> bubble sort ftw
21:12:53 <SimonRC> The constraints so far are guiding my algorith-creation precisely.
21:13:34 <SimonRC> Now all I have to do is keep following the constrains and prove new ones until I get either an answer or a complete set of dead-ends.
21:14:26 <tokigun> anyone interested in Hisashi Iizawa's Malbolge paper?
21:15:20 <tokigun> i have a plan to translate the paper to english, although i'm not fluent in japanese (only have basic understanding)
21:15:23 <bsmntbombdood> what a load of shit: http://www.bbc.co.uk/berkshire/content/articles/2006/12/06/divide_zero_feature.shtml
21:16:13 <SimonRC> A compsci grad says it looks useful for proably-correct programs, as it makes division total.
21:24:22 -!- Sgeo has joined.
21:55:36 <Razor-X> Where's the paper? I'll give the translation a go.
21:56:05 <Razor-X> The Malbolge one, obviously.
21:56:20 <tokigun> Razor-X, http://www.sakabe.i.is.nagoya-u.ac.jp/~nishida/DB/pdf/iizawa05ss2005-22.pdf here.
21:57:08 <tokigun> can you understand japanese?
21:57:25 <Razor-X> Yeah. I can.
21:57:32 <Razor-X> ... And Xpdf renders that into garbage.
21:57:48 <Razor-X> I guess I need to get the Japanese fonts for it.
21:58:43 <tokigun> i think you can translate the paper better than i can ;)
21:59:33 <Razor-X> Well, my Japanese is alright. Enough for teen novels with difficulty.
22:00:16 <SimonRC> use pdf2text or similar?
22:00:23 <Razor-X> Maybe... hmmm...
22:00:52 <Razor-X> Nope. It's an xpdf thing, after all.
22:01:06 <Razor-X> Bleh. And the Japanese language pack on the Foolabs site seems unavailable.
22:01:28 <tokigun> i'm learning japanese, but not so good for the paper ;) what i can do is to figure out the meaning from machanical translation.
22:02:16 <tokigun> (japanese to korean translation is very excellent, and i know common mistakes by the translation.)
22:05:21 <Razor-X> Well, you'll probably be pretty good at it, because my closest (mental) bridge is to Bengali.
22:05:30 <Razor-X> Korean *is* a CJK language so....
22:06:52 <tokigun> http://sobo.ruree.net/tmp/malbolge.txt this is my current translation (incomplete).
22:08:14 <Razor-X> Error: Couldn't find a font for 'Ryumin-Light-H'
22:08:14 <Razor-X> Error: Couldn't find a font for 'GothicBBB-Medium-H'
22:08:17 <Razor-X> Guh.
22:08:24 <Razor-X> Meant for scratch buffer, sorry.
22:08:24 <tokigun> hmm...
22:09:02 <tokigun> how about this?
22:09:02 <tokigun> http://72.14.253.104/search?hl=ko&q=cache%3Ahttp%3A%2F%2Fwww.sakabe.i.is.nagoya-u.ac.jp%2F~nishida%2FDB%2Fpdf%2Fiizawa05ss2005-22.pdf&btnG=%EA%B2%80%EC%83%89&lr=
22:09:35 <tokigun> google cache is enough for seeing pdfs without figures.
22:10:08 <Razor-X> Meh. Google beats xpdf.
22:14:09 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:26:16 -!- ShadowHntr has joined.
22:27:11 <Razor-X> This is going to be tough. I'll start in a bit on it with force.
22:27:21 <Razor-X> Because I'll need an undisturbed atmosphere.
22:39:20 <SimonRC> BTW, I found that the sorting problem I was trying to do to be just about possible.
22:39:46 <SimonRC> I really did find the solution by trying to prove that none existed.
22:42:41 -!- GreaseMonkey has joined.
22:49:36 -!- CakeProphet has joined.
23:01:43 <pgimeno> tokigun: I'm very interested in that paper
23:02:13 <bsmntbombdood> SimonRC: So, how do you do it?
23:02:23 <tokigun> pgimeno, so do i.
23:03:42 <tokigun> Iizawa didn't mention actual construction of 99 bottles of beer program, but anyway it seems to be useful for programming in malbolge.
23:05:29 <pgimeno> I already took advantage of a Google translation to find that the basis of Iizawa's method was 'data modules', but I'm interested in the details
23:05:35 <SimonRC> bsmntbombdood: I'll post is in a moe
23:05:37 <SimonRC> *mo
23:06:15 <tokigun> well, i didn't fully understand the idea too
23:07:40 <tokigun> have you seen my translation above? data module is discussed in chapter 4, and it is fully translated. take a look at it please ;)
23:07:46 <pgimeno> just saved your txt (Mozilla does not wrap text)
23:08:23 <tokigun> wrap text can be get by showing source... maybe
23:08:53 <Razor-X> Is this the guy's graduate paper?
23:09:03 <tokigun> once translated, can i post the translation to wiki?
23:09:36 <tokigun> Razor-X, seems not. i guess Iizawa is a professor and Sakabe et al. are grad students.
23:09:40 <pgimeno> tokigun: not even that way, I'm reading it with a different editor... and I guess the text is not free
23:10:01 <Razor-X> Ok then, because he refers to a compound word that translates as ``Senior Research''.
23:10:28 <tokigun> ah, cannot be in public domain... i see.
23:11:01 <Razor-X> Well, the aim of the paper is Malbolge in usage for programming protection.
23:11:06 <tokigun> Razor-X, you mean a sentence shortly after sample malbolge program?
23:11:10 <Razor-X> tokigun: Yeah.
23:11:26 <Razor-X> After his "Hello World!" program.
23:12:21 <tokigun> i think it should be translated "previous works" or something else, because it refers (for example) making cat program in malbolge and so on.
23:13:15 <tokigun> like Andrew Cooke and Lou Scheffer...
23:14:14 <Razor-X> Well, I would've translated it as "In this senior research paper, I have found that Malbolge can produce some of the most feasibly difficult programs ever. Programming in Malbolge is not a widely known art" at least, that first paragraph.
23:15:07 <Razor-X> The paragraph directly below his hello world program.
23:15:30 <tokigun> maybe correct.
23:16:14 <bsmntbombdood> Translation is hard :/
23:16:23 <tokigun> (i'd confused if senior research means Iizawa's or other people's... nevermind.)
23:19:55 -!- ShadowHntr has quit (Client Quit).
23:22:59 <Razor-X> What's a kinetic command?
23:23:15 <tokigun> Razor-X, dynamic command?
23:23:19 <Razor-X> I was thinking about that.
23:23:20 <pgimeno> for the purpose that Iizawa uses as excuse (obfuscation) I like MiniSCule best... the inner loop does not look like an interpreter and noone would say the data manipulation is actually a program
23:23:38 <Razor-X> Is there something about inputting programs on the same line in Malbolge?
23:24:24 <Razor-X> The third bullet point in his list of difficulties I would translate as "It is difficult to write dynamic [Trans: Lit: kinetic] commands on the same line"
23:24:59 <tokigun> i've translated that to...
23:24:59 <tokigun> * Each instruction forces to rewrite the program, so it's hard to repeat same sequence of instructions.
23:25:09 <pgimeno> well, it refers to encryption
23:25:29 <pgimeno> each instruction suffers a translation after being executed
23:25:37 <SimonRC> Actually, I will wait until the submission deadline before putting it online I think.
23:26:16 <Razor-X> See, the Japanese says "dynamic write".
23:26:22 <Razor-X> I had know idea what that meant.
23:26:24 -!- tgwizard has quit ("Leaving").
23:26:28 <Razor-X> s/know/no/
23:26:35 <pgimeno> dynamically rewritten?
23:26:58 <Razor-X> It uses the normal verb for "to write".
23:27:57 <Razor-X> Gah. I'm taking a break :P
23:28:05 <Razor-X> One page of this, and it's intense.
23:28:10 <tokigun> :p
23:28:38 <Razor-X> But I don't feel too bad. If I was an average Japanese student of my age, assuming American educational equivalence, it would be difficult to read also.
23:29:04 <tokigun> i'm feeling writing in english is harder than reading japanese... *phew*
23:29:12 <Razor-X> Heh.
23:29:29 <Razor-X> I think the title is a great example between the differences between English and Japanese.
23:30:13 <Razor-X> Obfuscated Programming Language Malbolge in Program Organization Method, literally.
23:35:04 <tokigun> i found interesting fact in the paper... read last sentence in chapter 8 (conclusion).
23:39:47 <pgimeno> 4.3 looks really promising
23:45:25 -!- oerjan has joined.
2006-12-08
00:12:47 * GreaseMonkey is away: afk food
00:15:25 <tokigun> food! well breakfast time is passed... :S
00:16:26 <bsmntbombdood> GreaseMonkey: Away notifications are EVIL
00:16:57 <GreaseMonkey> why are they so evil?
00:17:21 <bsmntbombdood> Because
00:18:41 <lament> GreaseMonkey: because we don't give a shit.
00:18:58 <lament> GreaseMonkey: it would make some sense if you were talking to begin with.
00:19:02 <lament> GreaseMonkey: but you weren't.
00:35:33 * GreaseMonkey is back (gone 00:22:46)
00:36:03 <GreaseMonkey> k, its off now
00:36:33 <pgimeno> breakfast time is passed for me too (good night)
00:43:56 <tokigun> http://sobo.ruree.net/tmp/malbolge.txt almost done. chapter 7 discusses general method of programming, just summary of chapter 4, 5, 6.
00:49:33 <bsmntbombdood> damn put some newlines in there
00:50:55 <bsmntbombdood> and it could use some serious english-ization
00:53:23 <tokigun> bsmntbombdood, i've put some newlines. and my english is not good enough for doing so
00:55:52 <tokigun> well, i'll welcome if someone suggests correction and so on of course...
01:00:15 <bsmntbombdood> I'll make some changes
01:00:28 <tokigun> thanks.
01:03:59 <bsmntbombdood> not sure what to do with "Several special programming languages are called esoteric programming language; they are designed not like general programming languages, so a program in these languages is hard to write or understand."
01:05:25 -!- pikhq has joined.
01:05:30 -!- pikhq has quit (Client Quit).
01:08:35 -!- pikhq has joined.
01:08:40 <tokigun> eh, i mean "some PLs are called esolang; their design criteria is different with general PL -- that is, hard to write or understand the program" maybe
01:09:23 <tokigun> (i've dozed while translating, here is 10:00 am)
01:09:54 * pikhq would like to apologise for the delay in BFM's release. . .
01:10:56 <pikhq> I found the Tcl style guide. . . I'm trying to follow it exactly.
01:10:56 <bsmntbombdood> Some programming languages are considered esoteric -- that is, hard to write or understand.
01:12:35 <pikhq> The style guide mandates (shock) documentation and comments. . .
01:14:36 <pikhq> oerjan, at least, should be glad. ;)
01:17:41 <bsmntbombdood> ok, tired of this
01:17:54 <pikhq> bsmntbombdood: "this" refers to. . .?
01:17:58 <bsmntbombdood> http://bsmntbombdood.mooo.com/malbolge.txt , english-ized up to line 78
01:18:21 <tokigun> thank you a lot!
01:18:24 <oerjan> huzzah!
01:18:40 <pikhq> Korean?
01:18:52 <bsmntbombdood> THink it's japenese
01:19:13 <oerjan> japanese, as translated by a korean into english?
01:19:48 <pikhq> I'm guessing that it's Korean, since if it were Japanese, I ould read at least some of it. ;)
01:19:53 <pikhq> (untranslated, that is)
01:20:10 <pikhq> As it is, it looks like /dev/urandom to me.
01:20:26 <tokigun> japanese translated into korean first (mostly mechanically), and translated into (poor) english by me
01:20:57 <pikhq> Ah.
01:22:22 <tokigun> i have to sleep now... have a nice day (or night, depending on your timezone) :)
01:31:41 * SimonRC goes
01:57:56 <Razor-X> Meh. I've translated Chapter 1.
01:58:27 <Razor-X> Hopefully it has Englishization, but it's hard to map Japanese tenses to English.
03:05:29 <GreaseMonkey> i'm getting off this box, cya
03:05:53 -!- GreaseMonkey has quit ("Connection error 130 (Monkey too greasy)").
03:11:38 -!- CakeProphet has quit ("haaaaaaaaaa").
03:20:51 <lament> how many tenses does japanese have?
03:22:25 <pikhq> {past,present,can't-remember-what-the-te-form/-ing-form-would-be}{plain,formal}
03:25:16 <oerjan> -ing as in present participle?
03:25:24 <pikhq> That'd be it, I believe.
03:25:33 <pikhq> Future tense? Bah, humbug. ;)
03:25:44 <oerjan> although -ing has two different meanings in english
03:29:20 <lament> i'm guessing japanese has enough tenses. all languages do.
03:29:28 <lament> Where "enough" is like 15.
03:29:48 <lament> It just might be using relatively unusual ways of differentiating them
03:30:35 -!- Sgeo has quit (Remote closed the connection).
03:30:41 <pikhq> I count a small handful that I know of.
03:30:42 <oerjan> gerund was the word i was looking for
03:31:09 <lament> i assume japanese has some way to express the subjunctive?
03:31:18 <pikhq> Gerund, in Japanese. . . Formal "desu" or "de gozaimasu" (the latter being more formal), plan "da".
03:31:35 <pikhq> Since I can't remember what the subjunctive is, I wouldn't know ATM. ;)
03:32:22 <lament> "I wish I were a fish", were is subjunctive
03:33:08 <lament> what about conditional? "I would swim"
03:33:08 <oerjan> norwegian just uses ordinary past tense for it, by the way
03:34:55 <lament> Russian has a special mood indicator particle
03:34:56 <oerjan> every language can express anything but they differ in what distinctions are mandatory to express
03:35:32 <lament> except for that language where there're no numbers :)
03:36:02 <lament> you're _probably_ right but who knows
03:36:13 <lament> i mean you're in a direct contradiction to sapir-whorf
03:36:54 <pikhq> lament: "tai" ending. . . To be honest, though, the "tai" ending makes the whole verb. . . thing into an adjective.
03:37:42 <pikhq> "Tabemasu." -> "tabetai desu." == "I eat" -> "I want to eat."
03:38:01 <lament> oerjan: there's this portuguese word, "Saudade", and you certainly can express it in English, but it requires a whole Wikipedia article to do so...
03:40:08 <bsmntbombdood> What's saudade mean?
03:40:20 <lament> similarly, russian doesn't have the verb "to be" (well, not really), so "I think therefore I am" is translated as "I think therefore I exist", which is quite a bit less visceral
03:40:34 <lament> bsmntbombdood: http://en.wikipedia.org/wiki/Saudade
03:41:03 <bsmntbombdood> wow
03:41:07 <bsmntbombdood> "feeling of longing for something that one is fond of, which is gone, but might return in a distant future. It often carries a fatalist tone and a repressed knowledge that the object of longing might really never return."
03:44:59 <bsmntbombdood> That's funny
03:45:12 <bsmntbombdood> I wonder if there's any english words that are that complicated
03:45:26 <pikhq> Mu.
03:46:06 <bsmntbombdood> mu?
03:46:54 <pikhq> You make the false assumption that there are english words that *aren't* that complicated.
03:47:06 <lament> bsmntbombdood: "Saudade" isn't complicated. It's simply saudade.
03:47:10 <lament> One short word.
03:47:44 <lament> It's not the fault of Portuguese that English requires a long sentence to translate it.
03:47:53 <bsmntbombdood> The english translation is complicated
03:48:06 <lament> Obviously the English translation of English words is not gonna be complicated.
03:48:10 <lament> Being one word long!
03:48:29 <bsmntbombdood> bah
03:49:20 <lament> bsmntbombdood: http://en.wikipedia.org/wiki/Untranslatability
03:50:31 <lament> "Serendipity" is a very good one
03:50:56 <bsmntbombdood> ha...I don't even know what that means
03:53:00 <bsmntbombdood> I suppose that would be hard to translate
03:58:11 <Razor-X> Tenses in Japanese ignoring honor level: Present, Past, Progressive, Volitional, Impression, Desire, others I can't remember.
03:59:00 <pikhq> Razor-X: Thank you for filling in what I forget.
03:59:03 <Razor-X> Some of the tenses (Impression and Desire are some offhand) have multiple versions, and then you have honorific forms and humble forms (and by extension, humble honorific forms).
03:59:21 <Razor-X> (And, of course, coarse forms.)
04:00:02 <pikhq> And, of course, there are no future tenses. ;)
04:00:17 <Razor-X> Yup.
04:00:50 <lament> sounds pretty nice
04:01:17 -!- ShadowHntr has joined.
04:01:26 <Razor-X> The language is pretty neat but, the gulf between levels of prose is immense.
04:01:57 <Razor-X> What you'll hear spoken is almost nonexistant in, say, a teen novel, and these all pale to what you can find in something like a thesis paper.
04:02:33 <lament> that's true of every language.
04:02:43 <lament> I'm reading Harry Potter right now in Spanish
04:02:54 <lament> it's scary how complicated the language is :)
04:02:59 <lament> (to a total newbie like me)
04:03:04 <bsmntbombdood> Bah, I take spanish at school
04:03:08 <Razor-X> Well, I can read Harry Potter in Japanese, to an extent.
04:03:25 <lament> OTOH i have looked at real Spanish writers and their spanish is mindblowing
04:03:30 <Razor-X> But the grammar is really easy. Just the vocabulary.
04:04:11 <lament> bsmntbombdood: y como? sabes lo bien?
04:04:16 -!- pikhq has quit ("leaving").
04:04:34 <bsmntbombdood> aaaagh don't do that to me
04:05:03 <lament> ah, chido, no te molestare
04:05:56 <lament> Razor-X: spoken language is always way easier than everything else
04:06:05 <lament> learn 300 words and you're all set :D
04:07:27 <Razor-X> Still, there are some things about Japanese that are annoying.
04:08:17 <Razor-X> Most of Japanese has almost *no* compound words, unlike the Romance/Germanic languages. Well, maybe they were compound, but Japanese changed so dramatically during the reforms that it's almost impossible to trace back.
04:09:47 <Razor-X> And of course you have the whole Kanji system, which is annoying at a certain level, but beautiful at another.
05:56:17 <lament> it's funny how in Chinese, the characters are neither particularly annoying nor particularly beautiful
05:56:22 <lament> they're just how people write stuff
05:56:34 <lament> and in Japanese, they get this special position
06:08:20 <ShadowHntr> i like the quote brackets they use in japanese.
06:08:20 <ShadowHntr> :)
06:08:37 <ShadowHntr> the corners of a rectangle
06:08:43 <ShadowHntr> upper left and lower right
06:08:46 <ShadowHntr> around a phrase
06:08:51 <ShadowHntr> or title
06:28:47 -!- oerjan has quit ("Good night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:34:17 -!- ShadowHntr has quit ("End of line.").
13:26:57 -!- jix has joined.
14:25:34 -!- jix_ has joined.
14:33:54 -!- jix has quit (Read error: 110 (Connection timed out)).
14:55:21 -!- pikhq has joined.
16:35:32 <pikhq> GregorR: The next release of BFM should be able to run readily in EgoBot. . .
16:35:56 <pikhq> I'm currently working on an interpreter pass. ;)
16:36:33 <pikhq> Also, since BFM can now read in code from stdin. . . You've got your work cut out for you.
16:53:49 -!- wooby has joined.
16:59:03 -!- GregorR-L has joined.
17:01:23 * pikhq should probably get off his ass and finish making the bloody changes to BFM
17:39:47 <bsmntbombdood> heh
17:44:07 <pikhq> Pretty much where I'm at involves finishing the interpretation pass, frobbing with the command line parser a bit, and tarring it up.
17:48:33 -!- fizzie2 has changed nick to fizzie.
18:04:48 -!- jix_ has quit (Read error: 104 (Connection reset by peer)).
18:14:37 -!- jix has joined.
18:34:02 -!- The_8472 has joined.
18:34:06 <pikhq> 'Lo.
18:34:21 <bsmntbombdood> welcome
18:38:33 -!- tgwizard has joined.
19:16:17 * pikhq notes that the Esolang contest *still* isn't done.
20:17:21 -!- oerjan has joined.
20:17:25 <pikhq> 'Lo.
20:17:44 <oerjan> Hi
20:19:55 <oerjan> Of ''course'' the esolang contest still isn't done. It is a long standing tradition that those contests never get judged :)
20:22:20 -!- wooby has quit.
20:35:46 -!- pikhq has quit (Read error: 110 (Connection timed out)).
21:50:11 -!- ivan` has joined.
22:15:13 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:31:13 -!- Rugxulo has joined.
22:31:41 <Rugxulo> Brainf*** question: is decrementing 0 supposed to stay at 0 or not?
22:31:54 <GregorR-L> Depends on the implementation.
22:32:06 <GregorR-L> Most will wrap to 255 (or their bitwidth), some will crash, some will stay 0.
22:32:14 <GregorR-L> Some even support proper negative numbers.
22:32:30 <GregorR-L> The original implementation would wrap to 255.
22:32:58 <Rugxulo> okay
22:33:38 <Rugxulo> Gregor, ever written anything in BF?
22:34:18 <GregorR-L> Heheheh
22:34:32 <GregorR-L> Yes, yes I have.
22:35:15 * Rugxulo has only written three things, and they ain't too fancy/interesting :P
22:37:08 <Rugxulo> (1). counts from 9 to 1, (2). counts from 0 to 9, (3). accepts a single byte input and outputs 'five' if it was '5' (simple stuff, obviously, not that impressive)
22:37:44 <Rugxulo> oops, I meant "counts down and prints the numbers w/ a space b/w 'em" (yeah, not that cool)
22:38:23 <GregorR-L> Well, in a language like BF, it's pretty crucial that you get the simple stuff down pat.
22:39:12 <Rugxulo> ;)
22:41:15 -!- Rugxulo has quit ("Clap on! , Clap off! clap@#&$NO CARRIER").
22:43:03 -!- Rugxulo has joined.
22:51:44 -!- Jay_Walker has joined.
22:51:49 -!- Jay_Walker has left (?).
22:52:31 -!- Rugxulo has left (?).
22:59:59 -!- ShadowHntr has joined.
23:04:57 -!- pgimeno has quit ("You're lucky as you can read this message but I can't").
23:20:54 -!- tgwizard has quit (Remote closed the connection).
23:37:36 -!- Sgeo has joined.
23:58:04 -!- CakeProphet has joined.
2006-12-09
00:47:39 -!- The_8472 has quit ("Muss ein paar Welten vernichten, kann ein bissl dauern.").
01:22:35 -!- pgimeno has joined.
01:22:42 -!- GregorR-L has quit ("Leaving").
01:31:37 -!- pikhq has joined.
01:34:00 <pikhq> Allow me to present:
01:34:06 <pikhq> BFM: The Next Generation.
01:34:10 <pikhq> ;)
01:34:17 <pikhq> http://pikhq.nonlogic.org/bfm.tar.bz2
01:34:29 <pikhq> Has to be, like, the first tarball out in a month.
01:35:31 <pikhq> All formerly valid BFM code is still valid. . . However, this build provides features that make for much more legible code (both in BFM code and in the compiler's code). . .
01:36:21 <pikhq> Additionally, a simple BFM interpreter is provided, as well as the "string" command, the "eval" command, and the ift, whilet, and whilet1 macros.
01:36:46 <pikhq> (look at the source in stdlib/ for more info on them)
01:37:16 <pikhq> oerjan?
01:37:26 <oerjan> eval?
01:38:44 <pikhq> It's what allows if, ift, whilet, and whilet1 to work.
01:39:04 <pikhq> macro if {var code} {} {} {while var {eval code}}
01:39:22 <pikhq> Err.
01:39:27 <pikhq> macro if {var code} {} {} {while var {eval code;set var 0}}
01:39:52 <pikhq> Basically, it allows one to *execute* one of the arguments to a macro.
01:47:04 <bsmntbombdood> sweet
01:47:53 <pikhq> The most *obvious* new feature to you, oerjan, should be the complete and utter rewrite of the compiler. ;)
01:49:11 <bsmntbombdood> Anyone have any ideas for a project for an independant study in programming for school?
01:49:50 <pikhq> A program idea generator.
01:49:51 <pikhq> XD
01:49:51 <oerjan> you are crazy enough to ask ''us''?
01:50:01 <bsmntbombdood> yep
01:50:11 <pikhq> Prove Malbolge Turing complete.
01:50:24 <oerjan> but it isn't. finite memory.
01:50:34 <bsmntbombdood> ha! yeah right
01:50:51 <pikhq> oerjan: But it has the infinite input and output tapes.
01:51:36 <oerjan> that doesn't help much
01:52:08 <pikhq> Unless one uses those tapes for access to an external memory device.
01:52:57 <oerjan> well, theoretically it might be enough to loop output back into input
01:54:10 <oerjan> giving you enough for an infinite queue
01:54:29 <pikhq> Hmm. . . Yeah.
01:54:32 <bsmntbombdood> back to my topic! :)
01:54:36 <pikhq> That'd work rather well.
01:55:36 <oerjan> what, who says we left your topic? (:C
01:57:05 <oerjan> you could write an interpreter for a simple (but non-esoteric) toy language
01:57:17 <bsmntbombdood> I don't think my teacher would be ok with an esoteric language
01:57:25 <pikhq> He said non-esoteric.
01:57:38 <bsmntbombdood> yeah, that comment was before I saw that
01:58:13 <bsmntbombdood> Meh, too many languages in exsistance
01:59:52 <oerjan> write a simulator of something...
02:00:09 <bsmntbombdood> Like?
02:02:36 <oerjan> something physics-related, perhaps
02:02:55 <bsmntbombdood> I'm still not sure what you mean
02:03:28 <lament> write a simulation of the universe.
02:05:17 <oerjan> or you could simulate something with humans, such as christmas shopping...
02:12:16 <pikhq> Thoughts on BFM: TNG?
02:12:26 <pikhq> (aside from "there's better things to work on!")
02:13:48 <oerjan> i'm afraid at the moment it's "I'm too tired too look at it right now"
02:15:31 <pikhq> Ah.
02:16:25 <oerjan> spent some hours reading a pdf book on proofs and types
02:50:54 -!- oerjan has quit ("Good night").
04:08:03 -!- SimonRC has quit (anthony.freenode.net irc.freenode.net).
04:08:03 -!- lindi- has quit (anthony.freenode.net irc.freenode.net).
04:08:04 -!- SimonRC has joined.
04:08:06 -!- lindi- has joined.
04:08:15 -!- Sgeo has quit (Remote closed the connection).
04:33:09 <Razor-X> bsmntbombdood: Come up with an idea.
04:33:22 <Razor-X> I have an idea which I've discussed here before, but it's already licensed, so poop :P
04:33:46 <Razor-X> I was doing the initial implementation in Java, but it may change to CL, depending on whether I take the AP test or not.
04:34:04 <bsmntbombdood> ...
04:34:18 <Razor-X> Mmm?
04:34:45 <bsmntbombdood> <Razor-X> bsmntbombdood: Come up with an idea.
04:34:52 <bsmntbombdood> Is that a command or a statement?
04:34:59 <Razor-X> The latter.
04:35:16 <bsmntbombdood> Oh, then, what's your idea?
04:35:18 <Razor-X> Come on. You must've come up with *some* ideas in your experience in programming? Something done wrong, something not quite modern enough, etc, etc.
04:35:46 <Razor-X> bsmntbombdood: The idea for a lossless UDP mass transfer protocol minimizing ACKs.
04:35:56 <bsmntbombdood> I dunno...
04:36:03 <Razor-X> Well, here's an idea:
04:36:51 -!- GregorR-L has joined.
04:36:51 <Razor-X> Come up with a metadata tagging format for MP3, extra kudos for a format applicable to other music encoding filetypes, that allows you to be expressive *without* being hopelessly baroque like ID3v2.
04:37:33 <bsmntbombdood> That's not really a programming project
04:37:33 <pikhq> BEGIN INTERNET RELAY PROGRAMMING STATEMENT:
04:37:43 <Razor-X> bsmntbombdood: Why not?
04:37:46 <pikhq> bsmntbombood, please come up with an idea for yourself.
04:37:50 <pikhq> END IRP STATEMENT.
04:38:08 <Razor-X> You have to come up with the tagging format, and write code to demonstrate the tagging format's flexibility and ease of use.
04:48:06 <RodgerTheGreat> sounds like a programming project to me.
04:50:53 <RodgerTheGreat> what were the requirements of this assignment again?
04:51:09 <bsmntbombdood> There aren't hard requirements
04:52:22 <bsmntbombdood> Should take a semester, and be "advanced". (advanced in his mind isn't very advanced
04:52:33 <bsmntbombdood> )
04:55:45 <pikhq> You've got enough time to write a simple kernel, methinks.
04:56:04 <pikhq> Show him what's really advanced. :p
04:56:49 <bsmntbombdood> heh
04:57:29 <RodgerTheGreat> there are many operating system components that would be a sufficient challenge- a window manager, a package manager, a filesystem, etc.
04:57:44 <RodgerTheGreat> an IDE or a compiler suite could be interesting
04:57:57 <RodgerTheGreat> perhaps a shell
04:58:04 <ShadowHntr> check out QNX.
04:58:04 <ShadowHntr> :)
04:58:27 <bsmntbombdood> ShadowHntr: Yeah right
04:58:40 <ShadowHntr> oh you're talking about writing one !
04:59:32 <bsmntbombdood> RodgerTheGreat: Or too much of a challenge...
04:59:51 <RodgerTheGreat> a shell isn't all that complicated
05:01:15 <bsmntbombdood> But there's plenty of good shells out there
05:02:38 <RodgerTheGreat> you're missing the point. There are virtually no tasks for which workable software is completely unavailable. This doesn't make it pointless to build your own.
05:03:16 <bsmntbombdood> Well, the guy said it should be origina
05:03:18 <bsmntbombdood> l
05:03:50 <RodgerTheGreat> there is no such thing as an "original idea", only improvements based on observation of existing solutions and problems.
05:04:06 <bsmntbombdood> Some ideas are more original than others
05:06:05 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
05:06:31 -!- ShadowHntr has joined.
05:06:53 <RodgerTheGreat> rather than attempting to come up with a groundbreaking project, find an existing piece of software that you feel you can make better.
05:30:41 <Razor-X> A window manager would be a pretty fun project.
05:30:58 <RodgerTheGreat> I agree
05:31:14 <Razor-X> Depending on the language you do it in, and how closely you want to follow the XDCCP (? forgot the name of the standard).
05:32:07 <RodgerTheGreat> you could choose between a wide range of levels of complexity, which makes it a good project for a class- if things go badly, you can scale back. If things go well, you can add features
05:32:19 <Razor-X> Exactly.
05:33:10 <RodgerTheGreat> twin -> http://linuz.sns.it/~max/twin/screenshots/twin-on-X11.png ^_^
05:33:23 <Razor-X> Shameless lisp plug: http://paste.lisp.org/display/19072
05:33:34 <Razor-X> That's a CL WM that's implemented in a handful of lines.
05:33:40 <RodgerTheGreat> cool
05:33:58 <RodgerTheGreat> what does it look like?
05:36:25 <Razor-X> Mmm. I can't find the URL.
05:36:30 <Razor-X> TinyWM is the name of the WM.
05:37:56 <RodgerTheGreat> http://incise.org/index.cgi/TinyWM <- this appears to be coded in C and Python, but has similar functionality and structure
05:40:02 * pikhq would be liable to just write a Tcl WM, just to prove it could be done
05:40:32 <RodgerTheGreat> that's the spirit!
05:41:00 <ShadowHntr> Erlang!
05:41:01 <ShadowHntr> ;)
05:42:12 <RodgerTheGreat> g'night everybody
05:43:29 <Razor-X> RodgerTheGreat: It's the same WM.
05:43:37 <Razor-X> It's been ported to CL, is all.
05:46:13 <bsmntbombdood> Wow, a window manager in python
05:48:14 <Razor-X> Ewww. Python.
05:48:19 <Razor-X> Why use Python when you can use CL?
05:48:30 <bsmntbombdood> Cuz python rocks?
05:48:36 <Razor-X> Compared to CL?
05:48:51 <bsmntbombdood> I don't know enough of CL to say
05:49:25 <bsmntbombdood> CL requires so much more effort to read
05:50:34 <bsmntbombdood> (probably because I'm a noobie, but still)
05:51:52 <bsmntbombdood> I can't understand lisp without an editor that matches parens for me
06:07:08 -!- ivan` has quit (anthony.freenode.net irc.freenode.net).
06:07:09 -!- sekhmet has quit (anthony.freenode.net irc.freenode.net).
06:07:09 -!- SimonRC has quit (anthony.freenode.net irc.freenode.net).
06:07:09 -!- CakeProphet has quit (anthony.freenode.net irc.freenode.net).
06:07:10 -!- oklopol has quit (anthony.freenode.net irc.freenode.net).
06:07:10 -!- cmeme has quit (anthony.freenode.net irc.freenode.net).
06:07:11 -!- RodgerTheGreat has quit (anthony.freenode.net irc.freenode.net).
06:07:11 -!- pgimeno has quit (anthony.freenode.net irc.freenode.net).
06:07:11 -!- ShadowHntr has quit (anthony.freenode.net irc.freenode.net).
06:07:11 -!- pikhq has quit (anthony.freenode.net irc.freenode.net).
06:07:11 -!- meatmanek has quit (anthony.freenode.net irc.freenode.net).
06:07:12 -!- lindi- has quit (anthony.freenode.net irc.freenode.net).
06:07:12 -!- sp3tt has quit (anthony.freenode.net irc.freenode.net).
06:07:12 -!- bsmntbombdood has quit (anthony.freenode.net irc.freenode.net).
06:07:12 -!- puzzlet has quit (anthony.freenode.net irc.freenode.net).
06:07:12 -!- fizzie has quit (anthony.freenode.net irc.freenode.net).
06:07:13 -!- GregorR has quit (anthony.freenode.net irc.freenode.net).
06:07:13 -!- lament has quit (anthony.freenode.net irc.freenode.net).
06:07:13 -!- tokigun has quit (anthony.freenode.net irc.freenode.net).
06:07:13 -!- mtve has quit (anthony.freenode.net irc.freenode.net).
06:09:12 -!- tokigun has joined.
06:09:12 -!- ivan` has joined.
06:09:12 -!- sekhmet has joined.
06:09:14 -!- GregorR has joined.
06:09:57 -!- pgimeno has joined.
06:10:00 -!- lindi- has joined.
06:10:00 -!- puzzlet has joined.
06:10:00 -!- sp3tt has joined.
06:10:00 -!- bsmntbombdood has joined.
06:10:05 -!- lament has joined.
06:10:05 -!- ShadowHntr has joined.
06:10:05 -!- pikhq has joined.
06:10:05 -!- meatmanek has joined.
06:10:08 <Razor-X> Look at the indentation.
06:10:09 -!- SimonRC has joined.
06:10:09 -!- CakeProphet has joined.
06:10:09 -!- oklopol has joined.
06:10:09 -!- cmeme has joined.
06:10:15 -!- RodgerTheGreat has joined.
06:10:55 <pikhq> Why the nested netsplits?!?
06:11:31 <bsmntbombdood> pikhq: Upgrade of the ircd
06:11:35 <bsmntbombdood> Razor-X: Not enough
06:11:37 <pikhq> Ah.
06:12:11 -!- mtve has joined.
06:12:12 -!- fizzie has joined.
06:12:51 <Razor-X> I unabashedly love sexps.
06:13:12 <bsmntbombdood> I don't
06:13:13 <Razor-X> Pexps feel so ... uncouth after using sexps for long enough, IMO.
06:13:23 <pikhq> Pexps?
06:13:35 <Razor-X> P-expressions, the counterpart to S-expressions.
06:13:38 -!- sp3tt has quit (anthony.freenode.net irc.freenode.net).
06:13:38 -!- puzzlet has quit (anthony.freenode.net irc.freenode.net).
06:13:38 -!- lindi- has quit (anthony.freenode.net irc.freenode.net).
06:13:38 -!- bsmntbombdood has quit (anthony.freenode.net irc.freenode.net).
06:13:39 -!- lindi- has joined.
06:13:42 -!- sp3tt has joined.
06:13:43 -!- puzzlet has joined.
06:13:45 <lament> i think sexps are superugly.
06:13:46 -!- bsmntbombdood has joined.
06:13:54 <Razor-X> I love sexps.
06:13:56 <pikhq> Thought the counterpart was mexps.
06:13:57 <lament> I used to like theim.
06:14:02 <lament> When i was your age :D
06:14:11 <Razor-X> So it's an age thing, huh?!?!
06:14:18 <lament> I suppose so :)
06:14:27 <Razor-X> One one one !!??? question question
06:14:31 <lament> well, i understand why one would like them
06:14:35 <Razor-X> I'm trying to pull off a teenage AOLer thing.
06:14:46 <lament> but they're ugly.
06:14:50 <lament> and i don't like ugly.
06:14:53 <pikhq> (== (+ 1 1) 2)
06:14:56 <pikhq> Purty.
06:14:58 <Razor-X> Well, I find them easy to read, and very expressive.
06:15:10 <pikhq> Of course, I think that Tcl's beautiful. ;)
06:15:16 <lament> they're conceptually very elegant, but ugly in practice.
06:15:26 <lament> I used to like that, but no longer do so.
06:15:38 <Razor-X> I haven't found any syntax that marries both well.
06:15:42 <lament> In particular, right now i think the usual math notation is way, way prettier.
06:15:55 <Razor-X> Hmmm. There I give.
06:15:57 <lament> even though conceptually it's absolutely horrible.
06:16:20 <lament> and yes, obviously you can't have both
06:16:27 <pikhq> I think that usual math notation's fugly.
06:16:29 <lament> but you can have degrees...
06:16:31 <Razor-X> Conventional expressions are godawful, and the only other syntax I've encountered is OCaML which looked so awful, I put the language down immediately on seeing the syntax.
06:16:49 <lament> "conventional expressions"?
06:16:58 <lament> is haskell really that bad?
06:17:01 <Razor-X> Pexp/Mexp (too lazy to look it up)
06:17:08 <Razor-X> It's alright.
06:17:15 <pikhq> 2+2=4 <- conventional expression
06:17:36 <lament> i think haskell has the best mixture of conceptual elegance vs. prettiness
06:17:45 <lament> it has the same "feel" as math notation
06:17:51 <Razor-X> I became a significantly better lisp coder after Haskell, lemme say. Haskell really made the points click and made me appreciate the differences between dirty functional languages and pure functional languages.
06:18:08 <pikhq> vs (= (+ 2 2) 4), 2 2+4=, [= [+ 2 2] 4]. . .
06:18:09 <lament> yet unlike math notation it makes perfect sense :)
06:18:15 <Razor-X> And code something nontrivial for a full experience.
06:19:35 <Razor-X> I got the code for parsing ID3v2.2 headers working. Hooray. Time to add in ID3v2.3 and ID3v2.4.
06:19:45 <Razor-X> And I'll add in generic functions for each tag.
06:20:54 <Razor-X> You can embed pictures in ID3v2 tags you know. I mean, who can't live without pictures embedded in metadata?
06:21:05 <Razor-X> s/can\'t/can/
06:21:30 <pikhq> Same people who can't live without object-oriented coffee making apparati.
06:22:18 <Razor-X> What's wrong with my individial coffee beans being subclasses of an abstract Bean class?
06:23:24 <Razor-X> I must say, I revise my opinion on OOP after taking a good look at the real CLOS. I like CLOS a lot better than message passing object systems too.
06:24:36 <pikhq> That's great and all, but your coffee making apparati don't need an object system to make damned good coffee.
06:24:50 <Razor-X> Yeah it does.
06:25:18 <pikhq> Mine doesn't even having Turing completeness, much less an object system.
06:25:28 <Razor-X> It saves memory if it encounters the same coffee bean as added in a hash table, so when it comes to Coffee.blend, it's more effecient.
06:25:45 <pikhq> My coffee maker:
06:26:49 <pikhq> int coffee(beans coffee[SIZE_OF_FILTER]) {hot_water(coffee);return coffee}
06:27:24 <Razor-X> Hopelessly underperforming according to today's Modern CS Standards (TM).
06:28:06 <pikhq> Modern CS Standards (TM), of course, include severe over-complexity, under-performing, and general stupidity.
06:28:15 <lament> pikhq: i bet your coffee filter sucks, though.
06:28:20 <lament> i mean coffee maker
06:29:57 <Razor-X> public abstract class Coffee { bean[] filter; public Coffee (int size) { filter = new bean[size]; } public abstract void Blend; }
06:30:03 <pikhq> lament: And I bet Razor's takes as much space as the oven.
06:30:26 <Razor-X> That's just a *part* of what a True Coffee Machine by Modern CS Standards (TM) should have.
06:30:45 <Razor-X> void Blend being dependant on your vendor-specific blending method.
06:31:02 <pikhq> New coffee maker. . .
06:31:26 <pikhq> ,[+++.,]
06:31:38 <pikhq> ;)
06:35:19 <Razor-X> I love it how CS just gets farther and farther, but hasn't fixed the probably oldest problem in the entire CS world -- bad comments.
06:36:36 <Razor-X> I'm using a CL library to easy binary file-structure reading and writing right now, and it's a good library but, it's documented like a piece of poop, and in some places his code is pretty hard to follow (in particulary, a place where he uses a temporary slot binding to create a temporary list returned by a lambda function and then bound in a let form).
06:36:46 <Razor-X> s/easy/ease/
06:37:01 <Razor-X> s/particularly/particular/
06:42:33 * pikhq should go to sleep. . .
06:44:03 <pikhq> Happy hacking.
06:44:04 -!- pikhq has quit ("leaving").
07:51:47 -!- ShadowHntr has quit ("End of line.").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:07:01 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- Leading Edge IRC").
09:15:42 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
09:21:20 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
09:23:17 -!- oklopol has joined.
09:52:12 -!- ivan` has joined.
10:25:41 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- The dawn of a new IRC era").
11:17:00 -!- jix_ has joined.
12:25:10 -!- tgwizard has joined.
13:01:27 -!- oklopol has quit (Read error: 60 (Operation timed out)).
13:25:26 -!- oklopol has joined.
14:26:10 -!- jix__ has joined.
14:37:31 -!- jix_ has quit (Read error: 110 (Connection timed out)).
15:25:10 -!- Sph1nx has joined.
15:25:55 -!- Sph1nx has quit (Client Quit).
15:45:08 -!- CakeProphet has quit ("haaaaaaaaaa").
16:01:46 -!- okokoko has joined.
16:01:49 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
16:56:31 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
17:00:12 -!- okokoko has changed nick to oklopol.
17:22:56 -!- Aardwolf has joined.
17:27:48 -!- jix_ has joined.
18:05:18 -!- calamari has joined.
18:05:27 <calamari> hi
18:31:21 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
18:32:12 -!- oklopol has joined.
19:58:23 <bsmntbombdood> Razor-X: CLOS is message passing
20:04:28 -!- Sgeo has joined.
20:06:39 -!- tgwizard has quit (Remote closed the connection).
20:07:52 -!- okokoko has joined.
20:09:01 <bsmntbombdood> It's pretty cool that CLOS is written in lisp
20:16:30 -!- oklopol has quit (Read error: 60 (Operation timed out)).
20:16:53 -!- pikhq has joined.
20:17:27 * pikhq is braindead ATM
20:23:14 <Razor-X> bsmntbombdood: No it's not.
20:23:29 <Razor-X> You can't have generic functions in a message-passing object system.
20:23:37 -!- oerjan has joined.
20:24:03 <bsmntbombdood> Yeah you can
20:24:15 <Razor-X> How?
20:24:44 <bsmntbombdood> (defun foo (object) (send object 'foo))
20:24:57 <Razor-X> .... That's not CLOS...
20:25:04 <bsmntbombdood> I know
20:25:17 <Razor-X> But that's not a generic function either.
20:26:11 <pikhq> The ACT has killed my brain cells, I'm afraid.
20:26:15 <Razor-X> Meh.
20:26:40 <pikhq> Or at least temporarily numbed them.
20:27:24 <pikhq> ". . . What the hell? I haven't done this since 8th grade!!!"
20:27:30 <bsmntbombdood> heh
20:31:04 <SimonRC> Don't message-passing and generaic functions contradict one another?
20:31:42 <SimonRC> Because with message-passing one of the objects is more important than the others, but with generic functions, all of the arguments are equal in status.
20:35:57 -!- okokoko has quit (Read error: 60 (Operation timed out)).
20:39:01 <oerjan> you could send a message to _all_ the objects
20:43:05 -!- oklopol has joined.
20:45:26 <SimonRC> oerjan: How would *that* work?
20:45:32 <pikhq> oerjan: Thoughts on BFM:TNG?
20:46:11 <GregorR> BrainFuck ....
20:46:15 <GregorR> The final frontier.
20:46:30 <pikhq> Teeheehee.
20:46:30 <GregorR> These are the voyages of the BrainFuck Macro Language.
20:46:34 <GregorR> Its continuing mission ...
20:46:39 <GregorR> (etc)
20:46:43 <oerjan> that would be up to the objects to decide, they would probably have to form a committee :)
20:46:51 <SimonRC> hehe
20:47:05 <oerjan> to boldly code where no (wo)man has coded before
20:47:11 * SimonRC swears at the ZBB.
20:47:52 <SimonRC> oerjan: ITYM, to boldly code more inefficiently than anyone has coded before.
20:48:25 <pikhq> SimonRC: Actually, BFM is the most efficient Brainfuck macro system out there.
20:49:53 <SimonRC> Is it turning into a compiler?
20:50:16 <SimonRC> And I meant brainfuck is inefficient, not BFM.
20:50:24 <pikhq> It. . . *Is* a compiler.
20:50:28 <pikhq> And an interpreter.
20:51:22 <pikhq> I should probably rename it, though, because there's another, radically less efficient language by the name of BFM.
20:52:21 <SimonRC> Add a debugger!
20:52:29 <SimonRC> Source-level!
20:52:50 <pikhq> macro show-memory {} {} {} {forceinline #}
20:52:51 <pikhq> Done.
20:53:02 <pikhq> ;)
20:53:39 <pikhq> Although that's more of a binary level debugger. . .
20:53:50 <SimonRC> That isn't source-level!
20:54:10 <Razor-X> And where are the breakpoints?!
20:54:13 <pikhq> The "be0" command allows one to see some of the compiler's internal state, though.
20:54:20 <pikhq> Razor-X: Who needs 'em?
20:54:26 <Razor-X> pikhq: Great debugger ;P
20:54:53 <pikhq> Best one of them all. XD
20:55:09 <pikhq> Seriously, though. . .
20:55:17 <Razor-X> Well, to be A New-Age Debugger, you need a shiny GUI coat on it.
20:55:29 <pikhq> The only practical method of debugging ATM is with the Brainfuck source.
20:55:30 <bsmntbombdood> ew gui
20:56:35 <SimonRC> You could get the compiler to annotate the binary with line numbers and variables, and turn off all optimisations.
20:56:42 <SimonRC> *variable names
20:57:00 <SimonRC> that would be quite debuggable with a BF-level debugger
20:57:10 <pikhq> Compile with the options "-O 0 -g".
20:58:24 <pikhq> Or just "-g" if you want to see what the optimization does to the code.
21:02:21 -!- wooby has joined.
21:09:38 <SimonRC> hmm http://swivel.com/graphs/show/1001967
21:11:06 <bsmntbombdood> Think there's causation?
21:11:30 <wooby> rofl
21:13:25 <SimonRC> bsmntbombdood: careful
21:13:46 <SimonRC> bsmntbombdood: Have you seen the graph of the number of pirates against global temperature?
21:13:52 <bsmntbombdood> I have
21:14:08 <bsmntbombdood> The world needs more pirates!
21:14:13 <SimonRC> That's why we have "Talk Like a Pirae Day", you know.
21:16:18 <SimonRC> http://www.venganza.org/pirate.pdf <-- the best renering of it.
21:16:50 <pikhq> It's the Pastafarian Christmas.
21:22:43 <SimonRC> when?
21:23:43 <pikhq> Talk Like a Pirate Day. -_-'
21:24:12 <SimonRC> ah, yes
21:25:11 -!- Arrogant has joined.
21:27:58 <Razor-X> So are OSS writers essentially Robin Hoods?
21:28:06 <Razor-X> Stealing from the rich and giving to the poor?
21:29:22 <pikhq> Not quite. . .
21:29:42 <pikhq> We cut out the middle man.
21:29:49 <pikhq> We are the rich, giving to the poor. :p
21:30:02 <Razor-X> So what's Gates then?
21:30:41 <pikhq> The *filthy* rich.
21:31:07 <pikhq> We've not been successful at taking from him very much yet.
21:31:43 <Razor-X> But he's been very successful stealing from everyone else.
21:32:10 <pikhq> Which is a problem. . .
21:32:40 <pikhq> Our end goal is to become Robin Hoods. Our current state is the poor giving to the less poor.
21:32:43 <pikhq> Happy?
21:32:46 <pikhq> s/less/more/
21:33:03 * bsmntbombdood wonders what financial situation rms is in
21:33:04 <GregorR> lol
21:33:13 <Razor-X> Yeah. That does make me feel more happy.
21:33:29 <Razor-X> RMS is probably not very rich, but he knows enough people to get a free ride in any country in the world.
21:33:44 <pikhq> Rms is actually rather poor. . .
21:33:54 <Razor-X> Except maybe North Korea.
21:34:15 <pikhq> He lives off of prize money and cash for speaking in public.
21:34:17 <GregorR> I'll bet he could get into N. Korea.
21:34:27 <Razor-X> But I'll bet he couldn't get out.
21:34:30 <GregorR> Yup ^^
21:34:53 <pikhq> He could get in only if he told the whole populace except Kim Jong Il that he was going to assasinate Kim. :p
21:35:17 <lament> RMS does work at MIT.
21:35:30 <pikhq> It's an unpaid position.
21:36:03 <Razor-X> Then again, if N. Korea is as Red as it seems, he wouldn't need a free ride there.
21:36:47 <pikhq> He's lived for the past several years in his office at MIT. . . He can't have that much money. ;)
21:37:00 <Razor-X> One day N. Korea will open up, and we'll realize that they have self-cleaning roads and hover-vators, and traffic is mitigated through several levels of semi-arial traffic.
21:37:24 <Razor-X> *semi-arial levels.
21:37:55 <Razor-X> And we'll weep in shame as we'll discover that N. Korea's technology far exceeds our own pitiful existances.
21:38:11 <pikhq> What has leaked out of N. Korea suggests that the populace doesn't have enough freedom of motion to justify roads, much less self-cleaning ones.
21:38:19 <Razor-X> Message Paid for by The Party. The Party. It's Where You Go.
21:38:33 <pikhq> And. . .
21:38:45 <Razor-X> Maybe they were just brainwashed into forgetting the wonders that they saw?
21:38:47 * pikhq gets hit in the head by The Beloved Leader's Boys
21:38:53 <pikhq> HEIL HITLER!
21:38:55 <pikhq> *ouch*
21:39:01 <pikhq> I MEAN THE BELOVED LEADER!
21:46:43 * SimonRC attempts to correct pikhq's misconception of money: http://paulgraham.com/gap.html
21:47:19 <SimonRC> Do not confuse stealing wealth with creating it.
21:48:51 <SimonRC> The amount of wealth in the world is not fixed.
22:11:53 -!- pikhq has quit (Read error: 145 (Connection timed out)).
22:21:47 -!- Arrogant has quit (Read error: 113 (No route to host)).
22:22:14 -!- oerjan has quit ("Good night").
22:51:36 -!- pikhq has joined.
2006-12-10
00:08:05 <pgimeno> this guy has abused a bit the concept of a 'one-liner': http://www.dustindiaz.com/basement/js/dom.js (beware the link crashes my Mozilla; it works fine in Firefox 1.5)
00:12:27 <pgimeno> btw, that's part of the source of http://www.dustindiaz.com/basement/tetris.html
00:12:47 <GregorR> 8-D
00:12:50 <GregorR> dHTML TETRIS!
00:12:56 <GregorR> That's better than http://www.codu.org/evilpong/
00:15:59 <pikhq> I prefer XML Tetris.
00:16:25 <GregorR> http://www.codu.org/rxml.php
00:21:39 <pgimeno> yay, rxml rox
00:23:19 <pgimeno> xml tetris?
00:23:57 <pgimeno> is that based in the turing-completeness (I think) of xslt?
00:25:14 <pikhq> Actually, it's nearly pure SVG.
00:25:15 <pikhq> Has a tiny bit of embedded Javascript.
00:25:33 <bsmntbombdood> crap crap
00:28:27 <pgimeno> oh
00:29:09 * bsmntbombdood borked his keyboard
00:30:45 <pgimeno> oh and btw there's a version with bgm: http://www.dustindiaz.com/basement/tetris-s.html
01:14:19 -!- wooby has quit.
01:16:52 -!- CakeProphet has joined.
01:29:51 <CakeProphet> Anyone recommend a good Lisp implementation... that's... easy to setup on Windows?
01:39:40 <bsmntbombdood> Sure.
01:39:50 <bsmntbombdood> Install a real OS, then use SBCL
01:40:03 <pikhq> Emacs.
01:40:22 <pikhq> Although realise that running Windows makes everything comparatively hard to setup.
01:40:46 <bsmntbombdood> I got a windows version of xemacs running in 30 seconds
01:41:41 <pikhq> I got a GNU/Linux version of Emacs running in 0 seconds.
01:41:49 <bsmntbombdood> yep
01:42:02 <bsmntbombdood> well...it takes like 2 seconds to start up
01:42:15 <pikhq> But it takes 0 seconds for me to install it. . .
01:42:19 <pikhq> Preinstalled. ;)
01:42:21 <bsmntbombdood> yeah
01:42:41 <bsmntbombdood> I can't believe an OS would ship without a decent text editor
02:11:29 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
03:00:08 <lament> emacs is not a good lisp implementation.
03:01:33 <bsmntbombdood> It is a good emacs lisp implementation
03:01:52 <lament> i'm not even sure of that.
03:02:06 <pikhq> It is *the* Emacs Lisp implementation.
03:02:25 <lament> so?
03:24:37 * SimonRC goes to bed.
04:02:41 -!- GreaseMonkey has joined.
04:03:04 * pikhq takes a guess that GreaseMonkey likes Greasemonkey
04:05:59 * GreaseMonkey takes a guss that pikhq is correct
04:07:05 <bsmntbombdood> Connection error: Monkey too Greasy
04:07:19 <GreaseMonkey> yep <:D
04:10:35 * pikhq makes out with BFM
04:11:37 <bsmntbombdood> kinky
04:13:07 <pikhq> And incestous.
05:08:10 -!- GregorR-L has joined.
05:10:35 -!- calamari has quit (Remote closed the connection).
05:10:59 -!- calamari has joined.
05:11:08 <calamari> hi
05:11:29 <calamari> nonwrapping bf.. 5 - 12 = ?
05:12:03 <pikhq> 5-12=-7
05:12:22 <calamari> so one cell to store the sign ?
05:13:10 <pikhq> No, in nonwrapping BF, the cell is signed and either bound-checked or bignum.
05:13:36 <GregorR-L> Could be either *shrugs*
05:15:22 <calamari> I always assumed a nonwrapping program would work in a wrapping interp.. guess that isn't always the case
05:16:23 <pikhq> In a wrapping interp, 5-12=-7==248.
05:17:04 <calamari> 248 / 2 = 124 -7/2 = 3
05:17:09 <calamari> err -3
05:19:27 <pikhq> It's the whole "mod 255" thing that's mildly confusing. . .
05:21:30 <Sgeo> Any ideas on how to best mutilate Windows?
05:21:54 <calamari> Sgeo: I have some word documents you could open.. and some special multimedia files for your enjoyment
05:22:14 <Sgeo> Now... how to get them from Host to Guest :/
05:23:22 <calamari> GregorR: what assumptions does your c compiler make about cells?
05:23:29 <Sgeo> calamari, Win98 is running under VMware
05:23:36 <calamari> ahh
05:23:55 <pikhq> Sgeo: format C:
05:23:56 <calamari> here's something fun you can do
05:24:03 <Sgeo> pikhq, I tried that
05:24:06 <calamari> run debug
05:24:13 <Sgeo> pikhq, it wouldn't let me
05:24:14 <calamari> then enter this program:
05:24:19 <calamari> a
05:24:23 <calamari> cli
05:24:28 <calamari> jmp 101
05:24:30 <calamari> g
05:26:20 <calamari> Sgeo: how'd it go?
05:26:38 <Sgeo> I just got "^ Error"
05:26:51 <calamari> where
05:26:56 <calamari> on the g ?
05:26:59 <Sgeo> Yes
05:27:08 <calamari> sorry you need to push enter again after jmp 101
05:27:18 <Sgeo> So it's
05:27:20 <Sgeo> a
05:27:21 <Sgeo> cli
05:27:24 <Sgeo> jmp 101
05:27:26 <Sgeo> <enter>
05:27:26 <Sgeo> g
05:27:27 <Sgeo> ?
05:27:28 <calamari> yes
05:27:36 <calamari> but you're still okay
05:27:37 <Sgeo> Should I close and restart debug?
05:27:42 <calamari> you can just push enter
05:27:48 <calamari> then g <enter>
05:28:25 <Sgeo> The cursor just sort of... froze..
05:28:30 <calamari> yeah :)
05:28:44 <calamari> windows is probably gone
05:28:57 <calamari> (frozen)
05:29:05 <Sgeo> Something that left it in a pseudousable state would have been preferable..
05:29:08 <Sgeo> (more fun)
05:29:26 <calamari> I think it is cool how easy it is to screw up the multitasking in win98
05:29:43 <Sgeo> What does that debug thing do anyway?
05:30:05 <calamari> first it disables maskable interrupts
05:30:06 <pikhq> calamari: Win98 doesn't really multitask.
05:30:13 <calamari> then it enters a very tight loop
05:30:18 <pikhq> It just imitates it for the user.
05:30:18 <pikhq> :p
05:30:23 <calamari> pikhq: yeah it does.. p[reemptive too
05:30:44 <pikhq> Well, it isn't exactly good multitasking if one can preempt the preempting.
05:31:02 <Sgeo> Night allk
05:31:06 <calamari> pikhq: I didn't say it was good.. just saying it does do multitasking
05:31:24 <pikhq> I call that merely an imitation of multitasking. ;)
05:32:10 * Sgeo is confused
05:32:12 <Sgeo> Night all
05:32:23 <calamari> I call that an imitation of an argument :)
05:32:28 <calamari> cya sgeo
05:32:34 <pikhq> As do I. ;)
05:32:41 -!- Sgeo has quit (Remote closed the connection).
05:33:53 -!- GregorR-L has quit ("Leaving").
06:06:16 -!- calamari has quit ("Leaving").
06:11:23 -!- GreaseMonkey has quit ("Connection error 130 (Monkey too greasy)").
07:13:51 -!- pikhq has quit (Read error: 60 (Operation timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:12:42 -!- tgwizard has joined.
10:19:18 -!- ivan` has joined.
12:41:49 -!- jix_ has joined.
14:19:12 -!- jix__ has joined.
14:35:28 -!- jix_ has quit (Read error: 110 (Connection timed out)).
14:55:11 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <-").
15:08:22 -!- Sgeo has joined.
15:52:02 -!- kipple_ has joined.
16:22:55 -!- oerjan has joined.
18:18:56 -!- CakeProphet has quit ("haaaaaaaaaa").
18:37:54 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
19:23:07 -!- jix_ has joined.
20:05:28 <Sgeo> Most fun way to fubar Win98?
20:16:45 -!- EgoBot has joined.
20:31:17 <SimonRC> Sgeo: F00F bug?
20:31:44 <Sgeo> No clue what that is
20:32:18 <oerjan> it makes your computer go up in smoke *F00F*
20:34:18 <oerjan> Would it be impolite of me to shorten the Deadfish interpreter?
20:35:58 <oerjan> Wait a minute...
20:36:51 <oerjan> It _really_ does not read any commands
20:39:51 <oerjan> OK if I am to believe the example then the interpreter is buggy rather than intentional
20:43:55 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
20:44:32 <SimonRC> http://216.239.59.104/search?q=cache:4DSsRj2iMo4J:www.x86.org/errata/dec97/f00fbug.htm+f00f+bug&hl=en&gl=uk&ct=clnk&cd=1
20:44:59 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
20:49:20 <oerjan> Gah. I can't believe I forgot what scanf does.
20:51:59 <bsmntbombdood> printf except backwards
20:52:47 <oerjan> But it doesn't discard the rest of the line, does it?
20:53:21 <bsmntbombdood> scanf(3)
20:53:42 <oerjan> I am already reading it.
20:58:02 -!- GregorR has joined.
21:01:26 <Razor-X> Meh. It's hard to forget C.
21:02:04 <bsmntbombdood> Easy to forget clib functions
21:02:25 <Razor-X> scanf?
21:02:38 <bsmntbombdood> ?
21:02:49 <oerjan> My brain confused it with sscanf I think.
21:02:58 <Razor-X> Aha.
21:03:13 <bsmntbombdood> woot C has continuations
21:03:15 <oerjan> So somehow I got the idea the program never read input.
21:03:36 <Razor-X> Continuations? call/cc style?
21:03:40 <bsmntbombdood> yeah
21:03:41 <oerjan> Since when?
21:03:48 <Razor-X> How?
21:03:48 <lament> since never
21:04:11 <lament> i assume he's talking about setjmp/longjmp?
21:04:21 <bsmntbombdood> setcontext(2)
21:04:54 <Razor-X> Switching between multiple threads of control within a process.
21:05:33 <bsmntbombdood> swapcontext(3)
21:05:34 <Razor-X> Oh. Hmm...
21:05:39 <lament> oh, huh, that does look like continuations
21:05:46 <Razor-X> Yeah, it does.
21:05:54 <bsmntbombdood> :)
21:05:58 <Razor-X> Who knew.
21:07:07 <bsmntbombdood> damn, right after I discover this, I have to do homework
21:07:52 <Razor-X> That's probably what all the Scheme interpreters use to implement call/cc.
21:08:32 <SimonRC> I think that Scheme terps actually use call/cc to implement call/cc.
21:08:41 <lament> Razor-X: except for the overwhelming majority that are written in Scheme
21:09:02 <Razor-X> Well... I'm thinking Gambit/Stalin/Chicken.
21:09:13 <SimonRC> You can add it to a graph-reduction-based interpreter without too much trouble, I suspect.
21:10:10 <SimonRC> Maybe the C-based ones have an explicit (spaghetti) stack rather than an implicit one, whereupon call/cc become easier.
21:10:27 <bsmntbombdood> hum, my linux box has swapcontext, but not my bsd box
21:11:22 <GregorR> Always read the CONFORMING TO section.
21:12:21 <bsmntbombdood> SUSv2, POSIX 1003.1-2001.
21:16:15 <bsmntbombdood> methough bsd was posix complient
21:16:33 <GregorR> I don't know what revision *shrugs*
22:18:08 -!- calamari has joined.
22:18:38 <calamari> hi
22:19:23 * calamari has an idea .. :)
22:19:47 * oerjan prepares to shoot calamari
22:19:51 * bsmntbombdood waits
22:20:06 <calamari> I want to see if I can convert labels and gotos into if's, while's, etc
22:20:44 <calamari> the idea would be to break down a complex program (using gotos, while, if, break, etc) into just gotos, then reconstruct it again
22:20:56 <calamari> this would be handy for break/continue removal
22:21:13 <bsmntbombdood> if,whiles are implemented with gotos
22:21:28 <calamari> bsmntbombdood: yes, I know
22:21:39 <SimonRC> calamari: It is possible, but you may need to introduce some temporary variables.
22:22:02 <calamari> SimonRC: yeah.. the hard part at least for my brain is building some kind of tree or such
22:22:17 <oerjan> well, you just need one variable, to save the next label
22:22:23 <calamari> then I can figure out where the loops are
22:22:24 <SimonRC> OTOH, BFBASIC manages to handle arbitrary gotos with just while loops.
22:22:26 -!- CakeProphet has joined.
22:22:39 <calamari> SimonRC: yeah it does.. but I cheated and used labels and gotos
22:22:57 <calamari> SimonRC: I'm trying to avoid that and hopefully produce more efficient code
22:23:23 <calamari> with the goal of making it easier to translate a language such as spaghetti or linguine into bf
22:23:30 <oerjan> and then a giant case statement in a while (1)
22:23:43 <calamari> oerjan: that's eseentially what I do with bfbasic
22:23:50 <oerjan> the case statement is then easily turned into nested if then else
22:24:47 <calamari> and it's kinda slow :)
22:25:11 <calamari> would be better to unravel the goto's, even if it means duplication of code blocks
22:25:13 <SimonRC> I think the tricky one is 10 FOO; 20 BAR; 30 MAYBE GOTO 10; 40 MAYBE GOTO 20;
22:26:34 * SimonRC spots that a "do{}while()" is just a backward jump and an "unless(){}" is just a forward one.
22:26:39 <SimonRC> hmm
22:27:52 <calamari> SimonRC: okay I've decomposed that tricky loop
22:28:28 <SimonRC> how?
22:28:31 <calamari> not sure how to write it in here tho.. let me try
22:28:39 <calamari> ABCDE
22:28:54 <calamari> B-C goes to A
22:28:57 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:29:10 <calamari> D-E goes to B .. that's the original
22:29:29 <calamari> do you follow the notation for the original program?
22:30:06 <calamari> A,B,C,D,E are blocks of code
22:30:06 <oerjan> rather difficult to match 5 letters with 4 statements
22:30:17 <SimonRC> huh?
22:30:28 <calamari> like I said.. hard to write in irc
22:30:30 <calamari> hehe
22:30:39 <calamari> let me translate it into basic like you did
22:31:36 <oerjan> i think possibly you are dealing with the wire-crossing problem
22:32:02 <calamari> no I'm dealing with a text interface problem
22:32:13 <oerjan> as in, just if and while cannot build flowcharts with crossing wires without extra temporary variables
22:32:23 <calamari> who said anything about that
22:32:31 <calamari> I was just saying I was able to unravel it
22:32:57 <calamari> if anyone wants to say it is impossible then prepare to own up to it hehe
22:33:36 <calamari> let me draw a little diagram and post it
22:34:08 <SimonRC> I will boldly assert that it is impossible to translate my code into plain loops and ifs without either duplicating code or creating superfluous temporary variables.
22:34:20 <oerjan> actually that example does not really have wire-crossing
22:34:46 <calamari> SimonRC: right.. if you duplicate code
22:34:54 <calamari> that's what I intend to do
22:34:56 <SimonRC> oerjan: it does if you require that all the points are on the x-axis and all wires must only go through the upper half-plane
22:35:04 <calamari> if you duplicate part of the coee, it is easily unraveled
22:35:25 <oerjan> right, that makes sense
22:35:33 <calamari> that's what I was just drawing up
22:35:49 <calamari> guess I don't need to now hehe
22:35:58 -!- ihope has joined.
22:36:01 <ihope> 11.1265006 milligrams.
22:36:16 <bsmntbombdood> of crack
22:36:24 <oerjan> argh, a drive-by chemist!
22:36:35 <SimonRC> heh
22:37:08 * SimonRC goes for pizza, and then to bed, most likely.
22:37:28 <oerjan> i think it is possible to make code which cannot be unraveled simply with duplication
22:38:21 <calamari> that's easy.. a break statement
22:39:22 <calamari> hmm maybe that can be unraveled as well
22:39:27 <calamari> need to map these out
22:39:58 <calamari> anyhow, I think I'm on to something... translate into gotos, then recompose for the target language
22:40:19 <calamari> should be more efficient than the huge switch statement hack
22:44:23 <oerjan> this is essentially a finite state machine problem
22:44:57 <calamari> oerjan: cool
22:45:07 <oerjan> can every FSA be implemented with just while and case (getc()) statements?
22:45:25 <calamari> well, bf implements everything with just while
22:45:41 <oerjan> i am still talking about avoiding temporary variables
22:45:45 -!- kipple_ has quit (Read error: 131 (Connection reset by peer)).
22:45:45 <calamari> oic
22:45:59 <calamari> so if you had a bf with one cell
22:46:28 <ihope> Every FSA can be implemented using only goto.
22:46:33 <calamari> right
22:46:44 * oerjan bops ihope on the head
22:46:50 <calamari> if and goto
22:46:53 <oerjan> we are discussing _removing_ gotos
22:46:58 -!- kipple_ has joined.
22:47:00 <ihope> Oh.
22:47:44 <calamari> ihope: my idea is to decompose a program into goto's and labels then rebuild it for a target language
22:48:03 -!- kipple_ has quit (Client Quit).
22:48:18 <RodgerTheGreat> intriguing
22:48:41 <RodgerTheGreat> this looks like a job for an esoteric BASIC coder!
22:48:43 <calamari> the first step is to unravel weird goto loops into traditional structured code
22:48:47 <calamari> hehe
22:48:49 * RodgerTheGreat runs for his cape and cowl
22:51:52 <RodgerTheGreat> yeah, I can see how conditional jumps could become tricky to unravel.
22:52:18 <RodgerTheGreat> the tough part is seperating gotos that are branches from gotos that form loops
22:53:03 <oerjan> for one thing, while loops always have just two exits
22:53:20 <oerjan> graphically speaking
22:53:30 <RodgerTheGreat> some loops can be directly unfolded, but others are integral to the functioning of the program- the main loop, at least
22:53:37 <RodgerTheGreat> yeah
22:54:32 <calamari> blah I think I made a mistake in SimonRC's problem above
22:54:49 <calamari> the code duplication doesn't seem to be working for that one
22:54:57 <RodgerTheGreat> hm
22:55:41 <RodgerTheGreat> is the goal to create space-efficient code or speed-efficient code, or either?
22:56:09 <calamari> speed efficient
22:56:14 <RodgerTheGreat> ah
22:56:41 <calamari> ahh got it finally
22:57:13 <calamari> the problem was that I was trying to keep the d-while.. needed to convert it to a plain while
22:57:34 <oerjan> ok based on the limit to two exits for a while loop, here is a test case:
22:57:54 <oerjan> 4 statements, each of which can branch to any of the others
22:58:08 <calamari> cool :) this is helpful stuff
23:00:09 * calamari waits for the code
23:00:28 <oerjan> oh i thought it was obvious what i meant
23:00:35 <calamari> no
23:01:25 <oerjan> 10 MAYBE GOTO 30 OR 40 : 20 MAYBE GOTO 10 OR 40 : 30 MAYBE GOTO 10 OR 20 : 40 GOTO 10, 20 OR 30
23:01:48 <calamari> I don't understand statement 40
23:02:17 <oerjan> ok make that 40 MAYBE GOTO 20 OR 30 : 50 GOTO 10
23:02:24 <calamari> ok
23:02:51 <oerjan> oh and by the way the MAYBE is to mean that one option is not to jump at all
23:03:12 <calamari> ???
23:03:29 <RodgerTheGreat> couldn't each "maybe" be first broken into a pair of "jump or not" instructions?
23:03:43 <calamari> yeah
23:03:46 -!- tgwizard has quit (Remote closed the connection).
23:03:48 <calamari> if I understand
23:03:49 <oerjan> so for each statement, there are 3 possible statements to do next
23:04:01 <calamari> still unrollinging the first problem, it's long hehe
23:04:30 <oerjan> well i am sort of trying to be brief
23:05:17 <calamari> there done finally with the first one
23:05:28 <calamari> shall I write it in code?
23:05:49 <calamari> perhaps abbreviated..
23:06:44 <calamari> A B WHILE C { A B } WHILE D { B WHILE C { A B } }
23:06:54 <calamari> a and b are foo and bar
23:10:35 <RodgerTheGreat> hm. interesting
23:10:43 <calamari> oerjan: check that this is equiv to your code:
23:11:50 <calamari> 10 MAYBE 30 ELSE 15 : 15 MAYBE 40 ELSE 20 : 20 MAYBE 10 ELSE 25 : 25 MAYBE 40 ELSE 30 : 30 MAYBE 10 ELSE 35 : 35 MAYBE 20 ELSE 40 : 40 MAYBE 20 ELSE 45 : 45 MAYBE 30 ELSE 10
23:11:55 <oerjan> btw my code is just a flowchart in the form of the edges of a tetrahedron
23:13:23 <calamari> you can also remove the "else xxx" and add 50 goto 10
23:13:27 <calamari> (as you had)
23:13:49 * calamari draws it
23:14:58 <oerjan> looks fine to me
23:15:38 <oerjan> if that doesn't work then we need an example with real wire crossing
23:16:21 <calamari> if you can find a very simple one that'd be great
23:16:30 <calamari> this is rather long hehe
23:17:43 <oerjan> well the two simplest non-planar graphs are the complete graph on 5 points (i.e. 5 statements all connected) and the 3 + 3 bipartite graph (the famous 3 houses connected to 3 utilities puzzle)
23:18:33 <calamari> so you gave the first ?
23:18:58 <oerjan> no i just gave you 4 points, thought that might still be impossible
23:20:26 <oerjan> i have this feeling this has something to do with the fundamental group of the graphs
23:21:28 <calamari> I still haven't finished drawing the original problem yet hehe
23:22:05 <oerjan> oh, draw a square with one diagonal, and then a curved line between the other two points
23:22:30 <calamari> oic
23:22:44 <calamari> I'm drawing it as a flow chart
23:23:01 -!- Aardwolf has quit ("Ik zen der is mee weg").
23:23:24 <oerjan> i guess you need to duplicate the lines then
23:23:35 <calamari> yeah
23:23:49 <calamari> I can already see a huge mess brewing
23:25:23 <calamari> okay done drawing.. now the part that should be impossible
23:25:30 <oerjan> maybe try just 3 points first, i am not quite sure about that case
23:25:55 <calamari> there is no exit.. interesting :) that's okay I guess
23:26:24 <oerjan> well you can just add a couple if you want :)
23:26:40 <calamari> right.. 50 maybe 10
23:30:21 <ihope> I discovered the two great secrets to writing great fiction.
23:30:27 <ihope> But then I forgot one.
23:31:40 <oerjan> the other one is to have an unfallible memory :)
23:33:33 <ihope> A photographic memory?
23:33:45 <ihope> That'd help, yes.
23:35:06 <lament> i don't need photographic memory.
23:35:09 <lament> i have a camera.
23:35:47 <calamari> what about this much smaller problem: 10 MAYBE GOTO 50 : 20 MAYBE GOTO 50 : 30 FOO : 40 GOTO 10 : 50 BAR
23:36:10 <calamari> that's the break statement
23:37:02 <ihope> Take pictures of your novel and stick them in your ears?
23:37:14 <ihope> That'd probably work, yes.
23:38:50 <ihope> So assuming having a photographic memory is one secret to writing good fiction, the other just might be to describe the world the characters are in.
23:40:12 <calamari> oerjan: I can't remember.. were you disallowing temp variables for the solution?
23:40:24 <oerjan> yes
23:40:32 <calamari> if so, I don't see a way to solve my problem, and it's a subset of yours
23:40:37 <ihope> If you describe the world where it's not actually important that the world be described, the effect is that the world doesn't seem to exist only where it's important to the plot.
23:40:42 <calamari> mine translates to the following code
23:40:52 <calamari> while A { if B { C } }
23:41:16 <calamari> not seeing a way to turn that if into a while without a temp variable
23:41:39 <oerjan> eh, i have certainly not disallowed _if_s
23:41:42 <ihope> If one day somebody visits a store, and you didn't describe the store earlier, it seems like it spawned out of nowhere as soon as the person decided to visit it.
23:42:16 <calamari> oerjan: oh, I thought the point was to only use while loops
23:45:30 <calamari> although, I only need one variable to convert as many nested if's as I want into whiles
23:45:31 <oerjan> well it was you who stated the problem, i just disallowed temporary variables so we couldn't use that giant case statement you said was inefficient
23:45:38 <calamari> right
23:48:09 <oerjan> what kind of language is it you want to translate into by the way?
23:48:43 <calamari> well bf.. but I was hoping this could help for other langs too
23:49:09 <oerjan> ah, then you definitely want to disallow ifs
23:49:44 <calamari> well, like I say above, I can do them with constant memory in bf
23:49:49 <calamari> so I think it's fine
23:51:05 <oerjan> then you could do case statements as well
23:51:15 <calamari> yeah I know
23:51:58 <calamari> I think in the case of your problem, both methods would be about the same speed
23:52:38 <calamari> but in the typical cases, not using case statements in bf would be a win
23:53:46 <oerjan> one idea is to encode the label in binary and use a branching tree for the case statement
23:54:06 <calamari> yeah, we thought of that too :)
23:54:17 <calamari> but didn't implement it
23:54:34 <calamari> instead we decided to trade memory for speed
23:54:52 <calamari> (in the second version of bfbasic labels)
23:55:24 -!- lament has changed nick to Lament.
23:55:42 <calamari> of course one advantage of not using the case statement is I won't have a limit on the number of branch points
23:55:58 -!- Lament has changed nick to lament.
23:56:45 <RodgerTheGreat> hey, how many people have read about this thing before? http://www.retrothing.com/2006/12/the_tinkertoy_c.html
23:57:31 <oerjan> i have
23:58:13 <calamari> cool
23:58:22 <RodgerTheGreat> I found an article explaining how it worked a while back, but it never had any pictures of the device
2006-12-11
00:00:00 -!- ivan` has joined.
00:00:35 <calamari> http://www.rci.rutgers.edu/~cfs/472_html/Intro/TinkertoyComputer/TinkerToy.html
00:02:22 <RodgerTheGreat> ah, A.K. Dewdney.
00:04:12 <ivan`> that would have been impressive for 1889
00:05:39 <RodgerTheGreat> well, if people in the 1800's had the capacity for mass-producing construction toys to a high-tolerance, Babbage would've been able to build his difference *and* analytical engines out of ye olde legos.
00:06:05 <RodgerTheGreat> and that dash in "high tolerance" was superfluous.
00:46:13 <CakeProphet> that whitespace in "hightolerance" was superfluous.
00:50:14 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- IRC for those that like to be different").
01:06:27 <ihope> Allwhitespaceissuperfluous.
01:06:45 <ihope> IcanevenwriteaWhitespaceprogramwithoutusingwhitespace.
01:06:58 <ihope> IcanalsospeakGermanwithoutusingwhitespace.:-)
01:07:17 <oerjan> Ndwhlwrdscssngthmttr,lt'sgtrdfthvwlst
01:08:12 <ihope> Hby,nwyrbrdrngnthdgfnnsnscl.
01:08:37 <ihope> (Mind giving a translation?)
01:10:00 <oerjan> Nd whl w e dscssng th mttr, lt's gt rd f th vwls t
01:10:07 <oerjan> *r
01:10:35 <ihope> Ys,gdd.
01:11:11 <ihope> LTSRMVPNCTTNNDCPTLZTNT
01:11:29 <ihope> (Let's remove punctuation and capitalization, too!)
01:12:13 <oerjan> but what is dgf?
01:13:07 <oerjan> NCRSNTRP
01:13:19 <oerjan> RMVNFRMTN
01:14:36 <ihope> And now for something completely different: "Hi, All I've studied English sinse Summer . It's Really difficult I would like like to meet boys and practisice My English with them."
01:14:58 <ihope> Not that that's not in the recent changes page of the wiki.
01:15:40 <lament> who wouldn't like to meet boys.
01:16:21 <oerjan> SPMSPMSPMSPMSPMSPMSPMSPMSPMSPMSPMSPM
01:17:21 <ihope> LLNTRNT
01:17:42 <ihope> Rllcnnnndrstndths
01:18:02 <ihope> Cntp
01:19:51 <oerjan> DNTNDRSTNDNTHNGYRSYING
01:23:17 -!- oerjan has quit ("TMTGTBD").
01:35:10 <ihope> WLLNDRSTNDYPRFCTL
01:36:13 <ihope> YSDTHTTHSTTFCHRNLGNCSSTTDSFTHSLPNGPLC
01:36:39 <bsmntbombdood> OMGWTFBBQ
01:36:56 <ihope> omgvowel.
01:51:04 <lament> aaaaeei
01:53:13 <bsmntbombdood> aeudtns
02:00:34 -!- ShadowHntr has joined.
03:12:59 -!- ivan` has joined.
05:04:30 -!- CakeProphet has quit (Read error: 145 (Connection timed out)).
05:04:45 -!- Arrogant has joined.
05:48:56 -!- calamari has quit ("Leaving").
06:41:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:42:46 -!- GregorR has changed nick to OMGZOMGROFL.
07:43:40 -!- OMGZOMGROFL has changed nick to GregorR.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:15:32 -!- ShadowHntr has quit (Client Quit).
08:57:07 -!- Arrogant has quit ("Leaving").
13:56:31 -!- ihope has quit (Read error: 110 (Connection timed out)).
14:30:27 -!- tgwizard has joined.
14:52:30 -!- jix_ has joined.
15:27:05 -!- wooby_ has joined.
15:27:11 -!- wooby_ has quit (Remote closed the connection).
16:22:12 -!- GregorR-L has joined.
17:51:07 -!- DRMacIver has joined.
17:55:30 * SimonRC wonders if oerjan realises that various ancient civilisations actually wrote entirely in consonants with not spacing or capitalisation.
18:03:52 <GregorR-L> Egyptian, for example.
18:03:57 <GregorR-L> But I have no idea what the context is :)
18:04:21 <SimonRC> 01:04 < ihope> LTSRMVPNCTTNNDCPTLZTNT
18:04:21 <SimonRC> 01:04 < ihope> (Let's remove punctuation and capitalization, too!)
18:04:21 <SimonRC> 01:05 < oerjan> but what is dgf?
18:04:21 <SimonRC> 01:06 < oerjan> NCRSNTRP
18:04:21 <SimonRC> 01:06 < oerjan> RMVNFRMTN
18:04:39 <SimonRC> I just can't read what oe wrote.
18:04:59 <GregorR-L> Yeah, that's a toughie XD
18:05:09 <GregorR-L> It's probably possible to be used to it.
18:05:29 <SimonRC> and if you have a less vowel-centric language than English
18:05:34 <GregorR-L> True
18:06:22 <SimonRC> Pack, park, peck, peek, perk, pick, pike, pock, poke, pork, puck, puke.
18:06:41 <SimonRC> And, if they were words: pake and pirk, too.
18:07:00 <SimonRC> and peark
18:07:16 <SimonRC> all those are PK in just consonants.
18:07:24 <GregorR-L> Worse yet, pik and pike :)
18:08:00 <GregorR-L> High-five for the subtle R-is-a-vowel reference, btw.
18:08:53 <SimonRC> ITYM R-is-part-of-the-vowel.
18:09:57 <GregorR-L> Depends on your accent.
18:10:06 <GregorR-L> In an English accent, R modifies the vowel.
18:10:09 <SimonRC> Then of course there's: a, are, air, ear, err, our, or, owe.
18:10:11 <GregorR-L> In an American accent, R is the vowel.
18:10:31 <SimonRC> hence stuff like "fRmR"
18:11:01 <GregorR-L> Yup
18:11:34 <SimonRC> And then there's "Merkin", which means either "American" or a pubic wig.
18:11:37 <SimonRC> seriously
18:12:03 * GregorR-L wonders why pubic wigs exist XD
18:13:52 <SimonRC> For porn movies aparently.
18:27:31 <SimonRC> Question: What do you get if you plot IP space allocations on the Hilbert curve? Answer: http://xkcd.com/c195.html
18:27:35 <SimonRC> I like it.
18:29:12 <GregorR-L> Hah
18:29:14 <GregorR-L> That's great
18:36:37 * SimonRC lols at MIT.
18:36:38 <SimonRC> Apparently each dorm gets a class-B network.
18:41:50 * SimonRC goes.
18:56:34 -!- DRMacIver has quit (anthony.freenode.net irc.freenode.net).
18:56:34 -!- meatmanek has quit (anthony.freenode.net irc.freenode.net).
18:56:34 -!- lament has quit (anthony.freenode.net irc.freenode.net).
18:57:16 -!- lament has joined.
18:58:15 -!- DRMacIver has joined.
18:59:49 -!- meatmanek has joined.
19:40:47 -!- jix_ has quit (Read error: 104 (Connection reset by peer)).
19:44:35 -!- jix_ has joined.
20:07:59 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)).
20:22:37 -!- pgimeno has joined.
20:41:06 -!- ihope has joined.
20:43:21 -!- tgwizard has quit (Connection timed out).
20:59:26 -!- CakeProphet has joined.
21:49:46 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:52:50 -!- ShadowHntr has joined.
22:54:15 -!- calamari has joined.
23:12:40 <GregorR-L> calamari: I believe you asked some ridiculous amount of time ago (days), whether c2bf made assumptions about cell size.
23:12:50 <GregorR-L> It maps all data types to one cell (I know, awesome).
23:13:02 <calamari> yeah, so what assumptions does it make
23:13:15 <lindi-> what does c2bf do?
23:13:21 <GregorR-L> lindi-: Compiles C to BF
23:13:31 <lindi-> ANSI C89 ?
23:13:42 <GregorR-L> calamari: Generally you'd want to run it on at least a 16-bit interp.
23:14:08 <GregorR-L> lindi-: A ridiculously tiny subset :P
23:14:11 <calamari> so sizeof(int) is undefined ?
23:14:19 <GregorR-L> It's 1 ^^
23:14:31 <calamari> lol
23:14:33 <GregorR-L> But 1 in this case isn't necessarily 1 byte :P
23:14:34 <calamari> I gotcha
23:14:42 <calamari> but it could be
23:15:32 <calamari> does it assume wrapping cells ?
23:16:04 * GregorR-L thinks for a moment.
23:16:58 <ihope> Eh, I suddenly remembered I made a new version of that QBF interpreter.
23:17:08 <calamari> or an alternate way of asking that.. does signed int work?
23:17:57 <ihope> And that means I get to bug GregorR-L until he uploads it to the archive thingy and updates EgoBot with it!
23:18:03 <GregorR-L> Yeah, it does.
23:18:09 <GregorR-L> ihope: Do you see EgoBot in here?
23:18:33 <ihope> Does EgoBot need to be here for you to update him with it?
23:19:00 <GregorR-L> Technically no :P
23:19:08 <ihope> I see.
23:19:30 <ihope> Can you upload it to the archive, at least?
23:19:45 <GregorR-L> I think my access disappeared somewhere ^^
23:19:52 <GregorR-L> Or somewhen I should say.
23:19:58 <calamari> GregorR: so .. int x = 4; x = x - 7; what happens? :)
23:20:14 * calamari guesses it uses wrapping
23:20:19 <GregorR-L> calamari: It does indeed wrap around.
23:20:20 <ihope> Oh.
23:20:36 <GregorR-L> calamari: It uses wrapping if you use wrapping in the C code. I think that's the most correct thing I can say.
23:21:11 <ihope> I, um... well, where else can I send it?
23:21:27 <calamari> that makes sense.. thanks :)
23:21:40 <GregorR-L> ihope: Send it to me, I'll add it and /give/ you the .tar.bz2 ;)
23:21:56 <ihope> Do whatnow?
23:23:27 <GregorR-L> Send me whatever it is you want added to EgoBot, I'll send you a .tar.bz2 of the latest EgoBot.
23:25:29 <ihope> I guess that'll work.
23:25:41 <ihope> Maybe partially sort of.
23:27:45 * ihope runs a tar -cz and hopes that's the right way to do it
23:28:39 <GregorR-L> You'll want an f there.
23:28:48 <GregorR-L> Or it'll actually try to write it to a tape ^^
23:29:47 <bsmntbombdood> That defualt has always made me mad
23:30:24 <ihope> tar: -f: Cannot stat: No such file or directory
23:30:36 <ihope> That's on tar -cz qubit.py qbf.py -f ./qbf.tgz
23:32:45 <GregorR-L> tar -zcf qbf.tar.gz <files>
23:37:55 <ihope> What's wrong with .tgz? :-P
23:40:32 <GregorR-L> *shrugs*
23:40:35 <GregorR-L> Just a matter of preference.
23:42:15 * GregorR-L is doubtful that that will work.
23:42:18 * GregorR-L suggests email.
23:43:12 <ihope> Won't it?
23:43:24 <GregorR-L> Doesn't seem to be.
23:44:47 <ihope> Well, it certainly didn't work.
23:45:02 <ihope> You have an email address, then?
23:45:23 <ihope> Is it n=GregorR-@192.102.209.4, as my client claims? :-P
23:45:27 <GregorR-L> lol
2006-12-12
00:19:16 -!- Sgeo has joined.
01:21:34 -!- GregorR-L has quit ("Leaving").
02:30:50 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
02:34:01 -!- CakeProphet has joined.
03:13:37 -!- CakeProphet_ has joined.
03:15:12 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
03:15:17 -!- CakeProphet_ has changed nick to CakeProphet.
03:33:28 -!- Razor-X has left (?).
03:39:38 -!- Sgeo has changed nick to Sgeo|Win98destro.
03:39:49 -!- Sgeo|Win98destro has changed nick to DestroyerOfWin98.
04:58:46 -!- CakeProphet has quit (Read error: 113 (No route to host)).
06:06:52 -!- DestroyerOfWin98 has quit (Read error: 110 (Connection timed out)).
06:13:39 -!- calamari has quit ("Leaving").
06:49:29 -!- anonfunc has joined.
06:49:47 -!- anonfunc has quit (Remote closed the connection).
06:49:54 -!- anonfunc has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:24:52 -!- SimonRC has quit (Read error: 104 (Connection reset by peer)).
08:44:14 -!- SimonRC has joined.
09:49:42 -!- ShadowHntr has quit ("End of line.").
11:30:16 -!- lindi-_ has joined.
11:39:05 -!- lindi- has quit (Read error: 104 (Connection reset by peer)).
13:34:45 -!- jix_ has joined.
14:26:34 -!- jix__ has joined.
14:35:03 -!- jix_ has quit (Read error: 110 (Connection timed out)).
15:17:49 <tokigun> hmm... esolang wiki should be updated to mediawiki 1.6 (or greater, if php 5 is available)?
16:21:37 -!- GregorR-L has joined.
16:23:20 -!- tgwizard has joined.
17:00:24 -!- lindi-_ has quit (Read error: 131 (Connection reset by peer)).
17:04:03 -!- lindi- has joined.
18:32:48 <RodgerTheGreat> tokigun: what new capabilities would that give us?
18:54:00 -!- ShadowHntr has joined.
19:20:31 <sekhmet> RodgerTheGreat: Security would probably be the biggest bonus, esolang's pretty old
19:20:39 <RodgerTheGreat> hm
20:40:40 -!- ihope_ has joined.
20:58:00 -!- ihope has quit (Connection timed out).
21:21:38 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:55:03 -!- Rugxulo has joined.
22:07:07 -!- Sgeo has joined.
22:07:53 -!- Rugxulo has left (?).
22:10:40 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
22:22:38 -!- GregorR-L has joined.
22:33:38 -!- tgwizard has quit ("Leaving").
22:54:43 -!- clog has joined.
22:54:43 -!- clog has joined.
22:55:42 -!- ihope_ has quit (sterling.freenode.net irc.freenode.net).
23:47:12 -!- CakeProphet has joined.
2006-12-13
00:06:46 -!- lindi- has quit (Read error: 113 (No route to host)).
00:09:20 -!- lindi- has joined.
01:35:25 -!- GregorR-L has quit ("Leaving").
02:06:00 -!- anonfunc has quit.
02:06:19 -!- anonfunc has joined.
02:06:29 -!- ShadowHntr has quit (Client Quit).
03:16:23 -!- anonfunc has quit (Remote closed the connection).
03:48:05 -!- CakeProphet has quit ("haaaaaaaaaa").
03:50:57 <tokigun> RodgerTheGreat, (sorry for late) sekhmet is right; using unmaintained software or version is quite dangerous.
03:52:13 -!- Mequalspi has joined.
03:52:19 <tokigun> i think 1.6.x branch is enough for esowiki though -- it is the lowest major version currently maintained.
03:52:58 -!- Mequalspi has quit (Client Quit).
04:23:12 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
04:28:12 -!- ShadowHntr has joined.
05:17:11 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
05:18:57 -!- ShadowHntr has joined.
06:09:56 -!- ShadowHntr has quit (Client Quit).
06:10:23 -!- sekhmet_ has joined.
06:11:03 -!- sekhmet has quit (Nick collision from services.).
06:11:06 -!- sekhmet_ has changed nick to sekhmet.
06:11:44 -!- okokoko has joined.
06:11:44 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
07:48:11 -!- pgimeno has quit (Read error: 131 (Connection reset by peer)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:03:27 -!- pgimeno has joined.
08:07:25 -!- wooby has joined.
10:16:13 -!- wooby has quit.
12:30:15 -!- ihope has quit (Connection timed out).
12:39:54 -!- ivan` has quit (Read error: 104 (Connection reset by peer)).
13:59:36 -!- jix_ has joined.
14:26:10 -!- jix__ has joined.
14:34:14 -!- jix_ has quit (Read error: 110 (Connection timed out)).
15:35:20 -!- wooby has joined.
16:06:19 -!- wooby has quit (Read error: 60 (Operation timed out)).
17:03:38 -!- tgwizard has joined.
17:57:43 -!- GregorR-L has joined.
18:49:21 -!- GregorR-L has quit (Read error: 104 (Connection reset by peer)).
18:49:44 -!- GregorR-L has joined.
18:57:13 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)).
18:59:12 -!- pgimeno has joined.
20:59:04 -!- clog has joined.
20:59:04 -!- clog has joined.
21:01:34 -!- ihope_ has joined.
21:01:40 -!- ihope_ has changed nick to ihope.
21:09:43 -!- calamari has joined.
21:09:52 <calamari> hi
21:31:22 <RodgerTheGreat> howdy
21:42:37 -!- ShadowHntr has joined.
22:06:59 -!- tgwizard has quit (Remote closed the connection).
22:18:35 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:43:13 -!- oerjan has joined.
22:46:38 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
22:48:56 -!- oerjan has quit ("Leaving").
22:57:22 -!- CakeProphet has joined.
23:35:12 -!- GregorR-L has joined.
23:41:35 -!- maverickbna has joined.
23:42:29 -!- ShadowHntr has quit (Nick collision from services.).
23:42:33 -!- maverickbna has changed nick to ShadowHntr.
23:50:55 -!- pikhq has joined.
23:51:49 -!- pikhq has quit (Client Quit).
23:52:02 -!- pikhq has joined.
2006-12-14
00:23:05 -!- CakeProphet has quit (Read error: 131 (Connection reset by peer)).
01:05:01 -!- Sgeo has joined.
01:31:48 -!- GregorR-L has quit (" HydraIRC -> http://www.hydrairc.w00t <- IRC for annoying quit-spamming bastards").
01:49:42 -!- RodgerTheGreat has quit.
01:55:54 -!- RodgerTheGreat has joined.
01:57:07 -!- RodgerTheGreat has quit (Client Quit).
01:57:35 -!- RodgerTheGreat has joined.
02:20:24 -!- Rugxulo has joined.
03:28:33 -!- pikhq has quit ("leaving").
03:43:35 -!- Sgeo has quit (Remote closed the connection).
04:34:47 -!- Rugxulo has left (?).
05:23:54 -!- GregorR-L has joined.
06:00:10 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:18:06 -!- ihope has quit (Read error: 104 (Connection reset by peer)).
08:18:33 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
08:32:15 -!- ShadowHntr has quit ("End of line.").
15:28:57 -!- jix_ has joined.
16:26:20 -!- ptitz has joined.
16:26:43 -!- ptitz has left (?).
17:28:10 -!- GregorR-L has joined.
19:13:29 -!- Arrogant has joined.
19:18:28 -!- tgwizard has joined.
19:18:31 * SimonRC laughs at a guy online who claims to be suprised that _Apocalypse Now_ was against the Vietnam war.
19:31:39 <RodgerTheGreat> lol
19:34:25 <SimonRC> Co-incidentaly, he is called "Eddy the great".
19:36:04 <RodgerTheGreat> hm
19:41:05 <RodgerTheGreat> I'm not entirely sure how to respond to that.
19:44:33 <SimonRC> So I see.
20:21:06 -!- Arrogant has quit ("Leaving").
20:28:03 -!- f8ejf has joined.
20:28:10 -!- f8ejf has quit ("Client exiting").
20:28:27 -!- f8ejf has joined.
20:28:35 -!- f8ejf has left (?).
21:53:07 -!- pgimeno has quit (Read error: 54 (Connection reset by peer)).
21:56:52 -!- ShadowHntr has joined.
22:04:47 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:08:46 -!- pgimeno has joined.
22:18:04 -!- tgwizard has quit (Remote closed the connection).
22:27:03 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
22:33:09 -!- GregorR-W has joined.
22:54:30 -!- GregorR-L has joined.
22:55:38 -!- GregorR-W has quit ("Chatzilla 0.9.77 [Firefox 2.0/0000000000]").
23:42:20 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
23:45:31 -!- GregorR-L has joined.
23:52:12 -!- ivan` has joined.
2006-12-15
00:32:09 * SimonRC goes
00:35:13 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
00:41:31 -!- maverickbna has joined.
00:42:04 -!- GregorR-L has joined.
00:42:19 -!- ShadowHntr has quit (Nick collision from services.).
00:42:47 -!- maverickbna has changed nick to ShadowHntr.
01:02:30 <bsmntbombdood> woot, closures in C
01:12:08 -!- pikhq has joined.
01:15:04 <bsmntbombdood> one sec, and I'll have some code
01:26:38 -!- GregorR-L has quit ("HydraIRC -> http://www.hydrairc.w00t <- IRC for annoying quit-spamming bastards").
01:31:22 <bsmntbombdood> I've done it!
01:32:10 <bsmntbombdood> bsmntbombdood.mooo.com/testclosure.c
01:32:51 <bsmntbombdood> or even http://bsmntbombdood.mooo.com/testclosure.c
01:34:03 <bsmntbombdood> It even compiles without any warnings
01:35:11 <bsmntbombdood> I feel naughty
03:42:07 -!- calamari has joined.
04:51:01 -!- wooby has joined.
05:04:09 -!- calamari has quit ("Leaving").
05:17:28 -!- pikhq has quit (Read error: 110 (Connection timed out)).
05:37:11 -!- calamari has joined.
05:49:11 -!- calamari has quit ("Leaving").
05:49:47 -!- calamari has joined.
06:19:43 -!- GregorR-L has joined.
06:20:31 -!- calamari has quit ("Leaving").
06:32:52 -!- ShadowHntr has quit ("End of line.").
07:09:02 -!- tgwizard has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:03:00 -!- tgwizard has quit (Remote closed the connection).
08:04:15 -!- GregorR-L has quit ("HydraIRC -> http://www.hydrairc.w00t <- IRC for annoying quit-spamming bastards").
08:47:18 -!- anonfunc has joined.
09:59:07 <tokigun> bsmntbombdood, what platform did you use? linux?
10:40:40 <tokigun> what OS*
10:48:35 -!- ivan` has quit (" Want to be different? HydraIRC -> http://www.hydrairc.com <-").
11:27:59 -!- ivan` has joined.
11:39:43 -!- ivan` has left (?).
14:02:34 -!- calamari has joined.
14:04:34 <calamari> hi
14:04:44 <tokigun> hello
14:10:47 <okokoko> lo
14:45:37 -!- calamari has quit ("Leaving").
14:54:09 -!- DRMacIver has quit (Read error: 104 (Connection reset by peer)).
14:58:41 -!- DRMacIver has joined.
15:16:52 -!- woggle has joined.
15:45:53 -!- GregorR-L has joined.
16:21:06 -!- jix_ has joined.
16:26:25 * SimonRC finds superdickery.com. Slogan: "Superman is a dick".
16:28:24 <SimonRC> ooh, he is evil:
16:28:25 <SimonRC> http://www.superdickery.com/dick/17.html
16:31:24 -!- woggle has quit (Connection timed out).
16:36:06 <GregorR-L> Superdickery = fun :)
16:51:33 * SimonRC goes
17:19:03 -!- Darksun has joined.
17:19:46 -!- Darksun has quit (Client Quit).
18:59:43 -!- ShadowHntr has joined.
19:03:27 -!- GregorR-L has quit (Read error: 110 (Connection timed out)).
19:17:01 -!- GregorR-W has joined.
20:39:06 * SimonRC listens to _The Now Show_.
20:39:07 <SimonRC> Yay!
20:39:14 <SimonRC> http://www.bbc.co.uk/radio4/comedy/nowshow.shtml
20:39:20 <SimonRC> (try it)
20:44:46 <bsmntbombdood> tokigun: yes, I tested it on linux
20:45:05 <bsmntbombdood> Shouldn't be platform specific though
20:46:46 * bsmntbombdood though it was interesting
20:48:36 <bsmntbombdood> yay for c!
20:51:57 <tokigun> bsmntbombdood, i'm not sure, but i think your code may be not portable
20:52:27 <bsmntbombdood> Why not?
20:52:29 <tokigun> (at first i expected your code will not work in win32, but it works ;)
20:53:32 <tokigun> there could be an architecture that doesn't allow to execute instructions in malloc'd memory
20:53:55 <bsmntbombdood> mmm
20:54:02 <bsmntbombdood> OpenBSD W ^ X
20:55:33 <bsmntbombdood> Think there's a way to undo that
20:57:22 <bsmntbombdood> mprotect
20:57:35 <bsmntbombdood> PROT_EXEC | PROT_READ
20:58:23 -!- CakeProphet has joined.
20:59:04 <bsmntbombdood> I think
21:13:47 * SimonRC swears at bsmntbombdood's ugly hack for a bit.
21:14:01 <bsmntbombdood> hehe
21:14:22 <bsmntbombdood> I thought it was pretty cool
21:15:53 <SimonRC> First-clas functions, more literally than usually meant.
21:17:03 <bsmntbombdood> :)
21:18:20 <SimonRC> My friends elsenet hate it.
21:19:11 <bsmntbombdood> elsenet?
21:19:14 <SimonRC> Maybe you should try writing some of the common HoF, then write an IOCCC entrant in a functional style.
21:19:32 <SimonRC> bsmntbombdood: yeah, meaning "somewhere else on the net".
21:19:42 <bsmntbombdood> What is HoF?
21:19:50 <SimonRC> higher-order functions
21:20:09 <bsmntbombdood> oh
21:20:48 <bsmntbombdood> There should be some better way to find the offset of a variable inside a function without using a sentinal
21:21:02 <SimonRC> you could say that
21:21:22 <tokigun> how about implementing standard combinators? :)
21:21:50 <SimonRC> And "int closure" isn't a closure. It's kinda a captured variable.
21:22:36 <bsmntbombdood> That code segfaults on openbsd
21:23:13 <SimonRC> no shit
21:25:59 <bsmntbombdood> gdb segfaults when trying to debug it O.o
21:26:57 <SimonRC> heh
21:29:51 <bsmntbombdood> Well, my hackery is cool
21:31:48 <SimonRC> It seems several pograms disagree. ^^^
21:32:46 <bsmntbombdood> pogram?
21:32:58 <bsmntbombdood> program?
21:33:14 <SimonRC> OTOH, it works on my machine.
21:41:30 <bsmntbombdood> segfaultage removed
21:41:40 <bsmntbombdood> mprotect(newfunc, size, PROT_WRITE | PROT_READ | PROT_EXEC);
21:41:42 <SimonRC> how?
21:41:50 <SimonRC> heh
21:43:36 <bsmntbombdood> So it is portable
21:43:55 <tokigun> heh
21:46:30 <bsmntbombdood> take that, doubters
21:49:20 <SimonRC> heh
22:00:00 <SimonRC> :-S http://www.propeller-island.de/rooms_neu/room_detail/23/index.php
23:17:23 -!- Sgeo has joined.
23:35:29 * SimonRC goes to bed
23:41:21 -!- pikhq has joined.
23:45:08 <pikhq> 'Lo.
23:47:27 <bsmntbombdood> Hi
2006-12-16
00:23:39 -!- GregorR has quit (Connection timed out).
01:35:59 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
01:41:47 <CakeProphet> hmm.. Python seems to be popular with scientists and researchers...
01:58:29 <bsmntbombdood> Why do you say that?
03:08:32 -!- sekhmet has quit ("next stop: hard drive!").
04:36:20 -!- ldlework has joined.
04:37:15 <ldlework> Is racecar a palindrome?
04:37:29 <pikhq> Clearly.
04:45:13 -!- cybercobra has joined.
05:00:20 -!- Arrogant has joined.
05:35:16 -!- Sgeo has quit (Remote closed the connection).
06:17:52 -!- cybercobra has left (?).
06:55:29 <ShadowHntr> well i'm off
06:55:29 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
07:26:58 -!- pikhq has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:05:51 -!- GregorR-W has quit (Remote closed the connection).
08:06:19 -!- GregorR-W has joined.
08:51:46 -!- CakeProphet has quit (Read error: 131 (Connection reset by peer)).
09:07:58 -!- Arrogant has quit ("Leaving").
10:02:36 -!- tgwizard has joined.
10:11:27 -!- jix_ has joined.
11:41:44 -!- jix_ has quit ("This computer has gone to sleep").
13:35:34 -!- mickoko has joined.
13:37:08 -!- mickoko has left (?).
13:37:55 -!- mickoko has joined.
13:38:20 -!- mickoko has left (?).
13:52:44 -!- jix_ has joined.
14:26:37 -!- ldlework has quit (Read error: 110 (Connection timed out)).
14:57:03 -!- Asztal has joined.
15:06:47 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
16:44:40 -!- pikhq has joined.
17:37:36 -!- Sgeo has joined.
17:48:15 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
17:49:14 -!- pikhq_ has joined.
17:49:14 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
18:21:32 -!- ShadowHntr has joined.
18:45:58 -!- Sph1nx has joined.
18:46:14 -!- Sph1nx has quit (Read error: 104 (Connection reset by peer)).
19:01:28 -!- wooby has quit.
19:30:48 -!- Sukoshi has joined.
19:33:59 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)).
19:37:08 -!- pgimeno has joined.
19:38:32 -!- pikhq_ has changed nick to pikhq.
19:41:19 -!- maverickbna has joined.
19:41:55 -!- ShadowHntr has quit (Nick collision from services.).
19:42:35 -!- maverickbna has changed nick to ShadowHntr.
20:14:21 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)).
20:41:05 <SimonRC> hm
20:41:43 <Sukoshi> mh
20:43:07 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
21:15:22 <okokoko> !exec 3["ko"30RndMul"o"SwpAddPrntNlDrp1SubDbl]
21:26:07 -!- CakeProphet has joined.
22:22:58 -!- sekhmet has joined.
22:34:55 * pikhq sighs
22:35:09 * pikhq curses at Egobot's nonexistence
22:40:45 <bsmntbombdood> heh
23:04:59 -!- Asztal has joined.
23:10:00 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
23:10:13 -!- pikhq has joined.
23:11:20 -!- pikhq has quit (Client Quit).
23:49:12 <SimonRC> Yikes! Take the scary Christians away! http://www.spinnoff.com/zbb/viewtopic.php?p=453499
23:54:26 <bsmntbombdood> Scary indeed
23:54:45 <bsmntbombdood> But seriously, don't watch that on youtube, download a torren
23:54:46 <bsmntbombdood> t
23:57:07 <Sukoshi> But, there's a whole generation of people who know nothing of torrent and only demand subpar tasteless YouTube clips!
23:57:23 <Sukoshi> Will you really deny them of their happiness?!
23:57:32 <Sukoshi> *subpar quality
23:58:56 <bsmntbombdood> yes
23:59:11 <SimonRC> bsmntbombdood: you tell me too late
23:59:11 <SimonRC> :-(
23:59:29 <SimonRC> Is there torrent software for Windows?
23:59:46 <Sukoshi> You're joking, right?
23:59:48 <bsmntbombdood> I'm sure there is
2006-12-17
00:00:17 * Sukoshi sure hopes SimonRC is joking.
00:01:58 <bsmntbombdood> I hope he's joking
00:02:05 <bsmntbombdood> Come on, windows?
00:02:39 <Sukoshi> :P
00:07:59 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
00:08:12 <Sukoshi> If you have a fd for a new file, and mmap memory of that fd to the desired length of the new file (bigger than the size of the file now, obviously) and write to the mmap'd memory, does it write correctly?
00:10:33 <bsmntbombdood> Never understood mmap
00:11:21 <Sukoshi> Maps a file's contents in virtual memory to a pointer, with the space occupying a desired length.
00:11:52 <bsmntbombdood> So writes to the memory change the file?
00:12:40 -!- wooby has joined.
00:12:46 -!- wooby has quit (Remote closed the connection).
00:15:58 <Sukoshi> Yup.
00:16:32 <bsmntbombdood> cool
00:16:43 <bsmntbombdood> portable?
00:16:50 <Sukoshi> POSIX compatible.
00:17:13 <bsmntbombdood> I mean windows
00:17:20 * bsmntbombdood hides
00:17:21 <Sukoshi> I have no idea.
00:17:47 <Sukoshi> Windows doesen't really have much to hook onto the lower portions of the OS, so I have no idea.
00:23:36 <bsmntbombdood> Windows is terrible
00:25:45 * SimonRC goes to bed.
00:25:52 <bsmntbombdood> Why would one use mmap?
00:52:45 -!- wooby has joined.
00:53:48 -!- GregorR-Grrr has joined.
00:53:55 <GregorR-Grrr> Hi *
00:53:59 * GregorR-Grrr 's internet is down :(
00:54:10 <GregorR-Grrr> I think I'll bring EgoBot back online when it's back up.
00:54:45 -!- GregorR-Grrr has quit (Client Quit).
01:02:13 <bsmntbombdood> HA HA NO INTERNETS FOR YOU
01:15:04 <pgimeno> for the record, Windows also has its own memory mapping functions (I think that glibc for MinGW implements POSIX mmap)
01:23:26 -!- tgwizard has quit (Remote closed the connection).
01:35:35 -!- ShadowHntr has joined.
01:52:11 -!- ShadowHntr has quit (Client Quit).
03:13:00 -!- GreaseMonkey has joined.
03:17:30 <Sukoshi> bsmntbombdood: Because IO with mmap is faster than IO without.
03:18:00 <Sukoshi> Plus it's easier to follow pointer arithmetic than reading arithmetic, just IMO.
04:15:46 -!- thematrixeatsyou has joined.
04:16:57 -!- GreaseMonkey has quit (Nick collision from services.).
04:17:06 -!- GregorR-W has quit (Remote closed the connection).
04:17:22 -!- thematrixeatsyou has changed nick to GreaseMonkey.
04:27:53 -!- wooby has quit.
04:35:03 -!- anonfunc has quit (Read error: 110 (Connection timed out)).
05:22:09 -!- wooby has joined.
05:22:19 -!- wooby has quit (Client Quit).
05:32:13 -!- anonfunc has joined.
05:38:34 <CakeProphet> hmm...
05:38:45 <CakeProphet> I'm making classes in Python that emulate the various computational classes.
05:39:16 <CakeProphet> I've got finite state automata.... but I need to ponder how to implmenet cellular automato.
05:39:18 <CakeProphet> a
05:43:30 <tokigun> CakeProphet, use resizable array or dictionary
05:44:29 <tokigun> dictionary could be slow but it is easy for implementing such things
05:44:41 <CakeProphet> >.>
05:44:52 <CakeProphet> Python lists are resizable by default.
05:44:58 <CakeProphet> ...you don't even specify a size for them.
05:45:34 <tokigun> well, but if you need more speed... ;)
05:45:58 <CakeProphet> I know -how- to spatially organize it...
05:46:14 <CakeProphet> but how do I allow the programmer to specify -what- is considered to be a cells "neighborhood"
05:46:27 <CakeProphet> as not all CA use the "8 adjacent cells" thing.
05:46:33 <tokigun> aha
05:46:36 <tokigun> i see.
05:48:20 <CakeProphet> The states of each of a cells neighbors would be passed to a "transition function"... that determines what the state of the cell becomes based on that list.
05:50:22 <CakeProphet> the transition function is user-defined.
05:51:17 <tokigun> if both arbitrary transition function and infinite cells are allowed, it seems difficult to update the state of cells
05:53:45 -!- wooby has joined.
05:53:53 <tokigun> i think you may need additional functions, for example list of affected cells when a state of one cell is changed
05:56:32 -!- wooby has quit (Client Quit).
05:58:53 <CakeProphet> tokigun, The transition function would simply be called on the neighborhoods of the cells neighbors.
05:59:06 <CakeProphet> so you get a domino effect... like a CA
06:00:43 <CakeProphet> but I still don't have an easy way to define a cells neighborhood... other than the usualy 8-adjacent-cells.
06:01:10 <tokigun> hmm i thought transition function could be any computable function... right?
06:02:37 <tokigun> nope, nevermind.
06:03:35 <CakeProphet> it can be.
06:03:46 <CakeProphet> any function that accepts a list of cells.
06:16:09 -!- ivan`_ has joined.
06:16:24 -!- ivan`_ has left (?).
06:17:25 <CakeProphet> aha
06:17:42 <CakeProphet> A function that determines a cells neighborhood.
06:18:21 <CakeProphet> the return value of the function is a list of the positions of all the cells in that cell's neighborhood.
06:29:29 -!- thematrixeatsyou has joined.
06:29:38 -!- thematrixeatsyou has left (?).
06:59:46 <GreaseMonkey> gonna go now, cya
06:59:53 -!- GreaseMonkey has quit ("Connection error 130 (Monkey too greasy)").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:21:07 -!- bd_ has joined.
10:37:02 -!- ShadowHntr has joined.
10:44:24 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
11:43:50 -!- anonfunc has left (?).
11:56:41 -!- tgwizard has joined.
12:04:21 -!- jix_ has joined.
12:15:10 <pgimeno> CakeProphet: assuming you're not aiming towards supporting a radius-2+ neighbourhood, my guess is that the transition function can be passed all 9 cells and decide by itself which ones to ignore
12:15:54 <pgimeno> e.g. just ignore nw, ne, sw, se for a von-Neumann neighbourhood
12:56:11 -!- Asztal has joined.
13:53:27 -!- DRMacIver has left (?).
16:29:05 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
16:46:50 -!- jix_ has quit ("This computer has gone to sleep").
17:37:22 -!- fizbin has joined.
19:16:10 -!- fizbin has quit (Read error: 104 (Connection reset by peer)).
19:16:19 -!- fizbin has joined.
19:33:03 <Sukoshi> Is it counterproductive to mmap a file, then munmap it, only to write to it later?
19:34:25 -!- CakeProphet has quit ("haaaaaaaaaa").
19:49:29 -!- tgwizard has quit (Connection timed out).
19:49:57 -!- Asztal has joined.
20:20:23 -!- oerjan has joined.
20:24:27 -!- Asztal has quit (Read error: 113 (No route to host)).
20:25:32 <oerjan> Sukoshi: I saw your mmap question in the logs
20:26:14 <oerjan> the man page seems to indicate that extra memory is not written to the file
20:27:56 <oerjan> "For a file that is not a multiple of the page size, the remaining memory is zeroed when mapped, and writes to that region are not written out to the file.
20:38:18 -!- tgwizard has joined.
20:57:36 <Sukoshi> Oh.
20:57:38 <Sukoshi> Poop.
20:58:27 <oerjan> on the other hand, since you have to give the length in advance, why not just enlarge the file itself first?
20:58:41 <Sukoshi> Because I don't want to enlarge the file.
20:59:09 <Sukoshi> If the transfer interrupts, you'll just have a large zero-padded file, which I don't really want.
20:59:18 <Sukoshi> I'd rather have a file with no padding.
20:59:58 <oerjan> ic
21:18:08 -!- jix_ has joined.
21:21:31 -!- GreaseMonkey has joined.
21:29:13 -!- CakeProphet has joined.
21:46:08 -!- wooby has joined.
21:52:22 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:53:07 -!- ihope has joined.
21:56:13 -!- Rugxulo has joined.
22:00:18 -!- Asztal has joined.
22:08:07 -!- pikhq has joined.
22:24:53 -!- Rugxulo has quit ("Do fish get thirsty?").
22:40:01 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
22:53:39 <oerjan> the downside to wikis: when you are reading something that is _not_ a wiki, see a spelling error, and start looking for the edit button...
22:57:12 -!- tgwizard has quit (Remote closed the connection).
22:58:10 <oerjan> (the downside to the internet: i am probably the 5190357th person to make that observation)
22:59:04 <pikhq> Heheh.
23:00:42 -!- ShadowHntr has joined.
23:18:07 * ihope uses the /edit command to capitalize everything oerjan said
23:18:08 <ihope> :-P
23:18:59 <oerjan> hey, that's a derived work! i demand royalties :)
23:19:40 * bsmntbombdood uses /ctcp ihope STAB to stab ihope
23:19:43 * ihope gives oerjan a crown and robes and everything
23:19:47 * oerjan was stupid enough to actually try /help edit ...
23:20:45 <oerjan> bsmntbombdood: right! Off With His Head, We Say
23:24:07 <ihope> Uh oh...
23:24:13 * ihope runs away
23:25:26 * oerjan realizes royalty can be dangerous to his surroundings, and removes the regalia
23:27:34 <oerjan> royalty: a Weapon of Mass Destruction
23:28:19 * oerjan hopes the king and queen of Norway are not Not Amused
23:30:03 * oerjan thus wishes to point out that presidency is also a WMD.
23:35:17 -!- maverickbna has joined.
23:35:54 -!- ShadowHntr has quit (Nick collision from services.).
23:36:23 -!- maverickbna has changed nick to ShadowHntr.
23:37:45 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)).
23:44:22 -!- maverickbna has joined.
23:45:28 -!- ShadowHntr has quit (Nick collision from services.).
23:45:38 -!- maverickbna has changed nick to ShadowHntr.
2006-12-18
00:16:06 -!- ShadowHntr has quit (Connection timed out).
00:30:28 -!- Haarfager has joined.
01:13:17 -!- wooby has quit.
01:14:40 -!- sentinel has joined.
01:15:07 -!- sentinel has changed nick to ShadowHntr.
01:15:16 -!- ShadowHntr has quit (Remote closed the connection).
01:15:23 -!- ShadowHntr has joined.
01:23:29 -!- fizbin has quit ("Chatzilla 0.9.74 [Firefox 1.5.0.8/2006102516]").
01:37:44 -!- Elvang has joined.
01:38:10 -!- Elvang has quit (Client Quit).
01:53:47 -!- calamari has joined.
01:54:48 <calamari> hi
01:55:38 <RodgerTheGreat> hi
02:28:44 -!- pikhq has quit ("leaving").
02:44:24 -!- Furious_joe has joined.
02:44:51 <Furious_joe> please say "Hello world"
02:48:55 -!- ivan` has joined.
02:52:09 -!- Furious_joe has quit (Remote closed the connection).
03:16:23 -!- maverickbna has joined.
03:17:08 -!- ShadowHntr has quit (Nick collision from services.).
03:17:16 -!- maverickbna has changed nick to ShadowHntr.
03:47:29 -!- ShadowHntr has quit ("End of line.").
04:11:28 -!- wooby has joined.
04:18:18 -!- oerjan has quit ("Later").
04:32:23 -!- CakeProphet has quit (Read error: 113 (No route to host)).
04:43:36 -!- Haarfager has quit.
04:50:59 -!- JazzDonkey has joined.
05:08:51 -!- JazzDonkey has quit ("Chatzilla 0.9.75 [Firefox 1.5.0.8/2006102516]").
05:23:53 -!- eff has joined.
05:24:46 <eff> Please show me the GCD of 54 and 30
05:26:14 -!- eff has quit (Client Quit).
05:48:48 -!- Arrogant has joined.
06:17:10 <Sukoshi> No.
06:43:49 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:31:31 -!- Arrogant has quit (Read error: 104 (Connection reset by peer)).
09:47:36 -!- dakam has joined.
09:54:54 -!- dakam has left (?).
10:55:35 -!- rcxdude has joined.
11:26:19 -!- GroovyPigThing has joined.
12:09:19 -!- Toymakerii has joined.
12:09:58 -!- Toymakerii has quit (Client Quit).
12:13:42 -!- Toymakerii has joined.
12:15:28 -!- GroovyPigThing has quit ("( www.nnscript.de :: NoNameScript 3.81 :: www.XLhost.de )").
12:18:00 -!- Toymakerii has left (?).
12:28:04 -!- ihope has quit (Read error: 110 (Connection timed out)).
15:15:48 -!- jix_ has joined.
15:45:03 -!- Asztal has joined.
16:10:10 -!- sync- has joined.
16:11:33 * sync- is in doubt if he should ask for someone to type the complete 99 bottles lyrics ;p
16:19:02 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
16:19:57 -!- GregorR-W has joined.
16:44:05 -!- wooby_ has joined.
16:44:49 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
16:46:09 -!- oerjan has joined.
16:46:12 <oerjan> 6
17:07:54 -!- oerjan has quit ("Later").
17:28:44 -!- GregorR has joined.
17:49:57 <Sukoshi> Please prove that you are turing complete for me.
17:51:26 <bsmntbombdood> +[-]
18:02:34 <pgimeno> is there an epidemy of IRP or some /. article or something?
18:03:48 <bsmntbombdood> -[[+>+-]>]
18:07:58 <GregorR-W> O_O
18:08:02 <GregorR-W> My home computer is alive!!!
18:08:09 <GregorR-W> GregorR: YOU'RE A-LIIIIIIIIIIIIIIIIVE
18:09:38 <Sukoshi> On the other hand, if an op decides to kick GregorR, he won't be alive.
18:27:39 -!- wooby_ has quit.
18:32:40 <pgimeno> not so fast, does it respond to ping?
18:33:04 <Sukoshi> Seems not.
18:33:24 <GregorR-W> Well, it was briefly up X-P
18:39:10 -!- GregorR has quit (Read error: 110 (Connection timed out)).
18:39:27 -!- GregorR has joined.
19:24:28 -!- Arrogant has joined.
19:58:29 <bsmntbombdood> hmmm
20:12:20 -!- tgwizard has joined.
20:49:07 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
20:59:02 <Sukoshi> Hmm. Has anyone looked at GNU Epsilon?
21:00:39 -!- Arrogant has quit ("Leaving").
21:38:31 -!- ihope__ has joined.
21:38:33 -!- ihope__ has changed nick to ihope.
22:09:41 -!- pgimeno has quit (Read error: 54 (Connection reset by peer)).
22:09:43 -!- pgimeno_ has joined.
22:09:55 -!- pgimeno_ has changed nick to pgimeno.
22:18:38 -!- CakeProphet has joined.
22:48:10 -!- oerjan has joined.
22:51:54 -!- tgwizard has quit (Remote closed the connection).
23:41:11 <Sukoshi> I take that as a no?
23:41:51 <GregorR-W> That would be a no :)
23:42:08 <Sukoshi> Thank you for your prompt reply :P
23:42:34 <Sukoshi> 早い答でありがとうございます。
23:47:18 -!- wooby has joined.
2006-12-19
01:23:36 -!- calamari has joined.
01:24:13 -!- wooby has quit.
01:49:07 -!- fizbin has joined.
02:21:23 -!- pikhq has joined.
02:23:02 -!- fizbin has quit ("Chatzilla 0.9.74 [Firefox 1.5.0.8/2006102516]").
03:13:11 -!- GregorR has quit (Read error: 110 (Connection timed out)).
03:14:48 -!- GregorR has joined.
03:38:08 -!- oerjan has quit ("Good night").
03:38:54 -!- ShadowHntr has joined.
04:05:50 -!- CakeProphet has quit (No route to host).
04:17:41 -!- wooby has joined.
04:17:57 -!- wooby has quit (Client Quit).
04:38:00 -!- anonfunc has joined.
04:48:16 -!- mick_ has joined.
04:48:38 <mick_> hello
04:49:37 <mick_> anyone there>
04:49:40 <mick_> ?
04:50:23 -!- mick_ has quit (Client Quit).
04:58:21 -!- GregorR has quit (Read error: 60 (Operation timed out)).
04:59:30 -!- pikhq has quit (Read error: 110 (Connection timed out)).
05:09:57 -!- GregorR has joined.
05:17:31 <Sukoshi> Well, his patience lasted him one minute, and then he left.
05:17:44 <bsmntbombdood> zomg GregorR
05:28:10 <GregorR> Yeah, I was gone all weekend.
05:28:12 <GregorR> It was omgwtf.
05:28:35 <GregorR> Comcast + windstorm = AH CONT HONDLE THUH ENGINES SIR!
05:28:39 <bsmntbombdood> BBQ!
05:46:22 -!- graue has joined.
05:49:31 -!- calamari has quit ("Leaving").
07:18:33 -!- anonfunc has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:37 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
08:04:02 -!- GregorR-W has quit (Remote closed the connection).
08:04:32 -!- GregorR-W has joined.
08:10:50 -!- ShadowHntr has joined.
08:12:53 -!- anonfunc has joined.
08:36:22 -!- wooby has joined.
09:10:56 -!- sync- has quit ("leaving").
10:22:06 -!- ShadowHntr has quit (Client Quit).
11:49:48 -!- ivan`_ has joined.
12:08:00 -!- ivan` has quit (Read error: 110 (Connection timed out)).
12:08:01 -!- ivan`_ has changed nick to ivan`.
12:24:37 -!- ivan`_ has joined.
12:32:42 -!- jix_ has joined.
12:40:44 -!- GregorR has quit (Read error: 110 (Connection timed out)).
12:41:24 -!- GregorR has joined.
12:41:35 -!- ivan` has quit (Read error: 110 (Connection timed out)).
12:41:35 -!- ivan`_ has changed nick to ivan`.
15:01:56 -!- GregorR has quit (Read error: 110 (Connection timed out)).
15:04:37 -!- GregorR has joined.
15:31:08 -!- tgwizard has joined.
17:10:12 -!- Asztal has joined.
17:52:13 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
18:28:56 -!- graue has quit ("Leaving").
18:47:31 -!- wooby has quit.
19:12:48 <SimonRC> I think that trying to fit the whole of _Hogfather_ in 3 hours created some confusion.
19:35:19 -!- rcxdude has quit ("beware of the... arggghhhhh").
19:43:36 -!- anonfunc has quit (Read error: 110 (Connection timed out)).
20:03:26 -!- wooby has joined.
20:04:16 -!- wooby has quit (Client Quit).
20:51:59 -!- ShadowHntr has joined.
20:56:50 <SimonRC> ShadowHntr: hi
20:57:03 <ShadowHntr> howdy
21:34:37 -!- GregorR-W has changed nick to InedibleBulk.
21:38:23 -!- ihope__ has joined.
21:39:03 -!- ihope__ has changed nick to ihope_.
21:45:56 -!- GregorR has quit (Connection timed out).
21:48:31 -!- GregorR has joined.
21:55:09 -!- ihope has quit (Connection timed out).
22:01:20 -!- CakeProphet has joined.
22:01:25 -!- InedibleBulk has changed nick to GregorR-W.
22:14:28 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:17:40 -!- ehempel has joined.
22:34:34 -!- ehempel has quit ("CGI:IRC (EOF)").
22:36:33 -!- tgwizard has quit (Remote closed the connection).
22:39:16 -!- oerjan has joined.
22:55:45 -!- ivan` has quit (Read error: 104 (Connection reset by peer)).
23:00:23 -!- ivan` has joined.
23:38:19 -!- bd_ has left (?).
2006-12-20
00:13:14 -!- Sgeo has joined.
00:18:55 <bsmntbombdood> grar
00:19:03 <bsmntbombdood> I hate it when people say HTML isn't a programming language
00:25:49 * SimonRC goes to bed
00:26:06 <SimonRC> bsmntbombdood: It's a language, but not a *programming* language.
00:26:14 <bsmntbombdood> Yes it is
00:26:20 <SimonRC> no it isn't
00:26:36 <bsmntbombdood> "A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. "
00:26:36 <SimonRC> You can't calculate anything with it
00:26:47 <SimonRC> where is that from?
00:26:48 <bsmntbombdood> HTML controls an html renderer
00:27:02 <bsmntbombdood> wikipedia
00:27:02 <GregorR-W> HTML is a markup language, not a programming language.
00:27:06 <GregorR-W> Your definition is incomplete.
00:27:18 <bsmntbombdood> Programming languages don't have to be turing complete
00:27:25 <GregorR-W> No, they don't.
00:27:31 <SimonRC> Note: a programming language need not be turing-complete
00:27:50 <GregorR-W> "A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer." < true
00:28:04 <GregorR-W> "All artificial languages that can be used to control the behavior of a machine, particularly a computer are programming languages." < false
00:28:04 <bsmntbombdood> A rendering engine is a machine
00:28:32 <SimonRC> Epigram is clearly a programmming language, even though it is not generally recursive, and htus not Turing-Complete.
00:29:24 <SimonRC> Anyway, having taken the bait, I should go to bed.
00:29:31 * SimonRC goes to bed
00:30:43 <GregorR-W> HTML provides no branch or loop semantics, which are IMHO a requirement for anything to be considered a programming language.
00:33:04 <GregorR-W> By the way, on that same page of Wikipedia: "Non-computational languages, such as markup languages like HTML or formal grammars like BNF, are usually not considered programming languages."
01:30:26 -!- GregorR-W has quit ("Chatzilla 0.9.77 [Firefox 2.0/0000000000]").
02:45:39 -!- ihope_ has quit (Connection timed out).
02:51:59 -!- oerjan has quit ("Good night").
03:36:50 -!- pikhq has joined.
04:02:38 <GregorR> require("stdio.plof"); stdio.StdOut.writeln("Plof lives!");
04:06:50 <pikhq> string ow! "Making BFM a better compiler hurts!"
04:17:49 * bsmntbombdood wrote an irc bot
04:17:59 <GregorR> THAT'S IT
04:18:03 <GregorR> I'm bringing EgoBot back.
04:18:23 <pikhq> Yay!
04:18:39 -!- bsmnt_bot has joined.
04:18:49 <pikhq> Now, can you add BFM support to EgoBot? :p
04:19:03 <bsmntbombdood> My bot rocks
04:19:13 <bsmntbombdood> !raw PRIVMSG #esoteric :yes i do
04:19:13 <bsmnt_bot> yes i do
04:19:15 -!- EgoBot has joined.
04:19:30 <bsmnt_bot> zomg
04:19:34 <pikhq> !bfm
04:19:36 <EgoBot> Huh?
04:19:37 <bsmnt_bot> us bots can get it on
04:19:39 <GregorR> !raw PRIVMSG #esoteric :I'm better.
04:19:40 <EgoBot> I'm better.
04:19:54 <pikhq> !raw QUIT
04:20:00 <bsmnt_bot> No, I'm better
04:20:09 <GregorR> !help
04:20:12 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
04:20:13 <bsmntbombdood> pikhq: You have to match a regex
04:20:14 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
04:20:21 <pikhq> bsmntbombdood: No, really?
04:20:31 <bsmntbombdood> Yes, really
04:20:35 -!- GregorR has changed nick to bsmntbombdood2.
04:20:41 <bsmntbombdood> nope
04:20:43 <bsmntbombdood2> !raw QUIT
04:20:46 <bsmntbombdood2> Darn :P
04:20:48 -!- bsmntbombdood2 has changed nick to GregorR.
04:20:58 <bsmntbombdood> "^:bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG \S* :!exec"
04:21:03 <bsmntbombdood> is the regex
04:21:18 * pikhq has a better regex. . .
04:21:24 <pikhq> "*"
04:21:27 <bsmntbombdood> oops, "^:bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG \S* :!raw"
04:21:31 <pikhq> It's anarchy!
04:21:48 <bsmntbombdood> pikhq: !ctcp has that regex
04:22:06 <bsmntbombdood> !ctcp #esoteric ACTION is glad
04:22:06 * bsmnt_bot is glad
04:22:08 <EgoBot> Huh?
04:22:57 <pikhq> That could probably be abused.
04:23:02 <bsmntbombdood> Yeah
04:23:04 * pikhq looks for abusive ctcps
04:23:50 <bsmntbombdood> !exec self.register_raw("^pikhq.*!%s" % "zomgquit", lambda x : True)
04:23:54 <EgoBot> Huh?
04:23:56 <bsmntbombdood> now pikhq can kill it
04:23:58 <GregorR> !ctcp #esoteric PING
04:24:00 <EgoBot> Huh?
04:24:09 <GregorR> Repeat that a few times == DDOS
04:24:19 <bsmntbombdood> hehe
04:24:55 <bsmntbombdood> pikhq can kill it with !zomgquit
04:25:15 <bsmntbombdood> fun
04:25:22 -!- GregorR has changed nick to pikhq_not.
04:25:26 <pikhq_not> !zomgquit
04:25:28 <EgoBot> Huh?
04:25:37 <pikhq_not> :(
04:25:41 <bsmntbombdood> hrm
04:25:42 -!- pikhq_not has changed nick to GregorR.
04:25:44 <bsmntbombdood> that's interesting
04:26:04 <bsmntbombdood> oooops
04:26:41 <bsmntbombdood> !exec self.register_raw("^:pikhq.*!%s" % "zomgquit", lambda x : True)
04:26:43 <bsmntbombdood> there
04:26:45 <EgoBot> Huh?
04:28:46 <bsmntbombdood> !exec self.register_raw("^:GregorR.*!%s" % "zomgquit", lambda x : bot.raw("PRIVMSG GregorR :ha ha you can't kill it"))
04:28:48 <EgoBot> Huh?
04:29:42 <GregorR> !zomgquit
04:29:45 <EgoBot> Huh?
04:29:49 <bsmntbombdood> oh darn
04:29:55 <bsmntbombdood> :kornbluth.freenode.net 505 bsmnt_bot :Private messages from unregistered users are currently blocked due to spam problems, but you can always message a staffer. Please register! ( http://freenode.net/faq.shtml#privmsg )
04:30:02 <GregorR> lol
04:30:21 * bsmntbombdood does this part in private message
04:30:55 <bsmntbombdood> there
04:31:49 <bsmntbombdood> Now you can do it
04:32:15 <GregorR> !zomgquit
04:32:19 <EgoBot> Huh?
04:33:18 <bsmntbombdood> You got that message, right?
04:33:26 <GregorR> Yeah :P
04:33:37 <GregorR> On an unrelated note, http://www.codu.org/plof/
04:33:42 * bsmntbombdood is proud of the bot he hacked up in half an hour
04:35:03 <bsmnt_bot> Tooo many P languages!
04:36:11 * bsmntbombdood huggles lisp
04:36:28 <bsmntbombdood> I think I'm going to re write this bot in lisp
04:36:36 <bsmnt_bot> OH NO!
04:36:45 <bsmnt_bot> NOT REWRITING!
04:37:03 <pikhq> !zomgquit
04:37:04 -!- bsmnt_bot has quit (Remote closed the connection).
04:37:06 <pikhq> :)
04:37:07 <EgoBot> Huh?
04:37:16 <bsmntbombdood> hehe
04:37:23 -!- bsmnt_bot has joined.
04:38:17 <bsmnt_bot> zomg you kill me
04:38:30 * pikhq recommends you rewrite the bot in Tcl.
04:38:52 <pikhq> With [package require irc], from Tcllib, you've got your work cut out for you.
04:39:41 <bsmntbombdood> http://bsmntbombdood.mooo.com/ircbot.py is teh codz0rs
04:40:04 <bsmntbombdood> Ugly, I know
04:40:20 <GregorR> pikhq: The phrase, "You've got your work cut out for you" means "You have a lot of work"
04:42:09 <pikhq> Oh.
04:42:53 <bsmntbombdood> The whole point was to do it from scratch
04:46:06 <bsmntbombdood> GregorR, do you have an implementation of plof?
04:47:21 <GregorR> Yeah, one.
04:47:31 <GregorR> In D, so you probably can't [easily] use it ^^
04:47:41 <bsmntbombdood> hmm
04:48:52 <bsmntbombdood> looks interesting
04:48:58 <bsmntbombdood> var B = A + [ funcb = { println("Bye!"); } ];
04:48:59 <bsmntbombdood> ??
04:49:29 <bsmntbombdood> B is a new class the inherits from A?
04:49:33 <GregorR> Inheritance, interface implementation and such are abstracted to object arithmetic.
04:49:41 <GregorR> So basically, yeah.
04:49:44 <bsmntbombdood> neat
04:51:14 <GregorR> Want me to compile dplof for you?
04:51:21 <bsmntbombdood> Interpreter?
04:51:28 <GregorR> Yeah
04:51:31 <bsmntbombdood> yeah
04:51:36 <GregorR> Platform?
04:51:42 <bsmntbombdood> x86 linux
04:51:52 <GregorR> One sec.
04:54:19 <GregorR> http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-19.tar.gz
04:55:01 <GregorR> It's a sort of crappy parser, so if you get an assertion failure, it's probably unparsable code with no useful error message :)
04:55:37 <bsmntbombdood> No reading from stdin?
04:56:27 <GregorR> See module stdio.plof
04:56:37 <GregorR> stdio.StdIn.read[ln]
04:56:42 <GregorR> (More TBA)
04:57:38 -!- bsmntbombdood has left (?).
04:57:42 -!- bsmntbombdood has joined.
04:57:47 <bsmntbombdood> I'm not gettin it
04:58:02 <GregorR> Could you be less specific? :)
04:58:13 <bsmntbombdood> How do I read code from stdin?
04:58:29 <GregorR> var linefromstdin = stdio.StdIn.readln();
04:58:39 <bsmntbombdood> I mean, the interpreter
04:58:44 <GregorR> OH
04:58:49 <GregorR> Has to be in a file ATM
04:58:52 <bsmntbombdood> ok
04:58:58 <GregorR> I suppose I should allow it to read from stdin >_>
05:01:17 <bsmntbombdood> hrm
05:01:23 <bsmntbombdood> when to use [] and when to use {}?
05:01:33 <GregorR> [] is an object, {} is a function
05:02:48 <bsmntbombdood> oh dear
05:02:50 <bsmntbombdood> segfault
05:03:12 <GregorR> There's at least one point where I have: *(cast(int *) 0) = 0;
05:03:25 <GregorR> Because it's easier to backtrace than an assert :)
05:03:46 <GregorR> pastebin your code, I'll probably see the issue.
05:04:07 -!- pikhq has quit (Connection timed out).
05:04:16 <bsmntbombdood> var A = [main = {println("Hello, World");}]
05:04:23 <bsmntbombdood> var test = new(A);
05:04:23 <bsmntbombdood> test.main();
05:04:34 <GregorR> Put a ; after ]
05:04:45 <bsmntbombdood> aaaah
05:05:03 <bsmntbombdood> picky parser ;)
05:05:12 <GregorR> I think now would be a good time to make some useful error messages for misparses :)
05:05:30 <GregorR> I just assert()'d away anything that couldn't parse :)
05:07:38 <bsmntbombdood> Looks interesting so far
05:08:47 -!- Sgeo has quit ("Ex-Chat").
05:11:51 <bsmntbombdood> Do method/function declarations need a semicolon?
05:12:25 <GregorR> Pretty much everything needs a semicolon - there are only statements.
05:12:32 <GregorR> In [], elements are comma-separated.
05:12:55 <GregorR> (I'm considering changing that)
05:13:30 <GregorR> OH - you can have an expression as the only member of a function, with no ;, in which case it's a function that returns the value of that expression.
05:13:43 <bsmntbombdood> What's self?
05:14:40 <GregorR> ?
05:14:59 <bsmntbombdood> In a method
05:15:11 <bsmntbombdood> What is the name of the object
05:15:37 <GregorR> OH ... I thought it was 'this', but I'm starting to think I may not have implemented that in dplof 8-X
05:15:49 <GregorR> Shoot ... I may have forgotten to put that in >_>
05:16:11 <GregorR> Heh <_<,
05:19:39 <bsmntbombdood> Nope, no this
05:19:46 <GregorR> Yeah, I'm fixing it as we speak.
05:26:12 <GregorR> Done, making you a new binary.
05:28:10 <GregorR> http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-19-2.tar.gz
05:33:49 <GregorR> I think I inexplicably included some rampantly-incomplete core/*.plof files in that tarball, but no worries :P
05:35:15 <bsmntbombdood> mmmk
05:36:09 * bsmntbombdood will look more tommorow, but must sleep now
05:36:16 <bsmntbombdood> Finals tommorow :(
05:37:38 <bsmntbombdood> !quit
05:37:38 -!- bsmnt_bot has quit.
05:37:40 <EgoBot> Huh?
05:38:57 <GregorR> G'luck
05:42:45 <bsmntbombdood> woot:
05:42:53 <bsmntbombdood> var A = [
05:42:53 <bsmntbombdood> foo = {
05:42:53 <bsmntbombdood> println("toplevel foo");
05:42:53 <bsmntbombdood> this.foo = {
05:42:55 <bsmntbombdood> println("midlevel foo");
05:42:58 <bsmntbombdood> this.foo = {
05:43:00 <bsmntbombdood> println("insidelevel foo");
05:43:03 <bsmntbombdood> }
05:43:05 <bsmntbombdood> }
05:43:10 <bsmntbombdood> }
05:43:13 <bsmntbombdood> ];
05:43:15 <bsmntbombdood>
05:44:09 <GregorR> Yup, that's one of those nasty things you can do :P
05:44:18 <GregorR> Incidentally, "this." isn't necessary there.
05:44:38 <GregorR> (Part of why I didn't remember to put in "this" is that it's not strictly necessary)
05:44:43 <bsmntbombdood> oh
05:44:46 <GregorR> (Erm, not with a dot anyway)
05:45:11 <GregorR> If you don't put a "var" before something, it will look for it in parent scopes, not create a new one at the current scope.
05:45:26 * bsmntbombdood likey
05:45:45 <GregorR> Basically, you need to explicitly declare all variables *shrugs*
05:46:29 <bsmntbombdood> How come methods aren't?
05:47:01 <GregorR> They are - variables in objects, however, have a different syntax entirely.
05:47:31 <GregorR> Variables in [] are just comma-separated variables - it doesn't take full expressions, so it's not ambiguous.
05:48:49 <GregorR> I think i can explain that better:
05:48:59 <GregorR> In {} you have code: statements, expressions, whatever.
05:49:04 <GregorR> In [], you just have a list of variables in that object.
05:50:34 <bsmntbombdood> ok really bedtime now
05:50:59 <GregorR> Bye :)
05:56:43 -!- ShadowHntr has quit ("End of line.").
05:59:30 <Sukoshi> So, is Plof a whole bunch of Flex/Bison?
06:01:05 <GregorR> Nah, custom lexer/parser.
06:01:21 <Sukoshi> Aha. A real programmer, huh? ;)
06:01:25 <GregorR> It only has three intrinsic constructs, so parsing is simple.
06:01:29 <GregorR> Heh
06:01:45 <Sukoshi> I'm attemping to follow a Ruby discussion in Japanese.
06:02:13 <GregorR> And how's your Japanese? :)
06:02:30 <Sukoshi> Actually, enough to follow most of the conversation without resorting to the dictionary.
06:03:03 <Sukoshi> The computer words and some other stuff get me.
06:03:19 <Sukoshi> Apparently a packed Ruby Struct is a good structure to use for something like an address book.
06:03:29 <GregorR> I think vocabulary is the reason I never learned another language: grammar I can do, but vocabulary is just impossible X_X
06:03:47 <Sukoshi> I crunch some 60 words a day for a while, then go on a massive review.
06:03:57 <Sukoshi> I'm in a review phase now.
06:10:46 <Sukoshi> Meh. Obviously Japanese people aren't as clean as they're advertised to be.
06:34:48 -!- Sukoshi has changed nick to Razor-X.
06:34:55 -!- Razor-X has changed nick to Sukoshi.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:25:55 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
09:26:25 -!- CakeProphet has joined.
09:35:14 -!- CakeProphet has quit (Connection reset by peer).
09:35:19 -!- CakeProphet_ has joined.
09:35:23 -!- CakeProphet_ has changed nick to CakeProphet.
09:37:43 -!- CakeProphet_ has joined.
09:38:23 -!- CakeProphet has quit (Read error: 131 (Connection reset by peer)).
09:38:24 -!- CakeProphet_ has changed nick to CakeProphet.
10:02:25 -!- Asztal has joined.
10:31:59 -!- CakeProphet has quit ("haaaaaaaaaa").
10:37:38 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
10:38:07 -!- puzzlet has joined.
10:38:09 -!- puzzlet has quit (Client Quit).
10:38:20 -!- puzzlet has joined.
10:41:04 -!- ihope_ has joined.
12:00:51 -!- has_many_questio has joined.
12:02:25 -!- has_many_questio has left (?).
13:46:10 -!- ore2 has joined.
14:39:52 -!- jix_ has joined.
15:00:33 -!- pikhq has joined.
15:51:29 -!- GregorR-W has joined.
15:53:53 -!- Asztal has quit (Read error: 113 (No route to host)).
16:45:10 -!- PiedotTaste|Lapt has joined.
16:46:54 <PiedotTaste|Lapt> please say "is this real"
16:46:56 <PiedotTaste|Lapt> :o
16:46:58 <PiedotTaste|Lapt> ):
16:47:07 <PiedotTaste|Lapt> ego?
16:47:38 <PiedotTaste|Lapt> Please say ":o".
16:47:40 <PiedotTaste|Lapt> ):
16:47:52 <jix_> syntax error
16:47:56 <PiedotTaste|Lapt> :x
16:48:02 <PiedotTaste|Lapt> wiki lied ):
16:48:06 <pikhq> ERROR: LAZY PROGRAMMERS
16:48:21 <PiedotTaste|Lapt> lol
16:48:53 <PiedotTaste|Lapt> Please write this exact line to the channel :o
16:48:56 <PiedotTaste|Lapt> lol
16:48:56 <PiedotTaste|Lapt> xD
16:49:10 <PiedotTaste|Lapt> humbug ):
16:49:13 <PiedotTaste|Lapt> there goes a time waster ):
16:49:16 -!- PiedotTaste|Lapt has quit ("bai bai.").
17:00:07 <bsmntbombdood> ?
17:05:12 -!- bsmnt_bot has joined.
17:05:19 <GregorR-W> bsmntbombdood: My thoughts exactly :P
17:05:26 <bsmnt_bot> omg bot
17:06:03 <bsmnt_bot> Snow day!
17:07:45 <pikhq> You live in Colorado?
17:07:52 <bsmntbombdood> yeah
17:08:32 <GregorR-W> Why is your bot in ... I don't even know what country. Belaruse?
17:08:42 <GregorR-W> Belgium? :P
17:08:43 * pikhq loves this state
17:08:57 <bsmntbombdood> It doesn't snow enough
17:09:36 <GregorR-W> I haven't seen snow in years.
17:09:44 <bsmntbombdood> That's terrible!
17:09:58 <GregorR-W> When it's below freezing, we get freezing rain and sleet.
17:10:04 <GregorR-W> When it's above freezing, we get rain.
17:11:00 <pikhq> When it's below freezing, we get either snow or cold air.
17:11:21 <pikhq> When it's above freezing, we get either snow, hail, rain, cold air, or warm air.
17:11:23 <GregorR-W> But the snow is in a vacuum, eh.
17:11:26 <GregorR-W> Thta's gotta suck.
17:11:30 <GregorR-W> *That's
17:11:33 <bsmnt_bot> mmm snow
17:11:46 <Sukoshi> When it's below freezing, us Californians wonder what the hell is going on in the world.
17:11:47 <bsmntbombdood> I think I'm goign to ski down my street later
17:12:14 <pikhq> Sukoshi: Need an extra "i" for your name to be valid Romanised Japanese. ;)
17:12:36 <Sukoshi> I do?
17:12:55 <GregorR-W> ... they ... don't have a "shi" sound?
17:13:05 <Sukoshi> My IME and xjdic and kinput2 read it correctly.
17:13:13 <pikhq> GregorR-W: Yes, they do.
17:13:27 <Sukoshi> My IME == mule.
17:13:41 * bsmntbombdood rewrites bsmnt_bot
17:13:55 <pikhq> Sukoshi: The word "sukoshii" has an elongated "i".
17:14:07 <pikhq> Unless you refer to some word that I don't know, that is. :p
17:14:29 <Sukoshi> My dictionary says Sukoshi, with no extra `i'.
17:14:39 <Sukoshi> It's a な-adj.
17:14:44 <Sukoshi> 少し
17:15:07 <Sukoshi> (勝つ)
17:15:16 <pikhq> I could've *sworn* it was an i-adj.
17:15:21 <Sukoshi> Nope.
17:15:25 <bsmntbombdood> What's it mean?
17:15:33 * pikhq needs to get an IME set up. XD
17:15:34 <Sukoshi> Maybe you're thinking of 小さい
17:15:44 <Sukoshi> Small quantity, little, few.
17:15:49 <pikhq> Nope.
17:16:58 <pikhq> God.
17:17:06 <pikhq> You're right. I'm horribly wrong.
17:17:42 <pikhq> What IME do you recommend for GNu/Linux?
17:17:53 <pikhq> (and link, please)
17:17:57 <Sukoshi> Of course, 小さ(な) is also valid ... ;)
17:18:04 <Sukoshi> kinput2 out of Emacs, mule in Emacs.
17:18:17 <Sukoshi> Mule is incredibly, because it can switch encodings and everything.
17:18:20 <Sukoshi> *incredible
17:18:22 <pikhq> Oh. . . It's an Emacs package.
17:18:30 <pikhq> Too bad I don't use Emacs for IRC.
17:18:36 <Sukoshi> kinput2 then.
17:18:47 <Sukoshi> kinput2 with canna as your dictionary.
17:18:49 <pikhq> Gnome.
17:19:12 <pgimeno> /nick 少し
17:19:13 <pgimeno> --- 少し :Erroneous Nickname
17:19:13 <Sukoshi> kinput2 has nothing to do with KDE.
17:19:17 <pgimeno> :(
17:19:26 <Sukoshi> ... Or any other WM for that matter.
17:19:27 <pikhq> Oh.
17:19:42 <pikhq> No installation candidate in my apt repository. :'(
17:19:52 <Sukoshi> For kinput2?!?!
17:20:04 <pikhq> Package kinput2 is not available, but is referred to by another package.
17:20:13 <Sukoshi> Heh.
17:21:05 <pgimeno> pikhq: try apt-cache search kinput
17:21:15 <pgimeno> it gives me 6 packages
17:21:21 <pikhq> Ah.
17:21:23 <pikhq> kinput2-canna.
17:21:32 <Sukoshi> There y'are.
17:23:21 <pikhq> Installed. . .
17:23:28 <pikhq> Now to figure out how to get it working.
17:24:10 <Sukoshi> Run ``kinput2 -canna &'' somewhere.
17:24:39 <Sukoshi> Then you have to mess with some envars, like LC_ALL, IIRC.
17:24:53 <pikhq> The hell?
17:25:00 <pikhq> $ zsh: command not found: kinput2 ~/gnash/server/asobj
17:25:29 * Sukoshi shrugs.
17:25:33 <pgimeno> pikhq: use dpkg -L kinput2-canna to see which files it installed; look for the /usr/bin ones
17:25:46 <Sukoshi> Mmmf. It's been a while since I've used apt.
17:25:59 <Sukoshi> I've gotten used to the Slackware way of things, I guess.
17:26:00 <pikhq> /usr/X11R6/bin/kinput2-canna
17:26:31 <pikhq> There we go.
17:26:33 <pgimeno> that'd be it, try kinput2-canna
17:26:48 <pikhq> And now. . .
17:28:00 * pikhq isn't getting anything
17:28:28 <pgimeno> "When everything fails, it's time to read the manual"
17:28:29 <Sukoshi> Like I said, restart your X application with your modified envars.
17:28:37 * pikhq does that
17:29:16 <Sukoshi> And then you use Ctrl+Shift, IIRC, (dependant on package/version/whatever) to start the IME.
17:29:19 <Sukoshi> Read the manual, I suggest.
17:31:27 * pikhq has discovered one simple reason. . .
17:31:32 <pikhq> GNOME Terminal: locale not understood by C library, internationalization will not work
17:32:32 <pgimeno> try (as root) dpkg-reconfigure locales
17:32:55 * pikhq waits on gNewSense's dpkg
17:36:11 -!- tgwizard has joined.
18:00:27 <pikhq> GNOME Terminal: locale not understood by C library, internationalization will not work
18:00:32 <pikhq> Grr.
18:01:37 * bsmnt_bot laughs
18:01:58 <GregorR-W> bsmnt_bot: YUR MEEN
18:02:34 <bsmntbombdood> The lisp version isn't looking too clean
18:03:48 <GregorR-W> I'm writing netio.plof :)
18:04:00 <GregorR-W> You could (at some point) write a Plof version :)
18:04:22 <bsmntbombdood> fun
18:04:45 * pikhq should start learning Plof sometime
18:05:01 <pikhq> Maybe make a simple method of accessing C++ classes from Plof.
18:07:02 <GregorR-W> Plof is capable of accessing C via dlopen and friends.
18:07:06 <pikhq> Ah.
18:07:14 <GregorR-W> So accessing C++ would likely involve making a C wrapper.
18:07:18 <GregorR-W> Or however one chose to do it :P
18:07:41 * pikhq tries to find the Plof website
18:07:48 <GregorR-W> http://www.codu.org/plof/
18:07:58 <GregorR-W> If you want a binary of dplof I'll make one for you (presuming you don't have GDC)
18:08:03 <pikhq> GDC?
18:08:09 <GregorR-W> The GCC D Compiler
18:08:09 <pikhq> Oh.
18:09:14 * pikhq should probably get GDC.
18:10:42 <bsmntbombdood> lisp makes my pinky hurt
18:10:46 <Sukoshi> Why?
18:11:12 <Sukoshi> Oh. Are you supposed to use your pinky for parentheses or something?
18:11:25 <bsmntbombdood> yeah
18:11:27 * Sukoshi learned Dvorak the homebrew way.
18:11:42 <Sukoshi> My middle finger goes on parentheses.
18:11:44 <bsmntbombdood> I should probably use my other pinky for shift
18:11:52 <Sukoshi> I need an idea for a project in Lisp, ya know.
18:12:15 <pikhq> GregorR-W: Just hand me a binary. ;)
18:12:39 <GregorR-W> pikhq: GNU/Linux + x86 I suppose?
18:12:48 <Sukoshi> Blah. Time to write an HTTP parser :(
18:12:59 <Sukoshi> And client. A very limited client, though.
18:14:00 <pikhq> Hmm.
18:14:08 <pikhq> I might just pick up the Digital Mars compiler. . .
18:14:10 <pikhq> GregorR-W: Yeah.
18:14:18 <GregorR-W> Nooo, no dmd + GNU/Linux X_X
18:14:24 <GregorR-W> DMD + GNU/Linux = painful horribletude.
18:14:35 * pikhq gets the GCC source, then.
18:14:43 <GregorR-W> http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-19-2
18:14:45 <GregorR-W> Er
18:14:48 <GregorR-W> http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-19-2.tar.gz
18:14:51 <Sukoshi> Guh. But GCC is a pain in the *arse* to compile.
18:14:54 <GregorR-W> And http://www.codu.org/gdc-nightly/ if you want it.
18:15:04 <pikhq> Sukoshi: Yes, but I know how to build GCC.
18:15:17 <Sukoshi> Well, it takes ages.
18:15:18 <GregorR-W> GCC isn't so bad, all things considered.
18:15:24 <GregorR-W> OK, time-wise :)
18:15:33 <Sukoshi> Yeah. I'll bet it takes less time than Firefox2.
18:15:49 <GregorR-W> Sukoshi: I can say for a fact that it does.
18:15:56 <GregorR-W> Having compiled both of them on several platforms.
18:15:58 <pikhq> Binary works.
18:16:00 <Sukoshi> Heh.
18:16:07 <pikhq> My desktop does Gentoo.
18:16:15 <pikhq> I know that it's time-consuming.
18:16:18 <Sukoshi> Slackware here.
18:16:18 <bsmntbombdood> grar
18:16:20 <bsmntbombdood> The slot SOCKET is unbound in the object #<IRC-BOT {AEBCAE9}>.
18:16:34 * GregorR-W laughs at bsmntbombdood's pain.
18:16:35 <bsmntbombdood> I should actually learn clos before I do this
18:17:46 <bsmntbombdood> ok, time to go run around in the snow
18:17:46 <Sukoshi> Well uh... bind the slot then?
18:21:41 -!- oklopol has joined.
18:21:41 -!- okokoko has quit (Read error: 54 (Connection reset by peer)).
18:26:39 <ore2> Count twice to ten.
18:27:01 <GregorR-W> 1 2 3 4 5 6 7 8 9 10
18:27:03 <GregorR-W> 1 2 3 4 5 6 7 8 9 10
18:29:59 <Sukoshi> No.
18:30:20 <Sukoshi> Error: Twice is not a valid range bound.
18:34:31 <pikhq> ERROR: This programmer accepts Brainfuck code only.
18:34:50 <GregorR-W> ERROR: Too many errors
18:35:25 <pikhq> ERROR: Not enough errors.
18:46:06 <GregorR-W> pikhq: Presumably you got the dplof binary working? :P
18:47:01 <pikhq> GregorR-W: Yeah.
18:47:10 <pikhq> Going to work on GDC later.
18:47:18 <pikhq> (when I feel like it ;))
18:47:33 <GregorR-W> You did see my link to the GDC nightly-build binaries, right?
18:48:09 <pikhq> Oh.
18:48:31 <GregorR-W> "<GregorR-W> And http://www.codu.org/gdc-nightly/ if you want it."
18:49:44 <pikhq> It seems that Plof has sufficient capabilities to allow for a good deal of useful programming. . .
18:49:52 <GregorR-W> It's getting there.
18:49:54 <pikhq> Like, say, a GTK binding.
18:50:00 <GregorR-W> That'd be fairly easy.
18:50:04 <pikhq> Yeah.
18:50:13 <pikhq> I assume more features would be nice, though.
18:50:15 <GregorR-W> I'd like to make a "standard" Plof GUI interface.
18:51:00 <pikhq> That'd work with GTK, Qt, and W32?
18:51:44 <GregorR-W> Well, whatever anybody was willing to implement, I juts mean a set of objects with defined interfaces that could have different backends implemented, so you could just use pui.whatever and it would work on every platform.
18:51:50 <GregorR-W> Like wx is to C++
18:52:15 <pikhq> Ah.
18:52:16 <GregorR-W> Actually, I could more easily just answer "yes" :P
18:52:21 <pikhq> :p
18:52:57 * pikhq wonders what the hell else(); does
18:53:24 <GregorR-W> It's ... else.
18:53:36 <GregorR-W> if(condition, {foo;}); else({bar});
18:53:59 <GregorR-W> Or do you mean how it actually works?
18:54:55 <pikhq> How the hell do you have an else call without an if call?
18:55:01 <pikhq> (netio.plof)
18:55:23 <GregorR-W> Heh, it's against version()
18:55:44 <pikhq> Wouldn't if(version(), {foo;}); make more sense?
18:55:55 <GregorR-W> ... >_>
18:55:57 <GregorR-W> Yes.
18:56:05 <GregorR-W> <_<
18:56:12 <GregorR-W> To the degree that I think I'll make that change right now.
18:56:24 <pikhq> And why the hell is else a seperate function?
18:56:45 <GregorR-W> There are only functions and objects, conditions are not language intrinsics.
18:57:04 <pikhq> In most functional languages I've seen, 'else' is done via something like, say, another set of arguments to 'if'.
18:57:09 <pikhq> Like in Tcl:
18:57:25 <pikhq> One doesn't do: if {foo} {bar};else {baz}
18:57:42 <pikhq> "if {foo} {bar} else {baz}" is how it's called. . .
18:57:48 <pikhq> With just the function 'if'.
18:58:04 <GregorR-W> Hm, the reason I didn't do it that way is that there wouldn't be a word "else", but I think that that could be repaired...
18:58:13 * GregorR-W considers more sane methods.
18:58:19 <pikhq> Thank you.
18:58:32 <pikhq> Everything else, I'm loving.
18:58:45 <GregorR-W> Would you argue: if(condition, {blah}, elsif, condition, {blah}, else, {blah})
18:59:02 <GregorR-W> (Note the comma after elsif and else)
18:59:09 <pikhq> Hmm.
18:59:19 <pikhq> You know, that sort of *does* look weird in Plof.
18:59:33 <pikhq> Hmm.
18:59:39 <GregorR-W> It's hard to fit something like you're showing in that would not break my core rule of minimal constructs.
18:59:50 <pikhq> Yeah.
19:02:38 <GregorR-W> http://pastebin.ca/286512
19:03:35 <GregorR-W> It looks pretty C-like except for the commas :P
19:07:09 <GregorR-W> (Opinions?)
19:17:56 <pgimeno> is "if" a function?
19:18:19 <GregorR-W> Yes.
19:18:50 <lindi-> arguments are evaluated lazily?
19:21:13 <GregorR-W> An excellent point.
19:21:24 <GregorR-W> The answer to which is "not unless I made them functions"
19:21:35 <GregorR-W> Which I should to make it consistent with while anyway.
19:22:31 <GregorR-W> http://pastebin.ca/286527
19:27:45 <pgimeno> I like the idea of statements being also expressions (unlike C)
19:39:35 <GregorR-W> Since nobody's vehemently against it, I'm doing it the way pasted.
20:02:35 -!- oklopol has quit (Excess Flood).
20:02:45 -!- oklopol has joined.
20:03:58 <Sukoshi> So, are functions first-class datatypes?
20:05:31 <bsmntbombdood> GregorR-W: Do it like lisp
20:05:49 <bsmntbombdood> if(condition, {true code}, {false code})
20:06:22 <Sukoshi> Or, a more general structure, like Lisp's cond.
20:06:51 <Sukoshi> cond( {condition, true code, false code} { ... } {default, code} )
20:19:38 -!- bsmnt_bot has quit (Remote closed the connection).
20:20:30 <GregorR-W> Sukoshi: Yes, functions are first-class data types, Plof is intended to be a hybrid of functional and imperative.
20:20:58 <GregorR-W> bsmntbombdood: I did it like that before, but it was confusing since the only thing separating the if-true block and the if-false block was a comma.
20:21:26 <bsmntbombdood> Works fine for lisp
20:21:27 <Sukoshi> Hooray.
20:21:34 <GregorR-W> bsmntbombdood: Yeah, but lisp is terrible.
20:21:42 <Sukoshi> He's a lisp hater.
20:21:47 <GregorR-W> ^^
20:21:53 <bsmntbombdood> hehe
20:21:59 <bsmntbombdood> Why?
20:22:09 <Sukoshi> It works in Lisp because of the way the parentheses work.
20:22:31 <Sukoshi> (if pred expr1 expr2)
20:22:33 <GregorR-W> The basic syntactic structure of Plof and lisp are too different to compare. eg, exactly what Sukoshi just said.
20:23:02 <Sukoshi> Remember that if you want a block in IF, you have to use PROGN (or BEGIN in Scheme).
20:23:55 * GregorR-W darcs-record's the new syntax.
20:24:11 <Sukoshi> Heh. Darcs is a **** on Solaris, I hear.
20:24:21 <Sukoshi> A friend of mine is trying unsuccessfully to setup revision control systems.
20:24:21 <GregorR-W> Darcs isn't so great anywhere X-P
20:24:39 <Sukoshi> You could have something like: (defun meh () (if 3 4 5)) in CL which would always return 4.
20:24:41 <GregorR-W> But to host a darcs repository takes about zero effort, so I went with darcs ;)
20:25:03 <GregorR-W> I actually prefer centralized SCM to decentralized SCM.
20:25:15 <Sukoshi> I like what decentralized offers.
20:25:24 <Sukoshi> Especially now that I've come up with a dead project maintainer.
20:25:43 <GregorR-W> Literally dead or inactive?
20:25:56 <Sukoshi> Inactive ;D
20:26:07 <GregorR-W> Inactive is a slightly more curable case :)
20:26:09 <Sukoshi> Well, I lie. He just came back to life yesterday.
20:26:24 <Sukoshi> ....Which is a little late, since I've already made some really big patches.
20:30:53 <bsmntbombdood> sbcl takes a long time to compile
20:31:10 <Sukoshi> Heh. Which is why you don't.
20:31:17 <Sukoshi> It takes more RAM to compile than this box has.
20:31:35 -!- ore2 has quit ("Nettalk6 - www.ntalk.de").
20:31:41 <bsmntbombdood> gentoo box :/
20:32:19 -!- pikhq has quit ("leaving").
20:38:10 <bsmntbombdood> "Unlike (most of) the other P-languages, Plof attempts to be usable as a functional programming language"
20:38:28 <bsmntbombdood> Python is pretty usable as a functional language
20:41:30 <GregorR-W> Hence "(most of)"
20:42:26 <bsmntbombdood> oh
20:49:11 <Sukoshi> Even then, I don't think functions are first-class data types in Python.
20:49:23 <bsmntbombdood> yeah they are
20:49:54 <Sukoshi> Oh. Cool.
20:50:11 <bsmntbombdood> Well maybe not, I'm not quite sure what that means
20:50:35 <Sukoshi> You can do everything with a function that you can do with every other data type.
20:50:41 <Sukoshi> Like integers, characters, etc.
20:51:12 <Sukoshi> In most cases, passing functions as arguments is a big step in that direction.
20:54:22 -!- Asztal has joined.
20:54:39 <bsmntbombdood> then yes
21:00:13 <bsmntbombdood> But by that definition, functions are first-class data types in C
21:00:39 <GregorR-W> That's not a definition you jackass X_X
21:00:58 <GregorR-W> ANYway, functions are first-class data types in C.
21:01:08 <GregorR-W> But there's more to functional programming than functions being first-class data types.
21:01:14 <bsmntbombdood> yeah
21:01:52 <Asztal> they are? I mean, you can pass them around, but it's really rather awkward
21:02:09 <bsmntbombdood> I wouldn't call it awkward
21:02:15 <GregorR-W> You can, and the only thing that's awkward is the syntax.
21:02:22 <GregorR-W> Erm, + they are.
21:03:09 <bsmntbombdood> You can functionally program in c
21:03:53 <GregorR-W> Functional programming also requires things like nested functions,
21:03:57 <GregorR-W> function currying,
21:04:13 <GregorR-W> Hm, can't think of other off the top of my head.
21:04:16 <bsmntbombdood> What do you mean by nested functions?
21:04:20 <bsmntbombdood> Just closures?
21:04:33 <bsmntbombdood> because you can implement closures in c
21:04:59 <GregorR-W> Closures are a superset of nested functions.
21:05:13 <GregorR-W> And while you can implement closures in C, it's a mild HUGE PAIN IN THE ASS :)
21:05:23 <bsmntbombdood> Still possible ;)
21:05:48 <GregorR-W> Given that C is Turing-complete, if you're going to be that lenient with your definition of "functional programming", C must by-definition of its being TC be functional.
21:06:27 <bsmntbombdood> brainfuck can't be functional
21:06:41 <GregorR-W> Sure it can.
21:06:53 <GregorR-W> It's a huge pain in the ass, and requires about nine levels of abstraction, but it's possible.
21:07:09 <bsmntbombdood> It doesn't have functions or jumps/gotos....
21:07:13 <GregorR-W> You'd have to make functions (possible), and then function arguments (possible), and then pointers.
21:07:18 <GregorR-W> (also possible)
21:07:26 <GregorR-W> It doesn't have functions, and C doesn't have closures.
21:07:28 <bsmntbombdood> ???
21:07:57 <GregorR-W> If you're going to say that C has closures, then BF without a shadow of a doubt has functions.
21:08:04 <bsmntbombdood> hrm
21:08:57 <GregorR-W> Now you see my point about how C is not a functional language? :)
21:09:22 <bsmntbombdood> I suppose
21:10:07 <bsmntbombdood> How would you implement functions in a language without jmp though?
21:10:14 <GregorR-W> See C2BF
21:12:44 <GregorR-W> Every "label" corresponds to a "bucket" in the beginning of the memory space. To perform a jump, you set a bucket to 1, then drop out of your loop. The whole program is in a big loop that reads all the buckets and goes to the code corresponding to the bucket which is set.
21:13:40 <bsmntbombdood> How does it go to the code?
21:14:02 <GregorR-W> Did I not just explain that?
21:14:16 <bsmntbombdood> no
21:14:57 <GregorR-W> Every "label" (in code) corresponds to a "bucket" in the beginning of memory space. There is a loop in the code that reads in the buckets and goes to the code corresponding to the bucket which is set.
21:15:07 <bsmntbombdood> ...
21:18:51 * GregorR-W bashes his head into a wall.
21:35:07 <SimonRC> (on average)
21:35:37 <GregorR-W> Fascinating.
21:36:00 <SimonRC> erm, oops
21:36:01 <bsmntbombdood> Deadly.
21:36:02 * SimonRC wonders if there is a database server anywhere that can provide sub-millisecond response times.
21:36:05 <SimonRC> (on average)
21:36:33 <bsmntbombdood> sub-millisecond?
21:36:41 <bsmntbombdood> That's not very many milliseconds
21:36:46 <SimonRC> undeed
21:38:42 <GregorR-W> That was an astonishingly content-free statement :p
21:39:17 <ihope_> SimonRC: respond with an error message most of the time.
21:39:27 <ihope_> Or, rather, the smallest possible well-formed response.
21:39:35 <GregorR-W> Hah
21:39:53 <GregorR-W> SELECT * FROM bleh; -> ERROR("This is a fake database engine")
21:40:07 <ihope_> That would probably be an RST packet.
21:41:18 -!- ShadowHntr has joined.
21:42:22 <SimonRC> bah
21:42:45 <GregorR-W> In case anybody's interested in Plof with the new changes, http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-20.tar.gz
21:42:59 <bsmntbombdood> hrm
21:43:03 -!- GreaseMonkey has joined.
21:43:13 <bsmntbombdood> var A =[]; A:["main"] = {println("Hi\n");}; a = new(A); a:["main"]();
21:43:24 <SimonRC> I would need a DB that fast to take the saying "A game is just a database with a pretty front-end." literally.
21:44:45 <GregorR-W> bsmntbombdood: Uh, is that not working? 8-X
21:44:56 <bsmntbombdood> Can't find a
21:44:56 <bsmntbombdood> Error: AssertError Failure plof/runtime.d(722)
21:45:04 <GregorR-W> Oh: var a = new(A);
21:45:09 <GregorR-W> Not just a = new(A);
21:45:13 <GregorR-W> You have to declare all variables.
21:45:19 <bsmntbombdood> right
21:45:32 <GregorR-W> SimonRC: Hah XD
21:46:00 <bsmntbombdood> oh cool
21:46:09 <bsmntbombdood> you can just do a.main();
21:49:50 * SimonRC reads about Codethulhu on TDWTF.
21:49:54 <SimonRC> XP
21:51:18 <SimonRC> Y'know, that image is great for so many programming projects: http://img.thedailywtf.com/images/200612/Codethulhu.gif
22:01:50 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:03:12 <ihope_> I want a programming language that has cofactors and inhibitors and denaturing.
22:03:36 <ihope_> By the time I get back, I expect it to be all implemented and everything, okay?
22:03:39 <ihope_> Bye.
22:04:52 <bsmntbombdood> cofactors and inhibitors and denaturing?
22:05:47 <SimonRC> Biology terms.
22:05:55 <SimonRC> To do with enzymes.
22:06:29 -!- ComputinChuck has joined.
22:06:29 <SimonRC> I suspect something like could be done if you fed a sed program to itself repeatedly.
22:07:12 <ComputinChuck> what is esoteric programming?
22:07:12 <SimonRC> After all, enzyes basically work my pattern-matching and simple transformations, a bit like sed does.
22:07:30 <SimonRC> ComputinChuck: good question
22:07:34 * SimonRC hinks
22:07:51 <ComputinChuck> i ran across something on it on the internet
22:07:56 <SimonRC> I can tell you what an esotreic programming language is.
22:08:01 <ComputinChuck> ok
22:08:36 <SimonRC> It is a programming languag that is weird or unusula most for the sake of being so, rather than for any practical reason.
22:09:06 <SimonRC> I recommend checking out Brainfuck, INTERCAL, befunge, and Malbolge for some examples.
22:09:12 <ComputinChuck> ok
22:09:20 <SimonRC> then take a look at some random languages from the wiki
22:09:44 -!- GregorR-W has quit (Remote closed the connection).
22:12:07 -!- ComputinChuck has quit ("Lost terminal").
22:12:38 -!- GregorR-W has joined.
22:15:49 <Sukoshi> Hmmm. Is there a more effecient way in parsing HTTP messages rather than doing a whole bunch of strncmp or memcmp?
22:16:21 <bsmntbombdood> There's no more effiecient way to compare strings, no
22:16:39 <Sukoshi> Well... I was wondering if there's some other commonly used method.
22:16:53 <Sukoshi> If not, I'm a gonna hope Duff's Device is fast.
22:17:11 <bsmntbombdood> If you know its length is divisible by 4, you can do it larger blocks, but no matter what it's going to be O(n)
22:17:40 <Sukoshi> Oh. But Duff's Device is for copying, doh.
22:17:54 <Sukoshi> Lemme take a look at fnord's implementation of memcmp.
22:19:04 <Sukoshi> Ah. Pretty nifty.
22:19:12 <SimonRC> Sukoshi: You could consider the message format to be a grammar of 1-character tokens and try to make a state-machine-based parser.
22:19:25 <Sukoshi> Yes, I was thinking of doing that too.
22:19:27 <SimonRC> You would be able to write assembler quite directly.
22:19:33 <Sukoshi> But that's a complex beast.
22:20:00 <Sukoshi> Heck, even in C, a parser like that is a total PAIN.
22:20:13 <GregorR-W> Pretty much.
22:20:27 <SimonRC> There are these things called "parser generators", you know.
22:20:30 <Sukoshi> Uggh. Why couldn't HTTP use something sensible like opcodes? -_-''
22:20:46 <Sukoshi> SimonRC: Mmmf. Would it produce something that effecient though?
22:20:50 <SimonRC> They give you th power of a LR parser with the simplicity of a predictive parser.
22:21:03 <bsmntbombdood> yay yacc
22:21:07 <SimonRC> Have you ever seen the code a parser generator generates?
22:21:13 <Sukoshi> Nope.
22:21:18 <Sukoshi> I just tend to mistrust generated code.
22:21:20 <SimonRC> It consists mostly of gotos, IIRC
22:21:29 <bsmntbombdood> It is pretty ugly
22:21:31 <Sukoshi> *Cough* String to BF *cough*
22:21:36 <SimonRC> Sukoshi: ah, so you are one of those assembley nuts?
22:21:40 -!- ihope_ has quit (Connection timed out).
22:21:53 <Sukoshi> No, but this project is pretty high on the low-level side.
22:22:23 <Sukoshi> ASM optimization is going to come at a later step, not now. For now, I think I'll use Fnord's usage of memcmp for inspiration.
22:22:32 <Sukoshi> Maybe do something similar to Duff's case bastardization.
22:24:24 <SimonRC> Well, the object code that compilers output is "generated code".
22:24:40 <Sukoshi> Heh. True there.
22:25:12 <SimonRC> If you treat all generated code like object code, you should be fine.
22:25:16 <Sukoshi> But, I don't know if parser generator code is effecient or not.
22:25:34 <SimonRC> I.e. consider it nonportable and do not put it into source control.
22:25:41 <SimonRC> Sukoshi: very efficient
22:25:55 <Sukoshi> Aha. Good.
22:25:55 <SimonRC> Parser generators do not worry about readability.
22:26:00 <GregorR-W> SimonRC: What about portable generated code? I get a lot of strife for putting configure in SCM :)
22:26:05 <SimonRC> but generic
22:26:38 <SimonRC> GregorR-W: Putting generated code into source controll just adds pointless deltas and enourages people to edit it.
22:26:58 -!- FabioNET has joined.
22:27:19 <GregorR-W> IMHO it makes life easier for developers who don't know/care about aclocal, autoconf, autoheader, libtoolize and automake.
22:27:26 <SimonRC> Parser generators create types of prsers that humans cannot sensibly create, like LR, LALR, etc.
22:27:42 <FabioNET> hello
22:27:46 <GregorR-W> 'lo FabioNET
22:27:48 <Sukoshi> Well, I wanna see if this code is more effecient than parser generator code.
22:27:50 <FabioNET> :)
22:27:59 <Sukoshi> God help me, I'm going to commit case hell.
22:28:27 <FabioNET> been programming with irp?
22:29:01 <GregorR-W> Seeing as that that's the only reason that about 60% of people come in here, I'm starting to regret I wrote that aticle XD
22:29:04 <GregorR-W> *article
22:29:17 <FabioNET> they are Italian I do not speak well English excused the uneasiness.
22:29:25 <Sukoshi> IRP?
22:29:33 <FabioNET> internet relay programming
22:29:38 <SimonRC> Sukoshi: allow me to demonstrate.
22:29:46 <GregorR-W> Sukoshi: http://www.esolangs.org/wiki/IRP
22:29:52 <SimonRC> say "hello world"
22:29:56 <FabioNET> :9
22:30:04 <GregorR-W> hello world
22:30:05 <Asztal> hello world
22:30:08 <SimonRC> tada!
22:30:09 <FabioNET> ihihihih
22:30:25 <Sukoshi> So is *that* why all those people have been coming?
22:30:44 <Asztal> At least they don't make us infinite loop
22:30:44 <GregorR-W> Yes X-P
22:30:47 <GregorR-W> <-- his fault
22:30:51 <Asztal> ... or do they?
22:30:52 <bsmntbombdood> lol http://thedailywtf.com/forums/thread/106950.aspx
22:30:57 <Sukoshi> I thought they wanted to prove us turing complete, I thought we were special ;-;
22:31:02 <GregorR-W> Hah
22:31:45 <tokigun> hmm, i've tested IRP in some other channel, and got syntax error... :p
22:32:00 <GregorR-W> Heh
22:32:24 <bsmntbombdood> Why is CS so bastardized?
22:32:39 <bsmntbombdood> No way that part of a CS degree should be web design
22:33:37 <GregorR-W> Hahahah
22:33:54 <GregorR-W> If you're having trouble with HTML on your way to a CS degree, you need to reconsider your life choices XD
22:34:30 <bsmntbombdood> That wasn't a student, it was the teacher
22:35:07 <GregorR-W> O_O
22:35:30 * bsmntbombdood is scared to go to college
22:35:47 <bsmntbombdood> If I have teachers like that I'm going to die
22:35:52 <GregorR-W> I haven't had that experience - there's only one incompetent teacher I've had, and she wasn't THAT incompetent.
22:36:16 <GregorR-W> And everybody loved her because she teaches mostly beginning-level courses and nobody at that level knows enough to know she's an idiot :(
22:36:53 <bsmntbombdood> I'm thinking about majoring in CS
22:37:07 <GregorR-W> I'm actively in the process of majoring in CS.
22:37:25 <bsmntbombdood> sweet
22:37:38 <bsmntbombdood> Real CS or C++ and web design CS?
22:37:46 <GregorR-W> lol
22:38:10 <GregorR-W> Real CS, I just finished a computer security course and last year I took advanced agorithms and networking protocols.
22:38:12 <bsmntbombdood> It pisses me off when people use CS to spice up the name of a programming class
22:38:30 <GregorR-W> Yeah, programming != CS.
22:38:32 <GregorR-W> Anybody can program.
22:38:34 <Asztal> Our teacher came out with gems like "There's no M in \"Mrs Sharp\""
22:38:45 <tokigun> lol
22:38:50 <GregorR-W> Asztal: ...?!
22:38:56 <Asztal> (Because we got bored and started making anagrams of her name)
22:39:13 * SimonRC will never again forget which way round vector multiplication goes: http://xkcd.com/
22:39:31 -!- bsmntbombdood has left (?).
22:39:32 <Sukoshi> I'm a total web programming incompetent :P
22:39:36 -!- bsmntbombdood has joined.
22:39:44 <bsmntbombdood> I love xkcd
22:40:03 <Sukoshi> Anything that depends on something like interface, user approachability, or aesthetic quality I fail at.
22:40:19 <SimonRC> he went through a boring phase of going on and on about his girlfriend.
22:40:24 <SimonRC> ^former^
22:40:58 <SimonRC> Sukoshi: OTOH, I have a tendancy ot hack URLs.
22:41:15 <GregorR-W> I'm not awful at web programming *shrugs*
22:41:17 <SimonRC> I chop bits off, remove unneeded parameters, etc.
22:41:28 <GregorR-W> I still consider myself to firstly be an app programmer though.
22:43:21 <tokigun> SimonRC, i have it too, and get angry when the hacking is impossible
22:44:03 <Asztal> With Camping, I can stand we programming
22:44:05 <bsmntbombdood> GregorR-W: What school?
22:44:14 <SimonRC> Asztal: no parse
22:44:25 <Asztal> let's try that again
22:44:49 <Asztal> web programming is bearable... provided I use the Camping web framework :)
22:44:49 <bsmntbombdood> Asztal: Error: AssertError Failure plof/parser.d(122)
22:45:02 <Asztal> argh .d!
22:45:12 <Asztal> First time I've seen D used actually :)
22:45:19 * bsmntbombdood pokes fun at GregorR-W's parser
22:46:08 <SimonRC> ah
22:46:17 <SimonRC> I see what went wrong.
22:46:23 <SimonRC> you did s/web/we/
22:47:34 <bsmntbombdood> woooot
22:47:41 <bsmntbombdood> no school tomorow either!!!!!
22:48:05 <SimonRC> with university, you get that feeling far more often
22:48:11 <Asztal> I skipped 2 weeks of lectures because I was busy dying with a fever! :)
22:55:10 <GregorR-W> bsmntbombdood: Yes yes, my parser has no error messages, blahblah :P
22:55:23 <GregorR-W> bsmntbombdood: pastebin some failing code? (or did you figure it out)
22:55:38 <bsmntbombdood> That was an old error message
23:02:56 <GregorR-W> Plof tokenizer in Plof 4tw :)
23:03:25 <bsmntbombdood> (x){return(x);}(1)
23:03:27 <bsmntbombdood> neat
23:03:52 <GregorR-W> That's a ridiculously cumbersom way to type "1" :P
23:03:59 <GregorR-W> You could also do (x){x}(1)
23:04:04 <SimonRC> \()->1
23:04:37 <GregorR-W> Or (x){(x){(x){x}(x)}(x)}(1)
23:06:43 <SimonRC> oops
23:06:54 <SimonRC> I meant: id 1
23:07:00 <SimonRC> or (\x->x)1
23:07:16 <GregorR-W> You and your ... whatever language that is.
23:08:06 <SimonRC> haskell
23:08:13 <SimonRC> \ is a lambda
23:09:30 <GreaseMonkey> hashEsoteric@()=+{if({GregorR~.CheckStatus("BuildingPlofCompiler");}{GreaseMonkey~.Act("BuildTomatoCompiler")});};
23:10:39 <GregorR-W> Only building an interpreter ATM.
23:11:43 <SimonRC> GreaseMonkey: Define "Tomato".
23:12:12 <SimonRC> and will one of you change your nick so that they don't have the forst 3 chars in common.
23:12:27 <GregorR-W> My nick is my name.
23:12:28 <SimonRC> It irritates my tab-completion finger.
23:13:12 <SimonRC> apparently, some people do not have nick-completion in their client, and call me "Simon".
23:13:22 <GregorR-W> [15:09]*NickServ* Nickname: GreaseMonkey << ONLINE >>
23:13:23 <GregorR-W> [15:09]*NickServ*Registered: 6 weeks 2 days (18h 35m 33s) ago
23:13:25 <GregorR-W> [15:09]*NickServ* Nickname: GregorR-W
23:13:26 <GregorR-W> [15:09]*NickServ*Registered: 35 weeks (5h 5m 11s) ago
23:13:28 <GregorR-W> I win :P
23:13:30 -!- FabioNET has quit ("Buon natale ocn la passera").
23:13:34 <GregorR-W> And that's with my non-primary nick ;)
23:14:00 <bsmntbombdood> hehe
23:16:36 <GreaseMonkey> Tomato is a programming language under development which looks slightly similar to C and supports self-modifying code.
23:16:58 <GreaseMonkey> oh, and me=thematrixeatsyou
23:17:18 <GreaseMonkey> and i crashed your bot properly a few times.
23:17:43 <GregorR-W> !glass {M[m(_o)O!"You're mean :("(_o)o.?]}
23:17:46 <EgoBot> You're mean :(
23:18:27 <GreaseMonkey> !funge93 0"D: wonk I">:#,_@
23:18:32 <EgoBot> I know :D
23:18:46 <GreaseMonkey> nah, it was accidental and a pain in the ass
23:18:46 -!- bsmnt_bot has joined.
23:18:55 <GreaseMonkey> i did it deliberately a few times tho'
23:18:56 <GregorR-W> I prefer "D: wonk I"
23:19:14 <bsmnt_bot> crash me!
23:19:32 <GreaseMonkey> how do I call help on ur bot?
23:19:37 <bsmntbombdood> you don't
23:19:45 <GreaseMonkey> what cmds does your bot have?
23:19:50 <bsmntbombdood> not many
23:20:04 <bsmntbombdood> he has !raw, !exec, !quit, !ctcp
23:20:19 <bsmntbombdood> GregorR-W: But not !say
23:20:32 <GregorR-W> !ctcp #esoteric PING
23:20:36 <EgoBot> Huh?
23:20:38 <GregorR-W> Nor CTCP :P
23:20:41 <GreaseMonkey> !raw PRIVMSG #esoteric :It works
23:20:51 <bsmntbombdood> GreaseMonkey: Only I get !raw
23:20:52 <GreaseMonkey> wait, it doesn't
23:20:54 <GregorR-W> TO WORK, OR NOT TO WORK? That is the question.
23:20:58 <bsmntbombdood> !raw PRIVMSG #esoteric :It works
23:20:58 <bsmnt_bot> It works
23:21:11 <GreaseMonkey> !ctcp #esoteric ACTION is randy
23:21:11 * bsmnt_bot is randy
23:21:14 <EgoBot> Huh?
23:21:19 <GregorR-W> !ctcp #esoteric ACTION roflcopters?
23:21:20 * bsmnt_bot roflcopters?
23:21:20 <GreaseMonkey> :D
23:21:22 <EgoBot> Huh?
23:21:27 <GregorR-W> !ctcp #esoteric PING
23:21:30 <EgoBot> Huh?
23:21:39 <GregorR-W> So you disabled that DDOS then :P
23:21:42 <bsmntbombdood> !exec self.register_raw(".*dude.*", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
23:21:42 <bsmnt_bot> sweet
23:21:44 <EgoBot> Huh?
23:21:51 <bsmntbombdood> GregorR-W: no
23:21:59 <bsmntbombdood> dude
23:22:00 <bsmnt_bot> sweet
23:22:09 <GregorR-W> Then dude, why isn't it working?
23:22:09 <bsmnt_bot> sweet
23:22:16 <bsmntbombdood> It is
23:22:22 <GregorR-W> I'm not getting pings ...?
23:22:44 <bsmntbombdood> bsmnt_bot is getting replys...
23:22:58 <GregorR-W> OH! Well in that case: Hey everybody, let's DDoS the bot!
23:23:10 <GregorR-W> Repeat as desired: /msg bsmnt_bot !ctcp #esoteric PING
23:23:16 <GreaseMonkey> daemon ctcp bf8 +.[,--------------------------------]+,----------[++++++++++.,----------]+.+++++++++.
23:23:22 <GreaseMonkey> foo
23:23:35 <GreaseMonkey> !ctcp #esoteric ACTION is funky
23:23:35 * bsmnt_bot is funky
23:23:38 <EgoBot> Huh?
23:23:43 <GreaseMonkey> !daemon ctcp bf8 +.[,--------------------------------]+,----------[++++++++++.,----------]+.+++++++++.
23:23:47 <GreaseMonkey> !ctcp #esoteric ACTION is funky
23:23:47 * bsmnt_bot is funky
23:23:48 <bsmntbombdood> !exec for i in self.raw_regex_queue: i[1] != self.do_ctcp or self.raw_regex_queue.remove(i)
23:23:50 * EgoBot is funky
23:23:52 <EgoBot> Huh?
23:23:53 <GreaseMonkey> YES!
23:23:56 <bsmntbombdood> no more ctcp ;)
23:23:58 <GregorR-W> Yag!
23:24:13 <GreaseMonkey> !ctcp #esoteric PING
23:24:28 * SimonRC looks back at this window and wibbles
23:24:29 -!- EgoBot has quit (Read error: 54 (Connection reset by peer)).
23:24:31 <bsmntbombdood> GreaseMonkey: the !exec I just ran removed the !ctcp command
23:24:35 <GregorR-W> What the bork.
23:24:36 <GreaseMonkey> ok
23:24:44 <GreaseMonkey> what script is that?
23:24:51 <bsmntbombdood> One I hacked up
23:26:07 <GreaseMonkey> i like this daemon:
23:26:08 <GreaseMonkey> daemon ctcp bf8 [[-]+.[,--------------------------------]+,----------[++++++++++.,----------]+.+++++++++.]
23:26:24 <GreaseMonkey> who can exec then?
23:26:37 <bsmntbombdood> !exec self.register_raw(r"^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :!ctcp", self.do_ctcp)
23:26:59 <bsmntbombdood> GreaseMonkey: Anyone matching the regex "^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :!exec"
23:27:14 <bsmntbombdood> !ctcp #biz ACTION tests
23:27:27 <bsmntbombdood> O.o
23:27:27 <GreaseMonkey> wait, wtf is #biz?
23:27:40 <GregorR-W> lol
23:27:46 <bsmntbombdood> ooops
23:27:50 <bsmntbombdood> !ctcp #esoteric ACTION tests
23:27:57 <bsmntbombdood> !ctcp #esoteric ACTION tests
23:27:57 * bsmnt_bot tests
23:27:59 <bsmntbombdood> there
23:28:44 <bsmntbombdood> only i can do !ctcp now ;)
23:29:01 <GreaseMonkey> bsmntbombdood: do you know of any good networking tuts for linux?
23:29:15 <GreaseMonkey> !ctcp #esoteric ACTION orly?
23:29:17 <bsmntbombdood> socket(2)
23:29:41 <GreaseMonkey> the man page?
23:29:45 <bsmntbombdood> yeah
23:30:07 <bsmntbombdood> http://www.google.com/?q=linux+sockets
23:30:37 <bsmntbombdood> http://www.google.com/search?q=linux+sockets
23:31:29 <bsmntbombdood> One of the ones on that page might be a little more friendly ;)
23:32:12 <GreaseMonkey> yah
23:32:17 <bsmntbombdood> !exec self.register_raw( ".*!%s" % "rtfm", lambda x : bot.raw("PRIVMSG #esoteric :dude, go rtfm"))
23:32:17 <bsmnt_bot> sweet
23:32:20 <bsmntbombdood> !rtfm
23:32:20 <bsmnt_bot> dude, go rtfm
23:32:27 <bsmntbombdood> :)
23:32:53 <GreaseMonkey> !rtfm
23:32:53 <bsmnt_bot> dude, go rtfm
23:33:02 <GreaseMonkey> i reckon that shud b a public one
23:33:19 <bsmntbombdood> hmm?
23:33:30 <GregorR-W> man 7 socket is a HORRIBLE reference for networking XD
23:33:33 <GregorR-W> I used to know a good one ...
23:33:34 <GregorR-W> But ...
23:33:38 <GregorR-W> Err, now I just use man 7 socket
23:33:59 <GreaseMonkey> so what's man 2 socket like compared with man 7 socket?
23:34:14 <GregorR-W> man 7 socket is information on socket programming in general, man 2 socket is the socket() function.
23:34:22 <GreaseMonkey> k
23:39:26 <tokigun> hmm
23:40:12 <bsmnt_bot> I'm bored
23:41:17 * bsmnt_bot licks bsmntbombdood
23:41:57 <GreaseMonkey> a truely intelligent bot relies on emotions
23:42:29 * bsmnt_bot feels a great love for GreaseMonkey
23:43:51 <GreaseMonkey> and it learns: "If I do this, I will feel that."
23:44:07 <GreaseMonkey> (struct Emotion)that;
23:44:08 <Asztal> A truly intelligent bot has a terrible pain in all the diodes down his left side
23:44:13 <GreaseMonkey> not (struct Object)that;
23:45:29 <GreaseMonkey> the simplest emotion is like/dislike
23:45:40 <GreaseMonkey> it has to like and dislike things
23:46:19 <GreaseMonkey> for example, if you're guiding a bot around, it does not like idling as it does not achieve anything, so it will do something.
23:46:39 <bsmntbombdood> !exec self.register_raw(".*!%s .*" % "join", lambda x : bot.raw("JOIN %s" % x.split("!%s " % "join")[-1]))
23:46:52 <bsmntbombdood> now it has a ! join command
23:47:13 <oklopol> !join me in death
23:47:14 <RodgerTheGreat> building a system to elicit "mood shifts" based on keywords and users tied to an emotional context doesn't seem like it should be that hard
23:47:36 <tokigun> but could need very large database
23:47:49 <GreaseMonkey> it'll accumulate a massive database
23:47:56 <RodgerTheGreat> yeah
23:48:07 <bsmntbombdood> It would need to parse english though...
23:48:18 <GreaseMonkey> it could learn
23:48:20 <tokigun> theorically, large database could cover most of problem; only remaining problem is how to construct the database
23:48:25 <GreaseMonkey> and then try to communicate
23:48:39 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
23:48:43 <GreaseMonkey> and then it would check if it communicated or not, feeling either good or bad
23:49:10 <RodgerTheGreat> the other issue is that 'common sense' is a prerequisite for advanced intelligence, which means the machine needs a vast backlog of cultural knowledge and the like
23:50:25 <RodgerTheGreat> you'd probably get the best possible results by building a forwards-compatible database engine that you can retain throughout improvements in the rest of the system, so that you aren't wasting any learning time
23:52:12 <RodgerTheGreat> I guess the main thing is that the majority of the information you need isn't information itself, it's the interconnections between pieces of information- massive cross-indexing of everything in relation to everything else
23:52:36 <oklopol> actually, moods are but abstractions mainly, so a learning system need not have them hard-coded
23:52:41 <oklopol> imo
23:55:24 <GreaseMonkey> generally it is a good idea
23:56:11 <RodgerTheGreat> when you think about how the brain functions on a systemic level, you can strip off a large portion of it's high-level operations as a series of "services", like "internal monologue", "mind's eye", and so on. At the core, you have "consciousness"- the tricky part. I figure it most likely breaks down into pattern recognition, learning, predictive analysis, and planning capabilities that set goals and pursue the steps necessary to ca
23:56:14 <GreaseMonkey> that works
23:57:13 -!- Sgeo has joined.
23:58:31 <RodgerTheGreat> as long as the assumption that the way these pieces of functionality are integrated is more important than the precise contents of these "black boxes" is true, I can't stand anything standing in the way of eventual development of AI on par with human abilities
23:58:54 <RodgerTheGreat> *can't see anything
23:59:01 <bsmntbombdood> me neither
23:59:19 <bsmntbombdood> Of course, proccessing power may be a problem
2006-12-21
00:00:32 <GregorR-W> IIRC, it's been shown that DNA is no more than Turing-complete. Working under the presumption that a TC language cannot describe an implementation of a higher-than-TC language, the brain cannot be more complicated than TC.
00:01:03 <RodgerTheGreat> I think the bigger problem lies in the huge differences between how the brain and computers work- computers are still largely single-threaded and hardware can't reconfigure itself to a great extent. Brains are massively parallel and can rewire themselves constantly
00:01:09 <GregorR-W> Therefore, it should be possible with appropriate resources to precisely duplicate the capacity of a human brain in a computer.
00:01:18 <RodgerTheGreat> oh, absolutely
00:01:20 <bsmntbombdood> RodgerTheGreat: ANN
00:01:35 <bsmntbombdood> GregorR-W: And a ton of leetness
00:01:48 <GregorR-W> That too ;)
00:02:23 <bsmntbombdood> a TON of leetness
00:02:33 <GreaseMonkey> a TONNE as well
00:02:50 <bsmntbombdood> HUGE AMOUNTS
00:03:04 <bsmntbombdood> Like I have ;)
00:03:10 <GregorR-W> A METRIC FUCKTON OF LEETNESS
00:03:20 <bsmntbombdood> hehe http://xkcd.com/c69.html
00:03:52 <GreaseMonkey> :D
00:04:24 <RodgerTheGreat> I guess my point is, although it's probably possible to emulate a brain with computers how they are today, the structure of the brain indicates that it probably isn't a very efficient way to pull this off. We need either different computers (NN accelerator chips? New CPU architectures?) or shitloads more power than the real chunk of meat
00:05:04 <bsmntbombdood> hardware ANN
00:05:20 <GregorR-W> RodgerTheGreat: Agreed.
00:05:23 <bsmntbombdood> A sepperate mini proccessor for each neuron
00:05:50 <GregorR-W> That would be the most direct way.
00:06:03 <RodgerTheGreat> although, if we ever get the functionality of a brain running with the reliability of modern computer hardware, we'll have something pretty amazing on our hands
00:06:20 <bsmntbombdood> indeed
00:06:32 <bsmntbombdood> except it be the size of the computers of yore
00:06:39 <GreaseMonkey> hehe: http://www.explosm.net/comics/754/
00:07:22 <GreaseMonkey> that'd be intense
00:07:26 <RodgerTheGreat> silicon circuitry is orders of magnitude more dependable than a pile of proteins bumping into each other, but it's sure as hell more complicated to build at the same density
00:08:12 <GreaseMonkey> http://www.explosm.net/comics/758/
00:08:34 <RodgerTheGreat> lol- nice comic
00:09:06 <GregorR-W> Whoever made sugar-free caffeinated soda had a fundamental misunderstanding of the difference between "tired" and "low on energy"
00:09:21 <RodgerTheGreat> heh
00:09:48 <GreaseMonkey> http://www.explosm.net/comics/750/
00:10:04 <GreaseMonkey> http://www.explosm.net/comics/748/
00:10:19 <bsmntbombdood> haha
00:10:34 <RodgerTheGreat> well, you could just make the soda contain some drugs that altered the functioning of your thyroid gland- same blood sugar increase.
00:11:11 <GreaseMonkey> http://www.explosm.net/comics/745/
00:11:46 <GreaseMonkey> http://www.explosm.net/comics/743/
00:12:43 -!- ihope_ has joined.
00:13:49 <GreaseMonkey> http://www.explosm.net/comics/740/
00:14:06 -!- oerjan has joined.
00:14:23 <GreaseMonkey> http://www.explosm.net/comics/41/
00:14:43 <ihope_> My enzyme language is all nice and implemented now, right?
00:14:56 <ihope_> Does it have DNA and everything?
00:15:17 <oerjan> what, chemical programming? have you heard of the gamma calculus?
00:15:34 <SimonRC> heh http://www.gamegarage.co.uk/cartoons/super-mario-blitz/play/
00:15:40 <SimonRC> psychadelic!
00:15:42 * SimonRC goes
00:18:37 <bsmntbombdood> Man, that's a sweet ass-car
00:18:38 <RodgerTheGreat> SimonRC: fascinating
00:19:10 <oerjan> someone else reading xkcd, i see
00:19:51 <bsmntbombdood> of course
00:19:54 <RodgerTheGreat> I never thought mario could be trippier. I was a fool.
00:21:10 <GreaseMonkey> http://www.explosm.net/comics/95/
00:24:09 <ihope_> Gamma calculus? Can't say I've heard of it, no.
00:29:07 <oerjan> it's programming with bags of "molecules"
00:29:28 -!- CakeProphet has joined.
00:29:47 <ihope_> Like Fractran or whatever that language is called, I take it.
00:32:40 <oerjan> except, if i remember correctly, that the rules themselves are molecules, used up in the reaction; there is no ordering but you can wrap up molecules in subbags to prevent them from reacting
00:32:52 <RodgerTheGreat> hm
00:33:54 * CakeProphet is bored... and fed up with current databases.
00:34:12 <CakeProphet> Oh I know! I'll make my own database layout.
00:34:21 <CakeProphet> That's like... killing two birds with one stone.
00:35:20 <oerjan> when you consider the work, it could be more like killing one bird with two stones :)
00:35:28 * CakeProphet finds concepts universal to all programming languages... and finds a way to organize it into a readable language.
00:35:43 <GregorR-W> More like killing no birds with a handgun you have to build from stone and twigs.
00:35:58 <CakeProphet> No no... I will kill the boredom bird regardless.
00:36:13 <CakeProphet> I hate databases at the moment... so this'll be my angsty revenge against them.
00:36:40 <CakeProphet> Inventing shit is fun... using other peoples invented shit isn't.
00:36:51 <bsmntbombdood> yep
00:37:35 <CakeProphet> N(length:integer) <--number
00:37:41 <CakeProphet> whoo! completed that part.
00:38:17 <bsmntbombdood> bsmnt_bot probably isn't very fast
00:38:22 <CakeProphet> any other info that might be handy for certain programming languages to know before they attempt to convert that into a native data type?
00:39:13 <bsmntbombdood> !exec for i in range(1000): self.register_raw(str(i), lambda x : False)
00:39:36 <oerjan> ah, the original gamma calculus was not quite as advanced as i said
00:39:38 <CakeProphet> >.> Python?
00:39:59 <bsmntbombdood> !exec self.raw_regex.queue.reverse()
00:40:00 -!- bsmnt_bot has quit (Remote closed the connection).
00:40:04 <bsmntbombdood> oops
00:40:17 <CakeProphet> haha... you put in access to python's exec statement.
00:40:31 -!- bsmnt_bot has joined.
00:40:45 <bsmntbombdood> !exec for i in range(5000): self.register_raw(str(i), lambda x : False)
00:40:49 <bsmntbombdood> CakeProphet: Of course
00:40:56 <bsmntbombdood> CakeProphet: Makes it extensible at runtime
00:41:06 <CakeProphet> S(encoding-string:length:sequence-of-character-ordinals-separated-by-commas) <--symbol ...what other info would you include?
00:41:10 <bsmntbombdood> !exec print len(self.raw_regex_queue)
00:41:27 <bsmntbombdood> !exec for i in range(10000): self.register_raw(str(i), lambda x : False)
00:41:29 <bsmntbombdood> !exec print len(self.raw_regex_queue)
00:41:42 <bsmntbombdood> !exec self.raw_regex_queue.reverse()
00:41:52 <CakeProphet> hmmm... you could change sys.stdout to the socket you're writing too.
00:41:57 <bsmntbombdood> !raw PRIVMSG #esoteric :hi
00:41:57 <bsmnt_bot> hi
00:42:02 <bsmntbombdood> CakeProphet: Yeah, I could
00:42:11 <CakeProphet> dunno why you would...
00:42:13 <CakeProphet> but.
00:42:15 <CakeProphet> ...you could.
00:42:59 -!- bsmnt_bot has quit (Remote closed the connection).
00:43:04 -!- bsmnt_bot has joined.
00:43:24 <bsmntbombdood> !exec print len(self.raw_regex_queue)
00:43:39 <bsmntbombdood> !exec sys.stdout.write(len(self.raw_regex_queue))
00:43:39 -!- bsmnt_bot has quit (Remote closed the connection).
00:43:56 <oerjan> the gamma_0 calculus seems like what i was thinking of, combining the principles of gamma and lambda: http://www.irisa.fr/paris/Biblio/Papers/Banatre/BanFraRad04RULE.pdf
00:44:26 <CakeProphet> hmmm... L(size|mutability|comma-separated-list-of-sequence-items) <- list whooooo... this is fun.
00:44:32 <CakeProphet> Way more fun than actually using a database.
00:44:37 -!- bsmnt_bot has joined.
00:44:46 <bsmntbombdood> !exec sys.stdout.write(len(self.raw_regex_queue))
00:44:47 -!- bsmnt_bot has quit (Remote closed the connection).
00:45:19 <CakeProphet> XML looks promising for databases...
00:45:20 <GreaseMonkey> fun fun FUN...
00:45:26 -!- bsmnt_bot has joined.
00:45:28 <bsmntbombdood> !exec sys.stdout.write(len(self.raw_regex_queue))
00:45:33 <bsmntbombdood> oh right
00:45:45 <CakeProphet> it's... verboose... but very good at representing pretty much any data type.
00:45:55 <bsmntbombdood> !exec sys.stdout.write("PRIVMSG #esoteric :" + str(len(self.raw_regex_queue)))
00:46:14 <bsmntbombdood> hrm
00:47:23 <bsmntbombdood> !exec print "foo"
00:47:53 -!- bsmnt_bot has quit (Remote closed the connection).
00:47:56 -!- bsmnt_bot has joined.
00:48:00 <bsmntbombdood> !exec print "foo"
00:48:09 <bsmntbombdood> meh whatever
00:48:57 <CakeProphet> Did you set sys.stdout to the socket?
00:49:05 <bsmntbombdood> yeah
00:49:25 <CakeProphet> hmm... can't remember if sockets use the write function or not.
00:49:26 <CakeProphet> it might be send.
00:49:31 <bsmntbombdood> it is
00:49:35 <CakeProphet> Ah.
00:49:37 <bsmntbombdood> but there is a file interface wrapper
00:50:12 <CakeProphet> class MySocket(socket.socket): def write(self, *args): self.send(*args)
00:50:27 <bsmntbombdood> socket.makefile()
00:50:33 <CakeProphet> ah.
00:50:45 <bsmntbombdood> Which I was using anyway, because it line buffers for me
00:51:25 * CakeProphet has too many projects.
00:51:49 <bsmntbombdood> !exec self.register_raw(".*dude.*", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
00:51:49 <bsmnt_bot> sweet
00:51:53 <bsmntbombdood> dude
00:51:54 <bsmnt_bot> sweet
00:51:57 <bsmntbombdood> :)
00:52:15 <oklopol> does it do brainfuck? :D
00:52:18 <CakeProphet> networking interface, database protocol, a text-based RPG codebase, a-random-assortment-of-very-abstract-and-general-tools.
00:52:20 <bsmntbombdood> no
00:52:23 <oklopol> :(
00:52:31 <oklopol> every bot should do brainfuck :DD
00:52:37 <bsmntbombdood> write a brainfuck interpreter in a single lambda
00:52:42 <bsmntbombdood> then it will do brainfuck
00:52:44 <oklopol> haha :D
00:52:47 <CakeProphet> ....I tried once.
00:52:54 <oklopol> i should sleep....
00:52:57 <bsmntbombdood> CakeProphet: I remember
00:53:00 <oklopol> but i could try
00:53:18 <CakeProphet> It would be possible in Python if Python assignment was an expression.
00:53:38 <CakeProphet> or at least... easier to do.
00:54:40 <oklopol> a.split("") is illegal? how to parse a string to a list of letters? :DD then i might be able to carry on :)
00:54:49 <GreaseMonkey> BF in BF has been done before :D
00:55:13 <CakeProphet> list(string)
00:55:17 <oklopol> i did it without loops :DD
00:55:24 <oklopol> oh thans
00:55:25 <oklopol> *k
00:55:40 * CakeProphet feels knowledgable.
00:56:20 <oklopol> haha i can't do an assignment in a lambda? :D or is there a way?
00:57:05 <CakeProphet> eh... not really...
00:57:12 <CakeProphet> in Python... assignment is a statement.
00:57:14 <CakeProphet> for good reasons.
00:57:24 <oklopol> i disagree, but see your point
00:57:28 * CakeProphet nods.
00:57:32 <CakeProphet> I disagree with myself too.
00:57:35 <CakeProphet> but also see my point.
00:57:36 <oklopol> haha :D
00:57:39 <oklopol> #esoteric
00:57:43 <oklopol> :)
00:57:50 <CakeProphet> I see the benefits of statement... and the benefits of expression.
00:58:15 <CakeProphet> I guess you could compromise with a "assign and return" statement... so that = doesn't return a value.
00:58:22 <CakeProphet> thus preventing clumsy mishaps.
00:58:34 <CakeProphet> |= or something
00:58:53 <oklopol> k now that i've played around a bit with the idea, it starts to seems pretty hard :DD
00:58:58 <oklopol> the bf in lambda thing
00:59:00 <CakeProphet> It is.
00:59:16 <CakeProphet> I can do most everything except [ and ]
00:59:33 <oklopol> yep
01:02:06 <oerjan> have you tried using y combinators for recursion?
01:02:29 <CakeProphet> ...what's that?
01:03:04 <oerjan> y (f) = f (y (f))
01:03:19 <CakeProphet> Ah....
01:03:21 <CakeProphet> that would work nicely.
01:03:49 <oerjan> although it might use up the python stack
01:03:59 <CakeProphet> Yeah.
01:04:02 <CakeProphet> recursion.
01:04:50 <bsmntbombdood> dude
01:04:51 <bsmnt_bot> sweet
01:04:54 <CakeProphet> dude
01:04:55 <bsmnt_bot> sweet
01:05:00 <CakeProphet> mmmmmmmmmmmmdude
01:05:01 <bsmnt_bot> sweet
01:05:09 <CakeProphet> hahahahahdudehahahahahahahahahdudedude
01:05:09 <bsmnt_bot> sweet
01:05:23 <bsmntbombdood> the regex is ".*dude.*"
01:05:23 <bsmnt_bot> sweet
01:05:29 -!- wooby has joined.
01:05:49 <CakeProphet> a regex of "dude" would work fine... depending on what you're doing.
01:05:49 <bsmnt_bot> sweet
01:05:49 -!- oerjan_ has joined.
01:05:58 <bsmntbombdood> hehe yeah probably
01:06:12 <CakeProphet> You would use ^dude to state explicitly at the beginning
01:06:12 <bsmnt_bot> sweet
01:06:25 <wooby> ahoy
01:06:30 <CakeProphet> Mmmm
01:06:31 <bsmntbombdood> Nope, it matches the regex on the whole line from the irc server
01:06:32 <CakeProphet> heya
01:06:41 <bsmntbombdood> :CakeProphet!n=CakeProp@h124.238.213.151.ip.alltel.net PRIVMSG #esoteric :heya
01:06:48 <bsmntbombdood> is what the regex sees
01:06:48 <CakeProphet> ah... you're not in line mode.
01:06:53 <CakeProphet> er.
01:06:55 <CakeProphet> rather
01:06:56 -!- oerjan has quit (Nick collision from services.).
01:06:57 <CakeProphet> yeah
01:07:02 -!- oerjan_ has changed nick to oerjan.
01:07:24 <bsmntbombdood> "^:.*:dude" would match at the beggining of a line
01:07:24 <bsmnt_bot> sweet
01:07:41 <bsmntbombdood> er
01:07:57 <CakeProphet> I would use non=greedy *
01:07:59 <bsmntbombdood> "^:[^:]*:dude"
01:07:59 <bsmnt_bot> sweet
01:08:10 <CakeProphet> That wouldn't match.
01:08:17 <bsmntbombdood> !exec self.raw_regex_queue.pop()
01:08:46 <CakeProphet> Are you using twisted? or just good ol' select and socket?
01:08:50 <bsmntbombdood> !exec self.register_raw("^:[^:]*:dude", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
01:08:56 <bsmntbombdood> neither
01:08:57 <bsmntbombdood> don't need select
01:08:59 <bsmntbombdood> dude
01:08:59 <bsmnt_bot> sweet
01:09:04 <bsmntbombdood> asdf dude
01:09:07 <bsmntbombdood> see
01:09:15 <CakeProphet> >.> What did you use?
01:09:22 <CakeProphet> Just recv?
01:09:29 <bsmntbombdood> http://bsmntbombdood.mooo.com/ircbot.py
01:09:30 <bsmntbombdood> yeah
01:09:48 <CakeProphet> hmm.. oh yeah
01:10:04 <CakeProphet> select is only for when you have multiple sockets.
01:10:42 <bsmntbombdood> !exec self.raw_regex_queue.pop()
01:10:50 <bsmntbombdood> !exec self.register_raw("dude", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
01:10:53 <bsmntbombdood> dude
01:10:59 <bsmntbombdood> interesting
01:11:01 <bsmntbombdood> !exec self.raw_regex_queue.pop()
01:11:09 <bsmntbombdood> !exec self.register_raw(".*dude.*", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
01:11:09 <bsmnt_bot> sweet
01:11:12 <bsmntbombdood> dude
01:11:13 <bsmnt_bot> sweet
01:11:17 <bsmntbombdood> pwnt
01:11:34 <CakeProphet> hmmm
01:11:51 <CakeProphet> if you were using findall or something
01:12:02 <CakeProphet> comparing any subsection of the string to the regex
01:12:04 <CakeProphet> dude would work.
01:12:04 <bsmnt_bot> sweet
01:12:12 <bsmntbombdood> but i'm not
01:12:24 <bsmntbombdood> if i[0].match(message):
01:12:31 * CakeProphet nods.
01:13:01 <CakeProphet> You could use grouping to map sections of the regex to a function call.
01:13:20 <oerjan> why do you want to match dude only at the beginning?
01:13:20 <bsmnt_bot> sweet
01:13:26 <bsmntbombdood> !exec self.register_raw(".*!%s.*" % "killme", lambda x : True)
01:13:30 <bsmntbombdood> oerjan: I don't
01:13:41 <bsmntbombdood> now anyone can kill the bot
01:13:44 <oerjan> well then, what is wrong with it?
01:13:49 <bsmntbombdood> nothing
01:15:29 <CakeProphet> Do you save the register to something?
01:16:00 <bsmntbombdood> ?
01:16:07 <CakeProphet> Do you persist it..
01:16:12 <bsmntbombdood> What register?
01:16:13 <CakeProphet> so that the regexes stay in it.
01:16:21 <bsmntbombdood> across restarts?
01:16:21 <bsmntbombdood> no
01:16:24 <CakeProphet> the regex_looker_thing
01:16:51 <bsmntbombdood> self.raw_regex_queue?
01:17:50 <bsmntbombdood> !killme
01:17:50 -!- bsmnt_bot has quit (Remote closed the connection).
01:17:56 -!- bsmnt_bot has joined.
01:18:00 <bsmntbombdood> !killme
01:18:03 <bsmntbombdood> see
01:19:24 <CakeProphet> !exec self.register_raw(r".*?!dice.*, lambda x: bot.raw(__import__("random").randint(1,6)) )
01:19:32 <CakeProphet> !dice
01:19:36 <bsmntbombdood> no
01:19:51 <bsmntbombdood> only I can exec
01:19:55 <ihope_> !raw PRIVMSG #esoteric :Bling bling
01:20:04 <GreaseMonkey> only he can !raw
01:20:05 <CakeProphet> poopy
01:20:06 <ihope_> mmh.
01:20:10 <ihope_> s/m/M/
01:20:26 <bsmntbombdood> !exec self.register_raw(r".*?!dice.*, lambda x: bot.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,6)) )
01:20:27 -!- bsmnt_bot has quit (Remote closed the connection).
01:20:30 <ihope_> Woot!
01:20:32 -!- bsmnt_bot has joined.
01:20:41 <bsmntbombdood> I really need to catch exceptions there
01:20:43 <CakeProphet> Yup.
01:20:45 <bsmntbombdood> !exec self.register_raw(r".*?!dice.*", lambda x: bot.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,6)) )
01:20:45 <bsmnt_bot> 2
01:20:47 <ihope_> Good idea.
01:20:51 <bsmntbombdood> ?!dice
01:20:51 <bsmnt_bot> 2
01:20:52 <bsmntbombdood> ?!dice
01:20:52 <bsmnt_bot> 1
01:20:53 <bsmntbombdood> ?!dice
01:20:54 <bsmnt_bot> 4
01:20:54 <bsmntbombdood> ?!dice
01:20:55 <bsmnt_bot> 3
01:20:57 <bsmntbombdood> :)
01:21:00 <ihope_> ?!dice
01:21:00 <bsmnt_bot> 5
01:21:08 <bsmnt_bot> 3
01:21:11 <bsmnt_bot> 3
01:21:18 <CakeProphet> It's something of a hack... since it imports random -each- time :D
01:21:27 <ihope_> Yay.
01:21:33 <RodgerTheGreat> cool
01:21:35 <bsmntbombdood> How can I catch an exception but still put a trackback on stderr?
01:21:49 <ihope_> Have the exception handler trackback it?
01:21:53 <bsmnt_bot> 4
01:22:04 <bsmntbombdood> ihope_: duuhh
01:22:25 <CakeProphet> bsmntbombdood, except Exception: traceback.print_exc()
01:22:39 <bsmntbombdood> !quit
01:22:39 -!- bsmnt_bot has quit (Client Quit).
01:22:41 <CakeProphet> need to import traceback of course.
01:23:17 -!- bsmnt_bot has joined.
01:23:27 <bsmntbombdood> !exec print "synstax error'
01:23:29 <CakeProphet> pfft... lemme use exec. I promise I won't delete your OS.
01:23:33 <bsmntbombdood> yay!
01:23:47 <bsmntbombdood> SyntaxError: EOL while scanning single-quoted string
01:24:19 <CakeProphet> and it'll still close on SystemExit and KeyboardInterrupt
01:24:25 <CakeProphet> because they don't inherit from Exception.
01:25:02 <ihope_> CakeProphet: how do you delete an OS in Python?
01:25:10 <ihope_> Also, why chroot traps?
01:25:20 <ihope_> Is *everything* a file?
01:25:35 <CakeProphet> import os; os.unlink("/")
01:25:37 <CakeProphet> if I'm not mistaken
01:25:54 <CakeProphet> Might be wrong... I'm not willing to test it.
01:25:56 <CakeProphet> :P
01:27:54 <bsmntbombdood> ok, you can use !exec now CakeProphet
01:28:45 <ihope_> Of course bsmnt_bot is running under a restricted user...
01:29:07 <bsmntbombdood> No, it's root
01:29:09 <bsmntbombdood> (not really)
01:29:37 -!- wooby has quit.
01:29:39 * bsmntbombdood urges !exec on CakeProphet
01:31:32 <bsmntbombdood> come on!
01:32:48 -!- wooby has joined.
01:32:51 <ihope_> wooby!
01:33:04 <ihope_> Sounds dirty.
01:33:13 <CakeProphet> !exec self.register_raw(r"^[^.]*!spam .*?, lambda x:bot.raw( int(x.split("!")[1:].split()[1]) * " ".split(x.split("!")[1:].split()[2:])))
01:33:14 <bsmnt_bot> just kidding
01:33:36 <bsmntbombdood> hehe
01:34:22 <bsmntbombdood> CakeProphet !exec
01:34:22 <bsmnt_bot> just kidding
01:34:26 * bsmntbombdood feels clever
01:34:36 <ihope_> Uh oh, the !exec is... hmm.
01:34:42 <ihope_> Oh, right.
01:34:54 <ihope_> !exec is only weird for CakeProphet.
01:34:58 <bsmntbombdood> !exec self.register_raw(r"^[^.]*!spam .*?, lambda x:bot.raw( int(x.split("!")[1:].split()[1]) * " ".split(x.split("!")[1:].split()[2:])))
01:35:06 <bsmntbombdood> ha ha syntax error
01:35:18 <bsmntbombdood> !exec self.register_raw(r"^[^.]*!spam .*?", lambda x:bot.raw( int(x.split("!")[1:].split()[1]) * " ".split(x.split("!")[1:].split()[2:])))
01:35:24 <bsmntbombdood> !spam 10
01:35:24 -!- bsmnt_bot has quit (Remote closed the connection).
01:35:28 -!- calamari has joined.
01:35:29 <bsmntbombdood> O.o
01:35:32 <wooby> ahoyo
01:35:32 -!- bsmnt_bot has joined.
01:35:41 <ihope_> Really, calamari's an odd name for a bot.
01:35:46 <ihope_> Isn't that some squid stuff?
01:35:50 <calamari> ya
01:35:56 <CakeProphet> ....oh ho... crashed it.
01:35:58 <calamari> hi ;)
01:35:59 * CakeProphet is awesome.
01:36:26 <bsmntbombdood> It doesn't catch exceptions when executing the callbacks, only when registering them
01:37:22 -!- oerjan has quit ("Leaving").
01:38:06 <bsmntbombdood> Python's scope for lambdas is weird :/
01:38:42 <CakeProphet> !exec for num in xrange(10000000): bot.raw("PRIVMSG #esoteric :lol")
01:38:58 <bsmntbombdood> !exec for num in xrange(2): bot.raw("PRIVMSG #esoteric :lol")
01:38:58 <bsmnt_bot> lol
01:38:58 <bsmnt_bot> lol
01:39:03 <bsmntbombdood> :)
01:42:16 <CakeProphet> mmm... it feels good spamming efficiently.
01:42:34 <bsmntbombdood> !exec for num in xrange(6): bot.raw("PRIVMSG CakeProphet :lol")
01:42:39 <ihope_> Spamming efficiently?
01:42:40 <bsmntbombdood> urgh
01:42:53 <ihope_> Write it in C!
01:42:58 <CakeProphet> that's some good ol' C-compiled iteration for ya
01:43:03 <CakeProphet> xrange is in C
01:43:04 <bsmntbombdood> !exec for num in xrange(6): bot.raw("PRIVMSG CakeProphet :lol")
01:43:09 <bsmntbombdood> :)
01:43:16 <GreaseMonkey> LUA is better :D
01:43:21 <ihope_> Is the whole thing C?
01:43:22 <CakeProphet> oh noes... I've been... spammed?
01:43:27 <bsmntbombdood> ihope_: The best part of this bot is that it's extensible at runtime
01:43:43 <bsmntbombdood> !exec for num in xrange(6): bot.raw("PRIVMSG CakeProphet :%s" % num)
01:43:51 <ihope_> But C lets you spam really efficiently...
01:44:02 <CakeProphet> ihope_, well... you have to get it into python... but the source itself is in C
01:44:23 <bsmntbombdood> ihope_: I'm sure the bottleneck is my internet connection
01:44:32 <bsmntbombdood> or freenode's flood protection...
01:44:59 <GreaseMonkey> for(;;){bot.raw("PRIVMSG CakeProphet :%s",rand() % 100)}
01:45:16 <bsmntbombdood> GreaseMonkey: Except no
01:47:10 <bsmntbombdood> !exec for num in xrange(6): bot.raw("PRIVMSG GreaseMonkey :%s" % __import__("random").randint(0,100))
01:50:28 * bsmntbombdood is bored
01:53:43 <wooby> anyone ever worked or otherwise dealt with a supercomputer?
01:56:57 <RodgerTheGreat> in what sense?
01:57:25 <wooby> programmed for them, operated them
02:00:49 <bsmntbombdood> GAR!
02:00:59 <bsmntbombdood> i'm pissed off
02:02:29 <bsmntbombdood> I'm looking through the course book for the local community college : "Intro to Computer Science: Learn Excel, Powerpoint and basic webdesign with dreamweaver"
02:02:35 <bsmntbombdood> what the FUCK
02:11:38 <bsmntbombdood> And that is why I'm afraid to study "Computer Science"
02:15:22 * RodgerTheGreat overcame his fear
02:15:58 <RodgerTheGreat> and, granted, our first year classes are pretty shitty.
02:16:11 <RodgerTheGreat> but we get to do cool things eventually
02:16:37 <bsmntbombdood> Why the fuck would they even teach webdesign in a CS class
02:18:05 <bsmntbombdood> They misuse that term so much
02:18:14 <bsmntbombdood> CS != using a computer
02:25:44 <GreaseMonkey> yah
02:30:32 <GreaseMonkey> http://www.explosm.net/comics/144/
02:35:21 <GreaseMonkey> http://www.explosm.net/comics/161/
02:35:48 -!- Sawamano has joined.
02:35:58 -!- tgwizard has quit (Remote closed the connection).
02:38:20 -!- ihope_ has quit (Connection timed out).
02:40:40 -!- oerjan has joined.
02:41:27 <oerjan> http://www.explosm.net/comics/53/
02:49:42 <bsmnt_bot> dododododo
02:51:24 <bsmntbombdood> !exec for i in ["seven", "donkeys", "ate", "cheese"]: self.raw("PRIVMSG #esoteric %s", i)
02:51:31 <bsmntbombdood> !exec for i in ["seven", "donkeys", "ate", "cheese"]: self.raw("PRIVMSG #esoteric %s" % i)
02:51:31 <bsmnt_bot> seven
02:51:31 <bsmnt_bot> donkeys
02:51:31 <bsmnt_bot> ate
02:51:31 <bsmnt_bot> cheese
02:54:21 <bsmntbombdood> !exec for i in ["in", "hell", "with", "hammurabi"]: self.raw("PRIVMSG #esoteric %s" % i)
02:54:21 <bsmnt_bot> in
02:54:21 <bsmnt_bot> hell
02:54:21 <bsmnt_bot> with
02:54:21 <bsmnt_bot> hammurabi
02:56:31 <GreaseMonkey> nice
02:56:52 <GreaseMonkey> man impulse tracker under dosbox is pretty crappy
02:57:02 <GreaseMonkey> but it plays 4-channel mods fine
02:57:24 <oerjan> what is a man impulse and why would you want to track it
02:58:13 * bsmnt_bot watches GreaseMonkey and oerjan lick each other
02:59:10 <GreaseMonkey> man, "impulse tracker" under dosbox is pretty crappy
02:59:32 * oerjan _must_ make his humor less subtle
02:59:39 <GreaseMonkey> yep
02:59:51 <GreaseMonkey> otherwise it'll be worse than "The Nanny"
03:00:51 <GreaseMonkey> often DOSBox runs programs better than if I run them normally
03:01:11 <oerjan> unfortunately i have this attraction to awful puns. especially ones named Attila.
03:03:07 <GreaseMonkey> i think it's gotta run at 5.000MHz
03:07:50 <bsmntbombdood> for i in range(100,0,-1): print "%s bottle%s of beer on the wall, %s bottle%s of beer." % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "")
03:08:22 * bsmntbombdood feels leet
03:09:12 <bsmntbombdood> wair
03:09:14 <bsmntbombdood> *wait
03:09:16 <bsmntbombdood> crap
03:09:21 <bsmntbombdood> I got the lyrics wrong
03:09:32 <oerjan> i thought there was something missing
03:12:27 <bsmntbombdood> s = '%s bottle%s of beer on the wall, %s bottle%s of beer. Take one down, pass it around, %s bottle%s of beer on the wall'
03:12:34 <bsmntbombdood> for i in range(100,0,-1): print s % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "", i-1, ((i > 2) and "s") or "")
03:15:08 <oerjan> are you sure that is quite right for 0?
03:16:17 <bsmntbombdood> no :(
03:19:43 -!- Sawamano has quit (".UPP.").
03:20:15 <CakeProphet> Behold!
03:20:26 <CakeProphet> The most powerful representation of data ever...
03:21:30 <CakeProphet> I call it... The Extensible Goo Awesomizatiion Language (TEGAL)
03:22:00 <bsmntbombdood> ok, I got it right now
03:22:36 <bsmntbombdood> for i in range(100,0,-1): print s % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "", ((i > 1) and i-1) or "no", (((i > 2) or (i == 1)) and "s") or "")
03:22:49 <CakeProphet> Tegal consists of blobs... which are parenthesized sets of data. (attribute:value|attribute:value|attribute:multiple,sets,of,values)
03:23:08 <CakeProphet> and... that's about it.
03:24:46 <bsmntbombdood> !exec for i in range(100,98,-1): print '%s bottle%s of beer on the wall, %s bottle%s of beer. Take one down, pass it around, %s bottle%s of beer on the wall' % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "", ((i > 1) and i-1) or "no", (((i > 2) or (i == 1)) and "s") or "")
03:24:54 <bsmntbombdood> oh :(
03:25:37 <bsmntbombdood> !exec for i in range(100,98,-1): self.raw("PRIVMSG #esoteric :%s" % ('%s bottle%s of beer on the wall, %s bottle%s of beer. Take one down, pass it around, %s bottle%s of beer on the wall' % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "", ((i > 1) and i-1) or "no", (((i > 2) or (i == 1)) and "s") or "")))
03:25:38 <bsmnt_bot> 100 bottles of beer on the wall, 100 bottles of beer. Take one down, pass it around, 99 bottles of beer on the wall
03:25:38 <bsmnt_bot> 99 bottles of beer on the wall, 99 bottles of beer. Take one down, pass it around, 98 bottles of beer on the wall
03:25:53 <bsmntbombdood> !exec for i in range(2,0,-1): self.raw("PRIVMSG #esoteric :%s" % ('%s bottle%s of beer on the wall, %s bottle%s of beer. Take one down, pass it around, %s bottle%s of beer on the wall' % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "", ((i > 1) and i-1) or "no", (((i > 2) or (i == 1)) and "s") or "")))
03:25:53 <bsmnt_bot> 2 bottles of beer on the wall, 2 bottles of beer. Take one down, pass it around, 1 bottle of beer on the wall
03:25:53 <bsmnt_bot> 1 bottle of beer on the wall, 1 bottle of beer. Take one down, pass it around, no bottles of beer on the wall
03:26:16 <oerjan> huzzah
03:26:38 <oerjan> actually, you need a period at the end
03:26:45 <bsmntbombdood> meh
03:26:48 <CakeProphet> "\n".join(["'%s bottle%s of beer on the wall, %s bottle%s of beer. Take one down, pass it around, %s bottle%s of beer on the wall'" % (i, ("s" if i > 1else "")) * 3 for i in xrange(1,101,-1)])
03:26:51 <bsmntbombdood> close enough
03:27:03 <CakeProphet> A one-liner
03:27:04 <bsmntbombdood> The list comprehension!
03:27:06 <bsmntbombdood> even better
03:27:12 <CakeProphet> You can stuff it in a lambda now.
03:27:29 <bsmntbombdood> um
03:27:33 <bsmntbombdood> That's not python
03:27:39 <CakeProphet> ...yes it is.
03:27:45 <bsmntbombdood> ("s" if i > 1else "")?
03:27:54 <CakeProphet> it's in version 2.5
03:27:57 <CakeProphet> conditional expressions.
03:28:03 <bsmntbombdood> oh right
03:28:15 <bsmntbombdood> Well I did it the old harder way
03:28:17 <bsmntbombdood> so HA
03:28:30 <CakeProphet> (<true_val> if <conditional> else <false_val>)
03:28:36 <CakeProphet> with optional parenthesis
03:29:15 <oerjan> so for the first time in history we have an if which dangles at _both_ ends
03:29:25 <bsmntbombdood> and you can still do mine in a list comprehension
03:29:32 <bsmntbombdood> "\n".join([ '%s bottle%s of beer on the wall, %s bottle%s of beer. Take one down, pass it around, %s bottle%s of beer on the wall' % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "", ((i > 1) and i-1) or "no", (((i > 2) or (i == 1)) and "s") or "") for i in range(100,0,-1)])
03:30:50 <bsmntbombdood> Beat that!
03:31:11 <tokigun> my favorite is 's'[i<=1:] instead of (i>1 and 's' or '').
03:31:43 <bsmntbombdood> Nice!
03:31:48 <bsmntbombdood> I didn't know you could do that
03:37:58 -!- GregorR-L has joined.
03:38:19 <CakeProphet> Sure you can.
03:38:32 <CakeProphet> hmmm...
03:38:43 <CakeProphet> TEGAL is starting to look like the lisp of data representations...
03:40:48 <bsmntbombdood> 14" of snow!
03:41:20 <GregorR-L> 14" of air
03:41:22 <GregorR-L> (With air on top)
03:44:15 <bsmntbombdood> R-L?
03:44:57 <GregorR-L> Laptop
03:45:00 * bsmnt_bot rolls around in the snow
03:45:20 <bsmntbombdood> GregorR-L: You really need screen
03:45:30 <bsmntbombdood> or a bnc
03:45:32 <GregorR-L> VNC + x-hat = suck
03:45:35 <GregorR-L> *x-chat
03:45:45 <GregorR-L> And irssi just = suck
03:45:51 <bsmntbombdood> irssi-proxy + screen+ xchat == good
03:45:55 <bsmntbombdood> That's what I do
03:46:01 <GregorR-L> Hmmmmmmmmm .......... what the bork?
03:46:19 <bsmntbombdood> ?
03:48:23 <bsmnt_bot> zomg bot
03:48:42 <GregorR-L> Zomg Plof! :)
03:49:27 <bsmntbombdood> Zomg another language!
03:50:22 <GreaseMonkey> Zomg Tomato!
03:50:47 <bsmntbombdood> zomg RCL-2!
03:51:05 <oerjan> now we need a language called Zomg
03:51:28 <oerjan> but what should the acronym stand for?
03:51:51 <bsmntbombdood> zany other monster guts
03:52:30 <GregorR-L> http://i15.photobucket.com/albums/a379/GregorRichards/Superman.jpg
03:52:57 <bsmntbombdood> haha
03:56:22 <bsmnt_bot> I find your lack of pants disturbing.
03:57:00 <bsmnt_bot> I find your lack of pants disturbing.
03:57:06 <bsmnt_bot> You are unwise to lower your pants.
03:58:41 <bsmnt_bot> # The Force is strong in my pants.
03:58:47 <RodgerTheGreat> that's amazing. How many hours did you invest in making that feature?
03:58:57 <bsmntbombdood> None
03:59:11 <RodgerTheGreat> good
03:59:15 <bsmntbombdood> I'm just !raw PRIVMSGing in pm
04:02:17 <bsmnt_bot> In his pants you will find a new definition of pain and suffering
04:22:53 -!- Sgeo has quit (Remote closed the connection).
05:29:08 <bsmntbombdood> GreaseMonkey: return, eh?
05:29:30 <GreaseMonkey> yah
05:30:33 <bsmntbombdood> Why only odd numbered instructions?
05:35:08 <GreaseMonkey> eh? is the parser cocked up?
05:35:30 <bsmntbombdood> ?
05:35:45 <GreaseMonkey> does my parser not read enough?
05:35:55 <bsmntbombdood> I didn't try your parser
05:36:04 <GreaseMonkey> why'd you ask that then?
05:36:12 <bsmntbombdood> But why are the instructions odd numbered?
05:36:48 <GreaseMonkey> oh, because it makes it easier to perform a NOP
05:36:55 <bsmntbombdood> oh
05:37:12 <GreaseMonkey> you might end up doing a WHILE loop, but only want a few instructions
05:37:25 <GreaseMonkey> and you don't want to obfuscate it
05:37:50 <GreaseMonkey> ( ( (()()()) (()()()) (()()()) ) ( (()()()) (()()()) (()()()) ) ( (()()()) (()()()) (()()()) ) )
05:37:59 <GreaseMonkey> that would subtract 13
05:40:05 <GreaseMonkey> i would classify the Hello World program as "pointlessly massive"
05:41:28 <GreaseMonkey> like my maze generator?
05:41:38 <GreaseMonkey> wait, do you have allegro?
05:58:27 -!- comboy has joined.
06:01:57 <comboy> Please print the most dumb person on the earth name.
06:04:36 <GregorR-L> With grammar like that, I'm thinking "comboy"
06:04:37 <GregorR-L> ;)
06:05:29 <comboy> Segmentation fault
06:06:02 <comboy> Please delete yourself ;p
06:06:56 <comboy> ok I meant name of the most dumb person.. I don't know what is worse.. my grammar or lack of coffee
06:07:12 <comboy> anyway nice idea
06:07:48 <comboy> but I guess I still prefer ruby ;p
06:08:22 <GreaseMonkey> LUA ftw still
06:09:29 <comboy> the only word from this line I recognize is that one in the middle - it's reversed wtf ;p
06:09:58 <comboy> 30h w/o sleep too much for me
06:10:03 <comboy> cee ya
06:10:25 -!- comboy has left (?).
06:25:34 -!- calamari has quit ("Leaving").
06:42:54 <GregorR-L> bsmntbombdood: I've improved dplof's error output.
06:43:03 <GreaseMonkey> http://www.explosm.net/comics/393/
06:43:58 -!- oerjan has quit ("Leaving").
06:48:46 <GregorR-L> bsmntbombdood: http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-20-2.tar.gz if you care
06:57:07 -!- okokoko has joined.
06:57:39 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
07:11:45 -!- GregorR-L has quit ("HydraIRC -> http://www.hydrairc.w00t <- IRC for annoying quit-spamming bastards").
07:31:58 -!- ShadowHntr has quit ("End of line.").
07:33:24 <GreaseMonkey> here's a simple crackme if you want to do it: http://greasemonkey.shadowarts.org/inject.php
07:33:43 <GreaseMonkey> once you've done it you get my email addresses :D
07:35:17 <tokigun> GreaseMonkey, too easy. :p
07:36:57 <GreaseMonkey> got it?
07:37:02 <tokigun> yep
07:37:10 <GreaseMonkey> note that the greasemonkey@ ones don't work
07:37:33 <GreaseMonkey> yeah, it is easy
07:38:33 <GreaseMonkey> username = admin, password = asscracker
07:38:43 <GreaseMonkey> or uname=admin&success=1
07:39:19 <tokigun> i could get it even success is not set :p
07:39:40 <tokigun> there are so many md5 reverse lookup services.
07:41:00 <GreaseMonkey> k
07:41:11 <GreaseMonkey> :D -> http://www.explosm.net/comics/420/
07:41:50 <GreaseMonkey> XD -> http://www.explosm.net/comics/421/
07:44:30 -!- CakeProphet_ has joined.
07:46:39 -!- CakeProphet has quit (Read error: 113 (No route to host)).
07:46:53 -!- CakeProphet_ has changed nick to CakeProphet.
07:48:54 <GreaseMonkey> http://www.explosm.net/comics/431/
07:53:56 <GreaseMonkey> http://www.explosm.net/comics/434/
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:04:36 -!- GregorR-W has quit (Remote closed the connection).
08:05:04 -!- GregorR-W has joined.
08:49:20 <GreaseMonkey> gonna go, gnight
08:50:00 -!- GreaseMonkey has quit ("Read error: 130 (Monkey too greasy)").
09:24:16 <Sukoshi> Write an OS for me.
09:52:59 -!- einand has joined.
09:53:16 <einand> please welcome me
09:54:07 <ivan`> hello, machine translation
09:56:13 <einand> please tell me what do do next
10:00:14 <wooby> ahoy
10:38:17 -!- ihope_ has joined.
10:50:21 -!- ihope_ has quit (Read error: 104 (Connection reset by peer)).
11:05:59 -!- Asztal has joined.
12:45:45 -!- lament has quit (Read error: 60 (Operation timed out)).
14:02:40 -!- lament has joined.
14:11:13 -!- jix_ has joined.
14:27:27 -!- CakeProphet_ has joined.
14:28:26 -!- CakeProphet has quit (Read error: 113 (No route to host)).
14:28:36 -!- CakeProphet_ has changed nick to CakeProphet.
14:58:41 <SimonRC> damn you, having all these interesting conversations between 1am and 6am
14:59:01 <Asztal> damn them indeed
14:59:11 <Asztal> wait, am I one of them?
14:59:19 <Asztal> you never know with timezones
14:59:41 * Asztal realises he would be ruled out by the "interesting" clause
15:29:29 -!- Arrogant has joined.
15:38:10 * SimonRC laughs more: http://www.explosm.net/comics/324/
15:47:50 -!- CakeProphet_ has joined.
15:51:13 -!- CakeProphet has quit (Read error: 113 (No route to host)).
15:51:19 -!- CakeProphet_ has changed nick to CakeProphet.
16:21:42 -!- FabioNET has joined.
16:46:01 -!- Sukoshi has quit (Remote closed the connection).
16:49:48 -!- Sukoshi has joined.
16:59:17 -!- einand has quit (Read error: 110 (Connection timed out)).
17:11:45 -!- tgwizard has joined.
17:53:43 -!- CakeProphet has quit ("haaaaaaaaaa").
18:00:10 -!- GregorR-W has quit (Remote closed the connection).
18:00:37 -!- GregorR-W has joined.
18:31:23 <bsmnt_bot> g
18:32:02 <bsmnt_bot> I find your lack of pants disturbing.
18:33:42 * GregorR-W pulls his pants back on.
18:33:47 <GregorR-W> You sensitive twit.
18:34:06 * bsmntbombdood rolls around in the 2 feet of snow outside
18:34:19 * GregorR-W rolls around in the 100 feet of fog outside.
18:34:35 <bsmntbombdood> ha ha sux0r
18:35:54 * GregorR-W is mildly surprised the fog hasn't cleared yet.
18:46:15 <bsmntbombdood> the snow is stopping :(
19:15:12 <bsmntbombdood> PING :kornbluth.freenode.net
19:15:37 * bsmnt_bot will be taking the place of ChanServ
19:15:48 * bsmnt_bot will be taking the place NickServ too
19:16:13 <bsmnt_bot> You will need to re login with you passwords
19:22:06 -!- Arrogant has quit ("Leaving").
19:55:44 -!- ore2 has joined.
19:57:29 -!- ore2 has quit (Client Quit).
20:00:49 * SimonRC wonders just how long we have not had a chanserv.
20:23:40 <sekhmet> SimonRC: Since Aug 10, says my logs
20:36:43 -!- ihope_ has joined.
21:01:29 -!- vincze has joined.
21:02:27 -!- vincze has quit (Client Quit).
21:03:45 -!- CakeProphet has joined.
21:13:37 <bsmntbombdood> !exec import random
21:14:03 <bsmntbombdood> !exec print random.randint(1,100)
21:14:12 <bsmntbombdood> doesn't work
21:21:33 <bsmntbombdood> !exec self.register_raw("^:[^:]+:!dice.*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,7))
21:21:38 -!- Sgeo has joined.
21:21:42 <bsmntbombdood> !exec self.register_raw("^:[^:]+:!dice.*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,7)))
21:21:46 <bsmntbombdood> !dice
21:21:47 <bsmnt_bot> 5
21:21:49 <bsmntbombdood> !dice
21:21:49 <bsmnt_bot> 7
21:21:53 <bsmntbombdood> O.o
21:22:07 <bsmntbombdood> !exec self.raw_regex_queue.pop()
21:22:13 <bsmntbombdood> !exec self.register_raw("^:[^:]+:!dice.*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,6)))
21:22:19 <bsmntbombdood> !dice
21:22:19 <bsmnt_bot> 2
21:22:25 <bsmntbombdood> !dice
21:22:25 <bsmnt_bot> 1
21:23:04 <bsmntbombdood> !dice
21:23:04 <bsmnt_bot> 4
21:23:08 <bsmntbombdood> yay
21:23:57 <Sgeo> http://sgeo.diagonalfish.net/screenshots/windeath/drivecleaner/
21:23:59 <Sgeo> Insanity
21:25:31 * Sgeo pokes
21:35:37 -!- oerjan has joined.
21:37:16 <Sgeo> Hi oerjan
21:37:19 <Sgeo> http://sgeo.diagonalfish.net/screenshots/windeath/drivecleaner/
21:38:45 <oerjan> hi sgeo
21:39:59 <Sgeo> Any comments on my pics?
21:42:20 <GregorR-W> I love the poor English in the program.
21:42:21 <pgimeno> just that I hope they are from an emulated drive or something and you didn't do that on your desktop machine
21:43:39 <oerjan> hm, seven-sided dice. quite rare, i believe.
21:43:57 <Sgeo> pgimeno, Windows 98 in VMware under a non-persistent VM
21:44:41 <Sgeo> Fave pics: 011
21:44:53 <Sgeo> 008
21:45:03 <GregorR-W> oerjan: Uh, seven-sided = impossible to make a proper dice.
21:45:05 <pgimeno> k ':)
21:45:07 <GregorR-W> *die
21:46:33 <Sgeo> "Complete protection from System"
21:46:55 <GregorR-W> Help, help, protect me from the system!
21:47:09 <Sgeo> "These Privacy Violations may cause: * Embarrassing activities
21:47:39 <Sgeo> "
21:55:24 <okokoko> dice==die
21:55:30 <okokoko> and why is it impossible?
21:57:25 <Asztal> http://en.wikipedia.org/wiki/Pentagonal_prism
22:03:39 <fizzie> There is a 7-sided fair die. http://mathworld.wolfram.com/Isohedron.html
22:03:40 <GregorR-W> okokoko: (I actually did correct dice-die on the next line) A die is a perfect polyhedron, and perfect polyhedrons can only be formed with an even number of sides greater than 2
22:03:59 <fizzie> Er, I mean "is not".
22:04:10 <fizzie> What a nice and pure brain-fart.
22:04:33 <GregorR-W> "Isohedron" being the more succinct word for "perfect polyhedron" :P
22:04:55 <tokigun> how about this? http://en.wikipedia.org/wiki/Szilassi_polyhedron
22:05:12 <GregorR-W> Does that look like a fair die to you, tokigun ...
22:06:04 <fizzie> Mathworld's definition is a bit non-intuitive; "a fair die is one for which its symmetry group acts transitively on its faces".
22:06:15 <tokigun> well, joking. only problem is that is topologically a torus...
22:06:45 <okokoko> fizzie, die==dice, what did you mean by "correcting"?
22:07:18 <oerjan> actually if you know what "acts transitively" means it is perfectly intuitive that it means being a fair die
22:07:20 <GregorR-W> And yes, a septagonal prism would be fair, but it's not strictly a die ... maybe.
22:07:50 <oerjan> because any two sides are then equivalent
22:09:00 <Asztal> Apparently they do use it in seven-sided backgammon :o
22:09:20 <oerjan> a septagonal prism does not have a transitive symmetry group - you cannot turn the top and bottom sides to mach the others
22:09:34 <fizzie> okokoko; Was that meant for GregorR? I don't think I said "correcting" anywhere.
22:10:03 <GregorR-W> oerjan: No, but it can't realistically land on either of the two ends if it's made properly, so it'll be 99% one of the numbers and 1% roll again :)
22:10:04 <oerjan> *match
22:10:26 <okokoko> actually, i confused you two
22:10:27 <GregorR-W> oerjan: That's why I said "It's fair, but not strictly a die"
22:10:33 <okokoko> sorry :)
22:10:43 <okokoko> GregorR-W and fizzie
22:11:33 <fizzie> "Roll again" is such a lame rule for an event that unlikely; it should be something like "it counts as 7 but you need to cluck like a chicken for 10 seconds".
22:12:13 <GregorR-W> fizzie: ll
22:12:14 <GregorR-W> *lol
22:16:01 <oerjan> actually i remember that you can make a die that is unstable on all but 7 sides by making it similar to a doubly sharpened pencil
22:16:21 <GregorR-W> Hmm, that's good.
22:16:48 <GregorR-W> Like a septagonal prism but it's physically impossible for it to land on one of the "bad" sides.
22:17:17 <GregorR-W> (As opposed to just ridiculously unlikely :) )
22:17:39 * Sgeo attempts to redirect the discussion to his pics
22:18:05 <oerjan> well, it could still ridiculously unlikely land on the "pencil point" :)
22:18:23 <GregorR-W> Not if there's, y'know, air or something.
22:19:05 <oerjan> well, i am not talking ordinarily ridiculously unlikely.
22:19:44 <Sgeo> Maybe all the air happens to avoid the thing by sheer chance?
22:19:59 * Sgeo again tries to steer somewhat towards pics
22:22:21 <oerjan> well it seems like a program that would be annoying but not dangerous
22:22:23 -!- wooby has quit.
22:25:07 <oerjan> whether it is actually useful is another matter
22:26:56 <Sgeo> You need to pay money to make it actually clean stuff..
22:27:07 <Sgeo> And you've got to love the poor english
22:30:22 <oerjan> so it is stupid. just not _that_ stupid.
22:33:27 <GregorR-W> var = a [ main = { println("Plof rocks!"); } ]; a.main();
22:33:33 <GregorR-W> Oops, tpyo :P
22:33:37 <GregorR-W> var a = [ main = { println("Plof rocks!"); } ]; a.main();
22:33:52 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:52:01 -!- Puddy_ has joined.
22:52:58 -!- gerard_ has joined.
22:53:31 <Puddy_> !help
22:53:59 <gerard_> 'please type your commands here'
22:55:43 <gerard_> loop: goto loop
22:56:58 <Puddy_> ERROR: endless loop, silly
22:57:12 <Puddy_> please write what time it is in england
22:57:31 <gerard_> GMT +0
22:59:42 <Puddy_> please calculate $TIME - (GMT[germany]-GMT +0)
23:00:00 * GregorR-W stabs himself for ever writing that IRP article.
23:00:29 * oerjan stabs GregorR-W too :)
23:00:33 <Puddy_> <!-- i was like O_O GREAT IDEA when i read it :) -->
23:01:19 <GregorR-W> Puddy_: Yeah, but you don't have to sit here and listen to 99% of new joins say "Please say 'Hello, world!'"
23:01:20 <oerjan> Time in England: 22:57
23:01:23 <oerjan> i believe
23:01:51 <Puddy_> well, you seriously should get a bot for "simple" tasks^^
23:01:58 <gerard_> lol
23:02:06 <GregorR-W> There is a bot, I don't know why it's down ...
23:02:24 <GregorR-W> One sec.
23:02:31 <Puddy_> hmh, would you mind me coding a new one?
23:02:54 <Puddy_> sometimes i got too much time and feel like "bllaaa programminnggg!!!" but dont know what...^^
23:03:15 -!- EgoBot has joined.
23:03:27 <Puddy_> please say 'hello world!';
23:03:33 <gerard_> you could use very simple rules like: I see 'goto' -> say 'no enless loops please'
23:03:34 <GregorR-W> !glass {M[m(_o)O!"Tada, EgoBot"(_o)o.?]}
23:03:36 <EgoBot> Tada, EgoBot
23:03:38 <Puddy_> hms^^
23:03:41 <GregorR-W> No, it does not speak IRP ;)
23:03:56 <Puddy_> ah.. why not? :s
23:03:58 <Puddy_> !help
23:04:00 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
23:04:02 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
23:04:14 <gerard_> omfg
23:04:24 <oerjan> apparently gregorR-W is not up to writing an AI-complete bot :(
23:05:09 * GregorR-W no tiene el SKILLZORZ
23:05:31 <Puddy_> too lazy or dont want a bot who knows irp?
23:05:46 <pgimeno> !malbolge (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
23:05:48 <EgoBot> Hello, world.
23:05:57 <pgimeno> that's one of my favs
23:06:29 <gerard_> !gerard_ hi
23:06:32 <EgoBot> Huh?
23:06:34 <gerard_> Hello world!
23:06:52 <gerard_> !huh? !huh
23:06:54 <EgoBot> Huh?
23:06:54 <GregorR-W> EgoBot tries to parse anything startin gwith a !
23:07:04 <GregorR-W> s/n gw/ng w/
23:07:08 <gerard_> i see
23:07:33 <gerard_> no need to talk RE, i understand IRP too ;)
23:07:46 <oerjan> !Huh?
23:07:48 <EgoBot> Huh?
23:07:58 <pgimeno> !!Huh?
23:08:00 <EgoBot> Huh?
23:08:14 <pgimeno> doh
23:08:31 <gerard_> !show
23:08:34 <EgoBot> No such process!
23:08:50 <gerard_> !i
23:08:53 <GregorR-W> !show preemptively shows the output for a process
23:08:57 <GregorR-W> !i inputs to a process
23:09:04 <gerard_> ah
23:09:15 <pgimeno> !help show
23:09:19 <EgoBot> Use: show <pid> Function: display the current output buffer for a process
23:09:19 <oerjan> hm...
23:09:42 -!- tannerld has joined.
23:09:42 <gerard_> can you let it print something starting with a ! ?
23:09:58 <GregorR-W> !glass {M[m(_o)O!"!Of course."(_o)o.?]}
23:10:00 <EgoBot> !Of course.
23:10:05 <GregorR-W> It doesn't parse its own output.
23:10:10 <gerard_> too bad :p
23:10:19 <gerard_> we need 2 bots then for the endless loop
23:10:22 <tannerld> ?
23:10:29 <oerjan> gregorR-W has had _a lot_ of experience preventing EgoBot abuse ;)
23:10:35 <pgimeno> !bf ++++[>++++++++<-]>+.
23:10:37 <GregorR-W> X_X
23:10:38 <EgoBot> !
23:10:50 <GregorR-W> !bf_txtgen !!!!!!!!!!!!!!!!!!!!
23:10:56 <GregorR-W> Watch the lame output it'll make :)
23:11:05 * pgimeno bets for >>><<<
23:11:05 <Puddy_> coool!
23:11:24 <pgimeno> (loading java bytecode interpreter...)
23:11:29 <gerard_> haha
23:11:31 <pgimeno> (parsing line 1...)
23:11:37 <pgimeno> (parsing line 2...)
23:11:37 <Puddy_> !bf +++++++++[>+++++++++<-]>++++.
23:11:38 <EgoBot> 51 +++++++++++[>+++>+++>><<<<-]>......>...........<... [433]
23:11:38 <GregorR-W> Don't blame me, I didn't write the Java ;)
23:11:40 <EgoBot> U
23:11:49 <GregorR-W> !bf8 +++++++++++[>+++>+++>><<<<-]>......>...........<...
23:11:51 <Puddy_> hm U .. thoughts thats "a" .. hmh well xD
23:11:52 <pgimeno> yay, I almost got it!
23:11:52 <EgoBot> !!!!!!!!!!!!!!!!!!!!
23:12:25 <Puddy_> please translate this to bf: 'puddy'
23:12:40 <GregorR-W> Puddy_: You can do it yourself, anybody can use !bf_txtgen :P
23:12:47 <gerard_> !bf_txtgen puddy
23:12:53 <GregorR-W> !ps
23:12:56 <EgoBot> 1 gerard_: bf_txtgen
23:12:58 <EgoBot> 2 GregorR-W: ps
23:13:12 <EgoBot> 59 ++++++++++++++[>++++++++>+++++++>><<<<-]>.+++++.>++..<++++. [449]
23:13:28 <Puddy_> hmh, doesnt look like very well optimized code^^
23:13:38 <gerard_> !bf_txtgen ++++++++++++++[>++++++++>+++++++>><<<<-]>.+++++.>++..<++++.
23:13:40 <GregorR-W> It's a genetic algorithm, and I cut it off at 1000 iterations.
23:13:50 <gerard_> nice
23:14:13 <gerard_> I'll try to make it self reproducing now ;)
23:14:15 <GregorR-W> Don't look'a me, calamari (not present) wrote it.
23:14:25 <oerjan> mind you, the algorithm doesn't decide the whole code, just the length of + runs
23:15:00 <gerard_> well, genetic algorithms are difficult enough :p
23:15:11 <Puddy_> hehe yea, nice^^
23:15:19 <Puddy_> !bf_txtgen a
23:15:24 <EgoBot> 276 +++++++++++++++[>++++++>+++>+++>+++<<<<-]>>--...>--.>--.<...>..<....<<+.-----------------------------.>..>..>...<.<<.>.>>..<...<.<..>+++++++++++++++++....>++.<+++++++++++++++++++++++++++++++++.-------------------------------.----------------.---.....>+.<<.>..>..<<--.>.>>...<. [950]
23:15:25 <gerard_> !ps
23:15:26 <EgoBot> 1 gerard_: ps
23:15:28 <EgoBot> 2 Puddy_: bf_txtgen
23:15:40 <EgoBot> 34 ++++++++++++[>++++++++>>><<<<-]>+. [72]
23:16:18 <gerard_> !bf_txtgen +++++++++++++++[>++++++>+++>+++>+++<<<<-]>>--...>--.>--.<...>..<....<<+.-----------------------------.>..>..>...<.<<.>.>>..<...<.<..>+++++++++++++++++....>++.<+++++++++++++++++++++++++++++++++.-------------------------------.----------------.---.....>+.<<.>..>..<<--.>.>>...<.
23:16:30 <gerard_> hope it can handle this....
23:16:36 <oerjan> not a chance
23:16:50 <GregorR-W> It can handle it, but it'll cut out the output :P
23:17:04 <oerjan> aha
23:17:19 <GregorR-W> It limits it to something around 280 characters. I don't remember exactly what
23:18:12 <pgimeno> 255?
23:18:37 <GregorR-W> Nah, it's more than that, it landed there after randomness/fine-tuning, not arbitrary decision :)
23:19:15 <gerard_> !ps
23:19:18 <EgoBot> 1 gerard_: bf_txtgen
23:19:20 <EgoBot> 2 gerard_: ps
23:22:03 <tokigun> !funge93 067+"_toBogE KCIN"67+"...mmh">:#,_@
23:22:06 <EgoBot> hmm... NICK EgoBot_
23:22:18 <tokigun> \r doesn't work, fortunately :)
23:22:33 <gerard_> !ps
23:22:36 <EgoBot> 1 gerard_: bf_txtgen
23:22:38 <EgoBot> 2 gerard_: ps
23:22:53 <GregorR-W> Why does everybody assume I was a f***ing moron when I wrote the bot ...
23:23:00 <EgoBot> 1077 +++++++++++[>++++>++++>++++>++++<<<<-]>>>-.<<-...>-.<...>>>-..<<.<.>>.>..<<++++++++++++++++++++++++++++++++++++++++++++++++.-----------------------------.>..>.<...+++++++++++++++++++.<-------------------.<.>.>.<..<.>+++++++++++++++++++.>>...+++++++++++++++++....<-----------------.<+++++++++++++++++++++++++++++++.-------------------------------.>>++.<..<----------------.>+..
23:23:06 <GregorR-W> Heh
23:23:14 <gerard_> hmm
23:23:23 <Puddy_> hmh
23:23:37 <Puddy_> if you ask nicely maybe someone will compile the question..
23:23:45 <Puddy_> ;)
23:26:37 <oerjan> because whatever errors you actually put in it probably are f***ing moron errors?
23:26:49 <GregorR-W> /ouch/
23:27:44 -!- ihope__ has joined.
23:28:06 <oerjan> although they may very well be few :)
23:28:21 -!- tgwizard has quit (Remote closed the connection).
23:34:25 -!- FabioNET has quit ("notte °_°").
23:40:51 <Sgeo> Heyas DogFace... erm.. ihope
23:42:18 <GregorR-W> Is there a rivalry I don't know about going on here? :P
23:45:16 -!- ihope_ has quit (Connection timed out).
23:47:54 <fizzie> It might also be because f***ing-moron-ness is rather common amongst bot-writers. The bot on our Scheme channel did very sensible output filtering for I/O functions and strings-returned-as-a-result, but outputted symbols-returned-as-a-result directly so one could use string->symbol to make it execute arbitrary commands.
23:48:52 <gerard_> It might also be that morons deny that they are morons, and so you need to test it yourself
23:49:08 <GregorR-W> ME ARE NOT STUPID UR MEEN
23:49:34 <gerard_> well, thats 4/6 words spelled correctly
23:49:40 <gerard_> better than average
23:49:56 <GregorR-W> Damn it :(
23:49:57 <gerard_> and you even managed to get some lowercase letters in your name
23:50:18 <GregorR-W> IM NO STOOPID UR MEEN
23:51:22 <gerard_> heh, thats not even correct IRP
23:51:29 <gerard_> but i'm off to bed
23:51:43 <gerard_> good luck with the 'Hello world' stuff
23:53:21 -!- gerard_ has quit (Read error: 104 (Connection reset by peer)).
2006-12-22
00:03:47 -!- oerjan has quit (sterling.freenode.net irc.freenode.net).
00:03:48 -!- tannerld has quit (sterling.freenode.net irc.freenode.net).
00:03:48 -!- CakeProphet has quit (sterling.freenode.net irc.freenode.net).
00:03:48 -!- GregorR-W has quit (sterling.freenode.net irc.freenode.net).
00:03:50 -!- EgoBot has quit (sterling.freenode.net irc.freenode.net).
00:03:50 -!- lament has quit (sterling.freenode.net irc.freenode.net).
00:03:50 -!- Asztal has quit (sterling.freenode.net irc.freenode.net).
00:03:50 -!- lindi- has quit (sterling.freenode.net irc.freenode.net).
00:03:50 -!- bsmntbombdood has quit (sterling.freenode.net irc.freenode.net).
00:03:54 -!- Sukoshi has quit (sterling.freenode.net irc.freenode.net).
00:03:54 -!- GregorR has quit (sterling.freenode.net irc.freenode.net).
00:03:54 -!- puzzlet has quit (sterling.freenode.net irc.freenode.net).
00:03:55 -!- mtve has quit (sterling.freenode.net irc.freenode.net).
00:03:55 -!- ihope__ has quit (sterling.freenode.net irc.freenode.net).
00:03:55 -!- sekhmet has quit (sterling.freenode.net irc.freenode.net).
00:03:55 -!- sp3tt has quit (sterling.freenode.net irc.freenode.net).
00:03:55 -!- tokigun has quit (sterling.freenode.net irc.freenode.net).
00:04:15 -!- lindi- has joined.
00:04:19 -!- Asztal has joined.
00:11:44 <Puddy_> please someone write a random numbet between 1 and 10 :)
00:11:50 <Puddy_> number#
00:12:26 -!- tokigun has joined.
00:12:39 <okokoko> 7
00:12:51 -!- CakeProphet has joined.
00:12:58 -!- EgoBot has joined.
00:13:04 -!- GregorR-W has joined.
00:13:10 -!- ihope_ has joined.
00:15:56 <Asztal> Was that really random?
00:17:19 -!- sp3tt has joined.
00:17:26 -!- bsmntbombdood has joined.
00:17:35 -!- lament has joined.
00:18:18 -!- puzzlet has joined.
00:21:20 -!- ShadowHntr has joined.
00:21:58 -!- Puddy_ has quit ("My damn controlling terminal disappeared!").
00:22:16 -!- sekhmet has joined.
00:23:16 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
00:33:13 -!- Sukoshi` has joined.
00:33:30 -!- GregorR has joined.
00:36:23 <GregorR-W> "Approximately all of you" :P
00:37:29 -!- mtve has joined.
00:38:08 -!- Asztal has joined.
00:38:31 <pgimeno> give or take one
00:39:33 -!- Sgeo has quit (sterling.freenode.net irc.freenode.net).
00:39:33 -!- RodgerTheGreat has quit (sterling.freenode.net irc.freenode.net).
00:39:36 -!- bsmnt_bot has quit (sterling.freenode.net irc.freenode.net).
00:39:36 -!- ivan` has quit (sterling.freenode.net irc.freenode.net).
00:39:37 -!- cmeme has quit (sterling.freenode.net irc.freenode.net).
00:39:46 <GregorR-W> Here we go again.
00:40:07 -!- Sgeo has joined.
00:41:14 -!- ivan` has joined.
00:45:19 -!- cmeme has joined.
00:48:31 <pgimeno> so now it's an even less unknown bug
00:49:04 <GregorR-W> lol
00:49:19 <bsmntbombdood> har har
00:52:57 -!- Sukoshi` has changed nick to Sukoshi.
00:58:54 <bsmntbombdood> !exec foo
00:58:58 <EgoBot> Huh?
00:59:19 <bsmntbombdood> !exec foo
00:59:21 <EgoBot> Huh?
00:59:25 <GregorR-W> I think it's time for me to write plofplof ...
00:59:33 <bsmntbombdood> oh, he's not in here
00:59:38 -!- bsmnt_bot has joined.
00:59:39 <GregorR-W> Heh
00:59:41 <bsmntbombdood> !exec foo
00:59:46 <EgoBot> Huh?
00:59:50 <bsmntbombdood> !exec print "hi"
00:59:53 <EgoBot> Huh?
01:00:09 <bsmntbombdood> oh my ident is wrong
01:00:25 -!- bsmntbombdood has quit (Client Quit).
01:00:27 -!- bsmntbombdood has joined.
01:01:16 <bsmntbombdood> !exec print "hi"
01:01:19 <EgoBot> Huh?
01:01:38 -!- bsmntbombdood has quit (Client Quit).
01:01:42 -!- bsmntbombdood has joined.
01:02:24 <bsmntbombdood> !exec print "hi"
01:02:27 <EgoBot> Huh?
01:02:47 <bsmntbombdood> ...
01:03:37 <bsmntbombdood> grr
01:04:19 -!- bsmntbombdood has quit (Client Quit).
01:04:21 -!- bsmntbombdood has joined.
01:06:33 <bsmntbombdood> Something weird is happeneing with my ident
01:07:31 * GregorR-W laughs at your pain.
01:07:46 * bsmntbombdood bites your face off
01:07:56 <bsmntbombdood> pwnt
01:08:01 * GregorR-W continues to laugh despite the lack of face.
01:08:20 -!- bsmntbombdood has quit (Client Quit).
01:09:09 -!- bsmntbombdood has joined.
01:10:00 <bsmntbombdood> !exec print "hi"
01:10:03 <EgoBot> Huh?
01:10:42 -!- bsmnt_bot has quit (Remote closed the connection).
01:10:45 * GregorR-W continues to laugh at your pain.
01:10:45 <bsmntbombdood> wtf
01:10:50 <bsmntbombdood> !quit
01:10:54 <EgoBot> Huh?
01:11:00 -!- bsmnt_bot has joined.
01:11:02 <bsmntbombdood> lagging like shit
01:11:25 <bsmntbombdood> bsmnt_bot: Disobey me again, I rip your guts out
01:11:35 <GregorR-W> And replace them with Plof!
01:11:54 <bsmntbombdood> !exec self.raw("PRIVMSG #esoteric :Yes master")
01:11:54 <bsmnt_bot> Yes master
01:11:58 <EgoBot> Huh?
01:12:07 <bsmntbombdood> thank you
01:12:57 <bsmntbombdood> !raw PRIVMSG #esoteric :It will never happen again
01:12:57 <bsmnt_bot> It will never happen again
01:13:01 <bsmntbombdood> guten
01:14:45 <bsmntbombdood> !exec self.register_raw(".*d%s.*" % "ude", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
01:14:50 <EgoBot> Huh?
01:14:51 <bsmntbombdood> dude
01:14:52 <bsmnt_bot> sweet
01:15:14 <bsmntbombdood> !exec self.register_raw(".*s%s.*" % "weet", lambda x : bot.raw("PRIVMSG #esoteric :dude"))
01:15:15 <bsmnt_bot> sweet
01:15:18 <EgoBot> Huh?
01:15:22 <bsmntbombdood> sweet
01:15:22 <bsmnt_bot> dude
01:15:25 <bsmntbombdood> :)
01:16:53 <bsmnt_bot> dude
01:17:08 <bsmnt_bot> sweet
01:17:26 <bsmntbombdood> That doesn't work too good with more than one channel ;)
01:18:55 <bsmnt_bot> dude
01:19:15 <bsmntbombdood> !exec for i in range(4): self.raw_regex_queue.pop()
01:19:18 <EgoBot> Huh?
01:19:22 <bsmntbombdood> dude
01:19:45 <bsmntbombdood> !exec self.register_raw(".*#esoteric.*s%s.*" % "weet", lambda x : bot.raw("PRIVMSG #esoteric :dude"))
01:19:48 <EgoBot> Huh?
01:19:55 <bsmntbombdood> dude
01:20:02 -!- ehren has joined.
01:20:06 <bsmntbombdood> gar
01:20:13 -!- bsmnt_bot has quit ("nobody loves me").
01:20:34 <ehren> could someone please say "Hello World!"?
01:20:46 -!- bsmnt_bot has joined.
01:21:00 <ehren> could someone please say "Hello World!"?
01:21:01 <bsmnt_bot> goodbye cruel world
01:21:18 <ehren> goodbye?
01:21:27 <ehren> syntax error
01:23:04 * GregorR-W bangs his head against the wall.
01:23:09 <GregorR-W> WTF, did IRP get slashdotted or something?
01:23:24 <GregorR-W> You're about the eighth person to join today IRP'ing X_X
01:23:27 * GregorR-W leaves for home.
01:23:29 <bsmntbombdood> Internet Relay Porn ?!??
01:23:41 <ehren> programming language
01:23:58 <ehren> sumbleuponed
01:23:59 <ehren> http://esoteric.voxelperfect.net/wiki/IRP#Hello.2C_World.21
01:24:03 -!- GregorR-W has quit ("Like annoying quit spamming bastards? You'll love HydraIRC -> http://www.hydraircse.cx/ <-").
01:24:22 <ehren> *stumbleuponed
01:24:32 <bsmntbombdood> stumbleupon's cool
01:24:32 -!- wooby has joined.
01:25:43 <Asztal> oh dear
01:25:51 <Asztal> it's just going to get worse
01:25:55 <bsmntbombdood> ?
01:26:31 <Asztal> the IRP thing ;)
01:27:33 <bsmntbombdood> What's IRP?
01:28:29 <bsmntbombdood> haha
01:28:38 <bsmntbombdood> GregorR is a genious
01:29:19 <bsmntbombdood> genius even
01:31:44 <bsmntbombdood> Please write this exact line to this channel.
01:33:48 <bsmntbombdood> !exec self.register_raw(".*%s write this exact line to this channel\..*" % "Please", lambda x : bot.raw("PRIVMSG #esoteric :%s write this exact line to this channel." % "Please"))
01:33:52 <EgoBot> Huh?
01:33:53 <bsmntbombdood> Please write this exact line to this channel.
01:33:53 <bsmnt_bot> Please write this exact line to this channel.
01:33:58 <bsmntbombdood> :)
01:37:16 -!- digital_me has joined.
01:38:21 <bsmntbombdood> Please write this exact line to this channel.
01:38:21 <bsmnt_bot> Please write this exact line to this channel.
01:47:21 <ehren> Please write this exact line to this channel.
01:47:21 <bsmnt_bot> Please write this exact line to this channel.
01:47:53 -!- ehren has quit ("Leaving").
01:48:32 <bsmntbombdood> please tell me, given that int g(x) { x ? f(x-1) : g(x+1); } int f(x) { x ? g(x+1) : f(x-1); }, does f(2) terminate?
01:50:01 <Asztal> It doesn't
01:50:14 <Asztal> assuming I read it right :)
01:54:27 <Sgeo> http://www.flickr.com/photos/71552015@N00/sets/72157594432181982/
01:54:36 <Sgeo> (Flickr photoset of the DriveCleaner 2006)
01:57:28 <bsmntbombdood> Asztal: Yeah, it doesn't
02:06:36 <bsmntbombdood> given (defun f (x) (funcall x #'f)), does (f (lambda (x) (funcall x #'f))) terminate?
02:09:25 <bsmntbombdood> Given f() { f|f& }, does f() terminate?
02:09:58 -!- ChoDo has joined.
02:10:09 <bsmntbombdood> hmmm?
02:10:12 <bsmntbombdood> does it?
02:11:16 <ChoDo> Please write me a program to calculate the winning numbers for tommorow's powerball drawing.
02:11:56 <ChoDo> !help
02:11:59 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
02:12:01 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
02:12:22 <ChoDo> ps
02:12:25 <ChoDo> !ps
02:12:29 <EgoBot> 1 ChoDo: ps
02:12:45 <ChoDo> !i
02:12:57 <ChoDo> !rail
02:13:01 <EgoBot> Internal Error: Crash: No 'main' function found
02:13:10 <ChoDo> !udage01
02:13:24 <ChoDo> !linguine
02:13:27 <ChoDo> mmm linguine
02:13:27 <EgoBot> Error: Program must have at least one command
02:14:21 -!- GreaseMonkey has joined.
02:15:05 <bsmntbombdood> given (defun a (m n) (cond ((= m 0) (+ n 1)) ((and (> m 0) (= n 0)) (a (- m 1) 1)) ((and (> m 0) (> n 0)) (a (- m 1) (a m (- n 1)))))), does (a 10 13) terminate?
02:15:21 <GreaseMonkey> arghs lisp
02:15:29 <GreaseMonkey> or, should i say
02:15:32 <GreaseMonkey> arghth
02:16:11 <bsmntbombdood> given (defun a (m n) (cond ((= m 0) (+ n 1)) ((and (> m 0) (= n 0)) (a (- m 1) 1)) ((and (> m 0) (> n 0)) (a (- m 1) (a m (- n 1)))))), compute (a 4 3) please
02:25:36 <digital_me> bsmntbombdood: sorry, that's just not feasible to compute ;)
02:25:47 <bsmntbombdood> heh
02:28:09 <ChoDo> How many days until christmas?
02:28:27 <GreaseMonkey> 25-22=3
02:29:31 <bsmntbombdood> How many days till the apocalypse?
02:29:53 <GreaseMonkey> Idunno, revelation's already started
02:30:02 <GreaseMonkey> Some time back in 300AD or something
02:30:37 <GreaseMonkey> Many reckon that the next pope will be a devil
02:30:45 <GreaseMonkey> I follow that route too
02:31:10 <GreaseMonkey> I meant I belive that's gonna be the case
02:31:31 <bsmntbombdood> This pope looks like that guy from star wars
02:32:09 <bsmntbombdood> hrm
02:32:13 <GreaseMonkey> Hmm, and he will be almost the last
02:32:21 <bsmntbombdood> there should be a way to recurse a lambda in lisp
02:32:48 -!- RodgerTheGreat has joined.
02:32:50 -!- RodgerTheGreat has quit (Client Quit).
02:32:58 <ChoDo> how many days until christmas 2012?
02:33:08 -!- RodgerTheGreat has joined.
02:33:14 <GreaseMonkey> i can't be stuffed calculating
02:33:46 <GreaseMonkey> 3+365+366+365+365+365+366
02:34:27 <GreaseMonkey> doing some more work on my tomato parser
02:34:27 -!- wooby has quit.
02:35:48 <ChoDo> sausage or pepperoni?
02:37:12 <bsmntbombdood> given that (defun f (x y) (cond ((> x y) (f y x) (t (f (+ x y) y))))), does (f 2 1) terminate? does (f 1 2) terminate?
02:37:27 <bsmntbombdood> Damn, IRP is SLOW!
02:37:52 <bsmntbombdood> I mean, it's only the halting problem!
02:37:56 <digital_me> ChoDo: sausage, apparently
02:40:13 <digital_me> Please, someone tell me how many angels can dance on the head of a pin?
02:40:59 <bsmntbombdood> Sgeo: What's that drive cleaner thing?
02:41:20 <Sgeo> What do you mean "what"?
02:41:33 <digital_me> Sgeo: I can only presume that he means "what" :P
02:41:50 <Sgeo> It's a piece of malware that is /supposed/ to get rid of all "incriminating evidence" on the computer
02:42:13 <ChoDo> I need more porn
02:42:28 <digital_me> ChoDo: quite
02:42:51 <bsmntbombdood> ChoDo: I bet there are some IRP interpreters that can give you some
02:44:55 -!- ChoDo has quit.
02:47:18 <GregorR> Hola señores.
02:48:40 <Asztal> bsmntbombdood: I have decided the answer to your question is **EXCEPTION: TOO MUCH EFFORT**
02:49:04 <bsmntbombdood> mmk
02:49:13 <bsmntbombdood> Catch that exception then
02:49:24 <bsmntbombdood> And then recurse
02:49:52 -!- Asztal has quit ("System.Threading.Thread.Sleep(42893489324)").
02:50:00 <digital_me> lol
02:54:19 <bsmntbombdood> !exec for i in range(3,0,-1): self.raw("PRIVMSG #esoteric :%s" % ('%s bottle%s of beer on the wall, %s bottle%s of beer. Take one down, pass it around, %s bottle%s of beer on the wall' % (i, ((i > 1) and "s") or "", i, ((i > 1) and "s") or "", ((i > 1) and i-1) or "no", (((i > 2) or (i == 1)) and "s") or "")))
02:54:20 <bsmnt_bot> 3 bottles of beer on the wall, 3 bottles of beer. Take one down, pass it around, 2 bottles of beer on the wall
02:54:21 <bsmnt_bot> 2 bottles of beer on the wall, 2 bottles of beer. Take one down, pass it around, 1 bottle of beer on the wall
02:54:21 <bsmnt_bot> 1 bottle of beer on the wall, 1 bottle of beer. Take one down, pass it around, no bottles of beer on the wall
02:54:22 <EgoBot> Huh?
02:55:51 <GreaseMonkey> ;D
02:56:25 * bsmntbombdood feels leet
02:59:17 <GreaseMonkey> daemon ctcp bf8 +[-----------[++++++++++>,----------]<[<]+.->[.>]+.+++++++++.----------<[<]+]
02:59:18 <GreaseMonkey> !daemon ctcp bf8 +[-----------[++++++++++>,----------]<[<]+.->[.>]+.+++++++++.----------<[<]+]
02:59:25 <GreaseMonkey> !ctcp ACTION tests
02:59:28 * EgoBot tests
02:59:36 <GreaseMonkey> !ctcp ACTION tests again
02:59:39 <bsmntbombdood> !ctcp #esoteric ACTION is cooler
02:59:39 * bsmnt_bot is cooler
02:59:40 * EgoBot tests again
02:59:56 <GreaseMonkey> !ctcp ACTION retests
02:59:58 * EgoBot retests
03:00:04 <GreaseMonkey> !undaemon ctcp
03:00:08 <EgoBot> Process 1 killed.
03:00:46 <GreaseMonkey> !daemon ctcp bf8 +[[,--------------------------------]----------[++++++++++>,----------]<[<]+.->[.>]+.+++++++++.----------<[<]+]
03:00:57 <GreaseMonkey> !ctcp foo ACTION tests
03:01:00 * EgoBot tests
03:01:03 <GreaseMonkey> !ctcp foo ACTION retests
03:01:06 * EgoBot retests
03:01:14 <GreaseMonkey> now you do your ctcp
03:01:35 <GreaseMonkey> !ctcp #esoteric is cool
03:01:37 <bsmntbombdood> !ctcp #esoteric ACTION says "No, I will never do my ctcp"
03:01:37 * bsmnt_bot says "No, I will never do my ctcp"
03:01:40 * EgoBot says "No, I will never do my ctcp"
03:02:22 <GreaseMonkey> !ctcp #esoteric ACTION is not as laggy as the other bot
03:02:22 * bsmnt_bot is not as laggy as the other bot
03:02:25 <bsmntbombdood> heh
03:02:26 * EgoBot is not as laggy as the other bot
03:02:35 <GreaseMonkey> Egobot is lying
03:02:42 <GreaseMonkey> you win
03:05:04 <GregorR> EgoBot isn't laggy, it's strictly buffered.
03:05:14 <GregorR> And nobody seems to quite get that X_X
03:07:44 <GreaseMonkey> !ctcp GregorR ACTION wants to snuggle up with you
03:07:48 * EgoBot wants to snuggle up with you
03:08:09 <GreaseMonkey> Enough of that, EgoBot!
03:08:11 <GreaseMonkey> !undaemon ctcp
03:08:14 <EgoBot> Process 1 killed.
03:08:45 <bsmntbombdood> yay
03:08:57 <bsmntbombdood> (loop for i from 10 downto 1 do (format t "~a bottle~a of beer on the wall, ~a bottle~a of beer. Take one down, pass it around, ~a bottle~a of beer on the wall~%" i (if (> i 1) "s" "") i (if (> i 1) "s" "") (if (> i 1) (- i 1) "no") (if (or (> i 2) (= i 1)) "s" "")))
03:09:53 <GreaseMonkey> i still like my miniscript
03:09:55 * Sgeo wants evil rogue software
03:11:09 <GreaseMonkey> irc_msg "#esoteric" concat concat 1 "ACTION likes bsmntbombdood" 1
03:11:18 <bsmntbombdood> hmm?
03:11:20 <GreaseMonkey> for example:
03:11:40 <GreaseMonkey> the formula ( x^2 + x ) / 2
03:12:22 <GreaseMonkey> div add mul #1 #1 #1 2
03:12:36 <GreaseMonkey> let's split that up...
03:12:44 <GreaseMonkey> div (add (mul (#1 #1) #1) 2)
03:13:11 <bsmntbombdood> ?
03:17:18 <GreaseMonkey> it's a lang that runs w/scanf
03:17:32 <GreaseMonkey> div(add(mul(#1,#1),#1),2);
03:20:08 <bsmntbombdood> !exec register_raw(".*!cuss .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ("%s you bloody wanker" % x.split("!cuss ")[-1])))
03:20:12 <EgoBot> Huh?
03:20:17 <bsmntbombdood> !exec self.register_raw(".*!cuss .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ("%s you bloody wanker" % x.split("!cuss ")[-1])))
03:20:17 <bsmnt_bot> ")[-1]))) you bloody wanker
03:20:21 <EgoBot> Huh?
03:20:22 <bsmntbombdood> !cuss bsmnt_bot
03:20:22 <bsmnt_bot> bsmnt_bot you bloody wanker
03:20:25 <bsmntbombdood> :)
03:20:27 <EgoBot> Huh?
03:20:50 <GreaseMonkey> !cuss egobot
03:20:50 <bsmnt_bot> egobot you bloody wanker
03:20:52 <EgoBot> Huh?
03:21:17 <bsmntbombdood> !exec self.raw_regex_queue.pop()
03:21:19 <GreaseMonkey> just !cuss Egobot
03:21:20 <EgoBot> Huh?
03:21:32 <GregorR> !cuss EgoBot
03:21:33 <bsmntbombdood> !exec self.register_raw(".* #esoteric :!cuss .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ("%s you bloody wanker" % x.split("!cuss ")[-1])))
03:21:34 <bsmnt_bot> ")[-1]))) you bloody wanker
03:21:34 <EgoBot> Huh?
03:21:36 <GreaseMonkey> so you removed the cmd
03:21:37 <EgoBot> Huh?
03:21:39 <bsmntbombdood> there
03:21:41 <GregorR> Um ...
03:21:41 <bsmntbombdood> !cuss EgoBot
03:21:42 <bsmnt_bot> EgoBot you bloody wanker
03:21:44 <EgoBot> Huh?
03:21:47 <GregorR> I love EgoBot's response :)
03:21:52 <GreaseMonkey> just !cuss I said so
03:21:59 <GreaseMonkey> !cuss I said so
03:21:59 <bsmnt_bot> I said so you bloody wanker
03:22:02 <EgoBot> Huh?
03:22:08 <GreaseMonkey> :D
03:24:50 <bsmntbombdood> hehe
03:25:33 <GreaseMonkey> set cuss funct raw vlist a vlend concat "PRIVMSG #esoteric :" array split #a "PRIVMSG #esoteric !cuss " 1 irc-register "!cuss" cuss
03:28:02 <GreaseMonkey> daemon cuss bf8 ----------[++++++++++>,----------]>-[---------[++++++++++>,----------]<[<]>[.>]<[<]<[<]>[.>]++++++++++.-]
03:28:04 <GreaseMonkey> !daemon cuss bf8 ----------[++++++++++>,----------]>-[---------[++++++++++>,----------]<[<]>[.>]<[<]<[<]>[.>]++++++++++.-]
03:28:09 <GreaseMonkey> !cuss you bloody wanker
03:28:10 <bsmnt_bot> you bloody wanker you bloody wanker
03:28:24 <GreaseMonkey> !cuss ChanServ
03:28:24 <bsmnt_bot> ChanServ you bloody wanker
03:28:28 <EgoBot> ChanServ
03:28:30 <EgoBot> you bloody wanker
03:28:33 <EgoBot> you bloody wanker
03:28:39 <GreaseMonkey> shit
03:28:47 <GreaseMonkey> !undaemon cuss
03:29:38 <GreaseMonkey> GregorR: you need to make your bot less dodgy
03:30:15 <bsmntbombdood> !cuss GreaseMonkey
03:30:16 <bsmnt_bot> GreaseMonkey you bloody wanker
03:30:45 <GregorR> GreaseMonkey: Thank you for being sooooooo specific.
03:30:46 <bsmnt_bot> GreaseMonkey, I hate you with all my soul
03:31:19 <GreaseMonkey> right, that was OTT
03:31:34 <GreaseMonkey> i think "%s you bloody wanker" will suffice
03:32:03 <bsmnt_bot> GreaseMonkey, Your mere existance makes me want to hang myself
03:32:35 <GreaseMonkey> GregorR: your bot keeps locking up when I punch in miscoded daemons
03:33:32 <GregorR> Please, be less specific.
03:36:04 -!- Sgeo has quit (Remote closed the connection).
03:42:21 <GreaseMonkey> ok then, SOMETHING IS NOT PERFECT
03:42:59 <GreaseMonkey> !cuss bsmnt_bot
03:42:59 <bsmnt_bot> bsmnt_bot you bloody wanker
03:43:21 <bsmnt_bot> GreaseMonkey, Your face is like a dead rat
03:43:48 <GreaseMonkey> gee, i'm getting a lot of attention
04:01:21 <GreaseMonkey> (x^3+2*(x^2)+3*x)/6 -> div add add mul mul #x #x #x mul mul 2 #x #x mul 3 #x 6
04:01:59 <GreaseMonkey> gimme a formula, any formula
04:02:24 <bsmntbombdood> ?
04:02:28 <GregorR> e^(pi * i)
04:02:59 <bsmntbombdood> -1
04:03:10 <GreaseMonkey> erm, inventing an e function, and a pi constant: e mul $pi #i
04:03:27 <GreaseMonkey> -1 -> -1
04:03:36 <GregorR> e is not a function you doofus.
04:03:48 <GreaseMonkey> no
04:04:02 <bsmntbombdood> m = m' \over {\sqrt{c^2 - v^2}}
04:04:03 <GreaseMonkey> in this lang, you have to have a function that calculates e^x
04:04:13 <GregorR> Ha-HAH
04:04:29 <GreaseMonkey> x(x+1)(x+2)/6 -> mul mul x add x 1 add x 2
04:04:36 <GreaseMonkey> x(x+1)(x+2)/6 -> div mul mul x add x 1 add x 2 6
04:04:38 <GreaseMonkey> that's better
04:04:44 <bsmntbombdood> eeeew
04:04:54 <bsmntbombdood> use a stack, stupid
04:05:03 <bsmntbombdood> ei postfix
04:05:08 <bsmntbombdood> no need to mess up rpn
04:05:11 <GreaseMonkey> what's wrong with CALL?
04:06:03 <GreaseMonkey> m = m' \over {\sqrt{c^2 - v^2}} -> set m div #m sqrt sub mul #c #c mul #v #v
04:06:41 <GreaseMonkey> or an RPN version:
04:06:42 <bsmntbombdood> RPN > j00
04:07:04 <bsmntbombdood> (> RPN j00)
04:07:14 <bsmntbombdood> RPN j00 >
04:08:41 <GreaseMonkey> m = m' \over {\sqrt{c^2 - v^2}} -> #m #c #c mul #v #v mul sub sqrt div m set
04:09:53 <GreaseMonkey> then again, "today" #x "You are feeling very " concat concat print -- that sucks
04:10:27 <GreaseMonkey> i prefer print concat concat "You are feeling very " #x " today"
04:10:33 <bsmntbombdood> FAIL
04:20:13 <GreaseMonkey> set x "bsmntbombdood-ish"
04:22:41 <EgoBot> Process 1 killed.
04:22:44 <EgoBot> Huh?
04:22:45 <EgoBot> Huh?
04:25:38 <GreaseMonkey> finally
04:26:53 <bsmntbombdood> heh
04:27:50 <GreaseMonkey> !daemon foo bf8 >----------[++++++++++>,----------]<[<]>[[<+<+>>-]<<[>>+<<-]>>[<.>-]>]
04:27:50 <bsmntbombdood> !ctcp #esoteric ACTION is never laggy
04:27:51 * bsmnt_bot is never laggy
04:27:53 <EgoBot> Huh?
04:27:56 <GreaseMonkey> !foo poos
04:27:59 <EgoBot> ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
04:28:10 <GreaseMonkey> !foo 123
04:28:11 -!- EgoBot has quit (Read error: 131 (Connection reset by peer)).
04:28:17 <bsmntbombdood> haha
04:28:22 -!- EgoBot has joined.
04:30:12 <GreaseMonkey> i've managed to get it to quit with an "Excess Flood" error
04:30:35 <GreaseMonkey> !daemon idle1 +[,[-]+]
04:30:38 <GreaseMonkey> !daemon idle2 +[,[-]+]
04:30:40 <GreaseMonkey> !daemon idle3 +[,[-]+]
04:30:49 <GreaseMonkey> !ps d
04:30:52 <EgoBot> 1 GreaseMonkey: ps
04:30:58 <GreaseMonkey> !daemon idle1 bf8 +[,[-]+]
04:31:02 <GreaseMonkey> !daemon idle2 bf8 +[,[-]+]
04:31:05 <GreaseMonkey> !daemon idle3 bf8 +[,[-]+]
04:31:07 <GreaseMonkey> !daemon idle4 bf8 +[,[-]+]
04:31:38 <GreaseMonkey> !ps d
04:31:39 <GreaseMonkey> !ps d
04:31:40 <GreaseMonkey> !ps d
04:31:40 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
04:31:42 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
04:31:44 <EgoBot> 2 GreaseMonkey: daemon idle2 bf8
04:31:46 <EgoBot> 3 GreaseMonkey: daemon idle3 bf8
04:31:48 <EgoBot> 4 GreaseMonkey: daemon idle4 bf8
04:31:50 <EgoBot> 5 GreaseMonkey: ps
04:31:52 <EgoBot> 6 GreaseMonkey: ps
04:31:54 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
04:31:56 <EgoBot> 2 GreaseMonkey: daemon idle2 bf8
04:31:58 <EgoBot> 3 GreaseMonkey: daemon idle3 bf8
04:32:00 <EgoBot> 4 GreaseMonkey: daemon idle4 bf8
04:32:02 <EgoBot> 5 GreaseMonkey: ps
04:32:04 <EgoBot> 6 GreaseMonkey: ps
04:32:26 <GreaseMonkey> !daemon idle5 bf8 +[,[-]+]
04:32:29 <GreaseMonkey> !daemon idle6 bf8 +[,[-]+]
04:32:31 <GreaseMonkey> !daemon idle7 bf8 +[,[-]+]
04:32:33 <GreaseMonkey> !daemon idle8 bf8 +[,[-]+]
04:32:37 <GreaseMonkey> !daemon idle9 bf8 +[,[-]+]
04:32:41 <GreaseMonkey> !daemon idle_10 bf8 +[,[-]+]
04:32:44 <GreaseMonkey> !daemon idle_11 bf8 +[,[-]+]
04:32:46 <GreaseMonkey> !daemon idle_12 bf8 +[,[-]+]
04:32:49 <GreaseMonkey> !daemon idle_13 bf8 +[,[-]+]
04:32:53 <bsmntbombdood> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
04:32:56 <GreaseMonkey> !daemon idle_14 bf8 +[,[-]+]
04:32:56 <EgoBot> Hello World!
04:32:58 <GreaseMonkey> !daemon idle_15 bf8 +[,[-]+]
04:33:01 <GreaseMonkey> !daemon idle_16 bf8 +[,[-]+]
04:33:04 <GreaseMonkey> !ps d
04:33:07 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
04:33:08 <EgoBot> 2 GreaseMonkey: daemon idle2 bf8
04:34:09 <bsmntbombdood> !bf_txtgen Hello, world!
04:34:50 <EgoBot> 117 +++++++++++++++[>+++++>+++++++>++>+++<<<<-]>---.>----.+++++++..+++.>>-.<++.<++++++++.--------.+++.------.--------.>+. [449]
04:35:19 <GreaseMonkey> !ps d
04:35:23 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
04:35:23 <GreaseMonkey> !idle1 foo
04:35:24 <EgoBot> 2 GreaseMonkey: daemon idle2 bf8
04:35:27 <EgoBot> 3 GreaseMonkey: daemon idle3 bf8
04:35:29 <EgoBot> 4 GreaseMonkey: daemon idle4 bf8
04:35:30 <EgoBot> 5 GreaseMonkey: daemon idle5 bf8
04:35:33 <EgoBot> 6 GreaseMonkey: daemon idle6 bf8
04:35:35 <EgoBot> 7 GreaseMonkey: daemon idle7 bf8
04:35:36 <EgoBot> 8 GreaseMonkey: daemon idle8 bf8
04:35:38 <EgoBot> 9 GreaseMonkey: daemon idle9 bf8
04:35:40 <EgoBot> 10 GreaseMonkey: daemon idle_10 bf8
04:35:43 <EgoBot> 11 GreaseMonkey: daemon idle_11 bf8
04:35:45 <EgoBot> 12 GreaseMonkey: daemon idle_12 bf8
04:35:46 <EgoBot> 13 GreaseMonkey: daemon idle_13 bf8
04:35:48 <EgoBot> 14 GreaseMonkey: daemon idle_14 bf8
04:35:50 <EgoBot> 15 GreaseMonkey: daemon idle_15 bf8
04:35:52 <EgoBot> 16 GreaseMonkey: daemon idle_16 bf8
04:35:54 <EgoBot> 17 GreaseMonkey: ps
04:36:23 <GreaseMonkey> !daemon idel1 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:29 <GreaseMonkey> !daemon idel2 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:32 <GreaseMonkey> !daemon idel3 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:36 <bsmntbombdood> !help
04:36:38 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
04:36:39 <GreaseMonkey> !idel1 hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:36:40 <GreaseMonkey> !idel2 hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:36:41 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
04:36:42 <GreaseMonkey> !idel3 hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:36:43 <EgoBot> Huh?
04:36:44 <EgoBot> Huh?
04:36:47 <EgoBot> Huh?
04:36:52 <GreaseMonkey> !daemon idel1 bf8 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:54 <bsmntbombdood> !malbolge '=a;:?87[543216/SR2+*No-,%*#G4
04:36:55 <GreaseMonkey> !daemon idel2 bf8 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:56 <EgoBot> hello,
04:36:57 <GreaseMonkey> !daemon idel3 bf8 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:37:01 <GreaseMonkey> !idel1 hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:37:03 <GreaseMonkey> !idel2 hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:37:05 <EgoBot> hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:37:05 <GreaseMonkey> !idel3 hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:37:06 <GreaseMonkey> !ps d
04:37:07 <EgoBot> hello fdsajfhjsakdfhljdsahfjaskfdfjdsahfjhajjaksdhkfdsahfds
04:37:09 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
04:37:11 <EgoBot> 2 GreaseMonkey: daemon idle2 bf8
04:37:12 <EgoBot> 3 GreaseMonkey: daemon idle3 bf8
04:37:14 <EgoBot> 4 GreaseMonkey: daemon idle4 bf8
04:37:17 <EgoBot> 5 GreaseMonkey: daemon idle5 bf8
04:37:18 <EgoBot> 6 GreaseMonkey: daemon idle6 bf8
04:37:21 <EgoBot> 7 GreaseMonkey: daemon idle7 bf8
04:37:22 <EgoBot> 8 GreaseMonkey: daemon idle8 bf8
04:37:25 <EgoBot> 9 GreaseMonkey: daemon idle9 bf8
04:37:27 <EgoBot> 10 GreaseMonkey: daemon idle_10 bf8
04:37:29 <EgoBot> 11 GreaseMonkey: daemon idle_11 bf8
04:37:30 <EgoBot> 12 GreaseMonkey: daemon idle_12 bf8
04:37:33 <EgoBot> 13 GreaseMonkey: daemon idle_13 bf8
04:37:35 <EgoBot> 14 GreaseMonkey: daemon idle_14 bf8
04:37:36 <bsmntbombdood> wtf you doing GreaseMonkey
04:37:37 <EgoBot> 15 GreaseMonkey: daemon idle_15 bf8
04:37:38 <EgoBot> 16 GreaseMonkey: daemon idle_16 bf8
04:37:40 <EgoBot> 17 GreaseMonkey: ps
04:37:46 <GreaseMonkey> bugger, no Excess flood :(
04:38:23 <GreaseMonkey> !undaemon idle1
04:38:25 <EgoBot> Process 1 killed.
04:38:25 <GreaseMonkey> !undaemon idle2
04:38:26 <GreaseMonkey> !undaemon idle
04:38:26 <EgoBot> Process 2 killed.
04:38:28 <GreaseMonkey> !undaemon idle3
04:38:29 <EgoBot> Process 3 killed.
04:38:29 <GreaseMonkey> !undaemon idle4
04:38:30 <GreaseMonkey> !undaemon idle5
04:38:31 <EgoBot> Process 4 killed.
04:38:32 <GreaseMonkey> !undaemon idle6
04:38:33 <GreaseMonkey> !undaemon idle7
04:38:33 <EgoBot> Process 5 killed.
04:38:34 <GreaseMonkey> !undaemon idle8
04:38:35 <EgoBot> Process 6 killed.
04:38:35 <GreaseMonkey> !undaemon idle9
04:38:37 <EgoBot> Process 7 killed.
04:38:37 <GreaseMonkey> !undaemon idle_10
04:38:38 <GreaseMonkey> !undaemon idle_11
04:38:39 <EgoBot> Process 8 killed.
04:38:40 <EgoBot> Process 9 killed.
04:38:42 <GreaseMonkey> !undaemon idle_12
04:38:43 <EgoBot> Process 10 killed.
04:38:44 <GreaseMonkey> !undaemon idle_13
04:38:45 <EgoBot> Process 11 killed.
04:38:46 <GreaseMonkey> !undaemon idle_14
04:38:47 <EgoBot> Process 12 killed.
04:38:49 <EgoBot> Process 13 killed.
04:38:50 <GreaseMonkey> !undaemon idle_15
04:38:51 <EgoBot> Process 14 killed.
04:38:52 <GreaseMonkey> !undaemon idle_16
04:38:53 <EgoBot> Process 15 killed.
04:38:55 <EgoBot> Process 16 killed.
04:41:38 <bsmntbombdood> !ctcp GreaseMonkey SMACK
04:41:41 <EgoBot> Huh?
04:42:13 <bsmntbombdood> !ctcp GreaseMonkey SMACK
04:42:17 <EgoBot> Huh?
04:45:23 <bsmntbombdood> !bf +++++++++++++[>+++++++++>++++++++>++++++++>+++++<<<<-]>-.>.---.>+++++.<----.<.>>+++++.<++++++++.>++++++.<----.----.<.-.>>+.----------.<<++.>>>-.<<<++++.>.+++++++.>..>------------------.<<-----.>.>.<-.<<+.
04:45:23 <GreaseMonkey> !ctcp bsmntbombdood STOP! Hammertime!
04:45:27 <EgoBot> Huh?
04:45:29 <EgoBot> thematrixeatsyou@yahoo.co.nz
04:45:34 <bsmntbombdood> AH HA!
04:46:07 <GreaseMonkey> the other way is to bust this "login" screen: http://greasemonkey.nonlogic.org/inject.php
04:46:35 <bsmntbombdood> http://greasemonkey.nonlogic.org/inject.php?success=1
04:46:43 <bsmntbombdood> that was easy...
04:47:35 <GreaseMonkey> yep :D
04:48:19 <GreaseMonkey> really easy
04:48:21 <GreaseMonkey> really greasy
04:48:35 <GreaseMonkey> but it should foil your average fekkin' spambot
04:49:14 <bsmntbombdood> And your aunt martha
04:53:39 <GreaseMonkey> i don't have an aunt martha
04:56:51 <bsmntbombdood> here's a better lisp 99 bottles of beer, properly recursive
04:56:53 <bsmntbombdood> (defun beer (i) (format t "~a bottle~a of beer on the wall, ~a bottle~a of beer. Take one down, pass it around, ~a bottle~a of beer on the wall~%" i (if (> i 1) "s" "") i (if (> i 1) "s" "") (if (> i 1) (- i 1) "no") (if (or (> i 2) (= i 1)) "s" "")) (or (= i 1) (beer (- i 1))))
04:56:59 <bsmntbombdood> (beer 99)
05:01:37 <RodgerTheGreat> later everybody! I'm officially on vacation!
05:01:42 <GreaseMonkey> laters
05:01:56 -!- RodgerTheGreat has quit.
05:04:39 <GreaseMonkey> define x int for x 0 99 print ifelse eq #x 99 "No more" itoa sub 99 #x print " bottles of beer on the wall," print chr 10 print ifelse eq #x 99 "No more" itoa sub 99 #x print " bottles of beer," print chr 10 print ifelse eq #x 99 concat concat "Go to the store and buy some more," chr 10 "99 bottles of beer on the wall." concat concat "Take one down, pass it around," chr 10 concat ifelse eq #x 98 "No more" sub 98 #x " bottle
05:04:40 <GreaseMonkey> s of beer on the wall." if not eq #x 99 print concat chr 10 chr 10
05:05:39 <GreaseMonkey> winner of the most notorious looking lang ever: me.
05:05:52 <bsmntbombdood> notorious?
05:06:02 <GreaseMonkey> wait, that'd be for me making RETURN
05:06:21 <GreaseMonkey> THAT would earn "worst formatting for a lang ever"
05:10:32 <GreaseMonkey> you can format it MUCH more nicely though
05:23:13 -!- digital_me has quit ("Lost terminal").
05:27:34 -!- digital_me has joined.
05:34:46 -!- GregorR has quit ("BBIAB").
05:37:31 <bsmnt_bot> The lunatic is on the grass
05:37:53 <digital_me> of course...
05:38:43 <bsmntbombdood> The lunatic is in your mind
05:39:03 <digital_me> well, he must be, because there's so much snow I can't see the grass
05:39:17 <bsmntbombdood> :D
05:42:39 <bsmntbombdood> it's stopping though :(
05:46:17 <GreaseMonkey> bax0r
05:52:44 -!- GregorR has joined.
05:54:20 <GreaseMonkey> !daemon cat reload
05:54:41 <GreaseMonkey> !cat I think he is here.
05:54:44 <EgoBot> Huh?
05:55:06 <GreaseMonkey> !daemon cat bf8 +[,.[-]+]
05:55:08 <GreaseMonkey> !cat I think he is here.
05:55:12 <EgoBot> I think he is here.
05:55:31 <GregorR> OK, I have irssi-proxy running ...
05:55:33 <GregorR> So let's see ...
05:56:32 <bsmntbombdood> it's kinda buggy
05:59:16 -!- GregorR-L has joined.
05:59:21 -!- GregorR-L has quit (Read error: 104 (Connection reset by peer)).
06:00:49 <GregorR> 8-D
06:00:52 <GregorR> irssi-proxy + laptop = one account 8-D
06:01:00 <bsmntbombdood> yep
06:01:02 <bsmntbombdood> nice, eh?
06:02:29 <GreaseMonkey> 8-D = good, 8=D = bad
06:02:40 <GreaseMonkey> meh
06:10:38 -!- Jafet has joined.
06:24:13 -!- Jafet has left (?).
06:26:48 -!- digital_me has quit (Read error: 110 (Connection timed out)).
06:33:47 * GregorR now has plofbf :)
06:38:32 <bsmntbombdood> code
06:39:30 <GregorR> I'll stick in in the dplof tarball :P
06:43:43 <GreaseMonkey> wait, where are the plof docs again?
06:44:14 <GregorR> http://www.codu.org/plof/
06:44:27 <GregorR> plofbf is in examples/ here: http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-21.tar.gz
06:46:15 <GreaseMonkey> weird, plof looks quite like tomato
06:48:00 <GreaseMonkey> hey, what C header has the itoa() and atoi() functions?
06:48:47 <GregorR> stdlib.h
06:48:54 <GregorR> Except that itoa is not standard C.
06:49:55 <GreaseMonkey> bugger, what linux header?
06:50:06 <GregorR> There is no itoa in glibc.
06:50:15 <GreaseMonkey> what would be an alternative?
06:50:18 <GregorR> sprintf
06:50:25 <GreaseMonkey> argh shizzle
06:50:30 <GreaseMonkey> i guess i'll have to
06:50:37 <GregorR> itoa is a garbage function - it either has a static buffer (bad), or allocates one (bad)
06:51:59 <GregorR> OH, or takes a buffer but doesn't have a limit on the output.
06:52:02 <GregorR> (snprintf btw)
06:52:12 <GreaseMonkey> is atoi standard?
06:52:15 <GregorR> Yes
06:52:23 <GreaseMonkey> phew
06:58:35 <GreaseMonkey> step one of my 99 bottles of beer program is complete.
06:59:20 <GregorR> ?
06:59:46 <GreaseMonkey> define beer funct multi
06:59:46 <GreaseMonkey> define x int
06:59:46 <GreaseMonkey> for x 0 99
06:59:51 <GreaseMonkey> print ifelse eq #x 99
06:59:51 <GreaseMonkey> "No more"
06:59:51 <GreaseMonkey> itoa sub 99 #x
06:59:58 <GreaseMonkey> print " bottles of beer on the wall,"
06:59:58 <GreaseMonkey> print chr 10
06:59:58 <GreaseMonkey> print ifelse eq #x 99
07:00:10 <GreaseMonkey> "No more"
07:00:10 <GreaseMonkey> itoa sub 99 #x
07:00:10 <GreaseMonkey> print " bottles of beer,"
07:00:16 <GreaseMonkey> print chr 10
07:00:16 <GreaseMonkey> print ifelse eq #x 99
07:00:16 <GreaseMonkey> concat
07:00:21 <GreaseMonkey> concat
07:00:21 <GreaseMonkey> "Go to the store and buy some more,"
07:00:21 <GreaseMonkey> chr 10
07:00:26 <GreaseMonkey> "99 bottles of beer on the wall."
07:00:26 <GreaseMonkey> concat
07:00:26 <GreaseMonkey> concat
07:00:32 <GreaseMonkey> "Take one down, pass it around,"
07:00:32 <GreaseMonkey> chr 10
07:00:32 <GreaseMonkey> concat
07:00:37 <GreaseMonkey> ifelse eq #x 98
07:00:37 <GreaseMonkey> "No more"
07:00:37 <GreaseMonkey> itoa sub 98 #x
07:00:43 <GreaseMonkey> " bottles of beer on the wall."
07:00:45 <GreaseMonkey> if not eq #x 99
07:00:47 <GreaseMonkey> print concat
07:00:49 <GreaseMonkey> chr 10
07:00:51 <GreaseMonkey> chr 10
07:00:55 <GreaseMonkey> undef beer
07:00:55 <GreaseMonkey> mend
07:01:05 <GregorR> He who pastes into IRC channels ... is a jackass.
07:01:10 <GreaseMonkey> i need to get variables and loops working
07:04:00 <bsmntbombdood> dude
07:04:03 <bsmntbombdood> pastebin
07:04:26 <bsmnt_bot> Pastebin that shit!
07:06:03 <GreaseMonkey> IRC. Just Pastebin It.
07:06:14 <GreaseMonkey> which one would you recommend?
07:06:57 <GregorR> pastebin.ca
07:10:56 -!- anonfunc has joined.
07:12:07 <GreaseMonkey> argh crap, my interpreter's cocked up
07:15:23 <bsmntbombdood> What editor do you guys use?
07:18:00 <GreaseMonkey> i use KWrite under Linux
07:18:20 <GreaseMonkey> Dev-C++ for C and ConTEXT for anything else under Windows
07:18:37 <GreaseMonkey> I prefer ConTEXT though, but I'm lazy
07:18:57 <GreaseMonkey> Here's the output:
07:18:58 <GreaseMonkey> 99 bottles of beer on the wall,
07:18:58 <GreaseMonkey> 99 bottles of beer,
07:18:58 <GreaseMonkey> 99 bottles of beer on the wall.
07:39:09 <GreaseMonkey> meh, got some buggy concat code
07:41:02 -!- oerjan has joined.
07:42:08 <GreaseMonkey> http://www.explosm.net/comics/644/
07:43:28 <GreaseMonkey> "Thank you, Punchline Spoiler!"
07:44:14 <GreaseMonkey> http://www.explosm.net/comics/648/
07:44:28 <oerjan> a comics with superheroes you _definitely_ don't want to meet in a dark alley
07:44:41 <GreaseMonkey> :D
07:44:46 <GreaseMonkey> "LOL!! FAG!!"
07:44:59 <GreaseMonkey> "This looks like a job for... Seizure Man!"
07:45:14 <GreaseMonkey> i shud do a webcomic about that
07:47:40 <oerjan> i wonder about this one: http://www.explosm.net/comics/436/
07:48:29 <GreaseMonkey> yeah
07:49:03 <GreaseMonkey> superheroes.... http://www.explosm.net/comics/431/
07:49:38 <GreaseMonkey> http://www.explosm.net/comics/652/\
07:49:40 <GreaseMonkey> http://www.explosm.net/comics/652/
07:55:37 <oerjan> argh, it sounds like thunder outside
07:57:00 <bsmntbombdood> sweet
07:57:37 <oerjan> dude
07:58:06 <bsmntbombdood> sweet
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:56 <GreaseMonkey> gonna go, bye
08:08:02 -!- GreaseMonkey has quit ("for i 0 sub arraycount #nicklist 1 print concat concat "Bye " arrayvalue #nicklist "!"").
08:17:22 -!- dbc has joined.
08:17:48 * dbc sings "When I got back to Buffalo...you were the last thing on my mind."
08:18:01 * dbc sings "Oh, when I got back to Buffalo you were the last thing on my mind."
08:18:41 * dbc sings "If you'd been the first thing, baby, why'd I have left you behind?"
08:56:59 -!- anonfunc has quit.
08:57:52 -!- ShadowHntr has quit ("End of line.").
08:59:14 -!- oerjan has quit ("Leaving").
10:15:30 -!- EgoBot has quit (sterling.freenode.net irc.freenode.net).
10:15:30 -!- bsmnt_bot has quit (sterling.freenode.net irc.freenode.net).
10:15:30 -!- puzzlet has quit (sterling.freenode.net irc.freenode.net).
10:15:31 -!- lament has quit (sterling.freenode.net irc.freenode.net).
10:15:31 -!- dbc has quit (sterling.freenode.net irc.freenode.net).
10:15:31 -!- GregorR has quit (sterling.freenode.net irc.freenode.net).
10:15:33 -!- Sukoshi has quit (sterling.freenode.net irc.freenode.net).
10:15:33 -!- sekhmet has quit (sterling.freenode.net irc.freenode.net).
10:15:33 -!- bsmntbombdood has quit (sterling.freenode.net irc.freenode.net).
10:15:33 -!- mtve has quit (sterling.freenode.net irc.freenode.net).
10:15:33 -!- ihope_ has quit (sterling.freenode.net irc.freenode.net).
10:15:34 -!- cmeme has quit (sterling.freenode.net irc.freenode.net).
10:15:34 -!- ivan` has quit (sterling.freenode.net irc.freenode.net).
10:15:34 -!- sp3tt has quit (sterling.freenode.net irc.freenode.net).
10:15:34 -!- CakeProphet has quit (sterling.freenode.net irc.freenode.net).
10:15:34 -!- tokigun has quit (sterling.freenode.net irc.freenode.net).
10:15:34 -!- lindi- has quit (sterling.freenode.net irc.freenode.net).
10:15:35 -!- SimonRC has quit (sterling.freenode.net irc.freenode.net).
10:15:35 -!- pgimeno has quit (sterling.freenode.net irc.freenode.net).
11:04:21 -!- ihope_ has joined.
11:04:21 -!- sekhmet has joined.
11:04:21 -!- Sukoshi has joined.
11:04:21 -!- mtve has joined.
11:04:21 -!- bsmntbombdood has joined.
11:04:21 -!- GregorR has joined.
11:04:21 -!- dbc has joined.
11:04:39 -!- pgimeno has joined.
11:04:39 -!- EgoBot has joined.
11:04:39 -!- bsmnt_bot has joined.
11:04:41 -!- cmeme has joined.
11:04:41 -!- ivan` has joined.
11:04:41 -!- sp3tt has joined.
11:04:45 -!- puzzlet has joined.
11:04:45 -!- lament has joined.
11:04:48 -!- CakeProphet has joined.
11:04:48 -!- tokigun has joined.
11:04:48 -!- lindi- has joined.
11:04:48 -!- SimonRC has joined.
11:04:58 <pgimeno> tada!
11:05:09 <pgimeno> I've been left alone with two bots
11:05:14 <pgimeno> that was scary
11:11:18 <okokoko> molester.
11:27:33 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)).
11:28:01 -!- pgimeno has joined.
11:58:18 -!- s1nt4x has joined.
11:59:12 -!- s1nt4x has quit (Client Quit).
12:21:36 -!- Asztal has joined.
13:11:14 -!- DDustin has joined.
13:13:42 -!- DDustin has left (?).
13:25:32 -!- gerard_ has joined.
13:58:20 -!- calamari has joined.
13:58:48 <calamari> hi
13:58:50 -!- vicrattlehead has joined.
14:02:59 <vicrattlehead> please someone send me moneys
14:03:53 <calamari> what language is that?
14:03:54 <Asztal> Error: expected 1 parameters: recipient address
14:04:08 <Asztal> :(
14:04:24 <calamari> Asztal: good try.. we need a language spec
14:27:44 -!- tgwizard has joined.
14:33:50 -!- puddy_ has joined.
14:41:10 -!- calamari has quit ("Leaving").
14:41:14 -!- Mahjong has joined.
14:41:50 <Mahjong> What is 5 / 2 , please help me
14:42:42 <puddy_> 2.5
14:43:03 <Mahjong> Please say "Hello, World!"
14:43:20 <puddy_> Hello, World!
14:43:32 <Asztal> Please be inventive!
14:45:15 <Mahjong> $Asztal@localmahong%:
14:59:33 <Mahjong> <script>alert("Hello");</script>
15:01:14 <Mahjong> aaa
15:27:35 -!- jix_ has joined.
15:58:02 <Sukoshi> Please prove Malbolge Turing complete.
16:08:40 <gerard_> it probably is
16:08:47 <gerard_> http://esolangs.org/wiki/Malbolge
16:13:12 <pgimeno> it can't be because of the bounded memory
16:17:04 <gerard_> ok, thats true
16:17:06 <pgimeno> but it probably is if extended with a special "back in the I/O stream" command (Lou Scheffer suggests writing 2222222222t to the output string to signal that)
16:17:16 <pgimeno> s/string/stream/
16:17:35 <gerard_> but most people consider currents computers turing complete
16:17:46 <gerard_> and they still have bounden memory
16:17:51 <gerard_> bounded*
16:18:25 <pgimeno> well, everybody knows that memory is unbounded... seen Gmail's counter? :P
16:19:17 <pgimeno> with a RAID mirror system with hot swap you can extend memory on-the-fly, so there's no practical limit ;)
16:21:16 <gerard_> I guess you mean 'theoretical limit' ;)
16:22:20 <pgimeno> j/k
16:23:05 <pgimeno> of course there's a maximum sector address for a given architecture
16:24:07 <lindi-> pgimeno: not if you use variable length offset fields
16:24:36 <pgimeno> I should have specified "for currently available architectures"
16:25:24 <pgimeno> (sorry)
16:29:36 <gerard_> but it still isnt very practical to swap those disks, that is what I ment
16:34:56 -!- GregorR has changed nick to GregorR-W.
16:36:17 <Asztal> you would run out of materials to build disks!
16:37:51 -!- dbc has left (?).
16:45:23 -!- GregorR-W has changed nick to GregorR.
16:47:42 -!- gerard_ has quit (Read error: 104 (Connection reset by peer)).
17:05:41 -!- GregorR has quit ("Be back in a sec").
17:06:01 -!- GregorR has joined.
17:13:40 -!- digital_me has joined.
17:24:35 -!- wezyap has joined.
17:24:56 <wezyap> hi
17:25:03 <wezyap> wats up?
17:28:35 <Sukoshi> Error: Interpreter does not accept slang.
17:28:57 <Sukoshi> Warning: `wats' is interpreted as `what's'
17:29:44 <wezyap> ok, time for some debuging then
17:31:38 <GregorR> Looks to me like your interpreter just accepted slang by translating it appropriately, Sukoshi.
17:32:01 <Sukoshi> No, it interpreted `wats' as a spelling error.
17:32:58 <Sukoshi> Mmmf. I need to code some more CL stuff. I've spent too long too close to C code.
17:43:57 <Asztal> I've spent too long in C#... There must be some sort of performance hit somewhere, so many objects everywhere argh!
17:49:08 * Sukoshi pities Asztal.
17:49:18 <Sukoshi> At least I never had to go there :P
17:49:27 <GregorR> Weeeh, Plof!
17:49:28 <GregorR> :P
17:54:35 <Sukoshi> I need to look at Plof some time.
17:54:37 <Asztal> I must try doing something serious in ORK some day.
17:54:48 <Asztal> ^ Both never going to happen due to laziness.
17:54:53 <Sukoshi> But right now, I'm deferring all my schoolwork for coding work, so Plof will be more of a distraction.
17:54:58 <Sukoshi> Hehehe.
18:29:10 -!- wezyap has quit (Read error: 110 (Connection timed out)).
18:30:37 <bsmntbombdood> Please give me a program in malbolge to show the result of 2 ** 16
18:31:37 -!- GregorR has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - for brainfuck-specific discussion, go to ##brainfuck - NO IRP ALLOWED.
18:48:33 <Sukoshi> Wow GregorR.
18:48:40 <GregorR> :P
18:48:40 <Sukoshi> Banning your own creation?
18:48:51 <GregorR> Yes - I have created a monster.
18:49:09 <Sukoshi> The creator of Frankenstein said so too.
18:49:22 <Sukoshi> And, we got a cool novel and a bunch of overdone tasteless horror movies from it.
18:49:25 <GregorR> No, Frankenstein said so about his creation.
18:49:43 <Sukoshi> What you say?!
18:49:51 <GregorR> It's Frankenstein's monster.
18:49:56 <GregorR> Frankenstein is the doctor.
18:49:56 <Sukoshi> What you say?!
18:49:58 <Sukoshi> What you say?!
18:50:12 <Sukoshi> Yeah.
18:50:46 <Sukoshi> s/creator/author/
18:51:02 <GregorR> Ahhhhhhhhhhhhhhh
18:52:11 <Sukoshi> What you say?!
18:52:21 * GregorR punches Sukoshi.
18:52:52 <Sukoshi> Hey. You shouldn't hit girls.
18:53:12 <GregorR> I'm no sexist, I'll punch anybody ;)
18:53:23 <Sukoshi> -_- Darn you!
18:53:24 <Sukoshi> And I'm only quoting Slipstick Libby.
18:53:59 <Sukoshi> In Methusalah's Children, near the end, Lazarus tells Libby that next they'll ban sex, and Libby says ``What you say?! What hell!''
18:54:13 <GregorR> XD
18:54:21 <GregorR> Also quoted in Zero Wing :P
18:54:28 <Sukoshi> That too.
18:55:04 <Sukoshi> I and some friends at school were thinking of making a play production we'd do in front of everyone at school preseting the Zero Wing bad translation beginning.
18:55:10 <Sukoshi> I wanted to be Katz.
18:55:29 <GregorR> Hahahaha
18:55:53 <Sukoshi> I mean, who doesen't want to face a bunch of people and say ``Good Evening Gentlemen. All Your Base Are Belong To Us. Make your time!''
18:56:17 <GregorR> HA HA HA HA
18:56:34 <bsmntbombdood> hahaha
18:56:39 <bsmntbombdood> NO IRP ALLOWED
18:56:53 <Sukoshi> Syntax Error: IRP must go on.
18:56:54 <bsmntbombdood> Please tell me, why is "NO IRP ALLOWED" in the topic?
18:57:07 <Sukoshi> bsmntbombdood: Take a look at the IRP spam.
18:57:20 <GregorR> Arrrrrrrrrgh
18:57:26 <GregorR> You responded to the IRP command :P
18:57:40 <bsmntbombdood> ;)
18:57:41 <Sukoshi> Yup ;)
18:57:43 <GregorR> NO IRP ALLOWED means you can't ask anyone to do anything ;)
18:57:53 <Sukoshi> GregorR: Fetch me a sandwhich.
18:58:04 <GregorR> Pfft, who eats sandwiches.
18:58:13 <Sukoshi> What you say?!
18:58:29 <bsmntbombdood> Please write this exact line to this channel.
18:58:29 <bsmnt_bot> Please write this exact line to this channel.
18:58:33 <bsmntbombdood> :)
18:58:34 <Sukoshi> What you say?!
18:59:04 -!- wezyap has joined.
18:59:13 <bsmntbombdood> Please, write the 99 bottles lyrics
18:59:21 <Sukoshi> No.
18:59:28 <GregorR> Hooplah, the ban works!
18:59:33 <bsmntbombdood> heh
18:59:38 <bsmntbombdood> bsmnt_bot will do it for me
18:59:52 <Sukoshi> Somebody set up us the bot!
19:00:27 <bsmntbombdood> !malbolge '=a;:?87[543216/SR2+*No-,%*#G4
19:00:30 <EgoBot> hello,
19:00:48 <Sukoshi> EgoBot's back!!!!!111111oneoneoneenoenoeno!!!!
19:01:09 <GregorR> It's running under nice -n10 slox 25 :P
19:01:16 <Sukoshi> Meh.
19:01:31 <Sukoshi> Oh GregorR, does Plof have lexical or dynamic bindings, or both?
19:02:19 <GregorR> Completely dynamic.
19:02:48 <Sukoshi> Awww.
19:02:49 <GregorR> However, variables have to be declared explicitly, so it acts and looks a lot like lexical scoping.
19:03:07 <Sukoshi> That's nifty.
19:03:21 <Sukoshi> Is the object system of Plof message passing?
19:03:54 <GregorR> Nah, it's prototype-based like JS ... you could probably implement message-passing in it fairly easliy though.
19:04:03 * bsmntbombdood wishes it wasn't in D
19:04:18 <bsmntbombdood> I want to study a simple interpreter like it
19:05:00 <GregorR> bsmntbombdood: dplof is not only a simple interpreter, but a ridiculously terrible one :)
19:05:02 <Sukoshi> Is D really that different from C?
19:05:20 <GregorR> Yes, quite a bit.
19:05:26 <GregorR> D has loads of things I love.
19:05:37 <Sukoshi> I mean, different enough that you can't read it?
19:05:49 <GregorR> Oh - nah, any C user could probably read D.
19:05:58 <bsmntbombdood> D is wannabe c++
19:06:02 <Sukoshi> ................
19:06:05 <GregorR> D is better than C++
19:06:08 * bsmntbombdood hides
19:06:14 * bsmntbombdood didn't mean that seriously
19:06:15 <GregorR> And this is coming from a C++-ophile.
19:06:16 <Sukoshi> Anything that wants to be C++ needs to dip itself in HCl.
19:06:25 <bsmntbombdood> C++ is terrible
19:06:34 <GregorR> C++ gets a bad rap.
19:06:48 <Sukoshi> I'm sorry, I've seen too many cases where you have to use stupid templates and std::bs types that could be more effeciently wrapped in a struct.
19:07:04 <Sukoshi> I once attempted to generate a SWIG wrapper for a C++ library. I failed.
19:07:27 <GregorR> My issue with C++ is that many tihngs require you to delve pretty deep into the bowels of pointer arithmetic and the like.
19:07:36 <bsmntbombdood> Pointers are fun
19:07:39 <Sukoshi> In comparison to C?
19:07:41 <GregorR> Mind you, pointer arithmetic is OK.
19:07:52 <GregorR> Sukoshi: Nah, in comparison to other-OO-language-X.
19:07:56 <Sukoshi> Oh ;D
19:08:10 <bsmntbombdood> Meh, you can OOP in C just fine
19:08:11 <GregorR> C is awesome because it's like a portable assembly language that's easy to write in :)
19:08:24 <Sukoshi> I've been working on low-level stuff for the last few days pretty intensely, so I've been doing a lot of pointer arithmetic.
19:08:37 <bsmntbombdood> GregorR: yep
19:08:41 <GregorR> D is awesome because all the OO is very sane, but it doesn't prevent you from delving deep. It just doesn't /require/ you to.
19:08:42 <Sukoshi> At one point a parser, so, pure pointer arithmetic there :).
19:09:30 <bsmntbombdood> I've only written parsers in yacc
19:09:46 <Sukoshi> It was a fairly simple parser, not complex enough to need yacc.
19:10:19 <Sukoshi> Of course, that didn't stop me from getting it wrong quite a few times :D
19:11:09 <Sukoshi> Man. A WM in 76 lines.
19:11:11 <Sukoshi> So awesome.
19:11:26 <GregorR> ???
19:11:34 <bsmntbombdood> indeed
19:11:39 <bsmntbombdood> TinyWM?
19:11:44 <Sukoshi> Yes. The CL version.
19:11:57 <bsmntbombdood> Python version, c version...
19:13:08 <Sukoshi> Yeah, I'm taking a small hiatus from C to begin work on a WM.
19:13:18 <Sukoshi> But I'll be back with it later this afternoon.
19:13:46 <GregorR> Got any screenshots of TinyWM?
19:13:56 <Sukoshi> Hold on. I'm about to run it in Xnest.
19:14:12 <GregorR> [Xephyr is better :P]
19:14:19 <Sukoshi> Oh? What's that?
19:14:25 * bsmntbombdood loves ion
19:14:28 <GregorR> It's the new Xnest.
19:14:38 <GregorR> But it supports virtually every X estension on any host.
19:15:17 <Sukoshi> Awesome.
19:15:21 <Sukoshi> Ion is too complicated.
19:15:39 <Sukoshi> This'll borrow ideas from Ion, Ratpoison (StumpWM), and CLFSWM.
19:16:01 <Sukoshi> Yeah, Xnest is an old piece of poop.
19:16:21 <bsmntbombdood> What's CLSLFIUJDSFKMM?
19:16:22 <Asztal> I remember seeing bits of EgoBot in Google CodeSearch
19:16:47 <Sukoshi> Guh. Where's the source.
19:16:55 <Sukoshi> Common Lisp FS Window Manager.
19:17:00 <Sukoshi> I don't remember what FS means :P
19:17:36 <Sukoshi> Stupid Xephyr.
19:18:39 <Sukoshi> Oh. It's part of the Xorg package?
19:18:41 <GregorR> Asztal: Whoah, seriously?
19:18:44 <GregorR> Sukoshi: Yeah.
19:18:49 <Sukoshi> Ugggh. Why can't they package the source on its own -_-''
19:18:55 <GregorR> Sukoshi: I know X_X
19:20:18 <Sukoshi> I hope the Xorg source isn't large.
19:20:44 <Sukoshi> Who am I kidding. It's probably gigantic.
19:21:04 <GregorR> Sukoshi: You know they split Xorg into a bunch of autotool'd packages, right?
19:21:14 <Sukoshi> Uh....
19:21:16 <Sukoshi> *Cough*
19:21:34 <GregorR> xorg-server is a "mere" 6MB
19:21:52 <Sukoshi> Oh wow.
19:24:56 <Sukoshi> UGGGH. Xorg has moved to git?
19:25:04 <Sukoshi> I just grabbed the CVS source -_-
19:25:13 <GregorR> Why not just grab release 7.1?
19:25:23 <Sukoshi> Heh. Yah.
19:25:35 <Sukoshi> In the meantime, I'll use Xnest.
19:25:59 <GregorR> Good idea ;)
19:44:15 <Asztal> http://www.google.com/codesearch?hl=en&q=show:s9pyp5f3bCU:mOLPvmN6QCU&cs_p=http://esoteric.voxelperfect.net/files/egobot/egobot-0.12.tar.bz2&cs_f=/egobot-0.12
19:44:23 <Asztal> ;)
19:45:40 <GregorR> Hah, cool
19:48:10 <Sukoshi> Egobot is ewww.
19:48:18 <GregorR> lol
19:48:25 <bsmntbombdood> !cat eeew
19:48:29 <EgoBot> eeew
19:48:39 <GregorR> !cat It's not my fault :'(
19:48:43 <EgoBot> It's not my fault :'(
19:48:58 <Sukoshi> You really love signals, don't you GregorR ?
19:49:23 <bsmntbombdood> signals, eh?
19:49:28 <GregorR> Come now, I didn't use signals that much in EgoBot.
19:49:33 <GregorR> Just to kill processes et cetera.
19:49:41 <Sukoshi> Meh :P
19:49:46 <Sukoshi> Wait... that's C++ code?
19:49:51 <GregorR> Yes.
19:50:01 <Sukoshi> Where's the abstract-hell templates and the obfuscated C++-only constructs?
19:50:07 <Sukoshi> WHAT SORT OF A C++ CODER ARE YOU?!
19:50:17 <GregorR> The kind that came from a C traditoin.
19:50:19 <GregorR> *tradition
19:50:42 <Sukoshi> YOU FIEND! WHY AREN'T YOU USING BOOST?!
19:50:50 <Asztal> mmm boost
19:51:03 <GregorR> Blegg @ boost
19:51:14 <Asztal> Great for boosting those compile times :)
19:51:43 <GregorR> HAH XD
19:52:11 <bsmntbombdood> CLEVAR!
19:53:35 <Sukoshi> ;D
20:12:53 <Mahjong> I need a Random Number between 1 and 15 please :)
20:13:19 <pgimeno> 1
20:13:37 <Mahjong> thx 'compiler'
20:13:50 <pgimeno> or maybe 7?
20:13:54 <pgimeno> I'm undecided
20:13:58 <bsmntbombdood> 19
20:14:28 <Mahjong> 19 isnt between 1 and 15 choose other number
20:14:45 <bsmntbombdood> !exec self.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,15))
20:14:45 <bsmnt_bot> 3
20:14:47 <EgoBot> Huh?
20:15:39 <bsmntbombdood> !exec self.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,15))
20:15:39 <bsmnt_bot> 6
20:15:41 <EgoBot> Huh?
20:15:47 <bsmntbombdood> there, you have 2
20:15:59 <Mahjong> :)
20:16:37 -!- wooby has joined.
20:16:44 -!- wooby has quit (Remote closed the connection).
20:26:09 <okokoko> [22:11:40] <bsmnt_bot> 6
20:26:10 <okokoko> [22:11:42] <EgoBot> Huh?
20:26:14 <okokoko> i love EgoBot xD
20:27:42 <bsmntbombdood> !exec self.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,15))
20:27:43 <bsmnt_bot> 7
20:27:44 <EgoBot> Huh?
20:29:09 -!- tgwizard has quit (Remote closed the connection).
20:37:05 <Asztal> !exec self.raw("PRIVMSG #esoteric :Huh?")
20:37:08 <Asztal> :(
20:37:08 <EgoBot> Huh?
20:37:11 <Asztal> lol
20:37:19 <Asztal> He knows python!
20:42:52 <bsmntbombdood> heh
20:44:00 <Mahjong> !exec self.raw("PRIVMSG #esoteric :Lol")
20:44:02 <EgoBot> Huh?
20:44:14 <Mahjong> !exec self.raw("MSG #esoteric :Lol")
20:44:18 <EgoBot> Huh?
20:44:42 <okokoko> bsmnt why isn't your bot public :(
20:45:05 <bsmntbombdood> Because I don't want to get screwed...
20:46:21 <okokoko> :DD
20:46:32 <bsmntbombdood> !exec self.raw("PRIVMSG #esoteric :Lol")
20:46:32 <bsmnt_bot> Lol
20:46:34 <EgoBot> Huh?
20:52:30 -!- Mahjong has quit ("Verlassend").
21:02:35 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:04:05 <Sukoshi> GRRR
21:04:15 <Sukoshi> Why is Xnest rejecting connections?!
21:05:29 <Sukoshi> Darn you legacy apps. Darn you all to HECK!
21:09:40 <bsmntbombdood> I laugh at your pain
21:09:48 <bsmntbombdood> X is such a mess
21:10:57 <Sukoshi> Ah. -ac is what makes it work.
21:11:04 <Sukoshi> .... An option mysteriously not present in the manpage.
21:13:56 <Sukoshi> .... Maybe it's time I compile Xephyr.
21:14:27 <bsmntbombdood> What are you doing?
21:16:27 <Sukoshi> TinyWM.
21:17:01 <bsmntbombdood> just run another xserver?
21:18:04 <Sukoshi> You know... you may be right!
21:18:13 -!- wezyap has quit.
21:19:15 <bsmntbombdood> I'm lost when it comes to x stuff
21:21:54 <Sukoshi> Don't worry. X is a horrible mess.
21:22:10 <Sukoshi> .... Does *everyone* use the same autoconf script?
21:22:42 <Sukoshi> I seriously wonder if any code is even written with g77 nowadays.
21:31:57 <GregorR> Woooh, Fortran rulz! :P
21:34:40 <Sukoshi> Hey, I found a book on it at our local book store.
21:34:45 <Sukoshi> FORTRAN 2002 and one on COBOL.
21:34:56 <Sukoshi> I was contemplating on buyng the COBOL book just to burn it.
21:35:41 <bsmntbombdood> I was going to learn fortran once
21:36:03 <Sukoshi> It's worth learning still because it's still fast.
21:36:11 <Sukoshi> Like Pascal and ALGOL.
21:36:33 <bsmntbombdood> But the book I got from the library was from way back
21:36:48 <bsmntbombdood> ei the punch card days
21:37:29 <Sukoshi> Oh wait, can you read this?
21:37:46 <Sukoshi> Could you read that?
21:38:03 <bsmntbombdood> ?
21:39:35 <Sukoshi> <Sukoshi> Like Pascal and ALGOL.
21:39:38 <Sukoshi> Could you read that?
21:40:28 <bsmntbombdood> yeah...
21:46:53 <Sukoshi> NO!
21:47:04 <Sukoshi> My keyboard went AWOL on me, on 32 days of uptime.
21:47:25 <GregorR> Your keyboard is absent?
21:47:30 <GregorR> Then how are you entering text?
21:47:32 <Sukoshi> Is there any way to get it to work with a PS/2 keyboard again without a restart?
21:47:33 <Sukoshi> SSH.
21:47:48 <GregorR> What OS?
21:47:54 <Sukoshi> Linux....
21:48:05 <GregorR> It may be a module, and therefore it may be possible to unload it, maybe :)
21:48:19 <Sukoshi> ... I don't think I compiled it as a module ;-;
21:48:32 <GregorR> Go groping around in /proc then X-P
21:48:52 <Sukoshi> Darn you!
21:51:04 <Sukoshi> きみのってないわよ!!!
21:51:11 <GregorR> I seeeeeeeeeee
21:51:24 <Sukoshi> This 'aint fair!
21:52:25 <Sukoshi> Guh.... I'll restart....
21:52:57 <Sukoshi> My dear, dear uptime!
21:59:28 <bsmntbombdood> I've always been able to hotplug ps/2 keyboards
22:03:15 <Sukoshi> SCORE!
22:03:25 <Sukoshi> It wasn't the keyboard (which seems to be hotpluggable :P).
22:03:48 <Sukoshi> Xvesa left my stuff inoperable, and it seemed restarting it did the trick.
22:04:20 <fizzie> I've always been able to hotplug ps/2 keyboards, too, but officially you can fry components by doing it, if you're unlucky enough.
22:04:30 <bsmntbombdood> 15:00:28 up 26 days, 3:27, 21 users, load average: 1.17, 1.40, 1.50
22:04:34 <bsmntbombdood> hmmm
22:05:09 <Sukoshi> Guh. The machine is refusing to go back to a usable state if I kill Xvesa.
22:05:17 <Sukoshi> Hmmm... how to make it gracefully exit....
22:05:20 <fizzie> 00:00:46 up 205 days, 23:24, 4 users, load average: 0.01, 0.01, 0.00
22:05:30 <Sukoshi> Rather, the physical terminal is refusing to go back to a usable state.
22:05:37 <fizzie> My load average says it's not doing much.
22:05:56 <Sukoshi> 14:01:46 up 38 days, 7:06, 14 users, load average: 1.63, 1.87, 1.82
22:07:48 <Sukoshi> Guh...
22:08:22 <bsmntbombdood> shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
22:08:25 <bsmntbombdood> 3:04PM up 11 days, 22:14, 2 users, load averages: 0.27, 0.14, 0.09
22:08:34 <bsmntbombdood> ha, that's /exec -o for ya
22:10:10 <Sukoshi> So, now let's see how I can kill Xvesa while keeping access to my physical peripherals.
22:15:23 <Sukoshi> Well, uh... I'm not sure.
22:15:33 <Sukoshi> The only thing I guess I can do is nice -n 20 it.
22:16:09 <Sukoshi> Piece of poop Xserver.
22:17:48 <Sukoshi> Success!
22:18:15 <Sukoshi> For some reason, if you give Xvesa the vt argument, it locks up and dies, but if you give it a tty argument, it's fine.
22:18:54 <Sukoshi> Well, I just wasted 30 minutes preserving my uptime. That makes me feel.... wholesome inside.
22:20:26 <bsmntbombdood> hehe
22:25:48 -!- vicrattlehead has quit.
22:29:28 <Sukoshi> Yeah, TinyWM has no window decorations.
22:32:09 <bsmntbombdood> duh
22:32:14 <bsmntbombdood> screen shot?
22:32:29 <Sukoshi> Hold on then.
22:45:49 <Sukoshi> Uhhh.....
22:45:53 <Sukoshi> I got wiggling windows?
22:58:24 <digital_me> Sukoshi: in TinyWM?
23:00:46 <Sukoshi> Yeah.
23:01:02 <Sukoshi> Something about resize/move is not working correctly.
23:02:19 -!- wooby has joined.
23:28:07 -!- ihope__ has joined.
23:29:04 -!- ihope__ has changed nick to ihope.
23:29:27 -!- wooby has quit.
23:45:41 -!- ihope_ has quit (Connection timed out).
2006-12-23
00:21:50 -!- Sgeo has joined.
00:28:05 <Asztal> uh... wut
00:28:58 <Asztal> I have a hash table which most definitely contains my value which is {19375}... yet the hash table says it doesn't contain it!
00:30:02 <Asztal> And I even checked its internal stuff, and it's definitely there, with the same hash code as the list I'm using to look the value up... it's all lies, I hate debugging :P
00:32:06 <Sukoshi> Hmmm. How should I have read() read the socket to search for a newline? What if the next newline is past the end of the receiving buffer?
00:32:08 <okokoko> owned
00:35:18 <Asztal> Have 2 buffers, read everything you can from the first into the second, and then try to read whole lines out of the second whenever you get more data?
00:42:15 <GregorR> Increase the size of the buffer whenever you get a short read.
00:43:08 -!- wooby has joined.
00:44:58 <ihope> Use line buffering?
00:47:39 <bsmntbombdood> What socket?
00:52:36 <bsmntbombdood> And how does one read a line from a socket
00:52:37 <bsmntbombdood> ?
00:52:53 <bsmntbombdood> that's always confused me
00:53:23 <Asztal> Generally you read until you get a '\n'
00:53:32 <Asztal> I mean, that's how I'd do it
00:56:42 <bsmntbombdood> well...yeah
00:56:48 <bsmntbombdood> But buffering
00:58:12 <bsmntbombdood> You can't just read one character at a time
01:03:52 * Sgeo currently has SpySheriff installed
01:03:59 <Sgeo> Anyone want me to make a screenshot tour?
01:06:36 -!- oerjan has joined.
01:24:12 <puddy_> please download debian sarge, burn it to dvd and deliver it to my home
01:31:58 -!- GreaseMonkey has joined.
01:33:58 -!- ihope_ has joined.
01:34:44 -!- ihope__ has joined.
01:43:26 -!- ihope__ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
01:49:12 -!- ihope has quit (Connection timed out).
01:50:17 -!- ihope has joined.
01:50:23 <ihope> Perfect!
01:50:54 <ihope> Pudding rust monster invisible monster vampire mummy snake gnome!
01:52:12 <ihope> Newt centaur dwarf ant nymph snake floating eye rat vortex...
01:52:23 -!- ihope_ has quit (Connection timed out).
01:52:35 <ihope> Actually, #nethack would be a better place to babble incoherently in.
01:55:38 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
01:57:33 -!- wooby has joined.
01:57:40 -!- wooby has quit (Remote closed the connection).
01:59:21 <oerjan> not necessarily: {-\+{--!.($--=*::[__]&1.2)/\1}++'a'--}_main
02:01:44 <CakeProphet> hmm...
02:02:09 <CakeProphet> I should construct a Lisp interpreter in Python... that lets me execute it and return a value.
02:02:31 <CakeProphet> in Python.
02:04:37 <oerjan> sounds like the hardest part would be choosing the data representation
02:05:04 -!- ihope has left (?).
02:14:45 <GreaseMonkey> gonna reboot into windows, recording stuff
02:15:19 -!- GreaseMonkey has quit (Client Quit).
02:16:07 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
02:16:10 -!- puzzlet has joined.
02:23:19 <Sukoshi> I wouldn't even want to attempt a Lisp interpreter.
02:23:50 <Sukoshi> Maybe maybe a Scheme interpreter some day when I'm feeling adventurous, but it's an insane amount of work.
02:24:39 <oerjan> i was sort of assuming a full Common Lisp implementation was not intended :)
02:25:00 <Sukoshi> Even just the semantics.
02:25:22 <Sukoshi> CL, being dirty, is going to be harder to write semantics for than Scheme.
02:25:55 <Sukoshi> On the other hand, writing interpreters in Lisp are a lot easier.
02:27:17 <Sukoshi> *is a lot easier.
02:39:32 -!- Razor-X has joined.
02:39:39 -!- Sukoshi has quit (Read error: 104 (Connection reset by peer)).
02:47:34 <Razor-X> Guh. I don't like that sound.
02:47:43 <Razor-X> I think I'll give my machine a rest.
02:47:48 -!- Razor-X has quit (Remote closed the connection).
02:58:32 -!- oerjan has quit ("Leaving").
02:59:20 -!- puddy_ has quit (Read error: 110 (Connection timed out)).
03:13:30 -!- Asztal has quit (Read error: 113 (No route to host)).
05:02:53 -!- digital_me has quit (sterling.freenode.net irc.freenode.net).
05:02:53 -!- GregorR has quit (sterling.freenode.net irc.freenode.net).
05:02:54 -!- Sgeo has quit (sterling.freenode.net irc.freenode.net).
05:02:54 -!- sekhmet has quit (sterling.freenode.net irc.freenode.net).
05:02:56 -!- mtve has quit (sterling.freenode.net irc.freenode.net).
05:02:56 -!- bsmntbombdood has quit (sterling.freenode.net irc.freenode.net).
05:03:07 -!- GregorR has joined.
05:03:07 -!- digital_me has joined.
05:03:07 -!- sekhmet has joined.
05:03:07 -!- Sgeo has joined.
05:03:07 -!- bsmntbombdood has joined.
05:03:07 -!- mtve has joined.
05:10:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
05:50:26 -!- anonfunc has joined.
06:07:39 -!- digital_me has quit (Read error: 110 (Connection timed out)).
07:16:09 -!- anonfunc has quit.
07:58:42 <bsmntbombdood> damn
07:58:44 <bsmntbombdood> http://en.wikipedia.org/wiki/OISC
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:35 * bsmntbombdood likey
10:37:53 -!- wooby has joined.
11:03:31 -!- jix_ has joined.
11:04:58 <okokoko> http://www.quinapalus.com/wi-java.html
11:05:02 <okokoko> someone kill me :(
11:06:35 <lindi-> okokoko: i get just black background with gappletviewer-4.1 h
11:06:59 <okokoko> ie is the only one i got it working with
11:07:03 <okokoko> wait
11:07:24 <okokoko> http://www.quinapalus.com/wi-java.html
11:07:27 <okokoko> eh
11:07:30 <okokoko> now i see
11:07:45 <okokoko> http://www.quinapalus.com/wi-index.html
11:07:54 <okokoko> the copy-paste doesn't work :\
11:08:01 <lindi-> use gnu screen
11:08:14 <okokoko> me windows-boy
11:08:18 <lindi-> now away, please send me the source and i'll take a look
11:08:47 <okokoko> k
11:08:48 <okokoko> i will
11:11:30 <okokoko> i couln't send it
11:11:57 <okokoko> it's coded in wireworld tho, so i'm not sure if you'd enjoy the source that much
11:14:21 <lindi-> i could learn
11:21:09 <fizzie> Ooh, wireworld. Now that was funky.
11:27:31 <fizzie> Kind-of reminds me of the OpenTTD logic nastiness.
11:34:50 <pgimeno> Wireworld is so funny
11:35:27 <pgimeno> playing with electrons, designing your own components
11:36:40 <pgimeno> unfortunately the best Wireworld implementation I've known was for Windows and not very advanced (quite fast though)
11:41:17 <pgimeno> xlife claims to support Wireworld but the rules are incorrect
11:42:58 <okokoko> you can implement wireworld yourself in half an hour
11:43:12 <okokoko> it's pretty simple
11:43:25 <pgimeno> not a fast and comfortable implementation though
11:43:31 <okokoko> really?
11:43:31 <pgimeno> I know it's simple
11:43:47 <okokoko> well an editor will take long
11:43:48 <okokoko> wure
11:43:51 <okokoko> *s
11:44:11 <pgimeno> well, you need to track the positions of the electrons separately in order to speed the calculations up
11:44:16 <okokoko> and prolly you'd like to make something, not just watch, so wtf am i whining
11:44:29 <okokoko> yes, that's easy
11:44:54 <pgimeno> not a 1/2 hour project (for me anyway, I'm a bit slow programming)
11:44:54 <okokoko> and it's the only optimization i can think of
11:45:06 <okokoko> slow bit programming
11:45:13 <okokoko> that's wireworld
11:45:16 <pgimeno> :D
11:45:18 <okokoko> :)
11:46:22 <pgimeno> hm, thinking about it, you also have to track electron tails if you don't want to leave 'stale' trails
11:48:01 <pgimeno> e.g. when two electrons annihilate each other (as if one of them were a positron) there's a state in which the tails remain
11:48:36 <fizzie> You can track "interesting regions". And if you _really_ want to optimize, you can analyze the device. Replace wires with delays, so no need to compute the individual electron-movement-transitions. Maybe even recognize recognizable logic gates.
11:49:09 <pgimeno> in half an hour? :D
11:49:17 <fizzie> Well, of course not.
11:49:26 <pgimeno> hehe, I know, just kidding
11:50:13 <pgimeno> but it's harder to see it in movement then
11:50:53 * pgimeno considers taking a look at xlife's source to see if he can hack some true-Wireworld code
11:50:59 <fizzie> Yes, but obviously you want your wireworld "code" run as fast as inhumanly possible; after all, why did you write it in wireworld if efficiency wasn't an issue?
11:52:04 <pgimeno> yeah, you're right, I should write a wireworld *compiler*
11:53:27 <pgimeno> or even better, build the circuits with electronic components instead
11:55:29 <fizzie> You could write a wireworld-to-fpga thing. Although then you'd probably actually need to recognize the function of all blocks in the "source", I don't think emulating the wireworld rules with a fpga would work very well.
12:04:04 <pgimeno> in particular, xlife uses a Von Neumann neighbourhood
12:04:16 <pgimeno> xlife's implementation of Wireworld, I mean
12:10:02 <pgimeno> bah, xlife is too buggy
12:13:56 -!- tgwizard has joined.
12:25:59 -!- Puddy_ has joined.
12:43:47 -!- ivan` has quit (Read error: 104 (Connection reset by peer)).
12:44:17 -!- Puddy_ has quit ("BitchX-1.1-final -- just do it.").
12:44:21 -!- ivan` has joined.
14:02:43 -!- Asztal has joined.
14:42:03 -!- CakeProphet_ has joined.
14:49:17 -!- CakeProphet has quit (Read error: 145 (Connection timed out)).
14:52:03 -!- CakeProphet_ has changed nick to CakeProphet.
15:32:58 -!- aduket has joined.
16:00:22 -!- aduket has quit ("So long, and thanks for all the fish.").
16:32:38 -!- Asztal has quit (Read error: 113 (No route to host)).
16:44:56 -!- CakeProphet has quit ("haaaaaaaaaa").
17:12:56 -!- wooby has quit.
17:25:10 -!- Asztal has joined.
17:32:07 -!- Sukoshi has joined.
19:00:14 <bsmntbombdood> How do you do IO without adding an instruction for it?
19:03:22 <bsmntbombdood> Memory mapped I think, but how does the intrepreter know when to output?
19:08:35 -!- ihope has joined.
19:08:41 <bsmntbombdood> Do you just catch any and all writes/reads to the special addresses?
19:09:11 <ihope> I want an enzyme language. It'd be fun.
19:09:46 <bsmntbombdood> ihope: How do you do memory mapped io?
19:10:04 <ihope> In an enzyme language?
19:10:07 <bsmntbombdood> no
19:10:28 <ihope> I think it's often just catching reading and writing to certain addresses, yeah.
19:10:59 <ihope> Maybe it'd just catch writing, and then it'd automatically write things into memory.
19:17:45 * bsmntbombdood starts coding
19:37:48 <ihope> So yeah, enzymes. (enzymes - inhibitors) `max` cofactors = active enzymes, and an active enzyme performs whatever chemical reaction every tick.
19:38:48 <ihope> Every possible input has a chemical, and every possible output has a chemical.
19:38:58 <ihope> If something can be both input and output, it has two chemicals.
19:39:55 <ihope> And there's also a chemical called inputose. Whenever something is input, one unit of inputose is converted to the input chemical.
19:40:49 <ihope> If an output chemical is ever generated, it is immediately removed and the corresponding thing is output.
19:42:33 <ihope> Pretty simple.
19:47:06 <bsmntbombdood> What's more usefull, number output or ascii output?
19:47:49 <ihope> You can't output ASCII by outputting numbers.
19:47:55 <ihope> You can output numbers by outputting ASCII.
19:48:38 <bsmntbombdood> hmm
20:17:19 <bsmntbombdood> hrm
20:17:53 * bsmntbombdood is confused
20:22:15 <bsmntbombdood> confusion over
20:23:17 <lindi-> octet output sounds even more useful
20:23:30 <bsmntbombdood> hmm?
20:23:54 <lindi-> then you could output e.g. JPEG images too
20:30:17 <bsmntbombdood> make it configurable!
20:39:29 <ihope> That too.
20:42:24 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
20:51:14 <bsmntbombdood> yay for regexs!
20:51:20 -!- Asztal has joined.
20:56:28 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
21:07:25 -!- ivan`_ has joined.
21:16:13 -!- CakeProphet has joined.
21:26:19 -!- ivan` has quit (Read error: 110 (Connection timed out)).
21:26:21 -!- ivan`_ has changed nick to ivan`.
22:00:26 -!- ivan` has quit (Read error: 104 (Connection reset by peer)).
22:01:07 -!- ivan` has joined.
22:37:20 <bsmntbombdood> done with the very fragile and slow assembler
22:41:10 -!- pikhq has joined.
22:41:23 <bsmntbombdood> now debugging the crappy vm
22:42:32 * pikhq is releasing a fully documented build of BFM, along with a build of Basm using current best practices, as soon as he fixes a bug that's suddenly popped up.
22:43:33 <pikhq> . . . Yes. I'm going to have a *documented* version of BFM. Crazy, no?
22:48:34 <bsmntbombdood> crazy
22:48:51 <pikhq> And now BFM is even well-designed, too.
22:49:22 <pikhq> I'm guilty of a crime against Esome, due to this craziness, no doubt.
22:55:52 <bsmntbombdood> OMG IT WORKS
22:56:00 * pikhq applaudes
22:56:03 * bsmntbombdood takes off his pants and dances
22:56:10 * pikhq looks away
22:57:04 * bsmntbombdood puts them back on
22:58:38 <bsmntbombdood> hrm
22:59:27 <bsmntbombdood> it not work so good
23:02:10 <bsmntbombdood> :(
23:02:37 <pikhq> That's because you took off your pants.
23:02:44 <bsmntbombdood> I put them back on!
23:03:13 <pikhq> And the program's still suffering from PTSD.
23:05:05 <bsmntbombdood> PTSD?
23:06:36 <pikhq> Post-traumatic stress disorder.
23:06:42 <bsmntbombdood> aaah
23:08:30 <bsmntbombdood> step
23:08:32 <bsmntbombdood> ooops
23:23:05 <ihope> In my opinion, once a language is proven Turing-complete, it's done.
23:23:18 <pikhq> ihope: Then BFM was done months ago.
23:23:29 <bsmntbombdood> ihope: um no
23:23:32 <ihope> Not that I don't like to see fancy new languages that are obviously Turing-complete. :-)
23:23:44 <pikhq> Like, when I wrote brainfucktobfm.tcl. . ..
23:25:38 <bsmntbombdood> woot fixed it
23:25:52 <bsmntbombdood> assembler didn't calculate offsets right
23:28:17 <bsmntbombdood> ok, I have an assembler and virtual machine for an OISC
23:28:51 <bsmntbombdood> sample code: http://pastebin.ca/290377
23:28:52 <pikhq> Nice.
23:29:04 <bsmntbombdood> that reads a char, adds one, prints it out
23:29:12 <bsmntbombdood> then prints a newline
23:32:21 <bsmntbombdood> http://bsmntbombdood.mooo.com/oisc.tar.gz , be careful, the assembler and vm are both fragile, no error checking
23:34:32 * pikhq will probably want to fix that for you some time
23:35:32 <bsmntbombdood> The one instruction is "subtract and branch if not positive", by the way
23:35:55 <bsmntbombdood> pikhq: Go right ahead
23:36:31 <pikhq> bsmntbombdood: Need something to do tonight. ;)
23:37:09 -!- oerjan has joined.
23:37:17 <bsmntbombdood> A line of "a b c": says contents of b = contents of b minus contents of a; if b <= 0, jump to c
23:37:37 <pikhq> Obviously. ;)
23:37:46 <oerjan> OI(S)C ...
23:38:09 <bsmntbombdood> oerjan: yeah
23:38:20 <ihope> Is that the new b or the old b?
23:38:20 <pikhq> oerjan: Soon, I will have a documented BFM build. I won't have to answer as many questions.
23:38:23 <pikhq> Hallelujah.
23:38:27 <bsmntbombdood> ihope: new b
23:38:33 <bsmntbombdood> oerjan: http://bsmntbombdood.mooo.com/oisc.tar.gz
23:38:40 <ihope> And I mean in the comparison of course.
23:39:00 <lindi-> if (b = b-a <= 0) goto c;
23:39:15 <lindi-> like that?
23:39:17 <bsmntbombdood> lindi-: not quite
23:39:32 <bsmntbombdood> if (*b = *b-*a <= 0) goto c;
23:39:50 <lindi-> bsmntbombdood: what's the difference if you can't change "b" ?
23:40:02 <bsmntbombdood> ?
23:40:11 <lindi-> ok sure if you can change where the pointer points to
23:40:17 <bsmntbombdood> a, b, and c are all adresses
23:40:22 <lindi-> ok then
23:40:27 <bsmntbombdood> not literal values
23:40:28 <lindi-> it makes more sense
23:41:22 <bsmntbombdood> oh, and if c == -1, go to the next triplet no matter what
23:42:02 <oerjan> if (m[p+1] = m[p] - m[p+1] <= 0) p = m[p+2]; else p+=3;
23:44:17 <oerjan> or maybe not
23:45:14 <bsmntbombdood> if ((m[p+1] = m[p] - m[p+1] <= 0) || m[p+2] == -1) p = m[p+2]; else p+=3;
23:45:17 <oerjan> hm... if you made the addresses relative then c == 3 could mean that without an exception.
23:45:50 <bsmntbombdood> yeah, but they're not relative
23:46:39 <bsmntbombdood> erm
23:47:07 <bsmntbombdood> meh, just read the source
23:49:32 * pikhq wishes to note that, if you used GNU C, creating the memory would be somewhat easier.
23:49:49 <bsmntbombdood> ?
23:49:50 <pikhq> GNU C supports, among other things, arrays with the size defined at compile time.
23:49:53 <pikhq> Err.
23:49:54 <pikhq> Runtime.
23:49:58 <lindi-> stick to ANSI C ;)
23:49:59 <ihope> :-)
23:50:03 <pikhq> . . .
23:50:04 <pikhq> Wait.
23:50:04 <lindi-> malloc is easy
23:50:31 <pikhq> Why the hell are you using malloc if the size of the VM's memory doesn't change at runtime, anyways?
23:50:58 <lindi-> i haven't even seen the program :)
23:51:08 <bsmntbombdood> pikhq: No where in that file is malloc used
23:51:42 <pikhq> bsmntbombdood: memset, however, is.
23:51:49 <pikhq> . . . Oh.
23:51:53 <pikhq> That doesn't allocate anything.
23:51:54 <pikhq> XD
23:52:10 <bsmntbombdood> int memory[VM_MEMSIZE];
23:52:17 <bsmntbombdood> yeah ;)
23:52:43 <pikhq> Ignore me while I start thinking.
23:52:51 <lindi-> how large is VM_MEMSIZE?
23:52:54 <ihope> What does memset do?
23:53:02 <fizzie> And why is that file named .tar.gz since it's not gzipped?
23:53:09 <bsmntbombdood> #define VM_MEMSIZE 65536
23:53:19 <bsmntbombdood> ihope: sets a block of memory to a value
23:53:27 <pikhq> ihope: Look up in man pages.
23:53:38 <fizzie> 64k * sizeof(int) bytes is a bit much to allocate from the stack.
23:53:52 <bsmntbombdood> fizzie: oops
23:53:57 <ihope> The stack?
23:54:30 <lindi-> int foo[bar]; is from stack
23:54:33 <fizzie> It's a local ("automatic") variable (and not declared static), so it will in most implementations allocated from the (call) stack,.
23:54:35 <lindi-> malloc would use heap
23:56:31 <bsmntbombdood> fizzie: Does it matter?
23:56:45 <fizzie> And "static int foo[bar];" would usually use a statically allocated address from the data segment, which might well be faster than accessing via a pointer to the heap.
23:56:54 <fizzie> Well, it might not work on some MS-DOS compilers.
23:57:29 <ihope> What's the difference between static and dynamic?
23:58:04 <fizzie> (Although malloc()ing that many bytes from the heap might not work either on some MS-DOS compilers/runtimes, at least with particular compiler flags.)
23:58:56 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
23:59:48 <oerjan> in this context the opposite of static is automatic, not dynamic
2006-12-24
00:00:38 <ihope> What's the difference, then?
00:01:05 <oerjan> static variables are not deallocated when the function returns, but kept the same for all invocations
00:01:11 <pikhq> fizzie: That'd be 640k, not 64k.
00:01:53 <ihope> What if the function calls itself?
00:02:05 <fizzie> ihope; You get a new instance of the automatic variable.
00:02:13 <fizzie> pikhq; 64k is a very common limit, too, since it's a single memory page.
00:02:16 <ihope> If it's a static variable?
00:02:28 <oerjan> only one version
00:02:39 <fizzie> pikhq; Er, I mean, segment.
00:02:58 <oerjan> a static variable is like a global variable, except that it doesn't clutter the global namespace
00:03:19 <pikhq> fizzie: I thought MS-DOS used the x86 CPU with what amounts to a flat memory model.
00:03:44 <pikhq> (I could be absolutely wrong, and in all probability am)
00:03:53 <fizzie> Err, no? Why would there be the 640k limit, then?
00:04:58 * pikhq uses his external brain attachment (Wikipedia) to sound like less of an idiot
00:05:14 <fizzie> DOS programs, of course, can run in protected mode, with a 32-bit flat memory model.
00:06:52 <pikhq> You're right.
00:07:05 <pikhq> I'm no assembly expert. ;)
00:07:33 * oerjan suddenly wonders whether wikipedia will cause us to develop a group mind...
00:07:58 * bsmntbombdood is working on hello world
00:08:02 <pikhq> oerjan: Probably.
00:08:19 <pikhq> At least, Wikipedia said so.
00:08:42 <oerjan> link please? :)
00:09:35 <pikhq> Find it yourself.
00:09:54 <fizzie> Anyway, compilers generating "16-bit executables" usually can use all kinds of memory models, and the "tiny", "small" and "medium" memory models all limit data pointers to a single segment. Which would mean no integer arrays larger than 64k bytes, or 32k elements. http://en.wikipedia.org/wiki/Memory_model
00:10:28 <pikhq> That's just stupid, IMO.
00:11:21 <fizzie> The whole segmented memory architecture doesn't really feel like a very bright idea.
00:11:33 <pikhq> Of course, I live in the roarin' 64 bit pointer 2000s. ;)
00:12:56 <bsmntbombdood> this is hards
00:13:04 <fizzie> Well, the 68k (which was a contemporary of 8086, I think) had a 24-bit flat memory model.
00:13:18 <bsmntbombdood> how do I jump if 0?
00:13:28 <ihope> Subtract -1?
00:13:55 <pikhq> fizzie: The 8086 was like the 68k's retarded little brother. :p
00:13:56 <bsmntbombdood> right :)
00:14:25 <ihope> So just how ugly is x86?
00:14:32 <ihope> Is it composed entirely of cruft?
00:15:05 <pikhq> ihope: Cruft, rubber bands, bubble gum, and fairy dust.
00:15:33 <ihope> At least it has the fairy dust, eh?
00:15:51 <pikhq> The fairy dust only is in the 64 bit variants, though.
00:15:57 <ihope> Oh.
00:16:43 <fizzie> A single x86 opcode can be anything between one to 15 bytes, iirc. It does sound rather a bit overcomplicated, at least when compared to your standard "all instructions are alike" riscs.
00:17:22 <bsmntbombdood> Segmentation fault (core dumped)
00:17:46 <pikhq> fizzie: It comes from the bad ol' days when ASM coding was the standard way of doing anything.
00:18:12 <pikhq> Opcodes, opcodes, and more opcodes are the idea.
00:18:28 <fizzie> That reminds me of a wonderful comic; I wonder if I can still find the link.
00:19:02 <fizzie> http://juho.vaha-herttua.fi/Zilog.Z8000.1979.102646293.pdf
00:21:13 <fizzie> Specifically page 6 of the pdf. "It's not magic, readers! With dual environments, 418 op codes, and --". And page 17; "-- just a few, well-chosen op codes!* * Captain Zilog had 418 to choose from!"
00:25:03 <fizzie> "Holy cow, boss! Dis baby can use any of its registers as a stack pointer!" "None of the registers are designated! They're all general!"
00:25:27 <ihope> All general?
00:25:42 <ihope> Where's the trap register for each of 75 instructions?
00:25:50 <pikhq> Gimme an R, gimme an I, gimme an S, gimme a C! What does that spell? RISC!
00:25:55 <fizzie> Well, it's a little white lie. At least according to my reading of the Z8000 specification book.
00:26:08 <pikhq> ;)
00:26:38 <bsmntbombdood> can't figure out how to dereference a pointer
00:26:52 <ihope> In your OISC?
00:26:55 <bsmntbombdood> yeah
00:27:08 <pikhq> *p
00:27:27 <fizzie> In fact, it even has one register sort-of designated as a stack pointer; there are many stack-manipulating instructions, including subroutine calls, which implicitly assume that register is the stack pointer.
00:27:47 <ihope> Set a memory location to the address of the destination, then copy?
00:28:29 <bsmntbombdood> ?
00:29:15 <oerjan> you need to copy the pointer into the code
00:29:20 <fizzie> Can you do self-modifying code in your oisc, btw? Or are the instruction and data spaces separate?
00:29:26 <ihope> Wait...
00:29:34 <bsmntbombdood> fizzie: they are the same
00:31:33 <pikhq> fizzie: Harvard architectures aren't exactly common. . .
00:32:10 <ihope> Harvard architectures?
00:32:24 <fizzie> pikhq; Well, now, there's the MIPS.
00:32:28 <pikhq> An architecture with seperate instruction and data space.
00:32:48 <oerjan> if the pointer is in P, do a copy from P to Label+1, where Label is the address of an instruction
00:33:23 <bsmntbombdood> hmm
00:34:47 <oerjan> wait, i mean Label, not Label+1
00:35:53 <bsmntbombdood> crap, there's a bug in my assembler
00:38:05 <fizzie> And MIPS is common; I have a SGI Indy ("Indigo without the go") with its MIPS R4000 sitting right here on my desk.
00:40:42 <fizzie> lindi; To comment on something that appeared a long time ago in this discussion; due to the utterly low precedence of =, "if (b = b-a <= 0)" (and similarly the later "if (*b = *b-*a <= 0)") would read as "if (b = (b-a <= 0))", which is probably not what you intended. (And wouldn't it look better as "if ((b -= a) <= 0)" anyway?)
00:41:07 <bsmntbombdood> ok, that bug fixed
00:41:59 <bsmntbombdood> longer first, longer first
00:42:06 * bsmntbombdood repeats to himself
00:42:50 <bsmntbombdood> now back to hello world
00:43:10 * pikhq has seen the reason behind the Tcl style guide's recommendation for copious parentheses in expr expressions. . .
00:46:37 <lindi-> fizzie: oh right
00:48:24 -!- tgwizard has quit (Remote closed the connection).
00:50:55 <ihope> Oh, right... schools need algae, and to get algae, my workers need to be able to swim, meaning I need a swimming pool.
00:52:21 <ihope> And there we have it, a swimming pool indeed.
01:09:03 <bsmntbombdood> aargh
01:09:05 <bsmntbombdood> this is hard
01:09:39 <bsmntbombdood> I can't do hello world
01:09:59 <pikhq> Hah.
01:10:23 <bsmntbombdood> I got pointer dereferencing thoug
01:10:33 <bsmntbombdood> now it's not looping like it's supposed to
01:13:47 <ihope> Conway's Game of Life... now there's a real esoteric thingy.
01:14:00 <pikhq> And it'
01:14:04 <pikhq> s nicely Turing complete.
01:14:09 <bsmntbombdood> Decimal output is very useful for debugging
01:14:14 <ihope> It's full of puzzles beyond proving it Turing-complete.
01:14:25 <ihope> Like making a 17c/45 spaceship.
01:14:53 <ihope> The Caterpillar is one such spaceship, and it's pretty huge.
01:15:36 <ihope> http://www.yucs.org/~gnivasch/life/article_cat/cat_picture.gif <- the Caterpillar, scale 1:40
01:17:28 <ihope> Now, just imagine: if one were to remove a cell near the front, the whole thing would probably explode.
01:18:24 <bsmntbombdood> oh fuck, no wonder
01:20:06 <ihope> We're still all waiting, though, for the spaceship generator, capable of making spaceships of any rational speed in both directions, as long as that speed is less than c/2.
01:21:47 <ihope> Or any computable speed, if periodicity doesn't matter.
01:27:09 <ihope> Just program a universal computer with that, and hook it up to a universal constructor, and there you go...
01:29:49 <bsmntbombdood> arghhhhhhh
01:30:38 * oerjan likes the Day and Night CA
01:32:01 <oerjan> complete symmetry between on and off cells, but still so complicated that it nearly has to be Turing-complete (but I don't think it has been proved)
01:33:04 <bsmntbombdood> I can't get it to work :(
01:33:28 <oerjan> the "Hello World"? what's the problem?
01:34:08 <bsmntbombdood> Can't figure out how to get the loop to terminate
01:34:54 <bsmntbombdood> one quitp QUIT
01:35:14 <ihope> Loop?
01:35:33 <bsmntbombdood> ihope: To loop through the string
01:35:52 <oerjan> is the string zero-terminated?
01:35:58 <ihope> Great hacks are needed to do the simplest of things? I like it. :-)
01:36:11 * ihope tries to run Life32 under Wine
01:36:13 <bsmntbombdood> oerjan: yeah
01:36:24 <bsmntbombdood> ihope: indeed
01:36:49 <oerjan> at some point you probably load the current character into some cell, right?
01:37:24 <bsmntbombdood> yeah
01:37:48 <ihope> I guess I need Wine to do that.
01:37:53 <oerjan> that instruction will branch if and only if the character is zero
01:38:10 <bsmntbombdood> which is what I want
01:38:21 <bsmntbombdood> http://pastebin.ca/290491
01:38:44 <ihope> Now, how easy would it be to write a Linux compatibility layer for Windows?
01:38:55 <bsmntbombdood> ihope: cygwin?
01:38:55 <pikhq> GregorR: In Plof, your "for" loop semantics are really different from C's. . .
01:39:11 <ihope> That runs Linux binaries now?
01:39:11 <pikhq> ihope: CoLinux or UML for Cygwin.
01:39:24 <ihope> Well, yeah, that.
01:39:27 <ihope> ...Those.
01:39:38 <ihope> How fast is CoLinux?
01:39:55 <pikhq> When I last used it, it was damned close to native.
01:40:22 <pikhq> That was a few years ago, though.
01:40:30 <pikhq> Err.
01:40:34 <pikhq> Maybe a year or two.
01:40:46 <pikhq> UML for Cygwin, I can't say anything about.
01:41:11 <bsmntbombdood> oerjan: I think i got it
01:41:11 <pikhq> But one has to admit that it's kind of funny that Linux has been ported to Windows. . . Literally.
01:41:49 <ihope> Okay, Wine's all nice and installed.
01:42:46 <ihope> Now how do I use it?
01:42:59 <bsmntbombdood> ...nevermind
01:43:41 <pikhq> GregorR: A patch is coming your way.
01:43:47 <ihope> Cannot open /home/ns/Desktop/Life32/Life32.exe: No application suitable for automatic installation is available for handling this kind of file.
01:44:49 * pikhq hopes Gregor notices it
01:46:09 <bsmntbombdood> Now it doesn't terminate too early, it terminates too late
01:46:45 <bsmntbombdood> it prints "hello, world 0x00 0x00..."
01:48:33 <ihope> Whoa!
01:48:37 <ihope> It's ugly, but it works!
01:49:10 <ihope> Pretty sweet, actually.
01:50:33 <ihope> Then again, maybe it actually doesn't work.
01:50:51 <bsmntbombdood> hmm?
01:50:59 <ihope> Life32 under Wine.
01:51:16 <bsmntbombdood> aah
01:52:51 <ihope> Aha! It DOES work!
01:56:53 <bsmntbombdood> hello world doesn't :(
01:58:43 <ihope> Can't you just zero a memory location and use it to test for positive?
01:59:09 <bsmntbombdood> can someone take a look? http://pastebin.ca/290503
01:59:39 <oerjan> i am taking a look, my attempt coming up
02:02:52 <ihope> Why, I think the Caterpillar has loaded.
02:04:11 <ihope> It's possibly even larger than I thought it would be.
02:06:02 <oerjan> try this: http://pastebin.ca/290507
02:06:52 <ihope> It looks quite nice, actually.
02:07:35 <ihope> This is what large Life patterns look like, then?
02:08:05 <bsmntbombdood> oerjan: workage
02:08:37 <bsmntbombdood> :)
02:09:12 * oerjan makes the V sign
02:12:16 <bsmntbombdood> odd
02:12:32 <oerjan> even?
02:12:41 -!- digital_me has joined.
02:13:25 <bsmntbombdood> nope, pretty odd
02:13:34 <oerjan> what is?
02:13:44 <bsmntbombdood> How your's worked
02:13:50 <bsmntbombdood> Mine did almost the same thing
02:14:46 <oerjan> i didn't completely understand yours, but it seemed to me that it did the quit test after printing the character so i expect at least an extra 0x00
02:15:00 <oerjan> *expected
02:15:55 <bsmntbombdood> Mine never quit the loop
02:17:48 <oerjan> what was the point of the quitp WRITE -1 anyhow?
02:17:57 <bsmntbombdood> debugging
02:18:46 <oerjan> right. i _think_ your problem is that you never managed to dereference the quitp pointer
02:19:37 <oerjan> so you actually tested the pointer itself rather than the character
02:19:37 <bsmntbombdood> line 12?
02:20:22 <oerjan> line 12 is a comment
02:20:41 <bsmntbombdood> 13,14,15
02:21:04 <oerjan> it is essentially quitp = -pos, with no dereferencing
02:21:30 <bsmntbombdood> hrm
02:22:07 <oerjan> to dereference a pointer, you _must_ copy it into an actually running code part
02:22:38 <oerjan> like writepos:, or my quitpos:
02:23:18 <bsmntbombdood> oh, and in your's, line 16 needs to be NULL NULL -1
02:24:40 <oerjan> i don't think so, because NULL is not used again before NULL NULL CODESTART
02:27:37 <bsmntbombdood> oh, right
02:29:26 <bsmntbombdood> probably not good to leave NULL unzeroed though
02:31:04 <oerjan> well, you could rename it to temp...
02:35:06 <bsmntbombdood> yeah
02:39:55 <bsmntbombdood> I should work on a brainfuck interpreter
02:40:39 <oerjan> that would certainly kill some time...
02:40:45 <pikhq> Do it in Plof.
02:41:00 <oerjan> i assumed he meant in OISC :)
02:41:07 <pikhq> (Plof is in bad need of Esome)
02:41:37 <bsmntbombdood> oerjan: I think it would be pretty straighforward
02:41:43 <bsmntbombdood> except for []
02:43:48 <oerjan> you could just compile into memory
02:44:10 <oerjan> for [] you need a stack of branch points
02:44:20 <oerjan> during the compilation
02:44:43 <oerjan> i believe Forth works in that way
02:45:09 <bsmntbombdood> [] is hard even in real languages
02:45:14 <pikhq> Not in Tcl.
02:45:26 <pikhq> Of course, my BF implementation in Tcl is a bit. . . Lazy.
02:45:51 <pikhq> Basically, I compile the Brainfuck code in-memory to Tcl, and then evaluate the compiled code. ;)
02:46:44 <oerjan> essentially what i suggest for OISC as well
02:47:06 <oerjan> because [] is _not_ particularly hard to compile
02:47:45 <bsmntbombdood> no, just a jump
02:47:46 <pikhq> It's only hard because one has to do it in OISC. . . And you're going to have to do that just to write the thing, anyways.
02:47:48 <oerjan> its only if try to run directly on the string interpretation it gets awkward
02:48:15 <oerjan> *representation
02:50:26 <oerjan> *it's only if you
02:53:10 <oerjan> hm... you could actually avoid a disjoint stack by keeping the stack _in_ the partially compiled code
02:53:41 <oerjan> then you avoid having to juggle two distinct growable memory areas
02:54:56 <bsmntbombdood> how?
02:55:11 <oerjan> so, when you get to a [, you compile it, except that the branch location points to the previous [
02:55:39 <oerjan> and you have a global pointer to the topmost [
02:56:54 <oerjan> when you get to ], you use that global pointer to compile the ] _and_ to patch the corresponding [, finally letting the new global pointer be the previous content of the [
02:56:56 -!- ihope has quit ("Leaving").
02:58:05 <oerjan> so the global pointer plus the pointers saved in each [ is the stack, pushing on a new [ and popping on a new ]
03:01:47 * bsmntbombdood writes cat in OISC
03:03:24 -!- pikhq has quit ("leaving").
03:03:38 <oerjan> you might need a special EOF location
03:03:52 <bsmntbombdood> -1
03:03:57 <oerjan> ah
03:09:12 <bsmntbombdood> grar, I think there's a bug in my vm
03:09:47 <bsmntbombdood> READ char -1
03:09:47 <bsmntbombdood> char WRITE -1
03:09:47 <bsmntbombdood> NULL NULL CODESTART
03:09:57 <bsmntbombdood> doesn't do what it should
03:10:22 <oerjan> hm... make that char char CODESTART?
03:11:01 <bsmntbombdood> !?!
03:11:04 <EgoBot> Huh?
03:11:12 <bsmntbombdood> oh, right
03:11:35 <bsmntbombdood> char doesn't get zeroed
03:13:14 <oerjan> actually, you probably need to test it for -1 first
03:13:34 <oerjan> which would have to go between READ and WRITE
03:13:56 <bsmntbombdood> I know
03:14:04 <oerjan> ah!
03:14:18 <bsmntbombdood> http://pastebin.ca/290546
03:16:04 <oerjan> there is a simpler way if you use READ char <label>
03:16:29 <oerjan> because it then branches except on -1
03:16:47 <bsmntbombdood> ooooh right
03:16:48 <oerjan> (or < 0)
03:18:25 <bsmntbombdood> http://pastebin.ca/290549
03:19:37 <oerjan> right. if you make that char char QUIT you don't have to use NULL at all...
03:20:17 <bsmntbombdood> yeah
03:20:31 <oerjan> it's not really necessary to make NULL a special variable anyhow
03:21:41 <bsmntbombdood> yeah not really
03:21:42 <oerjan> for that matter, the same could be said about CODESTART
03:22:05 <oerjan> QUIT seems to have to be special, though
03:22:49 <bsmntbombdood> QUIT = 3
03:23:18 <bsmntbombdood> But yeah, CODESTART and NULL aren't needed
03:23:24 <oerjan> obviously the program doesn't start at 0, then
03:23:55 <bsmntbombdood> no, it starts at CODESTART
03:24:18 <bsmntbombdood> 0-3 are special
03:25:16 <oerjan> NULL, READ, WRITE and QUIT?
03:25:31 <bsmntbombdood> yeah
03:27:13 <oerjan> it might be an idea to make -1 = NEXT or something
03:27:46 <bsmntbombdood> done
03:28:05 <bsmntbombdood> But -1 is a whole lot easier to type than NEXT
03:30:14 <oerjan> tradeoffs, tradeoffs
03:30:43 <bsmntbombdood> well now you can do either
03:31:16 <bsmntbombdood> You know a proccessor is great when you have to have self modifying code to do anything!
03:35:06 <bsmntbombdood> It's amazing that it can be turing complete with only one instruction
03:40:06 <oerjan> perhaps. but then the one instruction merges three concepts: subtraction, comparison and branching.
03:41:40 <bsmntbombdood> I suppose
04:04:36 -!- anonfunc has joined.
04:20:34 -!- bsmnt_bot has quit (Remote closed the connection).
04:20:49 <bsmntbombdood> bsmnt_bot!
04:26:25 <bsmntbombdood> methinks running the OISC code through cpp and adding some macros would be a good idea
04:30:32 <bsmntbombdood> but first I have to figure out how to multiply
04:32:46 <oerjan> general numbers or up to a limit?
04:33:20 <bsmntbombdood> Up to the cell size
04:33:37 -!- digital_me has quit ("Lost terminal").
04:44:20 -!- anonfunc has quit.
04:44:33 <oerjan> something like this: c = 0; for (n=BITSIZE; n--; ) {c+=c; if (a < 0) {a+= 1 << (BITSIZE-1); c+=b;} a+=a; }
04:46:20 -!- digital_me has joined.
04:47:03 <bsmntbombdood> (a *= b) === while(b--) a += a;
04:47:38 <oerjan> sure, but that takes time proportional to b
04:48:11 <oerjan> and you mean c += a;
04:54:20 <bsmntbombdood> simple is good ;)
05:05:40 <bsmntbombdood> it works!
05:09:37 <bsmntbombdood> Now, a call stack
05:13:29 <oerjan> what for?
05:14:17 <bsmntbombdood> ?
05:14:45 <bsmntbombdood> Not sure how to do this, because you need a place to dereference a pointer
05:14:49 <oerjan> are you just making general tools?
05:15:05 <bsmntbombdood> just playing
05:17:49 <oerjan> make a macro for pointer dereferencing
05:18:20 <bsmntbombdood> To get a value on the stack, we have to dereference a pointer, but we have to put it in a constant place
05:19:33 <oerjan> no, you have to put it into the instruction that makes the actual dereferencing
05:20:19 <bsmntbombdood> but there is no dereference intruction
05:21:54 <oerjan> mov (pointer, label); then the label: instruction will dereference the pointer.
05:22:34 <oerjan> mov (pointer, label+1); then it will store into the dereferenced pointer
05:23:03 <bsmntbombdood> huh?
05:23:58 <oerjan> to do a-= *p, you do mov(p,l1); l1: 0 a -1
05:24:07 -!- calamari has joined.
05:24:21 <bsmntbombdood> right...
05:24:43 <oerjan> to do *p -= a, you do mov(p,l1+1); l1: a 0 -1
05:26:00 <bsmntbombdood> right...
05:26:22 <bsmntbombdood> the problem is that l1 is global
05:27:29 <oerjan> but you don't have to use the same l1 for every use of a pointer
05:29:50 -!- calamari has quit ("Leaving").
05:31:15 <bsmntbombdood> No matter what it is, it's still global
05:31:28 <oerjan> and how is that a problem?
05:32:11 <bsmntbombdood> It has to be local to the function
05:33:07 <oerjan> you mean to put it in the function's stack frame?
05:33:36 <bsmntbombdood> yeah
05:34:53 <GregorR> Anybody want to help me improve Plof's arrays?
05:35:02 <bsmntbombdood> he GregorR
05:35:05 <bsmntbombdood> *hi
05:35:12 <oerjan> no it does not have to be. the l1 is just a temporary variable that is reset every time the mov(p,l1); l1: 0 a -1 is encountered.
05:35:27 <oerjan> it refers to a part of the _code_, not of the data
05:35:28 <GregorR> Hoi bsmntbombdood ;)
05:35:36 <bsmntbombdood> but when the inner function returns...
05:36:00 <oerjan> do you see any function calls in that code?
05:36:13 <bsmntbombdood> no
05:36:41 <oerjan> so when the inner function returns, it will definitely not be to any place that cares about the value of l1.
05:36:51 <bsmntbombdood> But that code is in a function cal
05:37:41 <Sukoshi> You parted from #lisp !
05:37:52 <oerjan> so? l1 is global because it refers to _code_, not data.
05:38:24 <bsmntbombdood> oerjan: that works for return addresses, but not arguments
05:39:59 <oerjan> l1 is _only_ a label that is _only_ used to make that damned code up there equivalent to a-= *p. It does _not_ need to be stored anywhere, or saved, or remembered, except when that code is running.
05:40:23 <Sukoshi> Uh... what are we discussing?
05:40:36 <bsmntbombdood> Sukoshi: OISC
05:40:46 <Sukoshi> What about OISC?
05:40:52 <Sukoshi> a -= *p ?
05:42:53 <bsmntbombdood> Sukoshi: dereferencing pointer
05:42:54 <bsmntbombdood> s
05:43:42 <oerjan> look at it another way. l1 _is_ local, because its scope ends as soon as that code ends, and it is reinitialized when it is entered. however, it does not have to be in stack memory because the code is totally non-reentrant.
05:46:07 <oerjan> maybe it is not clear, but i intend the l1: to be immediately after the move. it is a that gets the final result, not l1.
05:47:39 <bsmntbombdood> yes...
05:48:42 <oerjan> if you need a to be on the stack, you just put an additional mov(&a,l1+1) first.
05:48:56 <oerjan> i think.
05:57:07 <oerjan> with all this moving going on it might pay to store pointers as their negatives (like you did with the characters in the Hello world program)
06:07:38 <bsmntbombdood> I think I've had enough of this for one night, time for bed
06:20:55 <Sukoshi> I'm assuming X is a total mess because it was designed to work on 70's era hardware?
06:21:55 <Sukoshi> It seems like a lot of the design choices are used to decrease bandwidth... which is a lot cheaper nowadays.
06:22:05 <Sukoshi> Especially if the X server is on your system :P
06:22:53 <oerjan> well it was designed to be able to have server and client on different machines
06:26:44 <oerjan> that, plus being old, probably accounts for the mess
06:28:18 <Sukoshi> Yeah. I have a WM idea I wanna try out.
06:28:22 <Sukoshi> It's gonna be written in CL :)
06:28:58 <oerjan> oh, right, separate WMs, that accounts for much mess-age...
06:29:46 <Sukoshi> Heh.
06:29:52 <Sukoshi> Well, I like the concept of a WM.
06:30:23 <Sukoshi> It's just that, some of X's stuff (*cough* selections *cough*) are incredibly archaic.
06:30:53 <Sukoshi> I mean seriously, does one really need to send a timestamp for a selection? Why can't a selection just be a floating buffer on the X server which clients can access through requests?
06:32:16 -!- digital_me has quit (Read error: 110 (Connection timed out)).
06:37:44 <bsmntbombdood> write a new x
06:40:29 <Sukoshi> Easier said than done :P
06:41:08 <bsmntbombdood> I've no idea how x works
06:41:21 <bsmntbombdood> and what it does
06:41:31 <Sukoshi> I have a somewhat misty idea that's getting less misty.
07:32:14 -!- GreaseMonkey has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:33:24 -!- int-e has joined.
08:33:33 <int-e> @text Blah
08:34:11 <int-e> !bf_txtgen Hello
08:34:42 <EgoBot> 58 +++++++++[>++++++++>+++++++++++>><<<<-]>.>++.+++++++..+++. [341]
08:37:59 <GreaseMonkey> gonna zzz, cya
08:40:12 -!- GreaseMonkey has quit ("Reverse Polish Notation: You cows 2 have.").
08:50:30 -!- anonfunc has joined.
09:54:01 -!- tgwizard has joined.
09:54:19 -!- oerjan has quit ("Later").
10:55:21 -!- jix_ has joined.
11:09:22 -!- int-e has quit ("Bye!").
11:37:26 -!- okokoko has quit (Read error: 60 (Operation timed out)).
13:48:24 -!- anonfunc has quit.
14:21:46 * SimonRC recalls that there *is* an X replacement out there.
14:21:49 <SimonRC> It's called Y
14:21:59 <SimonRC> It was on /. a couple of years ago
15:01:46 -!- Asztal has joined.
15:41:29 -!- Asztal has quit (Read error: 113 (No route to host)).
16:48:27 -!- CakeProphet has quit ("haaaaaaaaaa").
17:00:53 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)).
17:05:45 -!- sp3tt has joined.
17:27:35 -!- digital_me has joined.
17:40:14 -!- jix_ has quit (Read error: 110 (Connection timed out)).
18:34:27 -!- Asztal has joined.
18:40:39 * SimonRC finds the worlds silliest savant ability. Photographic memory of telephones: http://www.spinnoff.com/zbb/viewtopic.php?p=456141#456141
18:49:33 <Asztal> o_o
18:54:55 <bsmntbombdood> whoa, compiled with O0, 1.66 seconds; compiled with O3, .12 seconds
18:55:55 <bsmntbombdood> that's some good optimization
18:58:29 * SimonRC goes to dinner (about 2m away).
19:00:19 <bsmntbombdood> hot damn
19:00:32 <bsmntbombdood> 22 seconds compared to .6 seconds
19:00:44 <lindi-> bsmntbombdood: what program is that?
19:00:53 <bsmntbombdood> my OISC vm
19:01:01 <bsmntbombdood> running an empty loop
19:01:18 <lindi-> url? ;)
19:01:49 <bsmntbombdood> http://bsmntbombdood.mooo.com/oisc.tar.gz
19:05:30 <bsmntbombdood> same thing we were talking about last night
19:10:51 -!- jix_ has joined.
19:13:51 <bsmntbombdood> this is one cool assembly language
19:26:00 <lindi-> vm could be optimized a lot :)
19:27:08 <bsmntbombdood> hmm?
19:28:33 <lindi-> "./vm loop.x" segfaults
19:28:43 <bsmntbombdood> yeah
19:28:48 <bsmntbombdood> you have to assemble it
19:29:06 <bsmntbombdood> python asm.py < loop.x > loop.bin
19:34:17 -!- anonfunc has joined.
19:34:22 <lindi-> ok
19:53:42 -!- digital_me has quit ("Lost terminal").
19:54:42 -!- digital_me has joined.
20:02:17 -!- tgwizard has quit (Remote closed the connection).
20:48:21 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
21:10:57 <bsmntbombdood> lindi-: you play with that?
21:12:32 <bsmntbombdood> OISC, i mean
21:14:42 <GregorR> Is this particular variation of OISC MISC or something else?
21:14:53 <GregorR> Since OISC isn't well-defined, but MISC is :P
21:18:59 <jix_> subskin is the best oisc
21:20:12 <bsmntbombdood> It's almost MISC
21:20:26 <jix_> what?
21:20:36 <bsmntbombdood> except this is subtract and branch if not positive
21:20:54 <jix_> well subskin uses a different way of addressing
21:21:07 <jix_> like every thing is a pointer... not a word to select which kind it is
21:21:17 <bsmntbombdood> hmm?
21:21:20 <bsmntbombdood> me > misc
21:21:33 <jix_> subskin > *
21:21:41 <jix_> http://esolangs.org/wiki/Subskin
21:22:02 <bsmntbombdood> nope
21:23:16 <bsmntbombdood> wow m=readlines.map{|e|e.hex};loop{m[1]<0||$><<m[1].chr&&m[1]=-1;m[2]<0&&m[2]=STDIN.getc||256;a,b,c=m[m[0],3];q=(m[c]=m[a]-m[b])<0?6:3;m[0]+=q}rescue 0
21:25:52 <bsmntbombdood> my vm is bigger ;)
21:27:33 <bsmntbombdood> and cooler ;)
21:28:36 <jix_> no
21:28:39 <jix_> mine is the coolest
21:28:43 <jix_> the übercoolest
21:28:48 <bsmntbombdood> nevar!
21:30:01 * jix_ likes his christmas presents
21:30:28 <bsmntbombdood> you must live in some crazy plac
21:30:37 <bsmntbombdood> e
21:31:25 <jix_> why?
21:31:40 <jix_> in fact you must
21:32:27 <bsmntbombdood> nope, you live in crazy land
21:32:54 <jix_> bsmntbombdood: why?
21:33:07 <bsmntbombdood> CRAZY LAND!
21:33:24 <jix_> bsmntbombdood: nah at least give a reason
21:33:36 <bsmntbombdood> CRAZY OTHER SIDE OF THE WORLD LAND!
21:34:03 <bsmntbombdood> hmm I should put my vm and assembler on the wiki
21:34:16 <jix_> bsmntbombdood: give a reason
21:34:24 <bsmntbombdood> dude, i'm joking
21:34:29 <jix_> bsmntbombdood: no you arn't
21:34:47 <jix_> in fact you think that the earth is made out of carrot juice
21:35:17 <jix_> ok let's stop this ;)
21:36:10 * jix_ is in love
21:44:14 -!- Asztal has joined.
21:47:38 -!- Asztal has quit (Client Quit).
21:51:58 -!- ihope has joined.
21:53:01 <ihope> You know, plenty of programming languages out there just aren't very good.
21:53:28 <ihope> Here's one that seems to have no way of storing data.
21:54:23 <bsmntbombdood> ...
21:54:46 * jix_ is still in love
21:57:30 <bsmntbombdood> With what?
21:58:11 <bsmntbombdood> me?
21:58:15 <bsmntbombdood> I get that a lot
21:59:34 <GregorR> My response is:
21:59:37 <GregorR> "Dot dot dot"
22:09:59 <jix_> bsmntbombdood: no not with you
22:10:33 <bsmntbombdood> suuuuure
22:11:42 * jix_ loves a girl
22:13:42 -!- ihope has quit ("Leaving").
22:15:15 -!- ihope has joined.
22:15:29 <ihope> That didn't do what I expected.
22:35:40 <jix_> .....
22:39:32 -!- Asztal has joined.
23:04:29 -!- anonfunc has quit (Remote closed the connection).
23:11:21 <jix_> ...
23:12:16 <bsmntbombdood> ...
23:12:51 * jix_ is in love
23:14:06 <bsmntbombdood> parsing is crazy
23:14:19 <jix_> love is crazy
23:16:19 <bsmntbombdood> At least parsing can be rationalized
23:16:35 <jix_> love can't
23:17:26 <bsmntbombdood> that was my point
23:17:37 <jix_> but i stole it
23:17:52 * jix_ is in love for the first time.....
23:19:19 <jix_> it's kind of strange
23:22:26 <Asztal> In love with anything in particular, or just generally in love?
23:22:51 <jix_> i love a girl
23:34:59 <GregorR> http://www.stileproject.com/hotty.html < This girl (don't click the link you sick bastards)
23:36:02 <jix_> i guess not that girl
23:36:47 * bsmntbombdood clicks
23:37:05 <bsmntbombdood> yay it's snowing more!
23:48:03 <jix_> and i am still in love.....
23:48:30 <bsmntbombdood> jix_: we know
23:48:38 <jix_> bsmntbombdood: yeah
23:48:43 <jix_> but i can't think of anything else
23:48:53 <bsmntbombdood> so go look in her window
23:49:17 <bsmntbombdood> put a camera in her shower or something
23:49:21 <GregorR> How about helping me improve Plof's array syntax.
23:49:26 <jix_> bsmntbombdood: she is on ski vacation
23:49:38 <jix_> bsmntbombdood: and i wouldn't do such things anyway....
23:49:54 <bsmntbombdood> GregorR: What's plogs's array syntax?
23:50:04 <jix_> bsmntbombdood: i love her.... i'm not searching porn or something..... there is a BIG difference
23:50:13 <bsmntbombdood> jix_: I know, i'm kidding
23:50:21 <GregorR> ... plogs ...
23:50:37 <bsmntbombdood> s/plogs/Plof/
23:50:40 <GregorR> bsmntbombdood: Basically awful, the only way to create an array is var foo = newarray(somecontent);
23:50:56 <jix_> php?
23:51:02 <bsmntbombdood> var foo = newarray(length); would be better
23:51:30 <GregorR> Except you can't create them as dynamically.
23:51:42 <bsmntbombdood> ?
23:51:43 <GregorR> Well, you can expand them dynamically.
23:51:55 <GregorR> You can't create them as dynamically as in PHP.
23:51:58 <jix_> stupid ski vacation.....
23:52:05 <GregorR> Argh, CGI:IRC == lag a l'extreme
23:52:18 <bsmntbombdood> What do you mean create then dynamically?
23:53:09 <GregorR> Well, in PHP, IIRC, you can do things like:
23:53:13 <GregorR> $foo[3] = 7;
23:53:16 <jix_> like when she was here i didn't know what to do...
23:53:19 <GregorR> And then $foo will magically be an array
23:53:20 <jix_> now i know i can't do anything
23:53:24 <jix_> which is much worse
23:54:02 <bsmntbombdood> jix_: #heartsick
23:54:32 <jix_> doesn't exist
23:54:46 <GregorR> #pathetic
23:55:07 <jix_> pff you are mean
23:55:12 <bsmntbombdood> GregorR: So, you have to declare them like any other variable in plof...
23:55:18 <GregorR> And?
23:55:19 <bsmntbombdood> Why is that bad?
23:55:34 <GregorR> bsmntbombdood: Yeah, I guess they're not as bad as I think XD
23:55:49 <GregorR> Idonno, I guess in my head it was worse than it actually is :P
23:56:25 <jix_> were you never in love?
2006-12-25
00:02:05 <GregorR> Were you never boiled alive then eaten by cannibalistic dwarf-men?
00:02:15 <jix_> no i weren't
00:02:23 <jix_> wasn't even
00:03:12 <bsmntbombdood> GregorR: How do you get an element out of an array?
00:04:11 <GregorR> Then you just haven't lived *shrugs*
00:04:31 <GregorR> bsmntbombdood: somearray[somelement] , pretty standard
00:04:45 <GregorR> bsmntbombdood: I guess what sort of bothers me is that: var foo = [...]; is an object, but then foo[...] is only for arrays
00:04:51 <bsmntbombdood> yeah
00:05:08 <bsmntbombdood> That's why I was thinking it might not be foo[x]
00:06:56 <GregorR> I'm sort of out of brackets though :)
00:07:20 <bsmntbombdood> array/i\;
00:07:55 <GregorR> And don't you dare mention < and > ;)
00:08:13 <GregorR> I don't want to usurp symbols that already have a meaning
00:08:31 <GregorR> Erm, a meaning /individually/
00:08:37 <bsmntbombdood> heh
00:09:05 <GregorR> That is, I want to make parsing easier by making it so that anything that groups always groups.
00:09:16 <bsmntbombdood> an array is a class, right?
00:09:30 <bsmntbombdood> *object
00:09:46 <GregorR> There are no classes, and an array is not an object, no.
00:09:56 <Asztal> ◁▷◀▶◖◗
00:10:01 <GregorR> CGI:IRC is laggy :P
00:10:43 <bsmntbombdood> give objects a __call__ method
00:10:49 <bsmntbombdood> like python
00:10:50 <Asztal> did you say it's a prototype-based language?
00:11:03 <bsmntbombdood> then make an array an object, and get elements with array(i)
00:11:14 <GregorR> Asztal: Yes.
00:11:40 <GregorR> bsmntbombdood: Hmmmmmmmmmmmmmmmmmmmmmmmmm
00:12:19 <Asztal> var foo = array.new(...)?
00:12:55 <GregorR> bsmntbombdood: I'll mull that one over.
00:13:00 <GregorR> At the moment I have to go.
00:13:29 <GregorR> Asztal: That would work if arrays were objects, at the moment they aren't, but that's probably how it would go if they are.
00:13:34 * GregorR disappears.
00:13:36 <bsmntbombdood> You would have to make foo(i) a valid lhs though
00:14:35 <bsmntbombdood> which might be odd
00:39:18 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
02:00:49 -!- Rugxulo has joined.
03:06:38 -!- Rugxulo has quit ("OUCH!!!").
03:16:31 -!- CakeProphet has joined.
03:52:43 -!- ihope has quit ("Leaving").
03:57:45 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
04:36:52 -!- digital_me has quit ("Lost terminal").
04:38:10 -!- digital_me has joined.
05:37:53 -!- calamari has joined.
06:09:18 -!- digital_me has quit ("goodnight").
07:01:09 -!- wooby has joined.
07:06:08 -!- wooby has quit.
07:16:17 -!- CakeProphet_ has joined.
07:17:01 -!- CakeProphet has quit (Read error: 113 (No route to host)).
07:17:10 -!- CakeProphet_ has changed nick to CakeProphet.
07:18:23 -!- wooby has joined.
07:20:11 -!- calamari has quit ("Leaving").
07:32:33 -!- wooby has quit.
07:47:08 -!- CakeProphet_ has joined.
07:51:03 -!- CakeProphet has quit (Read error: 113 (No route to host)).
07:51:16 -!- CakeProphet_ has changed nick to CakeProphet.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:36:43 -!- wooby has joined.
08:51:32 -!- CakeProphet_ has joined.
08:51:34 -!- CakeProphet has quit (No route to host).
08:51:35 -!- CakeProphet_ has changed nick to CakeProphet.
09:41:52 -!- wooby has quit.
12:00:34 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- Leading Edge IRC").
12:08:47 -!- oerjan has joined.
12:12:00 <oerjan> photographic memory of telephones?
12:12:25 <oerjan> somewhere out there there is a person with an uncanny ability to remember the _sound_ of cameras.
12:25:33 <oerjan> oh, yeah, merry christmas everyone
12:29:48 -!- jix__ has joined.
13:07:36 -!- CakeProphet has quit (Read error: 113 (No route to host)).
13:48:08 -!- Asztal has joined.
13:55:09 -!- CakeProphet_ has joined.
13:55:13 -!- CakeProphet_ has changed nick to CakeProphet.
15:19:32 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
15:20:15 -!- Asztal has quit (Read error: 110 (Connection timed out)).
17:23:12 -!- Asztal has joined.
18:25:23 -!- calamari has joined.
18:33:20 -!- oklopol has joined.
18:43:59 -!- jix_ has joined.
18:45:13 -!- jix_ has quit (Client Quit).
18:51:11 -!- digital_me has joined.
19:39:26 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
19:39:34 -!- CakeProphet_ has joined.
19:39:38 -!- CakeProphet_ has changed nick to CakeProphet.
21:07:10 -!- oerjan has quit ("Ho ho").
21:51:50 -!- digital_me has changed nick to digital_.
21:57:44 -!- digital_ has changed nick to digital_me.
22:20:16 -!- ivan` has joined.
23:17:26 -!- jix_ has joined.
23:31:35 -!- GreaseMonkey has joined.
23:32:43 -!- digital_me has quit ("Lost terminal").
23:39:12 -!- digital_me has joined.
2006-12-26
00:24:10 -!- wooby has joined.
00:24:11 -!- wooby has quit (Remote closed the connection).
00:47:29 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:57:48 -!- digital_me has changed nick to digital_bot.
00:58:46 -!- digital_bot has changed nick to digital_me.
02:37:10 -!- digital_me has changed nick to digital_bot.
02:40:12 -!- GreaseMonkey has quit (Read error: 60 (Operation timed out)).
02:59:17 -!- digital_bot has quit (Nick collision from services.).
02:59:31 -!- digital_me_ has joined.
03:00:16 -!- digital_me_ has changed nick to digital_me.
03:46:12 -!- Asztal has quit (Read error: 110 (Connection timed out)).
03:49:20 -!- digital_me has quit ("Lost terminal").
03:50:49 -!- digital_me has joined.
04:02:44 <bsmntbombdood> DDD
04:05:32 -!- digital_me has quit ("Lost terminal").
05:11:08 -!- calamari has quit ("Leaving").
05:35:45 -!- digital_me has joined.
05:44:36 -!- digital_me_ has joined.
05:49:49 -!- digital_me has quit (Read error: 60 (Operation timed out)).
06:26:00 -!- digital_me_ has quit ("Lost terminal").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:03:19 -!- ivan` has quit (Read error: 110 (Connection timed out)).
09:05:41 -!- ivan` has joined.
11:29:36 -!- jix_ has joined.
11:32:03 -!- Abnerian has joined.
11:32:20 <Abnerian> ...please write 99 bottles lyrics.
11:38:59 <tokigun> no, i won't.
11:39:18 <Abnerian> Well, that IRP program failed.
11:39:42 <Abnerian> Please do not write out the lyrics for 99 bottles.
11:39:56 -!- Abnerian has quit ("Leaving.").
11:47:09 -!- tgwizard has joined.
12:18:05 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
13:06:58 <pgimeno> hm, I think I could set up a bot that PMs the 99BOB to the sender when it detects "please" and "99 bottles"
13:23:07 <SimonRC> the bot wouldn't last long.
13:23:10 * SimonRC goes
15:39:08 -!- Asztal has joined.
17:22:50 -!- pikhq has joined.
18:44:30 <pikhq> Anyone care if I release a new build of BFM & Basm?
19:10:00 * SimonRC goes
19:11:40 <pikhq> That'd be a no, I think.
19:16:16 <oklopol> that would be so cool
19:16:23 <oklopol> what are they?
19:21:14 <pikhq> BFM is a macro language that compiles to Brainfuck, and Basm is a Brainfuck compiler written in BFM.
19:21:39 <pikhq> The Brainfuck Basm build is, as far as I know, the smallest Brainfuck->C compiler written in C.
19:21:43 <pikhq> Brainfuck.
19:24:36 <pikhq> The BFM build I'm going to upload soon will, for the first time, have an amazing thing caled "documentation".
19:32:01 <pikhq> (soon, meaning "once I take my laptop downstairs to do the whole Sneakernet thing)
19:32:31 -!- nooga has joined.
19:32:34 <nooga> ahoy
19:32:43 * pikhq really needs to get some Wifi equipment
19:32:46 <pikhq> !cat ahoy
19:32:50 <EgoBot> ahoy
19:33:05 <nooga> hm hm
19:37:11 <nooga> i'm trying to writ simple lambda calculus interpreter but i've got kilotons of segfaults ;d
19:37:16 <nooga> i give up
19:37:34 <nooga> even gdb doesn't want to work for me
19:38:15 <pikhq> Just take some hints from Lisp interpreters (and have it accept lambda calculus in sepxs).
19:41:50 <nooga> huh
19:42:03 <nooga> now i should search for a clear implementation
19:42:33 <pikhq> Get a Lisp interpreter, rip out every builtin function except for lambda, and you've got it done. :p
19:43:05 <nooga> ;p
19:46:43 <nooga> ah, only few kLOC
19:49:31 <nooga> naaah, i love simple and educative ways of doing things
20:01:02 * pikhq would think that doing it in a functional language would be simplest
20:06:55 <nooga> yup
20:06:59 <nooga> but i don't want to
20:10:35 <oklopol> simplest would be not to do it, actually
20:10:43 <pikhq> oklopol: True enough.
20:10:46 <oklopol> but guess you don't want that either
20:10:47 <nooga> heh
20:10:53 <nooga> hehehe
20:10:54 <nooga> nah
20:12:25 <nooga> but writing functional language in functional language is shitty idea
20:12:42 <nooga> first of all: slow as hell
20:18:36 <nooga> !sadol 0
20:18:41 <nooga> !sadol !0
20:18:45 <EgoBot> 0
20:19:16 <nooga> !sadol :D<-< 0000
20:19:38 <GregorR> Is that how you make Sadol play hangman?
20:19:39 <oklopol> !sadol !5
20:19:43 <EgoBot> 5
20:19:45 <nooga> :D
20:19:47 <oklopol> !sadol !a
20:19:51 <EgoBot> 0
20:19:58 <oklopol> !sadol !5+5
20:20:00 <nooga> no, it's happy guy shitting with round bricks
20:20:01 <EgoBot> BDSM: Parsing: Unexpected end of file (index: 4, row: 1, col: 5)
20:20:04 <oklopol> :D
20:20:11 <nooga> !sadol !+55
20:20:15 <EgoBot> 10
20:20:23 <GregorR> Gawd, I forgot about that ridiculously awful interpreter name.
20:20:41 <oklopol> !sadol !+5/4-2
20:20:45 <EgoBot> BDSM: Parsing: Unexpected end of file (index: 7, row: 1, col: 8)
20:20:49 <oklopol> !sadol !+5/42
20:20:53 <EgoBot> 7
20:21:07 <oklopol> !sadol !%63
20:21:10 <EgoBot> 0
20:21:20 <oklopol> !sadol !A
20:21:23 <EgoBot> 0
20:21:24 <nooga> wtf r u doing?
20:21:26 <oklopol> :D
20:21:29 <oklopol> sorry
20:22:08 <nooga> !sadol !",217apologize me plx!
20:22:11 <EgoBot> apologize me plx!
20:22:16 <oklopol> wow :O
20:22:33 <oklopol> !sadol !,33
20:22:37 <EgoBot> BDSM: Parsing: Unexpected end of file (index: 4, row: 1, col: 5)
20:22:43 <oklopol> !sadol !"dsaf
20:22:47 <EgoBot> BDSM: Parsing: Cannot evaluate number in compilation time (index: 2, row: 1, col: 3)
20:22:58 <oklopol> too hard :D
20:23:00 <nooga> http://esoteric.voxelperfect.net/wiki/SADOL here man
20:23:06 <pikhq> !sadol !32
20:23:09 <EgoBot> 3
20:23:09 <oklopol> cool1
20:23:22 <nooga> !sadol !,232
20:23:23 <pikhq> !sadol !d!o!e!s
20:23:25 <EgoBot> 32
20:23:27 <EgoBot> 0000
20:23:59 <nooga> !sadol (7:C",228!R!C!"7822,"R:!R!"9822,"C:7(:R",228(7:C",2289"!R!:R",2287"!C!RR!C!"7822,"R:!R!"9822,"C:7(
20:24:03 <EgoBot> BDSM: Parsing: Unexpected end of file (index: 98, row: 1, col: 99)
20:24:19 <nooga> !sadol (7:C",228!R!C!"7822,"R:!R!"9822,"C:7(:R",228(7:C",2289"!R!:R",2287"!C!RR!C!"7822,"R:!R!"9822,"C:7(
20:24:21 <EgoBot> BDSM: Parsing: Unexpected end of file (index: 99, row: 1, col: 100)
20:24:31 <nooga> heeeeh
20:24:34 <nooga> no way
20:24:43 <nooga> it's a reversed quine ;/
20:25:43 <nooga> !sadol (4:C",216!"9(4:C",216!C!C!"9(4:C",216!C!C
20:25:47 <EgoBot> (4:C",216!"9(4:C",216!C!C!"9(4:C",216!C!C
20:25:57 <nooga> YEEAH, A QUINE, SEE?
20:27:27 <oklopol> did you write it on the fly?
20:27:32 <oklopol> not bad
20:27:36 * pikhq really needs to rename BFM. . .
20:27:53 <pikhq> It suffers from an unfortunate bug: there's another language called BFM.
20:28:09 <nooga> nah, it was written by my friend who wrote it when driving to school
20:28:31 <nooga> see the wiki article
20:29:06 <oklopol> :D
20:31:38 <oklopol> !sadol!,3123
20:31:41 <EgoBot> Huh?
20:31:42 <oklopol> !sadol !,3123
20:31:45 <EgoBot> 123
20:31:50 <oklopol> !sadol !,31230
20:31:53 <EgoBot> 123
20:31:54 <oklopol> ah now i get ti
20:31:56 <oklopol> *it
20:33:24 <nooga> cool
20:33:36 <nooga> as the inventor: i'm glad
20:34:43 <oklopol> :D
20:35:06 <nooga> as a human: i'm terrified that there's another prey of my language who's mind will collapse and rot
20:35:09 * pikhq should eat something. . .
20:35:17 <nooga> brain*
20:36:24 -!- oerjan has joined.
20:36:26 <oklopol> *whose
20:36:36 <oklopol> :)
20:36:37 <nooga> i don't f.. care
20:36:41 <nooga> my english is none
20:36:52 <oklopol> you did one correction, i just wanted to belong
20:37:01 <nooga> ow
20:37:05 <nooga> hei oerjan
20:37:11 <oerjan> hei nooga
20:38:32 <pikhq> Hey oerjan.
20:38:45 <pikhq> Want me to get off my ass and upload BFM and Basm?
20:39:05 <oklopol> is the i for fInnish?
20:40:10 <oklopol> in hei
20:40:26 <oerjan> nope, norwegian
20:40:51 <oklopol> figured that when i whois'ed you :)
20:41:12 <oerjan> whois'ing nooga might confuse you :)
20:41:36 <nooga> my host is perl program :d
20:42:23 <oklopol> eg. (3 :a,213 !"6Hello! a {will return a value - 13.} <<<< why -13?
20:42:55 <oklopol> oh
20:43:01 <oklopol> will return A value - 13
20:43:12 <oklopol> not -13, 13
20:43:15 <oklopol> right?
20:43:16 <nooga> yup
20:43:18 <oklopol> am i right, people?
20:43:20 <oklopol> good
20:44:06 <oklopol> nice to see a purely prefix'd lang, usually ppl break out of it when doing loops
20:44:19 <oklopol> or i've been hanging out with the wrong langs
20:44:49 <oklopol> "while condition c is fulfilled"?
20:44:52 <oklopol> nonzero?
20:45:07 <oerjan> Unlambda is pretty prefixed too
20:45:20 <oklopol> 1 == true
20:45:29 <nooga> man, i'm Polish, and this lang uses POLISH notation :D
20:45:31 <oklopol> i don't understand unlambda
20:45:41 <oklopol> haha :D
20:46:28 <nooga> i don't know why is this called Polish notation but well
20:46:52 <oklopol> "Note that negation in SADOL can be done like that: - 1 v where v is negated value." <<<< is this true?
20:47:02 <nooga> sure
20:47:13 <nooga> !sadol :a1 !-1a
20:47:15 <EgoBot> 0
20:47:17 <nooga> !sadol :a0 !-1a
20:47:19 <EgoBot> 1
20:47:22 <nooga> see?
20:47:38 <oklopol> it's polish cuz it's polish
20:47:42 <oklopol> polish invention
20:47:46 <nooga> heh, i should go
20:47:59 <nooga> c u
20:48:20 <oklopol> hey
20:48:22 <oklopol> don't go!
20:48:22 -!- nooga has quit ("Lost terminal").
20:48:25 <oklopol> :(
20:48:44 <oklopol> that's not negation, that's logical not
20:48:58 <oklopol> is it negation?
20:49:02 <oklopol> no it can't be
20:49:46 <oklopol> !sadol !;3
20:49:58 <oklopol> Hmm
20:50:35 <oerjan> i think it was invented by Lukasiewicz (sp)
20:51:06 <oklopol> it was, yes
20:51:15 <oklopol> http://www.answers.com/topic/polish-notation
20:55:55 <oklopol> i like languages that you can learn by heart in 30 minutes
20:57:11 <oerjan> why then you should love Unlambda :)
20:57:27 <oerjan> of course, _understanding_ it might take longer.
20:58:00 <pikhq> You should also love Brainfuck.
20:58:22 * pikhq notes that one could consider Brainfuck as being in Polish notation. . .
20:58:30 <pikhq> Each command takes 0 arguments. ;)
20:59:04 <oerjan> doesn't really work for []
20:59:06 <oklopol> i love brainfuck, yeah, you gotta
20:59:06 <bsmntbombdood> lame
20:59:27 <bsmntbombdood> You should love my OISC
21:00:03 <oklopol> i can read that too :D
21:00:04 <oklopol> link
21:00:44 <bsmntbombdood> http://bsmntbombdood.mooo.com/oisc.tar.gz for code
21:00:48 <oklopol> !sadol (3!,11!,212!,3123
21:00:48 <pikhq> oerjan: One of the definitions for the looping semantics makes it work as pure Polish. . .
21:00:50 <EgoBot> 112123
21:00:52 <bsmntbombdood> I need to write up an explanation ;)
21:01:35 <oklopol> please do
21:01:38 <oklopol> since i can't open that
21:01:39 <oklopol> :)
21:01:43 <pikhq> [: Go to matching ] if cell=0, otherwise go to next instruction. ]: Go to matching [ if cell!=0, otherwise go to next instruction.
21:01:48 -!- jix_ has joined.
21:02:33 <oerjan> the problem i see is that it is reflective: you cannot interpret ] without knowing the previous portion of the program
21:03:30 <pikhq> Of course, you could define [ as a command with a single argument: A block of code, which is marked as ending with a "]".
21:03:42 <pikhq> This code is looped over while the current cell is 0.
21:03:43 <pikhq> Voila.
21:03:55 <oklopol> the marking is postfix
21:04:09 <oklopol> IS TOO!
21:04:18 <oerjan> yes, but that is not strictly polish. of course Joy uses the same idea
21:04:41 <pikhq> oklopol: No, it's a syntactical marking. . . Does the fact that a list is marked as ending with a ) make Lisp not Polish?
21:05:04 <oerjan> not purely polish, no
21:05:13 <oklopol> i'm tired, i blame that for everything
21:06:24 <pikhq> Allow me to define Polish notation: Each command has its arguments after it's command name. That's it.
21:06:53 <pikhq> Parentheses don't make it not Polish. . . In fact, parentheses can be the only way to get it to work when your commands take variable amounts of arguments.
21:07:42 <oklopol> !sadol (4:a3:b1:c1@a(4!b!c:b+bc:c+bc:a-a1
21:07:52 <oklopol> haha :D
21:08:20 <oklopol> !sadol (4:a3:b1:c1@a(5!b!c:b+bc:c+bc:a-a1
21:08:22 <EgoBot> 112358
21:08:41 <oklopol> !sadol (4:a10:b1:c1@a(6!b!c!"1 :b+bc:c+bc:a-a1
21:08:42 <EgoBot> 11
21:08:46 <oklopol> oh yea
21:09:04 <oklopol> !sadol (4:a10:b1:c1@a(7!b!"1-!c!"1-:b+bc:c+bc:a-a1
21:09:06 <EgoBot> 1-1-
21:09:10 <oklopol> hmm :D
21:09:35 <oklopol> !sadol (4:a,210:b1:c1@a(7!b!"1-!c!"1-:b+bc:c+bc:a-a1
21:09:38 <EgoBot> 1-1-2-3-5-8-13-21-34-55-89-144-233-377-610-987-1597-2584-4181-6765-
21:10:08 <oklopol> !sadol (4:a,210:b1:c1@a(7!b!"1-!c?a!"1-!"0:b+bc:c+bc:a-a1
21:10:10 <EgoBot> 1-1-2-3-5-8-13-21-34-55-89-144-233-377-610-987-1597-2584-4181-6765-
21:10:14 <oklopol> ...
21:10:30 <oklopol> !sadol (4:a,210:b1:c1@a(7!b!"1-!c?-a1!"1-!"0:b+bc:c+bc:a-a1
21:10:32 <EgoBot> 1-1-2-3-5-8-13-21-34-55-89-144-233-377-610-987-1597-2584-4181-6765
21:10:49 <oklopol> i should kill myself
21:11:22 <oklopol> a monkey could do that -__-
21:13:14 <oklopol> you can't have but one-letter function names?
21:13:22 <oklopol> should someone happen to know
21:14:36 <oklopol> bsmnt can you send me teh code on irc?
21:16:37 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:17:33 <oklopol> bsmntbombdood. can you?
21:17:34 <oklopol> :D
21:17:35 <oklopol> :D
21:17:53 <oklopol> and which langs does egobot do?
21:17:56 <oklopol> !help
21:17:58 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
21:18:00 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
21:18:42 <oklopol> !bf_textgen Hello world!
21:18:44 <EgoBot> Huh?
21:18:53 <oklopol> !bf_txtgen Hello world!
21:19:19 <pikhq> source ^stdcons.bfm
21:19:27 <pikhq> string hello! "Hello, world!"
21:19:33 <pikhq> source ^outs.bfm
21:19:36 <pikhq> outs hello!end
21:19:43 <pikhq> Hello, world in BFM.
21:20:14 <EgoBot> 105 +++++++++++++++[>+++++>+++++++>++>++++++++<<<<-]>---.>----.+++++++..+++.>++.>-.<<.+++.------.--------.>+. [725]
21:20:37 <oklopol> haha this channel is so cool :D
21:20:54 <oklopol> maybe i'll take my own bot here... is that ok? :D
21:21:41 <oerjan> !unlambda ``````````````.H.e.l.l.o.,. .w.o.r.l.d.!ri
21:21:42 <EgoBot> Hello, world!
21:22:43 <oklopol> :D
21:23:25 <oklopol> !unlambda ```.a.b.c.!ri
21:23:26 <EgoBot> abc
21:23:35 -!- pgimeno has quit (Read error: 54 (Connection reset by peer)).
21:23:36 <oklopol> cool i can print in unlambda
21:23:37 <oklopol> :D
21:24:27 <pikhq> !cat Whee.
21:24:28 <EgoBot> Whee.
21:24:33 <pikhq> I can print in EgoBot.
21:26:53 -!- oklobot2 has joined.
21:27:05 <oklopol> !exec "Hello, world!"PrntNl
21:27:06 <EgoBot> Huh?
21:27:08 <oklobot2> Hello, world!
21:27:13 <oklopol> :DD
21:27:57 <pikhq> !exec Quit
21:28:02 <EgoBot> Huh?
21:28:19 <pikhq> !daemon exec bf ,[,]
21:28:39 <pikhq> !exec "Shut up, EgoBot."PrntNl
21:28:44 <oklobot2> Shut up, EgoBot.
21:28:49 <oklopol> :D
21:28:50 <pikhq> Whooo.
21:28:57 <oklopol> be careful, i never made that reliable :)
21:29:20 <oklopol> it barely keeps intact when you exec with it
21:29:20 <pikhq> Just making sure that I got EgoBot to have an exec command. . .
21:29:34 <pikhq> (which just eats input, though)
21:30:17 <oklopol> ok
21:30:43 <pikhq> Makes it shut up, at least.
21:40:22 -!- pgimeno has joined.
21:46:27 <bsmntbombdood> oklopol: ?
21:49:47 -!- bsmnt_bot has joined.
21:49:58 <bsmnt_bot> I pwn j00
21:52:42 <oerjan> !daemon uncat unlambda ```s`d`@|d`cd
21:52:55 <oerjan> !uncat Test
21:53:11 <oerjan> hmmm..
21:53:19 <oerjan> !ps d
21:53:49 <oerjan> darn, it's dead
21:57:12 <oerjan> !ps
22:01:06 <oklopol> bsmntbombdood, the source, dcc send or smth, the link won't work
22:04:07 <oerjan> BTW oklopol when you can understand my cat program you may consider yourself Unlambda initiated :)
22:04:39 <bsmntbombdood> http://bsmntbombdood.mooo.com/oisc.tar.gz
22:04:42 <bsmntbombdood> try that link
22:06:46 <oklopol> got it to work
22:07:53 <bsmnt_bot> i pwn j00
22:08:20 <bsmntbombdood> ~ctcp #esoteric ACTION pwns j00
22:08:20 * bsmnt_bot pwns j00
22:09:39 <bsmntbombdood> ~exec , , , , , ,
22:10:06 <pikhq> ~ctcp #esoteric PING I'm a right bastard.
22:10:52 <GregorR> ALBATROSS!
22:10:57 <GregorR> AAAAAAAAAAAAAAALBATROSS!
22:10:58 <bsmntbombdood> ~exec self.register_raw(".* #esoteric .*(.+)\1{5,}", lambda x : bot.raw("PRIVMSG #esoteric :zomg repeat!"))
22:11:02 <bsmntbombdood> AAAAAAAAAAAAAAA
22:11:08 <bsmntbombdood> damn
22:11:39 <bsmntbombdood> ~exec print [i[0].pattern for i in self.raw_regex_queue]
22:11:48 <bsmntbombdood> o right
22:12:00 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
22:12:07 <bsmntbombdood> ~exec self.register_raw(r".* #esoteric .*(.+)\1{5,}", lambda x : bot.raw("PRIVMSG #esoteric :zomg repeat!"))
22:12:11 <bsmntbombdood> AAAAAAAAAAAAAAAAAAAAAAAAAAAA
22:12:11 <bsmnt_bot> zomg repeat!
22:12:15 <bsmntbombdood> yaaaaaaaaaaaaay
22:12:15 <bsmnt_bot> zomg repeat!
22:12:35 <bsmntbombdood> asdf asdf asdf asdf asdf asdf asdf asdf asfd asdf
22:12:36 <bsmnt_bot> zomg repeat!
22:13:00 * bsmntbombdood gigles
22:13:33 <oklopol> oo
22:13:37 <oklopol> ooo
22:13:41 <oklopol> ooooo
22:13:42 <pikhq> ~exec quit
22:13:47 <oklopol> ooooooooooooo
22:13:47 <bsmnt_bot> zomg repeat!
22:13:50 <oklopol> oooooo
22:13:51 <bsmnt_bot> zomg repeat!
22:13:57 <oklopol> o o o o o o
22:14:04 <oklopol> o o o o o o o o
22:14:05 <bsmnt_bot> zomg repeat!
22:14:08 <bsmntbombdood> oklopol: 6 repititions
22:14:18 <pikhq> !exec exit
22:14:50 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric : pikhq is stupid")
22:14:50 <bsmnt_bot> pikhq is stupid
22:15:03 <oklopol> asgaergalukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslme
22:15:04 <bsmnt_bot> zomg repeat!
22:15:26 <bsmntbombdood> regexes are amazing
22:15:48 <oklopol> asd97iyhasdvhbjasd-loiasdtyiasdoiasdbjkasdpoiasdvhjlasdoasdbnjklasdrtu
22:16:00 <oklopol> asdasdasdasddasdasdasdasd
22:16:09 <oklopol> can i see the regex?
22:16:17 <bsmntbombdood> r".* #esoteric .*(.+)\1{5,}"
22:16:38 <oklopol> i wish i knew the syntax for them :)
22:16:43 <oklopol> i should learn it
22:16:47 <pikhq> !exec self.raw("QUIT : Bwahahahah!")
22:16:49 <bsmntbombdood> you should
22:17:05 <pikhq> ~exec self.raw("QUIT : Bwahahahah!")
22:17:06 <pikhq> XD
22:17:14 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :pikhq never catches on")
22:17:14 <bsmnt_bot> pikhq never catches on
22:17:38 <pikhq> It's regexp'ed access to ~exec. :'(
22:18:17 <bsmntbombdood> duuuh
22:18:28 <pikhq> !bf +[]
22:18:38 <pikhq> :)
22:18:40 <bsmntbombdood> r"^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :%sexec" % COMMAND_CHAR
22:18:44 <bsmntbombdood> is the regex
22:20:31 * bsmntbombdood cackles
22:20:40 <bsmntbombdood> beat THAT!
22:20:56 <pikhq> IRP will solve it.
22:21:27 <pikhq> Would bsmntbombdood please output '~exec self.raw("QUIT :Bwahahahah!")'?
22:21:49 <bsmntbombdood> no
22:22:11 <pikhq> Bad IRP interpreter!
22:22:23 * pikhq beats bsmntbombdood with a stick
22:22:32 <bsmntbombdood> kinky!
22:22:38 <oerjan> mgrvgrvladjemgrvgrvladjemgrvgrvladjemgrvgrvladjemgrvgrvladjemgrvgrvladje
22:22:38 <bsmnt_bot> zomg repeat!
22:22:44 <pikhq> aaaaaa
22:22:45 <bsmnt_bot> zomg repeat!
22:22:48 <pikhq> aaaaaaaaaaaaaaaaaa
22:22:49 <bsmnt_bot> zomg repeat!
22:23:03 <pikhq> Does this count?Does this count?Does this count?Does this count?Does this count?Does this count?
22:23:04 <bsmnt_bot> zomg repeat!
22:23:07 <pikhq> :)
22:28:54 <bsmntbombdood> of cccccccccccccccccccccccccourse it counts
22:28:54 <bsmnt_bot> zomg repeat!
22:30:53 <bsmntbombdood> ~exec self.register_raw("^pikhq\S+ PRIVMSG #esoteric :bsmnt_bot: die die die", lambda x : True)
22:31:00 <bsmntbombdood> now pikhq can kill it
22:31:02 <oerjan> i think the regex should have been r".* #esoteric .*(..+)(.*\1){5,}"
22:31:34 <bsmntbombdood> why?
22:31:51 <bsmntbombdood> then. a. message. with. 6. sentences. in. it. would. match.
22:32:10 <pikhq> ~exec self.raw("PRIVMSG #esoteric :Yay!")
22:32:22 <bsmntbombdood> pikhq: not like that
22:32:28 <pikhq> Worth a try.
22:32:35 <bsmntbombdood> you have to say "bsmnt_bot: die die die"
22:32:37 <pikhq> bsmnt_bot: die die die
22:32:45 <bsmntbombdood> or not
22:32:55 <bsmntbombdood> oh right
22:33:02 <bsmntbombdood> ~exec self.register_raw("^:pikhq\S+ PRIVMSG #esoteric :bsmnt_bot: die die die", lambda x : True)
22:33:05 <bsmntbombdood> NOW you can
22:33:38 <pikhq> bsmnt_bot: die die die
22:33:38 -!- bsmnt_bot has quit (Remote closed the connection).
22:33:41 <pikhq> Whoo.
22:33:46 <bsmntbombdood> lol
22:33:54 -!- bsmnt_bot has joined.
22:36:34 <bsmntbombdood> ~exec self.register_raw(r"(?<=die) (.)(.) \1{2} (.\2){3}", lambda x : True)
22:36:47 <bsmntbombdood> whoever can figure out what matches that regex can kill bsmnt_bot
22:36:56 <pikhq> die die die
22:37:04 <pikhq> . . .
22:37:07 <bsmntbombdood> no
22:37:26 <tokigun> die!! !!!! !!!!!!
22:37:27 <pikhq> DIE, YOU REGEX BASTARD!
22:37:34 <oklopol> :D
22:37:34 <tokigun> hmm,
22:37:42 <pikhq> die..
22:37:48 <oklopol> how long will that be on?
22:37:53 <tokigun> die !! !! !!!!!!
22:37:59 <pikhq> oklopol: Presumably until someone figures it out.
22:38:10 <oklopol> i haven't read it yet cuz i poked myself in the eye with a soapy finger :\
22:38:13 <bsmntbombdood> oklopol: yeah
22:38:22 <oklopol> pretty ouch
22:38:46 <tokigun> huh, "die XY XX ?Y?Y?Y" is not matched?d
22:38:47 <bsmntbombdood> oh wait
22:39:05 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
22:39:22 <pikhq> die !! !! !!!!!!
22:39:23 <pikhq> ?
22:39:31 <bsmntbombdood> ~exec self.register_raw(r".*(.)(.) \1{2} (.\2){3}.*", lambda x : True)
22:39:36 <bsmntbombdood> that's better
22:39:47 <pikhq> !! !! !!!!!!
22:39:47 -!- bsmnt_bot has quit (Remote closed the connection).
22:39:54 <bsmntbombdood> lol
22:39:56 <pikhq> That does match it, then.
22:40:00 <pikhq> Whoo.
22:40:04 <tokigun> bsmntbombdood, hmm, why first regex doesn't match my string?
22:40:25 <bsmntbombdood> tokigun: because the regexes are matched against the irc protocol stuff too
22:40:31 -!- bsmnt_bot has joined.
22:40:49 <pikhq> The server could kill him, then. XD
22:41:16 <bsmntbombdood> so it sees your nick, ip address, channel etc
22:43:27 -!- Asztal has quit (Read error: 113 (No route to host)).
22:43:47 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(.)Y(.) ((\1\2.\1){3}) \4 (?=abcde)", lambda x : True)
22:43:50 <bsmntbombdood> another one
22:44:23 <pikhq> .Y. !!!!!!!!! aaaa
22:44:45 <pikhq> !!!!!!!!! aaaa
22:44:58 * bsmntbombdood laughs at your futility
22:45:00 <tokigun> aYb abxaabxaabxa abxa abcde
22:45:00 -!- bsmnt_bot has quit (Remote closed the connection).
22:45:05 <bsmntbombdood> damn
22:45:20 <pikhq> tokigun: I take it that you grok regexps?
22:45:42 <bsmntbombdood> he must
22:46:07 <bsmntbombdood> I really just wanted to use (.)Y(.)
22:46:16 <pikhq> Perv.
22:46:24 <bsmntbombdood> indeed
22:46:49 -!- bsmnt_bot has joined.
22:47:22 <bsmntbombdood> hmmm, what's a good one now
22:48:34 <pikhq> "foo"
22:48:38 <bsmntbombdood> I can't think of any really esoteric regex features
22:49:55 <tokigun> bsmntbombdood, conditional pattern with assertion
22:50:00 -!- jix_ has joined.
22:50:08 <bsmntbombdood> ...huh?
22:50:12 <tokigun> maybe python re also supports it.
22:50:22 <bsmntbombdood> python's re doesn't support conditionals
22:50:48 <tokigun> hmm.. wait
22:51:04 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :.", lambda x : True)
22:51:04 -!- bsmnt_bot has quit (Remote closed the connection).
22:51:09 <bsmntbombdood> errrr
22:51:15 <bsmntbombdood> typed enter too early :(
22:51:19 -!- bsmnt_bot has joined.
22:51:46 <tokigun> it supports. but its conditional pattern is different than PCRE's one
22:51:54 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(.)\1{30000}", lambda x : True)
22:51:57 * bsmntbombdood laughs
22:52:00 <tokigun> wow.
22:52:18 <bsmntbombdood> any character, repeated 30001 times
22:53:19 <oerjan> is it even technically possible?
22:53:22 <pikhq> Which is impossible to match with the limited amount of characters allowed in IRC messages.
22:53:29 <pikhq> oerjan: The limit's closer to 300.
22:53:47 <tokigun> irc server will cut down the message
22:54:03 <pikhq> bsmnt_bot can't be killed.
23:00:35 <bsmntbombdood> hehehehe
23:00:42 * bsmntbombdood cackles
23:01:09 -!- ihope has joined.
23:01:16 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(.)^[\1]", lambda x : True)
23:01:20 <bsmntbombdood> errr
23:01:26 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(.)[^\1]", lambda x : True)
23:01:26 -!- bsmnt_bot has quit (Remote closed the connection).
23:01:30 <bsmntbombdood> damn
23:01:39 -!- bsmnt_bot has joined.
23:03:51 <bsmntbombdood> ~exec self.register_raw("(?=a)(?<!a)", lamba x: True")
23:03:54 <bsmntbombdood> ~exec self.register_raw("(?=a)(?<!a)", lamba x: True)
23:04:00 <bsmntbombdood> ~exec self.register_raw("(?=a)(?<!a)", lambda x: True)
23:04:37 <bsmntbombdood> a
23:04:38 <bsmntbombdood> aa
23:05:05 <pikhq> a<a
23:05:14 <pikhq> ab
23:05:15 <bsmntbombdood> that regex is broken
23:05:16 <pikhq> a.
23:05:20 <pikhq> Clearly.
23:06:44 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(,[^,]*?){4}KILL(,[^,]*?){3}ME" , lambda x : True)
23:06:57 <pikhq> KILL ME
23:07:14 <bsmntbombdood> 1,2,3,KILL,1,2,ME
23:07:23 <bsmntbombdood> 1,2,3,4,KILL,1,2,,3ME
23:07:27 <bsmntbombdood> 1,2,3,4,KILL,1,2,3,ME
23:07:30 <bsmntbombdood> hrm
23:07:35 <pikhq> !cat f
23:07:40 <bsmntbombdood> ,2,3,4,KILL,1,2,3,ME
23:07:50 <bsmntbombdood> ,2,3,4,5,KILL,1,2,3,ME
23:07:57 <bsmntbombdood> ,2,3,4,5,KILL,1,2,ME
23:08:01 <bsmntbombdood> heh
23:08:47 <oerjan> ,,,,KILL,,,ME
23:08:47 -!- bsmnt_bot has quit (Remote closed the connection).
23:09:00 <oerjan> yeah!
23:09:04 <bsmntbombdood> nice
23:09:11 -!- bsmnt_bot has joined.
23:10:59 <oklopol> i'm new to this, does [^,]*? match any string with no , in it, or an empty string?
23:11:02 <oklopol> :D
23:11:13 <oerjan> the former
23:11:25 <oklopol> ? makes it optional?
23:11:35 <oklopol> it wasn't a xor, but an or
23:11:41 <oklopol> in my sentence
23:11:44 <oklopol> :)
23:11:57 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(I) (am) %s" % "bored" , lambda x : True)
23:12:02 <oerjan> makes it minimal length, but that doesn't matter for pure matching (except efficiency)
23:12:23 <oklopol> ah of course
23:12:37 <oerjan> I am bored
23:12:38 -!- bsmnt_bot has quit (Remote closed the connection).
23:12:50 -!- bsmnt_bot has joined.
23:13:29 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :a{112358}" , lambda x : True)
23:14:09 <bsmntbombdood> HA
23:14:10 <pikhq> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
23:14:12 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
23:14:16 <pikhq> LMAO
23:14:23 <bsmntbombdood> LOL!
23:14:32 <pikhq> I killed a bot!
23:14:40 <pikhq> Not the one I was trying for, but still. . .
23:15:16 <pikhq> while(1, {println("I love Plof!");});
23:16:06 -!- ihope__ has joined.
23:16:21 <bsmntbombdood> ~exec self.do_callbacks(":foo PRIVMSG #esoteric :%s" % ("a" * 112358))
23:16:21 -!- bsmnt_bot has quit (Remote closed the connection).
23:16:28 <bsmntbombdood> woot
23:16:31 <pikhq> Heheh.
23:16:42 <oklopol> haha :D
23:16:45 <oklopol> my bot sux <3
23:16:52 -!- bsmnt_bot has joined.
23:17:02 <bsmntbombdood> ~ctcp #esoteric ACTION rocks
23:17:02 * bsmnt_bot rocks
23:17:39 <pikhq> ~ctcp #esoteric False.
23:18:26 <ihope__> ~ctcp #esoteric PRIVMSG #haskell Hello!
23:18:35 <lindi-> sigh
23:18:35 <bsmntbombdood> ~exec for i in self.raw_regex_queue: i[1] != self.do_ctcp or self.raw_regex_queue.remove(i)
23:18:46 <bsmntbombdood> no more ~ctcp~
23:18:50 <bsmntbombdood> no more ~ctcp!
23:19:11 <bsmntbombdood> ~ctcp #esoteric ACTION calls you all losers
23:19:58 <bsmntbombdood> ~exec self.register_raw(r"^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :~ctcp", self.do_ctcp)
23:20:04 <bsmntbombdood> ~ctcp #esoteric ACTION calls you all losers
23:20:04 * bsmnt_bot calls you all losers
23:23:24 -!- alveraan has joined.
23:26:29 -!- calamari has joined.
23:29:05 <pikhq> It be squid!
23:29:15 <calamari> hi
23:32:49 -!- ihope has quit (Connection timed out).
23:34:06 <bsmntbombdood> ~ctcp #esoteric ACTION says hi to calamari
23:34:06 * bsmnt_bot says hi to calamari
23:39:06 -!- nooga has joined.
23:39:11 <nooga> uouoouuou
23:39:37 <bsmntbombdood> ~ctcp #esoteric ACTION says hi to nooga
23:39:38 * bsmnt_bot says hi to nooga
23:39:49 <nooga> oh hi bsmnt_bot
23:41:16 <nooga> oklopol: so, did u learn SADOL?
23:42:27 <bsmntbombdood> ~raw self.register_raw(".*JOIN :#esoteric.*", lambda x : bot.raw("PRIVMSG #esoteric :hi %s!" % re.compile("^:(\S+)!.*").match(x).group(1)))
23:42:36 <bsmntbombdood> ~exec self.register_raw(".*JOIN :#esoteric.*", lambda x : bot.raw("PRIVMSG #esoteric :hi %s!" % re.compile("^:(\S+)!.*").match(x).group(1)))
23:42:37 <bsmnt_bot> hi bsmntbombdood!
23:42:43 <bsmntbombdood> wtf?
23:43:11 <nooga> ~raw exec("rm -rf /")
23:43:25 -!- bsmnt_clone has joined.
23:43:25 <bsmnt_bot> hi bsmnt_clone!
23:43:30 <bsmnt_clone> it works!
23:43:35 -!- bsmnt_clone has quit (Client Quit).
23:43:44 <nooga> wof
23:45:27 <oklopol> nooga i think so
23:45:40 <oklopol> and also regexp now, i think :)
23:46:06 <nooga> okay
23:46:12 <nooga> write binary sort in sadol :D
23:46:39 <oklopol> JOIN :#esoteric
23:46:40 <bsmnt_bot> hi oklopol!
23:46:43 <oklopol> :)
23:46:47 <bsmntbombdood> heh
23:46:57 <oklopol> binary sort...
23:47:00 -!- alveraan has left (?).
23:47:35 <oklopol> we'll see
23:47:42 <oklopol> :)
23:48:18 <oklopol> can't find binary sort, what is it?
23:49:35 <bsmntbombdood> [[Binary sort]]?
23:49:53 <nooga> bah
23:49:56 <nooga> binary search
23:50:06 <nooga> i guess i'm sleeping already
23:50:06 <nooga> ;/
23:50:09 <bsmntbombdood> [[Binary search]]?
23:50:25 <bsmntbombdood> JOIN :#esoteric
23:50:25 <bsmnt_bot> hi bsmntbombdood!
23:50:32 <nooga> http://en.wikipedia.org/wiki/Binary_search here
23:50:34 <oklopol> hmm
23:50:52 <oklopol> i know what is it
23:50:52 <oklopol> *it is
23:50:52 <oklopol> i think
23:51:49 <oklopol> hmm, i could do it but it's kinda embarrassing since this channel is the only way to debug for me :)
23:52:10 <nooga> download BDSM2
23:52:18 <bsmntbombdood> lol BDSM2
23:52:20 <oklopol> k
23:52:33 <oklopol> ? :D
23:52:53 <nooga> http://regedit.gamedev.pl/BDSM/
23:53:03 <nooga> Badly Developed Sadol Machine
23:53:07 <nooga> the interpreter
23:54:27 <nooga> the name is accidental ;p
23:58:14 <oklopol> got it installed :)
23:58:17 <nooga> so, isn't it cool?
23:58:55 <nooga> a code in sadol may look like long string of censored cursewords
23:59:17 <nooga> it is intentional
23:59:39 <oklopol> !sadol !$3123
23:59:57 <oklopol> hmm
23:59:59 <oklopol> !sadol !2
2006-12-27
00:00:01 <nooga> woot?
00:00:02 <oklopol> !sadol !a
00:00:09 <oklopol> ?
00:00:26 <oklopol> !sadol !"3oso
00:00:47 <nooga> it is BROKEN?!?!?!?!?!
00:00:52 <oklopol> :DD
00:01:02 <oklopol> but, does it print lists?
00:01:10 <nooga> of crs
00:01:17 <oklopol> good
00:01:24 <nooga> !$3123 => (1 2 3)
00:01:28 <oklopol> only one character names for funcs etc?
00:01:33 <nooga> yea
00:01:40 <oklopol> that's no good :\
00:01:49 <nooga> but you've got scopes
00:01:58 <oklopol> trues.
00:02:48 <nooga> and u can do things like ~f2 ?=#_00 {something} ?=#_01 {something else} {...} 0
00:03:02 <oklopol> lists are passed by reference?
00:03:24 <nooga> and then f0a is not the same as f1a
00:03:39 <nooga> oh, who knows :d
00:04:04 <oklopol> :O
00:04:12 <oklopol> hard to make a binary sort if not...
00:04:17 <oklopol> oh
00:04:19 <oklopol> it's not
00:04:28 <oklopol> globals exist
00:04:41 <nooga> make a function that takes list as a parameter and returns new list
00:04:42 <oklopol> fuck
00:04:52 <oklopol> i was thinking of a sort again...
00:04:58 <oklopol> search is trivial
00:05:05 <oklopol> just wait a few hours...
00:05:08 <oklopol> :D
00:05:18 <nooga> http://regedit.gamedev.pl/BDSM/bubblesort.sad
00:05:22 <nooga> a bubblesort
00:06:13 <bsmntbombdood> booblesort is the best
00:06:16 <bsmntbombdood> *bubble
00:07:36 <nooga> boob le sort
00:09:05 <bsmntbombdood> (.)Y(.)
00:14:14 <nooga> g2g bye
00:14:24 -!- nooga has quit.
00:18:58 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:22:53 -!- oerjan has quit ("Good night").
00:37:38 -!- ihope__ has changed nick to ihope.
00:40:30 <oklopol> lol
00:40:38 <oklopol> 35 min to do a search :)
00:40:47 <oklopol> hard lang to debug...
01:15:01 -!- calamari has quit ("Leaving").
01:31:45 -!- tgwizard has quit (Remote closed the connection).
01:52:16 <pikhq> GregorR: Like the changes in the current Plof build.
01:52:36 <pikhq> Still doesn't have my for semantics, but. . .
01:54:25 <oklopol> i made quicksort, where
01:54:28 <oklopol> 's the guy :\
01:55:37 <oklopol> ~p1(3(2:b:a$0:s#:l#_00@#l-01?-1>:i[ls]ai]bi$2ab~q1?<#:f#_0-012f+q#:apf0q#a1
01:55:44 <oklopol> nice lang
01:56:15 <oklopol> !sadol
01:56:18 <oklopol> !sadol !5
01:56:27 <oklopol> why is it not working? :(
01:57:19 <bsmntbombdood> for({init},{while},{update},{code});
01:57:33 <oklopol> i see
01:57:35 <bsmntbombdood> is how I would do it
01:57:42 <bsmntbombdood> oklopol: that wasn't for you
01:57:57 <oklopol> i know
01:58:02 <oklopol> :D
01:58:24 <bsmntbombdood> it was for pikhq, GregorR
01:58:42 <oklopol> i figured it right after i'd said my thing
01:58:45 <oklopol> as usual
01:58:49 <oklopol> :)
02:05:26 <pikhq> bsmntbombdood: And that's my modified for semantics.
02:05:41 <bsmntbombdood> Oh
02:05:59 <pikhq> for(reference, {while}, {update}, {code}); is what's current.
02:06:11 <pikhq> And update is evaluated before code.
02:06:22 <pikhq> (that is, in his current version)
02:06:32 <bsmntbombdood> what's reference?
02:06:39 <pikhq> A reference to a variable.
02:06:44 <pikhq> Like a pointer.
02:06:56 <bsmntbombdood> what for?
02:07:16 <pikhq> Well, sort-of like a pointer. . .
02:07:38 <pikhq> It's so that the variable is in the scope of while, update, and code. . .
02:07:55 <bsmntbombdood> odd
02:07:58 <pikhq> Which is pointless, since that variable is *already* in their scope.
02:08:18 <pikhq> It's a piece that was written *before* his interpreter.
02:10:04 <pikhq> I think it was before his scoping rules were fully defined, as well.
02:18:54 -!- pikhq has quit ("leaving").
02:27:57 <CakeProphet> hmmm...
02:28:12 <CakeProphet> I need a language whose entire behavior is undefined.
02:28:23 <CakeProphet> maybe C? -evil snicker-
02:28:34 <oklopol> i have one
02:29:08 <oklopol> it's called zut
02:29:26 <oklopol> or gla
02:29:31 <oklopol> the name is not defined
02:30:07 <oklopol> god 4:24 sleep ->
03:11:02 <bsmntbombdood> sleep is for the weak
03:51:07 -!- Sgeo has joined.
03:51:08 <bsmnt_bot> hi Sgeo!
03:51:22 <Sgeo> Hi
03:51:24 <Sgeo> Is that a bot?
03:51:33 <GregorR> lol
03:51:42 <GregorR> pikhq: Stop making fun of me :P
03:51:48 <Sgeo> erm
03:52:00 <Sgeo> I mean, is it an automatic action to greet me?
03:52:25 <GregorR> Lesse
03:52:26 -!- GregorR has left (?).
03:52:39 -!- GregorR has joined.
03:52:39 <bsmnt_bot> hi GregorR!
03:52:51 <GregorR> Yes it is
03:56:04 <bsmntbombdood> heh
03:56:08 * bsmntbombdood hides
03:57:04 -!- bsmntbombdood has left (?).
03:57:04 -!- bsmntbombdood has joined.
03:57:04 <bsmnt_bot> hi bsmntbombdood!
03:57:14 * bsmntbombdood giggles
03:57:28 <bsmntbombdood> ~exec print [i[0].pattern for i in self.raw_regex_queue]
03:58:32 <bsmntbombdood> ~exec for i in raw_regex_queue: i[0].pattern != '.*JOIN :#esoteric.*' or self.raw_regex_queue.remove(i)
03:58:32 <bsmnt_bot> hi bsmntbombdood!
03:58:36 -!- bsmntbombdood has left (?).
03:58:37 -!- bsmntbombdood has joined.
03:58:37 <bsmnt_bot> hi bsmntbombdood!
03:58:47 <bsmntbombdood> urgh
03:59:02 <bsmntbombdood> ~exec for i in self.raw_regex_queue: i[0].pattern != '.*JOIN :#esoteric.*' or self.raw_regex_queue.remove(i)
03:59:08 -!- bsmntbombdood has left (?).
03:59:10 -!- bsmntbombdood has joined.
03:59:17 <bsmntbombdood> there we go
04:00:00 <Sgeo> hms?
04:00:08 <bsmntbombdood> hms?
04:02:45 <Sgeo> What is the code thingy?
04:02:52 <bsmntbombdood> ?
04:03:44 <bsmntbombdood> my bot?
04:04:41 <Sgeo> What did you change?
04:04:43 <Sgeo> And what lang?
04:04:49 <bsmntbombdood> python
04:05:13 <bsmntbombdood> And the "~exec for i in self.raw_regex_queue: i[0].pattern != '.*JOIN :#esoteric.*' or self.raw_regex_queue.remove(i)" took out the on-join hello message thing
04:08:44 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :hai2u")
04:08:44 <bsmnt_bot> hai2u
04:12:01 -!- beastman has joined.
04:12:12 <bsmntbombdood> hello, beastman!
04:12:18 <beastman> hi
04:12:32 <beastman> please write "hello world"
04:12:39 <bsmntbombdood> ~exec self.register_raw(".*(JOIN) :#esoteric.*", lambda x : bot.raw("PRIVMSG #esoteric :hi %s!" % re.compile("^:(\S+)!.*").match(x).group(1)))
04:12:51 <bsmntbombdood> ~raw PRIVMSG #esoteric hello world
04:12:51 <bsmnt_bot> hello
04:12:58 <bsmntbombdood> ~raw PRIVMSG #esoteric :hello world
04:12:58 <bsmnt_bot> hello world
04:13:10 <beastman> :P
04:13:28 <beastman> Please, some one write the first 16 numbers of the Fibonacci Sequence.
04:14:00 <beastman> http://esoteric.voxelperfect.net/wiki/IRP
04:15:25 -!- beastman has left (?).
04:18:00 <Sgeo> :(
05:40:12 -!- Sgeo has quit (Remote closed the connection).
06:00:35 -!- anonfunc has joined.
06:00:35 <bsmnt_bot> hi anonfunc!
06:01:14 <anonfunc> hello, bot
06:18:13 <bsmntbombdood> hehehe
06:18:50 <bsmntbombdood> that's funny
07:09:43 -!- oerjan has joined.
07:09:43 <bsmnt_bot> hi oerjan!
07:19:33 <oerjan> 1,1,3,5,8,13,21,34,55,89,144,233,377,610,987
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:21:35 <ivan`> 1,1,2,3,5,8,13,21,...
10:21:46 <ivan`> er sec
10:22:20 <ivan`> yep
10:22:36 <oerjan> darn
10:23:06 <oerjan> that's what i get for trying to calculate by hand
10:23:59 <oerjan> or rather, memorizing the start
11:38:04 -!- oerjan has quit ("Later").
11:44:56 -!- tgwizard has joined.
11:44:56 <bsmnt_bot> hi tgwizard!
12:20:26 -!- jix_ has joined.
12:20:27 <bsmnt_bot> hi jix_!
12:20:38 <jix_> moin
13:02:16 -!- ihope has quit (Connection timed out).
13:09:08 -!- gerard_ has joined.
13:09:08 <bsmnt_bot> hi gerard_!
13:09:28 <gerard_> hi bsmnt_bot!
13:56:56 <gerard_> !help
15:07:40 -!- gerard_ has quit ("Leaving.").
16:21:20 -!- meolox has joined.
16:21:20 <bsmnt_bot> hi meolox!
16:21:43 <meolox> print "test" || die "I'm dead for no reason"
16:25:29 <meolox> cout << anyonethere ? "yes" : "no";
16:27:48 -!- meolox has left (?).
17:30:02 <oklopol> why is the guy not here
17:30:04 <oklopol> :\
17:32:44 <bsmntbombdood> ~exec self.raw_regex_queue.pop()
17:49:37 -!- calamari has joined.
18:10:53 <oklopol> :(
18:11:01 <oklopol> there already was a quicksort on the page
18:17:07 -!- okokokoko has joined.
18:17:08 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
18:17:52 -!- okokokoko has changed nick to oklopol.
18:58:30 <CakeProphet> hmmm... Lua looks pretty cool.
19:05:09 -!- oerjan has joined.
19:12:26 -!- calamari has quit (Read error: 104 (Connection reset by peer)).
19:21:56 -!- okokoko has joined.
19:22:14 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
19:28:03 * CakeProphet is looking for a new language to play around with...
19:28:18 <CakeProphet> something relatively unknown, and usable.
19:33:41 -!- calamari has joined.
19:44:06 -!- okokoko has changed nick to oklopol.
19:45:02 -!- oklobot2 has joined.
19:45:12 <oklopol> it has a language! D:
19:46:54 <oklopol> i'll now prove it to be turing complete
19:47:05 <oklopol> !exec "Hello, world!"PrntNl
19:47:08 <oklobot2> Hello, world!
19:57:29 <oerjan> !exec "Hello, world!"PrntNl
19:57:32 <oklobot2> Hello, world!
19:58:16 <oerjan> !exec "Argle bargle, glof glyp!"PrntNl
19:58:20 <oklobot2> Argle bargle, glof glyp!
19:59:29 <oerjan> ok, it passed the Turing test in reverse :)
20:00:25 <oerjan> !exec "Argle bargle, "PrntNl "glyp glof!"PrntNl
20:00:28 <oklobot2> Argle bargle,
20:00:32 <oklobot2> glyp glof!
20:01:06 <GregorR> CakeProphet: D
20:01:23 <oerjan> E
20:01:59 <oerjan> (yes, there is a relatively unknown language named E)
20:02:12 <CakeProphet> :?
20:03:05 <CakeProphet> bah...
20:03:09 <CakeProphet> those damn letter languages.
20:03:12 <CakeProphet> too many of them!
20:03:52 <GregorR> In that case,
20:03:54 <GregorR> CakeProphet: Plo
20:03:54 <oerjan> in fact there appear to be at least two E languages
20:03:55 <GregorR> Erm
20:03:56 <GregorR> CakeProphet: Plof
20:04:20 <oerjan> i was referring to the secure distributed one
20:05:48 <CakeProphet> I may check out Alice... solely because it has a cool name.
20:05:51 * CakeProphet is shallow.
20:05:59 <CakeProphet> "E" is too bland of a name for my enjoyment.
20:07:39 <oklopol> !exec 5["Many hellos!"PrntNlDrp1SubDbl]
20:07:40 <GregorR> "Plof" is a cool name :P
20:07:42 <oklobot2> Many hellos!
20:07:45 <oerjan> try programming in pure System F :)
20:07:46 <oklobot2> Many hellos!
20:07:48 <oklopol> stupid lang
20:07:50 <oklobot2> Many hellos!
20:07:54 <oklopol> stfu
20:07:54 <oklobot2> Many hellos!
20:07:58 <oklobot2> Many hellos!
20:08:41 <CakeProphet> hmm
20:11:22 <oerjan> !exec 3["Many hellos!"PrntNl1Sub]
20:11:25 <oklobot2> Many hellos!
20:11:30 <oklobot2> Many hellos!
20:11:32 <oklobot2> Many hellos!
20:11:38 <oklobot2> Many hellos!
20:11:42 <oklobot2> Many hellos!
20:11:42 <oerjan> whoops
20:11:45 <oklobot2> Many hellos!
20:11:49 <oklobot2> Many hellos!
20:11:53 <oklobot2> Many hellos!
20:11:56 <Sukoshi> CakeProphet: I know of A, B, C, D, and now E.
20:11:56 <GregorR> ...
20:11:56 <oklobot2> Many hellos!
20:12:01 <oklobot2> Many hellos!
20:12:06 <oklobot2> Many hellos!
20:12:09 <oklobot2> Many hellos!
20:12:13 <oklobot2> Many hellos!
20:12:16 <oklobot2> Many hellos!
20:12:21 <oklobot2> Many hellos!
20:12:26 <oklobot2> Many hellos!
20:12:28 <oklobot2> Many hellos!
20:12:34 <oklobot2> Many hellos!
20:12:36 <oklobot2> Many hellos!
20:12:43 <oklopol> :DD
20:12:44 <Sukoshi> If only IRC servers followed the timeout principle of yesteryear.
20:12:44 <oklobot2> Many hellos!
20:12:45 <oklobot2> Many hellos!
20:12:49 <oklobot2> Many hellos!
20:12:51 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:12:52 <oerjan> i seem to have seriously misunderstood the [] command
20:13:04 <oklopol> it does a drop
20:13:10 <Sukoshi> BURN HIM BURN HIM BURN HIM!!!
20:13:11 <oklopol> why? don't ask me
20:13:12 <oklopol> xD
20:13:25 <oklopol> PrntNl doesn't do a drop
20:13:30 <oklopol> why? same reason
20:13:35 <Sukoshi> What language is this?
20:13:44 <oklopol> no name
20:13:52 <oklopol> just made it when i did the bot
20:13:53 <oerjan> i thought it worked like BF, and the Drp and Dbl were redundant
20:14:03 <Sukoshi> What sort of a language is NoName?
20:14:07 <oklopol> nope, stack-based, ut brainfuck []
20:14:17 <oklopol> *but
20:14:26 <oklopol> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ that sort
20:14:35 <Sukoshi> Aha.
20:15:06 <oklopol> you can do a lot of useless stuff with it but outputting sucks so i don't use it that much
20:15:32 <oklopol> very buggy, also, one night project :)
20:15:35 <oerjan> !exec 42PrntNl
20:15:46 <oklopol> overkill
20:15:58 <oerjan> ah it's gone
20:16:07 -!- oklobot2 has joined.
20:16:08 <oklopol> retry
20:16:11 <oerjan> !exec 42PrntNl
20:16:16 <oklobot2> 42
20:16:21 <Sukoshi> What's oklobot2 written in?
20:16:24 <oklopol> c++
20:16:30 <Sukoshi> AH
20:16:37 <Sukoshi> EGAD, FELLOW!
20:17:02 <oklopol> :D
20:17:42 <oerjan> 0["test"PrntNl]
20:17:51 <oerjan> !exec 0["test"PrntNl]
20:17:56 <oklopol> !exec 42 1 2 3SubSubSub2MulPrntNl
20:17:57 <GregorR> EgoBot is written in C++ *shrugs*
20:17:58 <oklobot2> 80
20:18:21 <oklopol> who wrote it?
20:18:32 <Sukoshi> oklopol: Take a wild guess :P
20:18:43 <oklopol> i took already :)
20:18:45 <oklopol> gregor?
20:18:53 <Sukoshi> You may be correct!
20:19:00 <oklopol> all of it?
20:19:06 <oklopol> it knows a lot of langs!
20:19:16 <oklopol> !eval ++1 2 3
20:19:18 <oklobot2> ++1 2 3=6
20:19:23 <oklopol> infix = xD
20:20:04 <oerjan> !exec 2 1PrntNlDrpPrntNl
20:20:08 <oklobot2> 1
20:20:09 <oklopol> GregorR we could do some steamy code swapping but my code is too dirty
20:20:11 <oklobot2> 2
20:20:27 <GregorR> Also, my code is already out there available.
20:20:33 <Sukoshi> Forth is still the best stack based language I've seen.
20:20:38 <oerjan> !exec 2 1SwpPrntNl
20:20:40 <oklobot2> 2
20:20:50 <Sukoshi> oklobot2: Please tell me you write C++ code like GregorR does.
20:20:54 <oklopol> GregorR, link, please
20:21:13 <oklopol> :D
20:21:18 <oklopol> me or the bot?
20:21:28 <GregorR> http://www.esolangs.org/files/egobot/
20:21:50 <pgimeno> oklopol: actually Gregor wrote the IRC code and the interface which executes processes et al; the languages are the actual interpreters by various authors, I think you mean that
20:22:18 <Sukoshi> Yeah.
20:22:25 <oklopol> zap.
20:22:40 <GregorR> And in various languages :)
20:22:53 <Sukoshi> Hey, y'all who know Forth.
20:22:57 <oklopol> hey can i include langs in it if i make em? :O
20:23:03 <Sukoshi> Anyone up for a Forth IRC library?
20:23:56 <Sukoshi> <Silence>
20:24:15 <GregorR> <-- does not know Forth
20:24:33 <GregorR> oklopol: So long as they have no I/O other than std{in,out}
20:24:33 <Sukoshi> You know too few languages GregorR :P
20:24:34 <pgimeno> oklopol: GregorR is the one who has to include them since he's who runs the bot, but you can run your own instance and incorporate a language written by you
20:25:26 <pgimeno> I knew a bit of forth like... 25 years ago or something
20:25:43 <Sukoshi> It's pretty easy to learn.
20:25:44 <pgimeno> (damn, now I feel overaged)
20:26:18 <oerjan> !exec 0 5[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl
20:26:21 <oklobot2> 120
20:26:23 <oklopol> GregorR does the bot take input?
20:26:39 <oerjan> !exec 0 10[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl
20:26:41 <oklobot2> 3628800
20:26:59 <Sukoshi> I challenge the community to make an alternative to EgoBot in CL or Forth.
20:27:07 <oklopol> you can't seriously be able to use that, oerjan?
20:27:19 <oerjan> bwahaha!
20:27:32 <oerjan> like my factorial program? :)
20:27:45 <oklopol> :)
20:28:33 <oklopol> Swp
20:28:38 <oklopol> how?
20:28:50 <oerjan> i just guessed Swp
20:28:55 <oklopol> and Mul
20:29:03 <oerjan> no, you used that above
20:29:09 <oklopol> oh i might've
20:29:24 <oklopol> you're sick
20:29:42 <oerjan> although i could have used just one loop if i knew what command does deep copy :)
20:30:02 <oklopol> there is a Rot
20:30:04 <oklopol> for 3
20:30:18 <oerjan> hm...
20:30:20 <oklopol> deep copy?
20:30:25 <GregorR> oklopol:
20:30:28 <GregorR> !help i
20:30:35 <oklopol> !help i?
20:30:41 <oerjan> getting a copy of something not on top of the stack
20:30:42 <GregorR> Oh wait, that's right - Hahahah
20:30:46 <GregorR> I disabled it last night :P
20:30:50 <GregorR> It still hasn't pinged out.
20:30:52 <GregorR> Incredible.
20:30:57 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
20:31:01 <oklopol> :D
20:31:04 <Sukoshi> YOu were saying?
20:31:05 <Sukoshi> ;D
20:31:13 <GregorR> That wasn't a ping timeout.
20:31:13 <oklopol> oerjan, there is no way to do that
20:31:18 <oklopol> :D
20:31:20 <Sukoshi> Oh. True.
20:31:28 <oklopol> yet, you want?
20:31:28 -!- EgoBot has joined.
20:31:31 <GregorR> !help i
20:31:33 <EgoBot> Use: i <pid> <input> Function: send input to a process
20:31:46 <oerjan> however i can copy the second item by combining Rot and Dbl.
20:31:53 <oerjan> let's see...
20:32:04 <oklopol> yes, but you cannot copy the nth item
20:32:13 <oklopol> it don't think it's turing complete
20:32:15 <Sukoshi> You should add in capability for words, like Forth.
20:32:28 <oklopol> me of gregor?
20:32:35 <Sukoshi> You oklopol.
20:32:43 <Sukoshi> That way you can extend the language, kinda.
20:32:44 <oklopol> !exec "Sukoshi""o"SubPrntNl
20:32:47 <EgoBot> Huh?
20:32:48 <oklobot2> Sukshi
20:32:50 <GregorR> The phrase "me of Gregor"
20:32:57 <GregorR> Is how a caveman asks if I'm his father.
20:33:08 <oklopol> xD
20:33:08 <oklopol> *or
20:33:16 <Sukoshi> I ... have... the POWER!!!!
20:33:20 <oerjan> !exec 1 2 3RotPrntNl
20:33:23 <EgoBot> Huh?
20:33:24 <oklobot2> 1
20:33:32 <Sukoshi> Poor EgoBot.
20:33:43 <EgoBot> I'm so confused!
20:33:49 <oklopol> :)
20:34:13 <oklopol> oerjan, i've made fibonacci and factorials
20:34:27 <oklopol> and primes, tho don't remember what actually
20:34:30 <oklopol> something with them
20:34:43 <oerjan> !exec 1 10[DblRotMulSwp1SubDbl]DrpPrntNl
20:34:45 <EgoBot> Huh?
20:34:46 <oklobot2> 3628800
20:35:08 <oerjan> simpler that way
20:35:10 <oklopol> you cannot concatenate numbers into a string yet
20:35:26 <oklopol> simpler than?
20:35:32 <oklopol> ah
20:35:34 <oerjan> than using two loops
20:35:40 <oklopol> i thought it was c/v
20:35:50 <oklopol> shame on me
20:36:11 <Sukoshi> Anyone accept my challenge?!
20:36:13 <oerjan> c/v?
20:36:24 <oklopol> copypaste
20:36:25 <Sukoshi> No. The EgoBot thing.
20:37:08 <oklopol> i don't know actually whether nums and strings can be concateneted
20:37:11 <oklopol> *ated
20:37:23 <oklopol> so i'll crash the bot now, prolly
20:37:29 <oklopol> !exec "o"6AddPrntNl
20:37:34 <EgoBot> Huh?
20:37:56 <oklopol> survived but couldn't do it :)
20:38:30 <oerjan> darn
20:39:52 <oerjan> it _might_ still be Turing complete. We have free use of three variables which should give us a universal Minsky machine.
20:40:19 <oklopol> make a bf compiler :)
20:40:23 <oklopol> :DD
20:40:34 <oklopol> but, seems it is supported already
20:40:44 <oerjan> although that assumes bignums
20:41:00 <oklopol> there seems to be a special error type
20:41:34 <oklopol> oklobot has only implementation spesific range for the nums
20:42:07 <oklopol> !exec 4 "a"4Add Drp PrntNl
20:42:09 <oklobot2> 4
20:42:09 <EgoBot> Huh?
20:42:19 <oklopol> the error was dropped
20:42:35 <oklopol> i'll change it now, ayway
20:42:37 <oklopol> *any
20:42:41 <oerjan> !exec 3"test"MulPrntNl
20:42:43 <EgoBot> Huh?
20:42:44 <oklobot2> testtesttest
20:42:53 <oerjan> yay!
20:44:13 <oklopol> :D
20:44:43 <oklopol> !exec 6"test"Mul"test"2MulSubPrntNl
20:44:46 <EgoBot> Huh?
20:44:47 <oklobot2> testtesttesttest
20:45:57 <oerjan> !exec 6"42"AddPrntNl
20:46:00 <EgoBot> Huh?
20:46:33 <oerjan> !exec 42 6DivPrntNl
20:46:36 <EgoBot> Huh?
20:46:36 <oklobot2> 7
20:47:00 <oerjan> !exec "TestTest"2DivPrntNl
20:47:04 <EgoBot> Huh?
20:47:13 <oklopol> i might have it now
20:47:15 <oklopol> but gotta reboot
20:47:20 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:47:35 <oerjan> have what?
20:47:42 -!- oklobot2 has joined.
20:47:49 <oklopol> !exec 4" elephants"AddPrntNl
20:47:51 <oklobot2> elephants
20:47:52 <EgoBot> Huh?
20:47:54 <oklopol> ...
20:47:57 <oklopol> almost :)
20:48:17 <oerjan> !exec 65"elephants"AddPrntNl
20:48:18 <EgoBot> Huh?
20:48:20 <oklobot2> elephants
20:49:13 <oklopol> hmph
20:49:14 <oklopol> i blame the compiler
20:49:17 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:49:41 <oklopol> k it crashed
20:49:46 <oklopol> the compiler
20:49:55 <oklopol> as i closed the bot
20:50:10 <oklopol> vc++6, gotta recommend it
20:50:48 <pgimeno> heh, a few days ago I stumbled upon gcc bug 28545
20:51:12 <oerjan> which is?
20:51:21 <pgimeno> a miscompiled mul
20:52:00 <pgimeno> squaring a variable multiplied it with the wrong register
20:52:30 -!- oklobot2 has joined.
20:52:35 <oklopol> !exec 6"6"AddPrntNl
20:52:38 <EgoBot> Huh?
20:52:40 <oklopol> debug :)
20:53:04 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:53:12 <oklopol> i'm an idiot.
20:54:41 -!- oklobot2 has joined.
20:54:42 <oklopol> !exec 6"6"AddPrntNl
20:54:46 <EgoBot> Huh?
20:54:49 <oklobot2> 66
20:55:55 <oklopol> with bignums, 3 vars is an infinite amount of vars with minited access
20:56:00 <oklopol> *limited
20:56:12 <oklopol> what have i been smoking 8|
21:00:28 <oerjan> is there any way to pick apart strings?
21:01:52 <oklopol> subtraction is the only thing
21:01:54 <oklopol> i think
21:01:55 <oklopol> i can check
21:02:38 <oklopol> haha xD
21:02:52 <oklopol> !exec "zupidap"NegPrntNl
21:02:54 <oklobot2> padipuz
21:02:54 <EgoBot> Huh?
21:03:55 <pgimeno> !exec "dabale arroz a la zorra el abad"NegPrntNl
21:03:57 <oklobot2> daba le arroz al a zorra elabad
21:03:58 <EgoBot> Huh?
21:04:06 <pgimeno> (spanish palindrome)
21:04:34 <pgimeno> !exec "a man, a plan, a canal, panama"NegPrntNl
21:04:36 <EgoBot> Huh?
21:04:37 <oklobot2> amanap ,lanac a ,nalp a ,nam a
21:04:42 <oklopol> sorry, no :(
21:05:12 <oerjan> !exec "\""PrntNl
21:05:14 <EgoBot> Huh?
21:05:23 <oklopol> :D
21:05:34 <oklopol> sorry, no way to do that xD
21:05:40 <oerjan> hard to get a quine then
21:05:52 <oklopol> impossible, proven
21:06:22 <oklopol> splitting strings... Div?
21:07:04 <oerjan> !exec1.2 1.2AddPrntNl
21:07:08 <EgoBot> Huh?
21:07:24 <oerjan> no floats...
21:07:27 <oklopol> nope :\
21:07:43 <oklopol> a new data type...
21:07:46 <oerjan> any way to test strings?
21:07:49 <oklopol> would take time :(
21:07:52 <oklopol> test?
21:08:06 <oklopol> !exec "asd""fgh"MrePrntNl
21:08:07 <oerjan> say, for equality, or being empty
21:08:08 <EgoBot> Huh?
21:08:08 <oklobot2> 0
21:08:13 <oklopol> !exec "asd""fgh"LesPrntNl
21:08:16 <oklobot2> 1
21:08:17 <EgoBot> Huh?
21:08:22 <oklopol> seems there is xD
21:08:29 <oklopol> i don't remember anything
21:08:42 <oklopol> Equ of course too
21:09:20 <oerjan> !exec "as" "asd"LesPrntNl
21:09:22 <oklobot2> 1
21:09:23 <EgoBot> Huh?
21:09:35 <oklopol> i've been thinking about considering making a better language....
21:09:42 <oerjan> !exec "as" "asd"MrePrntNl
21:09:44 <oklobot2> 0
21:09:44 <EgoBot> Huh?
21:09:49 <oklopol> you know K?
21:10:07 <oerjan> no
21:10:21 <oklopol> i was gonna do K with code as just a list of ints
21:10:31 <oklopol> actually
21:10:37 <oklopol> i didn't mean to do K
21:11:00 <oklopol> i just happened to bump into it as i was coding my lang and it had most of the features
21:11:10 <oklopol> i think it was created just to annoy me
21:12:21 <oerjan> i still don't know what K means
21:12:30 <oklopol> floats would require me to alter the raw code parser
21:12:32 <oklopol> *shiver*
21:12:44 <oklopol> it's a lang you should learn :)
21:12:46 <oklopol> very cool
21:13:45 <oklopol> http://www.answers.com/topic/k-programming-language-1
21:14:23 <oklopol> best use of infix i ever saw
21:16:54 <pgimeno> damn, soon there will be more than 26 single-letter languages
21:17:38 <oerjan> well, there is already Omega
21:18:27 <oklopol> gotta pick my letter fast before we run out!
21:18:33 <oklopol> i'll take iota
21:18:34 <oklopol> oh
21:18:36 <oklopol> it's taken
21:19:02 <oklopol> pi
21:19:15 <oerjan> well, there is pi calculus
21:20:16 <oklopol> :(
21:20:52 <oerjan> and at least gamma and lambda
21:21:20 <oerjan> and rho
21:21:39 <oklopol> so many langs i don't know
21:21:53 <oklopol> luckily most are the same and can be learned in an hour
21:22:05 <oklopol> (up to fibonacci level!)
21:26:19 <oerjan> !exec 1 1 5[RotRotDblRotAddRot1SubDbl]DrpPrntNl
21:26:22 <oklobot2> 13
21:26:22 <EgoBot> Huh?
21:27:48 <oklopol> make it print 10 first in a row, hyphenated
21:28:03 <oklopol> 10 might be too much
21:28:09 <oklopol> no
21:31:49 <oerjan> !exec 1 1 9[RotRotDblRotPrnt"-"PrntDrpAddRot1SubDbl]DrpPrntNl
21:31:51 <EgoBot> Huh?
21:32:10 <oklobot2> 1PRIVMSG #esoteric :-PRIVMSG #esoteric :1PRIVMSG #esoteric :-PRIVMSG #esoteric :2PRIVMSG #esoteric :-PRIVMSG #esoteric :3PRIVMSG #esoteric :-PRIVMSG #esoteric :5PRIVMSG #esoteric :-PRIVMSG #esoteric :8PRIVMSG #esoteric :-PRIVMSG #esoteric :13PRIVMSG #esoteric :-PRIVMSG #esoteric :21PRIVMSG #esoteric :-PRIVMSG #esoteric :34PRIVMSG #esoteric :-PRIVMSG #esoteric :89
21:32:22 <oerjan> wow
21:33:31 <oerjan> is there no way to print a string without newline?
21:34:15 <oerjan> or maybe the above may be considered a bug.
21:37:34 <oklopol> haha xD
21:37:37 <oklopol> Nl is needed
21:38:22 <oklopol> it was Prnt first but i separated the newline so that you could "append to irc" without realizing other stuff is sent too :)
21:38:34 <oklopol> bug
21:38:36 <oklopol> kinda
21:38:50 <oklopol> supposed to work like that
21:38:57 <oklopol> but as it doesnt
21:39:06 <oklopol> !exec 3"-"4AddAddPrntNl
21:39:09 <oklobot2> 3-4
21:39:09 <EgoBot> Huh?
21:39:46 <oerjan> the problem is i have already used up 3 variables so i don't have room to bring along a string.
21:40:59 <oklopol> :)
21:41:05 <oklopol> oh
21:41:39 <oklopol> you can end according to the sum instead of the number of fibonacci numbers
21:41:47 <oklopol> but it would be cheating, true
21:42:40 <oklopol> hmm i can make Lft
21:43:04 <oklopol> or Cpy
21:43:35 * oerjan snaps his fingers
21:43:58 <oerjan> i see a solution, though it is ugly
21:44:29 <oerjan> !exec 1 1 3[RotRotDblRotAddRot1SubDbl]DrpPrntNl
21:44:31 <oklobot2> 5
21:44:33 <EgoBot> Huh?
21:45:25 <oklopol> ah :D
21:45:41 <oklopol> yeah you can make it with O(n^2)
21:45:52 <oklopol> found it too
21:45:55 <oerjan> no, it is better than that.
21:45:58 <oklopol> :O
21:46:07 <oklopol> i'll see the code then :)
21:52:09 <oklopol> i want that sadol guy here :(
22:02:03 <oklopol> you gonna do it?
22:02:32 <oerjan> !exec 1 1 8[RotRotDblRotAddRot1SubDbl]Drp""Rot[RotRotSwpDbl"-"SwpAddRotAddRotRotSwpDblRotSwpSubSwpRotRotDbl]DrpAddPrntNl
22:02:35 <oklobot2> 1-1-2-3-5-8-13-21-34-55
22:02:36 <EgoBot> Huh?
22:03:03 <oerjan> right on cue :)
22:05:02 <oerjan> your idea of ending with the sum instead gave me the idea to carry the counter upwards, then the string downwards
22:05:26 <oerjan> since the basic fibonacci algorithm is reversible
22:06:33 <oklopol> god i'm stupid :O
22:06:37 <oklopol> so obvious
22:07:08 <oerjan> although it does duplicate work in a way
22:08:00 <oklopol> true, but i would've made it O(n^2) so...
22:09:01 <oklopol> hmm
22:09:04 <oerjan> by recalculating completely for each value?
22:09:11 <oklopol> yes :)
22:10:18 <oklopol> !exec 1 1 5[RotRotDblRotAddRot1SubDbl]DrpPrntNl
22:10:20 <oklobot2> 13
22:10:21 <EgoBot> Huh?
22:12:43 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp Rot "-"Add Swp 1 Sub Dbl ] I have no idea anymore... fucking headache :((
22:12:45 <EgoBot> Huh?
22:12:54 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp Rot "-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:12:58 <EgoBot> Huh?
22:13:29 <oklopol> maybe in the morning... can't think now
22:15:07 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp Rot Add"-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:15:10 <EgoBot> Huh?
22:17:20 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp RotSwp Add"-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:17:22 <EgoBot> Huh?
22:17:26 <oklopol> can't see the problem :(
22:17:42 <oerjan> !exec "anyone there?"PrntNl
22:17:44 <EgoBot> Huh?
22:17:44 <oklobot2> anyone there?
22:17:52 <oklopol> :)
22:18:00 <oklopol> tell me the problem
22:18:15 <oklopol> why don't we do an active debug session on that code?
22:19:21 <oklopol> oklobot2 is not that interactive
22:19:36 <oklopol> oerjan can you see my problem?
22:20:01 <oklopol> ah
22:20:08 <oklopol> i'm an idiot
22:20:11 <oklopol> that's the problem
22:20:23 <oklopol> !exec 1 1 5[RotRotDblRotAddRot1SubDbl]DrpPrntNlDrpPrntNlDrpPrntNl
22:20:25 <oklobot2> 13
22:20:26 <EgoBot> Huh?
22:20:29 <oklobot2> 8
22:20:35 <oerjan> you certainly seem to have an overly low self-esteem...
22:21:04 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp SwpDrp RotSwp Add"-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:21:06 <EgoBot> Huh?
22:21:09 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
22:21:12 <oklopol> :)
22:21:38 <oerjan> i was just about to convince myself you needed that change
22:22:02 -!- oklobot2 has joined.
22:22:42 <oklopol> gotta have more probs
22:22:56 <oklopol> but i won't rewrite it from scratch!
22:23:08 <oklopol> even if it takes only a minute
22:23:43 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp PrntNl SwpDrp RotSwp Add"-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:23:46 <oklobot2> 55
22:23:46 <EgoBot> Huh?
22:23:51 <oklobot2> 34
22:23:53 <oklobot2> 21
22:23:58 <oklobot2> 13
22:24:03 <oklobot2> 8
22:24:05 <oklopol> seems to work fine
22:24:08 <oklobot2> 5
22:24:10 <oklobot2> 3
22:24:14 <oklobot2> 2
22:24:18 <oklobot2> 1
22:24:22 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
22:24:25 <oklopol> :D
22:25:10 <oklopol> i do the thing for negative numbers
22:25:24 <oklopol> and for some reason it doesn't like it
22:25:30 <oklopol> :D
22:25:51 <oklopol> my problem is the "module" which i regarded as "safe"
22:26:09 <oerjan> try using [ Dbl 0 1 Rot 1Sub
22:26:44 <oklopol> !exec "" 10 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]Drp PrntNl SwpDrp RotSwp Add"-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:26:46 <EgoBot> Huh?
22:26:47 <oerjan> or even [Dbl 1Neg 0 Rot
22:26:48 <oklopol> whoops
22:27:22 <oklopol> !exec "" 10 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp RotSwp Add"-"Add Swp 1 Sub Dbl ] PrntNl
22:27:26 <EgoBot> Huh?
22:27:39 <oerjan> bot's not here
22:27:45 <oklopol> ...
22:27:49 <oklopol> you know what?
22:27:57 <oklopol> i'm an idiot.
22:28:03 <oklopol> i'd kick myself if i was op
22:28:12 <oklopol> the bot is ON
22:28:26 -!- oklobot2 has joined.
22:28:30 <oklopol> !exec "" 10 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp RotSwp Add"-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:28:32 <EgoBot> Huh?
22:28:38 <oklopol> haha :D
22:28:39 -!- oklobot2 has quit (Read error: 54 (Connection reset by peer)).
22:28:52 <oklopol> i have a non-irc debugger also
22:29:02 <oklopol> but would take me a year to locate the folder
22:29:16 -!- oklobot2 has joined.
22:29:16 <oerjan> i repeat: or even [Dbl 1Neg 0 Rot
22:29:53 <oklopol> but but btu butbtu
22:30:28 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp RotSwp Add"-"Add Swp 1 Sub 1Gre ] DrpPrntNl
22:30:31 -!- oklobot2 has quit (Read error: 54 (Connection reset by peer)).
22:30:32 <EgoBot> Huh?
22:30:35 <oklopol> Mre
22:30:37 <oklopol> not Gre
22:31:05 -!- oklobot2 has joined.
22:31:05 <oerjan> you need to keep the Dbl as well
22:31:18 <oklopol> why?
22:31:28 <oklopol> true
22:31:34 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp RotSwp Add"-"Add Swp 1 Sub Dbl1Mre ] DrpPrntNl some day...
22:31:36 <EgoBot> Huh?
22:31:37 <oklobot2> 89-55-34-21-13-8-5-3-2-1-
22:31:42 <oklopol> YE!
22:31:59 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot Add"-"Add Swp 1 Sub Dbl1Mre ] DrpPrntNl
22:32:01 <oklobot2> 123581321345589----------
22:32:02 <EgoBot> Huh?
22:32:05 <oklopol> :D
22:32:16 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot "-"AddAdd Swp 1 Sub Dbl1Mre ] DrpPrntNl
22:32:18 <EgoBot> Huh?
22:32:18 <oklobot2> 123581321345589----------
22:33:41 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot Add"-"SwpAdd Swp 1 Sub Dbl1Mre ] DrpPrntNl
22:33:44 <EgoBot> Huh?
22:33:48 <oklobot2> -1-2-3-5-8-13-21-34-55-89
22:33:58 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot Add"-"SwpAdd Swp 1 Sub Dbl1Mre ] Drp"-"SubPrntNl
22:34:01 <oklobot2> 1-2-3-5-8-13-21-34-55-89
22:34:02 <EgoBot> Huh?
22:34:07 <oerjan> yay!
22:34:11 <oklopol> :D
22:34:12 -!- lindi- has left (?).
22:34:23 <oklopol> i managed to make a worse version!
22:34:48 <oklopol> i'm not really that lousy, it's the head, must be :D
22:54:44 <CakeProphet> wow... that's a weird language.
22:55:13 <CakeProphet> Hmmm... it reminds me of like... the stack of a prettier language.
22:55:25 <CakeProphet> the procedures appear after the input and such.
22:59:34 <oklopol> that one is a pretty standard bad stack-based language :)
22:59:37 <oklopol> you should see my esoteric ones
23:03:06 <CakeProphet> well... at least it's easy to parse :D
23:03:57 <oklopol> infix and stack-based are, that's why i usually make them :)
23:04:00 <oklopol> *prefix
23:04:03 <oklopol> polish
23:04:06 <oklopol> notation
23:04:11 <oklopol> not infix
23:04:15 <oklopol> that's the hard one
23:04:19 <oklopol> "hard"
23:06:13 <CakeProphet> hmm... like 2+ 2?
23:07:27 <oklopol> ?
23:07:36 <CakeProphet> is 2 + 2 infix?
23:07:40 * CakeProphet forgot his terminology
23:07:42 <oklopol> yes
23:08:05 <CakeProphet> heh... method calls are "almsost prefix"
23:08:16 <oklopol> i've made two infix parsers
23:08:34 <oklopol> zu
23:08:42 <oklopol> each worse than the other
23:08:49 <CakeProphet> Fun.
23:09:16 <oklopol> sure
23:09:38 <oklopol> you know how you sometimes get the feeling you gotta make an infix parser
23:10:32 -!- oerjan has quit ("Good night").
23:12:10 <CakeProphet> ...no
23:12:18 -!- Asztal has joined.
23:12:28 <oklopol> really?
23:12:33 <CakeProphet> ...nope
23:12:57 <oklopol> what do you life for then?
23:12:57 <CakeProphet> hmm... I see how they would be neato.
23:13:00 <oklopol> *live
23:13:01 <CakeProphet> Like subject verb...
23:13:33 <CakeProphet> <.<
23:13:45 <Sukoshi> I made an infix parser for my test-case CAS.
23:13:58 <oklopol> i want to sleep goddamned, is there a sleepy language? :\
23:14:01 <CakeProphet> I think parsing things in the order they are to be... evaluated... makes the most sense. :D
23:14:04 <oklopol> no, they're all great :(
23:14:09 <CakeProphet> C is fairly boring.
23:14:27 <Sukoshi> Well, it's not your most conceptually radical language on the block.
23:14:36 <Sukoshi> But it's fast and gets the job done.
23:16:10 * CakeProphet finds it confusing and annoying to work with.
23:16:35 <CakeProphet> Like a big rubix cube.
23:16:45 <CakeProphet> That random goes off into undefined behavior.
23:16:57 <Sukoshi> The only reason C is confusing is because you're thinking too much.
23:17:07 <Sukoshi> There's almost no other reason for it to be confusing.
23:17:46 <Sukoshi> I think it's easier to train someone in C than it is a lot of other languages because the conceptual baggage is so small. Pointers are ``complicated'' ? Yeah right, compare pointers to multiple inheritance.
23:17:48 <oklopol> isn't thinking by definition the only thing that can cunfuse you?
23:17:48 <Asztal> C++ is far better for undefined behaviour
23:17:54 <oklopol> *confuse
23:18:58 <Sukoshi> I think the only thing complicated about a pointer is that it's stupid terminology (why not simply call it an address?).
23:19:17 <Asztal> it doesn't have to be an address
23:19:24 <Sukoshi> Yeah, I was thinking that.
23:19:25 <Asztal> I don't think the C standard says that anywhere
23:19:48 <Sukoshi> Well, is a pointer a big sign with letters on it? No :P
23:20:27 <Asztal> Who knows, maybe someone will write a C interpreter, then it will just be a ... something :o
23:20:41 <Sukoshi> There are C interpreters out there, I'll betcha.
23:21:21 <Sukoshi> And I think maybe for a tad bit more ``cleanliness'' offer an alternative syntax for something like ``ptr int a; int b; a = (ptr) b;''
23:21:44 <Sukoshi> (Note: I didn't think that through for a long time, so if there are conceptual errors, guffaw for you.)
23:22:01 <Asztal> VB used to have AddressOf and ValueAt ;)
23:22:18 <Sukoshi> Woaha. VB had pointers? :D
23:22:31 <oklopol> vb had everything
23:22:47 <CakeProphet> I don't see the use of pointeres....
23:22:58 <Sukoshi> CakeProphet: ..................... ?
23:23:24 <Sukoshi> Imagine you have a magic function `` int magic''
23:23:38 <CakeProphet> I mean... why do you want to explicitly define something to be a reference?
23:23:51 <Sukoshi> CakeProphet: How else would you?
23:23:52 <CakeProphet> You could just make everything a reference to an underlying thing in memory
23:24:17 <Sukoshi> Then how would you assign anything to anywhere?
23:24:55 <Sukoshi> (I think I understand your argument, but that's a question for more clarification.)
23:24:59 <CakeProphet> with... a variable assignment?
23:25:15 <oklopol> java--
23:25:17 <oklopol> maybe?
23:25:25 <CakeProphet> x = 2
23:25:44 <CakeProphet> eh... it's how Python works. Although I don't exactly grasp the entire concept of a pointer, so I may have a bad idea of what they do.
23:25:57 <Sukoshi> No no, you've hit on the ages-old pointer gripe (I think).
23:26:11 <oklopol> a pointer is an integer :\
23:26:16 <oklopol> nothing else.
23:26:25 <Sukoshi> I think, and here I'm not sure even, that the concept of a pointer is seperated from a normal variable only for the sake of side-effects in code.
23:27:14 <Sukoshi> So that, a function can have a copy of something, modify it to he**, and make the rest of the program none the wiser. Now why referential passing isn't default behavior and value passing is is anyone's guess.
23:27:36 <Sukoshi> *and value passing a special case
23:29:23 <CakeProphet> in Python, everything is implicitly a reference, and there are ways to "copy" the value of an object so that it's a separate entity.
23:29:37 <Sukoshi> That's something I'm not too fond of.
23:29:51 <Sukoshi> Because the concept of a reference is implied, not explicity.
23:30:03 <CakeProphet> x = [1,2,3,4,5,6]; x = y; x.append(2); x == y <---True
23:30:10 <CakeProphet> er...
23:30:12 <CakeProphet> y = x
23:30:34 <Sukoshi> Effeciency wise, that's slow. It's also annoying with low-level code. Plus it makes you memorize rules (like in Java, objects reference pass, but basic types value pass).
23:30:59 <CakeProphet> hmmm, seems intuitive to me, but Python is my first language soooo...
23:31:19 <Sukoshi> That's a'cuz you don't bit-twiddle much.
23:32:01 <Sukoshi> That distinction in conjunction with structs are what really give C power. My gripe is simply over the default distinction.
23:32:06 <CakeProphet> It's basically just for mutable sequences... immutable data can't be altered, and thus the difference reference and value is pretty much nothing.
23:32:39 <Sukoshi> But... you have to memorize what's mutable and immutable.
23:32:47 <Sukoshi> Giving you less flexibility on how you manage data.
23:32:49 <CakeProphet> *shrugs* Doesn't take too long.
23:33:27 <CakeProphet> tuples and strings are immutable. Lists and dictionaries are mutable.
23:34:33 <CakeProphet> and since OO in Python is basically just a pretty interface over dictionaries... classes and objects are mutable.
23:36:42 <Sukoshi> But why should a language even decide what data is or is not mutable?
23:37:04 <CakeProphet> *shrugs* It's just sort of the nature of the data itself that makes it so.
23:37:23 <Sukoshi> Remember where C is aimed. Not for building complex idioms or beautiful programs, it was originally designed to build OSs.
23:37:45 <CakeProphet> it's not an enforced thing... a mutable object can be duplicated.
23:37:48 <Sukoshi> You aren't going to get speed and control out of something that decides mutability for you.
23:38:11 <CakeProphet> *nods* Different design goals.
23:38:32 <CakeProphet> and since I'm not building OSes... I don't see much of a need for the paranoid efficiency of C. :D
23:38:59 <Sukoshi> Anything low-level, including I can almost guarantee, Python's interpreter.
23:39:42 <Sukoshi> Copying files, talking on a network, etc, etc.
23:40:00 <CakeProphet> eh... Python isn't as slow as people make it out to be.
23:40:14 <CakeProphet> If you use it right, it works fine for normal environments.
23:40:30 <Sukoshi> But, I'm not going to use Python to make something that copies files for me.
23:40:45 <Sukoshi> Or handles enormous amounts of data with/without transformations.
23:40:54 <jix_> Sukoshi: well the harddisk will be the bottleneck even when you use python (for just copying)
23:41:07 <Sukoshi> jix_: Errr, I meant not *just* copying.
23:41:20 <jix_> well then yes....
23:41:46 <CakeProphet> I could consider file copying a "normal" situation.
23:41:52 <Sukoshi> Heck, some people even rewrite portions of libc and stdlib to get the speed they want in certain situations.
23:41:54 <CakeProphet> Python would work fine for file manipulations.
23:42:05 <jix_> doing things like a chess AI is a thing i don't want to do in c because writing it in c is a pain in the ass but i don't want to use other higher level languages because i use too much performance :/
23:42:12 <CakeProphet> Some people are insanely paranoid about speed.
23:42:36 <CakeProphet> Premature optimization.
23:42:50 <Sukoshi> CakeProphet: If you're writing a utility that's going to be widely used, portable on many OSs, or is something of that nature, you're going to use C.
23:43:23 <Sukoshi> I'm working on a project now (we're hoping to get it accepted into GNU) that deals a *lot* with sockets and files and parsers. This is C's domain.
23:43:35 <CakeProphet> That's simply because C is used everywhere.
23:43:42 <tokigun> I agree with Sukoshi. why I use C is mainly for portability, not for speed.
23:44:00 <Sukoshi> CakeProphet: Higher level languages are a pain to ensure portability for.
23:44:13 <Sukoshi> The higher the language, the harder to implement the idioms on different platforms.
23:44:39 <jix_> yeah most portable apps are written in c.....
23:44:48 <CakeProphet> I have a utility for Python that compiles the entire program into an .exe that can work independent of a python interpreter.
23:44:50 <jix_> or c++ that's pretty portable too
23:44:57 <CakeProphet> Sure... it adds a few MBs to the file size... but it's portable. :D
23:45:00 <jix_> CakeProphet: on mac os x?
23:45:06 <CakeProphet> No.
23:45:16 <Sukoshi> Plus, the project I'm working on still is pretty slow compared to (one of) its competitor(s) (the project has multiple functions) -- GNU cp.
23:45:19 <jix_> CakeProphet: on some propertary(wrong spelling for sure... i hate that word) embedded device?
23:45:20 <CakeProphet> I use XP myself... but the utility is independent of OS
23:45:35 <CakeProphet> no.. it's just a... program.
23:45:59 <Sukoshi> The mmap patch I recently committed sped it up, but we still need more optimizations.
23:46:06 <tokigun> jix_, but if you use somewhat difficult feature of C++, you could not get much portability
23:46:24 <jix_> tokigun: i don't know.... never coded c++ myself.. i don't like it
23:46:32 <Sukoshi> tokigun: Oh *GOD*, I remember trying to write a SWIG wrapper for some complex C++ code... it was a nightmare.
23:46:35 <CakeProphet> hmm... it might be windows-only though... so maybe not.
23:46:37 <Sukoshi> Template/boost hell.
23:46:45 <jix_> but milkytracker is written in c++ and is pretty portable...
23:47:18 <tokigun> well, it is mainly due to compiler (not target platform), since specification of C++ is hard to implement.
23:47:53 <tokigun> if you use restricted set of features in C++ only, almost all compiler can compile your program. but you should be careful.
23:48:32 * CakeProphet doesn't worry much about portability... most of his projects are directed towards personal use or developer use.
23:48:39 <tokigun> for example Mozilla doesn't use "mutable" keyword, because some C++ compilers don't support it.
23:50:19 <tokigun> considering this, boost is very carefully written library to support almost major (including buggy) compilers.
2006-12-28
00:09:36 -!- Asztal has quit (Read error: 113 (No route to host)).
00:53:51 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- IRC with a difference").
01:32:24 -!- ivan` has joined.
01:36:58 -!- Asztal has joined.
01:39:15 -!- Asztal has quit (Client Quit).
02:28:14 -!- Renan_s2 has joined.
02:28:25 -!- Renan_s2 has left (?).
03:28:58 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
03:48:30 -!- RodgerTheGreat has joined.
03:48:48 <RodgerTheGreat> howdy! What's everyone been up to during their vacation?
03:56:22 <bsmntbombdood> Traveling to malodruos places
04:52:18 <CakeProphet> hmmm... standardization should bear in mind the option of flexibility of the standard...
04:52:38 <RodgerTheGreat> forwards-compatibility?
04:52:40 <CakeProphet> Maybe there should be a meta-standard... some sort of standardization for how to define standards.
04:52:49 <CakeProphet> basically... yes.
04:53:17 <CakeProphet> It can become impossible to change a standard once it gains inertia.
04:53:41 <CakeProphet> Unless you have some way to easily redefine your standard so that all parties are aware of the change.
04:54:19 <RodgerTheGreat> well, HTML has done a pretty good job of growing over time without breaking itself, although it's certainly starting to show it's age
04:55:03 <CakeProphet> Telnet is strangely good at allowing changes in standard.
04:55:26 <CakeProphet> since you usually do a transaction to see if both sides are simplementing the same option.
04:55:47 <CakeProphet> You can do version checks and such.
04:56:57 * CakeProphet begins crafting the "protocol protocol"... a protocol for specifying your protocol.
05:00:14 <CakeProphet> If the data contains instrunctions about the specifics of its protocol.... making changes in a protocol become less difficult.
05:01:14 <CakeProphet> how you would create such a general meta-protocol is beyond me at the moment.
05:05:31 <RodgerTheGreat> bonus points for creating a meta-protocol whose semantics themselves constitute a turing-complete system
05:06:36 <CakeProphet> Neat.
05:07:21 <CakeProphet> Once I start working out the specifics I'll begin specifying commonly used standards and protocols in my meta-protocol... so I can work out the specifics?
05:07:32 <CakeProphet> thiink it constitutes as an esoteric language? :D: :D :D
05:07:48 <CakeProphet> Maybe if I make it with strange syntax and concepts...
05:09:09 <RodgerTheGreat> hm
05:09:22 <RodgerTheGreat> sounds like you have a concept there
05:10:53 <RodgerTheGreat> g'night everybody
05:10:57 <CakeProphet> see ya
05:11:12 -!- RodgerTheGreat has quit.
05:21:58 -!- CakeProphet has quit ("haaaaaaaaaa").
06:04:29 -!- CakeProphet has joined.
06:14:45 -!- calamari has quit ("Leaving").
06:32:28 <Sukoshi> CakeProphet: You can look at A/BNF for inspiration.
06:42:42 <CakeProphet> hmm?
06:43:49 <CakeProphet> hehe sorry if it takes a while to reply
06:44:34 * CakeProphet is learning dvorakv
06:59:07 <Sukoshi> Good god, people still use QWERTY?
06:59:40 <Sukoshi> Augmented/Backus Naur Format.
07:00:15 <Sukoshi> It's pretty much the defact parser/protocol description pseudo-language, and it's used by parser generators to generate parsers for the protocols.
07:02:03 <Sukoshi> *defacto
07:05:49 <CakeProphet> but it only expresses syntax... not what it means
07:07:28 <Sukoshi> Yup. Same with A/BNF.
07:08:09 <CakeProphet> I was talking about a/bnf
07:08:17 <Sukoshi> Oh.
07:08:19 <CakeProphet> it doesn't represent the meaning of syntax
07:08:32 <Sukoshi> Inspiration, I said.
07:08:54 <CakeProphet> the idea is to have a language for describing your standard... so that making changes to a standard simply requires you to change the metalanguage describing your standard.
07:09:15 <Sukoshi> G'luck with it.
07:09:25 <CakeProphet> so the inertia of a popular standard doesn't make it linger around longer than it should (like QWERTY persisting over dvorak)
07:09:38 <Sukoshi> Oh and look at the billions of other structure descriptions out there too.
07:09:51 <Sukoshi> *structure description languages
07:09:59 <Sukoshi> Like XML and stuffs.
07:16:08 <CakeProphet> hmmm... xml doesn't seem to have protocol implementation in mind.
07:16:33 <CakeProphet> It's too verboose for something like that.
07:19:44 -!- oerjan has joined.
07:37:50 <CakeProphet> hehe... there should be key layout designed for programmers
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:34:57 -!- oerjan has quit ("Later").
09:27:31 <pgimeno> oh, I missed the discussion on languages of yesterday
09:33:09 <ivan`> i can't learn anything besides qwerty because i've got qwerty memorized in 20 different hand positions and have spinal reflexes for error-correction
09:33:17 <ivan`> trying to switch is the worst mental exercise ever
09:33:33 <ivan`> and 100wpm is fast enough for me
09:48:11 <pgimeno> agree
09:49:08 <pgimeno> it's like that braindamaged standard that Gnome usability "experts" are trying to impose
09:51:18 <pgimeno> (the "yes" button in the far right; the "cancel" button next to it and to the left and the "no" button next to the cancel one)
09:51:53 <pgimeno> e.g. in "Save work?" dialogs
09:55:40 <pgimeno> re languages, I think you must be a polyglot in a sufficient number of languages if you want to take different projects, since every project has a set of "adequate" languages, a set of "inadequate but feasible" languages and a set of "infeasible" languages
09:56:08 <pgimeno> here, "infeasible" means for practical purposes
09:56:47 <pgimeno> (the first two sets may even be empty)
09:59:13 <pgimeno> nobody would write an OS or a RDBMS in JavaScript (I think)
10:00:15 <pgimeno> nobody can write anything but JavaScript and (in some cases) VBScript in a web page (with a relaxed sense of "nobody" but you get the idea)
10:01:24 <pgimeno> nobody would write a program like InkScape in assembler
10:02:05 <pgimeno> nobody would write a library like GMP in anything other than assembler and C
10:02:45 <pgimeno> (aiming for the best possible speed, that is)
10:03:05 <CakeProphet> there's an orthagonally persistent operating system being written in Python.
10:03:11 <CakeProphet> or.. "mostly" Python.
10:03:53 <pgimeno> nobody would write a program to find (not just search) the factorization of Fermat numbers in Python
10:04:09 <pgimeno> even if it has the support needed
10:04:30 <pgimeno> I didn't exclude Python for OSes :)
10:05:24 <CakeProphet> hehe... a Perl operating system :D
10:05:31 <pgimeno> yesterday I found myself looking for the best language to write a simple application that represents a graph, with the limitation that it must support arbitrary precision (and not lots of speed)
10:05:32 <CakeProphet> written in one file.
10:07:28 <pgimeno> after checking that my PHP installation did not support GMP, I tried generating a PBM in C and viewing it with an external viewer. It worked but it required too many steps for it to be uselful to explore the graph.
10:07:59 <pgimeno> I ended up learning a bit of TkInter and writing it in Python.
10:08:22 <pgimeno> My point is that every project has an adequate language (and it can be subjective).
10:11:50 <pgimeno> (the result is here: <http://www.formauri.es/personal/pgimeno/temp/functional-art.py.txt>)
10:13:44 <pgimeno> damn, my server still breaks with python files even if they're renamed as .txt
10:16:23 <pgimeno> http://www.formauri.es/personal/pgimeno/temp/functional-art.txt
10:16:26 <pgimeno> rename to .py
10:19:07 <pgimeno> oh, and you can write a Malbolge interpreter in Python but it's pretty slow
10:19:31 <pgimeno> (or at least that's my experience)
10:24:31 <pgimeno> the 99bob takes ages (it takes 13 million Malbolge instructions to complete IIRC, not negligible if the underlaying language is slow)
10:32:41 <CakeProphet> Python is usually adequately fast for my purposes.
10:34:08 <CakeProphet> its also the programmer that makes the program slow ;;)
11:20:59 <pgimeno> try to write a Malbolge interpreter in Python, it's pretty simple
12:02:20 <pgimeno> then compare the C version with the Python version when running 99BOB
13:43:12 -!- Asztal has joined.
14:42:30 -!- jix_ has joined.
15:02:56 -!- Asztal has quit (Read error: 113 (No route to host)).
15:06:22 -!- pikhq has joined.
15:07:08 -!- pikhq has quit (Client Quit).
15:07:22 -!- pikhq has joined.
15:07:43 <pikhq> Sorry; needed IRC in my screen session.
15:08:58 <pikhq> http://pikhq.nonlogic.org/bfm.tar.bz2
15:09:06 <pikhq> http://pikhq.nonlogic.org/basm.tar.bz2
15:09:24 <pikhq> We're under the 5000 character mark on basm. . . :)
15:32:51 <pikhq> 4629 characters for EOF=0, 4282 for EOF=-1.
15:43:15 * pikhq assumes nobody's in the mood to care ATM
15:48:12 <oklopol> ba
16:08:12 -!- theblue has joined.
16:08:18 <pikhq> 'Lo.
16:09:19 <theblue> Hi.
16:26:45 * pikhq wonders what to code. . .
16:29:04 <oklopol> recode it all
16:29:08 <oklopol> it all sucks
16:29:12 <oklopol> i mean, everything
16:29:34 <pikhq> BFM?
16:29:38 <oklopol> no
16:29:48 <pikhq> But. . . I've already written that. . .
16:29:50 <pikhq> Twice!
16:29:56 <oklopol> not your programs
16:29:56 <pikhq> Oh.
16:30:00 <oklopol> programs in general
16:30:03 <oklopol> they suck
16:30:03 * pikhq no wanna
16:30:09 <oklopol> you should rewrite them
16:30:11 <oklopol> really
16:30:20 <pikhq> The programs I use kick-ass, actually.
16:30:21 <oklopol> :O
16:30:26 <oklopol> really?
16:30:29 <oklopol> what are they?
16:30:35 <pikhq> Ratpoison.
16:30:38 <pikhq> GNU Screen.
16:30:40 <pikhq> Emacs.
16:30:42 <theblue> Eww!
16:30:45 <oklopol> cool
16:30:46 <theblue> That one DOES suck.
16:30:46 <pikhq> Firefox (with Conkeror).
16:31:03 <oklopol> firefox sucks!
16:31:04 <oklopol> :D
16:31:10 <pikhq> There is no OS but GNU, and Linux is one of it's kernels.
16:31:14 <pikhq> oklopol: Not with Conkeror.
16:31:20 <theblue> pikhq: I know, but Emacs sucks.
16:31:20 <pikhq> Gives it Emacsy bindings.
16:31:21 <oklopol> what is it?
16:31:24 <theblue> pikhq: Use vim.
16:31:46 <oklopol> i'll prolly say it sucks if it's graphical and has a non-touring complete interface :)
16:31:46 <pikhq> theblue: Blasphemer.
16:31:54 <theblue> pikhq: Elitist.
16:31:54 <oklopol> not and, or
16:31:59 <pikhq> Javascript is Turing complete.
16:32:13 <pikhq> It's semi-graphical.
16:32:28 <oklopol> but, the browser itself is not a console with commands that load pages etc
16:32:35 <oklopol> so it sucks!
16:32:35 <oklopol> :D
16:32:45 <theblue> oklopol: elinks?
16:32:47 <theblue> oklopol: w3m?
16:33:35 <pikhq> oklopol: Actually, with Conkeror, that's about what it is.
16:34:01 <oklopol> :O
16:34:02 <oklopol> cool
16:34:28 <oklopol> but i'll wait 10 years and hopefully be able to make my own systems
16:34:36 <oklopol> or 30
16:34:39 <oklopol> i have time
16:39:48 -!- Asztal has joined.
16:40:18 <pikhq> Saluton.
16:50:17 * pikhq hugs ratpoison
16:55:28 <oklopol> :O
16:55:33 <oklopol> not safe!
17:10:19 <pikhq> Yes, it is.
17:19:03 <oklopol> YOU are safe!
17:19:26 * pikhq feels his flesh melt from the laptop's compile job
17:34:25 -!- theblue_ has joined.
17:55:40 -!- theblue has quit (No route to host).
17:59:05 -!- oerjan has joined.
18:03:12 -!- calamari has joined.
18:03:22 <pikhq> Hey.
18:05:58 <pikhq> oerjan: New release of BFM and Basm is up, if you care.
18:06:06 <calamari> basm?
18:06:18 <pikhq> calamari: My Brainfuck->C compiler, written in BFM.
18:06:57 <calamari> ahh, was hoping it was an assembler for bf
18:07:16 <pikhq> I. . . Think you've already written on.
18:07:17 <pikhq> e
18:08:57 -!- theblue_ has changed nick to theblue.
18:10:53 <pikhq> basm, I believe, is now the smallest BF->C compiler in BF.
18:13:11 <calamari> cool
18:13:17 <calamari> how many chars?
18:14:09 <pikhq> 4629 characters for EOF=0, 4282 for EOF=-1.
18:14:35 <pikhq> (the EOF=-1 build has a shorter string to output for ,)
18:15:29 <pikhq> string string2! "*p=getchar();"
18:15:42 <pikhq> String for EOF=-1.
18:15:47 <pikhq> string string2! "*p=getchar();if(feof(stdin)) *p=0;"
18:15:58 <pikhq> String for EOF=0. Makes for a good demonstration. ;)
18:16:36 <calamari> is the space necessary before *p ?
18:16:41 <pikhq> Probably not.
18:16:53 <oklopol> it's not
18:17:01 <oklopol> it's ugly, take it away
18:17:03 <oklopol> :)
18:17:21 <pikhq> Done.
18:17:38 <calamari> might also be able to use #define to squeeze things down.. for example "if(" and "*p="
18:17:51 <oklopol> what is this: string string2!
18:18:10 <pikhq> Defines a C-style string named string2!
18:18:39 <pikhq> calamari: Yeah, but the #define would make the initially output string longer.
18:19:16 <calamari> pikhq: yeah.. you'd have to weight the #define against the savings you'd get from it
18:19:22 <calamari> weigh rather
18:19:44 <pikhq> Wouldn't be worth it.
18:19:49 <pikhq> Whole line versus a small handful of characters.
18:20:05 <calamari> well, how many times do you use if( and *p= ?
18:20:13 <pikhq> if( is used once.
18:20:18 <pikhq> *p= is used once.
18:20:23 <pikhq> p= is used thrice.
18:20:26 <calamari> how about *p
18:21:06 <calamari> ooh
18:21:06 <pikhq> Twice.
18:21:34 -!- theblue_ has joined.
18:22:03 <pikhq> The initial string-setting code really isn't that large, as it is. . .
18:22:28 <calamari> if(feof(stdin))*p=0;
18:22:28 <calamari> *p=feof(stdin)?0:p;
18:22:36 <calamari> ^^^ one char shorter :)
18:22:53 <pikhq> 1976 characters for EOF=0, 1634 for EOF=-1. . .
18:22:59 <pikhq> Now that might be worth-while.
18:23:07 <oklopol> calamari, *p=p is not good
18:23:18 <oklopol> *p=feof(stdin)?0:*p; is the same length
18:23:36 <calamari> oklopol: ahh
18:23:51 <calamari> bummer hehe
18:24:11 <calamari> one might turn out smaller than the other, depending on his text->bf algorithm
18:24:18 <oklopol> *p*=!feof(stdin); on the other hand
18:24:27 <calamari> hehe
18:24:33 <oklopol> :)
18:24:39 <pikhq> My text->bf algorithm is remarkably simple.
18:24:55 <oklopol> that's the smallest possible.
18:24:59 <pikhq> For each character in the string, fill a cell using a stdcons call.
18:25:21 <calamari> might also try comma to separate commands rather than ; .. might take less charas, depending on placement
18:25:24 <pikhq> (look in macro.tcl, proc string, for the gory details)
18:25:35 <pikhq> calamari: In main().
18:25:55 <pikhq> Beyond that, I can't be certain.
18:26:20 <pikhq> And I'm not sure if the stdcons implementation of ; is shorter than ,.
18:26:32 <oklopol> which language is that?
18:26:32 <calamari> you could try it and see
18:27:03 <pikhq> oklopol: What? The language Basm is written in?
18:27:07 <calamari> pikhq: paste all the c code.. let's see what else might be optimized
18:27:10 -!- yoga has joined.
18:27:16 -!- alpha_q has joined.
18:27:28 -!- theblue has quit (Read error: 113 (No route to host)).
18:27:33 <pikhq> string string0! "#include <stdio.h>
18:27:34 <pikhq> char b\[30000];
18:27:34 <pikhq> char *p=b;
18:27:34 <pikhq> main()\{"
18:27:34 <pikhq> string string1! "putchar(*p);"
18:27:36 <pikhq> if-1 { string string2! "*p=getchar();"
18:27:38 <alpha_q> Please say "!Ola mundo!"
18:27:38 <pikhq> }
18:27:41 <pikhq> if0 { string string2! "*p=getchar();if(feof(stdin))*p=0;"
18:27:43 <pikhq> }
18:27:46 <pikhq> string string3! "while(*p)\{"
18:27:48 <pikhq> string string4! "p+="
18:27:51 <pikhq> string string5! "p-="
18:28:19 <alpha_q> hm... doesnt work
18:28:30 <calamari> char b\[30000],*p=b;
18:28:36 <oklopol> !Ola mando!
18:28:38 <EgoBot> Huh?
18:28:41 <alpha_q> ;)
18:28:49 <alpha_q> close
18:29:02 <calamari> can remove the newlines.. so
18:29:07 <pikhq> calamari: That parses to char b[30000]=b;char *p=b;
18:29:16 <calamari> pikhq: it does?
18:29:22 <pikhq> calamari: Pretty certain.
18:29:32 <calamari> ahh, I thought you were just outputting text
18:29:45 <pikhq> calamari: It's outputting text which is compiled into C code. -_-'
18:29:58 -!- yoga has left (?).
18:30:15 <calamari> oh, I see what you're saying.. I'm pretty sure it doesn't parse that way
18:30:26 <pikhq> I'll try it.
18:30:27 <oklopol> i have no idea what you're even doing :)
18:31:09 <pikhq> http://pikhq.nonlogic.org/basm.tar.bz2 has the full Basm source code. . .
18:31:16 <calamari> char b\[30000],*p=b;main()\{
18:31:24 <pikhq> And http://pikhq.nonlogic.org/bfm.tar.bz2 has the BFM code necessary to compile it.
18:31:38 <pikhq> (you'll need to install Tcl and Tcllib for BFM)
18:32:31 -!- alpha_q has quit ("ako izleza ot irc s toia message znachi e stanalo neshto neobichaino").
18:33:33 -!- ihope has joined.
18:33:50 <ihope> I suddenly feel like going fast and such.
18:33:52 <pikhq> *echm*
18:33:53 <pikhq> Fuck.
18:34:23 <pikhq> Code got borken somewhere.
18:35:27 <calamari> try reverting the if( code
18:35:46 <pikhq> That's just it. . .
18:35:57 <pikhq> It's the *logic* that's borken.
18:36:18 * pikhq disables the BFM optimizer
18:36:41 <pikhq> Shit.
18:37:16 <pikhq> I think it's a BFM bug.
18:37:20 <calamari> 9<<9 = 4608, so I guess 30000 is the best you can do for 30000
18:37:47 <ihope> You know, I always thought the de facto block length thingy was a bit harsh.
18:38:23 <calamari> >>> print 9<<99
18:38:23 <calamari> 5704427701027032306735164424192
18:38:25 <calamari> :)
18:38:57 <ihope> 99<<99!
18:39:01 <ihope> Not that that's too much bigger.
18:39:19 <ihope> 369729637649726772657187905628805440595668764281741102430259972423552570455277523421410650010128232727940978889548326540119429996769494359451621570193644014418071060667659301384999779999159200499899!
18:39:20 <calamari> 9<<999 would be tho
18:39:24 <ihope> Yep.
18:39:42 <calamari> 48217887323382029442679127207700081475263216526749012334968767476665797300622125512193927046706313615741760281289891607133421537856154131961930599086143586617705554986709039434394835722780670138450793819688709137426118735703294454016244947757346783115570384149589439754471934242436809740767425506312192
18:39:44 <ihope> 999<<(999<<(999<<(999<<(999<<999))))
18:39:49 <calamari> heh
18:39:58 <calamari> the idea is to have the shortest string
18:40:07 <pikhq> Yup; it was a BFM bug.
18:40:36 <pikhq> Fixed with an older build of a stdlib macro.
18:40:46 <calamari> but for length 4 or 5, regular decimal is the best you can do
18:42:14 <calamari> what I should have said is for 1000-99999, regular decimal is the best you can do
18:42:15 <oerjan> probably not portable, but what about -1>>1?
18:42:27 <ihope> let a 0 n=n^n;a m 0=a(m-1)1;a m n=a(m-1)$a m(n-1)in a 9 9
18:42:27 <calamari> that's not shorter than 30000
18:42:45 <ihope> ...Which, apparently, is 1.
18:43:00 <oerjan> no but the result might be bigger
18:43:03 * pikhq discovers more bugs
18:43:03 <calamari> hmm.. wait
18:43:04 <ihope> let a 0 n=n^n+1;a m 0=a(m-1)1;a m n=a(m-1)$a m(n-1)in a 9 9
18:43:09 <calamari> -1.. that's shorter :)
18:43:14 <ihope> That's a bit bigger.
18:43:45 <calamari> but you probably can't do char b[-1]
18:44:26 <pikhq> And I've got bugs fixed.
18:44:31 <pikhq> char b[30000],*p=b;main(){
18:44:34 <pikhq> That works. :)
18:44:42 <calamari> k good
18:45:01 <oerjan> i'm not sure of the definition of >> for negative numbers. is it implementation-dependent whether it preserves the sign bit?
18:45:01 <pikhq> *p=getchar();*p*=!feof(stdin);
18:45:05 <pikhq> That, too, works. :D
18:45:08 -!- theblue has joined.
18:45:13 <pikhq> oerjan: Pretty much.
18:45:19 <calamari> so what are the new lengths?
18:45:41 <oerjan> so -1>>1 _could_ be pretty big. or maybe the precedence is wrong too.
18:46:07 <pikhq> 4466 for EOF=0, 4184 for EOF=-1.
18:46:27 <calamari> yay
18:46:50 <pikhq> Let me try and finish up some work on itoa and divmod; those older versions are a bit longer than they should be.
18:51:11 <pikhq> . . . The hell?
18:51:24 <pikhq> My changes to itoa.bfm and divmod.bfm somehow made the source. . . longer.
18:51:51 <calamari> pikhq: why not this? char*p[30000];main(){
18:52:53 <pikhq> calamari: Um. . . That's a pointer to an array of char arrays, I think. . .
18:53:26 <pikhq> Alternately, an array of strings.
18:56:10 <ihope> !help
18:56:13 -!- theblue_ has quit (Read error: 110 (Connection timed out)).
18:56:13 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
18:56:15 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
18:56:29 <ihope> I'll try Glass.
18:56:41 <ihope> Then again, BF might be nice.
18:56:49 <ihope> Nah, Glass is better.
19:00:06 <pikhq> 4457 for EOF=0, 4175 for EOF=-1.
19:00:51 <calamari> dbc wrote one that is 874 for EOF=0
19:01:20 <calamari> http://www.hevanet.com/cristofd/brainfuck/dbf2c.b
19:01:21 <pikhq> calamari: Does his optimize?
19:01:28 <calamari> probably not
19:01:38 <pikhq> . . . No, it sure as hell doesn't.
19:02:27 <pikhq> So, mine is still better. :)
19:02:32 <pikhq> Not smaller, but better.
19:02:47 * pikhq is going to start calling basm the smallest *optimizing* Brainfuck compiler, then.
19:02:50 <calamari> well, you had said you thought yours was the shorest, so I was clearing that up :)
19:03:05 <pikhq> Thanks.
19:03:33 <calamari> but, you might be able to learn some from his implementation.. he might be using some c tricks we haven't thought of yet
19:04:52 <pikhq> He's using unistd.h
19:05:35 <pikhq> Aside from that, mine's using more C tricks.
19:06:26 <ihope> Hmm.
19:06:45 <pikhq> Flooding:
19:06:48 <pikhq> #include <unistd.h>
19:06:49 <pikhq> char r[65536],*e=r;
19:06:49 <pikhq> main(){
19:06:49 <pikhq> ++
19:06:49 <pikhq> ++*e;
19:06:49 <ihope> In good ol' Glass, how do I set a variable to the thing at the top of the stack?
19:06:51 <pikhq> ++*e;
19:06:53 <pikhq> ..
19:06:56 <pikhq> write(1,e,1);
19:06:58 <pikhq> write(1,e,1);
19:07:01 <pikhq> ,,
19:07:03 <pikhq> read(0,e,1);
19:07:06 <pikhq> read(0,e,1);
19:07:08 <pikhq> --
19:07:11 <pikhq> --*e;
19:07:14 <pikhq> --*e;
19:07:16 <pikhq> >>
19:07:18 <pikhq> ++e;
19:07:21 <pikhq> ++e;
19:07:24 <pikhq> <<
19:07:24 -!- ihope has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - for brainfuck-specific discussion, go to ##brainfuck - NO IRP ALLOWED - Pastebin: http://pastebin.ca/.
19:07:26 <pikhq> --e;
19:07:29 <pikhq> --e;
19:07:31 <pikhq> []
19:07:34 <pikhq> while(*e){
19:07:36 <pikhq> }
19:07:39 <pikhq> exit(0);
19:07:41 <pikhq> }
19:07:44 <pikhq> Hahah.
19:10:37 <pikhq> I refuse to use unistd.h, so I'm using all the tricks he does.
19:10:55 <pikhq> (and quite a few more: I output a grand total of 2 newlines)
19:11:06 <oerjan> http://esolangs.org/wiki/Glass
19:12:27 <ihope> Yes?
19:14:17 <oerjan> (name)1=
19:14:58 <ihope> That won't set the variable to 1?
19:15:06 <oerjan> nope
19:15:25 <oerjan> that would be (name)<1>=
19:15:37 <ihope> Oh, right.
19:16:28 <ihope> Does that leave it on the stack or take it off?
19:18:00 <oerjan> leave it. add , to take off.
19:18:48 <ihope> Thanks.
19:19:44 <oerjan> you're welcome.
19:39:45 -!- CakeProphet has quit ("haaaaaaaaaa").
19:51:19 <oklopol> i learned Glass too :D
19:53:44 -!- Asztal has quit (Read error: 113 (No route to host)).
19:53:45 <oklopol> i don't like the fact that function local stuff is prefixed with an underscore, temp vars should be short imo :\
19:54:00 <oklopol> now they're (_[name])
19:54:32 <oklopol> starts to feel sensible tho
19:54:36 <oklopol> won't bother me for long
19:54:48 <oerjan> ah, yes, a clear break with Glass's fundamental principle of user friendliness.
19:54:56 * oerjan cackles evilly.
19:55:23 <oklopol> :D
19:58:56 <oklopol> but as all names are treated as strings, you should be able to change them to strings, alter them and push them back as vars or functions
19:58:57 <oklopol> :)
19:59:16 <oklopol> because you can do weird stuff anyway with that
20:00:14 <oklopol> i mean you can have a "function pointer" (zot) referring to any (zot)-function in any class
20:07:43 <oerjan> could be useful for dictionaries.
20:08:03 <oklopol> useful?
20:09:59 <oerjan> as in, making it not a complete pain to make dictionaries in Glass
20:10:20 <oklopol> ah as a data type :)
20:10:26 <oklopol> i'm a little dim again
20:10:40 <oklopol> i wasn't saying it is a bad thing
20:10:58 <oerjan> one never knows with esoteric languages :)
20:11:17 <oklopol> trues :D
20:12:51 <oklopol> oh my god that is beautiful :O
20:13:04 <oklopol> {M[m(_s)S!(_o)O!<34>(_s)(ns).?"{M[m(_s)S!(_o)O!<34>(_s)(ns).?""1(_o)o.?2(_o)o.?
20:13:05 <oklopol> 1(_o)o.?2(_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]}"1(_o)o.?2(_o)o.?1(_o)o.?2
20:13:05 <oklopol> (_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]}
20:13:07 <oklopol> this one
20:13:13 * pikhq <3 esolangs. . .
20:13:15 <oklopol> all the o's and the ()'s
20:13:16 <pikhq> What's it do?
20:13:20 * oklopol too
20:13:24 <oklopol> quine
20:13:41 <pikhq> Purty.
20:14:03 <oerjan> !glass {M[m(_s)S!(_o)O!<34>(_s)(ns).?"{M[m(_s)S!(_o)O!<34>(_s)(ns).?""1(_o)o.?2(_o)o.?1(_o)o.?2(_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]}"1(_o)o.?2(_o)o.?1(_o)o.?2(_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]}
20:14:07 <EgoBot> {M[m(_s)S!(_o)O!<34>(_s)(ns).?"{M[m(_s)S!(_o)O!<34>(_s)(ns).?""1(_o)o.?2(_o)o.?1(_o)o.?2(_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]}"1(_o)o.?2(_o)o.?1(_o)o.?2(_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]}
20:14:19 <oklopol> wow
20:16:49 <pikhq> Nice.
20:18:16 <bsmntbombdood> damn
20:19:22 <ihope> Cool.
20:30:03 <oerjan> It must be possible to shorten those (_o)o's...
20:32:43 <oklopol> !glass
20:32:47 <oklopol> look look quine!
20:32:47 <EgoBot> OK
20:32:50 <oklopol> :(
20:32:52 <oklopol> FUCK YA
20:33:05 <oerjan> :)
20:33:23 <pikhq> oklopol: Glass requires a null string to return OK. . .
20:33:54 <oklopol> really?
20:34:37 <pikhq> Yeah.
20:35:42 <oklopol> hard to grasp the factorial program when stupid ppl annoy me on msn :(
20:43:34 <oklopol> haha i'm so gonna make glass without names :)
20:43:45 <oklopol> it's called
20:43:47 <pikhq> . . . What's *wrong* with you?
20:43:49 <oklopol> sorry,
20:43:53 <oklopol> :O
20:43:57 <oklopol> it's just too easy!
20:44:16 <pikhq> (presumably the same thing that's wrong with the rest of us)
20:44:34 <oklopol> haha :D
20:44:43 <oklopol> but, you know, nameless classes and objects
20:44:57 <oerjan> !glass {M[m(_s)S!o11O!o.=<34>(_s)(ns).?"{M[m(_s)S!o11O!o.=<34>(_s)(ns).?""1o?2o?1o?2o?2o?0o?2o?0o?]}"1o?2o?1o?2o?2o?0o?2o?0o?]}
20:45:17 <pikhq> Did I happen to mention that something is wrong with you?
20:45:25 <oklopol> haha :D
20:45:26 <oerjan> darn
20:45:29 <oklopol> no, it's cool!
20:45:34 <oklopol> oerjan, you're my god :O
20:45:57 <oklopol> (if you get that working)
20:46:18 <oklopol> actually it might be easy to make a quine but never made one, so
20:46:24 <oklopol> seems impossible
20:47:23 <oerjan> !glass {M[m(_s)S!(_o)11O!o.=<34>(_s)(ns).?"{M[m(_s)S!(_o)11O!o.=<34>(_s)(ns).?""1(_o)?2(_o)?1(_o)?2(_o)?2(_o)?0(_o)?2(_o)?0(_o)?]}"1(_o)?2(_o)?1(_o)?2(_o)?2(_o)?0(_o)?2(_o)?0(_o)?]}
20:47:25 <oklopol> glass has the cool idea of mixing oo and stacks, but it's basically pretty "normal", gotta add some more esoteria!!
20:47:29 <oklopol> to cheer it up
20:47:51 <oerjan> oh, wait
20:48:00 <oklopol> haha, now just a few chars and it's the former one :)
20:48:25 <oerjan> i thought maybe i used the wrong namespace
20:48:38 <oerjan> but it is something else, i think
20:50:48 <oerjan> !glass {M[m(_s)S!o11O!o.=<34>(_s)(ns).*?"{M[m(_s)S!o11O!o.=<34>(_s)(ns).*?""1o*?2o*?1o*?2o*?2o*?0o*?2o*?0o*?]}"1o*?2o*?1o*?2o*?2o*?0o*?2o*?0o*?]}
20:51:06 <oerjan> or maybe it's both
20:51:34 <oerjan> !ps
20:51:38 <EgoBot> 2 oerjan: ps
20:51:46 <oklopol> what is that?
20:52:03 <oklopol> i'm having a hard time figuring out how to make anything without operators...
20:52:31 <oklopol> i'd like this lang with everything being just a stack of structures
20:52:41 <oklopol> structures as in functions and classes
20:52:51 <GregorR> Woah, that's some complicated Glass code XD
20:53:15 <oerjan> actually i am just using search and replace on the quine
20:53:23 <pikhq> You have made the inventor of Glass say that. . .
20:53:24 <oerjan> to make a shorter one.
20:53:26 <pikhq> I salute you.
20:53:45 -!- CakeProphet has joined.
20:53:45 <GregorR> What, you think I'm the only one that can write complicated glass code? :P
20:53:58 <GregorR> I didn't write the jixmath class, and that's pretty F***ing complicated :P
20:53:59 <pikhq> GregorR: Just saying that that's quite a compliment.
20:54:26 <pikhq> Jixmath?
20:54:44 <pikhq> (care to show me le source?)
20:55:10 <oerjan> !glass {M[m(_s)S!(_o)11O!o.=<34>(_s)(ns).*?"{M[m(_s)S!(_o)11O!o.=<34>(_s)(ns).*?""1(_o)*?2(_o)*?1(_o)*?2(_o)*?2(_o)*?0(_o)*?2(_o)*?0(_o)*?]}"1(_o)*?2(_o)*?1(_o)*?2(_o)*?2(_o)*?0(_o)*?2(_o)*?0(_o)*?]}
20:55:26 <GregorR> Lesse ..
20:55:35 <oerjan> hmph.
20:55:40 <CakeProphet> hahavvvv glass looks so funky
20:55:54 <oerjan> it's easy to make complicated code when it's wrong :(
20:56:07 <GregorR> {(JixMath)[(c)*][(c__)aA!p<9>=(ee)<2.71828182845905>=][(log)(_v)1=,(_c)<-1>=(_x)<1>=/(_x)(_v)*<1.5>a(ge).?(_x)1=(_y)1=,(_c)0*<1>aa.?=/(_y)(_v)0*(ee)*ad.?=(_c)(_y)<0>=\\(_p)p*=(_v)0*<1>as.?=(_o)(_v)*=(_s)<1>=(_i)<0>=(_x)<0>=/(_p)(_p)0*<1>as.?=(_i)0*<1>aa.?=(_x)0*(_o)*(_i)*ad.?(_s)*am.?aa.?=(_o)0*(_v)*am.?=(_s)<0>(_s)*as.?=(_x)\(_c)*(_x)*aa.?][(p)p*][(sp)p1=,][(sqrt)(_v)1=(_x)1<100>ad.?af.?=,(_q)<1>=/(_x)(_x)0*<100>ad.?af.?=(_q)0*<10>
20:56:08 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:56:13 <CakeProphet> ...
20:56:13 <GregorR> am.?=\(_p)p*=/(_p)(_p)0*<1>as.?=(_q)0*(_v)*1ad.?aa.?<2>ad.?=\(_q)*]}
20:56:17 <pikhq> And. . . What does Jixmath do?
20:56:21 <GregorR> Math :P
20:56:35 <pikhq> Like. . . A description?
20:56:35 <GregorR> logarithms, square roots ...
20:56:43 * pikhq sees a sqrt function. . .
20:56:44 <GregorR> Idonno, ask jix_ X-P
20:56:50 * GregorR goes to eat.
20:56:51 <CakeProphet> I need to figure out how glass works
20:56:56 <pikhq> jix_: I wish to pick your brain.
20:57:41 <pikhq> And salute you for that sheer craziness.
20:59:16 <pikhq> !glass {M[m(JixMath)(_m)!O(_o)!2(_m)(sqrt).(_o)o.]}
20:59:33 <jix_> uhm what's crazy about that?
20:59:34 <pikhq> My Glass might be a bit rusty.
20:59:44 <pikhq> jix_: Jixmath == crazy.
20:59:50 <jix_> why?
20:59:55 <pikhq> Look at it.
21:02:33 <oerjan> !glass {M[m(_s)S!(_a)(_o)1O!o.=<34>(_s)(ns).?"{M[m(_s)S!(_o)O!<34>(_s)(ns).?""1(_a)*?2(_a)*?1(_a)*?2(_a)*?2(_a)*?0(_a)*?2(_a)*?0(_a)*?]}"1(_a)*?2(_a)*?1(_a)*?2(_a)*?2(_a)*?0(_a)*?2(_a)*?0(_a)*?]}
21:03:12 <oerjan> !ps
21:03:15 <pikhq> !glass {M[m(_m)(Jixmath)!(_o)O!2(_m)(sqrt).?(_o)o.?]}
21:03:16 <EgoBot> 2 oerjan: ps
21:04:14 <oerjan> darn!
21:04:22 <oklopol> what is that?
21:05:36 -!- ihope has quit (Connection timed out).
21:06:13 <oerjan> !glass {M[m(_s)S!o00O!o.=<34>(_s)(ns).*?"{M[m(_s)S!o00O!o.=<34>(_s)(ns).*?""1o*?2o*?1o*?2o*?2o*?0o*?2o*?0o*?]}"1o*?2o*?1o*?2o*?2o*?0o*?2o*?0o*?]}
21:06:41 * oerjan sighs
21:07:19 <oerjan> it's that quirk about not accessing member variables from functions, I presume
21:08:27 <oklopol> !glass {M[m(_o)O!"o"(_o)o.?]}
21:08:30 <EgoBot> o
21:08:33 <oklopol> :D
21:08:56 <oerjan> !glass {M[m(_s)S!Q00O!o.=<34>(_s)(ns).*?"{M[m(_s)S!Q00O!o.=<34>(_s)(ns).*?""1Q*?2Q*?1Q*?2Q*?2Q*?0Q*?2Q*?0Q*?]}"1Q*?2Q*?1Q*?2Q*?2Q*?0Q*?2Q*?0Q*?]}
21:09:51 <pikhq> !glass {M[m(_o)O!(_m)(JixMath)!<4>(_m)(sqrt).?(_o)o.?]}
21:11:18 <CakeProphet> gah...
21:11:19 -!- Asztal has joined.
21:11:48 <CakeProphet> Switching to dvorak makes a lot of brackets no longer work.
21:12:43 <CakeProphet> \]]]\\\\\\\\\\\\\\\\\\\\====\\\
21:13:33 <CakeProphet> Ack
21:13:38 * CakeProphet was popping out keys.
21:14:34 <CakeProphet> ]]dgd;fg[ldfg;l';l[or=======================================================================[]]==============================================================================================================================================================='
21:14:54 <CakeProphet> ...
21:14:59 <CakeProphet> hehe
21:15:18 <pikhq> . .
21:15:38 <oerjan> !glass {M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?"{M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?""13?23?13?23?23?03?23?03?]}"13?23?13?23?23?03?23?03?]}
21:17:10 <oerjan> !ps
21:17:12 <EgoBot> 2 oerjan: ps
21:17:29 -!- ihope has joined.
21:20:44 <oerjan> !glass {T[t(_o)O!"Test"(_o)o.?]}{M[m(_t)T!(_t)t.0??]}
21:20:48 <EgoBot> TestTest
21:21:47 <Asztal> !glass {[d(o_O)b]}
21:21:50 <EgoBot> OK
21:22:02 <oerjan> !glass {M[m(_o)O!"Test"(_o)o.11?11?]}
21:22:04 <EgoBot> TestTest
21:23:17 <CakeProphet> I'm trying to figure out how to do GLass... but it's very very difficult.
21:23:18 <oerjan> !glass {M[m(_o)0O!o."Test"02?02?]}
21:23:20 <EgoBot> TestTest
21:23:22 <CakeProphet> Damn you postfix.
21:23:31 <pikhq> Heheheh.
21:26:33 <oerjan> !glass {M[m"Test"(_o)0O!o."Test"11?11?]}
21:26:56 <CakeProphet> Argh...
21:27:04 <CakeProphet> it's hard to follow the chain of evaluation when it goes... backwards.
21:27:07 <oerjan> aha
21:27:29 <oerjan> wait...
21:27:34 <oerjan> !glass {M[m"Test"(_o)0O!o.11?11?]}
21:27:38 <EgoBot> TestTest
21:28:07 <Asztal> not if you're used to befunge
21:28:57 <oerjan> ah!
21:29:40 <oerjan> !glass {M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?"{M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?""14?24?14?24?24?04?24?04?]}"14?24?14?24?24?04?24?04?]}
21:29:42 <EgoBot> {M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?"{M[m(_s)S!(_o)0O!o.<34>(_s)(ns).?""14?24?14?24?24?04?24?04?]}"14?24?14?24?24?04?24?04?]}
21:29:48 <oklopol> :DD
21:29:49 <oklopol> wow
21:30:08 <CakeProphet> ...you made a program that...
21:30:10 <CakeProphet> prints itself?
21:30:26 <oerjan> actually i just shortened one that already existed
21:30:46 <pikhq> CakeProphet: That would be a quine.
21:31:41 <CakeProphet> !glass {M[m(_o)0O!o."Lol"11?]}
21:32:00 * CakeProphet isn't sure what the 0 is for...
21:32:06 <CakeProphet> but it looked nice there... so I put it there.
21:32:37 -!- Asztal has quit (Read error: 113 (No route to host)).
21:32:56 <pikhq> It breaks your code, methinks.
21:33:02 <CakeProphet> !glass {M[m(_o)O!o."Lol"11?]}
21:33:11 <pikhq> As does 11.
21:33:22 <CakeProphet> ....damn
21:33:27 * CakeProphet is trying to figure out how ? works.
21:33:31 <pikhq> (which pushs 1 onto the stack twice. . . And the ? tries executing 1.1, which doesn't exist)
21:33:53 <CakeProphet> !glass {M[m(_o)O!o."Lol"]}
21:33:55 <CakeProphet> ?
21:33:58 <pikhq> It takes a variable referring to an instance of an object and a string referring to a function off the stack and executes it.
21:34:11 <CakeProphet> m is main... so it should execute anyways.
21:34:12 <oerjan> no, 11 copies the top 2 elements
21:34:13 <pikhq> Thus, (_o)o? would execute _o.o
21:34:21 <pikhq> oerjan: Ah.
21:35:06 <oerjan> and 0 copies just the top element
21:35:32 <pikhq> Again: Ah.
21:36:32 <CakeProphet> !glass {M[m(_o)O!o."Lol"(_o)?]}
21:36:54 <oerjan> to use 11? the function must be on top. otherwise use 02?
21:36:59 <pikhq> That would execute Lol._o, methinks. . .
21:37:26 <CakeProphet> oooho.
21:37:44 <pikhq> Since there is no object Lol, it does. . . Nothing.
21:38:32 <oerjan> actually it tries to execute (_o), but this fails because it is a name not a function.
21:39:02 <oerjan> for that use *? rather than ?
21:39:33 <CakeProphet> !glass {M[m(_o)O!o."Lol"(_0)*?]}
21:39:35 <CakeProphet> ack
21:39:38 <oerjan> except that (_o) there does not contain a function either, but an object.
21:39:39 <CakeProphet> !glass {M[m(_o)O!o."Lol"(_o)*?]}
21:39:49 <CakeProphet> `.`
21:39:54 * CakeProphet is still getting used to this.
21:40:03 <oerjan> so use o.?
21:40:14 -!- Asztal has joined.
21:40:27 <oerjan> _or_ use 1? instead of (_o)*?
21:40:46 <oerjan> 1 picks up the function you already have put on the stack.
21:40:59 <CakeProphet> !glass {M[m(_o)O!o."Lol"1?]}
21:41:12 <CakeProphet> I have trouble figuring out what's on the stack... >.<
21:41:46 <pikhq> (_o)O! leaves nothing on the stack, but a variable (_o) define.
21:41:48 <oerjan> ah, yes. the o. doesn't work because there is no (_o) on the stack - it was removed by !
21:42:07 <pikhq> o. gives a stack underflow. . .
21:42:07 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)o.1?]}
21:42:08 <oerjan> put a 0 after (_o)
21:42:20 <CakeProphet> !glass {M[m(_o)0O!o."Lol"1?]}
21:42:23 <EgoBot> Lol
21:42:24 <CakeProphet> How do you tell what's on the stack?
21:42:30 <CakeProphet> and where.
21:42:32 <pikhq> Magic.
21:42:37 <CakeProphet> -.-
21:42:44 <oerjan> you read the specification _very_ carefully. :)
21:42:57 <pikhq> Which is magic.
21:43:04 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)o.11?]}
21:43:14 <oklopol> :D
21:43:22 <CakeProphet> How do you represent input to a function?
21:43:35 <pikhq> CakeProphet: Use the I class. . .
21:43:46 <pikhq> Unless you mean, like, arguments.
21:43:48 <CakeProphet> That's user input.
21:43:48 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)o.?]}
21:43:49 <CakeProphet> yeah
21:43:51 <CakeProphet> arguments
21:44:06 <pikhq> Leave the arguments on the stack in appropriate locations.
21:44:14 <oerjan> use on. not o.
21:44:15 <pikhq> The stack is shared.
21:44:52 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)on.?]}
21:45:04 <oerjan> !ps
21:45:07 <EgoBot> 2 oerjan: ps
21:45:11 * CakeProphet doesn't understand...
21:45:13 <oerjan> hm...
21:45:38 <oerjan> now i am not sure why it doesn't work
21:45:59 <pikhq> Use (on) instead.
21:46:01 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)(on).?]}
21:46:05 <EgoBot> 9
21:46:09 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)(on).1111111111111111?]}
21:46:13 <EgoBot> 9
21:46:13 <CakeProphet> So... if "Lol" is the stack before the function is run... how do you represent "Lol" as a variable?
21:46:17 <CakeProphet> 0?
21:46:29 <pikhq> "Lol"(variable_name)=
21:46:30 <oklopol> :D
21:46:38 <CakeProphet> ...I meant... in general.
21:46:43 <CakeProphet> it could be something other than "Lol"
21:46:49 <CakeProphet> an argument.
21:46:55 <pikhq> Oh.
21:47:00 <oklopol> CakeProphet, you're totally gotten it wrong
21:47:08 <pikhq> "Lol"'Function calling stuff here'
21:47:24 <CakeProphet> Yeah...
21:47:51 <oerjan> you mean "Lol"(variable_name)1=,
21:48:19 <pikhq> oerjan: That's if you want "Lol" on the stack *and* in a variable. ;)
21:48:21 <CakeProphet> so... in the function definition... how is the "argument" (The value on the stack before execution of the function) represented?
21:48:33 <oerjan> now, , is the pop command
21:48:40 <oerjan> *no
21:48:45 <pikhq> Um. . .
21:49:08 <pikhq> "Lol"(variable_name)= works just as well. IIRC, = doesn't push anything onto the stack.
21:49:30 <oerjan> no it doesn't because the arguments are in the wrong order
21:49:54 <pikhq> CakeProphet: The function just operates on the global stack.
21:50:05 <pikhq> oerjan: Well, *that* would screw things up.
21:50:20 <CakeProphet> Right... but you can mimic the use of arguments by treating the value on the stack as input right?
21:50:36 <oerjan> right.
21:50:39 <CakeProphet> (input)(function)!
21:50:53 <CakeProphet> how would you "get" (input)?
21:50:55 <oerjan> ? not !
21:50:56 <CakeProphet> in the function itself.
21:50:59 <CakeProphet> er... right.
21:51:01 <pikhq> CakeProphet: ! creates an instance of an object.
21:51:06 <CakeProphet> yeah yeah.
21:51:09 <CakeProphet> wrong punctuation :D
21:51:22 <oerjan> the 0 1 2 commands etc. makes copies of things on the stack.
21:51:23 <pikhq> Same way you would operate on something on the stack otherwise. . .
21:51:35 <CakeProphet> but where is it... 0?
21:51:46 <oklopol> !glass {M[m(_o)O!(_o)(_a)A!(_b)B!(_c)C!f(_a)1.?(_b)1.?(_c)1.?]}{A[f0"a"1o.?]}{B[f0"b"1o.?]}{C[f0"c"1o.?]}
21:51:47 <oklopol> eh
21:51:50 * CakeProphet has a hard time visualizing "the stack"
21:52:03 <pikhq> Imagine you've got a bunch of plates on top of each other.
21:52:18 <pikhq> push equates with sticking a plate on top. pop equates with taking one off.
21:52:24 <CakeProphet> yes yes... a stack.
21:52:27 <Asztal> sounds a lot like befunge to me.
21:52:34 <pikhq> That's the visualisation.
21:52:37 <CakeProphet> I know how they work. I just don't know when it happens.
21:52:44 <pikhq> Asztal: Well, a stack *is* a common datatype.
21:52:56 <pikhq> CakeProphet: When the command for your stack operation is executed. . .
21:53:06 <CakeProphet> hmmm... that works I guess.
21:53:14 <CakeProphet> 0 would be whatever came before the function then.
21:53:27 <CakeProphet> if you use it right at the beginning of the definitionl
21:53:42 <oerjan> every Glass command has a clearly specified effect on the stack, which you can look up at the wiki. In fact I wrote those descriptions myself.
21:53:46 <pikhq> You've got a copy of what's on the top of the stack.
21:53:57 * CakeProphet nods.
21:54:03 <CakeProphet> which... in that case, would be (input) right?
21:54:23 <oklopol> !glass {A[f0"a"1o.?]}{B[f0"b"1o.?]}{C[f0"c"1o.?]}{M[m(_o)O!(_o)(_a)A!(_b)B!(_c)C!f(_a)1.?(_b)1.?(_c)1.?]}
21:54:29 <oklopol> err... what's wrong? :D
21:54:31 <pikhq> Hit the Wikipedia page.
21:54:55 <oerjan> however, Glass is designed so that those effects are not always the most intuitive ones - sometimes it uses the stack for the result, sometimes a variable.
21:55:19 <oerjan> so you simply _have_ to look it up.
21:56:14 <oklopol> A, B and C have a function f that prints a char with stack operation (object of type O) -> (the same object), right?
21:56:24 <oklopol> in the code of mine
21:56:33 <oerjan> Although the builtin class methods happen to more consistently put their results on the stack.
21:57:33 <oklopol> oh
21:57:40 <CakeProphet> !glass {C[c0Oo.?]}{M[m"Lol"Cc.?]}
21:57:49 * CakeProphet probably screwed that up.
21:57:54 <oklopol> !glass {A[f0"a"1o.?]}{B[f0"b"1o.?]}{C[f0"c"1o.?]}{M[m(_o)O!(_o)(_a)A!(_b)B!(_c)C!f1(_a)2.?(_b)2.?(_c)2.?]}
21:58:22 <oerjan> A is a builtin class that might confuse matters.
21:58:47 * CakeProphet wonders how you would mimic inheritance with Glass.
21:58:58 <CakeProphet> What was screwed up with the above?
21:59:03 <CakeProphet> !glass {C[c0Oo.?]}{M[m"Lol"Cc.?]}
21:59:36 <oklopol> !glass {A[f"a"1o.?]}{B[f"b"1o.?]}{C[f"c"1o.?]}{M[m(_o)O!(_o)(_a)A!(_b)B!(_c)C!f1(_a)2.?(_b)2.?(_c)2.?]}
22:00:02 <oerjan> you cannot call methods in a class directly, you must instantiate an object.
22:00:08 <CakeProphet> ...poo
22:01:11 <CakeProphet> !glass {C[c0(_hehe)O!o.?]}{M[m"Lol"(_meow)C!c.?]}
22:01:20 <oklopol> oerjan, can you help me with mine too? :D
22:01:46 <oerjan> oklopol: i would suggest you rename the A class because there is a builtin with that name
22:01:54 <oklopol> :)
22:02:09 * CakeProphet shall make a language that uses a queue instead of a filthy stack.
22:02:42 <oklopol> !glass {B[f"b"1o.?]}{C[f"c"1o.?]}{D[f"d"1o.?]}{M[m(_o)O!(_o)(_b)B!(_c)C!(_d)D!f1(_b)2.?(_c)2.?(_d)2.?]}
22:02:48 <CakeProphet> Perhaps a deque
22:03:00 <oklopol> queue... the turing machine!
22:03:05 <oklopol> oh
22:03:08 <oklopol> not a queue
22:03:11 <oklopol> stfu me
22:03:17 <CakeProphet> A double-ended queue would be interesting.
22:03:24 <oerjan> cakeprophet: the ! command does not leave an object nor its name on the stack. put a 0 after the object variables to keep them.
22:03:51 <CakeProphet> !glass {C[c0(_hehe)0O!o.?]}{M[m"Lol"(_meow)0C!c.?]}
22:03:53 <EgoBot> Lol
22:04:05 <CakeProphet> mej... I keep thinking in evaluation mode... like Lisp
22:04:31 <CakeProphet> Whoo hoo.. I made a needless wrapper around the output class.
22:04:41 <CakeProphet> talk about useful.
22:06:29 <oerjan> oklopol: you have hit upon one of the weirdities of Glass: object names are looked up in the environment of the . so the (_o) can only be used in the m function
22:06:50 <oklopol> haha!
22:07:02 <oklopol> i knew my code was right assuming my knowledge!
22:07:08 <oklopol> but... darn
22:07:52 <oerjan> simply move the o. from the subclasses to M
22:08:01 <oklopol> !glass {B[f(_t)O!"b"1o.?]}{C[f(_t)O!"c"1o.?]}{D[f(_t)O!"d"1o.?]}{M[m(_o)O!(_o)(_b)B!(_c)C!(_d)D!f1(_b)2.?(_c)2.?(_d)2.?]}
22:08:01 <oklopol> no!
22:08:03 <oklopol> never!
22:08:11 <ihope> CakeProphet: a single-ended queue would be more interesting.
22:08:31 <CakeProphet> naj... with a double-ended you could rotate around to weird places.
22:08:40 <CakeProphet> Like a big merry-go-round.
22:09:30 <oerjan> ok another way is to use (_o)* in m to actually have an object rather than its name on the stack. but then you need to put it back into a variable in the subclasses before using . :)
22:10:04 <oklopol> k i'll leave that project.... xD
22:10:31 <oerjan> hm...
22:10:37 <oklopol> why didn't the temp thing work?
22:10:42 <oklopol> !glass {B[f(_t)O!"b"1o.?]}{C[f(_t)O!"c"1o.?]}{D[f(_t)O!"d"1o.?]}{M[m(_o)O!(_o)(_b)B!(_c)C!(_d)D!f1(_b)2.?(_c)2.?(_d)2.?]}
22:10:51 <oklopol> now the classes know O
22:11:05 <oerjan> !glass {M[mTO!"Test"To.?]}
22:11:07 <EgoBot> Test
22:11:27 <oerjan> right i forgot, you can use a global variable starting with a capital :)
22:12:07 <oklopol> !glass {B[f"b"1o.?]}{C[f"c"1o.?]}{D[f"d"1o.?]}{M[m(Olp)O!(Olp)(_b)B!(_c)C!(_d)D!f1(_b)2.?(_c)2.?(_d)2.?]}
22:12:09 <EgoBot> bcd
22:12:13 <oklopol> :)
22:12:14 <oklopol> <3
22:12:42 <oklopol> my lang is starting to get a nice feel to it, {[|<>*][(<>[1-])?]}
22:12:58 <oklopol> does factorials, tho under construction :)
22:14:28 <oklopol> a "class" now has a function stack and a var stack, each "object" lives while it has functions left.... and i have no idea about anything, but who cares :)
22:24:41 <CakeProphet> !glass {(Con)[(c__)a1=b0=][aa*^][bb*^][(iter)(_fun)0=a*(_fun)?(_fun)b(iter).?}
22:24:44 <EgoBot> OK
22:24:50 <CakeProphet> hmmm... I'm trying to build a List datatype in Glass :D
22:28:08 <oerjan> that constructor doesn't look quite right
22:28:15 <CakeProphet> Yeah :/
22:29:40 <oerjan> i think [(c__)a2=b2=,,] might work better
22:30:05 <CakeProphet> Why 2?
22:31:01 <oerjan> because that way you pick the deepest remaining argument
22:31:36 <oerjan> oh wait...
22:32:07 <oerjan> that should be [(c__)a2=b1=]
22:32:21 <CakeProphet> hmmm... I think, to feet the typical Glass syntax... the order of the list should be in reverse :D <123><4567>(pair)(Con)! (if I did the syntax right) would be a pair starting with 4567 and ending with 123
22:32:34 <oerjan> you just forgot to include the variable names on the stack, i think
22:32:42 <oerjan> when counting
22:33:12 <oerjan> but you might still want ,, at the end to remove the arguments.
22:34:15 <oerjan> i don't think you need ^ just before ]
22:35:12 <oerjan> reversing is as simple as a1=b2=
22:37:17 <oerjan> i think you might want a comma after 0= and BTW that should be 1=
22:37:35 <oerjan> as in (_fun)0=
22:38:17 <CakeProphet> !glass {(Con)[(c__)a2=b1=][aa*][bb*][(iter)(_fun)1=,a*(_fun)?(_fun)b(iter)?} {M[m(_p)<123><456>(_pair)(Con)!(_o)O! (_pair)a.(_o).o? (_pair)b.(_o).o?]}
22:40:26 <CakeProphet> er...
22:40:26 <CakeProphet> !glass {(Con)[(c__)a2=b1=][aa*][bb*][(iter)(_fun)1=,a*(_fun)?(_fun)b(iter)?} {M[m<123><456>(_pair)(Con)!(_o)O! (_pair)a.(_o).o? (_pair)b.(_o).o?]}
22:43:38 <CakeProphet> Don't think it worked.
22:43:38 <oerjan> missing some *'s after some (_fun)'s
22:43:38 <CakeProphet> !glass {(Con)[(c__)a2=b1=][aa*][bb*][(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter)?} {M[m<123><456>(_pair)(Con)!(_o)O! (_pair)*a.(_o)*.o? (_pair)*b.(_o)*.o?]}
22:43:38 <oerjan> and a . after (iter)
22:43:38 <CakeProphet> !glass {(Con)[(c__)a2=b1=][aa*][bb*][(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?} {M[m<123><456>(_pair)(Con)!(_o)O! (_pair)*a.(_o)*.o? (_pair)*b.(_o)*.o?]}
22:43:38 <CakeProphet> hehe... I'm assuming glass can handle recursiion.
22:43:38 <oerjan> a ] before }
22:43:38 <CakeProphet> >.<
22:43:38 <CakeProphet> !glass {(Con)[(c__)a2=b1=][aa*][bb*][(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?]} {M[m<123><456>(_pair)(Con)!(_o)O! (_pair)*a.(_o)*.o? (_pair)*b.(_o)*.o?]}
22:43:38 <CakeProphet> I'm going to make a list class to conviently wrap values into pairs before I attempt any sort of iteration. O.o
22:43:38 <oerjan> too many * in the main function
22:43:38 <CakeProphet> I thought you needed them to denote that the variable is in the current context. ;.;
22:43:39 <oerjan> not for the argument of .
22:44:36 <CakeProphet> !glass {(Con)[(c__)a2=b1=][aa*][bb*][(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?]} {M[m<123><456>(_pair)(Con)!(_o)O! (_pair)a.(_o)o.? (_pair)b.(_o)o.?]}
22:44:36 <oerjan> some .o should be o.
22:44:42 <CakeProphet> yeah
22:44:44 <CakeProphet> I got it.
22:45:39 <oerjan> oh and numbers are printed with on. not o.
22:46:03 <CakeProphet> !glass {(Con)[(c__)a2=b1=][aa*][bb*][(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?]} {M[m<123><456>(_pair)(Con)!(_o)O! (_pair)a.(_o)(on).? (_pair)b.(_o)(on).?]}
22:47:33 <CakeProphet> wheee.... slowly the process of abstraction takes place.
22:47:37 <CakeProphet> slowly... and painfully.
22:47:39 <oerjan> whoops. i remember that you cannot have methods with the same name as attributes.
22:47:54 <CakeProphet> meh... I'll call them what they're called in Lisp.
22:47:58 <oerjan> in fact it crashed Glass horribly last time i tried
22:47:58 <CakeProphet> what are they called in Lisp again?
22:48:07 <oerjan> car and cdr
22:48:38 <CakeProphet> hmmm... can't you just access the variables themselves?
22:48:52 <CakeProphet> instead of using a function?
22:48:59 <oerjan> no, that was in fact what crashed Glass horribly, it's a bug
22:49:41 <CakeProphet> !glass {(Con)[(c__)a2=b1=][(car)a*][(cdr)b*][(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?]} {M[m<123><456>(_pair)(Con)!(_o)O! (_pair)(car).?(_o)(on).? (_pair)(cdr).?(_o)(on).?]}
22:49:42 <EgoBot> 123456
22:49:49 <CakeProphet> I also forgot to do a ? on the pairs.
22:49:56 <CakeProphet> whoooo... we made a pair!
22:50:25 <oklopol> is that a working list?
22:50:36 <CakeProphet> As far as I can tell...
22:50:43 <oerjan> i think the (iter) is still slightly buggy
22:50:43 <oklopol> cool :)
22:50:47 <CakeProphet> It instantiated... took the two values in front of it, stored them, and accessed them.
22:51:15 <CakeProphet> yeah... I'll wait for the (List) class before figuring out the iter
22:51:23 <oerjan> no wait, i misread
22:51:53 <CakeProphet> (List) will probably need to take the length of the list as a value... so the constructor knows how far back to go.
22:53:20 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:54:04 <oerjan> you need a Nil class for a start
22:54:21 <CakeProphet> That would be like...
22:54:40 <CakeProphet> {(Nil)} ???
22:55:14 -!- jix_ has joined.
22:55:16 <oerjan> rather, {(Nil)[(iter),]}
22:56:32 <oerjan> and probably you need a null? method too
23:00:43 <oerjan> actually that could be defined using (iter).
23:01:29 <oerjan> except... that would be bad on circular lists.
23:02:00 <oerjan> anyhow, time for bed.
23:02:03 <CakeProphet> {(Nil)[(iter),][(null?)1]} {(Con)[(c__)a2=b1=][(car)a*][(cdr)b*][(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?]} {(List)[(c__) (_a)A! (length)0=(tmp)(length)*=\(tmp)*a(tmp)*=b(tmp)<(tmp)*><1>(_a)s.?==]}
23:02:18 <CakeProphet> hmmm... not done yet on the constructor for list.
23:03:03 <oerjan> you need (null?) in (Con) as well
23:03:20 <CakeProphet> hmmm...
23:03:48 <CakeProphet> which would check cdr for null? right?
23:04:05 <CakeProphet> but what would happen if it wasn't null?
23:04:15 <CakeProphet> Is there a way to reliably check that?
23:04:28 <oerjan> null? is just a method that tells if the list is Nil or not. So Con can just return 0.
23:04:54 <CakeProphet> ooooh
23:04:56 <CakeProphet> duh :P
23:07:26 <CakeProphet> How would you change a <number> into a (stack push)?
23:08:36 <oerjan> i think that is rather awkward. in fact i think you would need to create a list class just to temporarily store away the above elements.
23:09:55 <CakeProphet> Hmmm?
23:10:14 <oerjan> i don't think you need the (tmp) variable btw. just decrement length in the loop.
23:10:23 <CakeProphet> I'm trying to use a length parameter and a while loop to make it do a bunch of cons
23:10:55 <CakeProphet> Well... I was going to keep length unchanged by the loop so that it could be accessed by other things
23:11:05 <oerjan> ok
23:11:35 <oerjan> but you don't need it i think
23:12:17 <CakeProphet> In an environment built around getting values based on their position on the stack... a length variable would come in handy in tons of places.
23:12:58 <CakeProphet> but I'm still not sure how to use tmp to get something from the stack./
23:13:53 <oerjan> you cannot. the simplest way to turn a number into a push is by using the List class you are trying to construct.
23:14:31 <CakeProphet> aah.
23:14:31 <oerjan> however if you do the loop the right way you don't need to access far down elements.
23:14:35 <CakeProphet> work backwards?
23:14:44 <CakeProphet> and just do 0?
23:14:51 <CakeProphet> 0,
23:15:17 <CakeProphet> that would make the list go backwards.
23:15:20 <oerjan> you may not even need 0.
23:15:59 <CakeProphet> hmm?
23:17:44 <oerjan> if you are collecting elements into the variable (_l), say, then adding the top element of the stack to it (and removing it) is just (_l)*(_l)(Con)!
23:18:20 <oerjan> except you need to add those ,, i mentioned at the end of (Con).c__
23:18:24 -!- Asztal has quit (Read error: 113 (No route to host)).
23:20:11 <CakeProphet> ....hmmm, I halfway understand.
23:21:33 <oerjan> so your loop would be something like /(_tmp)(_l)*(_l)(Con)!(_tmp)*<1>(_a)s.?\
23:21:55 <CakeProphet> What's _1?
23:22:25 <oerjan> _l is the variable collecting the list
23:24:01 <oerjan> (_l)(Nil)!/(_tmp)(_l)*(_l)(Con)!(_tmp)0*<1>(_a)s.?=\
23:25:59 <CakeProphet> Your *'s look like they're in the wrong place.
23:26:39 <oerjan> i don't think so
23:27:10 <oerjan> the first * is to get the content of _l onto the stack before using (Con)
23:27:41 <CakeProphet> Why doesn't the second _l have a *?
23:28:30 <oerjan> because the ! command takes an unevaluated name to put the contructed object in
23:28:48 <CakeProphet> Ah.
23:28:49 <CakeProphet> damn postfix
23:29:04 <CakeProphet> I forgot the _1 was just an identifier name.
23:29:35 <oerjan> it's a small L btw :)
23:31:15 <oerjan> it may not really be appropriate for this list collection function to happen in List.c__, because we are not actually trying to construct a class List object, but a chain of Con's
23:31:57 <CakeProphet> Eh... it's just for convience.
23:32:14 <CakeProphet> it's probably the easiest way I could think of doinging
23:32:21 <CakeProphet> implementing it as a method of Con would be kind of weird.
23:32:32 <oerjan> the problem is that we then get a new List object in addition
23:32:55 <CakeProphet> If the constructer simply returns _l... it'll be a chain of cons.
23:33:14 <CakeProphet> by "return" I mean... but _l on the stack.
23:33:39 <oerjan> yes, but the List object still is also created, and needs to be put in a variable
23:34:03 <CakeProphet> Hmmm... it wouldn't work right as a Con method though...
23:35:01 <CakeProphet> hmmm... maybe _l should be an instance variable?
23:35:13 <CakeProphet> and you can just access List.l
23:35:19 <oerjan> it could be List.list, that would be similar to the builtin classes
23:36:13 <oerjan> the builtin classes just need to be instantiated once, and after that you use their methods as if they were static
23:36:27 <oerjan> more or less
23:38:30 <oerjan> on the other hand wrapping the List object might also work, but then you need to declare (iter) and stuff in (List) as well.
23:39:31 <oerjan> anyhow now i really need to go to bed
23:39:41 <CakeProphet> Alright
23:39:57 <CakeProphet> Thanks for the pointers :D
23:39:57 -!- oerjan has quit ("Good night.").
23:43:28 <CakeProphet> {(Nil)[(iter),][(null?)1]} {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?] } {(List)[(build)(_a)A!(_tmp)0= (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)] } {M[m(_o)O! (_l)(List)! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"<12>(_l)(build).?(MyList)0= (_o)o.(MyList)(iter).?]}
23:44:03 <CakeProphet> !glass {(Nil)[(iter),][(null?)1]} {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?] } {(List)[(build)(_a)A!(_tmp)0= (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)] } {M[m(_o)O! (_l)(List)! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"<12>(_l)(build).?(MyList)0= (_o)o.(MyList)(iter).?]
23:44:05 <EgoBot> OK
23:44:12 <CakeProphet> ...
23:54:40 <CakeProphet> Well.. I'll figure out the bugs later.
23:54:47 <CakeProphet> Would probably make a good built-in class.
23:55:18 <pikhq> . . . You didn't.
23:55:45 <pikhq> You did.
23:55:53 <pikhq> My god. You're just crazy.
23:56:26 <CakeProphet> I take pride in my insanity.
23:56:47 <CakeProphet> The cons class works fine... just need to figure out where I messed up on the list constructor.
23:57:19 <CakeProphet> other than it... missing a curly brace.
23:57:45 <CakeProphet> !glass {(Nil)[(iter),][(null?)1]} {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?] } {(List)[(build)(_a)A!(_tmp)0= (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)] } {M[m(_o)O! (_l)(List)! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"<12>(_l)(build).?(MyList)0= (_o)o.(MyList)(iter).?]}
23:59:54 -!- tgwizard has quit (Remote closed the connection).
2006-12-29
00:03:56 <CakeProphet> Ima test the iterator thing to see if it works without the list.
00:08:46 <CakeProphet> {(Nil)[(iter),][(null?)1]} {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?] } {M[m(_o)O! ! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"(_a)(Con)! (_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con) (_o)o.(_a)(iter).]}
00:09:00 <CakeProphet> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?] } {M[m(_o)O! ! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"(_a)(Con)! (_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con) (_o)o.(_a)(iter).]}
00:13:05 <CakeProphet> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,(car)*?(_fun)*?(cdr)*?(iter)*?] } {M[m(_o)O! ! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"(_a)(Con)! (_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con) (_o)o.(_a)(iter).]}
00:30:25 <CakeProphet> !ps
00:30:28 <EgoBot> 2 CakeProphet: ps
00:37:30 -!- bsmnt_bot has quit (Read error: 110 (Connection timed out)).
00:38:35 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
00:41:46 <CakeProphet> !glass {(BFfeed) [(c__) (_i)I! (code)(_l)l.?= (pos)=<1>] [(next)(_s)S! (_a)!a (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} ((Array)(c__
00:41:49 <EgoBot> OK
00:42:07 <oklopol> !ps
00:42:11 <EgoBot> 2 oklopol: ps
00:42:21 <CakeProphet> Building a BF interpreter in Glass :D
00:42:24 <oklopol> :D
00:42:28 <oklopol> i thought so
00:42:35 <oklopol> now what is !ps?
00:42:44 <CakeProphet> Shows the process list.
00:42:57 <CakeProphet> Oh my...
00:43:01 <oklopol> huh?
00:43:33 <CakeProphet> I have no clue how to implement an array without using a linked list or something.
00:43:41 <CakeProphet> and my list constructor is still buggy :/
00:44:16 <CakeProphet> hmmm... I could use the stack as my array.
00:44:21 <oklopol> no
00:44:27 <oklopol> don't :\
00:44:54 <oklopol> make an array class for numbers, easy! :D
00:45:08 <CakeProphet> hmmm... yeah that would be hard to handle if it were right on the stack.
00:45:21 <oklopol> hmm
00:45:26 <oklopol> you could make it a string
00:45:39 <oklopol> you can extract a char from a string
00:45:43 <CakeProphet> Split by whitespace?
00:45:45 <oklopol> and convert it to a number
00:45:50 <oklopol> no
00:45:57 <oklopol> each character is a number
00:46:13 <CakeProphet> You would need some symbol to specify where one number begins and where the next ends.
00:46:25 <CakeProphet> such as.... space :D
00:46:41 <pikhq> CakeProphet: I thought Gregor had that as a glass example.
00:47:13 <CakeProphet> I haven't seen it.
00:47:14 <pikhq> CakeProphet: Such as, like, realising that a string is an array of chars.
00:47:33 <CakeProphet> Oh... *thumpforehead*
00:47:48 <CakeProphet> For some reason I was thinking it HAD to be in numbers.
00:47:58 <CakeProphet> the thought never occured to me that I could use the CHARACTERS.
00:48:15 <CakeProphet> hmmm... can Glass strings represent non-printing characters?
00:48:16 <oklopol> i tried to tell you but i was too tired :(
00:48:24 <oklopol> yes
00:48:30 <oklopol> i mean, obviously
00:48:47 <pikhq> It's stored internally as a C++ string, which is stored internally in <string> as C strings with metadata.
00:48:59 <CakeProphet> shush.
00:49:12 <oklopol> you can't have 0?
00:49:28 <pikhq> oklopol: Part of the metadata in a C++ string is size.
00:49:43 <pikhq> Meaning that a string of 0's is perfectly acceptable.
00:49:45 <oklopol> oh i misunderstood you, sorry
00:49:48 <oklopol> yep
01:00:40 <CakeProphet> Hmmm...
01:00:54 <CakeProphet> in Glass... slicing is the equivalent to C slicing, no?
01:00:59 <CakeProphet> starting a 0?
01:13:23 <oklopol> yes
01:13:29 <oklopol> i mean, obviously
01:13:35 <CakeProphet> ....
01:13:36 <oklopol> :D
01:13:41 <CakeProphet> NOT EVERYTHING IS OBVIOUS.
01:13:44 <CakeProphet> >.<
01:14:46 <oklopol> !glass {M[m"abc"1(_o)O!(_s)0S!s.?(_o)o.]}
01:14:47 <oklopol> ...
01:15:03 <oklopol> !glass {M[m"abc"1(_o)O!0(_s)S!s.?(_o)o.]}
01:15:43 <oklopol> !glass {M[m"abc"1(_o)O!(_s)0S!d.?(_o)o.]}
01:16:04 <oklopol> !glass {M[m"abc"1(_o)O!(_s)0S!d.?(_o)o.?]}
01:16:07 <EgoBot> abc
01:16:15 <oklopol> !glass {M[m"abc"2(_o)O!(_s)0S!d.?(_o)o.?]}
01:16:17 <EgoBot> abc
01:16:18 <CakeProphet> {(BFfeed) [(c__) (_i)I! (code)(_l)l.?= (pos)=<1>] [(next)(_s)S! (_a)!a (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns)<15000>= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d.? (_be)1=...
01:16:20 <CakeProphet> ...(_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (_s)i.}
01:16:21 <CakeProphet> Is what I've got so far.
01:17:06 <oklopol> !glass {M[m"abc"<2>(_o)O!(_s)0S!d.?(_o)o.?]}
01:17:07 <EgoBot> c
01:17:14 <oklopol> !glass {M[m"abc"<1>(_o)O!(_s)0S!d.?(_o)o.?]}
01:17:17 <EgoBot> bc
01:17:19 <oklopol> !glass {M[m"abc"<0>(_o)O!(_s)0S!d.?(_o)o.?]}
01:17:23 <EgoBot> abc
01:17:47 <oklopol> i don't read glass that fluently yet :)
01:17:54 <oklopol> but i can read that
01:18:00 <pikhq> Nobody really does.
01:18:10 <CakeProphet> I can read my own.
01:18:14 <CakeProphet> but other peoples becomes difficult.
01:18:22 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
01:18:26 * pikhq doesn't do Brainfuck, either. . .
01:18:32 <pikhq> And I code in it nearly daily.
01:19:34 <CakeProphet> You sorta have to think of it as dumping shit onto a big pile.
01:19:41 <CakeProphet> and then when you see certain symbols... start moving it around.
01:20:01 <CakeProphet> usually you see the action before you see the subject... but not in postfix.
01:20:28 <oklopol> [(c__) (_i)I! (code)(_l)l.?= (pos)=<1>]
01:20:33 <oklopol> sure about this?
01:20:46 <CakeProphet> typo
01:20:47 <oklopol> can you explain it?
01:20:51 <CakeProphet> should (_i)i.
01:21:00 <oklopol> that i thought
01:21:06 <oklopol> (pos)=<1>?
01:21:37 <CakeProphet> hmmm..
01:21:39 <CakeProphet> should be 0
01:21:49 <oklopol> (pos)<0>=
01:21:49 <CakeProphet> I was thinking Glass might have moved up the slice notation a notch.
01:21:51 <oklopol> ?
01:21:51 <CakeProphet> for some reason.
01:21:56 <CakeProphet> yeah
01:22:29 <oklopol> k first func read and debugged :)
01:22:53 <CakeProphet> StringSpam is just a little thing for "string multiplication"
01:23:11 <CakeProphet> so I can fill up a string with 15000 void characters quickly.
01:23:26 <oklopol> [(next)(_s)S! (_a)!a (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]
01:23:27 <oklopol> k
01:23:36 <oklopol> (_a)!a -> (_a)A! ?
01:23:50 <CakeProphet> Yah
01:24:30 <oklopol> you should take advantage of oo!
01:24:46 <CakeProphet> I'm trying to
01:24:50 <oklopol> don't use an int as the pointer, have a class with .(inc) and so on
01:24:57 <CakeProphet> ....
01:25:04 <oklopol> (pos)(pos)*<1>(_a)a.=
01:25:06 <CakeProphet> that would take way more coding.
01:25:07 <oklopol> not pretty
01:25:15 <oklopol> (pos)(inc).?
01:25:22 <CakeProphet> It's prettier than going through the trouble of making a class.
01:25:25 <oklopol> tho everything is immutable
01:25:37 <oklopol> that's not the point, use OO! :D
01:25:39 <oklopol> :DD
01:25:40 <oklopol> .DDDDDD
01:25:44 <oklopol> k
01:25:51 <oklopol> that way is good
01:25:51 <CakeProphet> ....there's only so much abstraction that's nessicary.
01:26:12 <oklopol> *necessary
01:26:15 <CakeProphet> Glass is so terrible because it forces you to abstract fairly low-level operations.
01:26:16 <oklopol> (sorry)
01:26:20 <Sukoshi> 15,000 void characters?
01:26:30 <CakeProphet> Yeah, a BF array initialized to 0
01:26:31 <oklopol> 30000 is teh standard! :D
01:26:37 <CakeProphet> oh fine... 30000
01:26:39 <CakeProphet> :P
01:26:40 <Sukoshi> Oh. You mean null characters.
01:27:44 <oklopol> BfFeed will be expanded later on with loopz right?
01:28:01 <Sukoshi> CakeProphet: Expand as you go along.
01:28:12 <Sukoshi> 30,000 bytes is a greedy amount of memory.
01:28:14 <oklopol> Sukoshi, can be done later
01:28:32 <Sukoshi> Hey, if I can make expanding arrays in INTERCAL.....
01:28:40 <oklopol> :D
01:28:51 <oklopol> i wanna sleep, why can't i :(
01:29:05 <Sukoshi> Who wants to sleep? :O
01:29:13 <Sukoshi> I sleep out of mental neccessity.
01:29:22 <oklopol> true, but i have to wake up early
01:29:28 <Sukoshi> How early?
01:29:31 <oklopol> 9
01:29:34 <oklopol> 3:23 now
01:29:38 <Sukoshi> ...........................
01:29:54 <oklopol> i usually wake up 13.00 or 14.00
01:30:07 <oklopol> and i ALWAYS have an alarm clock on at 10.00
01:30:25 <oklopol> just never wakes me up... maybe i'm lucky tomorrow
01:30:57 <Sukoshi> I sleep at 3, wake up at 6:30, with one 30 min nap in the day.
01:31:11 <oklopol> well, i envy you then
01:31:46 <oklopol> less sleep, longer life
01:31:51 <CakeProphet> {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)=<0>] [(next)(_s)S! (_a)!A (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d.
01:31:52 <CakeProphet> ? (_be)1= (_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]}
01:32:04 <CakeProphet> mmm... Glass looks deliciously nonsential.
01:32:08 <oklopol> you didn't fix them :)
01:32:10 <oklopol> you didn't fix them :)
01:32:11 <oklopol> you didn't fix them :)
01:32:11 <oklopol> you didn't fix them :)
01:32:14 <CakeProphet> fix wha?
01:32:19 <oklopol> (pos)=<0>
01:32:22 <oklopol> (_a)!A
01:32:29 <CakeProphet> ...yes I did.
01:32:32 <oklopol> oh :(
01:32:38 <CakeProphet> :P
01:32:40 <CakeProphet> You lose.
01:32:54 <oklopol> why do i see them there then? :O
01:33:03 <CakeProphet> >.>
01:33:09 <CakeProphet> Insanity?
01:33:15 <oklopol> must be
01:33:51 <CakeProphet> {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)<0>=] [(next)(_s)S! (_a)A! (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d.
01:33:53 <CakeProphet> ? (_be)1= (_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]}
01:33:56 <CakeProphet> :P
01:34:33 <CakeProphet> I should start on that double-ended queue language.
01:35:07 <oklopol> why do you inc pos?
01:35:10 <oklopol> /(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\
01:35:18 <oklopol> shouldn't you dec num?
01:35:36 <oklopol> /(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)s.?\
01:35:49 <oklopol> in stringspam
01:35:58 <oklopol> i'm starting to be able to read that
01:36:24 <oklopol> ((Array)
01:36:32 <oklopol> should be { the first one
01:39:58 <oklopol> hmm
01:40:22 <oklopol> i can't see the use of your splitting the array in (Array)
01:40:31 <oklopol> in (set)
01:40:33 <CakeProphet> (pos) represents the number you're multiplying it by
01:40:49 <CakeProphet> poorly named.
01:40:54 <oklopol> really?
01:41:04 <oklopol> where is it inited?
01:41:12 <oklopol> and when will the loop end?
01:41:46 <CakeProphet> "Lolerskates" * 5 ----------- "Lolerskates" <5> (_ss)StringSpam!(_ss)?
01:41:51 <CakeProphet> When pos is 0
01:42:03 <CakeProphet> pos is decremented each loop.
01:42:07 <Sukoshi> Might I reccomend Pastebin?
01:42:24 <CakeProphet> Spam never hurt anybody. :P
01:42:53 <oklopol> {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} << why would the loop end?
01:43:11 <oklopol> no operation is done to num
01:43:16 <CakeProphet> {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)<0>=] [(next)(_s)S! (_a)A! (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d.
01:43:18 <CakeProphet> ? (_be)1= (_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]}
01:43:20 <CakeProphet> ack
01:43:22 <CakeProphet> yeah
01:43:30 <CakeProphet> should be (num) instead of (pos)
01:43:33 <CakeProphet> hehe
01:43:40 <oklopol> /(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)a.?\ -> /(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)s.?\
01:43:44 <CakeProphet> (pos) is the position we're on in the input.
01:43:46 <oklopol> then i'm happy
01:43:52 <oklopol> i know, i'm not blind
01:43:53 <oklopol> :)
01:44:04 <oklopol> (i am an ass, tho)
01:44:21 <CakeProphet> eh... everyone is an asshole is some point.
01:44:47 <oklopol> yeah, i'd really like to sleep but i can't :(
01:45:18 <oklopol> k wtf does (set) do?
01:45:24 <Sukoshi> CakeProphet: Uh... please use Pastebin.
01:45:37 <Sukoshi> It's also easier to read for a lot of people.
01:46:51 <CakeProphet> oklopol, set sets (_ps) in (array) to (_str)
01:47:49 <oklopol> you do know _str is "1" and (_ps) is 2?
01:48:03 <oklopol> it sets 2 in (array) to "1"?
01:48:24 <CakeProphet> 1 means "element 1 on the stack"
01:48:49 <oklopol> it isn't ready yet, then?
01:49:07 <oklopol> i mean, it takes those as params and doesn't set them in the function?
01:49:34 <CakeProphet> It does.
01:49:47 <oklopol> take them as params?
01:50:28 <CakeProphet> To set a value in the array... we have to split it at (_ps) and concatenate the first half with (_str) and then concatenate those two with the second half.
01:50:47 <CakeProphet> yeah.. they're params
01:50:53 <oklopol> then i'm happy
01:50:57 <CakeProphet> indeed.
01:51:18 <oklopol> i just read code as a compiler with only a minor autodebug
01:52:04 <oklopol> so if you put test values in, i don't understand
01:52:05 <oklopol> too hard
01:52:14 <oklopol> oh my eyes hurt
01:53:13 <oklopol> (if you made a (Counter)-class, you'd get rid of TWO ugly additions!)
01:53:34 <oklopol> you have two functions whose main purpose is to inc a var :)
01:53:51 <oklopol> actually, the sole purpose of the other
01:54:21 <oklopol> hey btw
01:54:38 <oklopol> why didn't you tell me i was wrong a while ago
01:54:40 <oklopol> :O
01:55:00 <oklopol> maybe because i make no sence and mostly talk to myself :)
01:55:16 <CakeProphet> What ugly additions?
01:55:24 <oklopol> i'll now reread that one part keeping in mind 2 != <2> xD
01:55:26 <CakeProphet> and how is it conceptually possible to get rid of anything ugly with GLASS?
01:55:40 <oklopol> (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=
01:55:45 <oklopol> conseptually ugly!
01:55:56 <oklopol> but
01:56:14 <CakeProphet> A pointer class would just add to the overhead.
01:56:23 <oklopol> as i once again misparsed, 1 IS A FUCKING LIFT, not a number xD
01:56:27 <CakeProphet> and bloat the whole program.
01:56:55 <oklopol> i hate being a human
01:57:01 <oklopol> mistake after mistake
01:57:07 <CakeProphet> It's pretty fun.
01:57:14 <CakeProphet> programmers are kind of insane though.
01:57:59 <oklopol> (_af)1= in (set) should be (_af)0=
01:58:04 <CakeProphet> oklopol, Did you seem my implementation of a Lisp pair in Glass?
01:58:26 <CakeProphet> hmmm... I thought pushing something from the stack decrement the position of everything.
01:58:28 <oklopol> i did, but i didn't read it because i had this craaaaaazy idea of going to sleep
01:58:44 <oklopol> huh?
01:58:48 <oklopol> it does
01:59:03 <CakeProphet> so then why's it wrong? :/
01:59:07 <oklopol> but (_bf)1= takes off what it puts in
01:59:37 <oklopol> 1 if the first part, 0 is the second part, so naturally (_bf)1= (_af)0=
01:59:43 <CakeProphet> The stack item is removed when its pushed back in?
01:59:44 <oklopol> or
01:59:57 <CakeProphet> Glass is -not- intuitive. :P
02:00:01 <oklopol> actually i don't know whether = leaves anything on the stack
02:00:04 <CakeProphet> do not even attempt to think naturally.
02:00:17 <oklopol> = pops the name and the value off
02:00:18 <oklopol> as i thought
02:00:20 <CakeProphet> numbers leave things on the stack.
02:00:24 <CakeProphet> oh.
02:00:26 <CakeProphet> alright :P
02:00:34 <oklopol> obviously! :D
02:00:37 <oklopol> :DDDDDDD
02:00:55 <oklopol> (i looked it up, but it's ONLY because i'm tired)
02:01:05 <oklopol> (it's very obvious)
02:01:20 <CakeProphet> {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)<0>=] [(next)(_s)S! (_a)A! (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1= (array)*(_ps)(_s)d.?...
02:01:21 <oklopol> but
02:01:22 <CakeProphet> ...(_be)1= (_af)0= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]}
02:01:23 <CakeProphet> Beautiful
02:01:50 <oklopol> why the fuck (_this)$ leaves the object on the stack :D
02:02:07 <oklopol> makes no sence because no other var oper does
02:02:17 <CakeProphet> eh...
02:02:22 <CakeProphet> I'm sure there's a reason
02:02:31 <CakeProphet> or maybe not
02:02:35 <CakeProphet> it could also just be there to confuse you.
02:02:36 <oklopol> i don't get it
02:02:46 <CakeProphet> so... help me think of how a double-ended queue language should work.
02:02:56 <oklopol> the this-pointer must always be both pushed and set into a var
02:02:59 <oklopol> why?
02:03:04 <CakeProphet> boredom?
02:03:09 <oklopol> you never need both, you must have both
02:03:11 <oklopol> weird :\
02:03:12 <CakeProphet> it would be fun... like a merry-go-round
02:03:26 <oklopol> but
02:03:34 <CakeProphet> and you could evaluate different things at different places... it would be kind of weird.
02:03:34 <oklopol> a two-way queue?
02:03:40 <CakeProphet> Yeah.
02:03:47 <oklopol> i have some thoughts
02:03:57 <CakeProphet> push1, pop1, push2, pop2, rotate (being a push2 of pop1)
02:03:57 <oklopol> but i'm not sure if i can take them out
02:04:28 <oklopol> k, that's basically a stack-based lang where you control pop's and pushes right?
02:04:37 <CakeProphet> Kinda...
02:04:38 <oklopol> kinda like... brainfuck
02:04:40 <oklopol> :)
02:04:42 <CakeProphet> NO
02:04:43 <CakeProphet> LIAR
02:04:45 <CakeProphet> FOOL
02:04:48 <oklopol> wait!
02:04:52 <oklopol> there's more!
02:04:57 <CakeProphet> It would be different.
02:05:19 <CakeProphet> You wouldn't control the pushes and pops.
02:05:30 <CakeProphet> it would just... kinda shift around as you code.
02:05:36 <oklopol> brainfuck goes too far! you can make sence into it by making only the queue part, not also the ridiculously hard inc&dec-only system
02:05:52 <CakeProphet> You might be able to swap which end of the cue the pushes and pops occur...
02:05:57 <CakeProphet> but... you don't order them specifically.
02:06:06 <oklopol> ah okay, you should then be able to make it go around in different places
02:06:16 <CakeProphet> Yeah.... see it would be neat.
02:06:37 <oklopol> very non-modular if there is just one queue with a rolling tape
02:06:43 <oklopol> and that's often boring
02:06:45 <CakeProphet> Swapping which end you get values from would kind of reverse the evaluation order.
02:06:46 <oklopol> BUT
02:06:52 <oklopol> huh?
02:06:58 <oklopol> ah
02:07:13 <oklopol> i misunderstood the whole queue thing :)
02:07:22 <CakeProphet> yeah... I'm not sure how it'll work either.
02:07:32 <oklopol> i thought like a circle where you can go around freely
02:07:42 <CakeProphet> it could rotate after each do-hicky.
02:07:45 <oklopol> but instead you meant a two-sided stacks?
02:07:50 <CakeProphet> nah... it won't be like brainfuck.
02:07:51 <oklopol> *stack
02:07:55 <CakeProphet> two-sided queue.
02:08:18 <oklopol> yes, but i confuse consepts
02:08:28 <oklopol> bad recall for terms
02:08:29 <oklopol> :(
02:08:41 <oklopol> i'll do some perusing on the subject now ->
02:08:52 <CakeProphet> [1,2,3,4,5,6,7,8,9] push1(0) [0,1,2,3,4,5,6,7,8,9] pop2() [0,1,2,3,4,5,6,7,8] push1(pop2()) [8,0,1,2,3,4,5,6,7]
02:09:17 <oklopol> good
02:09:37 <oklopol> anyway, functionality is that of a two-sided stack
02:09:42 <oklopol> so i'll call it that :)
02:09:50 <oklopol> same thing
02:09:57 <CakeProphet> Pretty much.
02:10:02 <CakeProphet> It can work like a stake or a queue
02:10:21 <CakeProphet> a queue language might be more fun though.
02:10:28 <oklopol> i wish i had paper... got some unbelievably cool ideas :D
02:10:37 <CakeProphet> cause... let's face it... stacks are boring.
02:10:41 <oklopol> true
02:10:45 <CakeProphet> Now... if we had tubes.
02:11:00 <oklopol> no 3d... like the one i'm gonna show you in a minute :)
02:11:03 <CakeProphet> with multidimensional arrays being pushed down them... and the data intersecting and crossing based on commands.
02:11:06 <CakeProphet> THERE'S A LANGUAGE.
02:11:30 <CakeProphet> a tubular language.
02:11:52 <CakeProphet> inputs and outputs criss-crossing and connecting... with the data getting tossed around.
02:14:34 <oklopol> :D
02:14:40 <oklopol> TUBU 1.0
02:14:43 <oklopol> can i send you?
02:14:48 <oklopol> made an ugly picture
02:14:59 <CakeProphet> hmmm?
02:15:10 <oklopol> dunno if it's unugly enough to give you the picture... i mean what i was thinking
02:15:33 <oklopol> it involves a circular tape that can be cut and rotated etc. :)
02:15:38 <CakeProphet> We could make a dataless language.
02:15:53 <oklopol> iota kinda is
02:15:56 <oklopol> unlambda
02:16:00 <oklopol> zot
02:16:02 <oklopol> jot
02:16:12 <oklopol> purely functional languages
02:16:13 <CakeProphet> Where "stuff" is sent through structures you've created for it... and somehow magically becomes data.
02:16:16 <oklopol> :D
02:16:35 <oklopol> you don't need data when the structure is perfect!
02:16:58 <CakeProphet> A spider web language?
02:16:59 <oklopol> a language with no data, no hello world, no factorials, just PERFECT structures :D
02:17:05 <oklopol> pretty much
02:17:13 <CakeProphet> no I mean
02:17:15 <oklopol> anyways, i wanna send you the ugly pic :(
02:17:18 <CakeProphet> let's talk about a spider web language.
02:17:20 <CakeProphet> alright
02:17:22 <oklopol> soon1
02:17:27 <oklopol> first send!
02:17:34 <oklopol> how to?
02:17:51 <CakeProphet> A lset-based lanauge?
02:17:53 <CakeProphet> set
02:18:21 <oklopol> it's nosence.bmp... i then realized there is a word nonsence
02:18:28 <oklopol> which would've made more sence
02:18:38 <oklopol> but then again, why should nonsence make sence?
02:18:42 <oklopol> that's just stupid
02:18:45 <oklopol> so it's nosence
02:18:53 <CakeProphet> hmmm.
02:19:01 <CakeProphet> maybe a non-determinstic language that doesn't... yanno... suck.
02:19:05 <oklopol> i can't send it, also, with this :)
02:19:31 <oklopol> can i send that another way?
02:19:43 <oklopol> it's very important!
02:19:44 <oklopol> :D
02:20:51 <oklopol> lol it makes me laugh... fuck i'm tired
02:21:25 <oklopol> spiderweb-language?
02:21:33 <oklopol> sound like a job for concurrency!
02:21:42 <oklopol> and heavy subwebbing!
02:21:54 <CakeProphet> a network language?
02:21:54 <oklopol> and a great support for tcp/ip
02:21:56 <oklopol> :D
02:22:32 <CakeProphet> nodes... with links.
02:22:36 <CakeProphet> like neurons.
02:22:40 <oklopol> yes, tons of them
02:22:51 <oklopol> kinda like a cellular automaton
02:22:57 <CakeProphet> oooh
02:23:01 <oklopol> but you can code each node differently
02:23:15 <oklopol> (there is a macro lang for that, of course)
02:23:16 <CakeProphet> a language for constructing cellular automatons.
02:23:20 <oklopol> :D
02:23:25 <pikhq> Already done.
02:23:33 <CakeProphet> that fit specifically for what you need them to do.
02:23:34 <oklopol> prolly
02:23:42 <pikhq> Seriously.
02:23:48 <oklopol> what?
02:23:51 <oklopol> i might have it
02:23:57 * CakeProphet has a Automaton class in Python that can represent any cellular automaton with a universal rule for all cells.
02:25:10 <oklopol> zu
02:25:18 <oklopol> i don't like python :(
02:25:32 <oklopol> has bad lambda support if you ask me
02:26:02 <oklopol> i mean, you have to twiddle to do even conditionals in a lambda
02:26:24 <oklopol> [(stuph) for i in [1] if (cond)]
02:26:47 <oklopol> god, now i have to sleep... really... <.smdfk ->
02:36:39 <CakeProphet> 2.5 has conditional expressions
02:36:50 <CakeProphet> (blah if condition else otherblah)
02:37:15 <CakeProphet> Most Python zealots don't consider lambda all that useful anyways...
02:37:18 <CakeProphet> I like lambda myself :D
02:44:38 <oklopol> me too :)
02:45:12 <oklopol> that's a boring condition
02:45:18 <oklopol> ?: is cooler
02:45:59 <oklopol> i've actually been trying to sleep for 2.5 hours now
02:53:13 <CakeProphet> Python makes some crappy quines. :P
02:53:22 <CakeProphet> http://www.nyx.net/~gthompso/self_pyth.txt
02:56:10 <CakeProphet> I like this one though.
02:56:15 <CakeProphet> a = ['print "a =", a', 'for s in a: print s']
02:56:16 <CakeProphet> print "a =", a
02:56:18 <CakeProphet> for s in a: print s
03:08:37 <oklopol> extendable, nice
03:08:55 <oklopol> i mean, nicely extendable
03:09:45 <oklopol> 5th time's the charm ->
03:23:47 <CakeProphet> it's fairly terse for a quine as well.
03:24:36 <CakeProphet> iterating quines are cool. :D
03:25:18 <CakeProphet> A sequence of programs that each produce the source code of the next one in the sequence.
03:25:36 <CakeProphet> and I'm guessing the last one prints the source code of the first.
03:32:48 <tokigun> one-liner quine is achieved by this code: print (lambda x:x%x)('print (lambda x:x%%x)(%r)')
03:33:09 <tokigun> good example for repr() ;)
03:45:37 <CakeProphet> ooooh yah
03:45:45 <CakeProphet> repr() would be a good way to reproduce source code.
03:45:47 <CakeProphet> since it...
03:45:52 <CakeProphet> prints... the source code.
03:50:25 <CakeProphet> that's a good one. :D
03:57:02 <CakeProphet> I would be amazed if someone built a phyiscal object that can do the same thing as an iterating quine.
03:57:37 <CakeProphet> Like a machine that builds a machine that builds a machine that builds a machine that builds the original machine.
04:00:55 <CakeProphet> You could probably use iterating quines to do a computation of some sort.
04:01:14 <CakeProphet> maybe a language whose entire function is to shell out successive source codes... which eventually will produce the original.
04:01:38 <CakeProphet> but the side effects that each one produce create a successive shift... that eventually yields some sort of useful output
04:02:51 * pikhq defines a pointless language
04:02:54 <pikhq> QUINE.
04:03:05 <pikhq> "a" outputs "a".
04:03:11 <pikhq> "b" outputs "c".
04:03:18 <pikhq> "c" outputs "d".
04:03:26 <pikhq> "d" outputs "b".
04:04:10 <pikhq> "" outputs "Sorry, gotta work one more character for that."
04:05:10 <pikhq> Thus, the shortest quine is "a".
04:05:26 <pikhq> And the shortest iterating quine is "b", "c", or "d".
04:05:44 <CakeProphet> ?/?
04:12:29 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
04:12:48 <CakeProphet> tokigun, That's the coolest quine I've seen so far.
04:12:53 <CakeProphet> Most of them look pretty boring.
04:13:05 <CakeProphet> Plus it's in one line... which is pretty awesome.
04:13:09 -!- ivan`_ has joined.
04:31:38 -!- ivan` has quit (Read error: 110 (Connection timed out)).
04:32:28 -!- ivan`_ has changed nick to ivan`.
04:36:11 <CakeProphet> hmmmm
04:36:13 <CakeProphet> oh
04:36:17 <CakeProphet> you could make two sister languages.
04:36:32 <CakeProphet> both made to produce outputs in the form of the other language...
04:36:53 -!- RW63Phi has joined.
04:36:56 <CakeProphet> A polyglottal iterative quine based language. :D
04:37:55 <RW63Phi> Could someone please repeat this command and cause it to be executed by another host?
04:38:50 <CakeProphet> Could someone please repeat this command and cause it to be executed by another host?
04:40:05 <RW63Phi> Everyone please execute a command which causes each of you to ignite and burn.
04:40:07 -!- Dangermouse has joined.
04:40:38 <RW63Phi> lol, no IRP allowed.....
04:41:02 -!- RW63Phi has left (?).
04:41:05 <CakeProphet> Could someone please give someone a command to give someone a command to repeat this command?
04:47:18 -!- Dangermouse has left (?).
05:07:38 <pikhq> Could someone please give someone a command to repeat that command?
05:10:34 <pikhq> Pretty please with sugar on top?
05:13:10 -!- theblue has quit (Read error: 113 (No route to host)).
05:14:07 <CakeProphet> Could someone please repeat that command?
05:15:21 <pikhq> Could someone please give someone a command to give someone a command to repeat this command?
05:15:29 <pikhq> SIGKILL
05:15:53 <CakeProphet> WASSAT?
05:16:13 <pikhq> It's a UNIX signal for stopping exeuction.
05:30:22 -!- calamari has quit ("Leaving").
05:32:27 -!- pikhq has quit (Read error: 54 (Connection reset by peer)).
05:33:55 -!- pikhq has joined.
05:51:07 <fizzie> SIGTERM is for stopping execution; SIGKILL is if you're feeling antisocial.
05:52:43 <pikhq> SIGKILL stops execution *now*.
05:52:49 <pikhq> SIGTERM allows for cleanup.
05:52:54 <pikhq> I'm no neatfreak.
05:55:44 <GregorR> SIGSTOP is for /stopping/ execution :)
05:55:51 <GregorR> SIGTERM is for /terminating/ execution :P
05:55:59 <GregorR> and SIGKILL is for /killing/ execution ;)
05:56:30 <fizzie> And, of course, SIGABRT is for /aborting/ execution. "Do we really need so many?"
05:57:18 <fizzie> SIGILL is for making the execution /ill/, in which case it barfs. "Dumps core", in Unix terminology.
05:58:31 <fizzie> Heh, and of course there's SIGINT for /interrupting/ execution, which kind-of fits in the original list.
05:59:22 <fizzie> And SIGQUIT for /quitting/ execution. Come to think of it, an inordinate amount of the signals seem to be about manhandling the execution somehow.
05:59:51 <fizzie> Why isn't there SIGTHANKS that you can send when a process has diligently worked and behaved in an exemplary manner?
06:25:29 <pikhq> SIGEMT sends a trained EMT for your process.
06:26:03 <pikhq> Needed after SIGSTOP, SIGTERM, SIGKILL, SIGABRT, SIGILL, SIGINT, or SIGQUIT.
06:37:14 <Sukoshi> Signals -- when you need that time-has-passed feeling.
06:51:52 -!- pikhq has quit (Read error: 110 (Connection timed out)).
06:57:20 -!- werdwerdus has joined.
07:24:32 -!- werdwerdus has quit (Read error: 110 (Connection timed out)).
07:49:33 -!- oerjan has joined.
07:53:39 <oerjan> !ps
07:53:42 <EgoBot> 2 oerjan: ps
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:22 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"<12>(_l)(build).?(MyList)1=, (_o)o.(MyList)(iter).?]}
08:02:07 <oerjan> darn
08:04:25 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! "H" (MyList)0(Nil)!(Con)! (_o)o.(MyList)(iter).?]}
08:04:34 <oerjan> !ps
08:04:38 <EgoBot> 2 oerjan: ps
08:08:28 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)o.(MyList)(iter).?]}
08:10:03 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)o.(MyList)(car).?1?]}
08:10:07 <EgoBot> H
08:11:48 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)o.(MyList)(cdr).?(_t)1=,(_t)(null?).?1?]}
08:11:59 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)(on).(MyList)(cdr).?(_t)1=,(_t)(null?).?1?]}
08:12:03 <EgoBot> 0
08:12:11 <oerjan> whoops
08:13:16 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)(o).(MyList)(cdr).?(_t)1=,(_t)(car).?1?]}
08:18:30 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" "i" (MyList)0(Nil)!*(MyList)(Con)!(MyList)*(MyList)(Con)! (_o)(o).(MyList)(cdr).?(_t)1=,(_t)(car).?1?]}
08:18:33 <EgoBot> i
08:19:08 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" "i" (MyList)0(Nil)!*(MyList)(Con)!(MyList)*(MyList)(Con)! (_o)(on).(MyList)(cdr).?(_t)1=,(_t)(null?).?1?]}
08:19:11 <EgoBot> 0
08:29:48 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(cdr).?(_t)1=,(_t)(car).?1?]}
08:29:50 -!- Arrogant has joined.
08:31:43 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:33:37 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o)."test"?1?]}
08:33:46 <oerjan> !ps
08:33:49 <EgoBot> 2 oerjan: ps
08:36:21 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)2(_o)o.?(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:36:23 <EgoBot> i
08:37:27 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(_tmp)*(_o)(on).?(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:37:31 <EgoBot> 2
08:38:05 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)*(_o)(on).?(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:38:07 <EgoBot> 2
08:38:30 -!- Arrogant has quit ("Leaving").
08:38:58 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=(_tmp)*(_o)(on).?\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:40:11 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?(_tmp)*(_o)(on).?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:40:46 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.(_tmp)*(_o)(on).??=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:41:27 <oerjan> !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_tmp)*(_o)(on).?(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]}
08:41:31 <EgoBot> 2
08:44:17 <oerjan> !glass {M[m(_a)A!(_o)O!<4><2>(_a)s.?(_o)(on).?]}
08:44:30 <oerjan> !glass {M[m(_a)A!(_o)O!<4><2>(_a)a.?(_o)(on).?]}
08:44:55 <oerjan> !glass {M[m(_a)A!(_o)O!<4><2>(_o)(on).0??]}
08:44:57 <EgoBot> 0
08:45:12 <oerjan> !ps
08:45:15 <EgoBot> 2 oerjan: ps
08:45:47 <oerjan> !glass {M[m(_a)A!(_o)O!<4><2>(_o)(on).?]}
08:45:49 <EgoBot> 2
08:46:07 <oerjan> !glass {M[m(_a)A!(_o)O!<4><2>(_a)a.,(_o)(on).?]}
08:46:56 <oerjan> something is broken with the A class...
08:47:49 <oerjan> !glass {M[m(_b)A!(_o)O!<4><2>(_b)a.,(_o)(on).?]}
08:48:02 <oerjan> !glass {M[m(_b)A!(_o)O!<4><2>(_b)m.,(_o)(on).?]}
08:48:19 <oerjan> !glass {M[m(_b)A!(_o)O!<4><2>(_o)(on).?]}
08:48:24 <EgoBot> 2
08:49:48 <oerjan> GregorR: The A class in Glass is broken.
09:00:33 <oerjan> !glass {F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*<2>(_a)(le).?=/(_isle)<1>^\(_n)*<1>(_a)s.?(_t)f.?(_n)*<2>(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)<1>=(_nlm)<1>=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*<1>(_a)a.?=(_nlm)(_n)*<20>
09:00:36 <EgoBot> OK
09:00:59 <oerjan> !glass {F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*<2>(_a)(le).?=/(_isle)<1>^\(_n)*<1>(_a)s.?(_t)f.?(_n)*<2>(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)<1>=(_nlm)<1>=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*<1>(_a)a.?=(_nlm)(_n)*<20>(_a)(le).?=\]}
09:01:02 <EgoBot> 0
09:01:29 <oerjan> yep, the Fibonacci program no longer works.
09:09:01 <oerjan> hm...
09:10:04 <oerjan> !glass {M[m(_o)O"Test"T$(_o)o.?]}
09:10:14 <oerjan> !glass {M[m(_o)O"Test"T$,(_o)o.?]}
09:10:30 <oerjan> !glass {M[m(_o)O!"Test"T$(_o)o.?]}
09:10:32 <EgoBot> Test
09:10:35 <oerjan> ah
09:12:26 <oerjan> !glass {M[m(_o)O!"ho""Test"T$,(_o)o.?]}
09:12:30 <EgoBot> ho
09:13:44 <oerjan> oklopol: sorry about the $ specification, it was a documentation bug
09:41:50 <oerjan> although it would probably have been in the spirit of Glass if it wasn't.
10:03:42 -!- oerjan has quit ("Later").
11:02:31 <pgimeno> oh, DM was around
12:40:30 -!- tgwizard has joined.
13:04:23 -!- pgimeno has quit ("kernel upgrade").
13:37:55 -!- pgimeno has joined.
13:39:26 -!- jix_ has joined.
16:40:44 -!- pikhq has joined.
16:43:17 * SimonRC looks at the nasty glass
16:43:21 <SimonRC> ouch
16:43:36 * pikhq thinks about making BFM shorter
16:44:38 <pikhq> basm
16:54:13 -!- oerjan has joined.
16:57:37 <SimonRC> hi
17:02:27 <oerjan> hi
17:11:18 <pikhq> 'Lo.
17:32:25 -!- pgimeno has quit (Remote closed the connection).
18:05:48 -!- ihope has joined.
18:44:51 -!- ihope_ has joined.
19:00:55 -!- pgimeno has joined.
19:01:54 -!- ihope has quit (Connection timed out).
19:59:11 -!- ivan`_ has joined.
20:06:53 -!- ivan` has quit (Read error: 60 (Operation timed out)).
20:06:54 -!- ivan`_ has changed nick to ivan`.
20:35:45 -!- ivan`_ has joined.
20:42:41 -!- ehird has joined.
20:43:09 -!- ehird has left (?).
20:43:23 -!- ivan` has quit (Read error: 145 (Connection timed out)).
20:43:26 -!- ivan`_ has changed nick to ivan`.
22:16:24 -!- Asztal has joined.
22:34:48 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
22:34:54 -!- okokoko has joined.
22:39:47 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
22:49:13 -!- ivan`_ has joined.
22:54:10 -!- oerjan has quit ("Good night.").
22:55:30 -!- ivan` has quit (Read error: 104 (Connection reset by peer)).
22:55:30 -!- ivan`_ has changed nick to ivan`.
2006-12-30
00:51:36 -!- ivan`_ has joined.
01:03:09 -!- bsmntbombdood has joined.
01:09:23 -!- ivan` has quit (Connection timed out).
01:09:24 -!- ivan`_ has changed nick to ivan`.
01:31:08 -!- tgwizard has quit (Remote closed the connection).
02:26:17 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
03:07:21 -!- RodgerTheGreat has joined.
03:07:37 <RodgerTheGreat> howdy, everyone
03:07:46 <CakeProphet> vcnbv
03:07:47 <CakeProphet> ;'kl;k'
03:07:49 <CakeProphet> l'
03:07:50 <CakeProphet> k
03:08:06 <RodgerTheGreat> nice to see you too, CakeProphet
03:08:08 * CakeProphet made a semi-broken Lisp-like list constructor in Glass.
03:08:23 <pikhq> howdy.
03:08:26 <CakeProphet> and an incomplete BF interpreter.
03:08:26 <RodgerTheGreat> interesting
03:09:07 <CakeProphet> http://esolangs.org/wiki/User:CakeProphet#Glass_stuff
03:09:39 <CakeProphet> The con glass works fine (although I haven't tested the iter method yet)
03:09:47 <CakeProphet> but List doesn't work right yet.
03:09:56 <pikhq> ++++++++++>,<[>.,<-] | World's stupidest Brainfuck program.
03:09:57 <pikhq> Wheee.
03:11:40 <RodgerTheGreat> a 10-character cat command?
03:11:51 <pikhq> Yup.
03:12:03 <CakeProphet> Actually
03:12:04 <pikhq> Stupid, no?
03:12:17 <CakeProphet> !bf +.
03:12:20 <EgoBot> <CTCP>
03:12:23 <CakeProphet> Is probably worse.
03:12:34 <CakeProphet> or even just...
03:12:37 <CakeProphet> !bf .
03:12:43 <pikhq> My program at least indicates some knowledge of Brainfuck.
03:12:51 <CakeProphet> -.-
03:12:54 <CakeProphet> Thus... less stupid.
03:12:57 <pikhq> !bf -.-
03:13:00 <EgoBot>
03:13:01 <CakeProphet> haha
03:13:07 <RodgerTheGreat> I always thought the most stupid BF program was "[]", because it's what n00bs assume will i-loop an interpreter
03:13:18 <RodgerTheGreat> they always forget the +
03:13:19 <pikhq> It's not even a quine.
03:13:23 -!- cmeme has quit ("Client terminated by server").
03:13:24 <pikhq> !bf
03:13:27 <pikhq> I WIN!
03:13:34 -!- cmeme has joined.
03:13:37 <CakeProphet> hmmm... has anyone done a quine in BF?
03:13:43 <pikhq> Several.
03:13:44 <RodgerTheGreat> the null program isn't all that special in BF
03:13:44 <CakeProphet> that's not huge... and is something I would understand?
03:14:09 <RodgerTheGreat> most quines end up being rather brute-force, but the basic design is simple
03:14:34 <RodgerTheGreat> you need the source of your program stored in an encoded form and a decoder stub
03:14:54 <RodgerTheGreat> the stub will print out the encoded form and then the unencoded form (itself)
03:15:00 <RodgerTheGreat> bingo- quine
03:15:02 <pikhq> http://esoteric.sange.fi/brainfuck/bf-source/quine/quine410_with_comments.b
03:15:03 <RodgerTheGreat> :D
03:15:21 <CakeProphet> print (lambda x:x%x)("print (lambda x:x%%x)(%r)") is one of the coolest quines ever.
03:15:44 <RodgerTheGreat> wow- that's pretty readable
03:15:51 <pikhq> That's the commented version.
03:15:56 <RodgerTheGreat> kudos to the guy who wrote that one
03:16:06 <RodgerTheGreat> clarity in BF takes some skill
03:18:00 <CakeProphet> !bf ;+++++++++++++.
03:18:02 <EgoBot>
03:18:06 <CakeProphet> !ps
03:18:08 <EgoBot> 2 CakeProphet: ps
03:18:16 <CakeProphet> !bf ,+++++++++++++.
03:18:19 <CakeProphet> !ps
03:18:23 <EgoBot> 2 CakeProphet: bf
03:18:23 <pikhq> !bf ]
03:18:24 <EgoBot> 3 CakeProphet: ps
03:18:38 <CakeProphet> !i 2 A
03:18:42 <EgoBot> N
03:18:48 <CakeProphet> hehehe... ROT13
03:19:58 <CakeProphet> !bf +[,+++++++++++++.[-]+]
03:20:04 <CakeProphet> !i 2 Hello
03:20:12 <CakeProphet> !ps
03:20:16 <EgoBot> 2 CakeProphet: bf
03:20:18 <EgoBot> 3 CakeProphet: ps
03:20:24 <CakeProphet> !i 2 B
03:20:47 <CakeProphet> >.<
03:20:51 <pikhq> !kill 2
03:20:54 <EgoBot> Uryy|O
03:20:57 <EgoBot> Process 2 killed.
03:20:59 <CakeProphet> ooooh
03:21:04 <pikhq> Didn't give a newline. ;)
03:21:19 <CakeProphet> Thought it just spouted output on the spot.
03:21:22 <CakeProphet> but it buffers it.
03:21:44 <CakeProphet> !bf +[,+++++++++++++.[-]+]
03:21:52 <CakeProphet> !i 2 a
03:21:53 <CakeProphet> !i 2 b
03:21:55 <CakeProphet> !i 2 b
03:21:56 <CakeProphet> !i 2 a
03:21:58 <pikhq> !i 2 \n
03:21:58 <CakeProphet> !kill 2
03:22:00 <EgoBot> noon
03:22:03 <EgoBot> Process 2 killed.
03:22:03 <CakeProphet> ....
03:22:25 <CakeProphet> !bf +[,+++++++++++++.[-]+]
03:22:28 <CakeProphet> !i 2 a
03:22:30 <CakeProphet> !i 2 b
03:22:32 <pikhq> !i noon
03:22:32 <CakeProphet> !i 2 b
03:22:38 <CakeProphet> ...oh
03:22:43 <pikhq> !i 2 noon
03:22:52 <CakeProphet> !i 2 \n
03:22:53 <pikhq> I don't think it works fully.
03:22:57 <pikhq> !kill 2
03:23:00 <EgoBot> noo{||{-
03:23:02 <EgoBot> Process 2 killed.
03:23:04 <CakeProphet> haha
03:23:04 <RodgerTheGreat> wait, when did gregor decide to bring back EgoBot?
03:23:14 <CakeProphet> !bf +[,+++++++++++++.[-]+]
03:23:18 <CakeProphet> !i 2 a
03:23:20 <CakeProphet> !i 2 b
03:23:23 <CakeProphet> !i 2 b
03:23:27 <CakeProphet> !i 2 o
03:23:31 <CakeProphet> !i 2 \n
03:23:38 <CakeProphet> >.>
03:23:51 <CakeProphet> !kill 2
03:23:52 <EgoBot> noo|
03:23:54 <EgoBot> Process 2 killed.
03:23:57 <CakeProphet> :(
03:24:11 <CakeProphet> But yeah... it's a crude ROT13
03:24:15 <CakeProphet> otherwise that would have said "noob"
03:24:23 <CakeProphet> it doesn't wrap at the end.
03:28:09 <CakeProphet> hmmm...
03:28:16 <CakeProphet> so... I've been working on my IRP iterating quine.
03:28:23 <CakeProphet> so here's a test run:
03:28:28 <CakeProphet> Could someone please ask someone to repeat this request?
03:28:49 <pikhq> Could someone please repeat the previous request?
03:29:02 <RodgerTheGreat> "Could someone please ask someone to repeat this request?"
03:29:06 <CakeProphet> NOOB
03:29:08 <CakeProphet> NO QUOTES
03:29:22 * CakeProphet adds to the wiki
03:29:43 <RodgerTheGreat> ERROR 8: DON'T_BE_A_DOUCHE_TO_YOUR_INTERPRETER ERROR
03:29:45 <CakeProphet> with someone like "as you can see, the results are not always accurate" or something.
03:30:18 <CakeProphet> or I can just... strip the quotes and pretend the run went successfully.
03:31:13 <RodgerTheGreat> heh
03:31:20 <pikhq> ERROR 9: THE INTERPRETER DOESN'T EXECUTE THE LANGUAGE
03:32:15 <RodgerTheGreat> the only real problem with a quine in this format is that it could easily lead to infinite recursion, until the interpreters get bored. You might want to add a clause for that
03:32:23 -!- digital_me has joined.
03:32:31 <RodgerTheGreat> hi
03:32:31 <pikhq> That'd be SIGKILL.
03:36:11 -!- ihope_ has quit (Connection timed out).
03:37:21 <CakeProphet> IRP isn't Turing complete because it consists entirely of undefined behavior.
03:37:35 <CakeProphet> Nothing in the specification guarantees the a defined result.
03:39:05 <pikhq> It's occasionally Turing complete, but that's just out of sheer luck.
03:40:14 <CakeProphet> !help
03:40:17 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
03:40:18 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
03:40:27 <RodgerTheGreat> I'm going to assume that Turing-completeness requires a certain degree of reliability, because it deals with solving computable problems in a finite amount of time
03:40:57 <pikhq> !daemon bf irp ,[.,]
03:41:00 <EgoBot> Huh?
03:41:05 <pikhq> Grr.
03:41:06 <CakeProphet> One of the requirements for Turing completeness is well-defined behavior.
03:41:08 <pikhq> !help daemon
03:41:10 <EgoBot> Use: daemon <daemon> <daemon-command> Function: start a daemon process.
03:41:15 <RodgerTheGreat> there you go
03:41:23 <pikhq> !daemon irp bf ,[.,]
03:41:30 <pikhq> EgoBot now does IRP.
03:41:46 <pikhq> !irp Please say "Hello, world!"
03:42:00 <pikhq> !irp \n
03:42:01 * CakeProphet has some weird Python classes that implement various forms of the computational classes.
03:42:01 <pikhq> XD
03:42:06 <CakeProphet> as they're formally defined.
03:42:11 <RodgerTheGreat> perhaps IRP would benefit from the use of legalese, it being a more precisely defined form of English
03:42:35 <CakeProphet> The problem isn't undefined input.
03:42:39 <CakeProphet> it's undefined output.
03:42:48 <CakeProphet> The interpreter can choose to output what it wishes.
03:43:08 <CakeProphet> which makes IRP intelligent... but not very Turing machiney.
03:43:14 <RodgerTheGreat> my point was that a more precisely defined program would at least make some progress toward predictable output
03:43:23 <RodgerTheGreat> true
03:43:25 <pikhq> IRP would benefit from gnomes that smack bad interpreters.
03:43:33 <CakeProphet> Yes.
03:44:04 <CakeProphet> or like... ops that kickban interpreters for "not adhering to the specification".
03:44:14 <RodgerTheGreat> heh
03:44:47 <RodgerTheGreat> Ah yes, the Merriam-Webster IRP spec.
03:44:50 <CakeProphet> Maybe... such interpreters just simply aren't adhering to the specification of the language.... which (should) state that output MUST be performed exactly as requested.
03:44:50 <pikhq> I've got a good idea.
03:44:53 <pikhq> #irp.
03:45:05 <CakeProphet> discussion about the irp language?
03:45:47 <CakeProphet> But is IRP truly esoteric?
03:45:56 <pikhq> No, for a controlled region where IRP may be interpreted.
03:46:26 <CakeProphet> Hmmm... I want to build a genetic programming language.
03:46:45 <CakeProphet> Are there any that I could take as an example?
03:48:08 <pikhq> Ideas for #irp policies?
03:49:20 <tokigun> how about limiting maximum depth of execution stack?
03:49:43 <CakeProphet> that's stupid.
03:49:50 <CakeProphet> our stack should be HUGE-ABLE
03:50:09 <pikhq> Send me suggestions; I'll write up an IRP#irp spec and set of policies.
03:50:36 <RodgerTheGreat> perhaps some sort of certification system to confirm the reliability of interpreter nodes
03:51:08 <pikhq> I prefer a kicking system to remove unreliable nodes.
03:51:54 -!- ihope_ has joined.
03:52:08 -!- ihope_ has changed nick to ihope.
03:54:13 * CakeProphet demands an example of a genetic/natural-selection-ish programming language.
03:55:14 <RodgerTheGreat> well, I've been working on one primarily based around self-modifying code- it's kinda the same base idea
03:57:02 <CakeProphet> hmmm.... maybe object-oriented?
03:57:16 <CakeProphet> a "species"... which is basically a class.
03:57:30 <CakeProphet> with some other base data structures.
03:57:38 <CakeProphet> hmmm... self-modifying seems interesting.
03:58:53 <CakeProphet> inheritane would be like creating a genus, phylum, etc.
03:59:34 <CakeProphet> hmm... I don't like the sound of that.
03:59:36 <CakeProphet> but.. eh.
04:00:10 <RodgerTheGreat> the approach I took was to make a command that can execute a string as a subroutine. Thus, you can treat strings as functions. Since the functions can be changed by other functions (or themselves), you have a powerful recursive programming language on your hands
04:00:20 <pikhq> Sounds like Redcode.
04:01:07 <RodgerTheGreat> redcode is essentially assembly with entirely relative addressing. And yes, it's a good language for genetic programming
04:01:26 <pikhq> And it's self-modifying.
04:02:06 <RodgerTheGreat> yeah
04:02:30 <RodgerTheGreat> redcode has a way of creating wonderfully elegant code.
04:02:35 <RodgerTheGreat> MOV 0,1
04:02:48 <RodgerTheGreat> I wonder if the imp can be considered a quine?
04:02:56 <pikhq> Not really.
04:03:15 <pikhq> The binary version could be, though.
04:06:39 <CakeProphet> oooh...
04:06:44 <CakeProphet> string functions... that's cool.
04:07:22 <CakeProphet> so like... each character reacts differently to other characters in other functions or something?
04:08:39 <RodgerTheGreat> kinda
04:11:21 <RodgerTheGreat> the basic idea is that everything is built around a stack- you push some parameters, then a reference to a function, and then do an "execute string" call. The function runs, with it's parameters sitting on the stack. If the contents of the string being used as a function is changed before it's "called" again, it may do something completely (or subtly) different
04:11:23 * CakeProphet will expand on his object-oriented idea.
04:11:43 <CakeProphet> stack-based?
04:11:50 <RodgerTheGreat> yes
04:11:56 <CakeProphet> Like how Glass does functions -nod-
04:12:14 <RodgerTheGreat> it seemed like the simplest way to make function calls.
04:12:19 <CakeProphet> oooh.
04:12:30 <CakeProphet> The function call can be altered mid-execution?
04:12:33 <RodgerTheGreat> I didn't realize that was how glass worked... heh
04:12:46 <CakeProphet> Well.. the parameters are sitting on the stack.
04:13:00 <RodgerTheGreat> well, I hadn't planned on that initially, but it's an interesting idea
04:13:05 * CakeProphet nods.
04:13:22 <RodgerTheGreat> it might make it needlessly tricky to do self-modyfying recursion, though
04:15:18 -!- ihope has quit (Connection timed out).
04:16:43 <CakeProphet> !glass {M[m(_e)I! (_o)O! (_e)i.(_o)o.?]}
04:16:57 <CakeProphet> !i 2 Lol cat
04:17:06 <CakeProphet> ... >.<
04:17:11 <CakeProphet> oooh
04:17:21 <CakeProphet> !glass {M[m(_e)I! (_o)O! (_e)i.?(_o)o.?]}
04:17:26 <CakeProphet> !i 2 Lol cat
04:17:29 <RodgerTheGreat> ?
04:17:46 <CakeProphet> should be a cat program. -.-
04:17:50 <CakeProphet> !ps
04:18:02 <CakeProphet> or... EgoBot isn't here?
04:18:18 <RodgerTheGreat> perhaps it broke again
04:18:26 <CakeProphet> How to fix??
04:18:40 <RodgerTheGreat> I could summon my bot, but it only speaks brainfuck and doublefuck.
04:19:09 <CakeProphet> Well... everything in Glass runs on a global stack... so function calls are basically the same as copying and pasting the functions code where the wall is...
04:19:34 <RodgerTheGreat> hm
04:19:39 <CakeProphet> and since the language allows you to access data based on its location on the stack... functions can access the last bits of data on the stack and manipulate them like parameters
04:20:27 <CakeProphet> It fits with the rest of the languages syntax... being postfix and all.
04:22:23 -!- ihope_ has joined.
04:22:37 * CakeProphet hits EgoBot with a hammer.
04:22:44 -!- ihope_ has changed nick to ihope.
04:22:45 <GregorR> :(
04:22:52 <RodgerTheGreat> I thought my best idea for my language was the datatype- everything is a string, and operators you'd expect to work with numbers deal with the first char in the top string. That way, everything on the stack can have the same type and you can use it for both math and function calls easily
04:23:07 <RodgerTheGreat> is egobot broken, gregor?
04:23:12 <CakeProphet> Yeah... I would have never thought of it.
04:23:16 <GregorR> Idonno, maybe? :P
04:23:27 <CakeProphet> string == function WTFerror
04:23:32 <RodgerTheGreat> heh
04:23:40 -!- EgoBot has quit (Read error: 54 (Connection reset by peer)).
04:23:41 <CakeProphet> hmmm...
04:23:44 -!- EgoBot has joined.
04:23:46 <CakeProphet> maybe linked lists as functions?
04:24:06 <CakeProphet> it would be like strings... except higher-up...
04:24:16 <GregorR> !undaemon cat
04:24:26 <RodgerTheGreat> well, my earlier idea was to represent functions as stacks of characters, but it's not functionally all that different from a string depending on how your operators work
04:24:27 <CakeProphet> instead of characters you have elements.
04:24:54 <CakeProphet> yeah... it wouldn't be that different.
04:25:27 <CakeProphet> Glass is kinda like that... since each character means something different.
04:25:33 <CakeProphet> but not -everything- is an item on a stack.
04:25:33 <GregorR> I ask you, television commercial, how do you dent your car when crashing into a tent?
04:26:01 <CakeProphet> the concept is different.
04:27:24 <CakeProphet> hmmm... I've considered doing a queue-based language... or a deque-based lanauge (which is basically a cross between a stack-based language and a queue-based language)
04:27:41 <CakeProphet> double-ended queues are essentially stack-ques.
04:27:43 <CakeProphet> queues
04:27:48 <CakeProphet> ...meh
04:28:46 <CakeProphet> set-based language as well. :D
04:28:57 <RodgerTheGreat> lol- I remember hearing stories about a CS professor that insisted "deque" was pronounced "deck"
04:29:20 <CakeProphet> I prenounce it "deek"
04:29:31 <CakeProphet> or just... don't pronounce it at all.
04:29:38 <RodgerTheGreat> it's "Dee-kyoo"
04:29:48 <CakeProphet> that's how I originally pronounced it.
04:29:53 <CakeProphet> but that's like dequeue
04:30:00 <RodgerTheGreat> exactly
04:30:44 <CakeProphet> hmmm... wonder if you could combined a set with a queue.
04:31:01 <CakeProphet> even though... the definition of a set specifically states "a collection of unordered elemenets"
04:31:24 <RodgerTheGreat> which makes storing code a bit problematic
04:31:34 <CakeProphet> hehe
04:31:49 <CakeProphet> associative-array-based language?
04:31:55 <RodgerTheGreat> ooo... how about a language based around my favorite data structure? Hashes.
04:32:03 <CakeProphet> Most popular languages can be described as a stack and a hash table of some sort.
04:32:06 <CakeProphet> ...
04:32:07 <GregorR> Suicide-note based language.
04:32:08 <RodgerTheGreat> man, we're on the same wavelength
04:32:21 <CakeProphet> hashes are pretty awesome.
04:32:32 <RodgerTheGreat> GregorR: Destructive-Execute programming? :)
04:32:35 <CakeProphet> Lua's base data-type is a hash (called a "table")
04:32:49 <CakeProphet> like cons in Lisp.
04:33:16 <CakeProphet> hmmm... it would be interesting to remove the stack from the picture... and just use -only- hash.
04:33:38 <CakeProphet> but if you did it wrong... it would just be a series of variable assignments.
04:35:21 <GregorR> Plof's only stack is a stack of hashes (the scope)
04:35:50 <CakeProphet> object oriented is something like a hash-based system.
04:36:05 <RodgerTheGreat> I was thinking about it a while back, and I think you could build a UTM out of nothing but LET statements and computed GOTOs in BASIC
04:36:20 <CakeProphet> since objects are typically just a hash with some rules for accessing a different hash when nessicary.
04:36:52 <RodgerTheGreat> of course, that idea is really a natural consequence of the Z3 turing-completeness proof
04:37:25 <RodgerTheGreat> (while-loop, variables, and the four arithmetic operators = UTM)
04:38:34 <CakeProphet> pfft...
04:38:38 <CakeProphet> while loops are so overrated.
04:38:46 <CakeProphet> and overused. >.<
04:39:43 <CakeProphet> A while loop is two ifs and a goto.
04:39:49 <RodgerTheGreat> I'm personally a fan of FOR...NEXT loops.
04:40:06 <CakeProphet> wassat?
04:40:17 <RodgerTheGreat> ...
04:40:23 <CakeProphet> Like a for loop in Python?
04:40:33 <CakeProphet> (iterators)
04:40:48 <RodgerTheGreat> for(int x=0;x<5;x++) {System.out.println(x);}
04:40:54 <RodgerTheGreat> ^ For...Next loop.
04:41:01 <CakeProphet> Ah... yeah that's a for loop in Python.
04:41:11 <CakeProphet> you're speaking to someone who's never bothered to touch C.
04:41:34 <RodgerTheGreat> 10 FOR X = 0 TO 4 STEP 1: PRINT X: NEXT X
04:41:40 <RodgerTheGreat> screw C
04:41:41 <CakeProphet> O.o
04:41:51 <CakeProphet> Indeed.
04:41:53 <RodgerTheGreat> I use BASIC, PHP and Java to do my dirty work
04:41:54 * CakeProphet doesn't like C.
04:42:10 <RodgerTheGreat> and I'm starting to warm up to Perl
04:42:12 <CakeProphet> Python... and... well just Python. But I also do a litle Scheme.
04:42:17 <CakeProphet> Perl is kinda cool.
04:42:36 <RodgerTheGreat> I only really dislike 3 languages: C, C++, and Ruby.
04:42:40 <CakeProphet> I haven't used it much... but I like the design concept... if a little unpredictable.
04:42:54 <RodgerTheGreat> C and C++ are inelegant, and Ruby is just a monstrosity
04:43:01 <CakeProphet> C, C++ here
04:43:11 <CakeProphet> Ruby looks kinda cool... but I've never used it or looked into it much.
04:43:48 <CakeProphet> C is one of those languages that sacrifices for the machine.
04:43:58 <RodgerTheGreat> it's painful... Imagine an unholy mix of Javascript, Perl, and a little bit of BF.
04:44:00 <CakeProphet> which is partly why it's so common... because it's at the base of every OS.
04:44:24 <CakeProphet> hmmm... Ruby does look a little like a weird syntaxed version of Python and Perl.
04:44:36 * CakeProphet is, naturally, a fan of Python.
04:45:06 <RodgerTheGreat> it's reasonably powerful, but it's syntax is all over the place. It's like it was designed by three people independently and then superglued together
04:45:21 <CakeProphet> Not because of any grand design concept... or because it does a paticular thing well... it's just -really- easy to work with and generally does what you think it would do.
04:45:44 <RodgerTheGreat> I haven't used python much, but it's syntax for working with strings is fucking brilliant
04:45:56 <CakeProphet> Which part?
04:46:06 <CakeProphet> interpolation?
04:46:15 <RodgerTheGreat> the way you access substrings or specific characters
04:46:21 <CakeProphet> slicing?
04:46:31 <CakeProphet> "Hello World!"[0] ?
04:46:33 <RodgerTheGreat> is that what it's called?
04:46:48 <CakeProphet> That would be "H"
04:46:51 <RodgerTheGreat> yes
04:47:10 <CakeProphet> Yeah... that's called slicing or indexing... it's basically like arrays.
04:47:20 <CakeProphet> Same exact thing... actually.
04:48:14 <RodgerTheGreat> I'd say my favorite language will probably always be BASIC, because of how it combines extremely friendly syntax and ease of use with ridiculous levels of power via PEEK(), POKE and CALL
04:48:38 <CakeProphet> I've never used basic... but it doesn't seem popular.
04:48:54 <CakeProphet> I remember it doing some weird context-based stuff with =
04:49:07 <RodgerTheGreat> plus, if you're fluent in BASIC you can instantly do cool things with any old machine from the 80's
04:49:20 <CakeProphet> which is a good idea for beginners.. but not too well for my tastes.
04:49:32 <CakeProphet> Python kinda reminds me of Lisp... in some ways.
04:49:54 <RodgerTheGreat> = is used for both assignment and comparison in BASIC, but the way it's used almost never leads to problems
04:50:29 <CakeProphet> Yeah... but then you can't do things like x = y == 2 (which, honestly... isn't very useful... but it's still nice to have the freedom)
04:50:45 <RodgerTheGreat> essentially, it solves the problem by making assignment done not by the = operator itself, but the LET statement
04:51:16 <CakeProphet> LET x = 2?
04:51:28 <CakeProphet> aaah.
04:51:34 <RodgerTheGreat> x=y=2 in BASIC generally does the same as x=y==2 in other languages
04:51:52 <CakeProphet> thought more ambiguous when you read it.
04:52:08 <RodgerTheGreat> LET is an interesting command, because it's usually implied. If a line doesn't contain a command, it's assumed to be prefixed with LET.
04:52:19 <CakeProphet> O.o
04:52:25 <CakeProphet> Weird.
04:52:38 <RodgerTheGreat> so, "10 LET x=y=2" is the same as "10 x=y=2"
04:53:11 <CakeProphet> Python's main design goal seems to be readability and ease of use.
04:53:19 <RodgerTheGreat> and both will store a boolean value (1 or 0, in BASIC's representation) representing wether y is equal to 2 or not to the variable x
04:54:03 <RodgerTheGreat> BASIC's main design goal is minimal memory use and the ability to function as both an interpreter and a rudimentary OS, much like FORTH
04:54:36 <RodgerTheGreat> there are a number of BASIC implementations that fit in less than 4k of ROM.
04:54:36 <CakeProphet> Python is OO at heart... but it has this weird conflicting idea of multi-paradigmism.
04:55:04 <CakeProphet> I've seen both "Python is an object-oriented language" and "Python supports multiple paradigms" as arguments for why something should be implemented into it.
04:55:40 <RodgerTheGreat> hm
04:55:50 <CakeProphet> It basically works with multiple paradigms... while being object-oriented at the core.
04:56:22 <CakeProphet> ...which... isn't really what I would call being multi-paradigmed.
04:57:15 <CakeProphet> BASIC sounds interesting... not sure if I'd like using it though. Might be cool.
04:57:24 <CakeProphet> Doesn't it use sigils like Perl?
04:57:46 <RodgerTheGreat> do you have a device that runs PalmOS?
04:57:54 <CakeProphet> Nope.
04:58:01 <RodgerTheGreat> damn.
04:58:07 <CakeProphet> Python seems tons more consistent than what I've seen of C.
04:58:11 <CakeProphet> C makes absolutely no sense to me at all.
04:58:16 <RodgerTheGreat> Cbaspad, one of my favorite BASIC implementations runs on PalmOS.
04:58:44 <RodgerTheGreat> My other favorite, DarkBASIC, I can't really play with anymore because it's windows-based.
04:58:57 <CakeProphet> C's semantics seems to change upon context...
04:59:09 <CakeProphet> in a really weird way.
04:59:11 <RodgerTheGreat> SmallBASIC is pretty nice- it runs on PalmOS, windows, and Linux.
05:00:01 <RodgerTheGreat> C just bugs me because it's obvious it was written by and for compiler writers, rather than as a clear or interesting way of expressing algorithms.
05:00:03 <CakeProphet> Like... function definitions are just... floating out in space with nothing defining them as such... and type declarations are kind of screwy and have different functions based on what other types are beig used.
05:00:36 <CakeProphet> yeah... its design goal is totally different than what it's being applied to.
05:01:29 <RodgerTheGreat> which really frustrates me when I've been exposed to so many languages that are better designed.
05:01:38 <CakeProphet> C's static typing also bugs me... but then again my first dive into programming was from within the comfort of a dynamically typed language.
05:02:26 <RodgerTheGreat> C maintains dominance in a circular fashion- applications are written in C because C is used to code other applications. Plus, it doesn't have a huge number of direct competitors.
05:02:52 * CakeProphet nods.
05:03:15 <CakeProphet> Makes me wish there was some other language that was really good at being a "base language" that didn't suck quite so much.
05:03:40 <RodgerTheGreat> BASIC is weak-typed, but Java has taught me the structural value of strong-typing. I still really enjoy weak-typing when I'm doing simpler tasks in a language like PHP
05:03:47 <CakeProphet> There's some OS project being worked on with most of the source being in a Python implementation.
05:04:19 <CakeProphet> it's a pretty interesting concept... orthagonal persistency and a weird memory layout.
05:04:38 <CakeProphet> http://en.wikipedia.org/wiki/Unununium_%28operating_system%29
05:05:13 <RodgerTheGreat> CakeProphet: well, I've been slowly working on a project to try to build an operating system, and that's pretty much what I thought, so I'm researching modern compiler design. Hopefully, I can come up with something that combines the positive aspects of C with the design of better structured languages.
05:06:06 <CakeProphet> hehe... an esoteric operating system?
05:06:22 <RodgerTheGreat> possibly.
05:06:31 * CakeProphet will be your Python codemonkey.
05:06:58 <RodgerTheGreat> although, I hope that it will one day become something on par with commercial OSes and the offerings of the open-source community.
05:08:55 <CakeProphet> hmmm.. orthogonal persistence is a neat idea.
05:09:21 <CakeProphet> uuu initializes the entire hard disk into the virtual memory... and manages it so that any changes to the virtual memory as saved to the hard disk.
05:09:28 <RodgerTheGreat> I agree- Uuu has some fascinating ideas behind it.
05:10:18 <CakeProphet> it makes sense... why the hell are we required to use databases and persistence libraries to do something that could be handled by the OS?
05:14:13 <RodgerTheGreat> you're talking to the person that thinks a kernel should consist primarily of a memory manager and an interpreter for a language that can serve in an interactive mode as a shell. :)
05:14:30 <CakeProphet> :D
05:14:46 <CakeProphet> I like the way uu did time.
05:14:54 <CakeProphet> solves the whole time problem.
05:16:11 <RodgerTheGreat> heh- yeah, it works pretty well
05:17:56 -!- digital_me has quit ("night").
05:20:45 * CakeProphet considers helping out uuu.
05:21:48 <CakeProphet> RodgerTheGreat, I'd love to do some crazy OS stuff... besides my totally lack of knowledge on how OSes are developed.
05:22:09 <CakeProphet> But... I'm sure there's new ways it could be done... so eh.
05:24:53 -!- wooby has joined.
05:25:15 <RodgerTheGreat> operating system development is the grandest challenge out there in the world of commercial software development- if I'm going to do anything in the industry, that's what I want to build.
05:25:29 <CakeProphet> ...except a lot of the developers seem like total assholes.
05:25:36 <RodgerTheGreat> well, yes.
05:25:41 <CakeProphet> Nothing annoys me more than grumpy coders.
05:25:49 <CakeProphet> which are strangely common.
05:25:57 <wooby> lol yes
05:26:04 <wooby> oh man OS dev is such a boondoggle
05:26:22 <RodgerTheGreat> yeah, it generally happens when coders find themselves having to do administrative things.
05:26:27 <CakeProphet> Well... I'm a reckless and overconfident n00b... so I'm up for it.
05:26:35 <RodgerTheGreat> boondoggle is an excellent word.
05:26:45 <wooby> indeed
05:27:07 <RodgerTheGreat> well, I think I need to get some sleep. G'night, guys.
05:27:24 <wooby> goodnight
05:27:44 -!- RodgerTheGreat has quit.
05:29:18 <wooby> what is new and good in the world of esoteric programming technology
05:29:30 <CakeProphet> >.>
05:29:53 <CakeProphet> I've got some ideas for a genetic-ish object-oriented programming language?
05:30:01 <wooby> sounds awesome
05:30:03 <wooby> what are your thoughts?
05:30:05 -!- ihope_ has joined.
05:30:10 <CakeProphet> possibly queue-based... or maybe double-ended-queue-based.
05:30:19 <CakeProphet> or some other crazy-data-structure-based
05:30:25 <wooby> i don't know much about genetic algorithms outside the few dewdney examples from however long ago
05:30:33 <CakeProphet> me neither :P
05:30:39 <wooby> lol
05:30:55 <CakeProphet> But I know the basic concept of natural selection... which is basically all you need.
05:31:03 <wooby> well yes
05:31:08 <wooby> my hunch is that it's like neural networks
05:31:26 <wooby> perhaps not
05:31:37 <CakeProphet> there was an idea tossed around briefly yesterday about a "spiderweb language" that worked kinda like a network of inter-related parts.
05:31:39 <wooby> well i'd imagine you'd need an algorithm that changed some property of whatever data structure you came up with
05:32:26 <wooby> hm
05:32:30 <CakeProphet> well..
05:32:45 <wooby> have you ever thought of the idea of like
05:32:49 <wooby> a massive human powered computer?
05:33:00 <wooby> like individuals doing operations and timing is done with music or something
05:33:05 <CakeProphet> A computer that eats humans?
05:33:12 <wooby> lol no
05:33:29 <wooby> anyways just a brainfart of mine
05:33:33 <CakeProphet> Sounds slow, cumbersome, inhumane, and inefficient.
05:33:35 <wooby> a programming language that simulated the design of such a thing
05:33:38 <wooby> indeed it would be
05:33:50 <CakeProphet> ooogh
05:34:50 <wooby> but yes
05:34:53 <wooby> on genetic algorithms
05:34:55 <wooby> i know nussing
05:35:15 <CakeProphet> (This is Bob) picks up (this is block-Sue)/(This is Steve) gets Sue from Bob with (this is a hammer-Kim)
05:35:52 <CakeProphet> a huge people metaphor.
05:38:06 <CakeProphet> We should band the entire esolang crowd together to make an esoteric operating system.
05:38:32 <CakeProphet> oh my... but what would the base language be?
05:38:40 <CakeProphet> BF isn't powerful enough...
05:39:01 <wooby> it could be
05:39:06 <wooby> what about a fullblown BF machine
05:39:18 <wooby> then an OS written in basic :)
05:44:16 <CakeProphet> ....
05:44:26 <CakeProphet> writing a whole OS in BF would be mind-boggling.
05:44:36 <CakeProphet> Maybe a combination of a bunch of languages...
05:44:53 <CakeProphet> esoteric languages are all fairly small.
05:46:49 -!- ihope has quit (Connection timed out).
05:48:35 <CakeProphet> Sure... we could put the whole lot of them into the OS... and somehow make the whole thing cohesive.
05:50:37 <wooby> it has potential
05:51:02 <GregorR> Yes yes, everybody's discussed this possibility.
05:52:11 <CakeProphet> So let's do it. ^.^
05:52:33 <GregorR> Fine fine, carry on.
06:00:36 <CakeProphet> ..
06:00:53 <CakeProphet> Where should we start?
06:00:58 <CakeProphet> Perhaps informing everyone?
06:01:45 <CakeProphet> I think the base languages should be BF, Befunge, Glass, and a bunch of otherones I can't think of right now.
06:03:11 <GregorR> I think you should start with a good idea, like EsoOS or, oh, EsoOS, or that other EsoOS, or EsoAPI or PEsoIX, or ...
06:03:25 <wooby> esOS?
06:06:42 <CakeProphet> esoos :D
06:07:08 <CakeProphet> We could bring it up on the Wiki... and decide a name there?
06:07:31 <wooby> that could be a good start
06:07:37 <CakeProphet> hmmm...
06:07:49 <CakeProphet> We could use a more modular version of BF.
06:07:53 <CakeProphet> I considered the idea myself.
06:07:59 <CakeProphet> Like a functional BF...
06:08:46 <CakeProphet> hehe... and we can ditch a filesystem... and the whole desktop metaphor.
06:13:22 <CakeProphet> hahaha... the entire OS could be a stack.
06:13:26 <CakeProphet> a stack-based OS.
06:15:26 <CakeProphet> OH
06:16:10 <CakeProphet> it could be represented as a infinite 2d grid... like befunge.
06:23:20 -!- cmeme has quit (Remote closed the connection).
06:23:36 -!- cmeme has joined.
06:24:03 <CakeProphet> hola
06:28:58 * GregorR hits his head against a wall.
06:30:23 <CakeProphet> hmmm?
06:38:35 -!- ihope_ has quit (Connection timed out).
06:45:45 -!- oerjan has joined.
06:48:09 <CakeProphet> http://esolangs.org/wiki/Esoteric_Operating_System
06:51:04 <oerjan> cakeprophet: did you notice my comment that the A class in Glass seems to be broken?
06:52:06 <CakeProphet> hmmm...
06:52:11 <CakeProphet> Nope.
06:52:48 <oerjan> the programs hang on the . lookup command.
06:53:08 <oerjan> at least they did yesterday.
06:53:17 <CakeProphet> !glass {M[m(_a)A!(_o)O! <2><2>(_a)a.?(_o)o.?]}
06:53:25 <CakeProphet> oh wait... I think EgoBot is ded.
06:53:28 <oerjan> !ps
06:53:32 <EgoBot> 1 oerjan: ps
06:53:35 <oerjan> nope
06:53:35 <CakeProphet> ....
06:54:19 <CakeProphet> Someone should fix it before we implement Glass into our operating system. ;)
06:54:21 <oerjan> !glass {M[m(_a)A!(_o)O! <2><2>(_a)a.?(_o)(on).?]}
06:54:39 <CakeProphet> oh... yeah
06:54:49 <oerjan> !glass {M[m(_a)A!(_o)O! <2>(_o)(on).?]}
06:54:51 <CakeProphet> Why must the output be split by type? >.<
06:54:52 <EgoBot> 2
06:55:34 <CakeProphet> The OS will need a universal system for retrieving data from various programs.
06:55:39 <oerjan> because Glass is not supposed to be easy :)
06:56:06 <CakeProphet> and I think we should ditch the desktop metaphor... and the filesystem.
06:56:59 <CakeProphet> Glass isn't all that hard once you get used to it.
06:57:03 <CakeProphet> which takes about a day.
07:40:47 <CakeProphet> Weird...
07:40:58 <CakeProphet> My very first BF interpreter....
07:41:09 <CakeProphet> and the Hello World program from the esolang wiki only prints out "Hello"
07:42:18 <oerjan> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
07:42:19 <EgoBot> Hello
07:42:41 <oerjan> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
07:42:45 <EgoBot> Hello World!
07:43:05 <oerjan> whoops. you didn't happen to copy only the first line, too? :)
07:43:36 <CakeProphet> hmmm... possibly.
07:43:46 <oerjan> or perhaps your interpreter breaks when encountering the newline
07:44:26 <CakeProphet> Don't see why it would.
07:44:47 <oerjan> if you don't ignore non-command characters properly, say
07:44:52 <CakeProphet> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
07:44:54 <CakeProphet> <.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
07:44:55 <EgoBot> Hello
07:45:21 <CakeProphet> That's exactly what I put into my interpreter.
07:45:48 <oerjan> so it seems likely that it breaks at the newline in the program, then.
07:46:24 <oerjan> either because you don't ignore non-command characters, or because the interpreter only reads one line of input.
07:46:27 <CakeProphet> EgoBot did the same thing...
07:46:52 * CakeProphet points above.
07:47:15 <oerjan> that's because EgoBot parses only one single line, which it pretty much has to do on IRC.
07:47:35 <CakeProphet> oh... yeah I forgot to get rid of the newline.
07:48:30 <wooby> !bf ++++++++[>+++++++++<-]>.<++++[>+++++++<-]>+.<++[>+++<-]>+..+++.++++[>++++++++<-]>.<+++++[>++++++++++<-]>+++++.<<.+++.------.<+++[>---<-]>+.
07:48:32 <EgoBot> Hello
07:48:34 <CakeProphet> As far as I can tell... it ignores them completely.
07:48:34 <wooby> woops
07:49:23 <oerjan> what happens in your interpreter if you replace the newline with a space?
07:49:23 <CakeProphet> http://deadbeefbabe.org/paste/3085
07:49:38 <CakeProphet> ...nothing?
07:49:49 <CakeProphet> oh... what happens?
07:49:55 <CakeProphet> heh, lemme check.
07:51:41 <CakeProphet> now it just hangs and does nothing...
07:52:34 * CakeProphet figures out the problem with some breadcrumbing.
07:53:59 <oerjan> you mean you solved it?
07:54:26 <CakeProphet> no.
07:54:34 <CakeProphet> hmmm...
07:54:42 <CakeProphet> it seems to have faulty while loop parsing.
07:55:23 <oerjan> but then why would it get Hello right?
07:56:17 <CakeProphet> dunno..
07:56:30 <CakeProphet> I made some changes to the source inbetween runs when I noticed a bug.
07:56:34 <CakeProphet> could have messed something up.
07:56:41 -!- ivan`_ has joined.
07:56:56 <CakeProphet> Here;s the soure again... with a test run at the bottom
07:56:57 <CakeProphet> http://deadbeefbabe.org/paste/3085
07:57:09 <CakeProphet> The long line of commands is the symbol the interpreter was interpreting.
07:57:29 <CakeProphet> It seems to go on forever on the while loop.
07:57:54 <oerjan> there is something wrong with [, anyhow - it never skips the first iteration
07:58:09 <CakeProphet> Right.
07:59:14 <oerjan> which it cannot because of the way parse is called - you cannot escape from the "for char in toparse:" in parsecode. that must be changed.
07:59:56 -!- wooby has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:16 <oerjan> anyhow this problem cannot be why the Hello World doesn't work.
08:04:08 <CakeProphet> it doesn't need to escape.
08:04:39 <CakeProphet> parsecode() calls parse() on each character in toparse
08:04:58 <oerjan> yes it does, because a loop shall not be executed at all if the cell is 0 on the first try.
08:05:40 <CakeProphet> oooh.
08:06:27 <oerjan> may i suggest something like "while self.pos < length(self.code):"
08:06:40 <oerjan> and then you make [ and ] adjust self.pos.
08:08:05 <CakeProphet> I've got a spiffier and more elavorate solution.
08:08:18 <oerjan> good :)
08:08:48 <CakeProphet> Using a coroutine. :D
08:08:56 <CakeProphet> Which is something I've yet to have a chance to use.
08:14:15 -!- ivan` has quit (Connection timed out).
08:14:16 -!- ivan`_ has changed nick to ivan`.
08:21:41 <CakeProphet> hmmm
08:21:53 <CakeProphet> oerjan, Not sure how to reliable tell where a ['s corresponding ] is.
08:22:08 <CakeProphet> hmmm... oh wait.
08:22:11 * CakeProphet facepalms.
08:24:06 <oerjan> got problems?
08:24:56 <CakeProphet> hmmm... just parsing problems.
08:25:32 <CakeProphet> Given the sequential order of parsing... I'm not sure how to reliably find the right ] to jump to.
08:28:54 <oerjan> the elegant solution is to have a separate parsing and execution stage
08:29:22 <oerjan> wait - another method.
08:29:57 <oerjan> have a flag that tells whether you are skipping or executing.
08:30:10 <CakeProphet> I considered that.
08:30:24 <CakeProphet> I don't really like it... but.. eh
08:31:20 <oerjan> you basically have to do _some_ non-executing parse at some step.
08:32:03 <CakeProphet> But then...
08:32:12 <CakeProphet> The problem with that is nested []'s
08:32:44 <CakeProphet> If I tell it to... upon always finding "]"... change the "amparsing" flag to True.
08:33:11 <oerjan> no, you should use recursion for [] like with ordinary execution.
08:33:58 <oerjan> the flag should be a method parameter, not an object property.
08:35:11 <oerjan> it needs to be combined with the self.pos adjusting approach.
08:44:04 <CakeProphet> heh... I did some funky stuff to get it to work right.
08:44:24 <CakeProphet> ...provided it works right.
08:44:33 <oerjan> btw the same advice i just posted to Sphen lee on the wiki applies to you too:
08:44:57 <oerjan> "It requires infinite lookahead/backtracking if you compile in the same step as parsing, but that works only for the simplest languages anyhow. Instead parse into an AST, then compile that. Much more flexible."
08:45:46 <CakeProphet> .....you want me to compile the AST of BRAINFUCK?
08:46:09 <oerjan> it is much simpler to handle loops if you reify them first...
08:46:42 <oerjan> well, compilation or interpretation, i was just quoting myself. :)
08:47:07 <CakeProphet> I really haven't figured out the difference.
08:47:26 <CakeProphet> They both involving parsing to a more machine-readable set of opcodes.
08:48:56 <oerjan> but getting the AST (before either compiling or interpreting it) is about getting the essential structure of your program, so you don't have to go do complicated text searches.
08:55:18 <CakeProphet> Either way... you're going to need to do some text searching to get the AST
08:55:21 <oerjan> brainfuck has very little structure (only loops), but it is still that structure that is giving you problems.
08:55:43 <oerjan> well, i meant back-and-forth searching.
08:55:59 <CakeProphet> How would I represent -single character commands- any more clearly with an AST?
08:56:41 <oerjan> yeah, needing more than just strings for those _is_ a bit annoying.
08:57:37 <CakeProphet> No I mean.
08:57:46 <CakeProphet> AST wouldn't help parse the syntax... because it's so simple to parse.
08:57:49 <CakeProphet> it's little just opcodes.
08:57:53 <CakeProphet> literally.
08:58:51 <oerjan> ok, i got another idea.
08:59:40 <oerjan> instead of a whole AST, use an initial parse to build a lookup table between matching []'s.
09:00:26 <CakeProphet> Well... I'm sort of just using attributes to keep track of how the execution is going.
09:00:37 <CakeProphet> it's not quite as fancy... but it gets the job done.
09:01:05 <CakeProphet> Plus I'm not sure how to... do that.
09:01:49 <oerjan> i may be spoiled by Haskell, which makes ASTs so easy...
09:02:32 <GregorR> Just use exclusively EgoBF and you'll be fine.
09:02:53 <oerjan> gregorR: seen my comment on the Glass A class bug?
09:04:40 <CakeProphet> Well... I was going to build a BF interpreter so I could subclass it and work on a functional BF I've been thinking of.
09:05:25 <oerjan> cakeprophet: do you have a paste of your updated interpreter? (and BTW does Hello World work now?)
09:05:49 <CakeProphet> Eh I'm still working on it.
09:05:56 <oerjan> ok
09:06:04 <oerjan> !glass
09:06:07 <EgoBot> OK
09:08:55 <CakeProphet> hmm..
09:09:35 <CakeProphet> My functional BF was going to have two pointers... and have a way to split BF programs into subroutines.
09:09:49 <CakeProphet> . would become a return statement of sorts.
09:10:12 <CakeProphet> and , would be function input.
09:10:54 <oerjan> do you mean function call?
09:10:57 <CakeProphet> but.... I'm not sure how useful a one-character return value would be. :/
09:11:08 <CakeProphet> no.. I mean , would represent whatever the functions input was.
09:11:20 <CakeProphet> parameters.
09:11:55 <CakeProphet> eh.. I'm still working it out.
09:12:30 <CakeProphet> A BF program would be a "pile" of subroutines.
09:12:35 <oerjan> perhaps you could put parameters on the tape instead.
09:12:37 <CakeProphet> like a two-dimensional array.
09:13:20 <CakeProphet> Well... I thought , would give the function more control over where the parameters ended up.
09:13:30 <CakeProphet> plus it fits nicely with the current syntax.
09:13:59 <CakeProphet> A @ command would switch your "current" pointer to the other one.
09:15:12 <CakeProphet> and & would call the subroutine that the "other" pointer is pointing to... using the "current" pointers cell as input.
09:15:58 <oerjan> so the tape would contain subroutines?
09:16:10 <CakeProphet> eh... it would be like a tape of tapes.
09:16:40 <CakeProphet> with a subroutine pointer and a multiple array pointers.
09:16:45 <oerjan> but a subroutine is code, so you would need to put code on the tapes, or at least code pointers.
09:16:56 <CakeProphet> right.
09:17:05 <CakeProphet> a tape of tapes... a tape of subroutines... which are all tapes.
09:17:33 <oerjan> reflective then, if you could access the source code directly?
09:18:24 <CakeProphet> The subroutine pointer just points to the subroutine that will be called when you do a &... not sure if that makes it reflective or not.
09:18:46 <CakeProphet> I guess it would be interesting to make it reflective like you said... sounds kinda neat.
09:19:00 <CakeProphet> but I'll have to change how it references other subroutines to do calls.
09:19:19 <GregorR> !glass {M[m(_o)O!(_a)A!<2><2>(_a)a.?(_o)(on).?]}
09:19:40 <GregorR> !glass {M[m(_o)O!(_a)A!<60><5>(_a)a.?(_o)(on).?]}
09:19:49 <oerjan> EgoBot, you are _so_ borken :)
09:19:55 <GregorR> !ps
09:19:58 <EgoBot> 1 GregorR: ps
09:20:05 <GregorR> !glass {M[m(_o)O!(_a)A!<60><5>(_a)a.?(_o)(on).?"foo"(_o)o.?]}
09:20:06 <CakeProphet> hmmm...
09:20:12 <CakeProphet> aah... I see what you mean.
09:20:26 <GregorR> I'll look at it tomorrow, I have to sleep.
09:20:44 <oerjan> well good night to you.
09:20:45 <CakeProphet> I was sorta just thinking the code would just be normal brainfuck programs with some delimiter between them... but having it like a tape of tapes is cool.
09:21:36 <CakeProphet> There could be two pointers on the big pointer... a subroutine pointer and a call pointer.
09:22:12 <CakeProphet> the subroutine pointer points to whatever subroutine you're "editing"... and the call pointer points to the subroutine you'll call via the & command.
09:23:17 <CakeProphet> so then... & by definition would temporarily move the subroutine pointer to the call pointer.
09:23:28 <CakeProphet> or something...
09:23:32 <CakeProphet> damn that's confusing.
09:25:18 <CakeProphet> OH
09:25:37 <CakeProphet> @ would swap the rolls of the "big" pointers.
09:26:05 <CakeProphet> current-tape pointer would swap places with function-to-call pointer.
09:26:44 <CakeProphet> er... wait.
09:27:41 <CakeProphet> damnit I'm confused.
09:30:25 <CakeProphet> I think it would make more sense to just simply do &(subroutiine reference name)
09:30:34 <CakeProphet> and be done with it :P
09:32:29 <oerjan> well, otherwise you need at least one tape whose contents represent points in the code
09:32:42 <oerjan> although that could be done in many ways.
09:33:12 <oerjan> *contents or positions
09:34:09 <CakeProphet> Having the subroutines on a tape would be the more BF-ish of the two.
09:34:30 <CakeProphet> but... it makes BF infinitely more useful if it had subroutine reference names.
09:35:34 <CakeProphet> heh... it would be kind of postfix notation.
09:36:08 <CakeProphet> generally subroutines would manipulate the contents of the array behind them... if there are more than one manipulated cells.
09:36:15 <CakeProphet> Like an add function.
09:37:06 <oerjan> just behind them?
09:37:11 <CakeProphet> +>+++>&(add)
09:37:21 <CakeProphet> would dump 4 into the third cell.
09:37:40 <CakeProphet> there would need to be some sort of "protocol" for subroutines to follow if they intended to be re-used.
09:37:59 <CakeProphet> it would be awkward in typical BF code for calls to occur before their data.
09:38:31 <CakeProphet> by "before" I mean spatially before.
09:38:44 <CakeProphet> >>+>+++<<&(add)
09:38:46 <CakeProphet> just doesn't seem right.
09:39:18 <CakeProphet> but then again... I've been doing a lot of Glass lately.
09:39:33 <CakeProphet> so maybe all that reversed subroutine calling has been fucking up my conceptualization :P
09:40:39 <CakeProphet> (in truth... Glasses subroutine calls are more accurately displated than in standard languages)
09:41:25 <CakeProphet> arguments are always evaluated and pushed to the stack before their subroutine calls are.
09:52:59 <oerjan> well, not always in Haskell :)
09:53:50 <CakeProphet> ....how?
09:55:31 <oerjan> Haskell is a lazy language, so arguments may not be evaluated until they are actually used by the subroutine.
09:56:07 -!- ivan`_ has joined.
10:13:44 -!- ivan` has quit (Read error: 110 (Connection timed out)).
10:13:44 -!- ivan`_ has changed nick to ivan`.
10:22:56 -!- okokoko has changed nick to oklopol.
11:12:19 <oklopol> good use for the start of the day
11:12:36 <oklopol> read everything talked in the 11 hours i slep
11:12:37 <oklopol> *t
11:50:53 * oerjan is in nearly complete agreement.
11:56:01 <oklopol> not just here, i'm on over 50 channels :)
11:56:20 <oklopol> (k i didn't read EVERY channel, but many)
11:56:28 * oerjan is no longer in nearly complete agreement :)
11:57:03 <oerjan> i couldn't even read that fast.
11:57:49 <oklopol> i thought i might learn writing binary fast in ascii today so i'm making a stepmania with ones and zeroes
11:58:28 <oklopol> i didn't read every <someone> !glass (stuph...) <same someone> DARNFUCK!
12:00:53 <oerjan> i do _not_ believe i used the f word.
12:02:40 <oklopol> you might not have, i don't think darnfuck is a word
12:03:05 <oklopol> i mean, i didn't read code that is indicated incorrect on the next line
12:03:49 <oerjan> actually some of that wasn't the _code_ being incorrect, but rather a bug in the interpreter.
12:04:11 <oklopol> i know, A
12:04:59 <oklopol> but anyways, i meant no use reading code when it's being further developed
12:05:09 <oklopol> (not generally, but in oneliners)
12:38:10 -!- jix_ has joined.
12:53:03 -!- oerjan has quit ("Up, up, and away").
13:09:32 -!- ihope_ has joined.
13:09:47 -!- ihope_ has changed nick to ihope.
14:20:20 -!- anonfunc has quit.
14:44:02 <oklopol> how does the thing work in freenode, if i should flood 500 lines of ososososososososososo here, would one of you get ops out of no where and kickban me?
14:44:09 <oklopol> and no, i'm not gonna try
14:49:01 <oklopol> then another mindboggler, can i make a regexp that... solved it but gonna say this anyway, it seems
15:32:39 -!- tgwizard has joined.
15:54:44 -!- pgimeno has quit ("reboot").
15:59:34 -!- pgimeno has joined.
16:11:37 -!- RodgerTheGreat has joined.
16:11:46 * RodgerTheGreat waves
16:16:07 <RodgerTheGreat> I was looking at yesterday's logs- an OS written in BASIC would be fascinating
16:30:35 -!- Sph1nx has joined.
16:33:21 -!- Asztal has joined.
16:54:42 -!- Sph1nx has quit (" !").
16:56:03 -!- Aardwolf has joined.
17:09:18 <CakeProphet> RodgerTheGreat, but but
17:10:17 <CakeProphet> http://esolangs.org/wiki/Esoteric_Operating_System
17:13:54 <Asztal> I would love to code shell scripts in befunge... well, I guess I already can
17:14:42 <SimonRC> sigh
17:14:53 <SimonRC> darn weather
17:15:33 -!- oerjan has joined.
17:16:12 <CakeProphet> If we had some hardware nerds we could even design our own assembly language. :D
17:16:37 * SimonRC indicates the INTERCAL microprocessor.
17:16:51 <CakeProphet> hahaha
17:24:48 * SimonRC considers the similarities between unununium and Smalltalk.
17:25:45 <SimonRC> The main one, AFAICT, is that Unununium's meta-object protocol is crapper.
17:25:59 <Asztal> OISC?
17:31:06 <SimonRC> I am suprised that one hasn't been implemented.
17:31:35 <SimonRC> You could get 3Ginstr/sec per core if it was
17:32:11 <oklopol> what hasn't been implemented?
17:32:26 <SimonRC> OISC
17:36:50 * Asztal wonders, on average, the ratio of OISC instructions per x86 instruction in a typical program ;)
17:37:15 <oklopol> you mean there is no physical implementation of an oisc?
17:37:58 <SimonRC> I think so
17:38:22 <SimonRC> c'mon, people don't do that much multiplication.
17:38:26 <oklopol> because for example the computer made in wireworld is an oisc
17:39:03 <CakeProphet> http://en.wikipedia.org/wiki/Oisc
17:39:05 <CakeProphet> oh yeah!
17:39:10 <CakeProphet> wireworld... that was crazy.
17:39:14 <CakeProphet> oisc is a KING OF KENT
17:39:20 * SimonRC reads the story of virtudyne on the front page of The Daily WTF. Absolutely amazing story.
17:39:25 <SimonRC> CakeProphet: heh
17:41:06 <CakeProphet> If you had a wireworld simulator... you could build a virtual computer.
17:41:42 <CakeProphet> but I guess it's not too surprirsing... the similarities between wireworld and actual electrical witing are very close.
17:42:00 <oklopol> did you see my paste?
17:42:09 <oklopol> i pasted one here
17:42:22 <oklopol> i mean, a link to it, not the code
17:42:48 <Asztal> Can floating point arithmetic actually be done in OISC?
17:43:21 <CakeProphet> oklopol, no
17:43:28 * Asztal can't see a way that wouldn't be horribly long-winded
17:43:32 <CakeProphet> Asztal, I'm sure it's possible... just don't know how easy it would be.
17:43:47 <Asztal> I'm sure bitwise operations are terribly useful there
17:43:53 <CakeProphet> You could represent it with two integers possibly...
17:44:24 <Asztal> true, that would be a lot easier
17:44:24 <oklopol> i lost all my logs, been running two mircs, they overwrite each others logs
17:44:39 <oklopol> so i can't find it anymoew
17:44:40 <oklopol> *re
17:44:42 <CakeProphet> in Python a floating point is implemented by a double in C. :D
17:45:45 <Asztal> still, I wouldn't want to be the person who has to write the logarithm function :)
17:46:29 <CakeProphet> ...yeah
17:46:44 <pikhq> Asztal: It's assuredly possible.
17:46:48 <pikhq> Just a bitch.
17:49:53 <pikhq> oklopol: It's a MOV machine. :)
17:50:16 <oklopol> not an oisc?
17:50:28 <pikhq> It's an OISC. . .
17:50:37 <pikhq> Just describing the specific type of OISC.
17:50:43 <pikhq> It's one instruction is MOV.
17:50:58 <pikhq> Special registers allow for one to get use out of that.
17:52:04 <oklopol> pikhq, i know how it works, so i didn't know why you told me that
17:52:50 <pikhq> I don't know, either.
17:52:59 <pikhq> Coffee hasn't hit the bloodstream yet.
17:53:29 <oklopol> poor you :(
17:54:40 <CakeProphet> http://www.quinapalus.com/wi-index.html
17:55:14 <CakeProphet> That one uses only one instruction set... but all the different registers react differently to it.
17:58:01 <SimonRC> actually, there is a wireworld computer around somewhere.
17:58:08 <SimonRC> It has 64 6-bit registers
17:58:20 <SimonRC> OST, 12-bit
17:59:06 <SimonRC> It can be found containing a program to calculate prime numbers.
17:59:31 <CakeProphet> ^
17:59:42 <CakeProphet> Pretty sure that was it.
17:59:57 -!- ihope has quit (Connection timed out).
18:00:47 <pikhq> SimonRC: We were *talking* about that computer. -_-'
18:02:20 <SimonRC> ah, I thought you were talking about one of the OISC machines.
18:02:50 <SimonRC> Though he ww computer is an OISC machine too, but not the traditional SJM type.
18:09:15 <oklopol> 1. that was the wireworld program i was talking about 2. that was the program simonrc was talking about
18:09:33 <oklopol> the link
18:17:05 <Asztal> #define IMAGE_FILE_MACHINE_OISC 0x301 ;)
18:17:50 -!- Asztal has quit ("p0w p0w!").
18:26:36 -!- Aardwolf has quit ("Leaving").
18:32:23 * pikhq defines behavior for IRP#irp
18:34:28 <oklopol> the irp-quine i saw here the other day, it's a bit cheatish, a quine should not read it's own source!
18:34:52 <pikhq> It's not reading it's own source. . .
18:35:00 <pikhq> It's just executing the source as defined.
18:38:06 <oklopol> hmm, well, that's philosophy, very hard to tell in this case :D
18:38:23 <pikhq> Heheh.
18:41:53 <oerjan> OK then...
18:44:27 <oerjan> Please say the following, first without quotes, then within quotes: "Please say the following, first without quotes, then within quotes:"
18:46:55 <oerjan> hm, IRP seems to be down.
18:48:10 <oklopol> Please say the following, first without quotes, then within quotes: "Please say the following, first without quotes, then within quotes:"
18:48:20 <oklopol> oerjan, have i told you you are a genius? :D
18:48:56 <pikhq> Go to IRP#irp
18:48:58 <oklopol> i tell that easily tho
18:48:59 <oerjan> i don't know, but someone around here promised to deify me for my shortened Glass quine.
18:49:14 <oklopol> :DD
18:49:19 <oklopol> ye it was me!
18:49:39 <oerjan> and Malcolm Ryan declared me insane for my Unlambda interpreter in Intercal, which I took as a great compliment.
18:50:37 <oklopol> if i hear of intercal one more time, i'm gonna learn it
18:50:39 <pikhq> oerjan: In #irp, we are working on giving IRP defined behavior.
18:52:44 <pikhq> And I'm wondering why the hell I can't get SSHFS to work.
18:54:31 <pikhq> Ahah.
18:54:49 <pikhq> fusermount, on Ubuntoids, is mode 700.
19:02:49 * SimonRC ponders some way of representing hex as surreal haiku, to make it easier to recognise.
19:02:52 <SimonRC> or even remember (!)
19:04:39 -!- calamari has joined.
19:06:54 <CakeProphet> hmmm... reminded me of "Yields falsehood when preceeded by its quotation" yields falsehood when proceeded by its quotation.
19:07:33 <CakeProphet> SimonRC, oh... yeah that would be cool. Haikus always have a fixed number of syllables. :D
19:09:21 <SimonRC> obvious;ly multiple haiku would be needed
19:10:53 <CakeProphet> You could use the kigo to represent some sort of encoding?
19:10:58 <CakeProphet> (the "season" word)
19:15:41 <CakeProphet> or... you could use all the craziness of http://en.wikipedia.org/wiki/Renga to construct various representations of numbers.
19:15:46 <CakeProphet> There's a crapload of terminology :P
19:16:43 <SimonRC> nah, i was thinking of some silly way of doing it in English
19:16:44 <CakeProphet> The haiku was based off of the opening stanza of a renga
19:17:24 <SimonRC> *was*
19:17:40 <SimonRC> in modern net culture, that is largely forgotten
19:18:00 <CakeProphet> Yah.
19:18:05 <CakeProphet> Each haiku could be a digit.
19:18:18 <CakeProphet> which would work nicely... as three haiku stanzas would form a hex triplet :P
19:18:42 <CakeProphet> -how- you calculate what the value is... will take some consideration.
19:19:48 <CakeProphet> Well... a haiku has 17 syllables... and a hex number has 16 possible values.
19:20:18 <CakeProphet> maybe certain properties of a haiku stanza make it either True or False.
19:20:26 <CakeProphet> and the hex value is the total of all the Trues
19:20:43 <CakeProphet> with the last syllable being some sort of metadata or something. :D
19:23:28 <CakeProphet> That would be awesome... as a full three-stanza haiku would be a hex triplet... which would be a color.
19:23:37 <CakeProphet> HOW POETIC
19:23:59 <SimonRC> I was thinking of something that would be suitable for recognising hashes, fingerprints, etc, actually
19:24:26 <CakeProphet> How do you do that?
19:24:37 * CakeProphet isn't familiar with using hex to... recognize hashes and fingerprints.
19:25:07 <SimonRC> I was thinking of using a load of lookup tables to encode 4 hexits per stanza, maybe 8, in rather surreal text.
19:26:14 <CakeProphet> hmmm...
19:27:00 <CakeProphet> So..
19:27:10 <CakeProphet> 2 or 4 hex values per stanza?
19:28:39 <CakeProphet> You could go with the length of each line.
19:28:52 <CakeProphet> that tends to give you a lot of freedom in what you can write.. but isn't as cool.
19:29:10 <CakeProphet> As its not the haiku itself that gives it a hex value... but the length of the haiku.
19:29:16 <CakeProphet> ...so it's not as nifty.
19:31:25 <SimonRC> I am ont really concentrating on the decoding, mor the encoding
19:45:54 <CakeProphet> hmmm...
19:46:01 <CakeProphet> septidecimal numbers?
19:48:32 <RodgerTheGreat> I've been doing some thinking about a proper name for EsoOS, and the idea that popped into my mind was "Framework"
19:49:11 * pikhq recommends that you make it an OS. :P
20:00:00 * SimonRC goes to dinner
20:01:16 <calamari> I still recommend having a random factor.. so that each user has a unique os.. nobody can provide support
20:03:08 -!- calamari has quit ("Leaving").
20:03:39 <RodgerTheGreat> perhaps make the OS a basic system that provides core services, and then has esolang "modules" loaded to provide functionality
20:04:20 <RodgerTheGreat> I could configure my system to run BF, DBF, SYNTHESYS, and perhaps Glass, while someone else could run BASIC and Befunge.
20:05:16 <RodgerTheGreat> the kernel would provide memory management, threading, a simple network stack, and a simple shell that can access modules as backends
20:06:08 <RodgerTheGreat> turn on the computer, and it can run a series of startup scripts using hosted languages, before providing the user with an interactive interpreter of their choice.
20:06:09 <CakeProphet> hmmm...
20:06:23 <CakeProphet> Sounds good... no need for files either.
20:06:26 <CakeProphet> Just "modules"
20:06:29 <RodgerTheGreat> yeah
20:06:50 <CakeProphet> That would of course require some sort of OS-level importing mechanism that would work in all interpreters.
20:06:58 <pikhq> Although files would be needed if you wanted to make it support PESOIX.
20:07:36 -!- RodgerTheGreat_ has joined.
20:07:37 * CakeProphet is working on a functional BF that's a bit more modular.
20:07:53 <RodgerTheGreat_> you could use a PalmOS-style "database" system for storing user data and code on media
20:07:57 * RodgerTheGreat_ mumbles some disparaging remarks about wifi
20:08:54 <CakeProphet> RodgerTheGreat Let's do orthogonal persistency... and make it totally weird!
20:08:54 <CakeProphet> weirdness + esotericism == good
20:08:54 <CakeProphet> The kernel could represent memory as BF arrays.
20:09:17 <CakeProphet> and access to it could use BF commands?
20:09:28 <RodgerTheGreat_> we'd probably have to be resigned to the idea of recoding all the interpreters we wanted from scratch, so we can make our own executable format for modules.
20:09:45 * CakeProphet nods.
20:09:52 <CakeProphet> What would be the base language?
20:09:57 <CakeProphet> to code all the interpreters.
20:10:18 <RodgerTheGreat_> I was thinking more in terms of creating a useful OS, but we could try to build some kind of capability for filesystem abstraction, etc.
20:10:20 <RodgerTheGreat_> hm
20:10:23 <RodgerTheGreat_> a good question
20:10:44 <RodgerTheGreat_> our first step could be designing such a language and it's associated development kit.
20:10:57 <pikhq> Or just use C and a special library.
20:11:01 * CakeProphet gags.
20:11:03 <RodgerTheGreat_> blech
20:11:03 <CakeProphet> NO C
20:11:15 <pikhq> The core OS, at least, would need to be in C. . .
20:11:31 <RodgerTheGreat_> nothing *needs* to be coded in C.
20:11:43 <pikhq> RodgerTheGreat_: You want it in D or ASM?
20:11:47 <RodgerTheGreat_> it just needs to be coded in something that ends up being machinecode.
20:12:04 <RodgerTheGreat_> no, I want to build a new language for the express purpose of avoiding C.
20:12:18 <CakeProphet> esooslang :D
20:13:30 <pikhq> Define some stuff. . .
20:13:48 * pikhq will be back
20:13:58 <CakeProphet> I think implementing the processor register as a BF array would be the esoteric way to do it... plus it's not terrible unuseful.
20:14:10 <RodgerTheGreat_> hm
20:14:24 <CakeProphet> brainfucks concept of memory storage maps fairly easily to a computer's main memory.
20:15:34 <RodgerTheGreat_> well, let's see... what does a low-level language need?
20:15:55 <CakeProphet> input, output, and something to move around.
20:16:19 <RodgerTheGreat_> memory allocation and deallocation, function definition
20:16:45 <CakeProphet> a functional BF? :D
20:16:48 <RodgerTheGreat_> I think that allowing inline ASM is an extremely bad idea, if we ever want to be able to cross-compile
20:17:08 <CakeProphet> I'm not familiar with what ASM is anyways
20:17:09 <oklopol> memory allocation in brainfuck: [>]
20:17:19 <RodgerTheGreat_> I suppose you could make it similar to BF, but we need a way to make the source a little more readable in general.
20:17:56 <CakeProphet> Using DefBF (functional brainfuck) would work nicely... it allows you to abstract BF to make it somewhat useful.
20:18:09 <CakeProphet> an extension to BF.
20:18:14 <CakeProphet> to make it more useful.
20:18:59 <RodgerTheGreat_> perhaps set it up to use a reasonably conventional function syntax, so you could make calls like substring[x, a] or something
20:19:54 <RodgerTheGreat_> advanced looping constructs aren't that vital if we allow normal- and tail-recursion
20:20:39 <CakeProphet> My first idea for my a functional BF just used named references to do function calls.
20:20:51 <CakeProphet> and the function would just start working with the current array.
20:21:01 <RodgerTheGreat_> hm
20:21:05 <CakeProphet> kinda like in Glass... except with an array instead of a stack.
20:21:31 <RodgerTheGreat_> well, if you use an array properly, it can do the same things as a stack
20:21:37 <CakeProphet> *nod*
20:21:55 <RodgerTheGreat_> so there isn't anything inherently wrong with doing it that way
20:22:07 <CakeProphet> my second idea, to make it more esoteric, involved a array of data and an array of subroutines... both having a pointer.
20:22:27 <RodgerTheGreat_> hm
20:22:33 <CakeProphet> but that makes it harder to get the function you want... as the functions are referenced by a name and you have to move around a subroutine pointer.
20:22:51 <CakeProphet> might not be suitable for an environment where it needs to be good at something.
20:23:00 <CakeProphet> aren't
20:23:06 <CakeProphet> referenced by a name ;)
20:23:08 <CakeProphet> typoz
20:23:15 <RodgerTheGreat_> I think the most important thing to add to BF if it's going to be used for a large project is some syntax for loading other source files as libraries and comment syntax.
20:23:42 <RodgerTheGreat_> they don't add anything to the actual language, but they add tremendous benefits in terms of organization
20:23:48 <CakeProphet> eh... the "ignore all non-commands" comment syntax works fine.
20:24:04 <CakeProphet> an "import" syntax as well as functions could be done.
20:24:10 <CakeProphet> essentially you'd be giving it namespaces. :D
20:24:39 <CakeProphet> sorta... the manipulated data remains universal nomatter what.
20:25:05 <CakeProphet> arguments to the functions would simply just be sitting on the array.
20:25:38 <CakeProphet> ++>++>&(add) creates [2,2,4,0,0,0,0,0,0, ...]
20:26:13 <CakeProphet> the exact mechanism for each function would differ.. but they would all follow some basic format.
20:27:23 -!- RodgerTheGreat has quit (Connection timed out).
20:27:36 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
20:28:45 <oklopol> 0,0,4, maybe?
20:29:05 <CakeProphet> eh... depends on if you plan on reusing those values.
20:29:24 <RodgerTheGreat> yeah, there is the issue that BF tends to operate on values in a destructive manner
20:29:31 <CakeProphet> do you want it in-place... or do you want to create a new memory space?
20:29:41 <oklopol> you should have different versions of everything to be able to imply copying like in your example
20:29:47 <oklopol> since it's slower in bf
20:29:58 <CakeProphet> *nods*
20:30:10 <RodgerTheGreat> you might want some way in the function definitions to specify wether your code will preserve the original operands.
20:30:50 <CakeProphet> well... if the functions are literally just executed like normal code... there's no way to disginuish operands from other memory.
20:30:58 <RodgerTheGreat> you have to think of this on both sides- how will the coder work with it, and how will the compiler work with it?
20:31:18 <CakeProphet> One method is to have a (move) function for copying values into new cells.... which would be used extensively by functions so they don't have to destroy old values to get new results.
20:31:48 <RodgerTheGreat> that could be difficult to post-optimize
20:32:25 <RodgerTheGreat> hm
20:32:40 <RodgerTheGreat> how about giving BF pointers>
20:32:41 <CakeProphet> #rotates current value in the cell 13 places#%(rot13)+++++++++++++% #Main program ---># +++++++++++++++&(rot13)
20:33:11 <CakeProphet> using some implied psuedo-syntax for now.
20:33:17 <CakeProphet> we can work out syntatical details later.
20:33:22 <oklopol> rtg that sounded like a good idea
20:33:30 <RodgerTheGreat> make GOSUB and RETURN equivalents that take an argument from the current cell?
20:33:32 <CakeProphet> giving BF pointers?
20:33:39 <oklopol> so you could just have a call and a return
20:34:04 <oklopol> v=call, ^=return
20:34:09 <CakeProphet> How would you do binary operations?
20:34:11 <oklopol> those being just jumps
20:34:18 <pikhq> RodgerTheGreat: For libraries, try BFM. . .
20:34:21 <RodgerTheGreat> possibly also have such a system for the BF array pointer, so that you could pop it from place to place and back quickly and easily
20:34:22 <oklopol> and of course, you would need 64-bit
20:34:25 <pikhq> (shameless plug)
20:35:05 <CakeProphet> hmmm... maybe a mix of glass and BF?
20:35:09 <RodgerTheGreat> some of the BFM codebase would likely prove useful, although we'd have to modify it a bit to work efficiently in the new language
20:35:12 <CakeProphet> hehe
20:35:27 <RodgerTheGreat> at the very least, it'd be a good way to quickly have a standard library
20:35:31 <pikhq> Well, I'd of course want to rewrite the standard libraries.
20:35:57 <pikhq> But the core language would, in fact, make for a powerful way of operating in Brainfuck on this OS.
20:35:58 <CakeProphet> Use glass functions and stack pushes... but with BF syntax? :D
20:36:03 <RodgerTheGreat> we could take the BFM libraries to begin with, and then over time rebuild them to suit the new langage
20:36:50 <RodgerTheGreat> I just like the idea of augmenting BF with execution and memory pointers. It seems like an elegant way to build structured code with BF
20:36:52 <pikhq> Fortunately, BFM at the moment has been designed to be language-independent.
20:37:05 <pikhq> RodgerTheGreat: I really like that idea.
20:37:41 <pikhq> BFM would also allow for some pure-Brainfuck utilities in our language.
20:37:49 <pikhq> s/language/OS/
20:37:50 <RodgerTheGreat> take that basic idea, wrap it in a little syntactic sugar to make it programmer-friendly, and it sounds like we have ourselves a solid plan for a language
20:37:58 <RodgerTheGreat> good idea
20:38:30 <pikhq> And I've got to admit I like the idea of the whole OS being written in esolangs.
20:38:36 <CakeProphet> hmmm... not sure how it would work exactly though.
20:39:13 <CakeProphet> Like... how would you expand the syntax to make function calls take multiple arguments from multiple cells?
20:39:14 <RodgerTheGreat> by maintaining complete backwards compatibility and making it easy to simulate giving subprograms their own pristine memory space, the new language wouldn't have to abandon any existing BF code
20:39:30 <RodgerTheGreat> CakeProphet: I'm thinking...
20:39:42 <RodgerTheGreat> give me an hour or two, and I'll see if I can whip up a rough spec.
20:39:57 <CakeProphet> Currently the closest one to be conceptually realized is to simply make the array universal for all subroutines... and have some sort of built-in command for copying values.
20:40:01 <RodgerTheGreat> does anyone here have any experience in compiler design?
20:40:10 <CakeProphet> Nope.
20:40:27 <pikhq> Tiny amount.
20:40:58 <pikhq> I think calamari has a decent amount of experience.
20:41:19 <RodgerTheGreat> alright, I appoint myself and CakeProphet as language architects, and pikhq and calamari to the compiler implementation team
20:41:55 <pikhq> I'd recommend asking him, though. ;)
20:42:03 <CakeProphet> In glass having a universal stack works fine and doesn't make it hard to build working subroutines.... and by augmenting BF to have a quick way to copy values you can prevent the destructive nature of BF from destroying the coder's existing data.
20:43:10 <RodgerTheGreat> I think that a single tape will be fine, as long as we can call and return memory locations for the tape pointer
20:43:17 <CakeProphet> but then again... each-function-with-its-own-array works even cleaner... you just have to figure out how to make the syntax work easily.
20:43:46 <CakeProphet> whatcha mean?
20:43:51 <RodgerTheGreat> the big question is wether pointers should use direct or relative addressing.
20:44:06 * pikhq prefers some idea of a two-dimensional array. . .
20:44:08 <CakeProphet> *shrugs* I'm a high-level junkie... I don't anything about that. :P
20:44:17 <pikhq> More like, say, a stack of arrays.
20:44:27 <CakeProphet> that was my original idea.
20:44:34 <CakeProphet> sorta kinda.
20:44:37 <pikhq> Yeah.
20:44:53 <RodgerTheGreat> I'm thinking of the memory layout as a single array for BF memory, and then a pair of stacks for function execution and the memory pointer
20:45:30 <CakeProphet> Calls will be named right?
20:45:40 <RodgerTheGreat> you can simulate giving functions their own tape pretty easily, and the whole idea maps to assembly pretty neatly
20:45:42 <RodgerTheGreat> yes
20:46:10 <pikhq> Push a clear one on for a function, with the function's arguments copied onto the first cells.
20:46:21 <CakeProphet> and then alter add some form of import syntax... depending on how our memory is segmented (i.e. how we do file-like entities)
20:46:38 <RodgerTheGreat> hm
20:47:13 <RodgerTheGreat> what did we decided we want to name this language?
20:47:17 <RodgerTheGreat> *decide
20:47:24 <CakeProphet> !glass {M[m(_o)O! "lol"(_o)o.?]}
20:47:27 <EgoBot> lol
20:47:40 <CakeProphet> I've just been colling it "functional brainfuck" and "DefBF"
20:47:53 <RodgerTheGreat> DefBF it is
20:47:55 <pikhq> bf>++[-<+>]
20:47:55 <pikhq> ?
20:47:58 <pikhq> Ah.
20:48:05 <CakeProphet> It rhymes at least :D
20:48:24 <CakeProphet> Def-BF to make it look less crowded.
20:48:44 <CakeProphet> or Define Brainfuck if you're feeling verbose.
20:49:08 <pikhq> Out of curiosity, what sort of OS architecture are we talking about on top of this?
20:49:23 <CakeProphet> Most likely something unique. :D
20:49:51 <CakeProphet> I'd like to do the whole thing as a huge thought experiment.
20:49:56 <CakeProphet> no Unix-like crap.
20:50:19 <pikhq> How's about getting PESOIX as at least a basic sort of API?
20:50:42 <CakeProphet> I think a lot of the inter-communication will be tuned directly into the architecture.
20:50:48 <pikhq> At least an inspiration of how to do some additional API functions, like, say, hard drive access. . .
20:51:01 <CakeProphet> I like the "component" model of uuu... where there's no files and everything is on the same memory space.
20:51:18 <CakeProphet> yeah... we'll need to tweak all the languages a bit for more access.
20:51:48 <CakeProphet> if we do orthogonal persistency... we might not even need hard drive access.
20:52:09 <CakeProphet> !glass {M[m(_o)O! (_x)I! (_x)i.?(_o)o.?]}
20:52:18 <CakeProphet> !i 2 Hello World!
20:52:23 <CakeProphet> !i 2 \n
20:52:32 <CakeProphet> !ps
20:52:35 <EgoBot> 1 CakeProphet: ps
20:52:49 <pikhq> I think one should have additional functionality to the various languages via input and output. . .
20:53:23 <CakeProphet> We could universalize the data... so languages can share data.
20:53:35 <CakeProphet> Everything breaks down to numbers in the end...
20:54:50 <CakeProphet> A BF program could theoretically make a Glass program run, print an output, and use that for input.
20:54:53 <CakeProphet> using some sort of API.
20:55:20 <CakeProphet> The "filesystem" could be totally functional...
20:56:26 <pikhq> Allow me to at least write a cat program for this OS.
20:56:33 <CakeProphet> each program is a "function" that's called with an input and returns an output. The output would be universal to all languages.
20:56:35 <pikhq> @ char
20:56:36 <pikhq> in char
20:56:38 <pikhq> while char {
20:56:41 <pikhq> out char
20:56:42 <pikhq> in char
20:56:44 <pikhq> }
20:57:12 <pikhq> Presumably the shell will just call functions.
20:57:23 <CakeProphet> Basically.
20:57:40 <CakeProphet> If organizing names becomes a problem... we could do some sort of namespacing.
20:58:01 <CakeProphet> but not too complex... massive directory names have always annoyed me.
20:58:22 <CakeProphet> !glass {M[m(_o)O! (_x)I! (_x)i.(_o)o.?]}
20:58:30 <CakeProphet> !i 2 Lol
20:58:37 <pikhq> !eof 2
20:58:48 <pikhq> Hmm.
20:58:56 * pikhq sees one issue with that glass program. . .
20:59:02 <pikhq> No looping involved.
20:59:04 <CakeProphet> ah.
20:59:08 <CakeProphet> !glass {M[m(_o)O! (_x)I! (_x)i.?(_o)o.?]}
20:59:11 <CakeProphet> !i 2 lol
20:59:17 <CakeProphet> Actually... I just forgot to call the input method.
20:59:30 <CakeProphet> !ps
20:59:33 <EgoBot> 1 CakeProphet: ps
20:59:59 <CakeProphet> !glass {M[m(_o)O! (_x)I! (_x)i.?(_o)o.?]}
21:00:01 <CakeProphet> ack..
21:01:16 <CakeProphet> !glass {M[m(_o)O! (_x)I! (_s)S! /<1> (_x)i.? "\n" (_s)a.?(_o)o.?\]}
21:01:22 <CakeProphet> !ps
21:01:25 <EgoBot> 1 CakeProphet: ps
21:01:30 <CakeProphet> gmmm...
21:03:12 <CakeProphet> I think the neat thing about the OS would be the universiality... it could basically tie all the esoteric languages together and make them work as a collective whole to do something useful.
21:04:06 <pikhq> Heheh.
21:04:53 -!- calamari has joined.
21:06:01 * CakeProphet pokes RodgerTheGreat
21:06:35 <CakeProphet> !glass {M[m(_o)O! "RodgerTheGreat, calamari's here."(_o)o.?]}
21:06:39 <EgoBot> RodgerTheGreat, calamari's here.
21:06:50 <pikhq> !cat Whee.
21:06:53 <EgoBot> Huh?
21:06:58 <pikhq> Grr.
21:07:07 <pikhq> !daemon cat bf ,[.,]
21:07:11 <pikhq> !cat Wheee.
21:07:13 <EgoBot> Wheee.
21:07:36 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
21:07:39 -!- RodgerTheGreat_ has joined.
21:07:40 <CakeProphet> ...
21:07:45 <CakeProphet> WELCOME BACK
21:07:53 <RodgerTheGreat_> woo
21:07:59 <CakeProphet> !glass {M[m(_o)O! "RodgerTheGreat, calamari's here."(_o)o.?]}
21:08:01 <EgoBot> RodgerTheGreat, calamari's here.
21:08:14 <pikhq> !cat !cat works better.
21:08:17 <EgoBot> !cat works better.
21:08:22 <RodgerTheGreat_> I have a nearly done spec for Def-BF
21:08:26 <pikhq> :)
21:08:44 <calamari> RodgerTheGreat: were you looking for me? :)
21:09:39 <RodgerTheGreat_> yeah- interested in joining an exciting and challenging project?
21:10:01 -!- oerjan has changed nick to oerjan_.
21:10:12 -!- oerjan_ has changed nick to oerjan.
21:10:18 <calamari> dunno.. I'm already working on such a project :)
21:11:01 <CakeProphet> Well... this one is better...
21:11:05 <CakeProphet> and more profitable.
21:11:46 <calamari> heh
21:12:26 <pikhq> FOR GREAT PROFIT!
21:13:04 <RodgerTheGreat_> CODE OFF EVERY ZIG!
21:13:04 <calamari> I'm currently working on putting wikipedia and the scriptures on my ipod
21:13:13 <calamari> writing the renderer now
21:13:23 <pikhq> We're discussing an OS written in Esolangs.
21:13:38 <calamari> doesn't sound profitable to me hehe
21:15:56 <RodgerTheGreat_> alright, here's the first revision of my spec.
21:15:57 <RodgerTheGreat_> http://nonlogic.org/dump/text/1167512946.html
21:15:58 <CakeProphet> RodgerTheGreat_, If the data of programs is universally accessible... an import syntax may not even be nessicary... a function call could just reach out to all Def-BF files.
21:16:19 <RodgerTheGreat_> take some time to read it over, and then we can discuss clarifications, changes, and additions.
21:16:30 <RodgerTheGreat_> hm
21:16:36 <RodgerTheGreat_> a good idea.
21:16:52 <calamari> ick.. need to clean my scanner.. that image looks horrible
21:17:09 <RodgerTheGreat_> however, some Def-BF compilers will exist for other operating systems, so it's probably a good idea to have an import statement in the spec.
21:18:25 <CakeProphet> RodgerTheGreat_, Should we set imported functions in a namespace?
21:18:38 <RodgerTheGreat_> I'm still thinking about that
21:18:41 <RodgerTheGreat_> not sure yet
21:18:52 <CakeProphet> Well... other than recommending some syntax changes... I still need to figure out all this addressing stuff. I'm a noob at low-level memory stuff.
21:19:32 <RodgerTheGreat_> we might do it like ReX, by calling all functions as Library.FunctionName[], with local functions called as just FunctionName[]
21:19:59 <CakeProphet> What's all this absolute address stuff?
21:20:09 <RodgerTheGreat_> at least, that's how I remember ReX working...
21:20:28 <RodgerTheGreat_> pointers have to be absolute addresses to be useful.
21:20:40 <RodgerTheGreat_> absolute is the opposite of relative
21:20:47 <CakeProphet> >.>
21:21:07 <CakeProphet> I've never delt with memory allocation...
21:21:17 <CakeProphet> garbage collection for the win.
21:21:17 <RodgerTheGreat_> like, with absolute addressing, 0x00000000 would be the VERY first memory address on your machine
21:21:22 <RodgerTheGreat_> heh
21:21:30 <CakeProphet> ah.
21:21:36 <CakeProphet> memory address... gatcha
21:21:39 <RodgerTheGreat_> 0x00000001 is the second, and so on
21:21:41 <CakeProphet> you have to specify that?
21:22:06 <RodgerTheGreat_> relative addressing is like in redcode, where 0 would refer to the current address, and 1 would refer to the next
21:22:12 <pikhq> With relative, 0x00 would be the current address. 0x01 would be the next, -0x01 would be the previous. . .
21:22:17 <RodgerTheGreat_> yeah
21:22:24 <RodgerTheGreat_> exactly
21:22:28 <pikhq> Like in Brainfuck.
21:22:55 <oklopol> why a separate stack for the calls?
21:22:56 <CakeProphet> But why do you need to specify absolute address?
21:23:04 <CakeProphet> and how would you know it?
21:23:16 <oklopol> just the one array
21:23:24 <RodgerTheGreat_> and relative addressing the primary reason that functional pure brainfuck would be really hard to code with, so we add pointer functionality
21:23:54 <CakeProphet> except... I have no clue how it works now. >.<
21:23:58 <oklopol> call = jump to whatever is in the current cell, store the previous place
21:23:58 <RodgerTheGreat_> CakeProphet: for the most part, the compiler will deal with and assign the absolute addresses
21:24:31 <RodgerTheGreat_> oklopol: it's the difference between making a jump in code, and a jump in memory location
21:24:44 <oklopol> yes, no jump in memory location is needed
21:25:08 <oklopol> you don't need anymore the pointer to where you came from
21:25:10 <CakeProphet> ...I don't really like the spec all that much... it doesn't really resemble BF anymore.
21:25:27 <oklopol> it's bf with a jump
21:25:32 <oklopol> the stack one has... stacks
21:25:48 <RodgerTheGreat_> the advantage of memory location jumps is that we can make functions that can pretend that they have their own independent memory spaces
21:26:10 <oklopol> well, true
21:26:18 <RodgerTheGreat_> I think of it as "BF with pointers"
21:26:42 <CakeProphet> but... by using variables and all really takes it a long ways from feeling BFish.
21:26:59 <oklopol> i just dislike the multiple stacks thing, but concurrency seems to need it
21:27:01 <RodgerTheGreat_> it doesn't do a whole lot that's impossible with normal BF, but it makes it more possible to code in a structured manner
21:27:04 <oklopol> now that i think of it
21:27:30 <CakeProphet> constants could just be functions...
21:27:31 * pikhq would rather see just BFM compiling to the low-level version. XD
21:27:52 <RodgerTheGreat_> pikhq: well, yeah- that's why both exist
21:27:53 * CakeProphet doesn't like it at all... :/
21:28:19 <oklopol> CakeProphet, what does "constants could just be functions" mean?
21:28:43 <RodgerTheGreat_> pure access to the nuts and bolts of the language, plus some nice features for less esoterically inclined coders
21:28:47 <calamari> RodgerTheGreat_: are you using @ notation?
21:29:06 <RodgerTheGreat_> erm... well, I use the @ character for something...
21:29:40 <oklopol> : resume execution from previous address
21:29:49 <oklopol> oh
21:29:50 <calamari> for example x=x+y, @y[@x+@y-@t+]@t[@y+@t-]
21:29:51 <oklopol> you said stacks
21:30:20 <RodgerTheGreat_> calamari: ah, I see what you mean- no, not currently
21:30:21 <CakeProphet> assuming % means "start definition" and "end definition"... %(lol)[-]+++++++++++% would be the same as a constant.
21:30:51 <calamari> RodgerTheGreat_: it does a lot to make it easier to code in BF, but can be easily converted to pure BF
21:31:01 <pikhq> source ^stdcons.bfm
21:31:05 <CakeProphet> giving functions scopes, returns, and arguments makes it look more and more like C-based languages.
21:31:07 <pikhq> consfoo bar : baz
21:31:08 <RodgerTheGreat_> yeah, I agree...
21:31:10 <calamari> err that program is flawed
21:31:10 <pikhq> ;)
21:31:21 <calamari> @y[@x+@t+@y-]@t[@y+@t-]
21:31:23 <calamari> there we go
21:32:05 <RodgerTheGreat_> I may revise the syntax to use that notation, if it's a common way of expressing BF algorithms already
21:32:08 <pikhq> For calamari's suggestion, I could just rewrite the "goto" proc in BFM, and automagically port every BFM program.
21:32:19 <RodgerTheGreat_> nice
21:32:24 <calamari> I thought that Easel, ESOapi or the like would be used for the os
21:32:40 <pikhq> I was thinking PESOIX.
21:32:41 <CakeProphet> RodgerTheGreat_, Wouldn't a global scope, and literally just substituting functions into the source be just as effective?
21:32:50 <calamari> then you wouldn't have to change bf at all
21:32:52 <pikhq> CakeProphet: That'd be a macro system.
21:33:16 <CakeProphet> It achieves much of the same effect.
21:33:46 <oklopol> runtime macros like that are much less bf
21:33:47 <oklopol> ish
21:33:50 <calamari> afk.. continuing my project
21:33:51 <RodgerTheGreat_> CakeProphet: yes- I would like to use global scoping, but I think a basic returning system would be a good idea
21:34:13 <CakeProphet> RodgerTheGreat_, What is there to return if it's global scope?
21:34:35 <oklopol> to continue the code
21:34:40 <oklopol> not return a value
21:35:06 <CakeProphet> like a "break"?
21:35:12 <RodgerTheGreat_> hm
21:35:13 <oklopol> like a return
21:35:16 <CakeProphet> to break out of the function?
21:35:20 <RodgerTheGreat_> yes
21:35:56 <CakeProphet> Not sure you'd need that if you do functions right.
21:35:57 <oklopol> is there a nice intercal reference?
21:36:14 <RodgerTheGreat_> that's effectively what the current "return" statement does- you can optionally use it to pass a specific pointer back to where the function was called from
21:36:42 <RodgerTheGreat_> if you already know where the function is operating in memory, you don't need it to pass back a pointer
21:37:26 <RodgerTheGreat_> the value of pointers is that they allow the compiler to arrange memory and code however it determines is the most efficient, without having to modify hardcoded values
21:37:29 <CakeProphet> Why pointers? Global scoping does the same thing as pointers.
21:38:08 <RodgerTheGreat_> in an interpreted language, they aren't very important. In a compiled language, they're extremely powerful.
21:38:28 <CakeProphet> Maybe the word "pointer" is just invoking images of C.
21:38:33 <CakeProphet> :P
21:38:45 <RodgerTheGreat_> yeah, I imagine it does.
21:38:55 <RodgerTheGreat_> we could go the Java route and call them "references"
21:39:09 <CakeProphet> We could just call them.... cells?
21:39:21 <RodgerTheGreat_> cell references.
21:39:24 <CakeProphet> It's the same thing.
21:39:53 <oklopol> call them cell indexes
21:40:05 <CakeProphet> ...
21:40:10 <oklopol> reference has an abstactionish feel to it
21:40:20 <oklopol> *abstractionish
21:40:43 <RodgerTheGreat_> alright, in the interest of avoiding any painful allusions to C, we will call what were previously referred to as "pointers" as "cell indices"
21:40:56 <CakeProphet> but I mean... how does using pointers and scopes make the language more efficient than a global array that simply takes the nearby cells as parameters?
21:41:10 <CakeProphet> meh... cell indices doesn't sound nice either.
21:41:24 <oklopol> what then?
21:41:25 <CakeProphet> :P
21:41:30 * CakeProphet grumbles.
21:41:47 <CakeProphet> Call them fish bowls.
21:41:55 <RodgerTheGreat_> a global array with no scoping OR pointers means that code can't be arbitrarily re-arranged without breaking it.
21:42:04 <RodgerTheGreat_> nor can memory.
21:42:12 <CakeProphet> Whatcha mean?
21:42:28 <RodgerTheGreat_> actually, they CAN, it's just nontrivial, and adds needless complexity to the compiler
21:42:46 <CakeProphet> ....but it seems simpler.
21:43:04 <RodgerTheGreat_> let's say your program assumes a memory model like [A][B][blank][blank[C]
21:43:14 <CakeProphet> a universal strip of memory... no referencing... and calls just substitute the functions definition into the code.
21:43:21 <RodgerTheGreat_> and then you add a function to make use of the blanks...
21:43:36 <RodgerTheGreat_> [A][B][D][E][C]
21:44:09 <RodgerTheGreat_> now, if a new function requires memory, it has to know these chunks are all full, and know how to get from it's own areas of memory to existing ones.
21:44:12 <oklopol> CakeProphet, are you talking about a runtime substitution?
21:44:21 <RodgerTheGreat_> the alternative with pointers...
21:44:32 <CakeProphet> *shrugs* nothing detailed... just "sbustition".
21:44:47 <CakeProphet> I'm talking in vague terms... it would have the -effect- of being substited.
21:44:54 <RodgerTheGreat_> {area1}[A][B]....{area2}[C]....{area3}[D][E]
21:44:58 <oklopol> runtime substitution wouldn't be very brainfuck imo
21:45:05 <CakeProphet> I don't know the specifics of how compilers do things
21:45:24 <RodgerTheGreat_> now, it doesn't matter where these areas are in actual memory, just that they have references to one another's locations
21:45:41 <CakeProphet> Glass would be a good example of this kind of universal stack... with functions that are still just as useful.
21:46:03 <CakeProphet> RodgerTheGreat_, Maybe I'm just not used to working at a low level.
21:46:11 <oklopol> CakeProphet, runtime would be very non-brainfuck and compile-time would be idiotic
21:46:12 <CakeProphet> I think of the memory of a BF array being literally.. side by side.
21:46:20 <RodgerTheGreat_> that could be it
21:47:38 <RodgerTheGreat_> I guess what I'm trying to get across is just that having something like a pointer makes it a great deal easier for the compiler to do it's jobs without the programmer having to know the precise memory layout of the entire machine
21:48:26 <oklopol> yes, changing the need for memory in one place would affect every single function in the whole computer
21:48:28 <CakeProphet> RodgerTheGreat_, hmmm... oh... this is for the machine's memory array?
21:48:29 <RodgerTheGreat_> it's a complication that you run into in the process of creating very large or memory intensive programs in BF
21:48:34 <RodgerTheGreat_> yes
21:49:15 <CakeProphet> ah... yeah, this is definetely going to need to be geared to a more lower-level application.
21:49:28 <CakeProphet> I do wish it were less memory-related. :/
21:49:32 <oklopol> with pointers you could have virtual memory and stuff much easier etc.
21:49:50 <oklopol> i mean, the compiler could allocate small things in virtual etc
21:50:22 <RodgerTheGreat_> pikhq: making a two-stage compile system might be a good way to do this- you can compile high-level code (or any alternate version thereof) into the basic Def-BF language, which can then be compiled into machinecode
21:50:23 <CakeProphet> I really have -no- esperience with memory allocation.
21:50:50 <RodgerTheGreat_> hey, I'm a Java coder myself.
21:51:07 <CakeProphet> can we at least make the statements one-character? :D
21:51:15 <CakeProphet> BF just doesn't look right with whole words in it.
21:51:36 <CakeProphet> well.. obviously we need function names in the code.
21:51:47 <CakeProphet> but the operations should all stick to the one-character commands.
21:51:58 <RodgerTheGreat_> the statements in the low-level version *are* one character. If you don't want words, you could easily create your own abstraction of the basic language
21:52:24 <RodgerTheGreat_> the whole point is just to standardize the basic version, and then allow abstractions to grow as needed
21:53:28 <RodgerTheGreat_> the only non single-character command is ?, which is entirely unnecessary aside from aiding in compiling to machinecode- don't use it if you don't want to
21:53:45 <CakeProphet> what about "define" and "return"?
21:53:52 <CakeProphet> and function calls taking variable arguments.
21:54:02 <CakeProphet> that's a huge step away from BF-style programming.
21:54:07 <oklopol> no
21:54:09 <pikhq> Those are high-level abstractions layered on Def-BF.
21:54:10 <RodgerTheGreat_> those are just abstractions of @/: and #/;
21:54:11 <oklopol> you allocate manually
21:54:19 <oklopol> or?
21:54:48 <oklopol> you aren't gonna put in functions(with,arguments) or smth like that are you?
21:54:51 <RodgerTheGreat_> pure Def-BF itself is just +-<>,.[];:#@
21:55:09 * CakeProphet feels much better now.
21:55:19 <CakeProphet> I thought return and define were -statements-
21:55:30 <RodgerTheGreat_> everything in the spec under "High-level programming" is just a convenience to programmers
21:55:57 <RodgerTheGreat_> all of those statements translate directly into a series of +-<>,.[];:#@
21:56:00 <CakeProphet> You should show examples of what it would look like in the actual code.
21:56:18 <RodgerTheGreat_> I guess code examples are the next step.
21:56:26 <RodgerTheGreat_> I'll do some work in that vein
21:56:31 <CakeProphet> and... do we need comment syntax?
21:56:45 <oklopol> the programs are in the same memory as memory, right?
21:56:49 <RodgerTheGreat_> I think it's worth having, but once again that's just part of the abstraction
21:57:07 <oklopol> so that you can dl programs etc :)
21:57:20 <RodgerTheGreat_> oklopol: not sure we can assume that, but that's most likely how it'll be on a real machine
21:57:29 <RodgerTheGreat_> fuck Von Neumann. >:D
21:57:31 <CakeProphet> Given the small nature of the command set... it seems the ignore-all-non-applicable-commands would work fine and be just as readable.
21:57:57 <RodgerTheGreat_> Like I said, comments are just part of the abstraction- not the core language
21:58:00 <oklopol> how could programs be added without programs being in the same memory?
21:58:11 <CakeProphet> bah... all this abstraction syntax is confusing me. :P
21:58:37 <RodgerTheGreat_> CakeProphet: then just ignore everything under this line: "High-level programming:"
21:58:52 <CakeProphet> Will do. ;)
21:58:58 <RodgerTheGreat_> :)
21:58:59 * CakeProphet found that part the most sickening.
21:59:26 * CakeProphet is happy now.
21:59:57 <RodgerTheGreat_> essentially, just think of @ controlling the program counter and # controlling the BF memory pointer
22:00:13 <CakeProphet> ah.
22:00:21 <CakeProphet> and what's the /?
22:00:28 <RodgerTheGreat_> nothing.
22:00:36 <RodgerTheGreat_> in english, it means And OR
22:00:44 <RodgerTheGreat_> which is how I was using it
22:00:53 <CakeProphet> oooh.
22:00:55 <CakeProphet> looked confusing.
22:01:24 <RodgerTheGreat_> @ works in tandem with : and # works in tandem with ;
22:01:30 * CakeProphet nods.
22:01:35 <CakeProphet> That makes a lot more sense now.
22:01:41 <RodgerTheGreat_> excellent
22:01:56 * CakeProphet thought all the pointer stuff was going to muck-up the brainfuckiness.
22:02:03 <CakeProphet> but it doesn't really.
22:02:04 <RodgerTheGreat_> so, are we all happy with at least the spec for the low-level version?
22:02:37 <CakeProphet> hmmm... yeah the spec works. ^ seems like a more descriptive command for : thought. :D
22:02:45 <pikhq> I'm not going to touch the high-level version, so, yeah.
22:02:45 <CakeProphet> : is kinda like a "return" right?
22:02:51 <RodgerTheGreat_> yes
22:02:59 <CakeProphet> thought so.
22:03:06 <RodgerTheGreat_> didn't really expect you to, pikhq. ;)
22:03:33 <CakeProphet> I'll need to figure out how # and ; work specifically... but I get their function now.
22:03:46 <oklopol> but, how do you do argument copying with the high-level version?
22:03:52 <oklopol> *low-level version
22:03:58 <RodgerTheGreat_> the high-level spec is just how I'd like to build a metalanguage out of Def-BF.
22:04:33 <RodgerTheGreat_> oklopol: assuming I understand what you're asking, you can still do it how you'd normally do it in BF.
22:05:04 <oklopol> but, "if a function call includes parameters, these pointers
22:05:05 <oklopol> are copied to the first x cells of the memory location specified
22:05:05 <oklopol> by the compiler."
22:05:12 <RodgerTheGreat_> yes
22:05:15 <oklopol> how does the low-level do that
22:05:18 <CakeProphet> # would be argument getters.
22:05:22 <CakeProphet> methinks.
22:05:23 <oklopol> it doesn't know about argument
22:05:28 <oklopol> ah
22:05:31 <oklopol> of course
22:05:37 <RodgerTheGreat_> it'd be a normal BF cell-to-cell copy
22:05:47 <oklopol> but with absolute addresses?
22:05:59 <RodgerTheGreat_> it just uses pointers to locate the source and destination
22:06:11 <CakeProphet> I'm guessing ; simply copies the altered value back to where it was taken from.
22:06:39 <oklopol> @[-;+@]; << like that? (i forgot the symbols :))
22:07:02 <CakeProphet> only one @
22:07:19 <oklopol> go back - [do things] - com back
22:07:23 <RodgerTheGreat_> yeah, something like that, except @ should be #
22:07:31 <oklopol> k
22:08:05 <CakeProphet> hmmm...
22:08:11 <CakeProphet> Doesn't it need a name though?
22:08:28 <CakeProphet> How do @ and # know where to go?
22:08:32 <RodgerTheGreat_> no, just a value representing a location- the absolute address
22:08:33 <oklopol> that was argument copying from the main program memory to function memory
22:08:42 <RodgerTheGreat_> CakeProphet: that's what the stack is for
22:08:55 <CakeProphet> ah.... the value in the current cell represents the address?
22:09:09 <RodgerTheGreat_> when you do a @, it pushes the old location onto a stack. When you : back, it pops off the old value
22:09:16 <RodgerTheGreat_> like a GOSUB... RETURN
22:09:36 <oklopol> with absolute addresses, it's possible to allocate and "infinite" bit of the tape for every function right?
22:09:53 <CakeProphet> where is the "old location" specified?
22:09:59 <RodgerTheGreat_> as far as the functions need to know. :)
22:10:01 <oklopol> because they can be moved around as needed etc if the address is absolute
22:10:11 <RodgerTheGreat_> yes
22:10:13 <CakeProphet> oh.... wait I think I get it.
22:10:31 <CakeProphet> the cell value represents the address of the function to call?
22:10:42 <RodgerTheGreat_> the high-level version ought to have some way of specifying how much memory a function uses, so that the compiler can allocate memory sensibly
22:10:51 <RodgerTheGreat_> CakeProphet: yes
22:11:08 <CakeProphet> and that address value will be replaced by whatever the function returns?
22:11:19 <RodgerTheGreat_> CakeProphet: OR, the address of the memory location to go to, depending on wether you're using @ or #
22:11:35 <RodgerTheGreat_> CakeProphet: you're confusing yourself with the high-level version again
22:11:36 * CakeProphet isn't familiar with the low-level aspects of a function call.
22:12:04 <RodgerTheGreat_> the low-level version of the language doesn't explicitly *have* functions, it just has mechanisms for implementing them
22:12:12 <oklopol> ++>++><addition function address here>@ ---- <addition function>(here the retriving of the arguments... how?)
22:12:27 <oklopol> in low-level
22:12:33 <CakeProphet> RodgerTheGreat_, Which is why I'm confused... I don't know the low-level mechanisms.
22:12:36 <oklopol> how do you call a function?
22:12:50 <oklopol> CakeProphet, it's the stack-way
22:12:52 <oklopol> as in glass
22:13:11 <CakeProphet> except... getting arguments is different.
22:13:20 <oklopol> is it?
22:13:22 <RodgerTheGreat_> oklopol: I guess it'd require knowing an absolute memory address to call in the first place
22:13:26 <CakeProphet> I get how to call them now...
22:13:34 <CakeProphet> well... the functions all have different scopes...
22:13:34 <RodgerTheGreat_> which is what could make coding in pure low-level problematic
22:13:41 <oklopol> <addition function address here> meant the absolute address
22:13:43 <CakeProphet> in Glass the functions just pick up values from the stack.
22:14:03 <RodgerTheGreat_> oklopol: oh, I see
22:14:26 <oklopol> CakePropher, the scope is the fact that you can push() in the stack even in the sub without altering main program data
22:14:47 <RodgerTheGreat_> oklopol: you'd want to either make the function call copy the arguments to the function's memory, or pass it (copy it) a reference to the location of those arguments
22:14:48 <oklopol> see an assembler-book :)
22:15:05 <oklopol> ah, of course, do the argument sending in the main prog
22:15:11 <RodgerTheGreat_> yeah
22:15:11 <oklopol> ...as in assembler actually
22:15:14 <RodgerTheGreat_> precisely
22:15:20 <CakeProphet> absolute addressing seems like it would be difficult to work with once you start using Def-BF away from memory allocation.
22:15:21 <RodgerTheGreat_> that's the whole idea. :)
22:15:44 <CakeProphet> perhaps there should be two different languages? One for the memory manamgement and another more usable, low-level form for more application-level stuff?
22:16:09 <pikhq> That would be the. . . high-level language.
22:16:18 <CakeProphet> absolute addressing would get confusing when you get out of the context of memory management.
22:16:21 <RodgerTheGreat_> CakeProphet: well, yes. That's what the abstractions are for. You can also make the executable format make all the absolute addresses relative, and convert them when the app is loaded into memory- that's how normal OSes work
22:16:32 <CakeProphet> but the high-level language looks more like C than Brainfuck. :o
22:17:02 <RodgerTheGreat_> it doesn't necessarily have to- as long as the base language is the same, you can abstract it however you want
22:17:30 <RodgerTheGreat_> you could make your own abstraction that looked like glass or Python
22:17:48 <CakeProphet> Huh?
22:17:57 <CakeProphet> That's syntatic differences...
22:18:14 <CakeProphet> I meant... the high-level version syntatically reminds me of pretty much all c-based languages.
22:18:35 <oklopol> (memory allocation function provided by the os here)@<<++[->>@+;<<]>++[->@>+<;<]>(find the add-function's address somehow)#
22:18:38 <oklopol> like that?
22:18:42 <oklopol> 2+2
22:18:45 <oklopol> =4
22:18:52 <RodgerTheGreat_> that's because I want *my* abstraction to look like Java to some extent, and it's a curly-bracket language
22:19:13 <oklopol> @ i meant as the memory jump
22:19:18 <RodgerTheGreat_> I think that would work, oklopol
22:19:20 <oklopol> # as the program execution jump
22:19:22 <CakeProphet> okay... so is the high-level version going to use the same syntax?
22:19:24 <oklopol> good
22:19:40 <oklopol> CakeProphet, you can make your own high-level
22:19:50 <CakeProphet> ...how?
22:19:59 <oklopol> since it's converted to bf anyway... or?
22:20:20 <RodgerTheGreat_> we all just agree on the low-level language, and then we make our own "compilers" to turn our abstractions into the low-level code
22:20:23 <oklopol> i mean, isn't the high-level just a way to write it nice, but insert as brainfuck?
22:20:28 <oklopol> ye
22:20:38 <CakeProphet> I'm talking about syntax differences... where in the specification does it let you alter the syntax?
22:20:57 <oklopol> the OS can of course have a function that does high-level -> low-level
22:21:22 <oklopol> CakeProphet, basically the high-level is just a standard way to make programs in a nice manner for the OS
22:21:31 <oklopol> i think
22:21:34 <oklopol> am i right?
22:21:46 <CakeProphet> >.> I thought we were just going to use esoteric languages to make the OS?
22:21:49 <oklopol> i mean, nice for the programmer
22:21:57 <oklopol> yes, the OS runs ONLY bf
22:21:58 <CakeProphet> C-look-alikes that convert to brainfuck isn't what I had in mine.
22:22:03 <oklopol> DEF-BF
22:22:48 <oklopol> it is only an abstraction, anyone can make one for themselves, but it's te core brainfuck of Def-BF that is used by the OS
22:23:04 <RodgerTheGreat_> yes
22:23:10 <oklopol> intel uses binary, but you write in python, CakeProphet
22:23:34 <oklopol> the same not anyone might wanna write everything in bf
22:23:58 <CakeProphet> hmmm...
22:24:21 <CakeProphet> alright... I understand.
22:24:27 <oklopol> what i like about this, the increment-system makes it O(n) to even do addition (unless done bitwise reducing to O(logn))
22:24:50 <RodgerTheGreat_> heh
22:24:53 <oklopol> so an irc client might have a hard time ponging the ping in the right amount of time in a concurrent system :)
22:25:11 <oklopol> exaggerating tho
22:25:14 <RodgerTheGreat_> well, in theory the Def-BF->Machinecode can improve that a bit
22:25:29 <RodgerTheGreat_> *compiler
22:25:49 <CakeProphet> yeah... no need to do one-by-one transitions.
22:25:59 <CakeProphet> the compiler can just convert it to specific instructions.
22:26:20 <CakeProphet> but on the programmers end it's good ol' BF.
22:26:26 <CakeProphet> with... some funky changes.
22:26:28 <RodgerTheGreat_> yup
22:26:39 <oklopol> but, i hope the bf is only converted to machine code when running?
22:27:00 <oklopol> no executable files etc (unless needed for the OS of course)
22:27:23 <RodgerTheGreat_> depends- we might use Def-BF to write the kernel and bootloader, in which case it'll need to become Machinecode eventually
22:27:34 <CakeProphet> I'd like a more friendly abstraction of def-bf that still looks like def-bf for making new stuff...
22:27:35 <RodgerTheGreat_> but it can be used both ways
22:27:51 <CakeProphet> Like with names instead of memory addresses.
22:27:59 <CakeProphet> more like the first idea I had for def-BF.
22:28:30 <RodgerTheGreat_> it'd be pretty simple to make the @-notation system calamari suggested as an alternate abstraction
22:28:41 <oklopol> no names in the def-bf code, not good, but you can have OS functions that switch string->address
22:28:49 * CakeProphet nods.
22:28:55 <CakeProphet> I meant... as an alternate language of sorts.
22:29:17 <CakeProphet> so I don't have to fool with memmory addresses with higher-level stuff I might want to play around with.
22:29:32 * CakeProphet will do that himself though.
22:29:55 <oklopol> btw is someone able to actually make a computer boot into their own os?
22:30:23 <CakeProphet> dunoo... I'm just having fun writing it out on paper.
22:30:59 <oklopol> the high-level is merely a tool, it's not important to have it until something big is done imo
22:31:15 <GregorR> Use OSKit or that other one that's like OSKit but more up to date.
22:31:20 <CakeProphet> Well... even for small things it's nice to... not-have-to-fool-with-memory-addresses.
22:31:57 <oklopol> GregorR can you link?
22:31:59 <RodgerTheGreat_> I was figuring we could use Def-BF to write the OS itself, with a bit of pure ASM to build the bootloader and such
22:32:04 <oklopol> i can google of course
22:32:10 <CakeProphet> the point of an OS is to manage memory addresses for us... so naturally an abstraction of the core language is needed to continue to make things easier.
22:32:15 <GregorR> oklopol: There's a good one on SF, the name of which eludes me X_X
22:32:48 <oklopol> k, i saw one once but it went offline before i managed to dl it
22:32:49 <CakeProphet> Unless it's easier than having to remember numbers....
22:32:57 <oklopol> you don't have to
22:33:10 <CakeProphet> If I understand correctly... def-BF doesn't have a concept of assignable names.
22:33:25 <CakeProphet> which is mainly what I would add to it.
22:33:35 <CakeProphet> outside of memory management
22:33:36 <RodgerTheGreat_> the core language doesn't, but the abstraction does.
22:33:43 * CakeProphet nods.
22:33:55 <CakeProphet> that's what I meant... should I decide to abstract it... that's what I abstract it with.
22:34:13 <CakeProphet> function names.... pretty much.
22:34:31 <oklopol> +>++>[-]<<<(address of an OS funtion that swaps string->address)# <<< and you have called the function with the name \0x1\0x2
22:34:46 <oklopol> you see what i mean?
22:35:06 <oklopol> the code must not depend on neither addresses of functions nor their names
22:35:19 <oklopol> (well, can be names if done like that in low-level)
22:35:40 <oklopol> you haven't called, sorry
22:35:54 <oklopol> you have "gotten" the function in that memory space
22:35:59 <oklopol> then do another # to call it
22:36:12 <oklopol> +>++>[-]<<<(addr)##
22:36:29 <oklopol> the address there can be a constant since it's an OS function
22:36:36 <oklopol> kinda like an interruption
22:36:38 <oklopol> in asm
22:37:00 <CakeProphet> heh.... unfortunately I didn't understand any of that.
22:37:16 <CakeProphet> damn low-level....
22:37:54 <oklopol> so, before call, memory is like [(address of the OS func),1,2], after the call to the os func [(address of the \0x1\0x2 func),1,2], in the end [whatever the func returned,1,2]
22:38:23 <oklopol> tho one might want to change 1 and 2 to something sent to the function, and actually send them
22:38:29 <oklopol> i hope someone understands me?
22:38:44 <CakeProphet> I got it... just not sure how that lets me do string names. :P
22:38:46 <RodgerTheGreat_> I believe I'm following you so far
22:39:03 <CakeProphet> I'd need an entire BF array to do a string name.
22:39:04 <oklopol> CakeProphet, this is very basic, for an OS it's the compulsory depth of lowishness imo
22:39:13 <oklopol> no
22:39:16 <oklopol> it's done by the os
22:39:36 <oklopol> the os function expects a null-determined string after the point at which it is called
22:39:40 <CakeProphet> ...and how does the program send the string name to the OS function?
22:39:48 <oklopol> and there you have \0x1\0x2
22:40:31 <oklopol> so you can have nice names in the high-level -functions and you can access them in other programs too because you store and retrieve the name with os functions
22:40:49 <oklopol> eh, store the name, retrive the address
22:40:52 <oklopol> more like
22:41:38 <CakeProphet> ++>++>%(add) ...how would my language interpreter... written in def-BF... transfer "add" to this OS function without doing something like (OSFunc, "a","d","d")
22:41:42 <oklopol> and the absolute need not be converted to relative because i believe this isn't brainfuck but Def-BF, which supports absolute?
22:41:44 <oklopol> right?
22:42:42 <oklopol> CakeProphet, your high-level would've changed the "add" into a code that assigns ["a","d","d"] into the memory and calls the necessary OS function for name->address
22:42:59 <oklopol> then taking the returned address of the program executed
22:43:22 <CakeProphet> Right... but it would need to use up a whole array, right? To ensure that it can take a string of variable length and store it.
22:43:24 <oklopol> Def-BF, am i right in saying this is a new language that extends BF a little for us?
22:43:42 <oklopol> CakeProphet, no arrays in BF
22:43:48 <CakeProphet> >.>
22:43:50 <CakeProphet> what?
22:43:54 <oklopol> just a few preceding cells
22:43:57 * CakeProphet 's head implodes.
22:44:00 <oklopol> that are needed
22:44:12 <CakeProphet> how can you not have an array in BF?
22:44:49 <CakeProphet> How can you represent a string in BF by any other means than multiple cells of characters?
22:44:54 <oklopol> you can, but it will just be the knowledge the next n cells are used for one var
22:45:05 <oklopol> null-determination prolly
22:45:07 <oklopol> easiest
22:45:42 <oklopol> or [length,char1,char2,etc]
22:45:44 <CakeProphet> hmmm... alright.
22:45:51 <CakeProphet> null determination would be better.
22:45:58 <CakeProphet> it makes string mutable-er.
22:45:59 <oklopol> i assume you understand i'm just representing a part of the main array python-tsyle?
22:46:01 <oklopol> *st
22:46:11 <CakeProphet> right.
22:46:18 <oklopol> good.
22:46:48 <CakeProphet> I'm just going over in my head how I would use Def-BF to write a new interpreter for an abstracted version of it.
22:47:04 <oklopol> oh yeah, been wanting to ask that
22:47:25 <oklopol> does the OS need to be writed in Def-BF too? i was thinkin it just ran it :\
22:48:14 <CakeProphet> We're going to implement a bunch of esolangs as core languages.
22:48:15 <RodgerTheGreat_> it doesn't *need* to be written in Def-BF, but it'd be nice if we could do that.
22:48:17 <CakeProphet> to write all the OS stuff.
22:48:50 <oklopol> i mean a normal c++ (or python or whatever) program that is the "OS", having an array of programs running and their memory pointers, running them one by one
22:49:00 <CakeProphet> If the kernel is designed for universiality in mind... allowing the core languages to interchange data should be a breeze.
22:49:32 <RodgerTheGreat_> Def-BF is an example of taking a canonical Esolang (BF) and extending it to be powerful enough to do the jobs of an OS. We could similarly extend other existing Esolangs to have these capabilities if we felt it necessary
22:50:01 <CakeProphet> I'd like esoos to be a big mass of esolangs working together. :D
22:50:28 <RodgerTheGreat_> well, we know for a fact that everything higher than kernel-level will be coded in an esolang.
22:50:34 <CakeProphet> with Def-BF being the base for memory management and constructing some simple interpreters.
22:50:39 <oklopol> i'd say we make the memory allocation etc in a "normal" language and then start making OS modules in Def-BF
22:50:44 <oklopol> oh :D
22:50:47 <oklopol> well then :D
22:50:52 <RodgerTheGreat_> how the kernel will break down remains to be seen
22:51:01 <CakeProphet> Def-BF was designed to be for memory management.
22:51:05 <CakeProphet> I think.
22:51:05 <oklopol> the kernel need not that many operations
22:51:12 <RodgerTheGreat_> yeah
22:52:27 <oklopol> but i'm thinking now of an only-Def-BF computer, that has been coded in two layers, c++/such, then esolangs for modules like virtual memory management, Def-BF being what actual programs are written in, am i right in this?
22:53:07 <CakeProphet> We were mainly using Def-BF so that we didn't have to use C or its variants.
22:53:14 <CakeProphet> C is yucky.
22:53:21 <oklopol> because you wanna use both hard-disk and ram without breaking off the "one tape for everything" principle
22:53:26 <oklopol> oh?
22:53:33 <CakeProphet> and shouldn't even be a major part of an esoteric operating system.
22:54:20 <RodgerTheGreat_> oklopol: universally contiguous memory is a major design goal
22:54:22 <oklopol> i'm a little confused still, k, can i use in this OS a program i use on my computer now?
22:54:50 <CakeProphet> Hmmm... dunno.
22:54:56 <oklopol> yes, but can be cut anyway we want in reality because Def-BF doesn't do everything relatively?
22:54:58 <CakeProphet> We haven't discussed portability yet.
22:55:24 <oklopol> okay, because i'm thinking the computer only runs brainfuck
22:55:31 <RodgerTheGreat_> oklopol: it depends on how we decide to build the kernel.
22:55:52 <CakeProphet> nah... it can run more than BF.
22:56:03 <RodgerTheGreat_> if the kernel itself is written in Def-BF, there will be a single tape and Def-BF will be used to host all the other language interpreters, in a sense
22:56:20 <oklopol> as i described before, array of "processes" where a process is two arrays (@; & #:), program pointer and a memory pointer
22:56:29 <CakeProphet> I don't know what the base-base language is... but Def-BF will be for the kernel and consttructing interpreters and some other super-low-level stuff.
22:56:31 <RodgerTheGreat_> but one way or another the OS will support a number of esoteric languages
22:56:37 <oklopol> and each is run one step sequentially
22:57:19 <oklopol> it will, because the first thing to do is to write interpreters in Def-BF
22:57:33 <CakeProphet> Yeah.
22:57:51 <CakeProphet> as well as a standard library of some sort.
22:57:52 <oklopol> but, i'd say Def-BF is kinda like asm of normal computers
22:58:28 <oklopol> i can't see why it should be the core language for PROGRAMMING the OS... even if that was it's original purpose :D
22:58:45 <RodgerTheGreat_> I'd agree with that idea
22:58:50 * CakeProphet wishes there was a named variant of def-bf that could be used for easier construction of a standard library.
22:59:10 <CakeProphet> it shouldn't... the OS should be programmed by esoteric languages in general.
22:59:30 <RodgerTheGreat_> it'd be trivial to compile such a language into Def-BF proper, which is probably how it'll be done
22:59:38 <CakeProphet> We just needed an extension to BF to make it a bit more useful.
23:00:13 <oklopol> true, things like brainfuck -> faster code are done on the fly i thing, they are coded in esoteric languages
23:00:19 <RodgerTheGreat_> I see Def-BF as being used to write the bulk of the OS, and other languages being used to write all the utilities and applications necessary to make it a complete system
23:00:42 <oklopol> bulk of the OS?
23:00:51 <RodgerTheGreat_> by OS, I mean the kernel
23:00:52 <oklopol> can you specify?
23:00:55 <oklopol> k
23:01:57 <oklopol> kernel does what exactly? (i'm really that stupid, yes :))
23:02:20 <CakeProphet> managemes memory, performs software-to-hardware transactions and disk writing.
23:02:44 <CakeProphet> among other things.
23:02:53 <RodgerTheGreat_> and coordinates the inter-operations between other software
23:03:18 <CakeProphet> oh... and it handles processes.
23:03:29 <CakeProphet> YEAH.
23:03:34 <CakeProphet> (caps lock)
23:03:41 <RodgerTheGreat_> heheh
23:03:54 <oklopol> was my idea of the processes a little correct? the array thing
23:04:07 <oklopol> because imo that's all you need for bf
23:04:08 <CakeProphet> not sure.
23:04:41 <CakeProphet> It would need to be more powerful than that.
23:04:41 <RodgerTheGreat_> I think it could work
23:05:03 <oklopol> even if you do things like +++++ -> 5, if we use bignums for the tape (we could :D) there just would be one operation instead of five
23:05:25 <oklopol> because a bignum can be used an array like [inc-oper,5]
23:05:27 <CakeProphet> hmmm... and we won't be doing a traditional filesystem will we?
23:05:30 <CakeProphet> directories are teh suck.
23:05:34 <oklopol> we can
23:05:38 <RodgerTheGreat_> Def-BF provides us with facilities for creating virtual tapes from our primary tape, so it wouldn't be ridiculously hard to implement
23:05:46 <oklopol> yep
23:06:24 <oklopol> of course with non-optimized brainfuck you always know when a program will end
23:06:39 <oklopol> because the ticks of the OS are at steady intervals
23:06:42 <CakeProphet> This is partially a thought experiment as well... to explore some new OS design ideas.
23:07:08 <oklopol> but in case of a change to the optimization algorithms, it's execution time can vary
23:07:23 <oklopol> of course, different options can be set for the optimization
23:07:38 <oklopol> ^^^^^^ these are the jobs done in esolangs
23:07:43 <oklopol> the optimizers etc
23:08:00 <CakeProphet> Everything is done in an esolang. :D
23:08:10 <oklopol> CakeProphet, i'd say it's pretty fucking experimental to do a BF-OS, but whatever
23:09:05 <oklopol> it's just, i can't figure out how to do the core without a lang that understands what is inside a computer
23:09:19 <oklopol> and esolangs are usually very abstract
23:09:24 <oklopol> am i making sence?
23:09:45 <RodgerTheGreat_> yeah
23:10:02 <oklopol> good then
23:10:19 <RodgerTheGreat_> my solution to that problem relies on the idea that Def-BF isn't overly complex to translate into machinecode
23:10:28 <oklopol> true
23:10:38 <CakeProphet> We have the Def-BF-to-machinecode compiler... the kernel... interpreters for a crapload of esolangs... some sort of modular structure for organizing programs, almost like individual functions to the OS.
23:10:45 <oklopol> hey! me got idea! :D
23:11:04 <oklopol> no i didn't
23:11:09 <RodgerTheGreat_> lol
23:11:09 <oklopol> it was stupid :(
23:12:05 <oklopol> but i mean, kernel needs to do the memory allocations etc, so it doesn't help if Def-BF to <internal> is easy, we need it the other way around
23:12:14 <RodgerTheGreat_> yeah
23:12:25 <oklopol> so, how?
23:12:39 <RodgerTheGreat_> ultimately, we may be forced to use another language to build some very core parts of the OS
23:12:44 <CakeProphet> Well... our esolang interpreters probably won't fit the specification exactly... and they'll definetely communicate with the kernel quite heavily to allocate inter-connection between differing programs.
23:13:05 <RodgerTheGreat_> in general, I think we should just try to place as little reliance on these other languages as possible
23:13:27 <oklopol> you mean to non-esolangs?
23:13:40 <oklopol> if so, you're right
23:14:00 <CakeProphet> I think esolangs would work fine.
23:14:04 <CakeProphet> If you organize it right.
23:14:05 <RodgerTheGreat_> bbl- dinner
23:14:12 <oklopol> but, Def-BF is slow, so i'd recommend we don't use it for the core, but rather as the primary lang to use for programs etc
23:14:27 <CakeProphet> It's only slow if you make it slow. ;)
23:14:35 <oklopol> most other esolangs on the other hand do not slow things don't at all
23:14:49 <oklopol> CakeProphet, do you understand the concept of ordo?
23:14:57 <CakeProphet> ordo?
23:15:00 <CakeProphet> big O?
23:15:04 <oklopol> yes
23:15:08 <CakeProphet> Yeah.
23:15:16 <oklopol> good
23:15:22 <oklopol> BF has only + and -
23:15:25 <CakeProphet> but it'll only be O(n) if you make it work like that.
23:15:32 <oklopol> addition is O(logn) max
23:15:51 <oklopol> and it becomes extremely verbose done like that
23:16:10 <CakeProphet> yeah... they're just syntax instructions... with the proper optimizations you can shorten computation times greatly.
23:16:43 <CakeProphet> The commands and what they do are just visualizations... you can compress it into smaller operations.
23:17:19 <oklopol> in most cases, yes, but in that case i'd say Def-BF is already used as the main language for the actual programs, so why not use something else for internal functionality of the OS
23:18:09 <CakeProphet> hehe... we could ues a modified form of Glass. :D
23:18:42 <oklopol> in brainfuck you think something, convert it to brainfuck by doing everything the hard way, when the computer tried to get "what you meant" from the bf-code which doesn't really show the "consept" at all, it might fail
23:19:06 <oklopol> leaving you with less optimizations than you would've had doing it with another lang
23:19:40 <CakeProphet> hey... if uuu is using --Python--, which is a super-high-level language, to construct an entire OS... it can't be that slow.
23:19:42 <oklopol> i doubt there is an interpretor that can convert a division from brainfuck [a thousand chars] to c++ [a/b]
23:20:08 <CakeProphet> characters do not translate to speed.
23:20:12 <oklopol> huh? the only thing slow is BF
23:20:52 <oklopol> what i mean is, the computer doesn't understand how easy it is for it to do the division
23:20:57 <oklopol> it has it built-in
23:21:24 <CakeProphet> a/b is an abstraction for some underlying low-level bit-by-bit operation...
23:21:36 <oklopol> but instead it tries to do it the brainfuck-way, no way it can figure out what it's really doing and substitute a DIV-asm-command
23:22:02 <CakeProphet> but what does DIV do at heart?
23:22:25 <oklopol> what i mean is, bf -> machine code is of course worse code than python -> machine code
23:22:31 <oklopol> what does that matteR?
23:22:32 <oklopol> *r
23:22:41 <oklopol> it's faster than doing a division manually
23:23:00 <CakeProphet> Programmers are terrible at conceptualizing how their programs work... because they're so damn abstract.
23:23:16 <CakeProphet> it's probably not even worth the trouble of considering it.
23:23:24 <oklopol> actually might not be, but are you really saying an interpretor can make brainfuck as fast machine code that it can make python?
23:23:40 <oklopol> might not be DIV faster that doing manually i mean
23:23:50 <CakeProphet> But what's "manually"./
23:24:03 <oklopol> that's not the point
23:24:20 <CakeProphet> in BF... the operations are just very specific... it doesn't nessicarily translate to any more work for the computer.
23:24:27 <oklopol> manually = with bit shifts and bitwise logical operations
23:24:48 <oklopol> omg i want RodgerTheGreat_ here... hopefully agrees with me :\
23:25:01 <oklopol> if he says what you say, i admit defeat
23:25:19 <oklopol> (i'm not really sure what you mean, actually)
23:26:37 <CakeProphet> yeah I'm probably wrong.
23:27:11 <CakeProphet> probably more wrong than you... but being right when it comes to optimization is nigh impossible.
23:28:12 <oklopol> huh?
23:28:25 <oklopol> what do you mean by that?
23:28:50 <oklopol> it's almost impossible to optimize?
23:29:31 <oklopol> almost, but not exactly! i can show you: ++--- -> - <<< i optimized here
23:30:34 <CakeProphet> meh... alright.
23:31:51 <CakeProphet> it's possible... but if you didn't -set the situation up yourself-, and the optimization wasn't so painfully obvious... I'm saying conceptualizing optimization to a certain extent, in less specific languages than brainfuck, can be difficult.
23:33:03 <oklopol> well then, how do you tell a brainfuck program to divide two numbers by each other using a fast way?
23:33:24 <oklopol> all you can do is do it the brainfuck way, which, believe me, is very verbose
23:33:54 <oklopol> that will prolly be translated to what it was in brainfuck, only with incs instead of +'s
23:34:15 <oklopol> so instead of a fast DIV a,b, tons of incs and decs and loops
23:34:21 <CakeProphet> alright... but if your BF implementation maps directly to machine code... it will be much faster than a BF implemented in C.
23:34:48 <CakeProphet> O() is relative to the environment
23:35:04 <CakeProphet> but yeah, you're right about BF being slower.
23:35:04 <oklopol> you talking about compilation of interpretinf?
23:35:06 <oklopol> *g
23:35:28 <CakeProphet> no.. I'm just talking about language.
23:35:31 <oklopol> i'm talking about the core, so compilation
23:35:35 <oklopol> just language?
23:35:40 <oklopol> k
23:35:41 <oklopol> i'm not
23:35:47 <CakeProphet> Python is implemented in CPython, which is implemented in C... O(n) in Python will be slower than O(n) in C.
23:35:50 <oklopol> i'm talking about the programming of the core
23:36:13 <oklopol> CakeProphet, no no no no no, O(n) in python is O(n) in C
23:36:28 <oklopol> but it's ALWAYS O(nlogn) in BF
23:36:51 <oklopol> actually, no ucase on the always
23:36:59 <oklopol> + is O(1) everywhere
23:37:03 <oklopol> for example
23:37:16 <oklopol> but python is conseptually the same as C
23:37:25 <oklopol> in speed
23:37:32 <oklopol> BF on the other hand is not
23:37:38 <CakeProphet> O(n) means n * times one comptation. one computation takes longer amounts of times in different languages.
23:38:18 <CakeProphet> O() is used to describe -relative- speed.
23:38:18 <oklopol> yes, what is your point?
23:38:27 <oklopol> orly?
23:38:28 <oklopol> :D
23:38:48 <CakeProphet> my point is that O(n) in C is faster than O(n) in Python.
23:39:03 <CakeProphet> because it's relative to the speed of "one computation".
23:39:04 <oklopol> then you don't know what you're talking about
23:39:11 <oklopol> well, technically
23:39:19 <oklopol> but it's not the point with O()
23:39:43 <CakeProphet> Any benchmark between C and Python involving something with the same O time will show that C is usually the faster of the two.
23:40:06 <CakeProphet> of course... the point of O isn't to comparse like that, you're right.
23:40:12 <oklopol> good
23:40:44 <oklopol> but, in python everything is guaranteed to be the same ordo as in c
23:40:48 <oklopol> everything normal
23:40:56 <oklopol> in brainfuck it isn't
23:40:58 <CakeProphet> How?
23:41:03 <oklopol> how what?
23:41:31 <CakeProphet> I mean... how can a language implemented in some other language have operations that are the same speed in the other language?
23:41:38 <oklopol> -__________-
23:41:54 <oklopol> let's say everything is compiled, for one
23:42:15 <CakeProphet> eventually, yes.
23:42:17 <oklopol> no c running when you run your python, no python running when you run your pythong code
23:42:19 <oklopol> *python
23:42:23 <oklopol> www.pythong.org
23:42:54 <CakeProphet> ...
23:43:07 <oklopol> written that wrong 3 times now, two times trying for www.python.org
23:43:25 <oklopol> maybe i'm subconsciously gay or something
23:43:52 <oklopol> but that's a teensy bit off-topic maybe
23:44:13 <GregorR> For your enjoyment, part of why it's interesting to be me:
23:44:22 <GregorR> I was trying to decide where to go for New Years ...
23:44:28 <GregorR> So I called some friends to see where they were going ...
23:44:37 <GregorR> At least four of them were already planning to come to my abode.
23:44:41 <GregorR> And have a NY party there.
23:44:45 <oklopol> :D
23:45:16 <GregorR> I don't have to plan a New Years party, it plans itself.
23:45:22 <oklopol> quine
23:45:30 <oklopol> not really
23:51:39 <oklopol> i wanted to code the NY but i gotta go party with my friends :(
23:57:18 <CakeProphet> hmmm... what's ASM?
23:57:59 <oklopol> assembly
23:58:06 <CakeProphet> ah.
23:59:14 <CakeProphet> I think glass would be a good candidate to use. :D
23:59:20 <CakeProphet> for some stuff.
2006-12-31
00:00:07 <CakeProphet> It's easy to parse, being stack-based... and is pretty capable of doing things despite its erm... verbosity.
00:00:13 <CakeProphet> Speed has never really been a concern of mine.
00:00:37 <oklopol> sure, just the (System)-class to access memory management etc and it would be a nice language for the core
00:01:12 <CakeProphet> !glass {M[m(_o)O!"wheee"(_o)o.?]}
00:01:15 <EgoBot> wheee
00:01:20 <CakeProphet> I'd like to try some orthogonal persistency.
00:01:36 <CakeProphet> plus it looks cool when you do output... like a bunch of confused faces.
00:02:29 <CakeProphet> It's definetely one of the more structure esoteric languages.
00:02:35 <CakeProphet> d
00:04:22 <oklopol> !glass {M[m(_o)0O!"wheee"o.?]}
00:04:32 <oklopol> whoops :D
00:04:38 <oklopol> !glass {M[m(_o)0O!"wheee"1o.?]}
00:04:41 <EgoBot> wheee
00:05:01 <CakeProphet> It seems kind of redundent to do it that way.
00:05:41 <CakeProphet> the ! operation itself saves the object to _o... no use retrieving it from the stack when you have it as a variable.
00:06:09 <oklopol> it was smaller yay \o/
00:08:20 <CakeProphet> hehe... I'd do the kernel in Python myself. :D
00:08:25 <CakeProphet> but that's not very esoteric.
00:09:07 <oklopol> i still don't know what will be the goal for the OS
00:09:18 <CakeProphet> to be esoteric... and try out shit.
00:09:23 <CakeProphet> no real super-huge goal in mind.
00:09:33 <oklopol> to be written in esoteric langs, to run esoteric langs, or both
00:09:50 <CakeProphet> both would be nice.
00:09:52 <oklopol> the middle one is the one i'd use :)
00:09:56 <oklopol> and that
00:10:06 <CakeProphet> Any computer can run esoteric langs.
00:10:16 <CakeProphet> but we want our computer to consist of esolangs. :D
00:10:29 <oklopol> that's what i meant by that
00:11:27 <CakeProphet> we could try out some new OS design concepts... I like what uuu is doing currently.
00:12:01 <oklopol> i read that, basically just realizing no need to separate files and variables
00:12:09 <oklopol> *have
00:12:35 <CakeProphet> I like the functional (and/or object oriented) approach to looking at it.
00:12:36 <oklopol> have i been hit in the head a few times recently? every goddamn sentence is incomplete...
00:13:02 <oklopol> ye, on the other hand, i'd like this one to be the Bf-thing
00:13:28 <CakeProphet> If you treat programs as components that can all be used interchangeably with each other... you have quite a powerful library to work off of.
00:13:49 <oklopol> a-ha?
00:14:07 <CakeProphet> the other goal is to make esolangs into something useful. :D
00:15:24 <oklopol> i'd like to have the Def-BF running OS on my computer
00:15:45 <oklopol> i mean, it exclusively
00:15:48 <oklopol> this one sucks
00:15:52 <CakeProphet> I dunno... I'm starting to reconsider Def-BF :/
00:16:05 <oklopol> okay
00:16:12 <CakeProphet> It's definetely a useful estension to BF... but should it be the entire kernel?
00:16:53 <oklopol> i have an entire system in my mind already, i'd say no
00:17:06 <oklopol> entire kernel written on it or?
00:17:13 <CakeProphet> >.> I kinda don't like the idea of Def-BF using Absolute addresses.
00:17:15 <CakeProphet> Why does it need to do that?
00:17:27 <oklopol> how else would you do functions?
00:17:39 <CakeProphet> ....names?
00:17:58 <oklopol> that would be absolute addressing
00:18:06 <CakeProphet> give them symbolic names that lead to memory addresses.
00:18:16 <oklopol> == absolute addressing
00:18:39 <oklopol> my idea was the names
00:18:39 <CakeProphet> ...by "absolute addressing" I meant requiring the entire numeric memory address to call a function.
00:19:04 <CakeProphet> the names was the original concept... RodgerTheGreat surprised me with memory addresses.
00:19:12 <oklopol> huh? same thing
00:19:18 <CakeProphet> ...
00:19:24 <CakeProphet> It's very different.
00:19:30 <oklopol> except memory addressing keeps the bf
00:19:43 <oklopol> names, and it's only bf by algorithmic slowness
00:19:43 <CakeProphet> "add" is much easier to remember than "0344534"
00:20:03 <oklopol> yes, and i proposed an OS function to ease that up
00:20:29 <CakeProphet> so now you have to remember the Os functions memory address... which changes each use.
00:20:34 <CakeProphet> what's the difference?
00:20:58 <oklopol> you can have names for OS functions
00:21:10 <CakeProphet> If the language requires memory addresses at some point... you will have to use memory addresses at some point.
00:21:16 <oklopol> which are just changed into right function numbers
00:21:44 <oklopol> but, you cannot have names for other than OS functions with the same lookup method
00:21:46 <CakeProphet> How will you call the OS function from within the program without specifying its memory address?
00:22:39 <oklopol> <NAME> can be changed to the address when compiling (compiling as in writing the final program to where it will be used at)
00:22:53 <oklopol> as OS functions can have static addresses
00:23:06 <CakeProphet> what will do this compiling?
00:23:19 <oklopol> programmer
00:23:34 <oklopol> or the compiler if the programmer does a few macros
00:23:47 <CakeProphet> and if you're going to augment the syntax to do that... why not augment the syntax entirely so that it accepts any symbol name.
00:23:55 <oklopol> because
00:23:57 <RodgerTheGreat_> back
00:24:02 <oklopol> it's a totally different thing
00:24:09 <CakeProphet> what I'm saying is... why even bother with detouring around a maleable language spec?
00:24:21 <CakeProphet> when you can just change the language spec?
00:24:38 <oklopol> then why use bf?
00:24:54 <CakeProphet> We're not... we're using functional bf.
00:25:04 <CakeProphet> with callable functions...
00:26:01 <oklopol> don't see why add them, would take away the whole small-set-of-char-that-make-up-a-language idea of brainfuck
00:26:13 <CakeProphet> we want to use bf... but we want some modularity. Having to fiddle with absolute addresses is just more confusing than manuially copy and pasting the code... it doesn't extend the language to have modularity.
00:26:18 <oklopol> when you can easily simulate that with a few OS functions
00:27:01 <oklopol> so... should i use a module at 15 from 189384, i should put 189369 <'s together?
00:27:29 <oklopol> oh
00:27:34 <oklopol> memory jumps okay?
00:27:49 <CakeProphet> that makes it even harder... you have to write a program to spell out the functions string name...and then get the memory address of the OS, call it with those characters... and then call the resulting function... it would be easier to just add the contents of the function manually.
00:27:53 <CakeProphet> there's no point.
00:28:17 <oklopol> eh, now when executing the program
00:28:34 <oklopol> would there be "function insertion" in the codestring or smth?
00:29:00 <CakeProphet> hmmm?
00:29:20 <oklopol> hmm
00:29:23 <oklopol> forget that
00:30:04 <oklopol> but, would the uuu's no files -system be used?
00:30:20 <CakeProphet> The entire point of the functional extension to BF was to make it easier to use for constructing something like an operating system.
00:30:31 <CakeProphet> when you require all the extra work to call a function... it's not really worth it.
00:30:44 <oklopol> but, are you talking about function calls inside one program?
00:30:48 <CakeProphet> we wouldn't use the typical file system... it would be a different model.
00:31:05 <CakeProphet> I'm just talking about function calls.
00:31:10 <oklopol> okay
00:31:21 <oklopol> a program being a normal function?
00:31:35 <CakeProphet> Sure.
00:32:48 <oklopol> but no absolute addresses?
00:32:58 <CakeProphet> Why not just have symbolic names as an embedded functionality to the language... with the underlying compiler handling all the finding-the-absolute-memory-address?
00:33:12 <CakeProphet> there could be a registry of names to absolute addresses built-in to the OS.
00:33:47 <CakeProphet> or is that what you were saying we do?
00:34:11 <CakeProphet> to me it sounded like we should build it over the top of the base language like a weird abstraction... that would require quite a bit of work on the programmers behalf.
00:34:27 <CakeProphet> "to me it sounded like you said we should build..."
00:34:46 <oklopol> (name to look up) <<< would be a sensible syntax for looking up the address of a function to exec
00:35:14 <oklopol> but i guess i'll see the point of making bf more functional at some point
00:35:30 <CakeProphet> RodgerTheGreat_, oh... and hey.
00:35:42 * RodgerTheGreat_ waves
00:35:57 <CakeProphet> we were just busy being confused by each others explainations.
00:36:03 <oklopol> :D
00:36:05 <oklopol> ye
00:36:06 <oklopol> hi, RodgerTheGreat_
00:37:24 <CakeProphet> There should be no difference between a function and a program.
00:37:35 <oklopol> true
00:37:54 <CakeProphet> no need to stuff applications in huge directory paths.
00:38:21 <CakeProphet> just stuff them in a single os-level function (let's call them a blob for distinction)
00:38:41 <oklopol> or, a dictionary :D
00:38:45 <CakeProphet> >.>
00:38:51 <CakeProphet> a dictionary is like a hash table.
00:38:57 <CakeProphet> doesn't describe a program too well.
00:39:04 <oklopol> isn't that what we want?
00:39:10 <oklopol> hmm
00:39:18 <CakeProphet> programs as hash tables?
00:39:21 <oklopol> i mean, isn't it basically a name to address?
00:39:25 <oklopol> nje
00:39:32 <CakeProphet> oh... that's for name-to-address stuff... that's different.
00:39:33 <oklopol> yeah
00:39:48 <CakeProphet> I'm talking about what we're going to do for our new "file system".
00:40:24 <CakeProphet> The name-to-address would just be an orthogonally persistent hash table.
00:40:31 <oklopol> but, wouldn't that make everything use just global variables?
00:40:41 <oklopol> the no-sub-thingies
00:40:54 <GregorR> And what language will you write all this in?
00:41:05 <CakeProphet> Each program would have a scope.
00:41:09 <GregorR> (You'll excuse me if I'm dripping with scepticism)
00:41:13 * RodgerTheGreat_ waves the Def-BF flag
00:41:14 <oklopol> :D
00:41:17 <GregorR> Err, skepticism
00:41:20 <CakeProphet> Get a towel!
00:41:36 <CakeProphet> Possibly def-BF if we don't change our mind.
00:41:42 <RodgerTheGreat_> and I'm somehow unsurprised that gregor is being pessimistic about the project.
00:42:07 <oklopol> it seems it's an OS written in Def-BF running only Def-BF
00:42:10 <CakeProphet> RodgerTheGreat_, Do we have to use absolute memory address in def-bf?
00:42:27 <RodgerTheGreat_> It's going to be a really long haul if we actually want to produce a useable OS in the end
00:42:37 <CakeProphet> I think we might want to reconsider the kernel language though...
00:42:48 <CakeProphet> as ok said... bf isn't terribly efficient.
00:42:56 <CakeProphet> it can be if you do it right.
00:43:57 <RodgerTheGreat_> CakeProphet: it's the best way to do it. In modern operating systems, executables contain absolute addresses which are patched to appropriate values based on where they're loaded as they're loaded into memory
00:44:57 <CakeProphet> Can't we use symbolic names and map them through some kind of startup-generated hash table?
00:45:21 <CakeProphet> why not both?
00:46:29 <RodgerTheGreat_> that's really no different than a runtime patch. There's no need to store data in a clumsy way (strings) when we can do it in an efficient way (addresses). Absolute addresses are more complex to code with, but that's the *entire* point of having a compiler in the first place.
00:46:30 <CakeProphet> If all else fails and we decide BF isn't a good kernel language... we can just make a new more assembly-friendly esolang. :D
00:46:37 <RodgerTheGreat_> heh
00:47:40 <CakeProphet> I wanted the BF extension to be uncumbersome to use on its own instead of a super low-level language... maybe we should split it up into different languages?
00:49:07 <RodgerTheGreat_> that's the point of defining Def-BF as a series of high-level variants and a core low-level standard.
00:50:54 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
00:51:33 <CakeProphet> RodgerTheGreat_, But is def-BF doing to be an efficient core langauge?
00:51:56 <RodgerTheGreat_> it ultimately depends on the level of complexity we build into the compiler
00:52:23 <CakeProphet> Maybe we should use an Esoteric Assembly Candy Wrapper Language
00:52:25 <oklopol> but, my example from before, there is no way to even make the compiler understand a simple division
00:52:45 <oklopol> and compile it into efficient machine code
00:53:18 <RodgerTheGreat_> I figured that at the very least, using Def-BF as a singular standard means we can work on optimizing the compiler together and all abstractions of the low-level language will benefit
00:54:39 <CakeProphet> Glass could be an efficient base language.
00:54:42 <RodgerTheGreat_> oklopol: it's true that a simple language like BF is more difficult to compile efficiently than a language with more symbols and keywords. It doesn't make it impossible to compile efficiently, it just requires that your compiler analyzes your code more deeply, resulting in a more complex compiler. It's harder, but possible.
00:55:34 <CakeProphet> It has most of the high-level constructs needed to translate directly to machine code.. and it's easy to extend onto...
00:55:52 <oklopol> well, that's way out of my league, and at that point i naturally say it's impossible :)
00:56:27 <RodgerTheGreat_> heh
00:56:36 <oklopol> "<CakeProphet> It has most of the high-level constructs needed to translate directly to machine code." i don't quite follow
00:56:40 <RodgerTheGreat_> just my suggestion- never claim something
00:56:48 <RodgerTheGreat_> is impossible on #Esoteric. :)
00:56:48 <oklopol> :D
00:57:17 <CakeProphet> well it has a division operator... for example... which could translate directly to the DIV instruction.
00:57:30 <CakeProphet> few esolangs have a division operator. ;)
00:57:41 <oklopol> "<CakeProphet> Glass could be an efficient base language." missed this line
00:57:44 <oklopol> sorry
00:58:16 <CakeProphet> It seems just similar enough to assembly to make a nice translation... while still being freaky as crap.
00:58:21 <CakeProphet> Not to mention it's easy to parse.
00:58:33 <GregorR> Trivial to parse, even ;)
00:58:47 <GregorR> I still don't know what the bork is with A.a X_X
00:59:18 <oklopol> how can it even get bugs without a rebuild?
00:59:30 <oklopol> i mean, worked fine before
00:59:31 <CakeProphet> and the OO gives us a nice organizational structure to easily create higher-level stuff.
01:00:07 <CakeProphet> It's probably the most useful esolang I know. :P
01:00:12 <GregorR> Hah :P
01:00:26 <CakeProphet> the postfix is just a minor setback until you get used to it.
01:00:30 <CakeProphet> then it's strangely intuitive.
01:00:31 <GregorR> Yeah, it's a miserable failure in that sense ;)
01:01:16 <CakeProphet> After a few hours or so I adapted to it.
01:01:52 <RodgerTheGreat_> so, we're veering towards a glass-based kernel, using Def-BF for less critical parts of the system?
01:02:09 <CakeProphet> that's where I'm veering... dunno if it's the consensus.
01:02:24 <CakeProphet> if we have problems with that... we can always just try something different.
01:02:27 <GregorR> If I knew what Def-BF was :P
01:02:38 <oklopol> http://nonlogic.org/dump/text/1167512946.html
01:02:42 <CakeProphet> fortunately we have no deadline to actually finish this thing.
01:02:56 <GregorR> If I got off my lazy bum and finished C2BF, that'd help ;)
01:03:04 <CakeProphet> GregorR, To avoid cringing... you can ignore most of the high-level part... it's not important to the actual language.
01:03:18 <RodgerTheGreat_> pfft
01:03:37 <RodgerTheGreat_> everybody's hating on HLDFBF
01:03:37 <CakeProphet> It's like CBrainfuck! :o
01:03:52 <GregorR> HLDFBF?
01:03:59 <CakeProphet> high-level variant of def-bf
01:04:03 <RodgerTheGreat_> High-Level Def-BF
01:04:18 <GregorR> That's only a sensible shortform if it's High-Level DeF-BF
01:04:29 <CakeProphet> jeje
01:04:55 <RodgerTheGreat_> a 6-letter acronym isn't really a sensible shortform in *any* instance...
01:04:57 <CakeProphet> Out of all the esolangs, Glass seems like one of the better choices for such a crucial role.
01:05:12 <GregorR> Without the high-level stuff, it's sort of like BF + setjmp
01:05:30 <CakeProphet> yeah... it's BF with subroutines.
01:06:27 <RodgerTheGreat_> esentially
01:06:33 <CakeProphet> Plus I'm much much more capable in an OO language than in an impertivive semi-subroutine-al language like def-bf.
01:06:52 <RodgerTheGreat_> I thought it was the simplest addition I could make to BF that would allow functions without too much trouble
01:07:01 <CakeProphet> OO and (real) functional languages are my cup of tea.
01:07:10 * GregorR hands CakeProphet Plof.
01:07:18 <RodgerTheGreat_> heh
01:07:21 <CakeProphet> link?
01:07:29 <GregorR> http://www.codu.org/plof/
01:07:39 <RodgerTheGreat_> hell, we could go with another famous gregor language and write the kernel in ORK.
01:07:51 <GregorR> There is such a thing as a kernel.
01:08:00 <GregorR> A kernel can execute a function.
01:08:05 <GregorR> A kernel can execute a syscall.
01:08:39 <RodgerTheGreat_> lol
01:08:45 <CakeProphet> hahahaha
01:08:46 <CakeProphet> yes... ORK
01:08:59 <CakeProphet> Glass is funkier though... and less tiring to type. :D
01:09:09 <CakeProphet> Plof basically looks like... C.
01:09:12 <RodgerTheGreat_> if ORK can meet the I/O requirements, I'm all for using it to write the kernel.
01:09:19 <GregorR> CakeProphet: Plof isn't esoteric by nature :P
01:09:30 <RodgerTheGreat_> talk about self-documenting code.
01:09:39 <CakeProphet> hahahaha
01:10:00 <CakeProphet> Both maybe?
01:10:18 <CakeProphet> Or do we need a kernel before we can do the inter-language data stuff?
01:10:49 <CakeProphet> I think Ork classes and objects could translates almost trivially into Glass. :D
01:10:56 <oerjan> hmmm...
01:11:18 <GregorR> Glass' classes are a superset of ORK's classes I believe.
01:11:31 <CakeProphet> hahaha... Glass was written in Ork?
01:11:36 <oerjan> !glass {M[m(_o)O!<2><2>~A.a~(_o)o.?]}
01:11:50 <GregorR> I just had a thought about why A.a isn't working ...
01:11:51 <CakeProphet> What's the ~ for?
01:11:59 <oerjan> !glass {M[m(_o)O!<2><2>~A.s~(_o)o.?]}
01:12:03 <GregorR> CakeProphet: It's the secret way of getting builtin functions :P
01:12:07 <GregorR> CakeProphet: You're not supposed to use it X_X
01:12:09 <oerjan> !glass {M[m(_o)O!<2><2>~A.a~(_o)(on).?]}
01:12:13 <EgoBot> 4
01:12:15 <oerjan> hah!
01:12:16 <CakeProphet> ....
01:12:17 <GregorR> ZOMG
01:12:23 * CakeProphet dies.
01:12:38 <CakeProphet> GregorR, You didn't tell me there was a secret!!!
01:12:53 <CakeProphet> ....guess that's why it's a secret?
01:13:02 <GregorR> ARGH
01:13:06 -!- CakeProphet has changed nick to SevenInchBread.
01:13:09 <GregorR> My suspicion was right!
01:13:15 * GregorR bangs his head into a wall
01:13:23 <GregorR> Somebody overwrote the A class in EgoBot, and it cached the borken one :)
01:13:59 <oerjan> aha!
01:14:24 <GregorR> !glass {A[a~A.a~][s~A.s~][m~A.m~][d~A.d~][(mod)~A.mod~][f~A.f~][e~A.e~][(ne)~A.ne~][(lt)~A.lt~][(le)~A.le~][(gt)~A.gt~][(ge)~A.ge~]}{S[l~S.l~][i~S.i~][(si)~S.si~][a~S.a~][d~S.d~][e~S.e~][(ns)~S.ns~][(sn)~S.sn~]}{V[n~V.n~][d~V.d~]}{O[o~O.o~][(on)~O.on~]}{I[l~I.l~][c~I.c~][e~I.e~][n~I.n~]}{(Debug)[(cl)~Debug.cl~][(fl)~Debug.fl~][(fc)~Debug.fc~][s~Debug.s~]}
01:14:27 <EgoBot> OK
01:14:33 <SevenInchBread> ...
01:14:43 <GregorR> !glass {M[m(_o)O!(_a)A!<2><2>(_a)a.?(_o)(on).?]}
01:14:47 <EgoBot> 4
01:14:50 * GregorR takes a bow.
01:15:15 <SevenInchBread> The good thing about esolangs is that they're so simple... translating data from one language into another via some universal OS-centric importing mechanism is easy.
01:15:24 <oklopol> i was that someone! :DDDD
01:15:31 <oklopol> i mean, sorry, very sorry
01:15:35 * GregorR shakes his fist :P
01:15:52 <GregorR> In the future, if any of the builtin classes are broken, grab the standard definition out of builtins.cc (or from what I just pasted)
01:16:31 -!- tgwizard has quit (Remote closed the connection).
01:16:39 <oerjan> this is weird - you mean EgoBot has just one eternally running Glass interpreter? :)
01:16:46 <oklopol> errr.... it's a part of the language to be able to rewrite standard classes? :D
01:17:28 <GregorR> oerjan: No, it reruns it, but the standard interpreter can cache classes if you'd like.
01:17:32 <GregorR> oklopol: Yes.
01:17:51 <oklopol> i mean if i did !glass {A}{S}{M[m]}, my interpretor should no longer have them?
01:17:52 <SevenInchBread> ORK would be awesome... as well as Glass. :D
01:18:00 <GregorR> oklopol: Correct.
01:18:10 <GregorR> oklopol: However, it would only /permanently/ remove them if you used a cache.
01:18:37 <oklopol> what do you mean?
01:18:40 <oklopol> by cache
01:19:00 <GregorR> oklopol: Whenever EgoBot is given a Glass program, it saves all of the classes it was given and reuses them the next time.
01:19:13 <GregorR> So I can use the BF class on EgoBot, since I entered it once a long long time ago.
01:19:21 <oklopol> wow
01:19:24 <oklopol> show it
01:19:46 <GregorR> ... the cache, the BF class, or the BF class in action?
01:20:13 <GregorR> !glass {M{m(_b)(BF)!">+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+."(_b)(bf).?]}
01:20:15 <EgoBot> OK
01:20:20 <oklopol> !glass {M["+++."m(_bf)0BF!(run).?]}
01:20:21 <GregorR> Errrm, that was borken a bit :)
01:20:25 <EgoBot> OK
01:20:30 <GregorR> !glass {M[m(_b)(BF)!">+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+."(_b)(bf).?]}
01:20:35 <EgoBot> Hello World!
01:20:59 <oklopol> wow cool
01:21:06 <oklopol> can i see the codE?
01:21:44 <GregorR> One sec.
01:22:39 <GregorR> Hm :P
01:22:47 <GregorR> Pastebin! :P
01:25:01 <SevenInchBread> GregorR, Do you have a list constructor?
01:25:04 <SevenInchBread> I was making one myself.
01:25:24 <SevenInchBread> lemme see if egobot still has it.
01:25:28 <GregorR> http://pastebin.ca/297373
01:25:41 <GregorR> I have Arr, which is really a LLL despite being called an Arr[ay] :P
01:26:56 <oklopol> LLL?
01:27:22 <SevenInchBread> !glass {M[m(_o)O!(_c)(Con)! <2><3>(_c)(build).?(cdr).?(_o)o.?]}
01:27:29 <GregorR> oklopol: Linear Linked List
01:27:33 <oklopol> ah
01:28:02 <GregorR> I am apparently the only person on the planet that shortens it to LLL ;)
01:28:18 <SevenInchBread> The syntax for a singleton class in ORK should be "There can be only one <class>"
01:28:24 <SevenInchBread> which would sound cool for building a kernal.
01:28:29 <SevenInchBread> There can be only one kernal...
01:28:42 <GregorR> ORK's compiler is OSS, have at it ;)
01:29:09 <SevenInchBread> What's it written in?
01:29:34 <GregorR> Either C or C++ I'm sure.
01:29:40 <SevenInchBread> Bleh.
01:29:41 <GregorR> (It's been a while since I wrote it ;) )
01:29:47 <GregorR> Glass is in C++ :P
01:29:51 <GregorR> EgoBF is in C ...
01:29:56 <GregorR> EgoBot is in C++
01:29:59 <SevenInchBread> Glass would more readily translate to assembly, methinks.
01:30:07 <SevenInchBread> as far as parsing... and some other things.
01:32:12 <RodgerTheGreat_> bbiab
01:32:20 <SevenInchBread> lol k
01:32:27 <GregorR> Incidentally, who the bork is SevenInchBread?
01:32:35 -!- SevenInchBread has changed nick to CakeProphet.
01:32:39 <GregorR> Ahhhhhhhhhhh
01:32:46 <CakeProphet> My true form is revealed.
01:32:48 <GregorR> You prophesized bread instead of cake then?
01:32:49 <CakeProphet> I have countless nicknames.
01:32:56 <CakeProphet> no no... I'm just... bread.
01:33:01 <CakeProphet> it's not meant to be taken literally.
01:33:05 <CakeProphet> it's very surreal, you see.
01:33:09 -!- CakeProphet has changed nick to GrandmotherChaos.
01:33:23 <GregorR> I don't understand such nicks, given that mine is as uninteresting as they come.
01:33:25 <oerjan> The Mother of a Thousand Crumbs...
01:33:40 <GrandmotherChaos> SevenInchBread just sounded bizzare...
01:33:43 <GrandmotherChaos> it's my favorite.
01:33:52 <GrandmotherChaos> in fact...
01:33:56 -!- GrandmotherChaos has changed nick to SevenInchBread.
01:33:59 <SevenInchBread> ah... there we go.
01:36:26 <SevenInchBread> GregorR, GREGOR
01:36:31 <SevenInchBread> WILL YOU HELP US?
01:36:35 <SevenInchBread> WILL YOU SAVE THE DAY?
01:37:11 <SevenInchBread> ?.?
01:37:36 <SevenInchBread> !bf >.<
01:38:00 <SevenInchBread> !ps
01:38:03 <EgoBot> 2 SevenInchBread: ps
01:38:12 <SevenInchBread> !bf >.<
01:38:16 <SevenInchBread> !bf >.<
01:38:21 <SevenInchBread> !bf >+.<
01:38:24 <EgoBot> <CTCP>
01:38:27 <SevenInchBread> Yay
01:38:54 <GregorR> Wha?
01:38:58 <SevenInchBread> !bf +[.+]
01:39:02 <EgoBot> <CTCP>
01:39:17 <SevenInchBread> !kill 1
01:39:19 <SevenInchBread> !ps
01:39:24 <GregorR> !bf +[>+]
01:39:28 <EgoBot> Process 1 killed.
01:39:30 <EgoBot> 1 SevenInchBread: ps
01:39:31 <GregorR> WEEEEEEEEEEEEEEEEEEEEEEH
01:39:31 <oerjan> :D
01:39:32 <EgoBot> realloc: Cannot allocate memory
01:39:53 <SevenInchBread> We killed it?
01:40:00 <GregorR> Nah
01:40:04 <GregorR> That was just EgoBF dying ;)
01:40:16 <SevenInchBread> Ah... it's fault taulerant. :D
01:40:33 <SevenInchBread> Is it like... a bunch of subprocesses basically?
01:40:45 <GregorR> It is like a bunch of subprocesses literally.
01:41:25 <SevenInchBread> Python has really nifty subprocess handling...
01:41:32 -!- cmeme has quit ("Client terminated by server").
01:41:36 <SevenInchBread> hip-hip hurray for OO and functional.
01:41:43 -!- cmeme has joined.
01:42:00 <SevenInchBread> GREGORR
01:42:04 <SevenInchBread> WILL YOU HELP US?
01:42:07 <GregorR> EgoBot is nothing more than a collection of different interpreters written in all sorts of different languages.
01:42:14 <GregorR> Plus a runtime environment for them.
01:42:22 <SevenInchBread> BUILD THE PERFECT OS?
01:42:22 <GregorR> I might.
01:42:27 <GregorR> I'm just skeptical is all.
01:42:41 <SevenInchBread> Confidence goes a long way. :D
01:47:59 -!- Sukoshi has left (?).
01:48:09 -!- Sukoshi has joined.
01:52:43 <SevenInchBread> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*]} {M[m(_o)O!(_er)(Con)!(_e)<1><2>(_er)(build).? (_e)(car).?(_o)o.?(_e)(cdr).?(_o)o.?]}
01:53:24 <SevenInchBread> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*]} {M[m(_o)O!(_er)(Con)!(_e)<1><2>(_er)(build).?= (_e)(car).?(_o)o.?(_e)(cdr).?(_o)o.?]}
01:53:39 <oerjan> (on)
01:54:23 <SevenInchBread> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*]} {M[m(_o)O!(_er)(Con)!(_e)<1><2>(_er)(build).?= (_e)(car).?(_o)on.?(_e)(cdr).?(_o)on.?]}
01:54:37 <oerjan> the parentheses are mandatory
01:54:41 <SevenInchBread> ...
01:54:45 <SevenInchBread> forgot
01:54:57 <SevenInchBread> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*]} {M[m(_o)O!(_er)(Con)!(_e)<1><2>(_er)(build).?= (_e)(car).?(_o)(on).?(_e)(cdr).?(_o)(on).?]}
01:56:06 <SevenInchBread> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*]} {M[m(_o)O!<1><2>(_er)(Con)! (_e)(car).?(_o)(on).?(_e)(cdr).?(_o)(on).?]}
01:56:13 <SevenInchBread> forgot Con didn't have the build method like List.
01:56:26 <SevenInchBread> !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*]} {M[m(_o)O!<1><2>(_e)(Con)! (_e)(car).?(_o)(on).?(_e)(cdr).?(_o)(on).?]}
01:56:30 <EgoBot> 12
01:56:33 <SevenInchBread> whooo
01:56:40 <SevenInchBread> exciting.
01:57:11 <oerjan> i still suggest you add ,, to the constructor.
01:57:23 <SevenInchBread> Where?
01:57:30 <SevenInchBread> and why?
01:58:22 <SevenInchBread> !glass {(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*]} {M[m(_o)O!<1><2>(_e)(Con)! (_e)(car).?(_o)(on).?(_e)(cdr).?(_o)(on).?]}
01:58:23 <oerjan> just before the ], to remove the arguments.
01:58:26 <EgoBot> 12
01:58:33 <SevenInchBread> But it works the same doesn't it?
01:59:45 <oerjan> only if you don't need to use anything below it in the stack
02:00:29 <SevenInchBread> Hey GregorR
02:00:38 <SevenInchBread> You should add some more special methods. :D
02:00:40 <SevenInchBread> to Glass.
02:00:47 <SevenInchBread> Like maybe an output method.
02:01:09 <SevenInchBread> So objects can have customized output with just one universal call.
02:01:39 <oklopol> like in... python?
02:01:44 <oklopol> off to sleep ->
02:01:49 <SevenInchBread> well... it's a good idea.
02:02:06 <oklopol> i ain't saying it ain't
02:02:07 <oklopol> ->
02:02:15 <GregorR> Technically speaking, you can implement a o and on method in any class and pass that in instead of an O class *shrugs*
02:02:51 <SevenInchBread> but then you have to determine type.
02:03:08 <SevenInchBread> like in the cons constructor... how would we know what type of elements we're dealing with?
02:03:16 <SevenInchBread> if they all have different ways to be outputted.
02:03:41 <GregorR> OH
02:03:49 <GregorR> Never mind, I didn't understand what you meant ;)
02:04:30 <oerjan> hm, that's true. it means the methods need to be added to numbers and strings as well.
02:04:39 <SevenInchBread> !glass {(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(ols)(_o)O! a*(_o)o.? b*(_o)o.?} {M[m(_o)O!"Hello " "World!"(_e)(Con)! (_e)(car).?(_o)(on).?(_e)(cdr).?(_o)(on).?]}
02:04:42 <EgoBot> 00
02:04:49 <SevenInchBread> the (ols) method I just added would only work for strings...
02:04:54 <SevenInchBread> if... it wasn't bugged...
02:05:03 <SevenInchBread> one moment.
02:05:29 <SevenInchBread> !glass {(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(ols)(_o)O! a*(_o)o.? b*(_o)o.?} {M[m(_o)O!"Hello " "World!"(_e)(Con)! (_e)(ols).?]}
02:06:02 <oerjan> of course you _can_ wrap them in classes.
02:06:42 <SevenInchBread> How does that solve the problem of segmented outputting functions?
02:07:00 <SevenInchBread> It's not really... a problem..
02:07:08 <SevenInchBread> just, would be nifty. :D
02:07:34 <SevenInchBread> damn type-based operators. >.<
02:07:35 <oerjan> it means you can wrap any object which doesn't have an o method in another object which does the translation.
02:08:14 <SevenInchBread> I'm not found of excess wrapping paper. :P
02:08:52 <SevenInchBread> hmmm... a wrapper paper language.
02:09:19 <SevenInchBread> "Well... before you can output a string in WrapLang you have to wrap it in a string-output-wrapper class... and then call the subsequence output method"
02:09:30 <SevenInchBread> to give it output functionality.
02:11:18 <SevenInchBread> Having a crapload of special methods is one of the coolest things about OO :D
02:11:46 <oerjan> we could define classes corresponding to each of the non-object datatypes, allowing methods to be defined for them.
02:12:41 <SevenInchBread> sounds too complicated.
02:13:29 <oerjan> i mean, so you could define your own methods that worked on every value, if you wanted.
02:15:32 <SevenInchBread> !glass {M[m(_lol)V! "whee"(_lol)n.? (_o)O! (whee)(_o)o.?]}
02:15:34 <EgoBot> whee
02:15:54 <SevenInchBread> !glass {M[m (_o)O! (whee)(_o)o.?]}
02:15:56 <EgoBot> whee
02:15:59 <SevenInchBread> !glass {M[m (_o)O! (whee)(_o)o.?]}
02:16:00 <EgoBot> whee
02:16:03 <SevenInchBread> !glass {M[m (_o)O! (wheewwwwwwwwwwwwwwwwwwwwwww)(_o)o.?]}
02:16:06 <EgoBot> wheewwwwwwwwwwwwwwwwwwwwwww
02:16:12 <SevenInchBread> !glass {M[m (_o)O! (wheewwwwwwwwwwwwwwwwwwwpeniswwww)(_o)o.?]}
02:16:14 <EgoBot> wheewwwwwwwwwwwwwwwwwwwpeniswwww
02:16:29 <GregorR> Yes, yes, Glass will let you treat variable references as strings X_X
02:16:37 <SevenInchBread> BRILLIANT
02:16:39 <SevenInchBread> ...
02:17:00 <SevenInchBread> !glass {M[m (_o)O!(1)(_o)o.?]}
02:17:11 <SevenInchBread> Did Glass explode?
02:17:27 <SevenInchBread> !glass {M[m (_o)O! (_o)(_o)o.?]}
02:17:30 <EgoBot> _o
02:17:45 <SevenInchBread> ah... yeah _o is just a reference name.
02:17:46 <oerjan> hmm...
02:17:57 <SevenInchBread> !glass {M[m (_o)O! (_o)o.(_o)o.?]}
02:18:17 <oerjan> !glass {M[m (_o)O! "Test" (_o) "o".?]}
02:18:33 <oerjan> alas :)
02:18:57 <SevenInchBread> !glass {M[m (_o)O! (_o)o.?(_o)o.?]}
02:19:11 <SevenInchBread> !glass {M[m (_o)O!"lol" (_o)o.?(_o)o.?]}
02:19:12 <EgoBot> lol
02:19:31 <oerjan> you have some serious stack underflow there.
02:20:07 <SevenInchBread> stack underflow?
02:20:39 <oerjan> trying to get values from an empty stack
02:21:35 <oerjan> hm...
02:21:52 <oerjan> !glass {M[m(_o)O!(_o)(on).]}
02:22:26 <SevenInchBread> !glass {M[m (_o)(BF)! "+[+.]"(_o)(bf).?]}
02:22:28 <EgoBot>
02:22:37 <SevenInchBread> !ps
02:22:40 <EgoBot> 1 SevenInchBread: glass
02:22:42 <EgoBot> 2 SevenInchBread: ps
02:22:43 <SevenInchBread> !kill 1
02:22:44 <EgoBot> Process 1 killed.
02:23:23 <SevenInchBread> Well... if we use Glass for the core language... we already have the problem of implementing a bf interpreter solved. :D
02:23:40 <SevenInchBread> Just not a functional bf :D
02:29:09 <GregorR> For some reason, I find this error message infinitely hilarious:
02:29:11 <GregorR> /usr/lib/libc.a(init-first.o):(.data+0x0): multiple definition of `__libc_multiple_libcs'
02:31:13 -!- SevenInchBread has changed nick to CakeProphet.
02:33:57 <CakeProphet> hehe
02:34:11 * CakeProphet is making a Vampire the Masquerade character.
02:34:24 <CakeProphet> Designing an OS -and- playing tabletop.... I'm such a nerd.
02:35:47 <GregorR> Oh noes, I'm going to have to start putting "2007" in the copyright lines soon 8-X
02:39:31 <oerjan> !glass {M[m(_a)A!(_o)O!<1.2><3>(_a)m.?(_o)(on).]}
02:39:51 <oerjan> !glass {M[m(_a)A!(_o)O!<1.2><3>(_a)m.?(_o)(on).?]}
02:39:55 <EgoBot> 3.6
02:40:20 <oerjan> !glass {M[m(_a)A!(_o)O!<4.0><3>(_a)d.?(_o)(on).?]}
02:40:23 <EgoBot> 1.33333
02:40:27 <oerjan> !glass {M[m(_a)A!(_o)O!<4><3>(_a)d.?(_o)(on).?]}
02:40:31 <EgoBot> 1.33333
02:40:52 <oerjan> !glass {M[m(_a)A!(_o)O!<4.0><3>(_a)a.?(_o)(on).?]}
02:40:55 <EgoBot> 7
02:41:56 <oerjan> Well, good night.
02:41:59 -!- oerjan has quit ("Leaving").
02:44:22 <CakeProphet> GregorR, I do public domain myself.
02:44:29 -!- ihope_ has joined.
02:44:38 <CakeProphet> Yay! My clumsily built BF interpreter works.
02:44:41 <GregorR> CakeProphet: I have no clue what that's in response to.
02:44:47 -!- ihope_ has changed nick to ihope.
02:44:53 <CakeProphet> GregorR, Changing copyrights.
02:45:06 <CakeProphet> ihope, Wanna built an Esoteric Operating System?
02:45:23 <GregorR> CakeProphet: I have no clue when I said anything regarding that :P
02:46:43 <CakeProphet> ">Oh noes, I'm going to have to start putting "2007" in the copyright lines soon 8-X"
02:47:36 <GregorR> OH
02:47:49 <GregorR> Well, public domain is just plain bad, so *shrugs*
02:48:24 <CakeProphet> Why's that?
02:48:31 <CakeProphet> http://deadbeefbabe.org/paste/3088 <--crappy BF interpreter.
02:48:48 <GregorR> With public domain, you can't add a warantee disclaimer.
02:49:13 <GregorR> However, you're still liable.
02:49:16 <CakeProphet> but... if it's public domain... you don't "own" it.
02:49:22 <GregorR> But you're still liable.
02:49:30 <CakeProphet> ....well that's a crock of shit
02:49:30 <GregorR> That's the f***'d-up-ness of copyright.
02:49:49 <GregorR> I prefer MIT minus attributionl
02:49:51 <GregorR> -l
02:49:55 <ihope> CakeProphet: I'm sort of in the habit of immediately closing all server tabs and clicking on everything red, so I didn't notice your thing about an esoteric operating system.
02:50:03 <ihope> GregorR: where's it say that?
02:50:20 <GregorR> ihope: ?
02:50:33 <CakeProphet> hmmm... I do like that I had a chance to use a coroutine in my BF interpreter.
02:50:34 <ihope> About the public domain.
02:50:37 <CakeProphet> It's an interesting way to do.
02:50:55 <ihope> So, as for the operating system... well, I'd rather build a less esoteric one.
02:51:03 <ihope> Just what is an esoteric operating system?
02:51:14 <CakeProphet> The goal is to eventually make it a useful OS.
02:51:19 <CakeProphet> fun, but still useful.
02:51:29 <CakeProphet> it's an OS built from esolangs. :D
02:51:45 <GregorR> ihope: IANAL, this is just what I've been told.
02:52:02 <CakeProphet> hehe... "I anal"
02:54:06 <ihope> CakeProphet: yes, he is.
02:54:08 <ihope> :-P
02:54:18 <CakeProphet> :o
02:54:30 <ihope> My knowledge of copyright law is probably built entirely from gists and FAQs.
02:54:48 <GregorR> Mine is based on FAQs and Bart Massey.
02:54:52 <ihope> I always think I know more about things than I really do, maybe.
02:55:07 <ihope> I know exactly how exercise works, for example.
02:55:31 <ihope> And I know that starchy foods are best.
02:56:02 <CakeProphet> ihope, At the moment... it looks like we're going to be using Glass to build the kernel... it'll have no filesystem, and all programs will work like "universal functions".
02:56:15 <ihope> No filesystem?
02:56:19 <CakeProphet> nope.
02:56:24 <ihope> What platform are we going to build this on, exactly?
02:56:25 <CakeProphet> universally continguous memory.
02:56:34 <CakeProphet> *shrugs* dunno.
02:56:41 <ihope> Not x86, I take it.
02:56:52 <CakeProphet> I don't know a lot about the specifics.
02:57:00 <GregorR> It would probably run /on/ x86
02:57:05 <GregorR> But would not /run/ x86 code.
02:57:11 <ihope> Under emulation?
02:57:31 <ihope> Let's call the platform SOAP.
02:57:34 <CakeProphet> Glass would be the closest thing to the assembly language.
02:57:41 <CakeProphet> I like it.
02:57:43 <CakeProphet> the name.
02:57:45 <ihope> For eSOAteric Platform.
02:58:02 <CakeProphet> ....questionable acroynmical roots. :P
02:58:09 <CakeProphet> but... oh well.
02:58:16 <ihope> Misspellings always make wonderful acronyms.
02:58:29 <ihope> I mean, it's no worse than Get Rid Of Slimy girlS, is it?
02:59:03 <ihope> So Glass is our platform?
02:59:08 <GregorR> Apparently.
02:59:13 <GregorR> I certainly agree with that :P
02:59:15 <ihope> Wonderful.
02:59:28 <ihope> We just need a hardware interface.
02:59:46 <ihope> If I'm not mistaken, hardware interfacing on the x86 is done with memory mapping.
02:59:57 <ihope> And I may well be mistaken.
03:00:21 <GregorR> I don't even have the slightest bit of a clue.
03:01:06 <GregorR> Must ... find ... something like OSKit ... but more up-to-date.
03:01:15 <ihope> ...
03:04:39 <ihope> Anyway, Glass doesn't exactly have reading and writing to specific addresses, does it?
03:04:49 <ihope> Objects have variables, though, right?
03:05:02 <GregorR> No and yes, respectively.
03:05:35 <ihope> So you could say something of class 1000 has 1000 values in it, and if each one happens to contain a 1000, then you have 1000000 values?
03:06:00 <ihope> (1000 isn't a valid class name, is it?)
03:06:16 <GregorR> No, it isn't ;)
03:09:28 <CakeProphet> We can change the implementation.
03:09:40 <CakeProphet> to allow memory addressses. ;)
03:09:59 <GregorR> Sure
03:10:08 <GregorR> So long as you call it chaning the /language/
03:10:10 <CakeProphet> it would be trivial... if we're going to be working so close to the machine code.
03:10:23 <CakeProphet> nah... just adding a new class. :D
03:10:38 <CakeProphet> same language... new builtin class. It's a "feature request" :P
03:10:40 <GregorR> Oh
03:10:42 <GregorR> OK
03:10:42 <CakeProphet> not cheating.
03:10:45 <CakeProphet> hehehe
03:11:01 <GregorR> Vote #1:
03:11:15 <GregorR> Write the kernel entirely from scratch, or use something like OSKit?
03:11:25 <ihope> I dunno. Some wacko extension to BF might be better.
03:11:30 <CakeProphet> hmmm... should update the OS page...
03:11:39 <CakeProphet> ihope, we tried that. :D
03:11:51 <ihope> (We|You) did?
03:11:55 <CakeProphet> Def-BF.... a version of BF with memory addressing for subroutines.
03:12:00 <ihope> (And which, for that matter?)
03:12:07 <ihope> Def-BF had what?
03:12:14 <CakeProphet> We (Me, Richard, et al)
03:12:29 <CakeProphet> you can call subroutines by absolute address.
03:12:34 <ihope> I take it I'm not part of the "we".
03:12:39 <ihope> Subroutines, pah.
03:12:40 <CakeProphet> it's BF with a crude subroutine call.
03:13:17 <CakeProphet> but.... Glass would be far better... plus it's not "cheating", and it'll be more efficient.
03:13:21 <ihope> We need self-modifying BF with RAM instead of SAM.
03:13:41 <ihope> Glass is not an assembly-like thingy! We must be absolutely traditional!
03:13:45 <CakeProphet> ihope, other ideas that were tossed around include othogonal persistency.
03:13:59 <CakeProphet> huh?
03:14:02 <ihope> Actually, self-modifying BF is a little hackish as well.
03:14:36 <CakeProphet> I had an idea for such a BF in my head at one point.
03:14:37 <ihope> Well, such a BF thing might be cool.
03:14:48 <CakeProphet> but... really... Glass works much much better than BF of any sort.
03:15:04 * CakeProphet should name his self-modifying BF such-a-BF
03:15:06 <ihope> Let's make a new language that has a system mode and a user mode, and traps.
03:15:10 <CakeProphet> since that's what we're calling it.
03:15:13 <ihope> And nothing else.
03:16:10 <ihope> We could have "enter user mode" be the only instruction... then again, that gives no control whatsoever.
03:16:20 <CakeProphet> ....
03:16:26 <CakeProphet> I vote Glass...
03:16:28 <CakeProphet> :P
03:16:33 <ihope> "Enter user mode" and "fudge trap registers"?
03:16:35 <CakeProphet> fuck your userless usermode switching language.
03:16:43 <ihope> Bhm.
03:17:31 <ihope> How, exactly, does one load a program and run it with Glass?
03:17:43 <CakeProphet> hmmm?
03:18:00 <ihope> How does a Glass program load a program and run it?
03:18:04 <ihope> A Glass kernel, rather.
03:18:14 <CakeProphet> We haven't really touched the specifics yet.
03:18:16 <CakeProphet> so... dunno.
03:18:41 <GregorR> It could have interpreters written in Glass (or as object files)
03:18:57 <ihope> Interpreters?
03:19:00 <ihope> You mean emulation?
03:19:15 <CakeProphet> no... interpreters :P
03:19:24 <ihope> Portable Executable files contain x86 assembly, don't they?
03:19:38 <ihope> And whatever ELF stands for, too?
03:19:59 <GregorR> Uh, yeah ...
03:20:15 <CakeProphet> Glass could use some facelifting...
03:20:17 <ihope> Interpreters are a little slow, you know.
03:20:20 <CakeProphet> some nifty special methods.
03:20:25 <ihope> Especially when you're running the interpreter under emulation.
03:20:52 <CakeProphet> it would make it easy to universalize data from different languages... to do the whole all-programs-can-call-each-other thing.
03:21:01 <GregorR> WE'RE TALKING ABOUT AN ESOTERIC OS
03:21:06 <CakeProphet> YES
03:21:06 <GregorR> Slow is the last of our problems.
03:21:11 <ihope> Oh.
03:21:15 <CakeProphet> LOL
03:21:17 <CakeProphet> CAPS LOCK
03:21:18 <CakeProphet> NOOB
03:21:23 <ihope> yAY, CAPS LOCK.
03:21:41 <ihope> sO WE DON'T CARE ABOUT SPEED, THEN?
03:21:52 <CakeProphet> Optimization can come later.
03:21:57 <GregorR> Not that much, no.
03:22:04 <CakeProphet> but... speed is still up there in the "to think about" list.
03:22:06 <ihope> I guess we can emulate, then.
03:22:11 <CakeProphet> just... less important than it normally would be.
03:22:36 <GregorR> The kernel should have interpreters (perhaps JIT) for Glass, BF, etc)
03:22:57 <GregorR> GTG, BBIAW
03:22:59 * GregorR disappears.
03:23:47 <ihope> Be back in a while?
03:23:50 <ihope> ...Yeah, I guess.
03:24:05 <ihope> Anyway... Glass. How are we going to do the hardware interfacing?
03:24:57 <CakeProphet> how do you normally do hardware interfacing?
03:25:16 <ihope> Memory mapping or special commands.
03:25:30 <ihope> As in I don't know which, not you can choose which.
03:25:49 <CakeProphet> well... we can just build it into the implementation of Glass.
03:25:50 <ihope> Though maybe both are commonly used.
03:25:53 <CakeProphet> as more classes :D
03:26:06 <ihope> I guess memory mapping would use special things anyway.
03:26:12 <CakeProphet> that map to whatever underlying interface is required.
03:26:34 <ihope> So add a special Hardware class and whatever methods you need.
03:27:06 <ihope> Now, I'm about to rush upstairs, so anything you may hear from me may well be my little cousin.
03:28:17 * CakeProphet is on guard.
03:29:10 -!- Asztal has joined.
03:30:39 <CakeProphet> Asztal, rawr
03:31:51 <Asztal> why hello
03:34:55 <CakeProphet> Asztal, Wanna build an esoteric OS? :D:D
03:36:37 <bsmntbombdood> heh
03:50:56 -!- Asztal has quit (Nick collision from services.).
03:51:01 -!- Azstal has joined.
03:51:03 -!- Azstal has changed nick to Asztal.
03:52:02 <CakeProphet> HEY AZSTAL
03:52:09 <CakeProphet> WANNA BUILD AN ESOTERIC OS WITH US?
03:52:15 -!- CakeProphet has changed nick to SevenInchBread.
03:53:26 <Asztal> sounds excellent
03:56:11 -!- SevenInchBread has changed nick to CakeProphet.
04:09:00 <GregorR> HEY CAKEPROPHET, time to stop using capslock :P
04:09:16 <CakeProphet> LOL FUCK U
04:09:18 <GregorR> As per hardware interfacing, builtin classes is the obvious solution.
04:09:34 <CakeProphet> builtin classes seems to be the solution for most anything.
04:09:49 <CakeProphet> "How do we do that?" "Pop in another built-in class"
04:10:15 <GregorR> OR we could just make assembly a supported language.
04:11:28 <CakeProphet> lol.
04:11:34 <CakeProphet> That would be the noob way to do it.
04:11:47 <CakeProphet> Everything must be in Glass.
04:12:03 <CakeProphet> "SOAP... made entirely of Glass"
04:12:14 <GregorR> Um, at some level there has to be a glass interpreter.
04:12:15 <GregorR> So no.
04:12:16 <CakeProphet> I surely wouldn't want to bathe with glassy soap.
04:12:31 <CakeProphet> GregorR, Yeah I know... I'm just playing.
04:12:46 * GregorR tries to roll his own multiboot kernel.
04:12:51 <CakeProphet> We should mos def use Glass instead of boring Assembly language.
04:18:04 -!- ivan` has quit (" Want to be different? HydraIRC -> http://www.hydrairc.com <-").
04:19:52 <RodgerTheGreat_> back
04:20:53 <RodgerTheGreat_> ihope: http://nonlogic.org/dump/text/1167538452.html
04:21:00 <RodgerTheGreat_> ^ the Def-BF spec
04:22:48 <RodgerTheGreat_> looks like my poor little language has already fallen from vogue, based on the logs
04:22:54 <RodgerTheGreat_> sigh
04:23:02 <RodgerTheGreat_> such is the fate of most esolangs
04:23:16 <GregorR> Specification minus implementation equals zero.
04:23:33 <RodgerTheGreat_> well, of course
04:23:33 <CakeProphet> Under that logic...
04:23:39 <CakeProphet> Specification = implementation
04:23:57 <GregorR> With esolangs, that's usually true :)
04:24:22 <RodgerTheGreat_> I wouldn't say a spec is nothing, but it's less than %10 of the work of creating an esolang.
04:24:32 <Asztal> If it's going to be esoteric, are you going to do away with unfashionable and outmoded concepts such as files and processes and invent more quirky ones?
04:24:38 <CakeProphet> Specification - inplementation + inplemntation = 0 + inplementation
04:24:40 <CakeProphet> :D
04:24:51 <CakeProphet> Asztal, Pretty much.
04:24:58 <RodgerTheGreat_> Asztal: well, we've already decided to get rid of files.
04:25:08 <RodgerTheGreat_> not sure what we're doing about processes just yet
04:25:11 <Asztal> Good. I hated them anyway
04:25:18 <CakeProphet> yeah..
04:25:36 <Asztal> Living beings with hit points, armour ratings etc?
04:25:48 <CakeProphet> I'm thinking we can hardwire most programs to be like OS-level functions that can be called with input and return an output...
04:25:55 <RodgerTheGreat_> and I think that even if we code the kernel in glass, Def-BF will be a powerful tool for writing utilities and applications
04:26:02 <CakeProphet> programs could communicate with the OS to call up other programs and retrieve their output.
04:26:19 <CakeProphet> RodgerTheGreat_, Without the memory addressing thing. :P
04:26:30 <CakeProphet> RodgerTheGreat_, But yeah... it's definetely a step up from BF/
04:27:01 <RodgerTheGreat_> just because you fear pointers doesn't make them useful or useable, CakeProphet. ;)
04:27:16 <CakeProphet> I know.
04:27:19 <CakeProphet> They're not. :P
04:27:44 <CakeProphet> I never made claims to pointers being usable.
04:27:53 <CakeProphet> :D
04:28:20 <RodgerTheGreat_> it doesn't prove the inverse either
04:29:54 <RodgerTheGreat_> regardless, pikhq seemed interested in the language, so the two of us will likely build a development package for it in short order
04:30:30 <RodgerTheGreat_> once we get a codebase together, I reckon it'll look pretty attractive
04:33:54 -!- digital_me has joined.
04:34:04 <RodgerTheGreat_> howdy, digital_me
04:34:30 <digital_me> Hello
04:43:36 <Asztal> so the idea is to not only run esoteric languages on a platform written in almost entirely esoteric languages, but also to allow some sort of magic interop between them? or have I misread "The current plan is that programs should act like modular components that can be imported and called by other programs via underlying OS magic"?
04:44:51 <CakeProphet> That's about right.
04:45:22 <CakeProphet> It sounds simple to do... just treat programs as input-output units (akin to a file... but not shoved into long-winded pathnames)
04:45:39 <RodgerTheGreat_> my original concept was that you'd have a basic kernel providing memory management, tasking, basic I/O, etc, and it could load esolang interpreters as "modules". You'd then use these interpreters to run all your utilities and applications that make up a useable system.
04:46:33 <RodgerTheGreat_> all you need is a good standardized I/O system that all the interpreters conform to, and you have yourself the ultimate esoteric OS
04:46:59 <CakeProphet> all programs deal with numbers in the end... that's the universal output stream.
04:47:08 <RodgerTheGreat_> ideally, the kernel and it's modules would also be coded as much in esolangs as possible
04:47:45 <CakeProphet> but there will probably be some API to specify output as a string or something.
04:48:10 <CakeProphet> It's up to the language to choose how to handle the data though.
04:48:16 <RodgerTheGreat_> so far, Glass and Def-BF appear extremely promising languages for the task, with glass likely better for a kernel (better I/O), and Def-BF well suited to building modular libraries and large applications
04:48:30 <Asztal> gotta go, 4:40am. I'll read the logs though :)
04:48:36 -!- calamari has quit ("Leaving").
04:48:38 <RodgerTheGreat_> cya
04:48:38 <CakeProphet> Glass is pretty well suited for that task too... being OO.
04:48:42 -!- Asztal has quit ("Chatzilla 0.9.75 [IceWeasel 1.0.1b2] (kidding!)").
04:48:43 <CakeProphet> alrighty
04:49:08 <RodgerTheGreat_> OO doesn't necessarily mean it's easy to make into machinecode.
04:49:37 <CakeProphet> hmmm... but Glass is pretty machine-codish.
04:49:58 <CakeProphet> but so if BF :D
04:50:05 <CakeProphet> BF just isn't quite as efficient.
04:50:14 <RodgerTheGreat_> it's powerful, but I don't think glass is much like machinecode
04:50:20 <CakeProphet> so... something like a kernel... might not prove too effective.
04:50:42 <GregorR> BF is more machine-code-ish, but I can't realistically see people writing a kernel in it.
04:51:15 <CakeProphet> In the meantime, I'ma work on my self-modifying MUD codebase. :D
04:51:49 <RodgerTheGreat_> the main advantage I see with Def-BF is the fact that we can take advantage of all existing BF code and tools like pikhq's BFM- that's why I think it's a good way to provide some libraries for the OS
04:52:07 <CakeProphet> Definetely.
04:52:32 <CakeProphet> and since we plan on having all languages capable of communicating I/O to each other... that'll give us a nice backbone.
04:53:07 <RodgerTheGreat_> I'm not sure it can take the place of C as a primary coding language, but I think it'd make a nice equivalent of perl or TCL as a primary scripting and utility language
04:54:31 <CakeProphet> so... Glass, ORK, Def-BF, Befunge...
04:54:37 <RodgerTheGreat_> it'd probably be possible to use it to build a kernel, but it ultimately depends on what has the support of the coding team
04:54:49 <CakeProphet> Really you could use BF as a stand-alone... since programs are themselves functions of a sort.
04:54:59 <RodgerTheGreat_> I'm not really sure how Befunge will fit into the mix
04:55:33 <RodgerTheGreat_> Def-BF makes it easier to fit loose BF programs into a framework for controlling them as a group
04:55:51 <CakeProphet> Righto.
04:56:09 <CakeProphet> It'd be a mess to do in regular BF.
04:56:13 <RodgerTheGreat_> yeah
04:56:30 <RodgerTheGreat_> it wouldn't be impossible, but it'd make it a bitch to add and remove things
04:57:00 <CakeProphet> Befunge is... hmmm...
04:57:10 <CakeProphet> It's kind of a "wiring" language..
04:57:12 <CakeProphet> it's spatial.
04:57:34 <RodgerTheGreat_> hm
04:57:50 <CakeProphet> Ork and Glass have obvious uses with OO.
04:58:13 <RodgerTheGreat_> I think they'd both be useful for applications programming
04:58:33 <CakeProphet> The OS API for interchanging data might include a way to import individual objects and functions from the less basic esolangs.
04:58:41 <RodgerTheGreat_> can you think of any other esolangs with some fashion of usefulness to them?
04:59:01 <CakeProphet> hmmm... there's plenty I'm sure.
04:59:20 <CakeProphet> We don't need just the useful ones... we can implement a ton just for the hell of it. :D
04:59:21 <RodgerTheGreat_> I'll probably build a SYNTHESYS port, but I'm not sure self-modifying code is all that important for OS work.
04:59:30 <CakeProphet> INTERCAL?
04:59:42 <RodgerTheGreat_> well, yeah, but we need a handful of useful ones to build the core OS with
05:00:04 <CakeProphet> hehe... malboldge.
05:00:14 <RodgerTheGreat_> I don't like the idea of having my choices for writing a shell limited to BF, malbolge or turkeybomb.
05:00:45 <RodgerTheGreat_> can you think of any graphically-oriented languages that could be used for coding a window manager or something?
05:01:16 <CakeProphet> hmmm... yeah I've been wondering how the GUI will look with no filesystem.
05:01:24 <CakeProphet> not to mention... how we'll do no filesystem.
05:02:30 <RodgerTheGreat_> I have a few good ideas for designing a new GUI paradigm- leave that to me.
05:02:40 <RodgerTheGreat_> all I need is a good language to build with
05:02:55 <RodgerTheGreat_> some form of OISC could be useful for something...
05:03:27 <RodgerTheGreat_> OISC is pretty weird, but has real-world applications
05:03:54 -!- digital_me has quit ("holy lol!").
05:04:00 <CakeProphet> lol... fuck the real world.
05:04:05 <CakeProphet> We don't need it
05:04:19 <CakeProphet> I think it would be cool to have like... a scrollable "plain".
05:04:53 <CakeProphet> but... that's kind of weird.
05:04:57 <CakeProphet> for a GUI.
05:05:39 <GregorR> Here's the problem with every EsoOS ever: Nobody can make up their F'ing mind on anything.
05:06:01 <RodgerTheGreat_> well, so far we've made a little progress.
05:06:14 <RodgerTheGreat_> deciding on a core language is the first step.
05:06:38 <CakeProphet> heh... there's no deadline.
05:06:48 <CakeProphet> we can take eternity goign back and forth if we want.
05:06:50 <CakeProphet> no rush. :D
05:06:54 <RodgerTheGreat_> now we need an elegant system for allowing the languages to collaborate
05:07:07 <RodgerTheGreat_> CakeProphet: the only deadline is "before we all get bored and quit"
05:07:16 <CakeProphet> Yup.
05:07:23 <GregorR> No, what we need is an actual design for a kernel. How the languages correspond is fluff.
05:07:47 * RodgerTheGreat_ cracks his knuckles.
05:08:03 <RodgerTheGreat_> sounds like I'm going to hammer out another specification
05:08:13 <CakeProphet> :( Some more pessimistic and you're going to morph into a grumpy coder...
05:08:40 <CakeProphet> grumpy coders are absolutely the most annoying creature I've ever encountered... but I don't know why.
05:08:58 <RodgerTheGreat_> he already *is* a grumpy coder. His role in the project is grounding our overflowing enthusiasm with realism.
05:09:19 <RodgerTheGreat_> all in all, not necessarily a bad thing
05:09:33 <CakeProphet> ....fuck realism
05:09:38 <CakeProphet> it's like the real world
05:09:41 <CakeProphet> we don't need it.
05:11:40 <CakeProphet> well.... I really have NO clue how to do a kernel.
05:11:44 <CakeProphet> so.... you've got me there.
05:12:18 <GregorR> I can write a kernel, but I don't know what anybody actually wants.
05:12:32 <RodgerTheGreat_> I have some ideas as to how to design one
05:12:36 <CakeProphet> yeah... there's a lot of details you can specify in a kernel.
05:12:53 <RodgerTheGreat_> ok, so what are the most basic things we need in the kernel?
05:13:30 <RodgerTheGreat_> 1) a memory manager that can take available RAM and disk space and address it as a contiguous region, handling swapping, etc, transparently
05:13:33 <GregorR> I think the kernel proper should be an interpreter for a superset of some language (say, Glass) which will provide interface to the hardware.
05:13:42 <RodgerTheGreat_> yeah
05:13:53 <CakeProphet> disk control, hardware I/O (a superset of disk control), memory management.
05:14:05 <CakeProphet> oh... have the kernel be the Glass interpreter... brilliant.
05:14:15 <RodgerTheGreat_> that language will in turn be used to write the interpreters for other languages
05:14:19 <RodgerTheGreat_> sounds solid
05:14:21 <GregorR> With a good hardware layer, all of that can be hypothetically written in the language of choice.
05:14:30 <RodgerTheGreat_> yeah
05:14:32 <CakeProphet> That like... puts all the OO-ness of Glass directly atop the kernel... sounds good.
05:14:47 <GregorR> It's fine if that's hypothetical, so long as we can actually write things like simple shells et cetera :P
05:15:56 <RodgerTheGreat_> so the task boils down essentially to extending the built-in library for Glass and getting an interpreter for it running on bare metal
05:16:15 <CakeProphet> How will we do disk writing? I mean... do we really want hard disk totally independent from virtual memory?
05:16:27 <CakeProphet> It's kind of annoying to have to save everything to a file explicitly.
05:16:29 <RodgerTheGreat_> do we want the kernel to run a single language, or several "core" languages?
05:16:47 <CakeProphet> hehe... glass on metal.
05:16:52 <RodgerTheGreat_> lol
05:17:15 <RodgerTheGreat_> then we just need to call the API "plastic"
05:17:23 <CakeProphet> hehe
05:17:31 <RodgerTheGreat_> and the library "wood"
05:17:37 <CakeProphet> hahahaha
05:17:49 <CakeProphet> and the whole OS SOAP.
05:18:05 <RodgerTheGreat_> which has the added benefit of an infinite supply of "my kernel's got wood" jokes
05:18:18 * CakeProphet DIES
05:18:18 <GregorR> Actually, just one.
05:18:24 <GregorR> Namely, "my kernel's got wood"
05:18:47 <RodgerTheGreat_> I'm sure I can think of another given time
05:19:29 <CakeProphet> mmm... the whole save-to-disk-explicitly thing seems kind of outdated.
05:19:34 <CakeProphet> surely we can do better than that? :D
05:22:36 <RodgerTheGreat_> just do it like Uuu- make EVERYTHING virtual memory. As things get paged to disk, they're "auto-saved"
05:23:01 <CakeProphet> I think they do some other stuff too... for efficiency.
05:23:23 <CakeProphet> and... sometimes you don't want everything on hard disk. :D
05:23:34 <RodgerTheGreat_> well, yeah. Everything is more complex in practice than in theory
05:23:44 <CakeProphet> *nods*
05:23:49 <CakeProphet> That's just the basic idea.
05:29:34 <CakeProphet> GregorR, You've been involved in other esoos projects that failed? :D
05:47:52 <RodgerTheGreat_> good night- I'll return sometime tomorrow
05:48:12 -!- RodgerTheGreat_ has quit.
06:11:37 <GregorR> CakeProphet: More like I've watched other such projects fail :P
06:35:44 -!- ivan` has joined.
06:44:11 <GregorR> OK, somebody link me to the simplest C BF interpreter on earth :P
06:46:07 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- The future of IRC").
06:54:04 <GregorR> OK, well, I can write a BF interpreter as a kernel now :P
07:03:28 -!- ihope has quit (Connection timed out).
07:54:24 -!- Arrogant has joined.
07:58:59 -!- Arrogant has quit (Client Quit).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:00:57 <CakeProphet> hmmm?
09:01:19 <CakeProphet> GregorR, chomp
09:02:44 <CakeProphet> I'm doinh yo sleep.
09:02:52 -!- CakeProphet has quit ("fuck you").
09:52:24 -!- oerjan has joined.
10:13:35 <oklopol> "<GregorR> OK, well, I can write a BF interpreter as a kernel now :P" << wow i'm beginning to think it's gonna happen :D
10:13:41 <oklopol> the os i mean
10:24:19 -!- ivan` has joined.
11:00:58 -!- tgwizard has joined.
11:25:12 <oerjan> !glass {M[m(_o)O!(_t)(_o)=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:25:14 <EgoBot> ho
11:26:00 <oerjan> !glass {M[m(_o)O!(_t)(_o)*=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:26:03 <EgoBot> ho
11:26:14 <oerjan> !glass {M[m(_o)O!(_t)(_o)o.=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:26:17 <EgoBot> ho
11:26:27 <oerjan> !glass {M[m(_o)O!(_t)<1>=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:26:30 <EgoBot> test ho
11:26:41 <oerjan> !glass {M[m(_o)O!(_t)"hi"=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:26:43 <EgoBot> test ho
11:27:49 <oerjan> !glass {M[m(_o)O!(_t)O*=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:27:52 <EgoBot> ho
11:33:00 <oerjan> !glass {M[m(_o)O!(_t)<-1>=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:33:03 <EgoBot> test ho
11:33:29 <oerjan> {M[m(_o)O!<-1>(_o)(on).?]}
11:33:48 <oerjan> {M[m(_o)O!<-1>(_o)o.?]}
11:33:57 <oerjan> gah!
11:34:03 <oerjan> !glass {M[m(_o)O!<-1>(_o)o.?]}
11:34:17 <oerjan> !glass {M[m(_o)O!<-1>(_o)(on).?]}
11:34:19 <EgoBot> -1
11:41:09 -!- oklopol has quit (Read error: 60 (Operation timed out)).
12:04:20 -!- Sph1nx has joined.
12:30:36 -!- Sukoshi has quit (Read error: 110 (Connection timed out)).
12:34:50 -!- oerjan has quit ("Later").
13:56:48 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <- The future of IRC").
13:57:09 -!- Asztal has joined.
13:57:56 <SimonRC> "And remember: you can't spell manslaughter without laughter."
14:09:01 -!- Sph1nx has quit (" !").
14:17:26 * SimonRC thinks a F98-based OS would be good. You could put everything in one 4gig * 4gig funge-space. It would have to be sparse of course, but wouldn't be too bad on the speed side, and would be a good way to do orthogonal persistance. F98 already has a module system too.
14:19:12 <SimonRC> OST, why am I assuming Befunge-98? We could use Trefunge-98!
14:19:33 <SimonRC> Though Bef-98 allows addresses to fit nicely into a 64-bit word
14:19:46 <Asztal> I actually have a sparse trefunge-98 implementation here, but it needs more work.
14:22:01 <SimonRC> I am suddenly reminded that the only decent Tref98 editor isin fact written in Tref98
14:22:32 <SimonRC> actually, the i and o commands would need to be fiddled.
14:22:45 <SimonRC> o would be great for "OS Call"
14:22:47 <SimonRC> dunno about i
14:24:52 -!- ivan` has joined.
14:24:56 <SimonRC> yo
14:25:14 <Asztal> fingerprints?
14:25:14 <SimonRC> now I come to think of it, there would need to be some form of 2D malloc.
14:25:22 <SimonRC> Fingerprints are a bit slow.
14:26:18 <SimonRC> F98 is not afraid of having several ways to do something
14:35:14 -!- jix_ has joined.
14:55:24 -!- nooga has joined.
14:55:32 <nooga> ehhehe helllo
15:06:55 <SimonRC> I don't suppose any of you where the Tertium Quid webcomic is, do you?
15:56:15 -!- nooga has quit (Read error: 110 (Connection timed out)).
16:35:30 -!- man-X has joined.
16:41:14 -!- Asztal has quit (Read error: 54 (Connection reset by peer)).
16:41:44 -!- man-X has quit (Client Quit).
16:51:56 -!- RodgerTheGreat has joined.
17:04:22 -!- oerjan has joined.
17:36:51 * SimonRC goes
17:37:41 * bsmntbombdood comes
17:59:18 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
18:02:40 <pikhq> GregorR: RE: EsoOS. I think it should just be a PESOIX-compliant interpreter running on bare metal, with the ability to load language modules.
18:03:03 <pikhq> (add a few PESOIX namespaces, so that one can access more than what bare PESOIX provides)
18:03:09 <bsmntbombdood> PESOIX?
18:03:32 <pikhq> It's an additional API for esolangs, which is talked to via stdio.
18:22:59 -!- CakeProphet has joined.
18:38:50 <RodgerTheGreat> so, pikhq- what's your opinion on Def-BF vs Glass as a core language?
18:39:52 <pikhq> The core PESOIX system should be in either ASM or C. . .
18:40:02 <pikhq> Glass and Def-BF can coexist peacefully on top of this. ;)
18:41:15 <RodgerTheGreat> there's no debate on either of their inclusion- they're both powerful languages. However, we were interested in trying to build the core of the system itself in an esoteric language
18:42:11 <pikhq> The PESOIX system should be core. . . And it can't be written in Glass or Def-BF.
18:42:19 <pikhq> They just don't give us enough hardware access.
18:42:55 <RodgerTheGreat> the idea behind using glass was to extend it's builtins to provide those capabilities
18:43:19 <pikhq> Um. . . That'd be called "PESOIX".
18:43:45 <RodgerTheGreat> and hardware access in Def-BF is rather implicit when you map all of a machine's memory to the tape.
18:44:30 <pikhq> If you *really* want to implement other languages in Def-BF or Glass, well, more power to you.
18:44:48 * RodgerTheGreat shrugs
19:18:22 <CakeProphet> From what I've seen of glass... it wouldn't be too hard.
19:18:37 <CakeProphet> The great thing about abstraction is that... well... given enough block-building, you can do just about anything.
19:19:06 <pikhq> CakeProphet: Thus why I like BFM. . .
19:19:26 <pikhq> (just one issue with BFM: I'm betting complex datastructures would take lots of Brainfuck code to do right)
19:20:21 <CakeProphet> hmmm I got a cons-like list constructor for Glass... and Gregor already has a full-blown list constructor (although he calls it "Arr" for array... it's actually like a linked list)
19:20:57 <CakeProphet> I suppose the nest step after that would be hash tables.
19:21:37 <pikhq> Nah. Standard template library. :p
19:21:48 <CakeProphet> Wassat?
19:21:58 <pikhq> The C++ STL.
19:22:39 <CakeProphet> That wouldn't be cool. :P
19:23:00 <pikhq> You've got linked lists. . .
19:23:05 <pikhq> That's one component.
19:23:13 <pikhq> Hash tables are another.
19:23:22 <CakeProphet> I want to steal from C as little as possible. :D
19:24:08 <pikhq> But the C++ STL is probably the only good thing from C-oids!
19:25:36 <CakeProphet> Some other changes to Glass might include some more special methods... to make data structures a little less precarious to work with.
19:26:50 <CakeProphet> Paticularly... a o__ and on__ method, which should "return" a string and a number respectively.... so we can output data structures via the universal O.o method.
19:27:22 <pikhq> That'd be nice.
19:27:39 <CakeProphet> It'd be a pain in the ass to call a unique output method for each class...
19:28:29 <pikhq> And presumably, for lists and arrays, there'd be methods to output specific elements.
19:29:11 <CakeProphet> indexing, probably.
19:29:23 <CakeProphet> call the index method with an integer argument.
19:30:29 <CakeProphet> There will be an iterator to... it would work something like the map() function in other languages.
19:30:35 <CakeProphet> take a method and call it on each element.
19:43:06 <CakeProphet> !glass {M[m(_o)O!0(_o)o.? (_he)<1>=0(_o)o.?]}
19:43:34 <CakeProphet> !glass {M[m(_o)O! (_he)<1>=0(_o)o.?]}
19:43:55 <CakeProphet> !glass {M[m(_o)O! (_he)<1>=(_o)o.?]}
19:44:06 <CakeProphet> aleifhrt.
19:44:16 <CakeProphet> variable assignments don't push to the stack, neato.
19:44:46 <pikhq> Reading the spec could've told you that. . .
19:44:48 <CakeProphet> ....
19:45:00 <CakeProphet> Yes well... specifcations are for nerds.
19:45:15 <CakeProphet> Testing is the real man's measuring tape.
19:46:05 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)o.?0(_o)o.?]}
19:46:16 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)o.?1(_o)o.?]}
19:46:26 <CakeProphet> !ps
19:46:30 <EgoBot> 1 CakeProphet: ps
19:46:34 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)o.?2(_o)o.?]}
19:46:51 <CakeProphet> !glass {M[m <1><2>(_o)O!1(_o)o.?2(_o)o.?]}
19:47:02 <CakeProphet> !glass {M[m <1><2>(_o)O!1(_o)o.?]}
19:47:07 <pikhq> The spec is a description of how the real interpreter behaves. ;)
19:47:14 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)o.?]}
19:47:24 <CakeProphet> The real interpreter is a description of how the real interpreter behaves. :P
19:47:45 <pikhq> As it just so happens, the spec and the real interpreter are in perfect agreement.
19:47:54 <CakeProphet> lol ya rite.
19:48:10 <CakeProphet> !glass {M[m<1>~O.o~.?]}
19:48:18 <CakeProphet> !glass {M[m<1>~O.o~?]}
19:48:20 <CakeProphet> *ahems*
19:48:21 <pikhq> !glass {M[m<1>(_o)O!(_o)(on).?]}
19:48:23 <pikhq> ;)
19:48:24 <EgoBot> 1
19:48:36 <CakeProphet> ...damnit
19:48:39 <CakeProphet> I always forget that one.
19:48:44 <pikhq> !glass {M[m<32>(_o)O!(_o)(o).?]}
19:48:55 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)(on).?]}
19:48:58 <EgoBot> 2
19:49:06 <pikhq> I don't think O.o outputs numbers.
19:49:28 <CakeProphet> It doesn't (...reading the spec would have told you that...)
19:49:47 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)(on).?0(_o)(on).?]}
19:49:50 <EgoBot> 22
19:49:54 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)(on).?1(_o)(on).?]}
19:49:56 <EgoBot> 21
19:50:04 <CakeProphet> Yay... stack behavior.
19:50:15 <CakeProphet> !glass {M[m <1><2>(_o)O!1(_o)(on).?0(_o)(on).?]}
19:50:16 <pikhq> Heheh.
19:50:18 <EgoBot> 12
19:50:50 <CakeProphet> So... it seems that stack indexing doesn't append that value permanently to the stack.
19:51:24 <pikhq> I think O.o pops it's argument off the stack.
19:51:31 <CakeProphet> or... the method calls are eating up... yeah
19:51:33 <CakeProphet> what you said.
19:51:46 <CakeProphet> !glass {M[m <1><2>(_o)O!11(_o)(on).?0(_o)(on).?]}
19:51:50 <EgoBot> 21
19:52:11 <pikhq> !glass {M[m <1><2>(_o)O!(_o)(on).?(_o)(on).?]}
19:52:14 <EgoBot> 21
19:52:29 <pikhq> That clinches it.
19:52:34 <CakeProphet> hehe
19:54:44 <CakeProphet> hmmm...
19:55:00 <CakeProphet> I'm wondering how I should denote when the list constructor should stop.
19:55:42 <CakeProphet> "" wouldn't work... because you might want a "" in your list.
19:56:04 <CakeProphet> You could specify the length as a number... but that wouldn't work if you don't explicitly know the link.
20:00:04 <CakeProphet> ...the linked list was a grand idea.
20:00:31 <oerjan> The specification is now slightly more in sync with the interpreter.
20:01:07 <CakeProphet> Never trust your specification.... but it does give some good advice now and then. :D
20:02:29 <CakeProphet> hehe... if Glass had some kind of error handling... I could easily use the (Nil) class to specify when to stop.
20:02:48 <GregorR> Feel free to extend glass as necessary :P
20:03:16 <bsmntbombdood> dodod
20:03:41 * CakeProphet loves Python's exception handling.
20:03:56 <oerjan> but then you couldn't have empty lists as elements of lists?
20:03:59 <bsmntbombdood> what's special about it?
20:04:18 <CakeProphet> Dunno enough about other languages exception handling to tell you what's unique about it. :)
20:04:34 <bsmntbombdood> GregorR: Fix Plof
20:04:41 <bsmntbombdood> 's fors yet?
20:05:32 <oerjan> i think possibly the only values that can be safely tested for are string "" and number 0.
20:05:37 <pikhq> bsmntbombdood: The patch is in; he just needs to make a new tarball.
20:05:47 <CakeProphet> ...yeah.
20:05:59 <GregorR> bsmntbombdood: Yeah ... in the darcs repo :P
20:06:13 <CakeProphet> "" makes more sense than 0
20:06:34 <bsmntbombdood> cool
20:06:42 * bsmntbombdood goes
20:06:52 <bsmntbombdood> (vacation)
20:07:25 <oerjan> because every inquisitive operation other than pure true/false testing probably gives an error on something.
20:07:48 <CakeProphet> yup
20:07:53 <oerjan> although...
20:08:04 <CakeProphet> unless you're using all objects that follow a universal protocol.
20:08:14 <CakeProphet> which... isn't the case with the base string and integer types.
20:08:49 <oerjan> !glass {M[m(_a)A!(_o)O!<1>"hi"(_a)e.?(_o)(on).?]}
20:08:53 <EgoBot> 0
20:08:56 <oerjan> ah.
20:09:25 <oerjan> !glass {M[m(_a)A!(_o)O!<1>(_o)(_a)e.?(_o)(on).?]}
20:09:29 <EgoBot> 0
20:09:57 <oerjan> ok i may be wrong, A.e seems not to crash when given non-numbers.
20:10:19 -!- Sukoshi has joined.
20:10:25 <oerjan> !glass {M[m(_a)S!(_o)O!<1>(_o)(_a)e.?(_o)(on).?]}
20:10:28 <EgoBot> 0
20:10:50 <oerjan> neither does S.e on non-strings.
20:10:59 <oerjan> !glass {M[m(_a)S!(_o)O!(_o)(_o)(_a)e.?(_o)(on).?]}
20:11:02 <EgoBot> 1
20:11:12 <oerjan> !glass {M[m(_a)S!(_o)O!(_a)(_o)(_a)e.?(_o)(on).?]}
20:11:16 <EgoBot> 0
20:11:34 <oerjan> !glass {M[m(_a)A!(_o)O!(_o)(_o)(_a)e.?(_o)(on).?]}
20:11:38 <EgoBot> 1
20:12:12 <oerjan> ok you apparently _can_ check equality of pretty arbitrary things.
20:13:10 <CakeProphet> !glass {(Nil)[(iter),][(null?)1]} {(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,(car)*?(_fun)*?(cdr)*?(iter).?]} {(List)[(build)(_a)A!(_tmp)<1>= (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!,(_tmp)1""(_s)e.?=\(_list)] } {M[m(_o)O! (_l)(List)! """H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"(_l)(build).?(MyList)0= (_o)o.(MyList)(iter).?]}
20:13:28 <oerjan> !glass {M[m(_a)A!(_o)O!(_o)o.(_o)o.(_a)e.?(_o)(on).?]}
20:13:30 <EgoBot> 1
20:13:43 <oerjan> !glass {M[m(_a)A!(_o)O!(_o)o.(_o)(on).(_a)e.?(_o)(on).?]}
20:13:47 <EgoBot> 1
20:13:56 <oerjan> whoops!
20:14:07 <CakeProphet> !glass {M[m(_o)O!
20:14:09 <CakeProphet> er...
20:14:09 <RodgerTheGreat> hi, Sukoshi
20:14:10 <EgoBot> OK
20:14:13 <oerjan> !glass {M[m(_a)S!(_o)O!(_o)o.(_o)(on).(_a)e.?(_o)(on).?]}
20:14:16 <EgoBot> 1
20:14:44 <oerjan> ok it doesn't work so well with functions, it seems.
20:15:04 <GregorR> OK, new Plof tarball available.
20:15:11 <CakeProphet> !glass {M[m(_o)O! (_o)(lolbug).?(_o)(on).?]}
20:15:33 <CakeProphet> Was seeing the behavior for undefined methods. :D
20:16:02 <oerjan> that undefined methods crash on lookup should be pretty clear from our recent A class problem.
20:16:32 <oerjan> you don't even need the ?
20:17:10 <GregorR> The action when you try to use an undefined method is "undefined" :P
20:17:12 <Sukoshi> Heya RodgerTheGreat.
20:17:53 <CakeProphet> hmmm.... a language without error handling gains more flexibility if it returns data on weird fuckups... whereas a language that has error handling benefits from having all sorts of "error trips" that can happen.
20:17:58 <RodgerTheGreat> GregorR: are we talking "crash" undefined, or DS9K undefined?
20:18:23 <Sukoshi> Alternatively, you could have the best of both worlds by using error handlers, CakeProphet ;)
20:18:32 <GregorR> RodgerTheGreat: Depends on the implementation ... it's undefined ;)
20:18:44 <RodgerTheGreat> mmm. Java-ey error handling.
20:18:55 <Sukoshi> I like Lispy error handling.
20:19:12 <CakeProphet> I'm pretty sure Python's error handling resembles Java's.
20:19:14 <RodgerTheGreat> how does lisp do error handling?
20:19:16 <Sukoshi> (Heck, you can arbitrarily unwind the call stack with it. How is that not cool?)
20:19:23 <CakeProphet> OO-ish with some sort of try-except-else-finally statement?
20:19:23 <RodgerTheGreat> ooh, nice
20:19:41 <Sukoshi> No no. A *lot* more flexible than a try-except-else thinger.
20:20:10 <GregorR> You mean try-catch-finally? :P
20:20:17 <Sukoshi> Whatever.
20:20:20 <CakeProphet> eh, probably.
20:20:26 <Sukoshi> Errors in Lisp resemble calls to GOTO in many ways.
20:20:29 <CakeProphet> I was wondering how Java did errors.
20:20:29 * RodgerTheGreat throws Exception
20:20:35 <Sukoshi> Without the code hell GOTO breeds.
20:20:59 <GregorR> Java's exception system is a fairly standard try-catch-finally, and you can only throw Objects.
20:21:03 <RodgerTheGreat> GOTOs only create horrible code in the hands of people who don't know what they're doing
20:21:03 <Sukoshi> Of course, you could generalize it to things like try/catch/finally blocks or exception throwing or assertion.
20:21:26 <Sukoshi> s/generalize/specifize/
20:21:29 <GregorR> How about exceptions in Brainfuck?
20:21:44 <pikhq> No such thing.
20:21:45 <CakeProphet> depends on the implementing language.
20:21:47 <Sukoshi> Similar to exceptions in Forth.
20:21:51 <Sukoshi> None.
20:22:07 <RodgerTheGreat> it's called a Try-Fail-OhShit error handling system
20:22:20 <CakeProphet> If BF does something weird... it either A. trips an exception in the implementing language or B. goes off on freaky undefined behavior or C. crashes
20:22:26 <CakeProphet> whatever the underlying language would do...
20:22:36 <pikhq> Or D. goes into an infinite loop.
20:23:05 <pikhq> divvar, when it performs a divide by 0, does an infinite loop. . .
20:23:05 <Sukoshi> It's against the spirit of a compiler/interpreter to error-handle transparently to the underlying language.
20:23:14 <CakeProphet> you could pretty much just call all of it "undefined behavior" since it's.... not... defined.
20:23:26 <RodgerTheGreat> Sukoshi: have you been reading the logs about the esoteric OS discussion?
20:23:33 <Sukoshi> RodgerTheGreat: Nope.
20:23:42 <Sukoshi> My ISP decided to have its first downtime in a few months.
20:24:40 <RodgerTheGreat> long story short, cakeprophet, gregor, pikhq and I have been thinking about writing an estoeric operating system built with glass and a modified form of BF that has pointers.
20:24:58 <Sukoshi> Why no pointers?
20:25:03 <Sukoshi> How will we bootstrap it?
20:25:15 <RodgerTheGreat> no, no, we *added* pointers to BF
20:25:19 <pikhq> In Def-BF.
20:25:23 <Sukoshi> Oh, yeah, yeah.
20:25:35 <Sukoshi> Which one of us is will be the ASM guinea pig?
20:25:36 <RodgerTheGreat> does anyone still have the link to that spec I wrote?
20:25:45 <RodgerTheGreat> not sure just yet.
20:25:52 <RodgerTheGreat> we're still discussing kernel design
20:25:59 <RodgerTheGreat> and what the API needs.
20:26:12 <Sukoshi> Well, who is going to write the BF->ASM compiler?
20:26:26 <CakeProphet> Probably -not- me. :D
20:26:43 <pikhq> Already got one. . . Heard of awib? :p
20:26:44 <CakeProphet> Since I'm not familiar with any assembly... or compiler design.
20:26:45 <Sukoshi> I could try. My experience in ASM lies only in the realm of POSIX-based systems, though.
20:27:00 <Sukoshi> pikhq: But it can't be dependant on any kernel, remember?
20:27:10 <Sukoshi> Which means we'll be using interrupts and happy stuff like that.
20:27:29 <Sukoshi> We need to be able to wrap interrupts in BF too, and devices, and stuff. Suggestions would be nice :)
20:27:52 <oerjan>
20:28:06 <Sukoshi> Happy null to you too.
20:28:35 <RodgerTheGreat> in a nutshell, Def-BF adds the ability to push and pop code and data locations in the form of pointers.
20:28:52 <RodgerTheGreat> four new commands, endless possibilities
20:28:59 <Sukoshi> What are the commands?
20:29:40 <RodgerTheGreat> @- set the program counter to an absolute address, pushing the current location onto a stack
20:29:57 <RodgerTheGreat> :- pop the previous location off the stack, and return to it
20:30:14 <RodgerTheGreat> #- set the pointer to an absolute address, pushing the current location onto a stack
20:30:34 <RodgerTheGreat> ;- pop the previous pointer location off the stack, and return to it
20:30:53 <Sukoshi> Oooh. Now BF has a stack.
20:31:04 <RodgerTheGreat> yeah, I really like it
20:31:33 <Sukoshi> This is going to be hell to develop :P
20:31:34 <RodgerTheGreat> and it's easy to see how you could abstract it a little to build a high-level language
20:31:53 <Sukoshi> Heh. Forth in Def-BF.
20:32:02 <RodgerTheGreat> that'd be fun
20:32:14 <Sukoshi> Are we going to build Glass on top of BF? Ouch.
20:32:23 <GregorR> Easy with C2BF ;)
20:32:24 <CakeProphet> Other way around.
20:32:27 <CakeProphet> I think.
20:32:27 <RodgerTheGreat> I think the consensus is to go the other way
20:32:43 <GregorR> Since it's already done ;)
20:32:52 <CakeProphet> Glass is a much better build-block language.... and yeah...
20:32:59 <CakeProphet> it's already done... just without the new commands.
20:33:00 <RodgerTheGreat> I like Def-BF myself, but Glass is easier to extend to allow low-level hardware access
20:33:12 <Sukoshi> One request!
20:33:17 <Sukoshi> Add in structs!
20:33:17 <CakeProphet> What!?
20:33:21 <CakeProphet> Nope.
20:33:22 <RodgerTheGreat> hm
20:33:29 <CakeProphet> Sounds too much like C...
20:33:35 <Sukoshi> Seriously. How can you build data structures without structs?
20:33:37 <CakeProphet> I don't know what they do... but... oh well.
20:33:42 <CakeProphet> Glass has a classes.
20:33:43 <RodgerTheGreat> can't glass simulate that already?
20:33:45 <CakeProphet> classes
20:33:48 <CakeProphet> Yup.
20:33:54 <Sukoshi> But y'all are forgetting the very point of structs!
20:33:58 <pikhq> I prefer exposing low-level stuff via PESOIX so that all the languages can get low-level stuff. :p
20:33:59 <Sukoshi> A struct is contiguous in memory!
20:34:13 * CakeProphet points to his linked list constructor, and Gregor's array class.
20:34:31 <Sukoshi> But how can you name subsets of the arrays?
20:34:33 <CakeProphet> pikhq, If Glass has all the low level stuff built-in... we can just use glass to give all of them that.
20:34:49 <CakeProphet> Sukoshi, Hmmm?
20:34:50 <pikhq> CakeProphet: That'll work.
20:34:53 <Sukoshi> I really don't want to have to set up methods per-class that simulate assignment to a subset. It's painful.
20:34:56 <GregorR> Raar
20:35:04 <RodgerTheGreat> Def-BF can effectively have structs, and you can compile a higher level language that incorporates them *into* Def-BF
20:35:25 <Sukoshi> I was talking about Glass.
20:35:25 <pikhq> You could even make C2BF support structs!
20:35:39 <CakeProphet> I think what we're going to do is make the kernel an interpreter for Glass. :D
20:35:50 <RodgerTheGreat> pikhq: my thoughts exactly
20:35:52 <CakeProphet> so Glass is... like... -the- kernel.
20:35:56 * Sukoshi suddenly got a vision of a Lisp machine and drools.
20:36:06 <RodgerTheGreat> yeah, there we go
20:36:19 <CakeProphet> oooh... lisp.
20:36:34 <CakeProphet> Lisp would be a great starter language to do all this in. :D
20:36:52 <Sukoshi> There's already a similar project for CL --> Movitz.
20:37:13 <RodgerTheGreat> it would only be esoteric if we used a minimal lisp implementation as the base
20:37:27 <CakeProphet> I just think it would be more amazing that we actually built an operating system out of languages like Glass and modified-BFs :D
20:38:04 <CakeProphet> Scheme is pretty minimal.
20:38:19 <GregorR> Plof is pretty minimal (ha-HAH)
20:38:29 <RodgerTheGreat> when I say minimal, I mean tarpit
20:38:32 <Sukoshi> NOT SCHEME.
20:38:47 <CakeProphet> LOL WHY?
20:38:49 <Sukoshi> Scheme has almost *no* programmer metaphors for pointers.
20:39:01 <CakeProphet> ....damn pointers.
20:39:09 <RodgerTheGreat> embrace pointers
20:39:19 <Sukoshi> Why do you resist pointers?
20:39:28 * CakeProphet immediately conjures up images of an evil C monster stabbing him with sharp pointers.
20:39:33 <RodgerTheGreat> they're insanely useful when you're working at a low level
20:39:55 <CakeProphet> Because of my lack of knowledge and irrational disdain for anything that reminds me of C?
20:39:59 <CakeProphet> Crapp reason I know...
20:40:02 * GregorR huggles C
20:40:03 <RodgerTheGreat> pointers have nothing to do with C, C coders just overuse them for bizarre hacks
20:40:18 <GregorR> No, C coders overuse them because C doesn't give us much else ;)
20:40:34 <RodgerTheGreat> yeah, I guess that's true as well
20:40:42 <CakeProphet> If I knew more about them... and how to use them... I would probably like them more.
20:40:55 <GregorR> Anybody want my BF-interpreting kernel? :)
20:40:59 <Sukoshi> How hard is it to imagine memory contents and a memory address?
20:41:11 <Sukoshi> GregorR: Like I said, who's the ASM guinea pig?
20:41:18 <RodgerTheGreat> GregorR: did you code it just now, or has this been sitting around?
20:41:32 <CakeProphet> Sukoshi, I know -what- they are... I just have no earthly idea why they'd be useful.
20:41:42 <CakeProphet> for
20:41:43 <GregorR> I coded it yesterday - too lazy to get Glass working yet and I'm having problems with IRQs that need to be resolved first anyway :P
20:41:47 * RodgerTheGreat suffers a small aneurism
20:41:53 <Sukoshi> GregorR: Aha!
20:42:06 <Sukoshi> GregorR: Intepreter or compiler?
20:42:12 <GregorR> Interpreter.
20:42:12 <Sukoshi> CakeProphet: How do you implement a linked list?
20:42:20 <RodgerTheGreat> GregorR: think you could add the Def-BF command set?
20:42:24 <Sukoshi> GregorR: Errr, interactive?
20:42:31 <GregorR> RodgerTheGreat: I think /you/ could add the Def-BF command set ;)
20:42:39 <CakeProphet> Sukoshi, with cons pairs?
20:42:42 <GregorR> Sukoshi: Not yet, I don't have IRQs working (necessary for keyboard input)
20:42:52 <Sukoshi> CakeProphet: Does ASM magically give you cons pains?
20:43:03 <CakeProphet> Sukoshi, ...probably not.
20:43:21 <RodgerTheGreat> GregorR: I guess I could take a stab at it- can I see the code?
20:43:52 <CakeProphet> Sukoshi, I've never ventured into low level stuff. Abstraction -hides- this shit from me....
20:44:08 <CakeProphet> Sukoshi, Do go on. :D
20:44:21 <GregorR> Anybody have a SVN repo sittin' around for me to toss it in? :P
20:44:41 <CakeProphet> GregorR, You made a.... kernel?
20:45:53 <GregorR> Yeah - it's a multiboot kernel sans anything fancy with a BF interpreter bolted in :P
20:46:08 <GregorR> It has no memory management, it has no IRQ support, it has no support for processes.
20:46:42 <CakeProphet> We can make it fancier later, I guess.
20:46:56 <CakeProphet> and bolt a Glass interpreter in... what's it written in?
20:47:03 <pikhq> C, I bet.
20:47:33 <GregorR> Of course it's written in C ya' bloody idjits :P
20:47:36 <CakeProphet> oh... correction: -You- can make it fancier later...
20:47:42 <GregorR> C is the only language to write kernels in.
20:48:02 <CakeProphet> GregorR, Bullshit. :P
20:48:34 <GregorR> Well, with a bit of work, C++ could work too.
20:48:37 -!- RodgerTheGreat_ has joined.
20:48:39 <GregorR> And ASM of course.
20:48:55 <RodgerTheGreat_> arrgh
20:48:57 <RodgerTheGreat_> friggin' wifi
20:49:00 <GregorR> But there you have the complete list of every language that any pseudo-mainstream kernel has ever been written in ;)
20:49:18 <CakeProphet> GregorR, There are languages that don't exist yet... and those that people haven't tried.
20:50:08 <CakeProphet> GregorR, A kernel written in the most common kernel-writing language ever isn't really a very positive claim for an esoteric operating system... but it'll do. :P
20:50:38 <RodgerTheGreat_> the main reason people write kernels in C is... wait for it... wait for it... because other people have written kernels in C before.
20:50:49 <CakeProphet> zomg
20:50:51 <CakeProphet> :o
20:50:53 <RodgerTheGreat_> it doesn't really have anything to do with the language
20:51:15 <CakeProphet> It's like how people use qwerty because everyone knows qwerty and that's what they're taught to use.
20:51:15 <GregorR> No, the primary reason that people write kernels in C is that C is high-level enough to be sane to write in, but low-level enough that you can F*** around with the hardware.
20:51:21 <GregorR> Unlike whatever language you were about to mention.
20:51:46 <RodgerTheGreat_> FORTH is equally valid a language for writing a kernel
20:52:04 <RodgerTheGreat_> and that's just what pops into my head
20:52:29 <CakeProphet> hehe... so is Glass With Hardware Shit Bolted On. :D
20:52:30 <RodgerTheGreat_> in some senses, FORTH *is* a kernel
20:52:55 * CakeProphet likes FORTH himself.
20:55:44 <CakeProphet> Of course... we can always draft up a new esolang with lots and lots of hardware support that's just ALMOST sane to write in... and name it The Esoteric Language For Writing Kernels In.... it'll be like C.
20:56:07 <CakeProphet> If it grows in popularity... people will start using TELFWKI forpretty much everything.
20:56:14 <RodgerTheGreat_> if you recall, that's what Def-BF was originally supposed to be
20:56:44 <CakeProphet> RodgerTheGreat But... Def-BF wouldn't work well for that... now that I think about it.
20:59:19 <Sukoshi> I thought we weren't writing it in C.
20:59:30 <Sukoshi> But if it's in C, then we can bootstrap it pretty easily.
20:59:49 <CakeProphet> We weren't... and might not.
21:00:25 <Sukoshi> A flat memory model Forth is incredibly easy to work with to develop hardware.
21:01:11 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
21:01:49 <CakeProphet> I say we do it in true esolang fashion... make a new language for doing the job. (Def-BF would work... but not well.)
21:03:38 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
21:06:27 <CakeProphet> hmmm... FORTH does sound good though. It would work great for definiing new grammar (such as for writing an interpreter over the kernel)
21:06:45 <CakeProphet> and it's reverse polish notation.... which makes it fun. :D
21:07:37 <CakeProphet> heh... implementing Glass over FORTH wouldn't even require much of a parser.
21:10:51 <GregorR> Am I the only person who thinks it's irrelevent if the very core interpreter is written in C? :P
21:12:45 <CakeProphet> I think it's very relevant. :o
21:12:49 <RodgerTheGreat> I don't see it as a huge issue, but I detest coding in C. If the kernel is C, I'm not writing it
21:13:02 <oerjan> no. of course we will bootstrap a Glass compiler in Glass later.
21:13:09 <CakeProphet> Yeah... that too.
21:13:35 <CakeProphet> Why not Forth though? :D
21:13:38 <GregorR> Hey, if you can compile Glass to metal plus have proper hardware abstraction in there, more power too ya'.
21:13:45 <GregorR> s/too /to /
21:14:35 <CakeProphet> FORTH is like Glass minus classes plus tons of low-level hardware support.
21:15:02 <CakeProphet> ...delimited by whitespace. :D
21:15:39 <GregorR> Pffffffff
21:15:42 <GregorR> Whitespace is for pansies.
21:15:48 <GregorR> Except in the language Whitespace.
21:16:15 <CakeProphet> hell, FORTH can fucking compile itself. :D
21:17:37 <CakeProphet> hmmm... it's kind of weird that the class and function syntax of Glass is the only part that's not RPN
21:17:51 <CakeProphet> Unless... } is the actual begin-class command. :D
21:19:01 <pikhq> GregorR: You're not the only one who thinks that.
21:20:26 <GregorR> pikhq: Thank you X_X
21:22:04 * pikhq wants to see the core interpreter in C, with various interpreter modules. . .
21:22:41 <CakeProphet> forth forth forth!!!
21:22:43 <CakeProphet> :P
21:22:56 <CakeProphet> Yeah... whatever you wanna do.
21:22:59 <GregorR> svn co https://brainfuck.svn.sourceforge.net/svnroot/brainfuck/esokern/trunk
21:23:26 <CakeProphet> I'm not the one doing the coding... plus it's a minor consideration.
21:23:48 <CakeProphet> Except.. I can't read or code in C very well... so I can't do much with the kernel, not that I would normally want to muck with the kernel.
21:24:04 * pikhq does C decently
21:24:09 <pikhq> I do Tcl natively. . .
21:24:14 <pikhq> :)
21:28:05 <GregorR> Developers, developers everywhere, and not a drop of C X_X
21:28:25 <RodgerTheGreat> woo
21:41:31 <CakeProphet> Fuck C.
21:41:44 <CakeProphet> :) (smileys make things sound nicer)
21:41:56 -!- RodgerTheGreat_ has joined.
21:42:12 * CakeProphet waves.
21:42:20 <RodgerTheGreat_> hi again
21:42:31 <RodgerTheGreat_> curse this unreliable connection
21:46:10 <CakeProphet> I've developed a liking to postfix notation. :)
21:48:04 <bsmntbombdood> RPN is great
21:48:37 * RodgerTheGreat_ strokes his Hp-12C lovingly
21:49:11 <CakeProphet> I'd like to do a confusing infix notation language. :D
21:49:13 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
21:53:35 * bsmntbombdood wants an HP calc
21:53:52 * bsmntbombdood laughs reading the scrollback of you guys arguing
21:58:32 * Sukoshi is amused as she reads above.
21:58:38 <Sukoshi> I'm fine coding in either C or Forth.
21:59:16 <Sukoshi> Just, the nature of low-level code tends to favor Forth a bit more, IMO.
21:59:33 <Sukoshi> (Because it's easier to build up (much like Lisp))
22:02:40 * bsmntbombdood sees "she"
22:02:45 * bsmntbombdood drools
22:03:07 <Sukoshi> The main plus is that Forth is interactive.
22:04:48 <GregorR> lol
22:04:58 <GregorR> bsmntbombdood: Hands off ya' blimey pervert!
22:25:00 <bsmntbombdood> heh
22:25:08 <bsmntbombdood> I keep getting disconnected
23:13:40 <oerjan> Why, happy new year!
23:20:18 -!- RodgerTheGreat has joined.
23:23:18 -!- RodgerTheGreat has quit (Client Quit).
23:37:26 -!- RodgerTheGreat_ has quit (Read error: 110 (Connection timed out)).
23:56:01 -!- cmeme has quit (Remote closed the connection).
23:57:22 -!- cmeme has joined.
←2006-11 2006-12 2007-01→ ↑2006 ↑all