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: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.
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: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: unknown host esolangs.org
01:59:31 <Aardwolf> the IP brings me to a spammy earthlink site though
01:59:58 -!- wooby has joined.
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: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:14:03 <bsmntbombdood> 37,000 lines of edgar allen poe ran through a markov chain based text generation algorithm
02:14:58 <bsmntbombdood> From the House of the lips resumed the lonely went boldly out
02:15:59 <Aardwolf> hehe, I'm sure that spam mail generators use a similar algorithm
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:25:27 -!- pikhq has joined.
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: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: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: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:25 <Razor-X> Which is why Scheme SYNTAX-CASE macros are specifically called ``hygenic macros''.
04:04:53 <Razor-X> GENSYMs were annoying. I remember that much too.
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: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:38 <Razor-X> Why? Can't Common Lisp functions produce other functions?
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: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: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: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:18 <Razor-X> Oh... you can't do that in your average DEFUN ?
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:53 <Razor-X> Or a closure... I think the Common Lisp term was.
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:54 <Razor-X> So it seems you don't need DEFMACRO.
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: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:25:13 <Razor-X> So, you're talking about modifying a top-level definition?
04:25:33 <Razor-X> Like, in Scheme, (define alpha 5) (define (test) (set! alpha 3)) ?
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: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: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:33:08 <Razor-X> Oh, have you read the post that started StumpWM?
04:33:31 <Razor-X> It's funny. It's part of the coding-Lisp-under-acid ethos.
04:34:33 <Razor-X> I used Ratpoison, so I'd love to see StumpWM become a tour de force.
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:57 <Razor-X> I, frankly, don't like reaching the 30 cm over to my trackball.
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:23 <Razor-X> You're... learning CL.... without hearing about Paul Graham?!?!?!
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:52:32 <bsmntbombdood> this is cool: http://www.levenez.com/lang/history.html#04
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:28:23 -!- Sgeo has quit (Remote closed the connection).
05:37:47 -!- anonfunc has joined.
05:54:02 <pikhq> People *hate* Cobol for it's Englishness, actually. XD
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: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: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:57:16 <twobitsprite> http://en.wikipedia.org/wiki/Joy_programming_language
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:59:02 <Razor-X> Functionality and stack usage scare me.
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: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: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: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:04:27 <pikhq> It suffers from "when all you have is a hammer, everything starts looking like a nail", though.
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: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: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: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: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: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: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: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: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: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: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: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:43:18 -!- Robdgreat has joined.
06:50:28 -!- pikhq has quit ("leaving").
07:07:34 -!- sreeram has joined.
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:09:30 <Asaph> I entered and was greeted with a cough and "Thief."
07:09:59 <twobitsprite> ahh... is this about the similarity of nicks between you and RodgerTheGreat? lol...
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: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: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
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: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: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:24 <wooby> perhaps an IDE is in order?
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: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.
12:24:24 -!- SevenInchBread has quit ("haaaaaaaaaa").
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:57:04 -!- wooby has quit.
13:03:17 <Aardwolf> always nice if an esolang comes out of a dream ;)
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:48:07 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
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: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: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: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: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: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: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: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:52 <pikhq> Well, to be fair, it'd be "if var {expr var==0} {code-here} : temp0 temp1".
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: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: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:03:31 <Razor-X> Paper and Pencil, I assumed.
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: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: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:32:59 <SimonRC> <mutter>In Haskell you get those for free</mutter>
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: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:40:11 * pikhq contemplates discussing his recent changes to BFM, for the benefit of oerjan.
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: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:43:19 <oerjan> how is optimization smarter?
23:44:01 <pikhq> Remember your suggestion for having a cleared-cell stack?
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:47:24 <oerjan> i had some further ideas about declarations
23:48:11 <oerjan> basically, a keeps0 declaration
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: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: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: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: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:32 <pikhq> It's a matter of severe paranoia.
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
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: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: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").
04:37:32 <ivan`> that looks harder than python
04:38:07 <ivan`> they should take the initiative?
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:18 <RodgerTheGreat> I think BASIC remains a *great* way to introduce kids to programming. QBASIC is freeware now, I think...
04:41:41 <ivan`> don't braindamage any more innocent kids
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:45:01 <ivan`> i never figured out GOSUB
04:45:18 <pikhq> There was no "GOSUB".
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:47:50 <Sgeo> I remember learning VB5. I hold that that forever crippled any ability to make GUIs by hand
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: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: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: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: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: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
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: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: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: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: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: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: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: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.
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:35:16 <pikhq> 14:30 [localhost] -!- *** glibc detected *** double free or corruption (!prev): 0x080d3f18 ***
21:37:44 <Razor-X> Haha. Garbage collection bug.
21:41:16 <Razor-X> Has anyone here heard of jMemorize?
21:42:13 <pikhq> The magic words are "identify password"
21:42:38 <pikhq> That kills bitlbee.
21:43:33 <pikhq> Well, it does that for me. . .
21:43:45 <pikhq> s/password/your_password_here/, BTW.
21:45:55 <Razor-X> Also, does anyone here use rcirc and want to compare it to erc?
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:57:41 <bsmntbombdood> whoa, http://www.emacswiki.org/cgi-bin/wiki/ErcChess
22:01:20 -!- sebbu2 has quit (Connection timed out).
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.
00:06:34 * pikhq should get off his lazy ass and do *something*.
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:15:05 <pikhq> They've got something to the effect of "if(browser!=ie7) show_ie7_ad();" in their page.
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: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:45:56 -!- pikhq has quit ("leaving").
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.
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.
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: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: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:28 <GregorR> Tk looks awful everywhere;.
07:32:10 <Razor-X> It doesen't look too awful on Mac OS X.
07:32:23 <Razor-X> GreaseMonkey: You know? The graphic toolkit TK?
07:37:51 -!- SimonRC has quit (Read error: 110 (Connection timed out)).
07:38:23 <Razor-X> Someone needs to remake TK's primitive widgets.
07:38:52 <Razor-X> TK should use, oh I dunno, modern fonts maybe?
07:51:33 -!- anonfunc has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
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:10:09 <Razor-X> So, I get to knock it then?
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 (?).
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: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:31:02 <GreaseMonkey> oxyd is loke memory except you gotta do some weird puzzles
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: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:58:21 <Rugxulo> there are already a few converters (not necessarily for those but anyways ...)
02:59:52 -!- thematrixeatsyou has joined.
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:12:14 <Rugxulo> http://lvogel.free.fr/sed.htm#unlambda
03:13:52 <Rugxulo> yup, almost as crazy as sokoban in sed (or factor or bf2c or dc or hanoi or ...)
03:15:16 <lament> bf2c is completely trivial
03:15:33 <lament> and i'm guessing so is hanoi
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:46:12 <Rugxulo> no idea, too bizarre for me
04:50:33 <lament> s is a very standard combinator
04:55:18 <lament> unlambda didn't invent all its stuff
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: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:08:38 <Razor-X> I call it BF mainly to elide the expletive, meh.
05:08:43 <lament> Rugxulo: come on, spell fuck correctly
05:08:46 <Rugxulo> inspired by False, I think
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: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: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: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:51:32 <SimonRC> erm, that would crash if B>1, surely?
05:52:00 <SimonRC> Or overflow the call stack rather.
05:52:31 <lament> RodgerTheGreat: GOSUB counts as a funtion call
05:53:04 <SimonRC> But there is no local scope.
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: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?
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:54 <oklopol> yes, this is prolly the last thing i do with it :)
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.
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:17:18 <SimonRC> what happens when I do this:
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:38:48 <bsmntbombdood> talked to the programming teacher at my school just now
23:42:37 <bsmntbombdood> "it can be oop unless it has compiler enforce private methods"
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: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:43 <SimonRC> You could write OO assembler without difficulty.
23:46:49 <bsmntbombdood> "oop needs inheritance, polymorphism, encapsulation
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:39 <SimonRC> I was refering to thing like "List" being an abstract.
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:41 <SimonRC> Python uses duck typing, interfaces are defined in the comments, informally.
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:32 <SimonRC> But algebraic datatypes rock.
23:54:23 <SimonRC> especial multiple-parameter typecalsses with fundeps.
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.
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:41 * GregorR-L hopes that lament is typing a long rant that will make this conversation keep spiraling into the tubes.
00:04:19 <bsmntbombdood> Well - I need an idea for a project for the programming teacher
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:15:54 -!- DarthLappy has joined.
00:33:14 -!- DarthLappy has left (?).
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: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:39:42 -!- Keymaker has left (?).
02:32:44 -!- JadussD has joined.
02:51:35 <SimonRC> Did you know what this place was before coming here?
02:52:06 <SimonRC> Where did you find out about it?
02:52:14 <JadussD> i guessed that it existed.
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: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: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: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: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:36 <SimonRC> A CS grad I know says that this system looks useful for his work (program correctness, among other things).
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:47 <SimonRC> Trying to find one is summative coursework.
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: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: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:24 <Razor-X> Meant for scratch buffer, sorry.
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: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: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: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: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: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: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: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: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: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.
00:15:25 <tokigun> food! well breakfast time is passed... :S
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: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: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: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:54 <pikhq> bsmntbombdood: "this" refers to. . .?
01:17:58 <bsmntbombdood> http://bsmntbombdood.mooo.com/malbolge.txt , english-ized up to line 78
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:22:22 <tokigun> i have to sleep now... have a nice day (or night, depending on your timezone) :)
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: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: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: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:45:12 <bsmntbombdood> I wonder if there's any english words that are that complicated
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:44 <lament> It's not the fault of Portuguese that English requires a long sentence to translate it.
03:48:06 <lament> Obviously the English translation of English words is not gonna be complicated.
03:49:20 <lament> bsmntbombdood: http://en.wikipedia.org/wiki/Untranslatability
03:50:31 <lament> "Serendipity" is a very good one
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: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: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: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: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: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: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: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: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:33:38 <Rugxulo> Gregor, ever written anything in BF?
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: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.
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: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: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: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: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 <oerjan> you are crazy enough to ask ''us''?
01:50:11 <pikhq> Prove Malbolge Turing complete.
01:50:24 <oerjan> but it isn't. finite memory.
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: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:59:52 <oerjan> write a simulator of something...
02:02:36 <oerjan> something physics-related, perhaps
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: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: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: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 <pikhq> BEGIN INTERNET RELAY PROGRAMMING STATEMENT:
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:52:22 <bsmntbombdood> Should take a semester, and be "advanced". (advanced in his mind isn't very advanced
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:57:29 <RodgerTheGreat> there are many operating system components that would be a sufficient challenge- a window manager, a package manager, a filesystem, etc.
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:50 <RodgerTheGreat> there is no such thing as an "original idea", only improvements based on observation of existing solutions and problems.
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: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: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: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:43:29 <Razor-X> RodgerTheGreat: It's the same WM.
05:43:37 <Razor-X> It's been ported to CL, is all.
05:48:19 <Razor-X> Why use Python when you can use CL?
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: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:12:11 -!- mtve has joined.
06:12:12 -!- fizzie has joined.
06:13:13 <Razor-X> Pexps feel so ... uncouth after using sexps for long enough, IMO.
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:56 <pikhq> Thought the counterpart was mexps.
06:14:02 <lament> When i was your age :D
06:14:11 <Razor-X> So it's an age thing, huh?!?!
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:50 <lament> and i don't like ugly.
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: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: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: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: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: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: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: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:37:01 <Razor-X> s/particularly/particular/
06:42:33 * pikhq should go to sleep. . .
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:31:21 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
18:32:12 -!- oklopol has joined.
20:04:28 -!- Sgeo has joined.
20:06:39 -!- tgwizard has quit (Remote closed the connection).
20:07:52 -!- okokoko has joined.
20:16:30 -!- oklopol has quit (Read error: 60 (Operation timed out)).
20:16:53 -!- pikhq has joined.
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: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:40 <pikhq> Or at least temporarily numbed them.
20:27:24 <pikhq> ". . . What the hell? I haven't done this since 8th grade!!!"
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:30 <GregorR> These are the voyages of the BrainFuck Macro Language.
20:46:34 <GregorR> Its continuing mission ...
20:46:43 <oerjan> that would be up to the objects to decide, they would probably have to form a committee :)
20:47:05 <oerjan> to boldly code where no (wo)man has coded before
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:50 <pikhq> macro show-memory {} {} {} {forceinline #}
20:53:39 <pikhq> Although that's more of a binary level debugger. . .
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: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:56:35 <SimonRC> You could get the compiler to annotate the binary with line numbers and variables, and turn off all optimisations.
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:13:46 <SimonRC> bsmntbombdood: Have you seen the graph of the number of pirates against global temperature?
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:23:43 <pikhq> Talk Like a Pirate Day. -_-'
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:42 <pikhq> We cut out the middle man.
21:29:49 <pikhq> We are the rich, giving to the poor. :p
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: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: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: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: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: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: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: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.
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: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: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: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: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:42:15 <pikhq> But it takes 0 seconds for me to install it. . .
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:52 <lament> i'm not even sure of that.
03:02:06 <pikhq> It is *the* Emacs Lisp implementation.
04:02:41 -!- GreaseMonkey has joined.
04:03:04 * pikhq takes a guess that GreaseMonkey likes Greasemonkey
04:10:35 * pikhq makes out with BFM
05:08:10 -!- GregorR-L has joined.
05:10:35 -!- calamari has quit (Remote closed the connection).
05:10:59 -!- calamari has joined.
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: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: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:56 <calamari> here's something fun you can do
05:24:03 <Sgeo> pikhq, I tried that
05:24:13 <Sgeo> pikhq, it wouldn't let me
05:26:38 <Sgeo> I just got "^ Error"
05:27:08 <calamari> sorry you need to push enter again after jmp 101
05:27:37 <Sgeo> Should I close and restart debug?
05:28:25 <Sgeo> The cursor just sort of... froze..
05:29:05 <Sgeo> Something that left it in a pseudousable state would have been preferable..
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: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: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:23 <calamari> I call that an imitation of an argument :)
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: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: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:52:47 <oerjan> But it doesn't discard the rest of the line, does it?
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:49 <oerjan> My brain confused it with sscanf I think.
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:04:11 <lament> i assume he's talking about setjmp/longjmp?
21:04:54 <Razor-X> Switching between multiple threads of control within a process.
21:05:39 <lament> oh, huh, that does look like continuations
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:16:33 <GregorR> I don't know what revision *shrugs*
22:18:08 -!- calamari has joined.
22:19:47 * oerjan prepares to shoot calamari
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: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: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:27:52 <calamari> SimonRC: okay I've decomposed that tricky loop
22:28:31 <calamari> not sure how to write it in here tho.. let me try
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 <oerjan> rather difficult to match 5 letters with 4 statements
22:30:28 <calamari> like I said.. hard to write in irc
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: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: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:24 <oerjan> argh, a drive-by chemist!
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: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: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: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:44 * oerjan bops ihope on the head
22:46:53 <oerjan> we are discussing _removing_ gotos
22:46:58 -!- kipple_ has joined.
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:43 <calamari> the first step is to unravel weird goto loops into traditional structured code
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:30 <RodgerTheGreat> some loops can be directly unfolded, but others are integral to the functioning of the program- the main loop, at least
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:55:41 <RodgerTheGreat> is the goal to create space-efficient code or speed-efficient code, or either?
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
23:00:28 <oerjan> oh i thought it was obvious what i meant
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:51 <oerjan> oh and by the way the MAYBE is to mean that one option is not to jump at all
23:03:29 <RodgerTheGreat> couldn't each "maybe" be first broken into a pair of "jump or not" instructions?
23:03:46 -!- tgwizard has quit (Remote closed the connection).
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:06:44 <calamari> A B WHILE C { A B } WHILE D { B WHILE C { A B } }
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: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: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: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: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: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: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:35:06 <lament> i don't need photographic memory.
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: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: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: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: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:51:05 <oerjan> then you could do case statements as well
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: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:58:22 <RodgerTheGreat> I found an article explaining how it worked a while back, but it never had any pictures of the device
00:00:00 -!- ivan` has joined.
00:00:35 <calamari> http://www.rci.rutgers.edu/~cfs/472_html/Intro/TinkertoyComputer/TinkerToy.html
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: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:11:11 <ihope> LTSRMVPNCTTNNDCPTLZTNT
01:11:29 <ihope> (Let's remove punctuation and capitalization, too!)
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:19:51 <oerjan> DNTNDRSTNDNTHNGYRSYING
01:23:17 -!- oerjan has quit ("TMTGTBD").
01:36:13 <ihope> YSDTHTTHSTTFCHRNLGNCSSTTDSFTHSLPNGPLC
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: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:39 <SimonRC> I just can't read what oe wrote.
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: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:16 <SimonRC> all those are PK in just consonants.
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: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:11:34 <SimonRC> And then there's "Merkin", which means either "American" or a pubic wig.
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:36:38 <SimonRC> Apparently each dorm gets a class-B network.
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: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:33 <GregorR-L> But 1 in this case isn't necessarily 1 byte :P
23:15:32 <calamari> does it assume wrapping cells ?
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:33 <ihope> Does EgoBot need to be here for you to update him with it?
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:58 <calamari> GregorR: so .. int x = 4; x = x - 7; what happens? :)
23:20:19 <GregorR-L> calamari: It does indeed wrap around.
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:40 <GregorR-L> ihope: Send it to me, I'll add it and /give/ you the .tar.bz2 ;)
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:48 <GregorR-L> Or it'll actually try to write it to a tape ^^
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:37:55 <ihope> What's wrong with .tgz? :-P
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
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:54:00 -!- ShadowHntr has joined.
19:20:31 <sekhmet> RodgerTheGreat: Security would probably be the biggest bonus, esolang's pretty old
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.
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: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.
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:34:25 <SimonRC> Co-incidentaly, he is called "Eddy the great".
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.
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:12:08 -!- pikhq has joined.
01:26:38 -!- GregorR-L has quit ("HydraIRC -> http://www.hydrairc.w00t <- IRC for annoying quit-spamming bastards").
01:32:51 <bsmntbombdood> or even http://bsmntbombdood.mooo.com/testclosure.c
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: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: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:25 <SimonRC> http://www.superdickery.com/dick/17.html
16:31:24 -!- woggle has quit (Connection timed out).
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:14 <SimonRC> http://www.bbc.co.uk/radio4/comedy/nowshow.shtml
20:51:57 <tokigun> bsmntbombdood, i'm not sure, but i think your code may be not portable
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:58:23 -!- CakeProphet has joined.
21:13:47 * SimonRC swears at bsmntbombdood's ugly hack for a bit.
21:15:53 <SimonRC> First-clas functions, more literally than usually meant.
21:18:20 <SimonRC> My friends elsenet hate it.
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: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: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:31:48 <SimonRC> It seems several pograms disagree. ^^^
21:33:14 <SimonRC> OTOH, it works on my machine.
21:41:40 <bsmntbombdood> mprotect(newfunc, size, PROT_WRITE | PROT_READ | PROT_EXEC);
22:00:00 <SimonRC> :-S http://www.propeller-island.de/rooms_neu/room_detail/23/index.php
23:17:23 -!- Sgeo has joined.
23:41:21 -!- pikhq has joined.
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...
03:08:32 -!- sekhmet has quit ("next stop: hard drive!").
04:36:20 -!- ldlework has joined.
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 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: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:35:09 * pikhq curses at Egobot's nonexistence
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:45 <bsmntbombdood> But seriously, don't watch that on youtube, download a torren
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:59:11 <SimonRC> bsmntbombdood: you tell me too late
23:59:29 <SimonRC> Is there torrent software for Windows?
00:00:17 * Sukoshi sure hopes SimonRC is joking.
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:11:21 <Sukoshi> Maps a file's contents in virtual memory to a pointer, with the space occupying a desired length.
00:12:40 -!- wooby has joined.
00:12:46 -!- wooby has quit (Remote closed the connection).
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:52:45 -!- wooby has joined.
00:53:48 -!- GregorR-Grrr has joined.
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: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: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: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:58 <CakeProphet> ...you don't even specify a size for them.
05:45:34 <tokigun> well, but if you need more speed... ;)
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: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: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.
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: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: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: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: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.
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)
23:00:42 -!- ShadowHntr has joined.
23:18:07 * ihope uses the /edit command to capitalize everything oerjan said
23:18:59 <oerjan> hey, that's a derived work! i demand royalties :)
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: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.
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.
02:28:44 -!- pikhq has quit ("leaving").
02:44:24 -!- Furious_joe has joined.
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: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.
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.
18:02:34 <pgimeno> is there an epidemy of IRP or some /. article or something?
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:39:10 -!- GregorR has quit (Read error: 110 (Connection timed out)).
18:39:27 -!- GregorR has joined.
19:24:28 -!- Arrogant has joined.
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:42:08 <Sukoshi> Thank you for your prompt reply :P
23:47:18 -!- wooby has joined.
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: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:28:10 <GregorR> Yeah, I was gone all weekend.
05:28:35 <GregorR> Comcast + windstorm = AH CONT HONDLE THUH ENGINES SIR!
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.
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 (?).
00:13:14 -!- Sgeo has joined.
00:19:03 <bsmntbombdood> I hate it when people say HTML isn't a programming language
00:26:06 <SimonRC> bsmntbombdood: It's a language, but not a *programming* language.
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:27:02 <GregorR-W> HTML is a markup language, not a programming language.
00:27:18 <bsmntbombdood> Programming languages don't have to be turing complete
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: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: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:18:39 -!- bsmnt_bot has joined.
04:18:49 <pikhq> Now, can you add BFM support to EgoBot? :p
04:19:15 -!- EgoBot has joined.
04:19:39 <GregorR> !raw PRIVMSG #esoteric :I'm better.
04:20:12 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
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:35 -!- GregorR has changed nick to bsmntbombdood2.
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:18 * pikhq has a better regex. . .
04:21:27 <bsmntbombdood> oops, "^:bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG \S* :!raw"
04:22:57 <pikhq> That could probably be abused.
04:23:04 * pikhq looks for abusive ctcps
04:23:50 <bsmntbombdood> !exec self.register_raw("^pikhq.*!%s" % "zomgquit", lambda x : True)
04:24:09 <GregorR> Repeat that a few times == DDOS
04:25:22 -!- GregorR has changed nick to pikhq_not.
04:25:42 -!- pikhq_not has changed nick to GregorR.
04:26:41 <bsmntbombdood> !exec self.register_raw("^:pikhq.*!%s" % "zomgquit", lambda x : True)
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: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:33:37 <GregorR> On an unrelated note, http://www.codu.org/plof/
04:37:04 -!- bsmnt_bot has quit (Remote closed the connection).
04:37:23 -!- bsmnt_bot has joined.
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:20 <GregorR> pikhq: The phrase, "You've got your work cut out for you" means "You have a lot of work"
04:47:31 <GregorR> In D, so you probably can't [easily] use it ^^
04:49:33 <GregorR> Inheritance, interface implementation and such are abstracted to object arithmetic.
04:51:14 <GregorR> Want me to compile dplof for you?
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:57:38 -!- bsmntbombdood has left (?).
04:57:42 -!- bsmntbombdood has joined.
04:58:02 <GregorR> Could you be less specific? :)
04:58:29 <GregorR> var linefromstdin = stdio.StdIn.readln();
04:58:58 <GregorR> I suppose I should allow it to read from stdin >_>
05:01:33 <GregorR> [] is an object, {} is a function
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: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:08:47 -!- Sgeo has quit ("Ex-Chat").
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: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: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:37:38 -!- bsmnt_bot has quit.
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: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:45 <GregorR> Basically, you need to explicitly declare all variables *shrugs*
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:56:43 -!- ShadowHntr has quit ("End of line.").
05:59:30 <Sukoshi> So, is Plof a whole bunch of Flex/Bison?
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: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:48:06 <pikhq> ERROR: LAZY PROGRAMMERS
16:49:16 -!- PiedotTaste|Lapt has quit ("bai bai.").
17:05:12 -!- bsmnt_bot has joined.
17:05:19 <GregorR-W> bsmntbombdood: My thoughts exactly :P
17:07:45 <pikhq> You live in Colorado?
17:08:32 <GregorR-W> Why is your bot in ... I don't even know what country. Belaruse?
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:46 <Sukoshi> When it's below freezing, us Californians wonder what the hell is going on in the world.
17:12:14 <pikhq> Sukoshi: Need an extra "i" for your name to be valid Romanised Japanese. ;)
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: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:15:16 <pikhq> I could've *sworn* it was an i-adj.
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: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:22 <pikhq> Oh. . . It's an Emacs package.
17:18:30 <pikhq> Too bad I don't use Emacs for IRC.
17:18:47 <Sukoshi> kinput2 with canna as your dictionary.
17:19:13 <pgimeno> --- 少し :Erroneous Nickname
17:19:13 <Sukoshi> kinput2 has nothing to do with KDE.
17:19:26 <Sukoshi> ... Or any other WM for that matter.
17:19:42 <pikhq> No installation candidate in my apt repository. :'(
17:20:04 <pikhq> Package kinput2 is not available, but is referred to by another package.
17:21:05 <pgimeno> pikhq: try apt-cache search kinput
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:25:00 <pikhq> $ zsh: command not found: kinput2 ~/gnash/server/asobj
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:33 <pgimeno> that'd be it, try kinput2-canna
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: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:04:00 <GregorR-W> You could (at some point) write a Plof version :)
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:14 <GregorR-W> So accessing C++ would likely involve making a C wrapper.
18:07:41 * pikhq tries to find the Plof website
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:09:14 * pikhq should probably get GDC.
18:11:12 <Sukoshi> Oh. Are you supposed to use your pinky for parentheses or something?
18:11:27 * Sukoshi learned Dvorak the homebrew way.
18:11:42 <Sukoshi> My middle finger goes on parentheses.
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:48 <Sukoshi> Blah. Time to write an HTTP parser :(
18:12:59 <Sukoshi> And client. A very limited client, though.
18:14:08 <pikhq> I might just pick up the Digital Mars compiler. . .
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: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:18 <GregorR-W> GCC isn't so bad, all things considered.
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:16:07 <pikhq> My desktop does Gentoo.
18:16:15 <pikhq> I know that it's time-consuming.
18:16:20 <bsmntbombdood> The slot SOCKET is unbound in the object #<IRC-BOT {AEBCAE9}>.
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:30:20 <Sukoshi> Error: Twice is not a valid range bound.
18:34:31 <pikhq> ERROR: This programmer accepts Brainfuck code only.
18:35:25 <pikhq> ERROR: Not enough errors.
18:46:06 <GregorR-W> pikhq: Presumably you got the dplof binary working? :P
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: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:54 <pikhq> Like, say, a GTK binding.
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:52:16 <GregorR-W> Actually, I could more easily just answer "yes" :P
18:52:57 * pikhq wonders what the hell else(); does
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:44 <pikhq> Wouldn't if(version(), {foo;}); make more sense?
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: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: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:19 <pikhq> You know, that sort of *does* look weird in Plof.
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.
19:03:35 <GregorR-W> It looks pretty C-like except for the commas :P
19:18:50 <lindi-> arguments are evaluated lazily?
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: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: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:34 <GregorR-W> bsmntbombdood: Yeah, but lisp is terrible.
20:22:09 <Sukoshi> It works in Lisp because of the way the parentheses work.
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: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: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: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: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: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:49:11 <Sukoshi> Even then, I don't think functions are first-class data types in Python.
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.
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:52 <Asztal> they are? I mean, you can pass them around, but it's really rather awkward
21:02:15 <GregorR-W> You can, and the only thing that's awkward is the syntax.
21:03:53 <GregorR-W> Functional programming also requires things like nested functions,
21:04:13 <GregorR-W> Hm, can't think of other off the top of my head.
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: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:53 <GregorR-W> It's a huge pain in the ass, and requires about nine levels of abstraction, but it's possible.
21:07:13 <GregorR-W> You'd have to make functions (possible), and then function arguments (possible), and then pointers.
21:07:26 <GregorR-W> It doesn't have functions, and C doesn't have closures.
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:57 <GregorR-W> Now you see my point about how C is not a functional language? :)
21:10:07 <bsmntbombdood> How would you implement functions in a language without jmp though?
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: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:36:02 * SimonRC wonders if there is a database server anywhere that can provide sub-millisecond response times.
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: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: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: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:45:13 <GregorR-W> You have to declare all variables.
21:49:50 * SimonRC reads about Codethulhu on TDWTF.
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: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 <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:56 <SimonRC> I can tell you what an esotreic programming language is.
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: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: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: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:07 <SimonRC> Have you ever seen the code a parser generator generates?
22:21:18 <Sukoshi> I just tend to mistrust generated code.
22:21:20 <SimonRC> It consists mostly of gotos, IIRC
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: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: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: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:48 <Sukoshi> Well, I wanna see if this code is more effecient than parser generator code.
22:27:59 <Sukoshi> God help me, I'm going to commit case hell.
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:17 <FabioNET> they are Italian I do not speak well English excused the uneasiness.
22:29:38 <SimonRC> Sukoshi: allow me to demonstrate.
22:29:46 <GregorR-W> Sukoshi: http://www.esolangs.org/wiki/IRP
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: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:45 <tokigun> hmm, i've tested IRP in some other channel, and got syntax error... :p
22:32:39 <bsmntbombdood> No way that part of a CS degree should be web design
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: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:37:07 <GregorR-W> I'm actively in the process of majoring in CS.
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:34 <Asztal> Our teacher came out with gems like "There's no M in \"Mrs Sharp\""
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: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: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: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:12 <Asztal> First time I've seen D used actually :)
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)
23:03:52 <GregorR-W> That's a ridiculously cumbersom way to type "1" :P
23:07:16 <GregorR-W> You and your ... whatever language that is.
23:09:30 <GreaseMonkey> hashEsoteric@()=+{if({GregorR~.CheckStatus("BuildingPlofCompiler");}{GreaseMonkey~.Act("BuildTomatoCompiler")});};
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: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:30 -!- FabioNET has quit ("Buon natale ocn la passera").
23:13:34 <GregorR-W> And that's with my non-primary nick ;)
23:16:36 <GreaseMonkey> Tomato is a programming language under development which looks slightly similar to C and supports self-modifying code.
23:17:43 <GregorR-W> !glass {M[m(_o)O!"You're mean :("(_o)o.?]}
23:18:46 -!- bsmnt_bot has joined.
23:20:54 <GregorR-W> TO WORK, OR NOT TO WORK? That is the question.
23:21:19 <GregorR-W> !ctcp #esoteric ACTION roflcopters?
23:21:42 <bsmntbombdood> !exec self.register_raw(".*dude.*", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
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:43 <GreaseMonkey> !daemon ctcp bf8 +.[,--------------------------------]+,----------[++++++++++.,----------]+.+++++++++.
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: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:26:08 <GreaseMonkey> daemon ctcp bf8 [[-]+.[,--------------------------------]+,----------[++++++++++.,----------]+.+++++++++.]
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:29:01 <GreaseMonkey> bsmntbombdood: do you know of any good networking tuts for linux?
23:31:29 <bsmntbombdood> One of the ones on that page might be a little more friendly ;)
23:32:17 <bsmntbombdood> !exec self.register_raw( ".*!%s" % "rtfm", lambda x : bot.raw("PRIVMSG #esoteric :dude, go rtfm"))
23:33:30 <GregorR-W> man 7 socket is a HORRIBLE reference for networking XD
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: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:08 <Asztal> A truly intelligent bot has a terrible pain in all the diodes down his left side
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: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:48:20 <tokigun> theorically, large database could cover most of problem; only remaining problem is how to construct the database
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: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: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
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: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: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: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:09:06 <GregorR-W> Whoever made sugar-free caffeinated soda had a fundamental misunderstanding of the difference between "tired" and "low on energy"
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:12:43 -!- ihope_ has joined.
00:14:06 -!- oerjan has joined.
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:19:10 <oerjan> someone else reading xkcd, i see
00:19:54 <RodgerTheGreat> I never thought mario could be trippier. I was a fool.
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: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: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:40:00 -!- bsmnt_bot has quit (Remote closed the connection).
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:41:06 <CakeProphet> S(encoding-string:length:sequence-of-character-ordinals-separated-by-commas) <--symbol ...what other info would you include?
00:41:27 <bsmntbombdood> !exec for i in range(10000): self.register_raw(str(i), lambda x : False)
00:41:52 <CakeProphet> hmmm... you could change sys.stdout to the socket you're writing too.
00:42:59 -!- bsmnt_bot has quit (Remote closed the connection).
00:43:04 -!- bsmnt_bot has joined.
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:47 -!- bsmnt_bot has quit (Remote closed the connection).
00:45:26 -!- bsmnt_bot has joined.
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:47:53 -!- bsmnt_bot has quit (Remote closed the connection).
00:47:56 -!- bsmnt_bot has joined.
00:49:25 <CakeProphet> hmm... can't remember if sockets use the write function or not.
00:50:12 <CakeProphet> class MySocket(socket.socket): def write(self, *args): self.send(*args)
00:50:45 <bsmntbombdood> Which I was using anyway, because it line buffers for me
00:51:49 <bsmntbombdood> !exec self.register_raw(".*dude.*", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
00:52:18 <CakeProphet> networking interface, database protocol, a text-based RPG codebase, a-random-assortment-of-very-abstract-and-general-tools.
00:52:31 <oklopol> every bot should do brainfuck :DD
00:53:18 <CakeProphet> It would be possible in Python if Python assignment was an expression.
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:55:17 <oklopol> i did it without loops :DD
00:56:20 <oklopol> haha i can't do an assignment in a lambda? :D or is there a way?
00:57:24 <oklopol> i disagree, but see your point
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:53 <oklopol> k now that i've played around a bit with the idea, it starts to seems pretty hard :DD
01:02:06 <oerjan> have you tried using y combinators for recursion?
01:03:49 <oerjan> although it might use up the python stack
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 -!- oerjan_ has joined.
01:06:12 <CakeProphet> You would use ^dude to state explicitly at the beginning
01:06:31 <bsmntbombdood> Nope, it matches the regex on the whole line from the irc server
01:06:41 <bsmntbombdood> :CakeProphet!n=CakeProp@h124.238.213.151.ip.alltel.net PRIVMSG #esoteric :heya
01:06:56 -!- oerjan has quit (Nick collision from services.).
01:07:02 -!- oerjan_ has changed nick to oerjan.
01:07:24 <bsmntbombdood> "^:.*:dude" would match at the beggining of a line
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:10:04 <CakeProphet> select is only for when you have multiple sockets.
01:10:50 <bsmntbombdood> !exec self.register_raw("dude", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
01:11:09 <bsmntbombdood> !exec self.register_raw(".*dude.*", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
01:12:02 <CakeProphet> comparing any subsection of the string to the regex
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:26 <bsmntbombdood> !exec self.register_raw(".*!%s.*" % "killme", lambda x : True)
01:13:44 <oerjan> well then, what is wrong with it?
01:17:50 -!- bsmnt_bot has quit (Remote closed the connection).
01:17:56 -!- bsmnt_bot has joined.
01:19:24 <CakeProphet> !exec self.register_raw(r".*?!dice.*, lambda x: bot.raw(__import__("random").randint(1,6)) )
01:19:55 <ihope_> !raw PRIVMSG #esoteric :Bling bling
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:32 -!- bsmnt_bot has joined.
01:20:45 <bsmntbombdood> !exec self.register_raw(r".*?!dice.*", lambda x: bot.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,6)) )
01:21:18 <CakeProphet> It's something of a hack... since it imports random -each- time :D
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:22:25 <CakeProphet> bsmntbombdood, except Exception: traceback.print_exc()
01:22:39 -!- bsmnt_bot has quit (Client Quit).
01:23:17 -!- bsmnt_bot has joined.
01:23:29 <CakeProphet> pfft... lemme use exec. I promise I won't delete your OS.
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:54 <CakeProphet> Might be wrong... I'm not willing to test it.
01:28:45 <ihope_> Of course bsmnt_bot is running under a restricted user...
01:29:37 -!- wooby has quit.
01:32:48 -!- wooby has joined.
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:34:36 <ihope_> Uh oh, the !exec is... hmm.
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: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 -!- bsmnt_bot has quit (Remote closed the connection).
01:35:28 -!- calamari has joined.
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: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: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: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:58 <CakeProphet> that's some good ol' C-compiled iteration for ya
01:43:04 <bsmntbombdood> !exec for num in xrange(6): bot.raw("PRIVMSG CakeProphet :lol")
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:59 <GreaseMonkey> for(;;){bot.raw("PRIVMSG CakeProphet :%s",rand() % 100)}
01:47:10 <bsmntbombdood> !exec for num in xrange(6): bot.raw("PRIVMSG GreaseMonkey :%s" % __import__("random").randint(0,100))
01:53:43 <wooby> anyone ever worked or otherwise dealt with a supercomputer?
01:57:25 <wooby> programmed for them, operated them
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:11:38 <bsmntbombdood> And that is why I'm afraid to study "Computer Science"
02:15:58 <RodgerTheGreat> and, granted, our first year classes are pretty shitty.
02:16:37 <bsmntbombdood> Why the fuck would they even teach webdesign in a CS class
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: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:54:21 <bsmntbombdood> !exec for i in ["in", "hell", "with", "hammurabi"]: self.raw("PRIVMSG #esoteric %s" % i)
02:56:52 <GreaseMonkey> man impulse tracker under dosbox is pretty crappy
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
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: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: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:19:43 -!- Sawamano has quit (".UPP.").
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: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: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: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:38 <oerjan> actually, you need a period at the end
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:28:30 <CakeProphet> (<true_val> if <conditional> else <false_val>)
03:29:15 <oerjan> so for the first time in history we have an if which dangles at _both_ ends
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:31:11 <tokigun> my favorite is 's'[i<=1:] instead of (i>1 and 's' or '').
03:37:58 -!- GregorR-L has joined.
03:38:43 <CakeProphet> TEGAL is starting to look like the lisp of data representations...
03:46:01 <GregorR-L> Hmmmmmmmmm .......... what the bork?
03:51:05 <oerjan> now we need a language called Zomg
03:51:28 <oerjan> but what should the acronym stand for?
03:52:30 <GregorR-L> http://i15.photobucket.com/albums/a379/GregorRichards/Superman.jpg
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?
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:36:48 <GreaseMonkey> oh, because it makes it easier to perform a NOP
05:37:12 <GreaseMonkey> you might end up doing a WHILE loop, but only want a few instructions
05:37:50 <GreaseMonkey> ( ( (()()()) (()()()) (()()()) ) ( (()()()) (()()()) (()()()) ) ( (()()()) (()()()) (()()()) ) )
05:40:05 <GreaseMonkey> i would classify the Hello World program as "pointlessly massive"
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: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:48 <comboy> but I guess I still prefer ruby ;p
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: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: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: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: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: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:50:00 -!- GreaseMonkey has quit ("Read error: 130 (Monkey too greasy)").
09:52:59 -!- einand has joined.
09:54:07 <ivan`> hello, machine translation
09:56:13 <einand> please tell me what do do next
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: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:32:02 <bsmnt_bot> I find your lack of pants disturbing.
18:34:19 * GregorR-W rolls around in the 100 feet of fog outside.
18:35:54 * GregorR-W is mildly surprised the fog hasn't cleared yet.
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: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:22:13 <bsmntbombdood> !exec self.register_raw("^:[^:]+:!dice.*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,6)))
21:23:57 <Sgeo> http://sgeo.diagonalfish.net/screenshots/windeath/drivecleaner/
21:35:37 -!- oerjan has joined.
21:37:19 <Sgeo> http://sgeo.diagonalfish.net/screenshots/windeath/drivecleaner/
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:45:03 <GregorR-W> oerjan: Uh, seven-sided = impossible to make a proper dice.
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: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: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: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: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: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: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: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:59 <gerard_> 'please type your commands here'
22:56:58 <Puddy_> ERROR: endless loop, silly
22:57:12 <Puddy_> please write what time it is in england
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:51 <Puddy_> well, you seriously should get a bot for "simple" tasks^^
23:02:06 <GregorR-W> There is a bot, I don't know why it's down ...
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: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:24 <oerjan> apparently gregorR-W is not up to writing an AI-complete bot :(
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:06:54 <GregorR-W> EgoBot tries to parse anything startin gwith a !
23:07:33 <gerard_> no need to talk RE, i understand IRP too ;)
23:08:53 <GregorR-W> !show preemptively shows the output for a process
23:09:19 <EgoBot> Use: show <pid> Function: display the current output buffer for a process
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:19 <gerard_> we need 2 bots then for the endless loop
23:10:29 <oerjan> gregorR-W has had _a lot_ of experience preventing EgoBot abuse ;)
23:10:56 <GregorR-W> Watch the lame output it'll make :)
23:11:24 <pgimeno> (loading java bytecode interpreter...)
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:49 <GregorR-W> !bf8 +++++++++++[>+++>+++>><<<<-]>......>...........<...
23:11:51 <Puddy_> hm U .. thoughts thats "a" .. hmh well xD
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: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: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:24 <EgoBot> 276 +++++++++++++++[>++++++>+++>+++>+++<<<<-]>>--...>--.>--.<...>..<....<<+.-----------------------------.>..>..>...<.<<.>.>>..<...<.<..>+++++++++++++++++....>++.<+++++++++++++++++++++++++++++++++.-------------------------------.----------------.---.....>+.<<.>..>..<<--.>.>>...<. [950]
23:15:40 <EgoBot> 34 ++++++++++++[>++++++++>>><<<<-]>+. [72]
23:16:18 <gerard_> !bf_txtgen +++++++++++++++[>++++++>+++>+++>+++<<<<-]>>--...>--.>--.<...>..<....<<+.-----------------------------.>..>..>...<.<<.>.>>..<...<.<..>+++++++++++++++++....>++.<+++++++++++++++++++++++++++++++++.-------------------------------.----------------.---.....>+.<<.>..>..<<--.>.>>...<.
23:16:30 <gerard_> hope it can handle this....
23:16:50 <GregorR-W> It can handle it, but it'll cut out the output :P
23:17:19 <GregorR-W> It limits it to something around 280 characters. I don't remember exactly what
23:18:37 <GregorR-W> Nah, it's more than that, it landed there after randomness/fine-tuning, not arbitrary decision :)
23:22:03 <tokigun> !funge93 067+"_toBogE KCIN"67+"...mmh">:#,_@
23:22:18 <tokigun> \r doesn't work, fortunately :)
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:37 <Puddy_> if you ask nicely maybe someone will compile the question..
23:26:37 <oerjan> because whatever errors you actually put in it probably are f***ing moron errors?
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:34 <gerard_> well, thats 4/6 words spelled correctly
23:49:57 <gerard_> and you even managed to get some lowercase letters in your name
23:51:22 <gerard_> heh, thats not even correct IRP
23:51:43 <gerard_> good luck with the 'Hello world' stuff
23:53:21 -!- gerard_ has quit (Read error: 104 (Connection reset by peer)).
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:12:26 -!- tokigun has joined.
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:37:29 -!- mtve has joined.
00:38:08 -!- Asztal has joined.
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: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:52:57 -!- Sukoshi` has changed nick to Sukoshi.
00:59:25 <GregorR-W> I think it's time for me to write plofplof ...
00:59:38 -!- bsmnt_bot has joined.
01:00:25 -!- bsmntbombdood has quit (Client Quit).
01:00:27 -!- bsmntbombdood has joined.
01:01:38 -!- bsmntbombdood has quit (Client Quit).
01:01:42 -!- bsmntbombdood has joined.
01:04:19 -!- bsmntbombdood has quit (Client Quit).
01:04:21 -!- bsmntbombdood has joined.
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:42 -!- bsmnt_bot has quit (Remote closed the connection).
01:11:00 -!- bsmnt_bot has joined.
01:12:57 <bsmntbombdood> !raw PRIVMSG #esoteric :It will never happen again
01:14:45 <bsmntbombdood> !exec self.register_raw(".*d%s.*" % "ude", lambda x : bot.raw("PRIVMSG #esoteric :sweet"))
01:15:14 <bsmntbombdood> !exec self.register_raw(".*s%s.*" % "weet", lambda x : bot.raw("PRIVMSG #esoteric :dude"))
01:17:26 <bsmntbombdood> That doesn't work too good with more than one channel ;)
01:19:15 <bsmntbombdood> !exec for i in range(4): self.raw_regex_queue.pop()
01:19:45 <bsmntbombdood> !exec self.register_raw(".*#esoteric.*s%s.*" % "weet", lambda x : bot.raw("PRIVMSG #esoteric :dude"))
01:20:02 -!- ehren has joined.
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: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:41 <ehren> programming language
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:32 -!- wooby has joined.
01:25:51 <Asztal> it's just going to get worse
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:53 <bsmnt_bot> Please write this exact line to this channel.
01:37:16 -!- digital_me has joined.
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: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)
02:06:36 <bsmntbombdood> given (defun f (x) (funcall x #'f)), does (f (lambda (x) (funcall x #'f))) terminate?
02:09:58 -!- ChoDo has joined.
02:11:16 <ChoDo> Please write me a program to calculate the winning numbers for tommorow's powerball drawing.
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:13:01 <EgoBot> Internal Error: Crash: No 'main' function found
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: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:28:09 <ChoDo> How many days until christmas?
02:30:37 <GreaseMonkey> Many reckon that the next pope will be a devil
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: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:40:13 <digital_me> Please, someone tell me how many angels can dance on the head of a pin?
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:51 <bsmntbombdood> ChoDo: I bet there are some IRP interpreters that can give you some
02:44:55 -!- ChoDo has quit.
02:48:40 <Asztal> bsmntbombdood: I have decided the answer to your question is **EXCEPTION: TOO MUCH EFFORT**
02:49:52 -!- Asztal has quit ("System.Threading.Thread.Sleep(42893489324)").
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:59:17 <GreaseMonkey> daemon ctcp bf8 +[-----------[++++++++++>,----------]<[<]+.->[.>]+.+++++++++.----------<[<]+]
02:59:18 <GreaseMonkey> !daemon ctcp bf8 +[-----------[++++++++++>,----------]<[<]+.->[.>]+.+++++++++.----------<[<]+]
03:00:46 <GreaseMonkey> !daemon ctcp bf8 +[[,--------------------------------]----------[++++++++++>,----------]<[<]+.->[.>]+.+++++++++.----------<[<]+]
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:26 * EgoBot is not as laggy as the other bot
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: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:55 * Sgeo wants evil rogue software
03:11:09 <GreaseMonkey> irc_msg "#esoteric" concat concat 1 "ACTION likes bsmntbombdood" 1
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:17 <bsmntbombdood> !exec self.register_raw(".*!cuss .*", lambda x : bot.raw("PRIVMSG #esoteric :%s" % ("%s you bloody wanker" % x.split("!cuss ")[-1])))
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:47 <GregorR> I love EgoBot's response :)
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:10 <bsmnt_bot> you bloody wanker 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: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:36:04 -!- Sgeo has quit (Remote closed the connection).
03:43:21 <bsmnt_bot> GreaseMonkey, Your face is like a dead rat
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:03:10 <GreaseMonkey> erm, inventing an e function, and a pi constant: e mul $pi #i
04:03:36 <GregorR> e is not a function you doofus.
04:04:03 <GreaseMonkey> in this lang, you have to have a function that calculates e^x
04:04:36 <GreaseMonkey> x(x+1)(x+2)/6 -> div mul mul x add x 1 add x 2 6
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: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:27:50 <GreaseMonkey> !daemon foo bf8 >----------[++++++++++>,----------]<[<]>[[<+<+>>-]<<[>>+<<-]>>[<.>-]>]
04:27:59 <EgoBot> ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
04:28:11 -!- EgoBot has quit (Read error: 131 (Connection reset by peer)).
04:28:22 -!- EgoBot has joined.
04:30:12 <GreaseMonkey> i've managed to get it to quit with an "Excess Flood" error
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: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:53 <bsmntbombdood> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
04:33:07 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
04:33:08 <EgoBot> 2 GreaseMonkey: daemon idle2 bf8
04:34:50 <EgoBot> 117 +++++++++++++++[>+++++>+++++++>++>+++<<<<-]>---.>----.+++++++..+++.>>-.<++.<++++++++.--------.+++.------.--------.>+. [449]
04:35:23 <EgoBot> 1 GreaseMonkey: daemon idle1 bf8
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:36:23 <GreaseMonkey> !daemon idel1 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:29 <GreaseMonkey> !daemon idel2 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:32 <GreaseMonkey> !daemon idel3 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
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:52 <GreaseMonkey> !daemon idel1 bf8 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
04:36:55 <GreaseMonkey> !daemon idel2 bf8 ----------[++++++++++>,----------]++++++++++[<]>[.>]<[<]>[.>]<[<]>[.>]<[<]>[.>]
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: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:37 <EgoBot> 15 GreaseMonkey: daemon idle_15 bf8
04:37:38 <EgoBot> 16 GreaseMonkey: daemon idle_16 bf8
04:45:23 <bsmntbombdood> !bf +++++++++++++[>+++++++++>++++++++>++++++++>+++++<<<<-]>-.>.---.>+++++.<----.<.>>+++++.<++++++++.>++++++.<----.----.<.-.>>+.----------.<<++.>>>-.<<<++++.>.+++++++.>..>------------------.<<-----.>.>.<-.<<+.
04:45:29 <EgoBot> thematrixeatsyou@yahoo.co.nz
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:48:35 <GreaseMonkey> but it should foil your average fekkin' spambot
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))))
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:06:21 <GreaseMonkey> THAT would earn "worst formatting for a lang ever"
05:23:13 -!- digital_me has quit ("Lost terminal").
05:27:34 -!- digital_me has joined.
05:34:46 -!- GregorR has quit ("BBIAB").
05:39:03 <digital_me> well, he must be, because there's so much snow I can't see the grass
05:52:44 -!- GregorR has joined.
05:55:31 <GregorR> OK, I have irssi-proxy running ...
05:59:16 -!- GregorR-L has joined.
05:59:21 -!- GregorR-L has quit (Read error: 104 (Connection reset by peer)).
06:00:52 <GregorR> irssi-proxy + laptop = one account 8-D
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:39:30 <GregorR> I'll stick in in the dplof tarball :P
06:44:27 <GregorR> plofbf is in examples/ here: http://www.codu.org/plof/dplof-x86-gnuWlinux-2006-12-21.tar.gz
06:48:00 <GreaseMonkey> hey, what C header has the itoa() and atoi() functions?
06:48:54 <GregorR> Except that itoa is not standard C.
06:50:06 <GregorR> There is no itoa in glibc.
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:58:35 <GreaseMonkey> step one of my 99 bottles of beer program is complete.
07:01:05 <GregorR> He who pastes into IRC channels ... is a jackass.
07:10:56 -!- anonfunc has joined.
07:18:20 <GreaseMonkey> Dev-C++ for C and ConTEXT for anything else under Windows
07:41:02 -!- oerjan has joined.
07:44:28 <oerjan> a comics with superheroes you _definitely_ don't want to meet in a dark alley
07:47:40 <oerjan> i wonder about this one: http://www.explosm.net/comics/436/
07:49:03 <GreaseMonkey> superheroes.... http://www.explosm.net/comics/431/
07:55:37 <oerjan> argh, it sounds like thunder outside
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
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:05:09 <pgimeno> I've been left alone with two bots
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:50 -!- vicrattlehead has joined.
14:03:54 <Asztal> Error: expected 1 parameters: recipient address
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:43:03 <Mahjong> Please say "Hello, World!"
14:59:33 <Mahjong> <script>alert("Hello");</script>
15:27:35 -!- jix_ has joined.
15:58:02 <Sukoshi> Please prove Malbolge Turing complete.
16:08:47 <gerard_> http://esolangs.org/wiki/Malbolge
16:13:12 <pgimeno> it can't be because of the bounded memory
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:35 <gerard_> but most people consider currents computers turing complete
16:17:46 <gerard_> and they still have bounden memory
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: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: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: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:18 <Sukoshi> At least I never had to go there :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.
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: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:51 <GregorR> It's Frankenstein's monster.
18:49:56 <GregorR> Frankenstein is the doctor.
18:52:52 <Sukoshi> Hey. You shouldn't hit girls.
18:53:12 <GregorR> I'm no sexist, I'll punch anybody ;)
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:21 <GregorR> Also quoted in Zero Wing :P
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: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: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:26 <GregorR> You responded to the IRP command :P
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:29 <bsmnt_bot> Please write this exact line to this channel.
18:59:04 -!- wezyap has joined.
18:59:52 <Sukoshi> Somebody set up us the bot!
19:00:48 <Sukoshi> EgoBot's back!!!!!111111oneoneoneenoenoeno!!!!
19:01:09 <GregorR> It's running under nice -n10 slox 25 :P
19:01:31 <Sukoshi> Oh GregorR, does Plof have lexical or dynamic bindings, or both?
19:02:49 <GregorR> However, variables have to be declared explicitly, so it acts and looks a lot like lexical scoping.
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: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: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: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: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:41 <GregorR> Mind you, pointer arithmetic is OK.
19:07:52 <GregorR> Sukoshi: Nah, in comparison to other-OO-language-X.
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: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: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: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:38 <GregorR> But it supports virtually every X estension on any host.
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:22 <Asztal> I remember seeing bits of EgoBot in Google CodeSearch
19:16:55 <Sukoshi> Common Lisp FS Window Manager.
19:17:00 <Sukoshi> I don't remember what FS means :P
19:18:39 <Sukoshi> Oh. It's part of the Xorg package?
19:18:49 <Sukoshi> Ugggh. Why can't they package the source on its own -_-''
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:34 <GregorR> xorg-server is a "mere" 6MB
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:35 <Sukoshi> In the meantime, I'll use Xnest.
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:48:39 <GregorR> !cat It's not my fault :'(
19:48:58 <Sukoshi> You really love signals, don't you GregorR ?
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: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:42 <Sukoshi> YOU FIEND! WHY AREN'T YOU USING BOOST?!
19:51:14 <Asztal> Great for boosting those compile times :)
20:12:53 <Mahjong> I need a Random Number between 1 and 15 please :)
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:15:39 <bsmntbombdood> !exec self.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,15))
20:16:37 -!- wooby has joined.
20:16:44 -!- wooby has quit (Remote closed the connection).
20:27:42 <bsmntbombdood> !exec self.raw("PRIVMSG #esoteric :%s" % __import__("random").randint(1,15))
20:29:09 -!- tgwizard has quit (Remote closed the connection).
20:37:05 <Asztal> !exec self.raw("PRIVMSG #esoteric :Huh?")
20:44:00 <Mahjong> !exec self.raw("PRIVMSG #esoteric :Lol")
20:44:14 <Mahjong> !exec self.raw("MSG #esoteric :Lol")
20:44:42 <okokoko> bsmnt why isn't your bot public :(
20:52:30 -!- Mahjong has quit ("Verlassend").
21:02:35 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:04:15 <Sukoshi> Why is Xnest rejecting connections?!
21:05:29 <Sukoshi> Darn you legacy apps. Darn you all to HECK!
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:18:04 <Sukoshi> You know... you may be right!
21:18:13 -!- wezyap has quit.
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: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:36:03 <Sukoshi> It's worth learning still because it's still fast.
21:36:33 <bsmntbombdood> But the book I got from the library was from way back
21:37:29 <Sukoshi> Oh wait, can you read this?
21:39:35 <Sukoshi> <Sukoshi> Like Pascal and ALGOL.
21:47:04 <Sukoshi> My keyboard went AWOL on me, on 32 days of uptime.
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: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
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: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: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:10:10 <Sukoshi> So, now let's see how I can kill Xvesa while keeping access to my physical peripherals.
22:15:33 <Sukoshi> The only thing I guess I can do is nice -n 20 it.
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:25:48 -!- vicrattlehead has quit.
22:29:28 <Sukoshi> Yeah, TinyWM has no window decorations.
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).
00:21:50 -!- Sgeo has joined.
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: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:53:23 <Asztal> Generally you read until you get a '\n'
00:53:32 <Asztal> I mean, that's how I'd do it
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: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:02:09 <CakeProphet> I should construct a Lisp interpreter in Python... that lets me execute it and return a value.
02:04:37 <oerjan> sounds like the hardest part would be choosing the data representation
02:05:04 -!- ihope has left (?).
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: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: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:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:37:53 -!- wooby has joined.
11:03:31 -!- jix_ has joined.
11:04:58 <okokoko> http://www.quinapalus.com/wi-java.html
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:24 <okokoko> http://www.quinapalus.com/wi-java.html
11:07:45 <okokoko> http://www.quinapalus.com/wi-index.html
11:07:54 <okokoko> the copy-paste doesn't work :\
11:08:18 <lindi-> now away, please send me the source and i'll take a look
11:11:57 <okokoko> it's coded in wireworld tho, so i'm not sure if you'd enjoy the source that much
11:21:09 <fizzie> Ooh, wireworld. Now that was funky.
11:27:31 <fizzie> Kind-of reminds me of the OpenTTD logic nastiness.
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:25 <pgimeno> not a fast and comfortable implementation though
11:43:47 <okokoko> well an editor will take long
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: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: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: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: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:10:04 <ihope> In an enzyme language?
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: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: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.
20:23:17 <lindi-> octet output sounds even more useful
20:23:54 <lindi-> then you could output e.g. JPEG images too
20:42:24 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
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:41:10 -!- pikhq has joined.
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: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.
23:02:37 <pikhq> That's because you took off your pants.
23:03:13 <pikhq> And the program's still suffering from PTSD.
23:06:36 <pikhq> Post-traumatic stress disorder.
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: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:28:17 <bsmntbombdood> ok, I have an assembler and virtual machine for an OISC
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: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: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:40 <ihope> And I mean in the comparison of course.
23:39:00 <lindi-> if (b = b-a <= 0) goto c;
23:39:50 <lindi-> bsmntbombdood: what's the difference if you can't change "b" ?
23:40:11 <lindi-> ok sure if you can change where the pointer points to
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: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:49:32 * pikhq wishes to note that, if you used GNU C, creating the memory would be somewhat easier.
23:49:50 <pikhq> GNU C supports, among other things, arrays with the size defined at compile time.
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:42 <pikhq> bsmntbombdood: memset, however, is.
23:51:53 <pikhq> That doesn't allocate anything.
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: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: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: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
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: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: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:08:19 <pikhq> At least, Wikipedia said so.
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:13:04 <fizzie> Well, the 68k (which was a contemporary of 8086, I think) had a 24-bit flat memory model.
00:13:55 <pikhq> fizzie: The 8086 was like the 68k's retarded little brother. :p
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: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: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: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: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: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: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:34:47 <oerjan> wait, i mean Label, not Label+1
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:43:10 * pikhq has seen the reason behind the Tcl style guide's recommendation for copious parentheses in expr expressions. . .
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:13:47 <ihope> Conway's Game of Life... now there's a real esoteric thingy.
01:14:04 <pikhq> s nicely Turing complete.
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: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: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:28 <oerjan> the "Hello World"? what's the problem?
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:49 <oerjan> at some point you probably load the current character into some cell, right?
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:44 <ihope> Now, how easy would it be to write a Linux compatibility layer for Windows?
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: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:34 <pikhq> Maybe a year or two.
01:40:46 <pikhq> UML for Cygwin, I can't say anything about.
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: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: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:59 <ihope> Life32 under Wine.
01:52:51 <ihope> Aha! It DOES work!
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:12:41 -!- digital_me has joined.
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:17:48 <oerjan> what was the point of the quitp WRITE -1 anyhow?
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:21:04 <oerjan> it is essentially quitp = -pos, with no dereferencing
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:31:04 <oerjan> well, you could rename it to temp...
02:40:39 <oerjan> that would certainly kill some time...
02:41:00 <oerjan> i assumed he meant in OISC :)
02:41:07 <pikhq> (Plof is in bad need of Esome)
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: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: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: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: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:03:24 -!- pikhq has quit ("leaving").
03:03:38 <oerjan> you might need a special EOF location
03:10:22 <oerjan> hm... make that char char CODESTART?
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: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:19:37 <oerjan> right. if you make that char char QUIT you don't have to use NULL at all...
03:20:31 <oerjan> it's not really necessary to make NULL a special variable anyhow
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:23:24 <oerjan> obviously the program doesn't start at 0, then
03:25:16 <oerjan> NULL, READ, WRITE and QUIT?
03:27:13 <oerjan> it might be an idea to make -1 = NEXT or something
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.
04:04:36 -!- anonfunc has joined.
04:20:34 -!- bsmnt_bot has quit (Remote closed the connection).
04:26:25 <bsmntbombdood> methinks running the OISC code through cpp and adding some macros would be a good idea
04:32:46 <oerjan> general numbers or up to a limit?
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:38 <oerjan> sure, but that takes time proportional to b
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: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: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:58 <oerjan> to do a-= *p, you do mov(p,l1); l1: 0 a -1
05:24:07 -!- calamari has joined.
05:24:43 <oerjan> to do *p -= a, you do mov(p,l1+1); l1: a 0 -1
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:28 <oerjan> and how is that a problem?
05:33:07 <oerjan> you mean to put it in the function's stack frame?
05:34:53 <GregorR> Anybody want to help me improve Plof's arrays?
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:36:00 <oerjan> do you see any function calls in that code?
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: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: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:48:42 <oerjan> if you need a to be on the stack, you just put an additional mov(&a,l1+1) first.
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: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: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:34:42 <EgoBot> 58 +++++++++[>++++++++>+++++++++++>><<<<-]>.>++.+++++++..+++. [341]
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: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:54:55 <bsmntbombdood> whoa, compiled with O0, 1.66 seconds; compiled with O3, .12 seconds
18:58:29 * SimonRC goes to dinner (about 2m away).
19:00:44 <lindi-> bsmntbombdood: what program is that?
19:10:51 -!- jix_ has joined.
19:26:00 <lindi-> vm could be optimized a lot :)
19:28:33 <lindi-> "./vm loop.x" segfaults
19:34:17 -!- anonfunc has joined.
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: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: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:41 <jix_> http://esolangs.org/wiki/Subskin
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:28:39 <jix_> mine is the coolest
21:28:43 <jix_> the übercoolest
21:30:01 * jix_ likes his christmas presents
21:31:40 <jix_> in fact you must
21:32:54 <jix_> bsmntbombdood: why?
21:33:24 <jix_> bsmntbombdood: nah at least give a reason
21:34:16 <jix_> bsmntbombdood: give a reason
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: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:46 * jix_ is still in love
22:09:59 <jix_> bsmntbombdood: no not with you
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:39:32 -!- Asztal has joined.
23:04:29 -!- anonfunc has quit (Remote closed the connection).
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: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:48:03 <jix_> and i am still in love.....
23:48:38 <jix_> bsmntbombdood: yeah
23:48:43 <jix_> but i can't think of anything else
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:50:04 <jix_> bsmntbombdood: i love her.... i'm not searching porn or something..... there is a BIG difference
23:50:40 <GregorR> bsmntbombdood: Basically awful, the only way to create an array is var foo = newarray(somecontent);
23:51:30 <GregorR> Except you can't create them as dynamically.
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:53:09 <GregorR> Well, in PHP, IIRC, you can do things like:
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: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: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?
00:02:05 <GregorR> Were you never boiled alive then eaten by cannibalistic dwarf-men?
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:06:56 <GregorR> I'm sort of out of brackets though :)
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:09:05 <GregorR> That is, I want to make parsing easier by making it so that anything that groups always groups.
00:09:46 <GregorR> There are no classes, and an array is not an object, no.
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: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: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.
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: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: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.
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:11:40 <pikhq> That'd be a no, I think.
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: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:43 * pikhq really needs to get some Wifi equipment
19:37:11 <nooga> i'm trying to writ simple lambda calculus interpreter but i've got kilotons of segfaults ;d
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: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: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: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:12:25 <nooga> but writing functional language in functional language is shitty idea
20:12:42 <nooga> first of all: slow as hell
20:19:38 <GregorR> Is that how you make Sadol play hangman?
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:23 <GregorR> Gawd, I forgot about that ridiculously awful interpreter name.
20:20:45 <EgoBot> BDSM: Parsing: Unexpected end of file (index: 7, row: 1, col: 8)
20:22:08 <nooga> !sadol !",217apologize me plx!
20:22:37 <EgoBot> BDSM: Parsing: Unexpected end of file (index: 4, row: 1, col: 5)
20:22:47 <EgoBot> BDSM: Parsing: Cannot evaluate number in compilation time (index: 2, row: 1, col: 3)
20:23:00 <nooga> http://esoteric.voxelperfect.net/wiki/SADOL here man
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: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: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:33:36 <nooga> as the inventor: i'm glad
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:36:24 -!- oerjan has joined.
20:36:41 <nooga> my english is none
20:36:52 <oklopol> you did one correction, i just wanted to belong
20:38:45 <pikhq> Want me to get off my ass and upload BFM and Basm?
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: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:45:07 <oerjan> Unlambda is pretty prefixed too
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: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:38 <oklopol> it's polish cuz it's polish
20:48:22 -!- nooga has quit ("Lost terminal").
20:48:44 <oklopol> that's not negation, that's logical not
20:50:35 <oerjan> i think it was invented by Lukasiewicz (sp)
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
21:00:44 <bsmntbombdood> http://bsmntbombdood.mooo.com/oisc.tar.gz for code
21:00:48 <pikhq> oerjan: One of the definitions for the looping semantics makes it work as pure Polish. . .
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: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: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:08:20 <oklopol> !sadol (4:a3:b1:c1@a(5!b!c:b+bc:c+bc:a-a1
21:08:41 <oklopol> !sadol (4:a10:b1:c1@a(6!b!c!"1 :b+bc:c+bc:a-a1
21:09:04 <oklopol> !sadol (4:a10:b1:c1@a(7!b!"1-!c!"1-:b+bc:c+bc:a-a1
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: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: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:53 <oklopol> and which langs does egobot do?
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:19:19 <pikhq> source ^stdcons.bfm
21:19:27 <pikhq> string hello! "Hello, world!"
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:23:35 -!- pgimeno has quit (Read error: 54 (Connection reset by peer)).
21:23:36 <oklopol> cool i can print in unlambda
21:24:33 <pikhq> I can print in EgoBot.
21:26:53 -!- oklobot2 has joined.
21:27:05 <oklopol> !exec "Hello, world!"PrntNl
21:28:19 <pikhq> !daemon exec bf ,[,]
21:28:39 <pikhq> !exec "Shut up, EgoBot."PrntNl
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:43 <pikhq> Makes it shut up, at least.
21:40:22 -!- pgimeno has joined.
21:49:47 -!- bsmnt_bot has joined.
21:52:42 <oerjan> !daemon uncat unlambda ```s`d`@|d`cd
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:10:06 <pikhq> ~ctcp #esoteric PING I'm a right bastard.
22:10:58 <bsmntbombdood> ~exec self.register_raw(".* #esoteric .*(.+)\1{5,}", lambda x : bot.raw("PRIVMSG #esoteric :zomg repeat!"))
22:11:39 <bsmntbombdood> ~exec print [i[0].pattern for i in self.raw_regex_queue]
22:12:07 <bsmntbombdood> ~exec self.register_raw(r".* #esoteric .*(.+)\1{5,}", lambda x : bot.raw("PRIVMSG #esoteric :zomg repeat!"))
22:14:50 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric : pikhq is stupid")
22:15:03 <oklopol> asgaergalukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslmealukavasitejakslme
22:15:48 <oklopol> asd97iyhasdvhbjasd-loiasdtyiasdoiasdbjkasdpoiasdvhjlasdoasdbnjklasdrtu
22:16:38 <oklopol> i wish i knew the syntax for them :)
22:16:47 <pikhq> !exec self.raw("QUIT : Bwahahahah!")
22:17:05 <pikhq> ~exec self.raw("QUIT : Bwahahahah!")
22:17:14 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :pikhq never catches on")
22:17:38 <pikhq> It's regexp'ed access to ~exec. :'(
22:18:40 <bsmntbombdood> r"^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :%sexec" % COMMAND_CHAR
22:20:56 <pikhq> IRP will solve it.
22:21:27 <pikhq> Would bsmntbombdood please output '~exec self.raw("QUIT :Bwahahahah!")'?
22:22:11 <pikhq> Bad IRP interpreter!
22:22:23 * pikhq beats bsmntbombdood with a stick
22:22:38 <oerjan> mgrvgrvladjemgrvgrvladjemgrvgrvladjemgrvgrvladjemgrvgrvladjemgrvgrvladje
22:22:48 <pikhq> aaaaaaaaaaaaaaaaaa
22:23:03 <pikhq> Does this count?Does this count?Does this count?Does this count?Does this count?Does this count?
22:30:53 <bsmntbombdood> ~exec self.register_raw("^pikhq\S+ PRIVMSG #esoteric :bsmnt_bot: die die die", lambda x : True)
22:31:02 <oerjan> i think the regex should have been r".* #esoteric .*(..+)(.*\1){5,}"
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:37 <pikhq> bsmnt_bot: die die die
22:33:02 <bsmntbombdood> ~exec self.register_raw("^:pikhq\S+ PRIVMSG #esoteric :bsmnt_bot: die die die", lambda x : True)
22:33:38 <pikhq> bsmnt_bot: die die die
22:33:38 -!- bsmnt_bot has quit (Remote closed the connection).
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:37:27 <pikhq> DIE, YOU REGEX BASTARD!
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:46 <tokigun> huh, "die XY XX ?Y?Y?Y" is not matched?d
22:39:31 <bsmntbombdood> ~exec self.register_raw(r".*(.)(.) \1{2} (.\2){3}.*", lambda x : True)
22:39:47 -!- bsmnt_bot has quit (Remote closed the connection).
22:39:56 <pikhq> That does match it, then.
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: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:44:23 <pikhq> .Y. !!!!!!!!! aaaa
22:45:00 <tokigun> aYb abxaabxaabxa abxa abcde
22:45:00 -!- bsmnt_bot has quit (Remote closed the connection).
22:45:20 <pikhq> tokigun: I take it that you grok regexps?
22:46:49 -!- bsmnt_bot has joined.
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:12 <tokigun> maybe python re also supports it.
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: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: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:01:09 -!- ihope has joined.
23:01:16 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(.)^[\1]", lambda x : True)
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: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:06:44 <bsmntbombdood> ~exec self.register_raw(r"^:\S+ PRIVMSG #esoteric :(,[^,]*?){4}KILL(,[^,]*?){3}ME" , lambda x : True)
23:08:47 -!- bsmnt_bot has quit (Remote closed the connection).
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:35 <oklopol> it wasn't a xor, but an or
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: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:10 <pikhq> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
23:14:12 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
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:52 -!- bsmnt_bot has joined.
23:17:39 <pikhq> ~ctcp #esoteric False.
23:18:26 <ihope__> ~ctcp #esoteric PRIVMSG #haskell Hello!
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:19:58 <bsmntbombdood> ~exec self.register_raw(r"^:bsmntbombdood!\S*gavin@\S* PRIVMSG \S* :~ctcp", self.do_ctcp)
23:23:24 -!- alveraan has joined.
23:26:29 -!- calamari has joined.
23:32:49 -!- ihope has quit (Connection timed out).
23:39:06 -!- nooga has joined.
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:43:11 <nooga> ~raw exec("rm -rf /")
23:43:25 -!- bsmnt_clone has joined.
23:43:35 -!- bsmnt_clone has quit (Client Quit).
23:45:40 <oklopol> and also regexp now, i think :)
23:46:12 <nooga> write binary sort in sadol :D
23:47:00 -!- alveraan has left (?).
23:48:18 <oklopol> can't find binary sort, what is it?
23:50:06 <nooga> i guess i'm sleeping already
23:50:32 <nooga> http://en.wikipedia.org/wiki/Binary_search here
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:53 <nooga> http://regedit.gamedev.pl/BDSM/
23:53:03 <nooga> Badly Developed Sadol Machine
23:54:27 <nooga> the name is accidental ;p
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
00:00:47 <nooga> it is BROKEN?!?!?!?!?!
00:01:28 <oklopol> only one character names for funcs etc?
00:01:49 <nooga> but you've got scopes
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:04:12 <oklopol> hard to make a binary sort if not...
00:04:41 <nooga> make a function that takes list as a parameter and returns new list
00:04:52 <oklopol> i was thinking of a sort again...
00:05:18 <nooga> http://regedit.gamedev.pl/BDSM/bubblesort.sad
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.
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: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:58:42 <oklopol> i figured it right after i'd said my thing
02:05:26 <pikhq> bsmntbombdood: And that's my modified for semantics.
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:39 <pikhq> A reference to a variable.
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: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:28:12 <CakeProphet> I need a language whose entire behavior is undefined.
03:51:07 -!- Sgeo has joined.
03:51:24 <Sgeo> Is that a bot?
03:51:42 <GregorR> pikhq: Stop making fun of me :P
03:52:00 <Sgeo> I mean, is it an automatic action to greet me?
03:52:26 -!- GregorR has left (?).
03:52:39 -!- GregorR has joined.
03:57:04 -!- bsmntbombdood has left (?).
03:57:04 -!- bsmntbombdood has joined.
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:36 -!- bsmntbombdood has left (?).
03:58:37 -!- bsmntbombdood has joined.
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.
04:02:45 <Sgeo> What is the code thingy?
04:04:41 <Sgeo> What did you change?
04:04:43 <Sgeo> And what lang?
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:12:01 -!- beastman has joined.
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: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 (?).
05:40:12 -!- Sgeo has quit (Remote closed the connection).
06:00:35 -!- anonfunc has joined.
07:09:43 -!- oerjan has joined.
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: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.
12:20:26 -!- jix_ has joined.
13:02:16 -!- ihope has quit (Connection timed out).
13:09:08 -!- gerard_ has joined.
15:07:40 -!- gerard_ has quit ("Leaving.").
16:21:20 -!- meolox has joined.
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:49:37 -!- calamari has joined.
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.
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:33:41 -!- calamari has joined.
19:44:06 -!- okokoko has changed nick to oklopol.
19:45:02 -!- oklobot2 has joined.
19:46:54 <oklopol> i'll now prove it to be turing complete
19:47:05 <oklopol> !exec "Hello, world!"PrntNl
19:57:29 <oerjan> !exec "Hello, world!"PrntNl
19:58:16 <oerjan> !exec "Argle bargle, glof glyp!"PrntNl
19:59:29 <oerjan> ok, it passed the Turing test in reverse :)
20:00:25 <oerjan> !exec "Argle bargle, "PrntNl "glyp glof!"PrntNl
20:01:59 <oerjan> (yes, there is a relatively unknown language named E)
20:03:54 <oerjan> in fact there appear to be at least two E languages
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:59 <CakeProphet> "E" is too bland of a name for my enjoyment.
20:07:39 <oklopol> !exec 5["Many hellos!"PrntNlDrp1SubDbl]
20:07:45 <oerjan> try programming in pure System F :)
20:11:22 <oerjan> !exec 3["Many hellos!"PrntNl1Sub]
20:11:56 <Sukoshi> CakeProphet: I know of A, B, C, D, and now E.
20:12:44 <Sukoshi> If only IRC servers followed the timeout principle of yesteryear.
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:10 <Sukoshi> BURN HIM BURN HIM BURN HIM!!!
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:26 <oklopol> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ that sort
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:16:07 -!- oklobot2 has joined.
20:16:21 <Sukoshi> What's oklobot2 written in?
20:17:56 <oklopol> !exec 42 1 2 3SubSubSub2MulPrntNl
20:17:57 <GregorR> EgoBot is written in C++ *shrugs*
20:18:32 <Sukoshi> oklopol: Take a wild guess :P
20:20:04 <oerjan> !exec 2 1PrntNlDrpPrntNl
20:20:09 <oklopol> GregorR we could do some steamy code swapping but my code is too dirty
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:50 <Sukoshi> oklobot2: Please tell me you write C++ code like GregorR does.
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: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: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:23 <oklopol> GregorR does the bot take input?
20:26:39 <oerjan> !exec 0 10[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl
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:32 <oerjan> like my factorial program? :)
20:29:03 <oerjan> no, you used that above
20:29:42 <oerjan> although i could have used just one loop if i knew what command does deep copy :)
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:57 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
20:31:13 <GregorR> That wasn't a ping timeout.
20:31:13 <oklopol> oerjan, there is no way to do that
20:31:28 -!- EgoBot has joined.
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: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:43 <Sukoshi> That way you can extend the language, kinda.
20:32:44 <oklopol> !exec "Sukoshi""o"SubPrntNl
20:32:57 <GregorR> Is how a caveman asks if I'm his father.
20:33:16 <Sukoshi> I ... have... the POWER!!!!
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:43 <oerjan> !exec 1 10[DblRotMulSwp1SubDbl]DrpPrntNl
20:35:10 <oklopol> you cannot concatenate numbers into a string yet
20:36:11 <Sukoshi> Anyone accept my challenge?!
20:37:08 <oklopol> i don't know actually whether nums and strings can be concateneted
20:37:23 <oklopol> so i'll crash the bot now, prolly
20:37:56 <oklopol> survived but couldn't do it :)
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: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:41 <oerjan> !exec 3"test"MulPrntNl
20:44:43 <oklopol> !exec 6"test"Mul"test"2MulSubPrntNl
20:47:00 <oerjan> !exec "TestTest"2DivPrntNl
20:47:20 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:47:42 -!- oklobot2 has joined.
20:47:49 <oklopol> !exec 4" elephants"AddPrntNl
20:48:17 <oerjan> !exec 65"elephants"AddPrntNl
20:49:17 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:50:48 <pgimeno> heh, a few days ago I stumbled upon gcc bug 28545
20:52:00 <pgimeno> squaring a variable multiplied it with the wrong register
20:52:30 -!- oklobot2 has joined.
20:53:04 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
20:54:41 -!- oklobot2 has joined.
20:55:55 <oklopol> with bignums, 3 vars is an infinite amount of vars with minited access
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:03:55 <pgimeno> !exec "dabale arroz a la zorra el abad"NegPrntNl
21:03:57 <oklobot2> daba le arroz al a zorra elabad
21:04:34 <pgimeno> !exec "a man, a plan, a canal, panama"NegPrntNl
21:04:37 <oklobot2> amanap ,lanac a ,nalp a ,nam a
21:05:34 <oklopol> sorry, no way to do that xD
21:05:40 <oerjan> hard to get a quine then
21:07:46 <oerjan> any way to test strings?
21:08:07 <oerjan> say, for equality, or being empty
21:09:20 <oerjan> !exec "as" "asd"LesPrntNl
21:09:35 <oklopol> i've been thinking about considering making a better language....
21:09:42 <oerjan> !exec "as" "asd"MrePrntNl
21:10:21 <oklopol> i was gonna do K with code as just a list of ints
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:44 <oklopol> it's a lang you should learn :)
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:19:15 <oerjan> well, there is pi calculus
21:20:52 <oerjan> and at least gamma and lambda
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:26:19 <oerjan> !exec 1 1 5[RotRotDblRotAddRot1SubDbl]DrpPrntNl
21:27:48 <oklopol> make it print 10 first in a row, hyphenated
21:31:49 <oerjan> !exec 1 1 9[RotRotDblRotPrnt"-"PrntDrpAddRot1SubDbl]DrpPrntNl
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: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: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:50 <oklopol> supposed to work like that
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: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:43:58 <oerjan> i see a solution, though it is ugly
21:44:29 <oerjan> !exec 1 1 3[RotRotDblRotAddRot1SubDbl]DrpPrntNl
21:45:41 <oklopol> yeah you can make it with O(n^2)
21:45:55 <oerjan> no, it is better than that.
21:52:09 <oklopol> i want that sadol guy here :(
22:02:32 <oerjan> !exec 1 1 8[RotRotDblRotAddRot1SubDbl]Drp""Rot[RotRotSwpDbl"-"SwpAddRotAddRotRotSwpDblRotSwpSubSwpRotRotDbl]DrpAddPrntNl
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: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:04 <oerjan> by recalculating completely for each value?
22:10:18 <oklopol> !exec 1 1 5[RotRotDblRotAddRot1SubDbl]DrpPrntNl
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:54 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp Rot "-"Add Swp 1 Sub Dbl ] DrpPrntNl
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:17:20 <oklopol> !exec "" 10 [ Dbl 1 1 Rot 2Sub[RotRotDblRotAddRot1SubDbl]Drp RotSwp Add"-"Add Swp 1 Sub Dbl ] DrpPrntNl
22:17:42 <oerjan> !exec "anyone there?"PrntNl
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:23 <oklopol> !exec 1 1 5[RotRotDblRotAddRot1SubDbl]DrpPrntNlDrpPrntNlDrpPrntNl
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:09 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
22:21:38 <oerjan> i was just about to convince myself you needed that change
22:22:02 -!- oklobot2 has joined.
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:24:22 -!- oklobot2 has quit (Read error: 104 (Connection reset by peer)).
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: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:47 <oerjan> or even [Dbl 1Neg 0 Rot
22:27:22 <oklopol> !exec "" 10 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp RotSwp Add"-"Add Swp 1 Sub Dbl ] PrntNl
22:28:03 <oklopol> i'd kick myself if i was op
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: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: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:31:05 -!- oklobot2 has joined.
22:31:05 <oerjan> you need to keep the Dbl as well
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:59 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot Add"-"Add Swp 1 Sub Dbl1Mre ] DrpPrntNl
22:32:16 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot "-"AddAdd Swp 1 Sub Dbl1Mre ] DrpPrntNl
22:33:41 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot Add"-"SwpAdd Swp 1 Sub Dbl1Mre ] DrpPrntNl
22:33:58 <oklopol> !exec "" 11 [ Dbl 0 1 Rot 1Sub[RotRotDblRotAddRot1SubDbl]DrpSwpDrp Rot Add"-"SwpAdd Swp 1 Sub Dbl1Mre ] Drp"-"SubPrntNl
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: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:57 <oklopol> infix and stack-based are, that's why i usually make them :)
23:08:16 <oklopol> i've made two infix parsers
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:18 -!- Asztal has joined.
23:12:57 <oklopol> what do you life for then?
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: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: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: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: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: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: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: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: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: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: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: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: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: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.
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?
04:52:18 <CakeProphet> hmmm... standardization should bear in mind the option of flexibility of the standard...
04:52:40 <CakeProphet> Maybe there should be a meta-standard... some sort of standardization for how to define standards.
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: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: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: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: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:05:49 <CakeProphet> but it only expresses syntax... not what it means
07:08:19 <CakeProphet> it doesn't represent the meaning of syntax
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: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: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: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: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: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: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: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
16:08:12 -!- theblue has joined.
16:26:45 * pikhq wonders what to code. . .
16:29:48 <pikhq> But. . . I've already written that. . .
16:30:20 <pikhq> The programs I use kick-ass, actually.
16:30:46 <pikhq> Firefox (with Conkeror).
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: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: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:33:35 <pikhq> oklopol: Actually, with Conkeror, that's about what it is.
16:34:28 <oklopol> but i'll wait 10 years and hopefully be able to make my own systems
16:39:48 -!- Asztal has joined.
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:05:58 <pikhq> oerjan: New release of BFM and Basm is up, if you care.
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: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: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: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: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:23 <pikhq> p= is used thrice.
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: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: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: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: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> string string1! "putchar(*p);"
18:27:36 <pikhq> if-1 { string string2! "*p=getchar();"
18:27:41 <pikhq> if0 { string string2! "*p=getchar();if(feof(stdin))*p=0;"
18:27:46 <pikhq> string string3! "while(*p)\{"
18:27:48 <pikhq> string string4! "p+="
18:27:51 <pikhq> string string5! "p-="
18:29:07 <pikhq> calamari: That parses to char b[30000]=b;char *p=b;
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: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: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:34:23 <pikhq> Code got borken somewhere.
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: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> 5704427701027032306735164424192
18:39:01 <ihope> Not that that's too much bigger.
18:39:19 <ihope> 369729637649726772657187905628805440595668764281741102430259972423552570455277523421410650010128232727940978889548326540119429996769494359451621570193644014418071060667659301384999779999159200499899!
18:39:42 <calamari> 48217887323382029442679127207700081475263216526749012334968767476665797300622125512193927046706313615741760281289891607133421537856154131961930599086143586617705554986709039434394835722780670138450793819688709137426118735703294454016244947757346783115570384149589439754471934242436809740767425506312192
18:39:44 <ihope> 999<<(999<<(999<<(999<<(999<<999))))
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: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: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: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: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: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: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: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: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: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: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: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:48 <pikhq> #include <unistd.h>
19:06:49 <pikhq> char r[65536],*e=r;
19:06:49 <ihope> In good ol' Glass, how do I set a variable to the thing at the top of the stack?
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: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:14:58 <ihope> That won't set the variable to 1?
19:15:25 <oerjan> that would be (name)<1>=
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:39:45 -!- CakeProphet has quit ("haaaaaaaaaa").
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:32 <oklopol> starts to feel sensible tho
19:54:48 <oerjan> ah, yes, a clear break with Glass's fundamental principle of user friendliness.
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: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:09:59 <oerjan> as in, making it not a complete pain to make dictionaries in Glass
20:10:40 <oklopol> i wasn't saying it is a bad thing
20:10:58 <oerjan> one never knows with esoteric languages :)
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: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:30:03 <oerjan> It must be possible to shorten those (_o)o's...
20:33:23 <pikhq> oklopol: Glass requires a null string to return OK. . .
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:47 <pikhq> . . . What's *wrong* with you?
20:44:16 <pikhq> (presumably the same thing that's wrong with the rest of us)
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:46:18 <oklopol> actually it might be easy to make a quine but never made one, so
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: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: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: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: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: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 <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:35 <pikhq> Like. . . A description?
20:56:35 <GregorR> logarithms, square roots ...
20:56:43 * pikhq sees a sqrt function. . .
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.
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:15 <pikhq> !glass {M[m(_m)(Jixmath)!(_o)O!2(_m)(sqrt).?(_o)o.?]}
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: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: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:19 -!- Asztal has joined.
21:11:48 <CakeProphet> Switching to dvorak makes a lot of brackets no longer work.
21:14:34 <CakeProphet> ]]dgd;fg[ldfg;l';l[or=======================================================================[]]==============================================================================================================================================================='
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:29 -!- ihope has joined.
21:20:44 <oerjan> !glass {T[t(_o)O!"Test"(_o)o.?]}{M[m(_t)T!(_t)t.0??]}
21:22:02 <oerjan> !glass {M[m(_o)O!"Test"(_o)o.11?11?]}
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:26:33 <oerjan> !glass {M[m"Test"(_o)0O!o."Test"11?11?]}
21:27:04 <CakeProphet> it's hard to follow the chain of evaluation when it goes... backwards.
21:27:34 <oerjan> !glass {M[m"Test"(_o)0O!o.11?11?]}
21:28:07 <Asztal> not if you're used to befunge
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:30:26 <oerjan> actually i just shortened one that already existed
21:30:46 <pikhq> CakeProphet: That would be a quine.
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:31 <pikhq> (which pushs 1 onto the stack twice. . . And the ? tries executing 1.1, which doesn't exist)
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:35:06 <oerjan> and 0 copies just the top element
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: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:38 <oerjan> except that (_o) there does not contain a function either, but an object.
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: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:44 <oerjan> you read the specification _very_ carefully. :)
21:43:04 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)o.11?]}
21:43:35 <pikhq> CakeProphet: Use the I class. . .
21:43:46 <pikhq> Unless you mean, like, arguments.
21:43:48 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)o.?]}
21:44:06 <pikhq> Leave the arguments on the stack in appropriate locations.
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:38 <oerjan> now i am not sure why it doesn't work
21:46:01 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)(on).?]}
21:46:09 <oklopol> !glass {M[m(_a)A!<4><5>(_a)a.?(_o)O!(_o)(on).1111111111111111?]}
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:29 <pikhq> "Lol"(variable_name)=
21:47:00 <oklopol> CakeProphet, you're totally gotten it wrong
21:47:08 <pikhq> "Lol"'Function calling stuff here'
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: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:51:01 <pikhq> CakeProphet: ! creates an instance of an object.
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: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: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: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: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: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: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:33 <oerjan> Although the builtin class methods happen to more consistently put their results on the stack.
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: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: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: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:03:00 <oklopol> queue... the turing machine!
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: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: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:07:02 <oklopol> i knew my code was right assuming my knowledge!
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: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: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: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:11:05 <oerjan> !glass {M[mTO!"Test"To.?]}
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: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: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:29:40 <oerjan> i think [(c__)a2=b2=,,] might work better
22:31:01 <oerjan> because that way you pick the deepest remaining argument
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: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: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> !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> 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 <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 <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: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: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:48:38 <CakeProphet> hmmm... can't you just access the variables themselves?
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:50:43 <oerjan> i think the (iter) is still slightly buggy
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: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: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: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:04:28 <oerjan> null? is just a method that tells if the list is Nil or not. So Con can just return 0.
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: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: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 <oerjan> however if you do the loop the right way you don't need to access far down elements.
23:15:20 <oerjan> you may not even need 0.
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:21:33 <oerjan> so your loop would be something like /(_tmp)(_l)*(_l)(Con)!(_tmp)*<1>(_a)s.?\
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:27:10 <oerjan> the first * is to get the content of _l onto the stack before using (Con)
23:28:30 <oerjan> because the ! command takes an unevaluated name to put the contructed object in
23:29:04 <CakeProphet> I forgot the _1 was just an identifier name.
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: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: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: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: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:54:47 <CakeProphet> Would probably make a good built-in class.
23:55:53 <pikhq> My god. You're just crazy.
23:56:47 <CakeProphet> The cons class works fine... just need to figure out where I messed up on the list constructor.
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).
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: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:43:33 <CakeProphet> I have no clue how to implement an array without using a linked list or something.
00:44:16 <CakeProphet> hmmm... I could use the stack as my array.
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:26 <oklopol> you could make it a string
00:45:39 <oklopol> you can extract a char from a string
00:45:45 <oklopol> and convert it to a number
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:41 <pikhq> CakeProphet: I thought Gregor had that as a glass example.
00:47:14 <pikhq> CakeProphet: Such as, like, realising that a string is an array of chars.
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:47 <pikhq> It's stored internally as a C++ string, which is stored internally in <string> as C strings with metadata.
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
01:00:54 <CakeProphet> in Glass... slicing is the equivalent to C slicing, no?
01:14:46 <oklopol> !glass {M[m"abc"1(_o)O!(_s)0S!s.?(_o)o.]}
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:15 <oklopol> !glass {M[m"abc"2(_o)O!(_s)0S!d.?(_o)o.?]}
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:17:06 <oklopol> !glass {M[m"abc"<2>(_o)O!(_s)0S!d.?(_o)o.?]}
01:17:14 <oklopol> !glass {M[m"abc"<1>(_o)O!(_s)0S!d.?(_o)o.?]}
01:17:19 <oklopol> !glass {M[m"abc"<0>(_o)O!(_s)0S!d.?(_o)o.?]}
01:17:47 <oklopol> i don't read glass that fluently yet :)
01:18:00 <pikhq> Nobody really does.
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:21:49 <CakeProphet> I was thinking Glass might have moved up the slice notation a notch.
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:24:30 <oklopol> you should take advantage of oo!
01:24:50 <oklopol> don't use an int as the pointer, have a class with .(inc) and so on
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:51 <CakeProphet> ....there's only so much abstraction that's nessicary.
01:26:15 <CakeProphet> Glass is so terrible because it forces you to abstract fairly low-level operations.
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:51 <oklopol> i wanna sleep, why can't i :(
01:29:13 <Sukoshi> I sleep out of mental neccessity.
01:29:22 <oklopol> true, but i have to wake up early
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: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:54 <oklopol> why do i see them there then? :O
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:34:33 <CakeProphet> I should start on that double-ended queue language.
01:35:10 <oklopol> /(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\
01:35:36 <oklopol> /(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)s.?\
01:35:58 <oklopol> i'm starting to be able to read that
01:40:22 <oklopol> i can't see the use of your splitting the array in (Array)
01:40:33 <CakeProphet> (pos) represents the number you're multiplying it by
01:41:12 <oklopol> and when will the loop end?
01:41:46 <CakeProphet> "Lolerskates" * 5 ----------- "Lolerskates" <5> (_ss)StringSpam!(_ss)?
01:42:07 <Sukoshi> Might I reccomend Pastebin?
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: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: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: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:49:07 <oklopol> i mean, it takes those as params and doesn't set them in the function?
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: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: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:38 <oklopol> why didn't you tell me i was wrong a while ago
01:55:00 <oklopol> maybe because i make no sence and mostly talk to myself :)
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: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: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: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?
02:00:01 <oklopol> actually i don't know whether = leaves anything on the stack
02:00:17 <oklopol> = pops the name and the value off
02:00:55 <oklopol> (i looked it up, but it's ONLY because i'm tired)
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: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: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:35 <CakeProphet> it could also just be there to confuse you.
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:03:09 <oklopol> you never need both, you must have both
02:03:34 <CakeProphet> and you could evaluate different things at different places... it would be kind of weird.
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: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:06:06 <oklopol> ah okay, you should then be able to make it go around in different places
02:06:37 <oklopol> very non-modular if there is just one queue with a rolling tape
02:06:45 <CakeProphet> Swapping which end you get values from would kind of reverse the evaluation order.
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:45 <oklopol> but instead you meant a two-sided stacks?
02:08:18 <oklopol> yes, but i confuse consepts
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:37 <oklopol> anyway, functionality is that of a two-sided stack
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: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:52 <CakeProphet> inputs and outputs criss-crossing and connecting... with the data getting tossed around.
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: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:35 <oklopol> you don't need data when the structure is perfect!
02:16:59 <oklopol> a language with no data, no hello world, no factorials, just PERFECT structures :D
02:17:15 <oklopol> anyways, i wanna send you the ugly pic :(
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: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:20:51 <oklopol> lol it makes me laugh... fuck i'm tired
02:21:33 <oklopol> sound like a job for concurrency!
02:21:54 <oklopol> and a great support for tcp/ip
02:22:51 <oklopol> kinda like a cellular automaton
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:33 <CakeProphet> that fit specifically for what you need them to do.
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: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:37:15 <CakeProphet> Most Python zealots don't consider lambda all that useful anyways...
02:45:59 <oklopol> i've actually been trying to sleep for 2.5 hours now
02:53:22 <CakeProphet> http://www.nyx.net/~gthompso/self_pyth.txt
02:56:15 <CakeProphet> a = ['print "a =", a', 'for s in a: print s']
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:45 <CakeProphet> repr() would be a good way to reproduce source code.
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: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: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: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: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: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:15:21 <pikhq> Could someone please give someone a command to give someone a command to repeat this command?
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: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: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: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: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: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: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: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: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: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: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: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: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: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:45:47 <oerjan> !glass {M[m(_a)A!(_o)O!<4><2>(_o)(on).?]}
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: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: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:29 <oerjan> yep, the Fibonacci program no longer works.
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:12:26 <oerjan> !glass {M[m(_o)O!"ho""Test"T$,(_o)o.?]}
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").
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:36 * pikhq thinks about making BFM shorter
16:54:13 -!- oerjan has joined.
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`.
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:08:08 * CakeProphet made a semi-broken Lisp-like list constructor in Glass.
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:56 <pikhq> ++++++++++>,<[>.,<-] | World's stupidest Brainfuck program.
03:12:43 <pikhq> My program at least indicates some knowledge of Brainfuck.
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:19 <pikhq> It's not even a quine.
03:13:23 -!- cmeme has quit ("Client terminated by server").
03:13:34 -!- cmeme has joined.
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:02 <pikhq> http://esoteric.sange.fi/brainfuck/bf-source/quine/quine410_with_comments.b
03:15:21 <CakeProphet> print (lambda x:x%x)("print (lambda x:x%%x)(%r)") is one of the coolest quines ever.
03:15:51 <pikhq> That's the commented version.
03:21:04 <pikhq> Didn't give a newline. ;)
03:21:19 <CakeProphet> Thought it just spouted output on the spot.
03:22:53 <pikhq> I don't think it works fully.
03:28:16 <CakeProphet> so... I've been working on my IRP iterating quine.
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: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: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 <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: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:06 <CakeProphet> One of the requirements for Turing completeness is well-defined behavior.
03:41:10 <EgoBot> Use: daemon <daemon> <daemon-command> Function: start a daemon process.
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:01 * CakeProphet has some weird Python classes that implement various forms of the computational classes.
03:42:11 <RodgerTheGreat> perhaps IRP would benefit from the use of legalese, it being a more precisely defined form of English
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:25 <pikhq> IRP would benefit from gnomes that smack bad interpreters.
03:44:04 <CakeProphet> or like... ops that kickban interpreters for "not adhering to the specification".
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: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: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:16 <CakeProphet> a "species"... which is basically a class.
03:58:53 <CakeProphet> inheritane would be like creating a genus, phylum, etc.
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:30 <RodgerTheGreat> redcode has a way of creating wonderfully elegant code.
04:03:15 <pikhq> The binary version could be, though.
04:07:22 <CakeProphet> so like... each character reacts differently to other characters in other functions or something?
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:12:14 <RodgerTheGreat> it seemed like the simplest way to make function calls.
04:12:30 <CakeProphet> The function call can be altered mid-execution?
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:22 <RodgerTheGreat> it might make it needlessly tricky to do self-modyfying recursion, though
04:15:18 -!- ihope has quit (Connection timed out).
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: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:44 -!- ihope_ has changed nick to ihope.
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:40 -!- EgoBot has quit (Read error: 54 (Connection reset by peer)).
04:23:44 -!- EgoBot has joined.
04:24:06 <CakeProphet> it would be like strings... except higher-up...
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: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: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:28:57 <RodgerTheGreat> lol- I remember hearing stories about a CS professor that insisted "deque" was pronounced "deck"
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: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:07 <GregorR> Suicide-note based language.
04:32:35 <CakeProphet> Lua's base data-type is a hash (called a "table")
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:41:11 <CakeProphet> you're speaking to someone who's never bothered to touch C.
04:42:12 <CakeProphet> Python... and... well just Python. But I also do a litle Scheme.
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: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: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:47:10 <CakeProphet> Yeah... that's called slicing or indexing... it's basically like arrays.
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:34 <RodgerTheGreat> x=y=2 in BASIC generally does the same as x=y==2 in other languages
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: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: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:58:07 <CakeProphet> Python seems tons more consistent than what I've seen of C.
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: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: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: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: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:17:56 -!- digital_me has quit ("night").
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:41 <CakeProphet> Nothing annoys me more than grumpy coders.
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:27:07 <RodgerTheGreat> well, I think I need to get some sleep. G'night, guys.
05:27:44 -!- RodgerTheGreat has quit.
05:29:18 <wooby> what is new and good in the world of esoteric programming technology
05:29:53 <CakeProphet> I've got some ideas for a genetic-ish object-oriented programming language?
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:25 <wooby> i don't know much about genetic algorithms outside the few dewdney examples from however long ago
05:30:55 <CakeProphet> But I know the basic concept of natural selection... which is basically all you need.
05:31:08 <wooby> my hunch is that it's like neural networks
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: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: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:34:53 <wooby> on genetic algorithms
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: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:39:06 <wooby> what about a fullblown BF machine
05:39:18 <wooby> then an OS written in basic :)
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: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:51:02 <GregorR> Yes yes, everybody's discussed this possibility.
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: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:49 <CakeProphet> We could use a more modular version of BF.
06:08:46 <CakeProphet> hehe... and we can ditch a filesystem... and the whole desktop metaphor.
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:28:58 * GregorR hits his head against a wall.
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: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: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:49 <oerjan> !glass {M[m(_a)A!(_o)O! <2>(_o)(on).?]}
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.
07:41:09 <CakeProphet> and the Hello World program from the esolang wiki only prints out "Hello"
07:42:18 <oerjan> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
07:42:41 <oerjan> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
07:43:05 <oerjan> whoops. you didn't happen to copy only the first line, too? :)
07:43:46 <oerjan> or perhaps your interpreter breaks when encountering the newline
07:44:47 <oerjan> if you don't ignore non-command characters properly, say
07:44:52 <CakeProphet> !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
07:44:54 <CakeProphet> <.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
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: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:34 <CakeProphet> As far as I can tell... it ignores them completely.
07:49:23 <oerjan> what happens in your interpreter if you replace the newline with a space?
07:52:34 * CakeProphet figures out the problem with some breadcrumbing.
07:53:59 <oerjan> you mean you solved it?
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:30 <CakeProphet> I made some changes to the source inbetween runs when I noticed a bug.
07:56:41 -!- ivan`_ has joined.
07:56:56 <CakeProphet> Here;s the soure again... with a test run at the bottom
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: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: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: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: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:53 <CakeProphet> oerjan, Not sure how to reliable tell where a ['s corresponding ] is.
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:31:20 <oerjan> you basically have to do _some_ non-executing parse at some step.
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: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:46 <CakeProphet> AST wouldn't help parse the syntax... because it's so simple to parse.
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: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: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: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: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: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: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: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:20:05 <GregorR> !glass {M[m(_o)O!(_a)A!<60><5>(_a)a.?(_o)(on).?"foo"(_o)o.?]}
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: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:30:25 <CakeProphet> I think it would make more sense to just simply do &(subroutiine reference name)
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: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: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: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: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: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: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: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: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: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: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: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: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: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:20 * SimonRC reads the story of virtudyne on the front page of The Daily WTF. Absolutely amazing story.
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: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: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: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:44 <pikhq> Asztal: It's assuredly possible.
17:49:53 <pikhq> oklopol: It's a MOV machine. :)
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: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:59:06 <SimonRC> It can be found containing a program to calculate prime numbers.
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: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: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:59 <oerjan> i don't know, but someone around here promised to deify me for my shortened Glass quine.
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: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: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:15:41 <CakeProphet> or... you could use all the craziness of http://en.wikipedia.org/wiki/Renga to construct various representations of numbers.
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:40 <SimonRC> in modern net culture, that is largely forgotten
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:59 <SimonRC> I was thinking of something that would be suitable for recognising hashes, fingerprints, etc, actually
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: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:31:25 <SimonRC> I am ont really concentrating on the decoding, mor the encoding
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: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: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:08:54 <CakeProphet> RodgerTheGreat Let's do orthogonal persistency... and make it totally weird!
20:08:54 <CakeProphet> The kernel could represent memory as BF arrays.
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: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: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:15 <pikhq> The core OS, at least, would need to be 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:13:30 <pikhq> Define some stuff. . .
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:24 <CakeProphet> brainfucks concept of memory storage maps fairly easily to a computer's main memory.
20:15:55 <CakeProphet> input, output, and something to move around.
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: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: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: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: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: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: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: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: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:32:41 <CakeProphet> #rotates current value in the cell 13 places#%(rot13)+++++++++++++% #Main program ---># +++++++++++++++&(rot13)
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:39 <oklopol> so you could just have a call and a return
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: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: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: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: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: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: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: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: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:40 <RodgerTheGreat> you can simulate giving functions their own tape pretty easily, and the whole idea maps to assembly pretty neatly
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:47:40 <CakeProphet> I've just been colling it "functional brainfuck" and "DefBF"
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:51 <CakeProphet> I'd like to do the whole thing as a huge thought experiment.
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: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: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:57:12 <pikhq> Presumably the shell will just call functions.
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:56 * pikhq sees one issue with that glass program. . .
20:59:02 <pikhq> No looping involved.
20:59:17 <CakeProphet> Actually... I just forgot to call the input method.
21:01:16 <CakeProphet> !glass {M[m(_o)O! (_x)I! (_s)S! /<1> (_x)i.? "\n" (_s)a.?(_o)o.?\]}
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:53 -!- calamari has joined.
21:06:35 <CakeProphet> !glass {M[m(_o)O! "RodgerTheGreat, calamari's here."(_o)o.?]}
21:06:39 <EgoBot> RodgerTheGreat, calamari's here.
21:07:07 <pikhq> !daemon cat bf ,[.,]
21:07:36 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
21:07:39 -!- RodgerTheGreat_ has joined.
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: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:13:04 <calamari> I'm currently working on putting wikipedia and the scriptures on my ipod
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: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: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: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:21:17 <RodgerTheGreat_> like, with absolute addressing, 0x00000000 would be the VERY first memory address on your machine
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: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: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: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: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:31 * pikhq would rather see just BFM compiling to the low-level version. XD
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:40 <oklopol> : resume execution from previous address
21:29:50 <calamari> for example x=x+y, @y[@x+@y-@t+]@t[@y+@t-]
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: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: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:46 <oklopol> runtime macros like that are much less bf
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: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:40:10 <oklopol> reference has an abstactionish feel to it
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:55 <RodgerTheGreat_> a global array with no scoping OR pointers means that code can't be arbitrarily re-arranged without breaking it.
21:42:28 <RodgerTheGreat_> actually, they CAN, it's just nontrivial, and adds needless complexity to the compiler
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: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: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: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: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:49:15 <CakeProphet> ah... yeah, this is definetely going to need to be geared to a more lower-level application.
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: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:52 <CakeProphet> and function calls taking variable arguments.
21:54:02 <CakeProphet> that's a huge step away from BF-style programming.
21:54:09 <pikhq> Those are high-level abstractions layered on Def-BF.
21:54:48 <oklopol> you aren't gonna put in functions(with,arguments) or smth like that are you?
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: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: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:59:57 <RodgerTheGreat_> essentially, just think of @ controlling the program counter and # controlling the BF memory pointer
22:01:56 * CakeProphet thought all the pointer stuff was going to muck-up the brainfuckiness.
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: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: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:15 <oklopol> how does the low-level do that
22:05:23 <oklopol> it doesn't know about argument
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:19 <oklopol> go back - [do things] - com back
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: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:36 <oklopol> with absolute addresses, it's possible to allocate and "infinite" bit of the tape for every function right?
22:10:01 <oklopol> because they can be moved around as needed etc if the address is absolute
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: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: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:13:22 <RodgerTheGreat_> oklopol: I guess it'd require knowing an absolute memory address to call in the first place
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: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:15:05 <oklopol> ah, of course, do the argument sending in the main prog
22:15:11 <oklopol> ...as in assembler actually
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: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: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: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: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:40 <oklopol> CakeProphet, you can make your own high-level
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: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: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:58 <CakeProphet> C-look-alikes that convert to brainfuck isn't what I had in mine.
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: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: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: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:14 <RodgerTheGreat_> well, in theory the Def-BF->Machinecode can improve that a bit
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: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: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: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: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: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: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:33:10 <CakeProphet> If I understand correctly... def-BF doesn't have a concept of assignable names.
22:33:55 <CakeProphet> that's what I meant... should I decide to abstract it... that's what I abstract it with.
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: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:54 <oklopol> you have "gotten" the function in that memory space
22:35:59 <oklopol> then do another # to call it
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:37:00 <CakeProphet> heh.... unfortunately I didn't understand any of that.
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: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: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: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: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:54 <oklopol> just a few preceding cells
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:42 <oklopol> or [length,char1,char2,etc]
22:45:59 <oklopol> i assume you understand i'm just representing a part of the main array python-tsyle?
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: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:51:01 <CakeProphet> Def-BF was designed to be for memory management.
22:51:05 <oklopol> the kernel need not that many operations
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:21 <oklopol> because you wanna use both hard-disk and ram without breaking off the "one tape for everything" principle
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:56 <oklopol> yes, but can be cut anyway we want in reality because Def-BF doesn't do everything relatively?
22:55:24 <oklopol> okay, because i'm thinking the computer only runs brainfuck
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: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: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: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:53 <RodgerTheGreat_> and coordinates the inter-operations between other software
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:41 <CakeProphet> It would need to be more powerful than that.
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: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: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: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: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: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: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: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: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: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:15:25 <CakeProphet> but it'll only be O(n) if you make it work like that.
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: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: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:25 <oklopol> what i mean is, bf -> machine code is of course worse code than python -> machine code
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: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:27:11 <CakeProphet> probably more wrong than you... but being right when it comes to optimization is nigh impossible.
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: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:35:04 <CakeProphet> but yeah, you're right about BF being slower.
23:35:04 <oklopol> you talking about compilation of interpretinf?
23:35:31 <oklopol> i'm talking about the core, so compilation
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:37:16 <oklopol> but python is conseptually the same as C
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: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: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:44 <oklopol> but, in python everything is guaranteed to be the same ordo as in c
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:54 <oklopol> let's say everything is compiled, for one
23:42:17 <oklopol> no c running when you run your python, no python running when you run your pythong code
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:45:16 <GregorR> I don't have to plan a New Years party, it plans itself.
23:51:39 <oklopol> i wanted to code the NY but i gotta go party with my friends :(
23:59:14 <CakeProphet> I think glass would be a good candidate to use. :D
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: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:04:22 <oklopol> !glass {M[m(_o)0O!"wheee"o.?]}
00:04:38 <oklopol> !glass {M[m(_o)0O!"wheee"1o.?]}
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:08:20 <CakeProphet> hehe... I'd do the kernel in Python myself. :D
00:09:07 <oklopol> i still don't know what will be the goal for the OS
00:09:33 <oklopol> to be written in esoteric langs, to run esoteric langs, or both
00:09:52 <oklopol> the middle one is the one i'd use :)
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: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: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:52 <CakeProphet> I dunno... I'm starting to reconsider Def-BF :/
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:27 <oklopol> how else would you do functions?
00:17:58 <oklopol> that would be absolute addressing
00:18:06 <CakeProphet> give them symbolic names that lead to memory addresses.
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: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: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: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: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: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: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:28:17 <oklopol> eh, now when executing the program
00:28:34 <oklopol> would there be "function insertion" in the codestring or smth?
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:21 <oklopol> a program being a normal function?
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: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:57 <CakeProphet> we were just busy being confused by each others explainations.
00:37:24 <CakeProphet> There should be no difference between a function and a program.
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:39:21 <oklopol> i mean, isn't it basically a name to address?
00:39:32 <CakeProphet> oh... that's for name-to-address stuff... that's different.
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:54 <GregorR> And what language will you write all this in?
00:41:09 <GregorR> (You'll excuse me if I'm dripping with scepticism)
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: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: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: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:36 <oklopol> "<CakeProphet> It has most of the high-level constructs needed to translate directly to machine code." i don't quite follow
00:57:17 <CakeProphet> well it has a division operator... for example... which could translate directly to the DIV instruction.
00:57:41 <oklopol> "<CakeProphet> Glass could be an efficient base language." missed this line
00:58:16 <CakeProphet> It seems just similar enough to assembly to make a nice translation... while still being freaky as crap.
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:26 <CakeProphet> the postfix is just a minor setback until you get used to it.
01:00:31 <GregorR> Yeah, it's a miserable failure in that sense ;)
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:04:18 <GregorR> That's only a sensible shortform if it's High-Level DeF-BF
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: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: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:59 <CakeProphet> Glass is funkier though... and less tiring to type. :D
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: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:11:18 <GregorR> Glass' classes are a superset of ORK's classes I believe.
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: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:38 <CakeProphet> GregorR, You didn't tell me there was a secret!!!
01:13:06 -!- CakeProphet has changed nick to SevenInchBread.
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: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:43 <GregorR> !glass {M[m(_o)O!(_a)A!<2><2>(_a)a.?(_o)(on).?]}
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: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:51 <oklopol> i mean if i did !glass {A}{S}{M[m]}, my interpretor should no longer have them?
01:18:10 <GregorR> oklopol: However, it would only /permanently/ remove them if you used a 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: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:20 <oklopol> !glass {M["+++."m(_bf)0BF!(run).?]}
01:20:21 <GregorR> Errrm, that was borken a bit :)
01:20:30 <GregorR> !glass {M[m(_b)(BF)!">+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+."(_b)(bf).?]}
01:25:41 <GregorR> I have Arr, which is really a LLL despite being called an Arr[ay] :P
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: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:42 <GregorR> ORK's compiler is OSS, have at it ;)
01:29:41 <GregorR> (It's been a while since I wrote it ;) )
01:29:59 <SevenInchBread> Glass would more readily translate to assembly, methinks.
01:32:27 <GregorR> Incidentally, who the bork is SevenInchBread?
01:32:35 -!- SevenInchBread has changed nick to CakeProphet.
01:32:48 <GregorR> You prophesized bread instead of cake then?
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:56 -!- GrandmotherChaos has changed nick to SevenInchBread.
01:39:32 <EgoBot> realloc: Cannot allocate memory
01:40:04 <GregorR> That was just EgoBF dying ;)
01:40:45 <GregorR> It is like a bunch of subprocesses literally.
01:41:32 -!- cmeme has quit ("Client terminated by server").
01:41:43 -!- cmeme has joined.
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:27 <GregorR> I'm just skeptical is all.
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: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: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: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:57:11 <oerjan> i still suggest you add ,, to the constructor.
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:59:45 <oerjan> only if you don't need to use anything below it in the stack
02:01:09 <SevenInchBread> So objects can have customized output with just one universal call.
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:03:08 <SevenInchBread> like in the cons constructor... how would we know what type of elements we're dealing with?
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:49 <SevenInchBread> the (ols) method I just added would only work for strings...
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:35 <oerjan> it means you can wrap any object which doesn't have an o method in another object which does the translation.
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: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: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: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:18:17 <oerjan> !glass {M[m (_o)O! "Test" (_o) "o".?]}
02:19:31 <oerjan> you have some serious stack underflow there.
02:20:39 <oerjan> trying to get values from an empty stack
02:21:52 <oerjan> !glass {M[m(_o)O!(_o)(on).]}
02:22:40 <EgoBot> 1 SevenInchBread: glass
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: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: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:40:20 <oerjan> !glass {M[m(_a)A!(_o)O!<4.0><3>(_a)d.?(_o)(on).?]}
02:40:27 <oerjan> !glass {M[m(_a)A!(_o)O!<4><3>(_a)d.?(_o)(on).?]}
02:40:52 <oerjan> !glass {M[m(_a)A!(_o)O!<4.0><3>(_a)a.?(_o)(on).?]}
02:41:59 -!- oerjan has quit ("Leaving").
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: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:49 <GregorR> Well, public domain is just plain bad, so *shrugs*
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:30 <GregorR> That's the f***'d-up-ness of copyright.
02:49:49 <GregorR> I prefer MIT minus attributionl
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: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: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:45 <GregorR> ihope: IANAL, this is just what I've been told.
02:54:06 <ihope> CakeProphet: yes, he is.
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:24 <ihope> What platform are we going to build this on, exactly?
02:56:41 <ihope> Not x86, I take it.
02:57:00 <GregorR> It would probably run /on/ x86
02:57:05 <GregorR> But would not /run/ x86 code.
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:45 <ihope> For eSOAteric Platform.
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:13 <GregorR> I certainly agree with that :P
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: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: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: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:38 <CakeProphet> same language... new builtin class. It's a "feature request" :P
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:55 <CakeProphet> Def-BF.... a version of BF with memory addressing for subroutines.
03:12:00 <ihope> (And which, for that matter?)
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: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: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:16:10 <ihope> We could have "enter user mode" be the only instruction... then again, that gives no control whatsoever.
03:16:33 <ihope> "Enter user mode" and "fudge trap registers"?
03:16:35 <CakeProphet> fuck your userless usermode switching language.
03:17:31 <ihope> How, exactly, does one load a program and run it with Glass?
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:41 <GregorR> It could have interpreters written in Glass (or as object files)
03:19:00 <ihope> You mean emulation?
03:19:24 <ihope> Portable Executable files contain x86 assembly, don't they?
03:19:38 <ihope> And whatever ELF stands for, too?
03:20:17 <ihope> Interpreters are a little slow, you know.
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 <GregorR> Slow is the last of our problems.
03:21:41 <ihope> sO WE DON'T CARE ABOUT SPEED, THEN?
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:23:47 <ihope> Be back in a while?
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: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:29:10 -!- Asztal has joined.
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:15 -!- CakeProphet has changed nick to SevenInchBread.
03:56:11 -!- SevenInchBread has changed nick to CakeProphet.
04:09:00 <GregorR> HEY CAKEPROPHET, time to stop using capslock :P
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:12:14 <GregorR> Um, at some level there has to be a glass interpreter.
04:12:16 <CakeProphet> I surely wouldn't want to bathe with glassy soap.
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:22:48 <RodgerTheGreat_> looks like my poor little language has already fallen from vogue, based on the logs
04:23:16 <GregorR> Specification minus implementation equals zero.
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:25:11 <Asztal> Good. I hated them anyway
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:44 <CakeProphet> I never made claims to pointers being usable.
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: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: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 <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: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: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: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: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:55:33 <RodgerTheGreat_> Def-BF makes it easier to fit loose BF programs into a framework for controlling them as a group
04:56:30 <RodgerTheGreat_> it wouldn't be impossible, but it'd make it a bitch to add and remove things
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: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:42 <RodgerTheGreat_> well, yeah, but we need a handful of useful ones to build the core OS with
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:03:54 -!- digital_me has quit ("holy lol!").
05:04:19 <CakeProphet> I think it would be cool to have like... a scrollable "plain".
05:05:39 <GregorR> Here's the problem with every EsoOS ever: Nobody can make up their F'ing mind on anything.
05:06:48 <CakeProphet> we can take eternity goign back and forth if we want.
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:23 <GregorR> No, what we need is an actual design for a kernel. How the languages correspond is fluff.
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:11:40 <CakeProphet> well.... I really have NO clue how to do a kernel.
05:12:18 <GregorR> I can write a kernel, but I don't know what anybody actually wants.
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: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:21 <GregorR> With a good hardware layer, all of that can be hypothetically written in the language of choice.
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:18:05 <RodgerTheGreat_> which has the added benefit of an infinite supply of "my kernel's got wood" jokes
05:18:24 <GregorR> Namely, "my kernel's got wood"
05:19:29 <CakeProphet> mmm... the whole save-to-disk-explicitly thing seems kind of outdated.
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:29:34 <CakeProphet> GregorR, You've been involved in other esoos projects that failed? :D
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: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: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:26:00 <oerjan> !glass {M[m(_o)O!(_t)(_o)*=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:26:14 <oerjan> !glass {M[m(_o)O!(_t)(_o)o.=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:26:27 <oerjan> !glass {M[m(_o)O!(_t)<1>=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:26:41 <oerjan> !glass {M[m(_o)O!(_t)"hi"=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:27:49 <oerjan> !glass {M[m(_o)O!(_t)O*=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:33:00 <oerjan> !glass {M[m(_o)O!(_t)<-1>=/(_t)"test"(_o)o.?(_t)<0>=\" ho"(_o)o.?]}
11:33:29 <oerjan> {M[m(_o)O!<-1>(_o)(on).?]}
11:33:48 <oerjan> {M[m(_o)O!<-1>(_o)o.?]}
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: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:24:52 -!- ivan` has joined.
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.
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: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: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.
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: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: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: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: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: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: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:07 <pikhq> The spec is a description of how the real interpreter behaves. ;)
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:48:21 <pikhq> !glass {M[m<1>(_o)O!(_o)(on).?]}
19:48:44 <pikhq> !glass {M[m<32>(_o)O!(_o)(o).?]}
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:54 <CakeProphet> !glass {M[m <1><2>(_o)O!0(_o)(on).?1(_o)(on).?]}
19:50:15 <CakeProphet> !glass {M[m <1><2>(_o)O!1(_o)(on).?0(_o)(on).?]}
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:46 <CakeProphet> !glass {M[m <1><2>(_o)O!11(_o)(on).?0(_o)(on).?]}
19:52:11 <pikhq> !glass {M[m <1><2>(_o)O!(_o)(on).?(_o)(on).?]}
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: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:56 <oerjan> but then you couldn't have empty lists as elements of lists?
20:04:18 <CakeProphet> Dunno enough about other languages exception handling to tell you what's unique about it. :)
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:59 <GregorR> bsmntbombdood: Yeah ... in the darcs repo :P
20:07:25 <oerjan> because every inquisitive operation other than pure true/false testing probably gives an error on something.
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:09:25 <oerjan> !glass {M[m(_a)A!(_o)O!<1>(_o)(_a)e.?(_o)(on).?]}
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: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:12 <oerjan> !glass {M[m(_a)S!(_o)O!(_a)(_o)(_a)e.?(_o)(on).?]}
20:11:34 <oerjan> !glass {M[m(_a)A!(_o)O!(_o)(_o)(_a)e.?(_o)(on).?]}
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:43 <oerjan> !glass {M[m(_a)A!(_o)O!(_o)o.(_o)(on).(_a)e.?(_o)(on).?]}
20:14:13 <oerjan> !glass {M[m(_a)S!(_o)O!(_o)o.(_o)(on).(_a)e.?(_o)(on).?]}
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: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:55 <Sukoshi> I like Lispy error handling.
20:19:12 <CakeProphet> I'm pretty sure Python's error handling resembles Java's.
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: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:26 <Sukoshi> Errors in Lisp resemble calls to GOTO in many ways.
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:29 <GregorR> How about exceptions in Brainfuck?
20:21:47 <Sukoshi> Similar to exceptions in Forth.
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: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:25:35 <Sukoshi> Which one of us is will be the ASM guinea pig?
20:26:12 <Sukoshi> Well, who is going to write the BF->ASM compiler?
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: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: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: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:32:14 <Sukoshi> Are we going to build Glass on top of BF? Ouch.
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: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: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: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: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:56 * Sukoshi suddenly got a vision of a Lisp machine and drools.
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:19 <GregorR> Plof is pretty minimal (ha-HAH)
20:38:49 <Sukoshi> Scheme has almost *no* programmer metaphors for 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: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: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: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:42:06 <Sukoshi> GregorR: Intepreter or compiler?
20:42:12 <Sukoshi> CakeProphet: How do you implement a linked list?
20:42:24 <Sukoshi> GregorR: Errr, interactive?
20:42:31 <GregorR> RodgerTheGreat: I think /you/ could add the Def-BF command set ;)
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: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:21 <GregorR> Anybody have a SVN repo sittin' around for me to toss it in? :P
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:56 <CakeProphet> and bolt a Glass interpreter in... what's it written in?
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:34 <GregorR> Well, with a bit of work, C++ could work too.
20:48:37 -!- RodgerTheGreat_ has joined.
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: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:52:29 <CakeProphet> hehe... so is Glass With Hardware Shit Bolted On. :D
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.
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: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:38 <GregorR> Hey, if you can compile Glass to metal plus have proper hardware abstraction in there, more power too ya'.
21:14:35 <CakeProphet> FORTH is like Glass minus classes plus tons of low-level hardware support.
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:22:04 * pikhq wants to see the core interpreter in C, with various interpreter modules. . .
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:09 <pikhq> I do Tcl natively. . .
21:28:05 <GregorR> Developers, developers everywhere, and not a drop of C X_X
21:41:56 -!- RodgerTheGreat_ has joined.
21:46:10 <CakeProphet> I've developed a liking to postfix notation. :)
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: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:03:07 <Sukoshi> The main plus is that Forth is interactive.
22:04:58 <GregorR> bsmntbombdood: Hands off ya' blimey pervert!
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.