←2008-03-30 2008-03-31 2008-04-01→ ↑2008 ↑all
00:52:05 -!- ihope__ has joined.
00:52:07 -!- ihope__ has changed nick to ihope.
01:02:32 -!- cherez has joined.
01:10:08 -!- ihope_ has quit (Read error: 110 (Connection timed out)).
01:22:02 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]").
01:52:54 -!- EgoBot has joined.
02:07:44 -!- vixey has joined.
02:14:01 -!- Sukoshi has quit ("Leaving").
02:17:09 -!- ihope__ has joined.
02:24:33 -!- Tritonio__ has joined.
02:24:47 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
02:25:30 <oklopol> okokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokoko
02:25:35 <oklopol> okokokokokokokokokokoko
02:25:37 <oklopol> that is all
02:26:26 <vixey> ok
02:27:40 <ehird> oklopol: oko
02:34:44 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:53:24 -!- Tritonio_ has joined.
02:53:51 -!- Tritonio__ has quit (Read error: 104 (Connection reset by peer)).
03:00:47 <ihope__> ehird: I agree.
03:13:00 <vixey> what language is it that takes the fewest line to write a mini-schime, prolog, mini-haskell and metainterpreter in?
03:13:18 <vixey> I want to mimimize the sum of lines of code of all those programs
03:14:19 <vixey> (level of abstraction of the metainterpreter would be that it actually describes every feature of the language, doesn't just call eval or whatever)
03:14:28 -!- ehird has quit ("Konversation terminated!").
03:14:32 <vixey> right now I am guessing Scheme
03:15:06 -!- ihope___ has joined.
03:15:08 -!- ihope___ has changed nick to ihope.
03:26:49 <oklopol> oklotalk!
03:27:34 <vixey> **which have an actual implementation
03:27:59 <oklopol> oklotalk has an implementation!
03:28:03 <oklopol> well, almost
03:28:05 <oklopol> :D
03:28:13 <oklopol> it doesn't have a parser
03:28:20 <oklopol> maybe some day...
03:30:22 -!- atsampson has quit (Read error: 113 (No route to host)).
03:35:58 -!- ihope__ has quit (Read error: 110 (Connection timed out)).
03:58:54 <lament> vixey: i'm guessing scheme too
03:59:36 <lament> because of the metainterpreter part
04:01:14 <RodgerTheGreat> vixey: Scheme sounds like a good theory, but it might be more interesting to design a language with creating these types of interpreters in mind
04:04:51 <lament> RodgerTheGreat: haskell :)
04:07:32 <lament> scheme is pretty much designed for that
04:07:51 <lament> except instead of "interpreters", it's designed to extend scheme itself to become any of those languages
04:35:53 <vixey> ok
04:35:53 <vixey> http://rafb.net/p/dT236x14.txt
04:35:56 <vixey> idea..
04:36:22 <vixey> it's scheme and prolog like, 'function' calls can return multiple times and backtrack but they also return values (loose use of 'return' since you could often supply the return value of a function to generate its parameters like in any logic language)
04:36:43 <lament> and i have to add that mandolin is a really awesome instrument
04:36:49 <lament> (to play)
04:40:09 <vixey> any remarks?
04:40:20 <lament> your scheme is very simple :)
04:40:29 <lament> and you kinda need to parse stuff
04:40:38 <lament> or it's cheating!
04:40:45 <vixey> oops there is at least one mistake, I meant to write (conj (= #t result) (eval this env))
04:42:24 <vixey> if I was going to tack on a parser the language would have to support strings..
04:42:48 <vixey> I guess syntax sugar for lists of atoms it ok
04:43:04 <vixey> is*
04:53:24 <lament> sure
05:09:11 <RodgerTheGreat> vixey: nifty
05:11:16 <RodgerTheGreat> what flavor of scheme is that written for? MzScheme?
05:11:43 <vixey> none really
05:11:56 <RodgerTheGreat> r5s5?
05:12:42 <vixey> well it would hopefully be a subset of macroexpanded R5RS
05:37:49 <RodgerTheGreat> this is really interesting: http://www.firstsounds.org/sounds/
06:41:00 <RodgerTheGreat> good night everyone
06:41:08 <vixey> night
06:41:33 -!- RodgerTheGreat has quit.
07:13:16 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- Judofyr has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- oklopol has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- Deformative has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- Quendus has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- olsner has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- AnMaster has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- SimonRC has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- cmeme has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- cherez has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- pikhq has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- vixey has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- sebbu has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- lament has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- Overand has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- ihope has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- mtve has quit (brown.freenode.net irc.freenode.net).
07:14:00 -!- ihope has joined.
07:14:00 -!- Tritonio_ has joined.
07:14:00 -!- vixey has joined.
07:14:00 -!- EgoBot has joined.
07:14:00 -!- cherez has joined.
07:14:00 -!- sekhmet has joined.
07:14:00 -!- pikhq has joined.
07:14:00 -!- Judofyr has joined.
07:14:00 -!- oklopol has joined.
07:14:00 -!- Deformative has joined.
07:14:00 -!- bsmntbombdood has joined.
07:14:00 -!- sebbu has joined.
07:14:00 -!- lifthrasiir has joined.
07:14:00 -!- olsner has joined.
07:14:00 -!- Overand has joined.
07:14:00 -!- AnMaster has joined.
07:14:00 -!- SimonRC has joined.
07:14:00 -!- Quendus has joined.
07:14:00 -!- GregorR has joined.
07:14:00 -!- cmeme has joined.
07:14:00 -!- lament has joined.
07:14:00 -!- tejeez has joined.
07:14:00 -!- Deewiant has joined.
07:14:00 -!- mtve has joined.
07:41:20 -!- atsampson has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:04:21 -!- GreaseMonkey has joined.
08:17:17 -!- Judofyr_ has joined.
08:17:17 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
08:50:35 -!- olsner has quit ("Leaving").
08:57:06 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
08:57:06 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
09:09:32 -!- EgoBot has joined.
09:09:40 -!- sekhmet has joined.
09:11:56 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
09:12:56 -!- EgoBot has joined.
09:18:37 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
09:19:22 -!- sekhmet has joined.
09:44:55 -!- GreaseMonkey has quit ("gnihgt").
10:41:36 <AnMaster> Deewiant, was just implementing FPSP, and the mycology output is confusing
10:41:45 <AnMaster> "UNDEF: cFP outputs never mind, BAD: P reflects"
10:41:50 <AnMaster> that's all from FPSP atm
10:51:32 <Deewiant> that's the way it has to be done
10:51:36 <Deewiant> with all output instructions
10:51:49 <Deewiant> i.e. first output "UNDEF: cFP outputs"
10:51:52 <Deewiant> and then call P
10:52:02 <Deewiant> and then if it outputs, it outputs what it outputs
10:52:12 <Deewiant> but if it reflects, "never mind, BAD: P reflects"
10:54:06 -!- Judofyr has joined.
10:54:06 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
11:54:08 -!- vixey has quit ("Leaving").
13:14:54 -!- ihope has quit (Read error: 110 (Connection timed out)).
14:14:10 -!- RodgerTheGreat has joined.
14:14:24 <RodgerTheGreat> 'morning, everyone
14:26:31 -!- jix has joined.
14:26:43 <RodgerTheGreat> hey, jix
14:33:06 <jix> hey
14:46:44 -!- ais523 has joined.
14:52:28 <oklopol> mrning
14:52:43 <RodgerTheGreat> howdy oklopol, ais523
14:52:50 <ais523> hi RodgerTheGreat
14:53:19 * ais523 did finish that INTERCAL continuation library that was being discussed yesterday
14:53:37 <ais523> at about 6am this morning, because I couldn't sleep and started working on it again at about 5am
14:55:00 <AnMaster> Deewiant, the issue was "cFP outputs never mind"
14:55:12 <AnMaster> Deewiant, what did it say "never mind" or ?
14:55:31 <AnMaster> it was confusing
14:56:07 <AnMaster> maybe a comma before never mind would help with grammer ;)
14:57:11 <RodgerTheGreat> "grammar"
14:57:54 <ais523> AnMaster: what licence is cfunge under?
14:58:23 <ais523> I ask because I have an INTERCAL/Befunge link-together in mind as the next thing to do now I have INTERCAL/C
14:58:41 <ais523> although writing COME FROMs in Befunge would be a little strange
14:59:43 <ais523> as far as I can tell, you'd have to have them read their arguments from the playfield rather than the stack
15:03:18 -!- marshmallows has joined.
15:14:52 <AnMaster> ais523, GPL3
15:15:03 <ais523> ah, OK
15:15:09 <AnMaster> ais523, is it a problem?
15:15:19 <ais523> C-INTERCAL is GPL2
15:15:23 <ais523> but that's not really a problem
15:15:29 <AnMaster> not "2 or later"?
15:15:34 <ais523> 2+, sorry
15:15:38 <AnMaster> right
15:15:47 <AnMaster> ais523, well, it is also C99
15:15:56 <ais523> yes, that could also be a problem
15:15:57 <AnMaster> so not sure how well it would work on old systems
15:16:09 <AnMaster> ais523, it currently uses boehm-gc but it is not hard to change that
15:16:09 <ais523> if you use VLAs then it would be right out, because C-INTERCAL doesn't like linking to them
15:16:38 <AnMaster> ais523, I don't use VLA I think, but I use "dynamic sized array at end of struct"
15:16:50 <AnMaster> which is a bit different
15:16:53 <ais523> that shouldn't be a problem as long as you're storing them on the heap
15:17:07 <AnMaster> ais523, well yes I malloc them
15:17:13 <ais523> it's just that C-INTERCAL does crazy stack tricks to to handle communication between processes
15:17:26 <ais523> so you can do just about anything you like on the heap, but you have to be a lot more careful on the stack
15:17:32 <AnMaster> well I do push some structs on stack
15:17:51 <AnMaster> ie, returning a struct, not a reference to one in one place
15:18:19 <ais523> that's fine, as long as they're fixed-size
15:18:25 <ais523> and you don't leave them there too long
15:18:39 <ais523> (as in, you don't try to FORGET stack elements with useful data still in them)
15:18:49 <AnMaster> ais523, well also you will need to fix a few mem leaks, while I do offer a way to compile without boehm-gc, I only use it to be able to run valgrind for detecting stuff like "invalid read"
15:19:01 <AnMaster> it does have a few mem leaks without boehm-gc
15:19:11 <AnMaster> patches are welcome of course
15:19:14 <ais523> C-INTERCAL's compiler is full of memleaks, but the programs it produces are leak-free as far as I can tell
15:19:40 <AnMaster> ais523, basically it allocates cells in chunks for fungespace, but it throws away references to old chunks
15:20:03 <AnMaster> depending on the garbage collector to remove them if/when the chunk is no longer used
15:20:13 <ais523> would refcounting work?
15:20:27 <AnMaster> ais523, well boehm-gc is a mark-and-sweep
15:20:28 <ais523> (in INTERCAL, the garbage-collector actually affects the semantics of the language)
15:20:47 <ais523> AnMaster: I know, I was just wondering if it was a simple enough problem that refcounting would work instead
15:20:58 <AnMaster> ais523, maybe
15:20:59 <ais523> or whether you have more complicated problems like circular dependencies
15:21:44 <AnMaster> ais523, anyway the funge-space stuff is one of the few thing with a good abstraction around, so should be possible to just replace it, with something else implementing the same basic stuff
15:22:14 <AnMaster> ie, get/set cell, load file, write out to file, get bounds, do wrapping
15:22:39 <ais523> as for how an INTERCAL/Befunge link would work from the Befunge end, I've so far been doing links by implementing INTERCAL flow control operations
15:22:50 <AnMaster> ais523, until recently I even had two different versions, one for befunge93 that used a static array and one with hash library for befunge98
15:22:52 <ais523> that's NEXT, NEXT FROM, COME FROM, RESUME, and FORGET
15:23:08 <AnMaster> ais523, fingerprints are easy to code I think
15:23:10 <AnMaster> or hope
15:23:10 <ais523> some of them would be easy to implement with a fingerprint; COME FROM and NEXT FROM would be harder
15:23:16 <AnMaster> tell me if I need to write more docs
15:23:25 <ais523> because they have an effect even when the IP isn't there
15:23:35 <AnMaster> ais523, I do plan loading of fingerprints with dlopen in future
15:23:39 <AnMaster> to make it even easier
15:23:44 <AnMaster> currently just must compile it in
15:24:09 <AnMaster> also, I depend on POSIX, I don't think it would run under windows or such
15:24:09 <ais523> heh, all the INTERCAL expansions are compile-in, so you'd have to hack the source code to anything you wanted to compile into it anyway
15:24:19 <ais523> either that, or abstract main() away to be a small part of the program
15:24:23 <AnMaster> last I tried it *did* run under freebsd
15:24:40 <AnMaster> ais523, well main, for correct funge98 I need argc/argv
15:24:41 <ais523> (because C-INTERCAL deletes main()s in programs it links against because it already has its own)
15:24:46 <AnMaster> due to y (sysinfo)
15:24:59 <ais523> AnMaster: you can store them in globals
15:25:05 <AnMaster> ais523, I do, in main
15:25:12 <ais523> I'll gladly try to work out a way to pass command-line args around
15:25:31 <AnMaster> ais523, well command line arguments for interpreter options too
15:25:54 <AnMaster> ais523, oh and you probably want to remove -fvisibility=hidden heh that I got in my cmake file for levels above DEBUG
15:26:18 <ais523> AnMaster: what does that do?
15:26:25 <AnMaster> ais523, man gcc? ;P
15:26:35 <AnMaster> basically it hides symbols
15:26:40 <AnMaster> to reduce file size
15:26:45 <ais523> AnMaster: have you seen how long man gcc is? I'll try to find it in the info index, though
15:26:53 <AnMaster> ais523, / searches in man page
15:26:55 <AnMaster> man gcc
15:26:56 <AnMaster> type:
15:27:02 <AnMaster> /-fvisibility
15:27:09 <AnMaster> press n for next match
15:27:09 <AnMaster> :)
15:27:13 <AnMaster> ais523, wait, I *may* do VLA in one place
15:27:15 * AnMaster looks
15:27:45 <AnMaster> ais523, oh yes, but can be worked around quite easily
15:27:49 <AnMaster> just used inside one function
15:27:55 <AnMaster> not passed around or anything
15:28:12 <AnMaster> http://rafb.net/p/hlgy6w58.html
15:28:23 <ais523> AnMaster: in that case it's probably OK
15:28:51 <AnMaster> ais523, also non-boehm-gc code may be suboptimal in places
15:29:09 <AnMaster> http://rafb.net/p/IbsRCM89.html
15:29:11 <AnMaster> that is one example
15:29:38 <ais523> AnMaster: that VLA's fine
15:29:38 <AnMaster> ec_cord is a string that is very fast to append do, provided with boehm-gc
15:29:54 <ais523> how much storing things in globals do you do, by the way, and how much on the stack?
15:30:21 <AnMaster> ais523, well not globals, mostly static, and that isn't global
15:30:35 <ais523> statics are heap storage, so that's good enough
15:30:44 <ais523> well, not exactly heap, but not stack either
15:30:46 <AnMaster> ais523, but well store depends on what you mean, ie storing a pointer to a HUGE object in a static variable
15:30:52 <ais523> I think they have their own static space
15:30:54 <AnMaster> like the funge space
15:31:08 <ais523> and the issue for C-INTERCAL linking is a very simple stack vs. not stack
15:31:21 <ais523> because I merged the C and INTERCAL call stacks together into one massive confusing stack
15:31:25 <AnMaster> if you want to have several funge programs at once you need some substantial redesign
15:31:33 <AnMaster> as in different funge spaces
15:31:40 <AnMaster> if you just want concurrent funge that works of course
15:32:12 <AnMaster> ais523, also I'm working on a draft for a debugging protocol
15:32:20 <AnMaster> would be all ifdef anyway
15:32:23 <AnMaster> for speed
15:32:43 <ais523> the INTERCAL debugger is linked into the object program, which has function calls to the debugger added by the compiler
15:32:55 <ais523> it was the strangest way I could think of to do it while still being practical
15:33:03 <AnMaster> nah I would use tcp socket or unix socket to talk to the debugger
15:33:11 * AnMaster looks for the first (now outdated) draft
15:33:16 <AnMaster> the second isn't yet redy
15:33:26 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf
15:33:52 <AnMaster> oh and another thing
15:34:20 <AnMaster> I plan so substantial redesign of interface in the near future, ie parameter order, to make it more unified
15:34:44 <AnMaster> atm I think StackPush(value, stackpointer) other things take the "me" pointer first
15:34:49 <AnMaster> so I plan to clean that up
15:34:54 <ais523> I'll leave it for a while, anyway, because there's going to be a major release of C-INTERCAL tomorrow
15:35:01 <AnMaster> cool
15:35:02 <ais523> April 1 is a good day to release INTERCAL compilers on
15:35:07 <AnMaster> ais523, note I don't know intercal at all heh
15:35:16 <ais523> partly because nobody believes you until they've seen the code
15:35:18 <AnMaster> well beoynd that you use PLEASE a lot
15:35:22 <ais523> not a lot
15:35:26 <ais523> 1/4 of the time, on average
15:35:30 <AnMaster> but not to much
15:35:50 <AnMaster> ais523, not sure how you plan the integration thing?
15:35:55 <AnMaster> that is how it would work?
15:36:09 <ais523> basically, you add INTERCAL control flow operators as a loaded-by-default fingerprint
15:36:20 <ais523> (the loaded-by-default is so that you can access the Befunge code at all)
15:36:28 <AnMaster> hm
15:36:45 <ais523> there are 6 main control flow commands/objects/etc that you need to implement
15:36:49 <AnMaster> well loaded by default, won't be in my code, but I guess you can implement that yourself
15:37:04 <ais523> AnMaster: yes, it would be a compiler-specific addition
15:37:10 <AnMaster> interpreter
15:37:19 <AnMaster> there is no way you can sanely compile befunge
15:37:38 <ais523> AnMaster: C-INTERCAL is always compiled, but I was planning to go along the bundle-an-interpreter route
15:37:49 <AnMaster> ok
15:37:58 <AnMaster> oh and don't break mycology ;P
15:38:26 <ais523> it shouldn't do, unless it checks for reflections with no fingerprints loaded, but I'm deliberately breaking the spec there
15:38:34 <AnMaster> aye it does check that iirc
15:38:40 <ais523> just like I had to invent some new syntax for the C to INTERCAL link
15:38:50 <AnMaster> mhm
15:39:01 <ais523> besides, I could always invent some sort of specifically-fooling-Mycology loader problem
15:39:07 <ais523> s/problem/program/
15:39:27 <ais523> anyway, the six commands that would need implementing:
15:39:33 <AnMaster> ais523, anyway I'll aim for free standing code to work well, don't blame me if a new feature I add break stuff for you
15:39:35 <AnMaster> just a warning ;P
15:39:41 <ais523> - line label, which is easy in most languages but much harder in Befunge
15:39:48 <ais523> AnMaster: I don't mind at all
15:39:55 <ais523> even I often add new features that break stuff for me
15:39:59 <AnMaster> ais523, also, I do stuff like
15:40:00 <AnMaster> #define VectorCreateRef(a, b) (& (fungeVector) { .x = (a), .y = (b) })
15:40:10 <AnMaster> then I can create a vector on stack in the parameter list
15:40:17 <AnMaster> no idea if that feature would break intercal?
15:40:21 <ais523> doubt it
15:40:31 <ais523> as long as it doesn't stay there between commands
15:40:47 <AnMaster> um, well you would need to hack the main loop anywya
15:40:49 <AnMaster> anyway*
15:40:58 <AnMaster> interpreter.c
15:41:08 <AnMaster> though interpreter.c contains mor
15:41:09 <AnMaster> more*
15:42:44 <ais523> if you want to see some never-before-seen won't-even-run-on-released-compilers-yet INTERCAL, there's http://filebin.ca/xwthjm/continuation.i which is one of the example programs I'll be releasing tomorrow
15:43:09 <AnMaster> um
15:43:17 <AnMaster> hm
15:43:21 <AnMaster> what is it highlightning it as
15:43:38 -!- ehird has joined.
15:43:45 <AnMaster> Database/Progress?
15:43:49 * AnMaster pokes kate
15:44:02 <ais523> AnMaster: Kate recognises INTERCAL as some sort of obscure database script
15:44:11 <ais523> ehird: http://filebin.ca/xwthjm/continuation.i
15:44:16 <ais523> continuations in INTERCAL
15:44:35 <ais523> (the Wikipedia article example doesn't work because it assumes interactive input of commands, impossible in a compiled language)
15:44:35 <AnMaster> bbl food
15:44:44 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
15:44:56 -!- ehird has joined.
15:44:57 <ais523> oh dear, I scared away ehird
15:45:22 <ehird> sowwy
15:45:24 <ehird> :p
15:45:29 <ehird> this is the lame computer
15:45:31 <ehird> the crashy one
15:45:38 <ehird> takes a few startups to get going..
15:46:14 <ais523> ehird: did you see the link I posted?
15:46:53 <ehird> ais523: no, checknig logs now
15:48:22 <ehird> ais523: heh, at 6am...
15:48:31 <ehird> i have finished software projects at 8am
15:48:34 <ais523> I couldn't sleep last night, so I spent the time doing something useful
15:48:37 <ehird> having started working on them 2pm the earlier day
15:48:42 <ais523> I was trying to sleep from about 1am to 5am, though
15:48:44 <ehird> with no sleep in between, of course :-)
15:48:57 <ehird> actually, that's pretty much the only software i DO finish
15:50:01 <ehird> ais523: suggestion - use boehm gc in C-INTERCAL's compiler (not the output)
15:50:03 <ehird> gcc does that
15:50:11 <ehird> but, still keep using free() (well, the gc equivs)
15:50:16 <ehird> it's just there to tidy up every now and then
15:50:18 <ehird> seems to work well in gcc
15:50:32 <ais523> ehird: I can't think of any particular reason why it's leaking, probably just oversights every now and again
15:50:45 <ais523> and the fact that the memory allocation pattern is so complex that Splint can't follow it
15:52:01 <ehird> because i was up late yesterday and the clock said 31st
15:52:08 <ehird> when i woke up today i thought it was internet jackass day
15:52:12 <ehird> i was sorely disappointed
15:53:17 <ais523> ehird: that's tomorrow, which is statistically the most likely day for an INTERCAL compile to be released on
15:53:25 <ais523> mostly because we keep aiming for it deliberately
15:53:32 <ehird> ais523: bah, but that's being KIND on internet jackass day
15:53:40 <ehird> or maybe an intercal compiler is in fact a very horrible thing to give
15:53:41 <ehird> probably.
15:53:45 <ais523> ehird: what's wrong with a little kindness?
15:54:47 <ehird> ais523: insert grouchy commnet
15:54:48 <AnMaster> ais523, that http://filebin.ca/xwthjm/continuation.i
15:54:50 <ehird> *comment
15:54:53 <AnMaster> don't really understand it
15:55:01 <ais523> I doubt many people do
15:55:03 <ehird> AnMaster: INTERCAL code is not easily understandable! Suprise!
15:55:07 <AnMaster> ais523, btw where does C-INTERCAL have it's svn/cvs/whatever?
15:55:11 <ais523> AnMaster: it doesn't
15:55:15 <ais523> I don't own a web server
15:55:20 <AnMaster> oh? cathedral?
15:55:22 <ehird> ais523: you don't need a web server for a distributed system ;)
15:55:30 <ais523> AnMaster: yes, it's cathedral at the moment
15:55:37 <ehird> 'git/hg/darcs init', 'git/hg/darcs add ...'
15:55:49 <ais523> ehird: I don't even have an Internet connection most of the time
15:55:50 <AnMaster> ais523, try lauchpad for bzr, I think there exist similar got git and hg
15:55:58 <ehird> ais523: all of those need no internet connection
15:56:15 <ehird> ais523: they're 100% offline unless you tell them to push/pull
15:56:20 <ais523> the other thing is that I like to do massive breaking changes
15:56:28 <ehird> ais523: that's why branches were invented
15:56:29 <ais523> such as renaming all the variables in the entire program
15:56:34 <AnMaster> ais523, yes that works well with distributed version control
15:56:39 <ehird> make a new branch 'rename-all-variables'
15:56:42 <ehird> do it
15:56:49 <ehird> keep making changes in the main branch if you want
15:56:49 <AnMaster> ais523, yes something like that is what is happening in cfunge atm
15:56:50 <ehird> finally, merge it
15:56:58 <ehird> mostly the VCSs can merge all the changes together
15:57:04 <ais523> can merge algorithms really handle that sort of change?
15:57:11 <AnMaster> ais523, more or less yes
15:57:13 <ehird> ais523: more or less
15:57:17 <ehird> it will come into conflicts ofc
15:57:21 <AnMaster> ais523, maybe a few conflicts
15:57:23 <AnMaster> not much
15:57:24 <ehird> but it can start up a nice graphical tool to let you select what you want
15:57:32 <ehird> so it's mostly point-n-click for when it can't work it out
15:57:36 <ais523> do any of them also run on DOS?
15:57:41 <AnMaster> -_-
15:57:47 <ais523> I do development there too, for the Windows version of C-INTERCAL
15:57:52 <ehird> ais523: git runs via cygwin but i don't think cygwin runs on DOS
15:57:56 <ehird> I think darcs might run on DOS
15:58:04 <ehird> hg is written in Python, so if you can get a Python to run on DOS it's likely
15:58:08 <ais523> (targetting DOS + POSIX manages to cover most of the world's commonly used OSs)
15:58:09 <AnMaster> ehird, doesn't darcs need haskell?
15:58:19 <ehird> AnMaster: You can cross-compile
15:58:23 <AnMaster> hm
15:58:23 <ehird> Or get a binary
15:58:24 <ais523> AnMaster: Haskell can be compiled into C IIRC
15:58:29 <ehird> ais523: Into C? no
15:58:32 <ehird> haskell isn't interpreted
15:58:37 <ehird> There are interpreters, but it's mainly compiled to native code
15:58:45 <ehird> Most things use GHC extensions, including darcs.
15:58:49 <ehird> GHC compiles into native code via C--
15:58:54 <ehird> (C-- is related to the GHC project, same people)
15:58:58 <ais523> ah, so it's bundle-an-interpreter-style compilation
15:59:03 <ehird> ais523: Uhh, no?
15:59:06 <ehird> Haskell has no 'eval'
15:59:08 <ehird> It is 100% compiled
15:59:18 <ais523> ehird: bytecode interp, not Haskell interp?
15:59:19 <ehird> It just seems dynamic because of all the type inferrence
15:59:27 <ehird> ais523: No. C-- then compiles to native code
15:59:37 <ais523> OK
15:59:39 <ehird> Haskell -> Core (GHC's internal functional language) -> C-- -> native
15:59:44 <ais523> that's how I thought it worked, but you were confusing me
15:59:50 <ehird> sorry:)
15:59:56 <marshmallows> GHC can generate C code
15:59:58 <ehird> i'll go and ask in #haskell about darcs
16:00:00 <ehird> marshmallows: If you tell it to
16:00:05 <ehird> Funny thing about GHC's C backend:
16:00:09 <ehird> It requires a perl script.
16:00:19 <ehird> This perl script looks at the assembly output of ghc, and turns tail calls into JMPs
16:00:28 <marshmallows> cool
16:00:30 <ehird> This perl script is a 'literate perl' script
16:00:38 <ehird> And has to be processed to remove the comments.
16:00:42 <AnMaster> oh my
16:00:43 <ehird> It is called the Evil Mangler.
16:00:44 <ais523> =pod
16:00:45 <ais523> =cut
16:00:49 <ehird> ais523: No, it's custom
16:00:53 <AnMaster> ehird, Knuth infected?
16:00:56 <AnMaster> ;)
16:00:58 <ais523> why not do it the standard way?
16:01:01 <ehird> AnMaster: Literate Haskell is popular
16:01:09 <ehird> ais523: because it's Evil, and iirc very old
16:01:10 <AnMaster> yes I like LaTeX, but I don't like literate programming
16:01:22 <ehird> GHC was around before the Monad typeclass came about.
16:01:24 <marshmallows> That's totally awesome ehird
16:01:35 <ehird> There's even GHC code which uses monads without using the Monad typeclass because it wasn't invented yet
16:01:38 <marshmallows> I never knew the evil mangler was in perl
16:01:53 <ehird> ais523: Those continuations are really concise, btw. Impressive.
16:02:03 <ehird> INTERCAL: Flexible, and concise1
16:02:04 <ehird> *!
16:02:08 <ehird> it's like Lisp++++
16:02:29 <ais523> ehird: especially as CREATE has some similarities to macro definition, but the C-INTERCAL version is rather limited at the moment
16:02:51 <ehird> [16:02] <Lycurgus> "DOS" ?
16:02:52 <ehird> [16:02] <Lycurgus> do you mean Windows?
16:03:00 <ehird> ais523: which DOS version?
16:03:15 <ais523> I mainly test it on NTVDM, as that's where it'll be run in practice
16:03:21 <AnMaster> um
16:03:28 <ais523> although I have DOS system disks for versions 4 and 6 knocking around somewhere
16:03:35 <ais523> AnMaster: yes, NTVDM is crap
16:03:51 <AnMaster> I got to watch the fun, going to join #haskel
16:03:57 <AnMaster> ll*
16:04:01 <ais523> for some reason, tar crashes it 100% of the time and autoconf crashes it about 30% of t he time
16:04:01 <ehird> ais523: these people are retarded
16:04:02 <ehird> [16:03] <quicksilver> he's talking about the windows command shel
16:04:21 * AnMaster watches both side with amusement
16:04:30 <AnMaster> ais523, you know NTVDM is gone in 64-bit windows
16:04:39 <ais523> does anything replace it?
16:04:42 <ehird> AnMaster: ais523 still supports systems with 8mb of ram.
16:04:48 <ehird> I don't think 64-bit is on the horizon ;)
16:05:01 <AnMaster> ais523, no x86_64 system that has gone into 64-bit mode can run 16-bit code any longer
16:05:06 <AnMaster> you need something like dosbox then
16:05:07 <ais523> I've heard that the Vista version of NTVDM is actually better than the XP version, but have never had the opportunity or inclination to check
16:05:36 <AnMaster> ais523, oh and that reminds me, cfunge by default use 64-bit integers for it's data
16:05:43 <AnMaster> but you can select 32-bit at compile time
16:05:48 <AnMaster> it need to be at least 32-bit
16:05:53 <AnMaster> or stuff *WILL* break
16:06:11 <AnMaster> fingerprints will fail and everything will come crashing down
16:06:14 <ais523> of course
16:06:27 <ais523> In unrelated news, I've actually read the API for DOS 1
16:06:30 <AnMaster> I have toyed with the idea of 128 bits however
16:06:32 <ais523> it didn't even support directories
16:06:38 <AnMaster> using gcc __int128_t iirc
16:06:44 <AnMaster> haven't tried it yet
16:06:47 <AnMaster> but easy to test
16:07:02 <ehird> oh well..
16:07:04 <ehird> darcs is out of the qusetion
16:07:06 <ehird> ais523: Try git.
16:07:12 <ehird> AnMaster: Before you but in..
16:07:18 <ehird> I don't think your precious bzr works on 16bit systems.
16:07:28 <AnMaster> I was going to say git works on DOS
16:07:32 <AnMaster> doesnt'*
16:07:38 <ehird> i think you could get it to
16:07:38 <AnMaster> it hardly works on windows
16:07:40 <ehird> through some posix stuffs
16:07:42 <AnMaster> so dos...
16:07:44 <AnMaster> huh
16:07:48 <ehird> hmm wait
16:07:51 <ehird> I'm going to try python
16:07:56 <ehird> and ask which version of python will run on DOS
16:08:01 <ehird> #python for laffs
16:08:10 <ais523> DJGPP generally does a very good job of pretending to be POSIX, given the circumstances it has to deal with
16:08:17 <ehird> ais523: wait, that's a good point
16:08:28 <ehird> ais523: http://git.or.cz/ maybe you could give it a try
16:08:28 <ais523> although I recently discovered that ulimit is implemented the same way as fork
16:08:44 <ais523> as in, always fail but with a plausible error message that /could/ have happened in practice
16:09:19 <ehird> ais523: btw, git is a little lower level as far as merging goes
16:09:21 <AnMaster> hm can't you compile haskell to C, and I'm quite sure GCC can compile to 16-bit, I even used gcc for 8-bit
16:09:22 <AnMaster> ehird, ^
16:09:27 <ehird> it WILL do the auto merging thing
16:09:36 <ehird> but if it fails you'll have to start the graphical tool yourself
16:09:37 <ehird> :p
16:09:55 <AnMaster> ehird, graphical tool? dos?
16:09:58 <ehird> AnMaster: but the generated c code won't work ..
16:10:00 <AnMaster> ERR_NOTREALISTIC
16:10:05 <ehird> AnMaster: Uhm, he doesn't develop solely on DOS
16:10:10 <AnMaster> ehird, oh, why won't it work?
16:10:18 <ehird> AnMaster: because it's low-level :)
16:10:25 <ehird> closures and thunks and all that mean it's pretty hack
16:10:26 <ehird> y
16:10:29 <AnMaster> you mean, depends on endianness?
16:10:30 <AnMaster> and such?
16:10:39 <ehird> oh looky..
16:10:42 <ehird> darcs WILL work, probably
16:10:44 <ehird> via go32
16:10:51 <AnMaster> go32?
16:10:58 <ais523> DOS 32-bit extender
16:11:00 <AnMaster> is this about unreal mode hack thing?
16:11:04 <ais523> yes
16:11:08 <AnMaster> oh my
16:11:09 <ais523> it makes I/O incredibly slow
16:11:09 <ehird> AnMaster: it should make ghc work
16:11:11 <ehird> and so darcs
16:11:24 <ehird> ais523: darcs is molasses slow anyway so you shouldn't worry!
16:11:27 <ehird> usable, but slow :)
16:11:28 <AnMaster> ais523, that is one thing, I don't know if cfunge will work on 16-bit or even big endian
16:11:30 <ehird> very usable in fact
16:11:33 <ehird> it's highly user friendly
16:11:39 <AnMaster> in fact I have doubts about big endian
16:11:43 <ehird> & is based on a Theory of Patches written by a physicist
16:12:07 <AnMaster> ais523, some hacks I need to do for the floating point fingerprints may not work on big endian
16:12:09 <AnMaster> not sure
16:12:14 <AnMaster> typedef union u_doubleint {
16:12:15 <AnMaster> double d;
16:12:15 <AnMaster> struct { int32_t high; int32_t low; } i;
16:12:15 <AnMaster> } doubleint;
16:12:17 <AnMaster> yes sucks
16:12:27 <ais523> oh, and if you leave a program producing too much output without pressing a key, the program slows down to very slow speeds
16:12:27 <AnMaster> but I need to for FPDP
16:12:33 <ais523> but I'm not sure if that's a bug in go32 or NTVDM
16:12:42 <AnMaster> ais523, tried dosbox?
16:13:05 <ais523> AnMaster: no
16:13:09 <AnMaster> also if you run it under NTVDM, why not just run the version control under windows, as you already use windows then?
16:13:34 <ais523> I was just teasing really, as I can always run it on Linux and copy the files across via USB
16:13:39 <AnMaster> also does C-INTERCAL work on x86_64 linux?
16:13:45 <ais523> AnMaster: it should do
16:13:50 <ehird> C-INTERCAL probably works on the C64
16:13:52 <ais523> might need to change a define somewhere
16:13:53 <AnMaster> ais523, eh, no network for dos?
16:14:05 <ais523> AnMaster: nor Windows, nor Linux more than half the time
16:14:24 <AnMaster> yeah but LAN I mean
16:14:37 <ais523> AnMaster: don't have that either
16:14:38 <AnMaster> or if you use qemu or such for windows, local simulated network
16:14:48 <ais523> the Windows 95 box won't shut down properly if it's connected to a network
16:14:50 <AnMaster> ais523, right, distributed version control is for you
16:14:57 <ais523> and my only Ethernet cable's about 50 cm long
16:14:58 <ehird> yeah, darcs seems the right one
16:15:01 <AnMaster> windown 95? :(
16:15:02 <ehird> since if you're going to change every variable name
16:15:05 <ehird> then wanting to merge
16:15:09 <ehird> you need something that's really really clever at merging
16:15:13 <ehird> even if it's a little slow in the process
16:15:33 <AnMaster> yeah darcs I guess
16:15:54 <AnMaster> ehird, can you push to a usb memory with darcs?
16:16:01 <AnMaster> seems like ais523 need that
16:16:04 <ehird> AnMaster: push == 'cp .darcs'
16:16:09 <ehird> as a last resort.
16:16:13 <AnMaster> ok true..
16:16:14 <ais523> I seriously doubt it would be a problem
16:16:17 <ehird> yeah
16:16:19 <ehird> just copy over the repository
16:16:29 <AnMaster> ehird, except, windows HATE things starting with .
16:16:31 <ehird> ais523: each copy, branch etc you have contains the whole history for the whole repository
16:16:33 <ehird> AnMaster: err, wait
16:16:35 <ehird> it's called _darcs
16:16:36 <ehird> just because of that
16:16:39 <AnMaster> ie, you can create them in some apps, but it won't work in others
16:16:45 <ais523> ah yes, 8.3 filenames
16:16:49 <ehird> my mistake
16:16:50 <ais523> in DOS it would be _darcs.
16:16:52 <AnMaster> ehird, ah, but will it use 8.3 filenames everywhere?
16:16:56 <ehird> ais523: no, it's _darcs everywhere
16:17:05 <AnMaster> ais523, it is a directory I suspect
16:17:06 <ais523> DOS requires at least one . in a filename
16:17:07 <ehird> AnMaster: _darcs/ should be 8.3-safe
16:17:13 <AnMaster> ais523, not a file
16:17:17 <ais523> even a directory name, but that's normally hidden from the user
16:17:18 <ehird> _darcs is a directory
16:17:19 <ais523> by the OS
16:17:22 <AnMaster> oh
16:17:25 <AnMaster> interesting
16:17:26 <ais523> directory names follow the same rules as filenames
16:17:38 <ais523> so I call the INTERCAL install directory ick-0.28
16:17:42 <ehird> ais523: darcs should work fine if you can get it to compile
16:17:50 <ais523> which looks perfectly natural, but technically speaking .28 is the extension
16:18:07 <AnMaster> ais523, not when extracted on linux or so
16:18:21 <ehird> ais523: btw, with a dvcs, transitioning from cathedral to bazarr is simple
16:18:27 * ais523 downloaded the source for darcs
16:18:31 <ehird> the 'let everyone see the source' part is trivial
16:18:40 <ehird> you just 'darcs push' onto a public server
16:18:50 <ehird> letting people submit patches is built in--
16:18:53 <ehird> 'darcs send' goes through email
16:18:55 <ehird> then you can 'darcs apply'
16:19:08 <ehird> and, other people can 'darcs get' your public repository, and fork it
16:19:16 <ehird> then if you want you can 'darcs pull' from theirs and merge their changes at any point
16:19:24 <ehird> but, if you want, you can just keep track of your own changes
16:19:25 <AnMaster> ais523, one thing, I got no clue how cfunge would work out under DOS, in fact I suspect it won't work on windows even. it depends on recent POSIX in many case, as in POSIX 2001
16:19:27 <ehird> and publish a tarball
16:19:55 <marshmallows> everyone here hsould publish some unreleased bit of code
16:19:58 <ais523> AnMaster: I don't support all features on all platforms
16:20:05 <AnMaster> ais523, ah good for you
16:20:08 <ais523> marshmallows: I did already, or did you want something else?
16:20:17 <marshmallows> I missed it
16:20:23 <AnMaster> ais523, I only test cfunge on gentoo linux and freebsd, because that is all I got
16:20:30 <AnMaster> x86 and x86_64
16:20:36 <AnMaster> no clue about how it works on other stuff
16:20:46 <AnMaster> I hope it works as I use size_t and so on where it should be used
16:20:49 <ehird> marshmallows: ais523 posted continuations in intercal
16:20:52 <ehird> well, C-INTERCAL
16:20:55 <ehird> since he added an extension mechanism
16:21:02 <ehird> http://filebin.ca/xwthjm/continuation.i
16:21:35 <ais523> CLC-INTERCAL has a CREATE statement too, which is actually used to implement the entire compiler
16:21:45 <ais523> but the statement you're creating is written in bytecode not INTERCAL
16:21:55 <AnMaster> ais523, another thing: you will need to have a different fingerprint if you do stuff like pre-loading custom fingerprint
16:22:07 <AnMaster> eh
16:22:12 <AnMaster> different handprint
16:22:14 <ais523> different handprint, you mean
16:22:17 <AnMaster> yeah
16:22:19 <AnMaster> exactly
16:22:27 <ais523> it would be
16:22:33 <AnMaster> ais523, also, a custom fingerprint can be overridden, so I guess things may break? also easy to unload a fingerprint
16:22:37 <AnMaster> just unload NULL
16:22:38 <ehird> hahahah, i love smalltalk
16:22:47 <ehird> i just started up yesterday's image i was developing a seaside wiki
16:22:49 <AnMaster> that will unload the top item from every opcode stack
16:22:52 <ehird> and i loaded my browser from history
16:22:56 <ehird> and the session is EXACTLY as i left it
16:23:10 <ehird> smalltalk is infectious, it magically makes everything running on it suspendable & resuable
16:23:11 <ehird> :p
16:23:12 <ehird> *resumably
16:23:26 <AnMaster> ais523, maybe you want to provide some hard coded specific ones in the range ASCII 127-255, unlike fingerprints
16:23:37 <AnMaster> depends on what you need/want
16:23:37 <ais523> that could be an idea
16:23:46 <ais523> hmm... ABSTAIN and ONCE could be quite useful in Befunge
16:24:04 <ais523> COME FROM/NEXT FROM/labels would have to read data from the playfield somehow, though
16:24:17 <AnMaster> ais523, "However, a Funge-98 interpreter may also expose any number of proprietary instructions above ASCII 127 or below ASCII 0."
16:24:24 <AnMaster> that you could exploit
16:24:39 <ais523> INTERCAL uses various characters above 127 anyway
16:24:42 <ais523> at least in some character sets
16:24:51 <AnMaster> ais523, hm?
16:25:07 <AnMaster> "Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.) The Funge character set is 'display-independent.' That is to say, character #417 may look like a squiggle
16:25:08 <AnMaster> on system Foo and a happy face on system Bar, but the meaning is always the same to Funge, 'character #417', regardless of what it looks like."
16:25:12 <AnMaster> "In other words, what Funge characters look like on a particular computer or OS depends entirely on that computer or OS."
16:25:14 <ais523> with Princeton syntax, then you either need Latin-1, Unicode, or the ability to overpunch
16:25:30 -!- shinkuzin_ has joined.
16:25:38 <Deewiant> AnMaster: maybe I should add punctuation there: "cFP outputs - never mind, P reflects" i.e. P didn't output anything, reflected instead
16:25:41 <ais523> (backspace is part of the character set in INTERCAL, and used as a compose character)
16:25:46 <AnMaster> Deewiant, yeah
16:26:03 <Deewiant> AnMaster: but then, you have the source for your interpreter so you know that it reflects and doesn't output anything
16:26:14 <AnMaster> ais523, um you know, I will watch your stuff with interest, because I think it is crazy
16:26:17 <AnMaster> ;P
16:26:36 <ais523> AnMaster: craziness is what it's all about with INTERCAL
16:26:45 <ais523> or to be precise being unlike any other language
16:26:46 <AnMaster> Deewiant, indeed, but was confusing me, as in "oh no, yet another cryptic error"
16:26:55 <ais523> although it manages to subtly parody most languages you're likely to have heard of
16:26:59 <AnMaster> as I started implementing A
16:27:22 <AnMaster> I generally do the instructions from A-Z heh
16:27:37 <AnMaster> ais523, even on befunge?
16:27:52 <ais523> it doesn't have much in common with Befunge yet
16:27:55 <AnMaster> also I don't see how the the interface would work
16:27:58 <ais523> although the threading model is similar
16:28:07 <ais523> AnMaster: are you aware of the concept of a COME FROM?
16:28:31 <ais523> that's the main INTERCAL control flow statement
16:28:35 <AnMaster> ais523, I know it exists, and what it does, but well I do not wish to be affiliated with it ;P
16:28:50 <ais523> well, my idea was that you could drop them into your Befunge code
16:29:06 <marshmallows> wow.. I can't read intercal at all though
16:29:11 <AnMaster> ais523, in cfunge there are NO goto, except in library code, ie code I took from gnulib (like GNU's getline()
16:29:23 <AnMaster> ais523, maybe hash library got some goto, not sure
16:29:30 <ehird> marshmallows: barely anyone can
16:29:33 <AnMaster> but no code I wrote has any goto
16:29:51 <ais523> well, you use function calls, don't you?
16:29:55 <ais523> that's NEXT in INTERCAL
16:29:59 <ehird> i think ais523 and the CLC-INTERCAL maintainer are the only people who can program INTERCAL proficiently
16:30:05 <ais523> ehird: wrong
16:30:06 <AnMaster> ais523, well functions I use. but I try to mark stuff as inline ;)
16:30:08 <ehird> maybe a few others
16:30:15 <ais523> maybe about 10 by my count
16:30:22 <ais523> remember that oerjan wrote an Unlambda interp in it
16:30:39 <ehird> ais523: OK, but I assume it took him ages and a lot of pain
16:30:46 <ehird> I mean, you wrote that continuation library in a day
16:30:56 <ais523> ehird: it wasn't very difficult
16:31:02 <ais523> most of the groundwork was there already
16:31:08 <AnMaster> ais523, but still I would like to know more about how the befunge <-> intercal interface would work
16:31:18 <AnMaster> something like evalasbefuge(some code)?
16:31:20 <AnMaster> or what?
16:31:23 <ais523> OK, lets use printable characters for now
16:31:30 <ais523> you write an INTERCAL program, and a Befunge program
16:31:37 <AnMaster> right
16:31:49 <ais523> the compiler creates a combined executable using the compiled INTERCAL, and Befunge with a bundled interp
16:32:04 <AnMaster> mhm ok, cfunge is in no way small though
16:32:08 <ais523> then the IP can move from the INTERCAL code to the Befunge code and back using several techniques
16:32:37 <ais523> you put markers in the code, like COME FROMs, which enable programs to steal control from each other or to give control to each other
16:32:37 <AnMaster> 71K for a dynamically linked binary at -O3, stripped
16:32:46 <ais523> AnMaster: that's not too bad
16:33:08 <ais523> although I'd abstract the Befunge interp into the runtime libraries to avoid bloating things, probably
16:33:15 <AnMaster> ais523, also likely to grow, as I add more fingerprints
16:33:21 <ais523> however, the runtime's statically-linked at the moment
16:33:29 <ais523> and I don't care too much about output file size
16:33:40 <ais523> INTERCAL's pretty resource-hungry as it is
16:33:53 <AnMaster> ais523, the binary in question is one without boehm-gc so just libm.so.6 and libc.so.6
16:33:54 <ais523> although with many of the advanced features turned off C-INTERCAL can be quite lean too
16:35:05 <AnMaster> ais523, not sure about heap size, but I normally slightly favour speed rather than memory usage when I have to choose
16:36:14 <ais523> C-INTERCAL has the -F optimisation, which analyses your program to see if it's deterministic and terminating (the termination check's achieved by running it for 4 billion threading ticks to see if it's ended), and if it is just records the output it produces and gives you a shell script as the 'executable'
16:36:22 <ais523> it was added for a joke, of course
16:36:37 <AnMaster> XD
16:36:44 <AnMaster> but that ignores file IO?
16:36:54 <AnMaster> or any input in fact
16:36:54 <ais523> there is no file IO in INTERCAL core
16:37:06 <ais523> and input's detected as marking the program as nondeterministic
16:37:33 <ais523> there's probably a hole in it somewhere, thoguh
16:38:31 <AnMaster> ais523, according to massif the heap profiler, part of valgrind, the binary I mentioned above uses 8 MB memory at most when running mycology
16:38:37 <AnMaster> note that cell size was 32-bit in it
16:38:41 <ehird> ais523: you should optimize all constant bits
16:38:41 * AnMaster tries with -DUSE64
16:38:48 <ehird> try to analyze which bits don't utilize non-deterministic things
16:38:51 <ehird> and printf-them
16:38:55 <ais523> ehird: constants are a moving target in INTERCAL
16:39:03 <ehird> ais523: yeah, but you could do some kind of static analysis
16:39:05 <ais523> you can even assign to them if you have the right compiler options set
16:39:14 <ais523> ehird: I do do some static analysis
16:39:32 <ais523> mostly to see when multiple commands can be strung together in a row without needing full guarding
16:39:46 <ais523> but checking to see if code always does the same thing is really hard
16:39:57 <ehird> ais523: run it a few times
16:39:57 <ehird> ;)
16:40:01 <marshmallows> that dd/sh stuff is so cool
16:40:07 <ehird> http://www.google.com/search?hl=en&client=firefox-a&rls=com.ubuntu%3Aen-GB%3Aofficial&hs=Hog&q=%22HTTP+considered+harmful%22&btnG=Search <-- this should have more results
16:40:11 <ais523> marshmallows: yep
16:40:28 <AnMaster> ais523, now this is odd, with 64-bit cells it uses 8.474 MB, so most data isn't cell data? then wtf is it
16:40:35 <ais523> ehird: most INTERCAL code is /designed/ to have exceptional cases
16:40:44 <ais523> AnMaster: pointers? Malloc minimum block sizes?
16:40:55 <ehird> ais523: use a fuzzing program
16:41:07 <ehird> (generates craploads of random data, shoves it at the app at high speeds)
16:41:09 <AnMaster> ais523, hm, pointers maybe yes, the funge-space code is kind of messy in that aspect
16:41:31 <ehird> http://en.wikipedia.org/wiki/Fuzz_testing
16:41:35 <AnMaster> valgrind doesn't want to work on -m32 binaries however, so don't know
16:42:13 <ais523> ehird: you just know that people will use obscure features like symlinked variables in order to confuse the fuzz tester
16:42:16 <AnMaster> ehird,
16:42:18 <AnMaster> Your search - "gopher considered harmful" - did not match any documents.
16:42:19 <AnMaster> :)
16:42:26 <AnMaster> therefore gopher is better than http
16:42:28 <AnMaster> :D
16:42:31 <AnMaster> logic is great
16:42:52 <ehird> ais523: isn't that a good thing?
16:42:59 <ehird> a program that behaves differently on -FF
16:43:16 <AnMaster> <ais523> ehird: you just know that people will use obscure features like symlinked variables in order to confuse the fuzz tester
16:43:19 <ais523> ehird: I tend to consider optimisation changing the behaviour of a program to be a bug
16:43:21 <AnMaster> wtf is a symlinked variable?
16:43:31 <ais523> AnMaster: it's normally called operand overloading
16:43:37 <AnMaster> oh C++?
16:43:44 <ais523> AnMaster: that's operator overloading
16:43:52 <AnMaster> hm
16:43:59 <AnMaster> what is operand overloading then?
16:44:06 <ais523> Operand overloading: if I do .1/.2 then all references to .1 from then on actually refer to .2
16:44:27 <ehird> ais523: if the magic text is in the program output -F already breaks
16:44:37 <AnMaster> ais523, eww
16:44:38 <ais523> so in the continuation code, for instance, if I assign to or read :1601 I'm actually assigning to or reading the first arg of the CREATE statement
16:44:39 <ehird> sketch for an intercal program:
16:44:42 <AnMaster> ais523, what languages got that?
16:44:46 <ais523> ehird: no it doesn't, I grep for the magic text
16:44:50 <ais523> AnMaster: just INTERCAL
16:44:51 <ehird> output the magic text, output 'echo "Hello, world!"'
16:44:54 <AnMaster> ah
16:44:58 <ais523> although unification in Prolog is vaguely similar
16:44:58 <ehird> -F and no -F are different
16:45:01 <ehird> one is:
16:45:07 <ehird> <magic>echo "Hello, world!"
16:45:08 <ehird> one is:
16:45:16 <ehird> Hello, world! <UNEXPECTED COMMAND <magic>>
16:45:28 <ais523> ehird: I just use the non--F executable if I spot the magic word in the output
16:45:37 <AnMaster> eh?
16:45:39 <AnMaster> magic?
16:45:46 <ais523> AnMaster: end of a shell heredoc
16:45:47 <ehird> AnMaster: it generates:
16:45:50 <ehird> cat <<-F*ICK*
16:45:51 <ehird> ...
16:45:53 <AnMaster> xxyz? (wild guess)
16:45:54 <ehird> F*ICK*
16:45:55 <ehird> or similar
16:46:01 <AnMaster> ehird, ah
16:46:03 <AnMaster> that
16:46:20 <ais523> AnMaster: 'twould be xyzzy, but actually I use ickTERM with some weird capitalisation mix followed by a long string of punctuation
16:46:31 <AnMaster> ah
16:46:36 <AnMaster> ais523, why heredoc at all?
16:46:40 <ais523> on the basis that anyone who actually generates output to produce that likely deserves what they get
16:46:44 <ais523> AnMaster: twisted optimisation technique
16:46:47 <AnMaster> ais523, heredoc actually create a temp file
16:46:50 <AnMaster> in bash
16:46:55 <ehird> AnMaster: bash sucks, suprise
16:46:55 <AnMaster> when it reads the heredoc
16:46:58 <ehird> zsh &co don't do that
16:46:59 <ehird> they are Sane
16:47:24 <ais523> AnMaster: DOS implements pipes using tempfiles between the commands
16:47:32 <AnMaster> :(
16:47:43 <ais523> so trying to cut off a pipe from an infinite loop using head actually causes your computer's disk to fill up
16:47:54 <AnMaster> ais523, I can tell you right away that there is *no way* you would get cfunge to run on DOS
16:48:12 <ais523> AnMaster: oh dear, you might cause me to take that as a challenge
16:48:30 <AnMaster> ais523, of course if you rewrite large parts it may work
16:48:54 <ais523> AnMaster: even Emacs runs on DOS nowadays, and it's terribly bloated
16:48:58 <AnMaster> ais523, but nothing will stop my code from depending on POSIX when I feel that I have a reason to
16:49:03 <AnMaster> ais523, :(
16:49:06 <ais523> AnMaster: POSIX dependencies are fine
16:49:26 <ais523> DJGPP implements all of the POSIX functions, by returning plausible output, or when that's impossible, plausible error codes
16:49:44 <ais523> so fork is basically implemented as pid_t fork(void) {errno=ENOMEM; return -errno;}
16:50:32 <ehird> languages are so broken
16:50:34 <ehird> they have no call/cc
16:50:43 <AnMaster> ais523, I may decide to depend on a working fork if you try to make it run on dos ;)
16:50:54 <AnMaster> ehird, what languages?
16:51:05 <ais523> AnMaster: then I'd link it up to a custom version of the INTERCAL threader just to annoy you
16:51:09 <AnMaster> ais523, can DJGPP do pthreads?
16:51:13 <ais523> AnMaster: no idea
16:51:30 <AnMaster> ais523, because one thing I pondered is a fingerprint for "true" concurrency
16:51:36 <AnMaster> as in really using threads
16:51:39 <AnMaster> just a wild idea
16:51:44 <AnMaster> along with the ipv6 sockets one
16:51:52 <AnMaster> there is a fingerprint for ipv6 sockets
16:51:58 <ais523> AnMaster: then you'd lose the thread speed guarantees
16:51:58 <AnMaster> SOCK and/or SCKE
16:52:05 <AnMaster> ais523, yeah
16:52:20 <ais523> my C-INTERCAL continuation program depends on them
16:52:22 <AnMaster> ais523, but a fingerprint for such threads, if anyone wants
16:52:30 <AnMaster> would have compare and exchange and so on of course
16:53:44 <ais523> AnMaster: INTERCAL has ONCE and AGAIN, which are some of the most flexibile thread-sync mechanisms I've seen yet
16:54:03 <AnMaster> how do they work?
16:54:07 <ais523> with computed ABSTAIN, ONCE and AGAIN, there are several mutexes, spinlocks, and semaphores in the INTERCAL continuation program
16:54:30 <ais523> AnMaster: DO COMMAND ONCE changes into DON'T COMMAND AGAIN when executed, atomically with its execution
16:54:35 <ais523> so only one thread is allowed through it
16:54:44 <ais523> and REINSTATE changes it back to the original form
16:54:53 <AnMaster> ais523, yes right, but that would not allow multi cpu
16:55:14 <ais523> AnMaster: the semantics work fine with multi CPU, just that implementing it might be a bit tricky
16:55:17 <AnMaster> that is the reason I'm interested in a fingerprint for "real" threads
16:56:17 <AnMaster> basically: since everyone is going multicore today, befunge's t is no longer effective, therefore I add this fingerprint to make befunge attractive to the enterprise market ;)
16:56:19 <AnMaster> or something like that
16:57:39 <ehird> AnMaster: tons of languages
16:57:45 <ais523> AnMaster: that sounds just like the sort of justification people use for INTERCAL features
16:57:46 <AnMaster> hm
16:57:51 <AnMaster> ais523, indeed heh
16:57:59 <AnMaster> ais523, take a look at the TOYS fingerprint
16:58:05 <AnMaster> you will feel at home
16:58:09 <ais523> AnMaster: I have done
16:58:48 <ehird> my firefox is borken
16:58:56 <AnMaster> ais523, some of those I can see the cause of the names for, but well, M - kittycat I just don't get
16:58:57 <ehird> sometimes when loading a page it finishes loading but does not render the new page
16:58:59 <ehird> and stays at the old one
16:59:02 <ehird> but e.g. can't select text
16:59:03 <AnMaster> ehird, try konqueror
16:59:04 <ehird> and links don't work
16:59:09 <ehird> even though the text cursor appears
16:59:16 <ehird> AnMaster: unacceptable, it doesn't work with anything
16:59:18 <ais523> AnMaster: it's a cat's ears
16:59:32 <AnMaster> hm
16:59:42 <ais523> konqueror's really good on some sites, but it screws up on anagolf for some reason
16:59:44 <AnMaster> ais523, well the middle of my M doesn't touch the base of the line
16:59:51 <ehird> AnMaster: its cats ears + top of head
16:59:53 <ais523> it's fine on first viewing, but deteriorates on refreshes
16:59:57 <ehird> besides
17:00:03 <AnMaster> ais523, also: S - chicane U - tumbler
17:00:07 <ehird> maybe princeton's M looked ok
17:00:11 <AnMaster> I don't even know what a "chicane" is
17:00:12 <ehird> their U was probably more spiky
17:00:20 <ais523> AnMaster: a bend in a road shaped like the letter S
17:00:24 <AnMaster> ah
17:00:29 <AnMaster> ais523, and what is a tumbler?
17:00:33 <ehird> ais523: so, a chicane is a bend in a road shaped like a chicane
17:00:34 <AnMaster> "V - dixiecup" yet another odd one
17:00:39 <ais523> AnMaster: it's a glass you drink water out of
17:00:43 <AnMaster> ah I see
17:00:43 <ais523> I don't get the V, though
17:00:50 <ais523> the character's called 'book' in INTERCAL
17:01:36 <ehird> ais523: look at it on the side
17:01:41 <ehird> it's a slightly-open book
17:01:42 <ehird> like
17:01:45 <ehird> put a book down
17:01:48 <ehird> but it won't fully close
17:02:03 <ais523> ehird: I understand why 'book', just not why 'dixiecup'
17:02:04 <ehird> thingy.
17:02:11 <ehird> ah
17:02:21 <ehird> http://www.ideafinder.com/history/inventions/dixiecup.htm
17:02:21 <ehird> ?
17:02:32 <ehird> made to look like a flimsy plastic cup
17:02:33 <ehird> i guess
17:06:19 <ehird> ais523: http://acarol.woz.org/ When will C-INTERCAL work on this?
17:06:41 <ehird> Oh, and are mirrors for C/CLC-INTERCAL appreciated?
17:06:47 <ehird> i have a whole VPS server
17:06:48 <ehird> being useless
17:07:32 <ais523> ehird: about that link: when it becomes Turing-complete, I'll be on the task
17:07:48 <ehird> ais523: Who needs TC?
17:08:05 <ais523> ehird: yes for C-INTERCAL, although it's the CLC-INTERCAL maintainer who hosts both compilers and mirrors them too, you might want to ask them
17:08:48 <ehird> ais523: Oh, and if you eve do need hosting for a darcs repository or similar, the same server will still be sitting around doing nothing
17:09:06 <ehird> (I consider eso-std.org and elliotthird.org close to 'nothing' as they will haev basially no overhead :p)
17:09:28 <ais523> ehird: it's probably also worth pointing out that your mirroring capabilities will be nowhere near Debian's
17:09:28 <ehird> ais523: Hmm. parser.y looks like Perl.
17:09:44 <ehird> ais523: Perhaps, but my updating capabilities will far exceed it.
17:09:56 <ehird> Also, when e.g. patches are released I'd probably make a pre-patched version for convenience
17:10:29 <ais523> ehird: it's Bison
17:10:35 <ais523> also meant to be yacc-compatible
17:10:44 <ais523> it's probably all the % signs that are throwing you
17:10:53 <ais523> ehird: Debian do that too
17:11:03 <ehird> ais523: no, the indentation style and the $x stuff
17:11:09 <ehird> ais523: but do they update regularly :)
17:11:17 <ais523> ehird: yes
17:11:19 <ehird> Besides, debian do stuff to their packages.
17:11:21 <ais523> within days, often
17:11:28 <ehird> I just mirror stuff.
17:11:36 <ais523> and the Debian repos host the original, and a patch to Debianise it
17:11:41 <ais523> so you can download either separately
17:11:44 <ehird> ais523: Days, bah. I offer 3 days max wait ;)
17:11:59 <ais523> ehird: then they'd have been faster than you in some cases
17:12:10 <ais523> Ubuntu, on the other hand, never even replied to my emails
17:12:39 <ehird> ais523: Normally it'd take me a day or less.
17:12:52 <ehird> Since I'd see it the day or the next day, and upgrade it.
17:13:02 <ehird> By the way, patch(1) doesn't like your patch
17:13:39 <AnMaster> ehird, tried different -p?
17:14:04 <ais523> ehird: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=459577 (look at the email timestamps)
17:14:07 <AnMaster> -p0, -p1 and so on
17:14:16 <ais523> ehird: check the newlines
17:14:32 <ais523> DOS newlines crept into 0.27 in idiotism.oil by mistake
17:14:39 <ais523> but the patch has Unix newlines
17:14:43 <ais523> and that's enough to confuse patch
17:15:09 <ais523> that's what the email exchange I linked was about, actually
17:15:52 <ehird> patching file src/idiotism.oil
17:15:53 <ehird> Hunk #1 FAILED at 207.
17:15:53 <ehird> Hunk #2 FAILED at 480.
17:15:53 <ehird> 2 out of 2 hunks FAILED -- saving rejects to file src/idiotism.oil.rej
17:15:57 <ehird> so yeah
17:16:22 <ais523> ehird: OTOH, unlike the Debian maintainer, you wouldn't be too scared to merge the patch by hand, right?
17:17:22 <ehird> ais523: Most certainly not
17:17:23 <ehird> :)
17:17:59 <ehird> Gosh, patch is such an arcane format
17:17:59 <ehird> :P
17:18:29 <ehird> ais523: Just replace all the DOS with UNIX, right?
17:18:59 <ais523> ehird: yes, that's how I fixed it
17:19:00 <ehird> tofrodos will be quicker then
17:19:08 <ais523> in fact, that's the reason that the patch is confused like that
17:19:33 <ais523> one of the first things I did when I started work on 0.28 was to notice that the newlines in idiotism.oil were wrong, and ran tofrodos on it...
17:19:45 <ehird> 'And for probably obvious reasons I don't want to hand-merge it.' --> 'I am a delicate soul and I never use a keyboard. I love my mouse. Please don't make me do scary things.'
17:19:49 <ehird> harsh? maybe ;)
17:20:03 <ais523> ehird: to be honest, I'm not sure if anyone in the world but me knows OIL
17:20:09 <ais523> it doesn't even qualify as a proper esolang
17:20:19 <ais523> although I suspect it's TC for the same reasons that Thue is
17:20:55 <ehird> This implementation was created by Eric S. Raymond <esr@snark.thyrsus.com> during a fit of lunacy from which he has since mostly recovered.
17:20:58 <ais523> (Joris Huizer, who has contributed so many patches to C-INTERCAL recently that there's a Joris-specific changelog section, sent a few OIL corrections in, but confessed to not really understanding the syntax)
17:21:04 <ehird> first comes denial..
17:22:13 <ehird> ais523: eek, no manpage
17:22:14 <ehird> :D
17:22:18 <ais523> ehird: there is a man page
17:22:20 <ais523> doc/ick.1
17:22:38 <ais523> also an info page doc/ick.info (requires compilation, source in doc/ick.txi)
17:22:45 <ehird> '-b option that disables the INTERCAL-72 random-bug feature' <-- commonly used, I assume
17:22:55 <ais523> you'd be surprised how often I forget
17:23:05 <ais523> but 90% of the time it doesn't matter
17:24:25 <ais523> incidentally, the next version is adding -w, -a, -e, and -E to that manpage
17:25:06 <ais523> -a = enable CREATE, -e = enable external calls and expansion libraries, the other two aren't very interesting
17:26:01 <ehird> ais523: /* AIS:
17:26:03 <ehird> that must get tedious
17:26:09 <ais523> ehird: not really
17:26:15 <ais523> it helps when grepping
17:26:18 <ehird> replacing everyone else's comments with something similar would be simpler :P
17:26:41 <ais523> ehird: the unattributed bits belong to the top-of-file copyright holder in most cases
17:26:51 <ais523> you'll see other people's initials scattered around too, just not as much as mine
17:26:54 <ehird> ais523: hmm.
17:26:55 <ehird> $ ick; echo $?
17:26:56 <ehird> 0
17:27:05 <ais523> ehird: that's correct
17:27:06 <ehird> best true(1) ever
17:27:11 <ais523> you told it to do nothing, and it did
17:27:57 <ehird> ais523: does it ever exit(1)?
17:28:01 <ehird> just seems to do 1241 and similar
17:28:32 <ais523> ehird: I don't know of a way to get an exit code of precisely 1
17:28:32 <ais523> there are a lot of other nonzero exit codes available, though
17:28:44 <ais523> try compiling an invalid INTERCAL program (DO(1)NEXT will do), and look at the exit code then
17:29:13 <ehird> $ echo 'DO(1)NEXT' |ick ; echo $?
17:29:13 <ehird> bash: echo: write error: Broken pipe
17:29:23 <ehird> need to pipe to a file
17:29:23 <ehird> :)
17:29:26 <ais523> ehird: ick doesn't accept files on stdin
17:29:41 <ehird> invalid: 230
17:29:41 <ais523> however, I have a symlink tty.i to /dev/tty in my INTERCAL programs directory
17:30:06 <ais523> ehird: C-INTERCAL sends back the error number as the exit code
17:30:13 <ais523> but the OS will normally modulo-256 it
17:30:50 <ais523> so I get 129 on that program, for instance
17:30:54 <ehird> ais523: no output file option? :(
17:31:03 <ais523> ehird: at present, no
17:31:11 <ais523> because none of the options take arguments
17:31:17 <ais523> you have -o to pipe the output C to stdout, though
17:31:24 <ehird> 34
17:31:24 <ehird> ICL579I WHAT BASE AND/OR LANGUAGE INCLUDES 34?
17:31:25 <ais523> and you can redirect it elsewhere from there
17:31:31 <ehird> i know that shouldn't work
17:31:34 <ais523> ehird: that's not how you input numbers in INTERCAL
17:31:34 <ehird> but the error is amusing
17:31:37 <ais523> try THREE FOUR
17:31:38 <ehird> WHAT BASE INCLUDES 34?!
17:31:40 <ehird> ais523: yes, yes, i know
17:32:16 <ehird> ais523: any base-12 names? :P
17:32:38 <ais523> ehird: input is in spelt-out decimal, in a variety of languages
17:32:47 <ais523> but programs internally can use any base from 2 to 7
17:33:01 <ais523> according to the file extension (.i, .3i, .4i, ..., .7i)
17:38:57 <ehird> ais523: yes, i know
17:39:00 <ehird> it's just an amusing error
17:39:45 <ehird> now... to use continuations.i to make a continuation-based web framework, plug it into fastcgi, and write the world's second web intercal program: a wiki for INTERCAL information
17:39:48 <ehird> or am i just silly
17:39:59 <ais523> ehird: entirely possible
17:40:11 <ais523> but it'll take several days even for someone used to INTERCAL, at least
17:40:40 <ehird> ais523: yes, probably the best route is:
17:40:54 <ehird> 1. write a fastcgi/scgi thingy for intercal
17:41:12 <ehird> 2. get continuations working OK with it, do sample HELLO WORLD app
17:41:24 <ehird> 3. translate some of the stuff here http://www.double.co.nz/scheme/modal-web-server.html (just the ideas, not the actual functions, of course)
17:41:34 <ehird> 4. write basic things like the 'counter with ++ and -- buttons'
17:41:41 <ais523> oh, it's probably worth pointing out that that continuation library slows down the program by a factor of n+2 if you've created n continuations
17:41:42 <ehird> 5. build it up to a 'you can change this page' thing
17:41:45 <ehird> then add a formatter
17:41:51 <ehird> then add multiple pages
17:41:54 <ehird> then add revisions
17:41:57 <ehird> and voila
17:41:57 <ais523> so unless you find some way to reuse them, the whole thing will ground to a halt
17:41:57 <ehird> ;)
17:42:05 <ehird> ais523: can you delete continuations?
17:42:18 <ais523> ehird: at the moment, no
17:42:22 <ehird> the standard practice for continuation web servers is that after a while you expire old continuatins
17:42:25 <ais523> well, unless you hook into the internals
17:42:29 <ehird> for the purposes of this they'll not be used often
17:42:35 <ais523> it shouldn't be ridiculously hard to do, though
17:42:38 <ehird> so i guess once every hour purging them would work
17:43:15 <AnMaster> lol
17:43:16 <ais523> ehird: INTERCAL doesn't have a current-time function, but I suppose you could deduce it from incoming HTTP headers if they happened to contain something time-related
17:43:19 <AnMaster> you are insane
17:43:33 <ehird> ais523: one http request = one tick
17:43:40 <AnMaster> ais523, well if it doesn't have current time, befunge does
17:43:41 <AnMaster> ;P
17:43:48 <ehird> every N ticks, expire continuations not used for M ticks (where M>N)
17:44:06 <AnMaster> ais523, there is even a "high resolution timer" fingerprint
17:44:11 <ais523> AnMaster: unfortunately, the threader and external calls system conflict with each other
17:44:16 <ehird> ais523: since it'll mostly be in a nop busyloop when not handling requests
17:44:19 <AnMaster> ais523, eh?
17:44:20 <ais523> so you couldn't have continuations And befunge
17:44:20 <ehird> obviously i won't try and thread it
17:44:23 <ehird> so it'll handle one request at a time
17:44:26 <AnMaster> ais523, oh you mean non-reentrant?
17:44:28 <ais523> AnMaster: they both do entirely different unusual stack things
17:44:40 <ais523> and are both heavily setjmpy, but in different ways
17:44:40 <AnMaster> I see
17:44:49 <AnMaster> ugh
17:45:03 <ehird> AnMaster: CONT fingerprint for cfunge please
17:45:13 <ehird> AnMaster: :D
17:45:15 <AnMaster> ehird, not sure how it would work
17:45:22 <ais523> hmm... maybe you could do something using TRDS
17:45:30 <AnMaster> ais523, I will NOT implement TRDS
17:45:32 <ais523> that's pretty continuation-like
17:45:33 <AnMaster> I just won't
17:45:34 <ehird> AnMaster: you know what continuations are right?
17:45:47 <AnMaster> ehird, I think I know, if they are what I think
17:45:52 <AnMaster> ie, anonymous method
17:45:58 <AnMaster> that can be passed around
17:45:59 <ais523> no, that's a lambda
17:46:04 <AnMaster> hm?
17:46:17 <ais523> lambda = anonymous method that can be passed around, and can be filled out at runtime
17:46:27 <ehird> he's thinking of closures
17:46:28 <ais523> continuation = snapshot of the state of the program that can be restored at a later time
17:46:32 <AnMaster> ehird, ah yes
17:46:34 <ais523> ehird: ah
17:46:36 <AnMaster> ehird, that's the one
17:46:39 <ehird> i'll explain continuations to AnMaster trivially
17:46:44 <AnMaster> well then I don't know what a continuation is no
17:46:50 <ehird> AnMaster: you know the call stack? it includes the return addresses, local variables, etc
17:46:56 <AnMaster> aye yes
17:47:03 <ehird> well, a continuation is a copy of that call stack
17:47:04 <ehird> but not the heap
17:47:10 <ehird> and then you can resume the continuatoin
17:47:10 <AnMaster> call and ret in asm iirc
17:47:17 <ehird> and it replaces the stack with theo ne in the continuation
17:47:39 <AnMaster> ehird, so you are trying to sneak in that back tracking stuff that's soooo slow?
17:47:40 <ehird> AnMaster: basically, you need these:
17:47:43 <ehird> and no
17:47:47 <ehird> continuations are useful besides
17:47:49 <AnMaster> hm
17:47:50 <ehird> e.g. seaside web framework
17:47:51 <ehird> uses them
17:47:59 <ehird> ofc the Copy Whole Stack method is inefficient
17:48:01 <ehird> but easy to implement
17:48:04 <AnMaster> ehird, so a saved state?
17:48:04 <ehird> anyway
17:48:10 <ehird> AnMaster: kind of, but the heap stays the same
17:48:11 <ais523> ehird: use Underlambda, then you can store continuations in the URL
17:48:12 <AnMaster> of the call stack but nothing else?
17:48:16 <AnMaster> or the normal stack too?
17:48:24 <ehird> ais523: that's true.. but then you can hijack the app
17:48:26 <ais523> AnMaster: in the case of Befunge, both
17:48:32 <ehird> AnMaster: for befunge you will wont both, i guess
17:48:34 <AnMaster> ais523, well there is no call stack
17:48:35 <AnMaster> really
17:48:39 <ehird> AnMaster: your C call stack
17:48:42 <ehird> copy the c call stack
17:48:43 <AnMaster> ah yes
17:48:51 <ehird> yes you have to do some weird memcpy stuff
17:48:53 <AnMaster> ehird, how on earth would I access the C call stack?
17:48:53 <ehird> involving things like
17:48:56 <ehird> int xyzzy;
17:48:59 <AnMaster> I got no idea where it is
17:49:01 <ehird> int *stack = &xyzzy-1;
17:49:03 <ehird> stuff like that
17:49:06 <AnMaster> err
17:49:11 <ais523> ehird: that's nonportable
17:49:13 <AnMaster> ehird, that sounds non-portable
17:49:17 <ehird> it's kind of nonportable
17:49:18 <ais523> but you can get round that by implementing your own stack
17:49:22 <ehird> but you can get it working semi-reasonably
17:49:25 <ehird> ais523: that would be tricky in this case
17:49:31 <AnMaster> ugh
17:49:34 <ais523> ehird: or use CPS
17:49:39 <ehird> ais523: unworkable in C
17:49:40 <ehird> it has no closures
17:49:43 <ehird> you'd have to drop local vars
17:49:47 <AnMaster> ais523, ehird: I'm not going to do that you know
17:49:47 <ehird> and pass around structures
17:49:55 <ehird> AnMaster: fine, implement your own call stack
17:49:58 <ehird> but here's what you need:
17:50:08 <ais523> ehird: you could use STASHes rather than local vars, so it isn't completely ridiculous
17:50:16 <ais523> but it is still somewhat ridiculous
17:50:38 <AnMaster> ehird, I'm not going to do any setjmp or similar either
17:50:47 <ehird> C -- Makes a continuation whose return point is here. If we've just created the continuation, push 0 on to the stack. Otherwise, push the value we got and then 1 on to the stack.
17:50:48 <AnMaster> I prefer clean code
17:50:54 <AnMaster> when doing C
17:51:02 <ehird> R -- Takes a continuation and a value off the stack, and returns to the continuation passing the value.
17:51:05 <ehird> there
17:51:06 <ehird> that's it
17:51:09 <ehird> that's the CONT fingerprint
17:51:27 <AnMaster> ehird, sounds like a feral fingerprint?
17:51:35 <ehird> AnMaster: but note...
17:51:38 <ais523> AnMaster: tame continuations would be a contradiction
17:51:39 <ehird> continuations must be reusable
17:51:44 <AnMaster> ais523, indeed
17:51:46 <ehird> if i store a continuation somewhere
17:51:49 <ehird> then i can use R as many times as i awnt
17:51:51 <ehird> *want
17:52:07 <AnMaster> ais523, and that is where I say no. I have decided to not implement MODE because it isn't tame
17:52:09 <ais523> ehird: you can make reusable continuations out of non-reusable continuations
17:52:18 <ehird> ais523: kind of
17:52:21 <ehird> not always though
17:52:27 <ais523> that's what I did in the INTERCAL continuation library
17:52:30 <ehird> AnMaster: you are so uptight regarding esolangs
17:52:38 <AnMaster> ehird, well I may do MODE
17:52:46 <ais523> whenever a continuation is spent, I generate another identical one with the same number
17:52:48 <AnMaster> but not TRDS and CONT, sure if someone makes a patch
17:52:49 <ehird> i'm not implementing this feature because i value MAINTAINABILITY and READABILITY and PORTABILITY
17:52:57 <ehird> even though it's BEFUNGE
17:53:08 <ehird> anyway, http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons
17:53:12 <ehird> explains it simpl;y
17:53:18 <AnMaster> ehird, right, befunge is turing complete, you can simulate the continuations in it!
17:54:24 <ais523> Befunge-98, you mean
17:54:30 <AnMaster> ais523, right indeed
17:54:53 <AnMaster> ais523, though, Befunge-93 with BIGNUM would be turning complete too I think?
17:55:01 <ais523> AnMaster: yes
17:55:11 <ehird> uhm, you couldn't simulate continuations reasonably
17:55:14 <ehird> without fisrt-class functions
17:55:16 <ais523> you could simulate a Minsky machine using the playfield or the swap instruction
17:55:19 <ehird> its totally useless
17:55:24 <ais523> it wouldn't be very befunge-like, though
17:55:27 <AnMaster> ehird, you could simulate first-class functions
17:55:39 <ehird> AnMaster: the point is it's nigh-on impossible
17:55:40 <ais523> ehird: INTERCAL doesn't have first-class functions, yet I programmed continuations in it
17:55:47 <ehird> unless you make a compiler do it = more work than implementing CONT
17:55:51 <ehird> ais523: intercal != befunge
17:56:36 <AnMaster> Deewiant said he wouldn't have done TRDS if he knew how messy it was iirc
17:57:07 <AnMaster> what I *may* do is add a full blown libffi
17:57:07 <ais523> it's pretty like continuations, though
17:57:19 <AnMaster> then you can do whatever you want basically
17:57:26 <AnMaster> assuming non-sandbox mode
17:57:50 <ehird> ooh
17:57:53 <ehird> a new funge98 impl
17:57:57 <AnMaster> ehird, hm?
17:57:58 <ehird> in the infocom Zmachine no less
17:57:59 <ehird> http://mbays.freeshell.org/zedfunge.html
17:58:51 <Deewiant> AnMaster: well, I probably would have anyway, and then said that anyway ;-)
17:59:18 <ais523> Deewiant: you've worked with TRDS, how continuation-like is it?
17:59:21 <AnMaster> Deewiant, hm?
17:59:41 <Deewiant> ais523: continuation-like? what exactly do you mean?
17:59:52 <ais523> Deewiant: we were discussing continuations in Befunge
18:00:00 <ais523> I was wondering whether TRDS already provided a way to do that
18:00:06 <ais523> because it acts in a similar manner
18:00:07 <ehird> you can't
18:00:08 <Deewiant> AnMaster: I mean, I'm stubborn enough to have probably done it anyway :-P
18:00:09 <ehird> it isn't reusable
18:00:14 <ehird> and you cannot send values back
18:00:17 <ehird> and it does IO
18:00:19 <ehird> and changes the heap
18:00:26 <ehird> IO and heap must never be modified for continuations
18:00:34 <ais523> ehird: so not continuation-like enough
18:00:34 <ehird> it makes them useles
18:00:35 <ehird> s
18:00:36 <Deewiant> it doesn't do IO, necessarily
18:00:41 <Deewiant> or what did you mean by that
18:00:53 <ais523> Deewiant: ehird means that continuations don't reset the input stream
18:00:56 <ais523> but TRDS does
18:00:57 <Deewiant> or are you talking about something else
18:01:11 <ehird> Deewiant: it rewinds stdout
18:01:18 <ehird> & stidn
18:01:21 <Deewiant> you mean, if there's a getchar() or putchar() somewhere
18:01:24 <Deewiant> then TRDS would rerun it?
18:01:27 <Deewiant> if so, that's false
18:01:29 <Deewiant> because it doesn't
18:01:43 <ehird> no
18:01:46 <ehird> but it would remove it from the screen
18:01:53 <ehird> also
18:01:55 <ehird> it SHOULD rerun it
18:01:56 <Deewiant> hm? that's impossible :-P
18:01:57 <ehird> if it was a continuation
18:02:17 <Deewiant> in all honesty the IO semantics of TRDS are 100% unspecified
18:02:22 -!- timotiis has joined.
18:02:26 <ehird> AnMaster: put your files in a top-level directory when you make tarballs fck sake
18:02:28 <Deewiant> the original implementation doesn't do getchar() and putchar()
18:02:34 <AnMaster> ehird, hm?
18:02:34 <Deewiant> when time traveling
18:02:37 <ehird> you just defecated on my ~/
18:02:38 <AnMaster> ehird, what do you mean?
18:02:38 <Deewiant> but it would do file input and output
18:02:45 <AnMaster> ehird, I do use a subdir
18:02:47 <AnMaster> -_-
18:02:57 <AnMaster> unless tar is doing something messy?
18:02:58 <Deewiant> AnMaster: http://en.wikipedia.org/wiki/Tarball#Tarbombs
18:03:11 <ais523> ehird: ccbi does that to me when I try to unpack it
18:03:17 <ais523> maybe you've got the wrong interp
18:03:20 <AnMaster> I don't tar bomb
18:03:28 <ais523> or maybe there's a worldwide tar conspiracy against Befunge
18:03:34 <Deewiant> CCBI is in a zip file, and a subdir of its own O_o
18:03:52 <AnMaster> http://rafb.net/p/fTreKx91.html
18:03:58 <AnMaster> ehird, wtf are you talking about?
18:03:59 <ais523> Deewiant: I thought it would be
18:04:11 <ais523> maybe there's something wrong with the way tar handles 7zip, or something
18:04:14 <AnMaster> it is always subdir of it's own
18:04:23 <Deewiant> ais523: possibly
18:04:51 <AnMaster> ehird, what exact tar ball is it you have an issue with?
18:04:55 <AnMaster> link please
18:05:15 <ehird> meh
18:05:23 <AnMaster> ehird, waiting
18:05:34 <AnMaster> because I can't see any tar file I made got that problem
18:06:54 <ehird> it was my mistake
18:06:55 <ehird> sorry
18:06:58 <AnMaster> ah
18:07:03 <AnMaster> ehird, so what did you do?
18:07:12 <ehird> long story
18:07:12 <ehird> :)
18:07:18 <AnMaster> ehird, I would like to know
18:07:53 <ais523> heh, I have an entire section about extracting tarballs in the C-INTERCAL docs on the basis that some Windows users might not understand it, so I'd like to know too
18:10:01 <ehird> i had some directories called things like 'src' in ~/
18:10:56 * ais523 has an idea for a really mean way to confuse a user: create a symlink from every possible valid filename to the user's home directory into the user's home directory itself
18:11:14 <ais523> unfortunately, that would use excessive disk space unless your filesystem optimised it
18:11:27 <ehird> ais523: most filesystems can handle infinite length filenames nowadays
18:11:42 <ais523> well, you could invent one that couldn't
18:11:50 <ais523> limit it to 8.3, for instance
18:11:58 <ais523> yet still have it capable of optimising vast symlink farms
18:12:49 <ehird> Hmm
18:12:53 <ehird> Could you do continuations in sh?
18:13:09 <ais523> ehird: it's a bit hard to get at internal state
18:13:23 <ais523> so you'd probably have to implement your own stack system, etc
18:13:25 <ehird> ais523: i'm sure you could do SOMETHING though..
18:13:29 <ehird> like.. use &&
18:13:31 <ehird> foo && bar && xyz
18:13:36 <ehird> and use exit codes and stuff
18:13:37 <ehird> or something
18:13:48 <ais523> ehird: oh, sh's Turing-complete, so it's possible somehow, the interesting question is how easy it is
18:14:22 <AnMaster> ehird, <ehird> i had some directories called things like 'src' in ~/ <-- yes and?
18:14:28 <AnMaster> how did it happen
18:14:33 <AnMaster> I would like to know
18:14:41 <AnMaster> I got ~/src too
18:14:52 <AnMaster> ~/src/cfunge/trunk is where I keep cfunge
18:15:02 <ehird> AnMaster: i create directories all the time
18:15:08 <AnMaster> yes and?
18:15:15 <ehird> so i thought your tarball did it
18:15:22 <ehird> but i did
18:15:29 <AnMaster> I see, you didn't look for a "cfunge" there?
18:15:34 <ehird> i did
18:15:37 <ehird> it's a long story
18:15:39 <AnMaster> ah ok
18:16:02 <ehird> ais523: you cast printf calls to void
18:16:02 <ehird> wtf
18:16:19 <ais523> ehird: for linting
18:16:36 <ais523> actually, the version of lint I used doesn't care, but some older ones that other people delinted with do
18:16:45 <ais523> after all, it has a return value...
18:17:07 <ehird> ais523: i think i want to die
18:17:12 <ehird> :p
18:17:15 <Deewiant> I'd do #define Printf(x) (void)printf(x) if I were you...
18:17:28 <ais523> ehird: lint can be useful, but can also be annoying
18:17:30 <Deewiant> or, if you prefer, the variadic function version and call vprintf
18:17:39 <ehird> #define LintSucksSoGodDamnMuch (void)printf
18:17:41 <ais523> but being far too false-positivy is useful
18:17:48 <Deewiant> but yes, further, I'd just shut lint up :-P
18:17:58 <ehird> #define LintSucksSoGodDamnMuch (void)
18:18:05 <ehird> LintSucksSoGodDamnMuch printf("really\n");
18:18:10 <ais523> at least there are lots of comments now where I explain things to humans that Splint flagged up as being suspicious
18:18:24 <ais523> and added in a /*@-something@*/ comment to let Splint know I really meant it
18:19:26 <ehird> ais523: is your template engine custom?
18:19:42 <ais523> ehird: what do you mean by 'template engine' in this context?
18:19:56 <ehird> the template
18:20:03 <ehird> c fiel thingy
18:20:05 <ehird> the $ instructions
18:20:11 <AnMaster> <ais523> ehird: for linting
18:20:17 <AnMaster> yeah that is why I don't use splint
18:20:27 <ais523> ehird: which file?
18:20:28 <AnMaster> it's a good idea but not properly implemented
18:20:32 <ehird> ais523: the template c file
18:20:34 <ehird> for the output
18:20:38 <ais523> it's custom
18:20:47 <ais523> the substitutions are done in a massive switch near the bottom of perpet.c
18:20:52 <ehird> heh
18:20:55 <ais523> just before the bit that calls system() a lot
18:21:19 <ais523> not mine, though, it was there when I started working on the compiler
18:21:59 <ehird> http://golf.shinh.org/p.rb?nop Seperates the usable languages from the toy ones
18:22:00 <ehird> ;)
18:22:30 <ais523> ehird: more to the point, separates the compilers from the interpreters
18:22:51 <ais523> because a compiler erroring out is generally 'failed' on anagolf, but an interp erroring out is generally 'success' if the right output's on stdout
18:22:54 <ehird> ohoooo
18:22:55 <ehird> http://golf.shinh.org/reveal.rb?nop/irori/1204644403&hs
18:22:56 <ehird> cleverrr
18:23:03 <ehird> ais523: hardly
18:23:11 <ehird> it seperates the things taht require verbosity and those that don't
18:23:12 <ehird> :)
18:23:16 <ais523> I contributed ; as a program to every single language, and it 'worked' on most of them
18:23:21 <AnMaster> <ehird> http://golf.shinh.org/reveal.rb?nop/irori/1204644403&hs
18:23:26 <AnMaster> that site is just odd?
18:23:28 <ehird> e.g. Ada and Erlang fails
18:23:30 <AnMaster> lots of errors?
18:23:35 <AnMaster> or maybe I should blame firefox?
18:23:39 <ais523> ehird: what does @ do in Python again?
18:23:41 <ehird> AnMaster: blame firefox
18:23:44 <ehird> ais523: that's haskell
18:23:53 <ehird> in a pattern match,
18:23:55 <ais523> sorry, I said the wrong language for some reason
18:24:03 <ehird> X@Y means that 'match X like normal, but bind Y to the whole thing'
18:24:07 <ehird> (x:xs)@xss
18:24:09 <ais523> I was busy reading Perl documentation at the time, and got confused
18:24:09 <ehird> xss is (x:xs)
18:24:21 <ehird> haskell lets you do patterns on the LHS apparently
18:24:22 <ehird> so main@a=a
18:24:23 <ehird> is main = main
18:24:26 <ehird> so an infinite loop
18:24:32 <ehird> that, obviously, outputs fine
18:24:49 <ais523> main=main errors out in ghc, at least, because it detects the loop
18:24:55 <ehird> ais523: in ghci
18:24:56 <ehird> not ghc
18:25:05 <ehird> in fact
18:25:06 <ehird> not even ghci
18:25:07 <ehird> jus tlambdabot
18:25:07 -!- cherez has quit (Read error: 113 (No route to host)).
18:25:45 <ehird> $ echo 'main=main'>foo.hs&&ghc foo.hs -o loop&&rm foo.hs&&./loop
18:25:49 <ehird> though it might pick up on it eventually
18:25:54 <ehird> but anagolf only runs for ~2 seconds
18:26:37 <ehird> ais523: http://golf.shinh.org/reveal.rb?nop/ais523/1204732604&m4
18:26:40 <ehird> did you not consider a newline?
18:26:41 <ais523> ehird: you're right, but I'm sure I have a memory of the loop being detected somewhere
18:26:49 <ehird> or perhaps a space
18:26:51 <Deewiant> ehird: you can view solutions there? where's the link to reveal.rb?
18:26:57 <ais523> ehird: I forgot about the trailing-whitespace thing
18:27:01 <ehird> ais523: it is if you run it for a while
18:27:09 <ehird> Deewiant: only on closed problems
18:27:09 <ais523> Deewiant: on the contest page, after the deadline
18:27:14 <ehird> the name becomes a link
18:27:15 <ais523> the solutions aren't shown before the deadline
18:27:22 <ehird> some deadlines are infinite
18:27:27 <ehird> and since there's a random number at the end
18:27:31 <ehird> it won't be trivial to guess
18:27:34 <Deewiant> I see
18:27:49 <ais523> ehird: presumably the links wouldn't work even if you did guess them?
18:27:50 <Deewiant> and evidently there's no indication of the deadline in the main listing :-/
18:28:30 <ais523> well, contests that are before the deadline are listed at the top, but unless a contest ended recently there's no after-deadline vs. no-deadline notification
18:29:05 -!- shinkuzin_ has quit (Read error: 113 (No route to host)).
18:29:56 <Deewiant> ew, topological sorting with regex
18:30:27 <ais523> I hacked up a solution in bash that used tsort, but it doesn't give the first answer in alphabetical order, so it was rejected
18:32:25 <ais523> Deewiant: some Perl golfers will try to do anything with regex
18:32:26 <ehird> i am adding an odd challenge
18:32:33 <ais523> normally because it often ends up shortest
18:32:34 <ehird> because only compiled languages will probably manage
18:32:39 <ehird> print 0 .. 99999
18:32:44 <ehird> that normally takes a while
18:32:51 <ais523> ehird: the binary, alnum, symbol is mine, BTW
18:33:19 <AnMaster> ehird, with leading 0 or not?
18:33:24 <ehird> Print out a lot _56K BEWARE_
18:33:28 <ehird> 56k beware, amusing
18:33:32 <ehird> AnMaster: with leading 0 and 99999
18:33:48 <ehird> http://golf.shinh.org/p.rb?Print+out+a+lot+_56K+BEWARE_
18:33:52 <ehird> may crash $BROWSER
18:34:09 <ehird> esp. don't try resizing
18:35:41 <ais523> Firefox managed fine for me
18:36:39 <ehird> heh
18:36:41 <ehird> haskell times out
18:36:45 <ehird> even the one i used to generate
18:37:05 <AnMaster> <ehird> print 0 .. 99999
18:37:08 <AnMaster> mh
18:37:10 * AnMaster tries
18:37:47 <ais523> ehird: even C times out for me
18:37:51 <ehird> does it?
18:37:56 <ehird> maybe a bad example
18:38:06 <ehird> :(
18:38:09 <ais523> I/O-bound would be my guess
18:38:18 <ais523> leave it there and see if anyone finds a solution
18:38:37 <ais523> after all, I was using printf, which is slow
18:38:47 <ehird> real 0m0.424s
18:38:49 <ehird> not too bad..
18:39:13 <ehird> ais523: maybe storing as an array of chars would work better
18:39:14 <ehird> then just puts
18:39:45 <AnMaster> damn
18:39:50 <AnMaster> ehird, what is the time limit?
18:39:56 <ais523> ehird: that would go over the input size limit
18:40:07 <AnMaster> real 0m2.625s
18:40:09 <AnMaster> locally
18:40:14 <AnMaster> is what my code in bash takes
18:40:15 <ais523> unless you compressed
18:40:20 <AnMaster> ehird, ^
18:40:26 <AnMaster> so that server must suck
18:40:31 <ehird> ais523: i meant
18:40:34 <ehird> operate on an array of chars
18:40:44 <ehird> char a[6];
18:40:45 <ais523> ehird: then you'd hit the memory limit
18:40:56 <AnMaster> ehird, what is the time limit
18:40:57 <ehird> you don't get it
18:40:58 <ehird> i mean
18:41:01 <AnMaster> because it fails at 2 seconds
18:41:02 <ehird> char a[6]="0";
18:41:03 <AnMaster> or so
18:41:06 <AnMaster> ehird, ...?
18:41:06 <ehird> then do arithmetic on that
18:41:09 <ehird> and just puts() when required
18:41:15 <ehird> jeez
18:42:23 <AnMaster> ehird, no?
18:42:33 <AnMaster> how long is timeout on that site?
18:42:37 <ehird> AnMaster: don't ask me!!
18:42:46 <ehird> few seconds
18:43:15 <AnMaster> ehird, then it got a sucky CPU
18:43:36 <ehird> AnMaster: like 1.5 seconds
18:43:41 <AnMaster> ...
18:43:42 <ehird> and its run under limits
18:43:42 <ehird> duh
18:43:49 <ehird> so it cant use resourcse
18:43:58 <ehird> its in the arbitary code execution business
18:44:02 <ehird> it's not gonna let you do just anything
18:44:08 <AnMaster> indeed
18:44:49 <SimonRC> hi
18:46:02 <ais523> ehird: really interesting problem, though, I wonder if anyone will manage to produce that output by any means at all
18:46:08 <ehird> ais523: does underlambda have continuations?
18:46:20 <ehird> if not, you should add 'em :)
18:46:26 <ehird> well, i mean call/cc of course
18:46:43 <AnMaster> real 0m0.335s
18:46:43 <ehird> writing a client-side continuation wiki will be hilarious
18:46:45 <AnMaster> locally
18:46:48 <ehird> you'll get hidden input form fields
18:46:52 <ehird> AnMaster: fisrt-time always lasts more
18:46:52 <AnMaster> ehird, yet it fails due to timeout on server
18:46:56 <ehird> with loads of underload code in it
18:47:01 <AnMaster> ehird, ?
18:47:05 <ehird> AnMaster: running a program the fisrt time always takes longer
18:47:16 <AnMaster> ehird, it tool less than a second locally
18:47:24 <AnMaster> yet that site fails due to timeout
18:47:31 <ehird> AnMaster: running a program the fisrt time always takes longer
18:47:31 <ehird> AnMaster: running a program the fisrt time always takes longer
18:47:33 <AnMaster> every time
18:47:37 <AnMaster> I tried several times
18:47:38 <AnMaster> so...
18:48:14 <AnMaster> ehird, IO on that site sucks, basically?
18:48:24 <ais523> probably due to all the sandboxing
18:48:31 <ehird> AnMaster: no, it redoes the program
18:48:35 <ais523> it overrides syscall IIRC
18:48:35 <ehird> try running a program just installed
18:48:41 <ehird> ais523: anyway, main(_,a){system(gets(a));}
18:48:44 <lament> IO sucks, there's no transformer for it!
18:48:46 <AnMaster> hm
18:48:46 <ehird> why does that timeout for the system challenge?
18:48:51 <ehird> it works on the second
18:48:54 <ehird> but none other
18:49:12 <ais523> ehird: timeouts depend on how many entries there are
18:49:25 <ais523> s/entries/examples/
18:49:33 <ais523> but I don't think that's the problem here
18:49:37 <ehird> hmm
18:49:40 <ehird> i really want test scripts
18:49:44 <ehird> i'd write one in bash:
18:49:51 <ehird> ./prog; echo $?
18:49:58 <ehird> and expect a number for the output
18:50:01 <ehird> would be fun
18:51:41 <ehird> http://golf.shinh.org/p.rb?Encoder+decoder I love this encoding method
18:51:42 <ehird> :D
18:51:47 <ehird> its just so obvious
18:52:44 <ehird> ,>,,,,,[-<->],[-]+[->,+]<[<]<[>>[.[-]>[>]<[.[-]]<[<]>]]>>[.>>]<<<[.<<] wow
18:53:02 <ehird> ais523: but yeah, underlambda continuations?
18:53:15 <ais523> ehird: C
18:53:27 <AnMaster> ehird, so why does it fail so much at IO?
18:53:33 <ais523> you get the call stack and value stack in one listy thing
18:53:48 <ais523> that you can adapt to become a continuation with a few commands
18:54:04 <ehird> ais523: can you define a command to make that convenient?
18:54:05 <AnMaster> ehird, I tried to make gcc compile a unrolled version to C, it did pretty well here, blazing fast 0.3 seconds,
18:54:13 <ais523> c is going to be a synonym for traditional call/cc, but there are a lot of other sorts of continuation you can make
18:54:13 <AnMaster> yet that server says timout
18:54:16 <AnMaster> timeout*
18:54:26 <ehird> ais523: can you define commands, though?
18:54:30 <ais523> AnMaster: I get 0.01 seconds for a Perl program that goes up to 9999
18:54:37 <ais523> but 29999 times out
18:54:43 <ais523> ehird: I'm not really sure, yet
18:54:52 <ais523> I think so but I haven't worked out the details
18:54:54 <ehird> ais523: btw, the magic line thinig -- i suggest seperating it from the specification
18:54:57 <AnMaster> hm
18:54:58 <ehird> i suggest:
18:55:07 <ehird> if the program starts with #!, interpreters must ignore everything up to the next newline
18:55:24 <ehird> then the actual programming language is all platonic and pure and that's just a nice helper for scripts
18:55:33 <ehird> that doesn't specify interpreter executable name or anything
18:55:38 <ais523> ehird: the whole point of the magic line was actually to make it possible to write an Underlambda interp in m4
18:56:03 -!- jix has quit (Nick collision from services.).
18:56:13 -!- jix has joined.
18:56:14 <ehird> ais523: well, maybe just drop the magic line thing altogether then :-)
18:56:18 <ehird> it's not as if 'underlambda file' is hard
18:56:23 <ehird> it would just make it 'cleaner' imo
18:56:31 <ais523> ehird: I like to have delimiters
18:57:04 <ais523> the | also gives you a way to do program/output separation for interps with one input stream
18:57:35 <ehird> ais523: ok, but the problem is that it's not quite the 'ultimate functional/stack/rewrite language'
18:57:38 <ehird> because it has that kludge
18:57:51 <ais523> it doesn't strike me as being a kludge
18:58:04 <ais523> but it's optional except for primitive interps anyway
18:58:30 <ais523> # is an illegal char in Underlambda, so it's easy enough to tell whether it was given or not
18:58:34 <ehird> ais523: it's a kludge because it brings things like UNIX into the picture
18:58:43 <ehird> and assumes that interpreters are called 'underlambda'
18:58:49 <ehird> and that /usr/bin/env does what you want
18:59:00 <ais523> well, I don't care too much about the script thing
18:59:08 <ais523> #underlambda would almost do just as well
18:59:18 <ais523> but why not make it scriptable if you have the chance?
18:59:33 <ehird> ais523: here's an idea..
18:59:39 <ehird> make # a comment character to end-of-line
18:59:42 <ehird> yes you can already do that with (...)!
18:59:50 <ehird> but it would provide that script thing without being a kludge
19:00:10 <ais523> comment-to-end-of-line would be a huge kludge
19:00:23 <ehird> ais523: ok, then just make the #! thing an implementation detail
19:00:26 <ais523> however, I'm toying with the idea of a comment-backwards-to-start-of-file syntax
19:00:28 <ehird> same with the m4-required-delimiters
19:00:48 <ehird> then the language itself is pure, platonic, ideal, etc
19:00:55 <ehird> and it's just the interpreter syntax
19:01:49 <ais523> yes
19:02:04 <ais523> there should be separate syntax for the program
19:02:13 <ais523> and what goes on around it to separate things for the interp
19:02:29 <ais523> the #! stuff can just be a recommended method of encapsulating a program for storage in a file system
19:02:36 <ehird> ais523: yes, in a little footnote
19:02:44 <ehird> it's also worth noting that yours sucks for irc bots
19:02:52 <ehird> since you have to input invalid programs and let the irc bot add the magic
19:02:52 <ehird> :)
19:03:04 <ais523> no, you just input program fragments
19:03:18 <ehird> ais523: even so, it would be nicer to be able to input a whole program
19:03:41 <SimonRC> how do you view the actual programs for that golf site?
19:03:50 <ais523> SimonRC: click on a username after the deadline
19:04:27 * SimonRC tries to figure out how it works
19:04:54 <ehird> SimonRC: how what works
19:05:03 <SimonRC> http://golf.shinh.org/reveal.rb?Encoder+decoder/nuko/1202353533&bf
19:05:03 <ehird> its open source
19:05:15 <ehird> ah
19:05:51 <SimonRC> wait, it can't work
19:05:58 <SimonRC> it throws away some of the input it needs
19:06:10 <AnMaster> real 0m0.722s
19:06:15 <AnMaster> for a bash version locally
19:06:17 <AnMaster> ehird, ^
19:06:35 <AnMaster> ehird, I'd say that server is rather broken
19:06:38 <ehird> SimonRC: well it does work
19:06:40 <ehird> AnMaster: it's not
19:06:47 <ehird> AnMaster: but complaining about it to me won't help. contact shinh
19:06:52 <AnMaster> ehird, it is very very slow
19:06:56 <ehird> ais523: remember that BLIT story I linked?
19:06:58 <AnMaster> ehird, is he on irc?
19:07:07 <ais523> ehird: which one?
19:07:17 <ehird> AnMaster: no. You'll have to use the electronic transmission framework over addresses before a domain name
19:07:18 <ehird> also known as email
19:07:22 <ais523> AnMaster: yes he is, #codegolf on this server
19:07:26 <ehird> ais523: http://www.infinityplus.co.uk/stories/blit.htm
19:07:29 <ehird> ais523: ooh, is he?
19:07:29 <ais523> and is online right now
19:07:35 <AnMaster> well sod it then
19:07:38 <ais523> that's what /whois is for, right?
19:07:43 <ehird> i guess so
19:07:43 <ehird> :D
19:07:44 <SimonRC> oh, wait I can see
19:07:51 <SimonRC> the "encode" is part of the input
19:08:04 <ehird> ais523: well, it occurs to me that BLITs do exist..
19:08:26 <ehird> the videos which induce seizures in people suffering from epilepsy
19:08:41 <SimonRC> like that pokémon episode
19:09:05 <ehird> yes!
19:09:09 <ehird> did it involve parrots?
19:09:17 <SimonRC> no
19:09:31 <ehird> :(
19:09:32 <SimonRC> that is mentionned here: http://en.wikipedia.org/wiki/Motif_of_harmful_sensation
19:09:38 <ehird> yep
19:09:42 <ehird> AnMaster: bugged shinh yet?
19:09:46 <SimonRC> IIRC there is an explosion and Pikachu's eye's flash
19:09:50 <AnMaster> ehird, too lazy
19:09:52 <SimonRC> only a fe were hurt
19:09:54 <ehird> SimonRC: i know of it
19:10:06 <ehird> denshi something porygon, I believe
19:10:10 <ehird> oh
19:10:11 <ehird> kind of
19:10:17 <ehird> Dennō Senshi Porygon sez wikipedia
19:10:18 <AnMaster> ehird, also the "gas" alternative refuses code that work locally, it should mention it is x86 not x86_64
19:10:19 <AnMaster> .....
19:10:41 <ehird> offending frame #1: http://upload.wikimedia.org/wikipedia/en/b/b4/Pikachu_seizure-2.jpg
19:10:50 <ehird> AnMaster: well duhhhh
19:10:56 <ehird> because everyone uses x86_64 and x86 is sooo rare
19:11:25 <AnMaster> ehird, well x86_64 is getting more common
19:11:41 <SimonRC> of course, being a harmful video, it is on Youtube
19:11:47 <ehird> SimonRC: heh
19:11:54 <SimonRC> Monroe was right
19:12:19 <ehird> the promotional video for this horrid olympics logo: http://upload.wikimedia.org/wikipedia/en/e/e4/All_London_2012_logos.PNG
19:12:22 <ehird> caused some seizures, iirc
19:12:34 <Deewiant> how timely, I just watched that pokemon scene a week or two ago
19:12:45 <Deewiant> I recall being surprised at how easily people get seizures
19:12:52 -!- marshmallows has quit ("Leaving").
19:12:58 <ais523> yes, I remember the news reports, they had to show the olympics video at 1/10 speed on the news so as not to cause seizures in people
19:13:13 <ehird> ais523: yep
19:13:15 <ehird> it was hilarious
19:13:28 <ehird> perhaps they had seizures from the shock of how crap the logo was
19:14:22 <ehird> Deewiant: just watched it
19:14:25 <ehird> was that *it*?
19:14:32 <Deewiant> exactly
19:14:35 <Deewiant> I suppose it was
19:14:40 <SimonRC> on a big TV though
19:14:50 <SimonRC> with a the kid sitting 1m away
19:14:52 <ehird> SimonRC: i guess so
19:14:56 <ehird> hmm, 1m
19:14:58 <SimonRC> in a dark room
19:15:01 <ehird> you give too much credit to little kids
19:15:08 <SimonRC> when they are naturally epileptic
19:15:24 <SimonRC> + usual hysteria
19:15:33 <SimonRC> it's a popular show
19:15:35 <lament> that logo is embarassingly bad
19:15:39 <ehird> lament: you bet..
19:16:03 <SimonRC> Then, there was the case of Ecky Thump
19:16:14 <ehird> lament: as usual, wikipedia says it best:
19:16:16 <ehird> why is there no logo at the top!? —Preceding unsigned comment added by 86.160.179.159 (talk) 20:22, 30 October 2007 (UTC)
19:16:16 <ehird> It's hidden halfway through the article because everybody's ashamed of it. --67.160.32.3 (talk) 00:02, 27 November 2007 (UTC)
19:16:18 <SimonRC> The sketch in one episode of the Goodies that made a guy die laughing
19:16:32 <ehird> http://en.wikipedia.org/wiki/Fatal_hilarity
19:17:27 <ais523> ehird: that's a great Wikipedia article title
19:17:48 <lament> "London 2012 has stated that the new logo is aimed at reaching young people. "
19:18:10 <ehird> http://www.albinoblacksheep.com/flash/rgb my favourite seizure flash
19:18:33 <ehird> i think it should be my 'under construction' page
19:18:34 <ehird> :D
19:18:47 <lament> "It was widely commented that the logo resembles an image of the cartoon character Lisa Simpson performing fellatio[22] and others have complained that it looks like a distorted Swastika."
19:18:56 <Deewiant> I wonder how people who get seizures from stuff like that pokemon manage on the internet
19:18:59 <ehird> lament: it's true!
19:19:14 <Deewiant> you'd expect them to be dropping like flies
19:19:31 <ehird> Deewiant: well, that WOULD kind of solve the problem..
19:19:38 <ehird> :p
19:19:56 <lament> now that i look at it, it does look exactly like lisa simpson performing fellatio.
19:20:02 <SimonRC> ehird: ouch my eyes
19:20:05 <lament> amazing that i haven't noticed it before
19:20:11 <ehird> SimonRC: hee
19:20:13 <SimonRC> jesus christ that is bad to look at
19:20:15 <ehird> dudududadadaddudu
19:20:17 <ehird> dudududadadadu
19:20:24 <ehird> dududududududududududududududu
19:21:00 <SimonRC> Surely that was developed for use at Gitmo?
19:21:32 <SimonRC> OTOH, the shot where there are just the three stripes that don't flash ruins the effect
19:21:35 <SimonRC> maybe
19:22:43 <ehird> speaking of epilepsy
19:22:43 <ehird> http://www.theinquirer.net/gb/inquirer/news/2008/03/31/epilepsy
19:22:49 -!- olsner has joined.
19:22:53 <SimonRC> hi
19:23:03 <ehird> i love the jump from 'The site linked to ebaumsworld' to 'anonymous did it'
19:23:32 <SimonRC> heh
19:23:38 <olsner> heh, I love how people are treating "anonymous" as if it was a single organized entity
19:23:41 <SimonRC> as if Anonymous were an organisation
19:24:12 <SimonRC> the whole fucking point is that not only do they not have names, they do not have authewntication or authorisation
19:24:39 <ehird> SimonRC: to be honest they do it themselves
19:24:46 <SimonRC> there can't be any leadership as they cannot tell one another apart and cannot tell "members" from non-"members"
19:24:46 <ehird> I'm talking about the 7chan&co that are attacking CoS
19:25:14 <ehird> SimonRC: Well, they do all use one wiki & irc channel... They have unintentionally created an entity out of themselves
19:25:26 <SimonRC> kinda
19:25:53 <lament> at least my city has a nice logo for its upcoming olympics: http://en.wikipedia.org/wiki/Image:2010_Winter_Olympics_logo.svg
19:26:37 <ehird> stonehenge robot
19:26:44 <SimonRC> yup
19:27:52 <lament> it's a statue that's standing on the beach downtown
19:28:27 <ehird> bullcrap
19:29:35 <ehird> ais523: is there an underlambda that works Right Now and you can write stuff in?
19:29:44 <ais523> yes
19:29:48 <ehird> ais523: heh: 'I feel we have too many problems these days. Please make some time delay before adding problem. I personally think ~5 active problems are enough to work hard for each problem.'
19:29:49 <ehird> poor shinh
19:29:52 <ehird> can't keep up
19:29:52 <ehird> ;)
19:29:54 <ais523> I think I pasted it already, though
19:30:01 <ais523> I can dig it out again if you like
19:30:16 <ais523> (it's only half-complete, but what's implemented works, and I haven't written the rest of the implementation)
19:30:26 <ais523> s/implementation/specification/
19:31:19 <AnMaster> who was it that said were were out of over/under/un/whatever lambda names?
19:31:25 <AnMaster> a few days ago
19:31:55 <ais523> ehird said it
19:32:06 <AnMaster> well I just came up with a name
19:32:11 <AnMaster> uberlambda
19:32:14 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:32:16 <AnMaster> sounds fun
19:32:52 -!- Judofyr has joined.
19:34:12 <ais523> ehird: http://pastebin.ca/965007 if you're interested
19:34:24 <ais523> well, it's there even if you aren't interested
19:34:39 <SimonRC> hmm
19:34:46 <ehird> ais523: that is redundant
19:34:56 <ehird> you said 'if' not 'iff'
19:34:56 <ais523> ehird: in what way?
19:35:10 <ehird> if (you.interested) { exists = true; } /* exists may be true anyway */
19:35:12 <ais523> ehird: if doesn't imply not-fi
19:35:15 <ehird> what you said is like:
19:35:23 <ehird> if (you.interested) { exists = true; } else { exists = true; }
19:35:30 <ais523> I stated that exists was true anyway, not merely that it may be true anyway
19:35:50 <ais523> so yes, redundant, but only because my second statement was a generalisation of the first
19:36:22 <ehird> ais523: is that as usable as Underload/more usable/what?
19:36:24 <ehird> or is it less
19:36:33 <ais523> it's more usable than Underload
19:36:38 <ais523> it has arithmetic, if you've noticed
19:36:52 <ais523> (it's meant to be able to divide too but I couldn't figure out the rewrite rule)
19:37:16 <ais523> the idea is that although you /can/ write the lower-tiered things with rewrite rules, any sane implementation should optimise things like addition
19:37:22 <ais523> (although that one doesn't)
19:37:23 <ehird> ais523: any eaxmples?
19:37:35 <ais523> not really
19:37:44 <ais523> I have a few files I've been working on
19:38:22 <ais523> ((::**:*:*:*:*)((:)~*(*)*:o(h)~^^O):::**::***^!)::*::***^ohhhhhhhhhhhO(
19:38:22 <ais523> )!()i((o(h):*::**::*::***^hO^)~HI:^):^^uhhhhhhhhhhhO
19:38:31 <ais523> that's a test of tier 1a
19:38:35 <AnMaster> wtf
19:38:37 <AnMaster> is that
19:38:46 <ais523> low-tier Underlambda
19:38:50 <AnMaster> oh god
19:38:55 <ais523> the sort which is easy to implement, but hard to write
19:39:07 <ais523> as you get into higher tiers it becomes easier to write and more readable, but harder to implement
19:39:14 <ais523> but the high tiers compile into the low ones
19:39:43 <ehird> (Hello, world!)S doesn't work
19:39:44 <ehird> :(
19:39:52 <ehird> (hello)S outputs (hello)
19:39:53 <ais523> ehird: no
19:40:09 <ais523> and (hello)S outputting (hello) is unreliable and shouldn't be guaranteed
19:40:21 <ais523> you see, Underlambda has first-class functions, rather than first-class strings
19:40:37 <ais523> there'll be some syntax like "Hello, world!"somethinggoeshere in a higher tier, though
19:41:20 <ehird> ais523: so right now i cannot write real programs
19:41:20 <ehird> great
19:41:21 <ehird> :)
19:41:30 <ais523> ehird: that's why it's a work in process
19:41:39 <ais523> s/process/progress/
19:41:55 <ehird> ais523: C doesnt' work yet
19:41:59 <ais523> BTW, it will eventually be the case that Brainfuck minus comments is also legal Underlambda
19:42:03 <ais523> ehird: C ought to work
19:42:11 <ais523> but remember that it isn't call/cc, but a precursor to it
19:43:35 <ehird> ais523: (a)(b)CS
19:43:36 <ehird> outputs nothng
19:43:41 <ais523> call/cc can be implemented in terms of it; prepend an A and append ^Q works as long as you don't want to send a payload, if you want to send payloads it's slightly more complicated
19:43:57 <ais523> ehird: it works for me
19:44:28 <ais523> I get ((a)(b)(S)) mixed in with the debug output
19:45:44 <ais523> you can turn the debug output off by commenting one of the lines out for a cleaner view
19:45:51 <ehird> ais523: make it:
19:45:57 <ehird> ((STACK)(CONT))
19:46:01 <ehird> otherwise it's a bit fiddly
19:46:12 <ais523> ehird: no, you're defeating the whole point of C
19:46:16 <ais523> that sort of thing is what c is for
19:46:28 <ais523> C is the low-tier accessor routine that lets you implement it
19:46:33 <ehird> ais523: well, even so
19:46:36 <ehird> it's (STACK(CONT))
19:46:38 <ehird> which is silly
19:46:40 <ehird> whichever way you look at it
19:46:59 <ais523> ehird: not when you take into account how Underlambda lists work
19:47:24 <ais523> it's just ((a)(b)(c)) and you use continuations and all sorts of fancy tier 3 stuff to process them (or alternatively, an optimising interp that does it sanely)
19:47:37 <ehird> eh. ais523: nice quine: C:^^
19:47:39 <ehird> err
19:47:40 <ehird> not quine
19:47:43 <ehird> infini loop
19:48:01 <ais523> why the colon?
19:48:10 <ehird> ais523: to duplicate the continuation
19:48:16 <ehird> otherwise, once we ^^, the program becomes '^^'
19:48:56 <ais523> OK, I see
19:50:01 <ehird> CC^^ also works
19:50:51 <ais523> that one's cooler
19:51:20 <ais523> there's a stack element that's apparently doing nothing but is in fact providing input to the second C
19:53:42 <ehird> ais523: C^C^C^C^
19:53:47 <ehird> keep adding more ^s, get more stuff
19:54:19 <ais523> that's a nice recursive pattern there
19:54:30 <ais523> oh dear, are we going to end up with a new rival to Subtle Cough?
19:55:47 <ais523> somehow I doubt that C and ^ are TC by themselves
19:55:50 <ehird> heh
19:56:03 <ehird> well its certainly more powerful than subtle cough
19:56:29 <ais523> it's a bit louder than a subtle cough
19:56:39 <ais523> but not quite an obvious cough
19:57:21 <ais523> wow, CCC^^ made Perl segfault
19:58:01 <ehird> me too
19:58:05 <ehird> its pretty though
19:58:23 <ais523> I wonder why it segfaults on something as innocent-looking as that?
19:58:30 <ais523> it's not as if the strings got very long
19:59:31 <ehird> ais523: report it as a bug
19:59:53 <ais523> I'd have to pin it down first
20:00:09 <ais523> and anyway, I'm tired after a night of no sleep, so I think I'll go home now
20:00:12 -!- ais523 has quit ("bye!").
20:00:22 <ehird> i was just about to ask something
20:00:23 <ehird> :<
20:17:08 <SimonRC> through lack of inspiration, I decided to re-write the team whiteboard upside-down
20:18:10 <AnMaster> SimonRC, eh?
20:18:35 <SimonRC> FDJ
20:18:39 <AnMaster> ???????????
20:18:39 <SimonRC> um,
20:18:42 <SimonRC> AFJ
20:18:50 <AnMaster> what are you talking about?
20:19:18 <SimonRC> tomorrow
20:24:08 <AnMaster> ????
20:24:10 <AnMaster> whatever
20:24:14 <ehird> AnMaster: april fools day
20:24:14 <ehird> duh
20:24:26 <AnMaster> ehird, that is several hours left
20:24:34 <ehird> its not even april 1st yet..
20:24:39 <ehird> 20:24 31 march
20:24:44 <AnMaster> mn mar 31 21:24:44 CEST 2008
20:24:45 <AnMaster> here
20:24:54 <ehird> SimonRC did it for TOMORROW
20:25:00 <AnMaster> ah right
20:25:00 <ehird> i.e. the next time people will see it is toorrow
20:25:01 <RodgerTheGreat> oh, man- I need to plan some kind of brilliant april fools day joke
20:25:02 <ehird> *tomorrow
20:25:12 <ehird> RodgerTheGreat: get a BLIT onto some high-profile website
20:25:17 <AnMaster> I wonder what the RFC ppl will come up with
20:26:26 * AnMaster writes a note to himself so he won't get fooled by other family members in the morning
20:26:26 <SimonRC> RodgerTheGreat: how about the old staples of turning shit upside-down, and related ones
20:26:36 <AnMaster> I'm always so sleepy in the mornings
20:26:40 <SimonRC> or post-its on the bottom of the mice
20:26:57 <RodgerTheGreat> SimonRC: nah, but coming up with something *involving* staples could be fun
20:27:12 <RodgerTheGreat> maybe I'll burn all my roommate's possessions
20:27:17 <AnMaster> nah
20:27:22 <AnMaster> that would be too evil
20:27:39 <AnMaster> at least if you did it
20:27:39 <RodgerTheGreat> better:
20:27:52 <olsner> april's fools would be to make your roommate *believe* you've burned all her possessions
20:28:02 <AnMaster> indeed
20:28:34 <ehird> RodgerTheGreat: i still say BLIT
20:28:41 <RodgerTheGreat> "steal" everything. He wigs out like "where's all my stuff?" "Ahahaha- just kidding. I took all the stuff and just hid it" "Oh- heh. Where is it?" "In this small box. I burned everything to make sure you wouldn't find it by accident."
20:28:49 <SimonRC> heh
20:31:06 -!- cherez has joined.
20:31:06 <olsner> lossy compression
20:31:27 <RodgerTheGreat> olsner: exactly! :D
20:31:28 <SimonRC> I wonder if there is something funny I could do with the book-case...
20:31:42 <olsner> turn it around, so that the books are facing the wall
20:31:57 <SimonRC> that just feels unfunny though
20:32:01 <RodgerTheGreat> SimonRC: scan every book, mirror all the pages, reprint and rebind them all.
20:32:11 <SimonRC> too difficult
20:32:19 <RodgerTheGreat> but just imagine the effect
20:32:23 <SimonRC> um, yeah
20:32:34 <RodgerTheGreat> if I had the proper equipment, I'd totally do it
20:32:39 <olsner> you could reverse someone's desk, like put the monitor facing backwards, with all the cables hanging down the front
20:32:53 <SimonRC> not possible with these desks
20:33:02 <olsner> grmbl
20:33:23 <RodgerTheGreat> how about just editing people's config files to mirror the stereo to their speakers. See how long, if ever, it takes for them to notice.
20:33:23 <SimonRC> and that just sounds like a way to waste people's time without being funny
20:33:33 <SimonRC> no speakers
20:33:36 <SimonRC> and no root
20:33:37 <RodgerTheGreat> fuck
20:33:41 <RodgerTheGreat> double fuck
20:33:52 <olsner> kind of unfunny waste of someone's time, yeah
20:34:00 <SimonRC> I could swap people's monitors though
20:34:04 <SimonRC> we get 2 each here
20:34:11 <ehird> its very simple
20:34:13 <ehird> the best thing to do is
20:34:17 <ehird> take someone's monitor away
20:34:21 <ehird> make a photo of the screen behind them
20:34:22 <olsner> "Cake in the canteen!" -> "Fooled ya!" note instead of cake
20:34:22 <ehird> then
20:34:26 <ehird> claer off the desktop
20:34:26 <ehird> 100%
20:34:30 <ehird> so that its just the bg image
20:34:35 <ehird> and set that picture to the background
20:34:43 <ehird> 'who the hell took away my monitor's screen?!?!?!?!'
20:34:49 <olsner> heh, wonder if that fool's anyone though
20:34:53 <RodgerTheGreat> "invisible monitor lol"
20:34:56 <SimonRC> haven't6 got the equipment
20:34:57 <olsner> *fools
20:34:58 <ehird> olsner: people do it just as a regular desktop
20:35:02 <ehird> but as a prank it woudl work great
20:35:16 <sekhmet> Could take a screenshot of the person's desktop, set that as the background, then remove all their actual icons
20:35:18 <oklopol> i vote for a shot in the head
20:35:23 <SimonRC> sekhmet: boring
20:35:24 <ehird> http://www.flickr.com/photos/w00kie/7234920/in/set-180637/
20:35:32 <ehird> that, but without the menus etc
20:35:33 <sekhmet> SimonRC: Yeah, I lose.
20:35:33 <sekhmet> :/
20:35:35 <ehird> sekhmet: too common
20:35:36 <oklopol> ...or what were we talking about?
20:36:32 <olsner> oklopol: check the date of today or tomorrow (depending on time zone)
20:36:35 <ehird> more: http://www.flickr.com/photos/w00kie/sets/180637/
20:36:45 <oklopol> olsner: check my nick, i'm never serious
20:37:00 <oklopol> ...assuming you recall me telling that to you earlier
20:37:36 <oklopol> well i guess in the usual case i have no idea what day it is
20:37:44 <olsner> never serious? not even when saying you're never serious?
20:37:53 <oklopol> but it's pretty simple to guess from what you're ...swiggling
20:37:57 <oklopol> i'm not a man of words
20:38:13 <oklopol> olsner: when saying that, i'm the least serious ever
20:38:20 <olsner> from my viewpoint, however, you're made entirely of words
20:38:36 <olsner> oklopol :: [String]
20:45:39 <ehird> oh wow
20:45:39 <ehird> http://www.flickr.com/photos/w00kie/11033741/in/set-180637/
20:48:09 <SimonRC> kewl
20:48:14 <ehird> yeah
20:48:21 -!- wildhalcyon has joined.
20:48:23 <ehird> (trick: the sleeve is the only thing outside the pic)
20:48:31 <SimonRC> I guessed
20:48:38 <wildhalcyon> hola
20:49:15 <olsner> I read the second comment and figured it out instantly
20:52:56 <SimonRC> well, the next thing to do is set up two screens to look like the two portals from Portal.
20:55:06 <ehird> SimonRC: wait, how about
20:55:09 <ehird> two screens back to back
20:55:15 <ehird> one looks through to the wall
20:55:17 <ehird> and so does the other
20:55:21 <ehird> :D
20:55:30 <ehird> so it seems like there's TWO empty screens
20:55:32 <ehird> from both sidse
20:55:36 <ehird> actually, wait, no
20:55:37 <SimonRC> which one?
20:55:39 <ehird> one screen looks to the wall
20:55:42 <ehird> the other one sees the other screen
20:55:43 <ehird> :D
20:58:17 <wildhalcyon> So, ehird, I took what you said yesterday and spent some time looking at my project.
20:59:51 <ehird> and ate it
20:59:52 <ehird> ?
21:00:16 <wildhalcyon> No, I thought about how I might tweak it to make it more... real world applicable.
21:00:19 <ehird> :)
21:00:35 <wildhalcyon> I didn't have any access to outside communication, I was very bored.
21:00:42 <wildhalcyon> I came up with a design I thought was pretty neat
21:01:32 <wildhalcyon> I wanted to look at a couple things first - to really flesh out the idea, y'know?
21:02:15 <wildhalcyon> Unfortunately, what I implemented was very, very close to Smalltalk. :-(
21:04:45 <wildhalcyon> There are some differences - I've made processes and interfaces part of the language structure, but otherwise its very similar.
21:05:20 <ehird> wildhalcyon: So use smalltalk!
21:06:15 <wildhalcyon> But I was trying to create something different. Unique. I kind of feel like I failed in that endeavor
21:17:30 <ehird> wildhalcyon: You independantly invented Smalltalk.
21:17:44 <ehird> Many people have started at a basis and arrived at something terrible.
21:17:51 <ehird> But you're clever enough to come up with Smalltalk.
21:17:54 <ehird> That's pretty good, I'd say.
21:20:04 <GregorR> This is simply a sign that Smalltalk is the messiah.
21:22:41 -!- RedDak has joined.
21:23:56 -!- wildhalcyon has quit (Read error: 104 (Connection reset by peer)).
21:25:19 -!- wildhalcyon has joined.
21:25:26 <wildhalcyon> Sorry, back
21:26:29 <wildhalcyon> I don't want to say I implemented Smalltalk, or wrote a smalltalk specification, but all the ideas I had were ideas that were written into Smalltalk - including some things such as what questions an object should be able to ask - or even the concept of objects asking questions
21:32:43 <SimonRC> wildhalcyon: have you looked at colorforth?
21:32:52 <wildhalcyon> I've glanced at it once, why?
21:33:01 <SimonRC> I thought it might give you ideas
21:33:05 <SimonRC> like the color
21:33:16 <SimonRC> or the minimalism
21:33:31 <lament> or the insanity?
21:33:40 <SimonRC> that too
21:34:12 <wildhalcyon> I'm down with the last two
21:34:12 <lament> also, smalltalk IS the messiah.
21:34:14 <wildhalcyon> color too, alright
21:34:19 <wildhalcyon> I don't know abotu that lament.
21:34:26 <wildhalcyon> I'm not crazy about the syntax
21:34:32 <SimonRC> wildhalcyon: more generally, the pre-parsing
21:34:33 <lament> wildhalcyon: well, why did you invent it and not something else? :{
21:35:04 <wildhalcyon> I didn't invent the syntax, just the language itself
21:35:06 <wildhalcyon> and the internet
21:35:12 <wildhalcyon> and color.
21:35:24 <lament> the syntax is a very small part of smalltalk.
21:35:30 <lament> it's superficial.
21:35:55 <lament> Squeak has several alternate syntaxes
21:36:04 <lament> you can switch from one to another in the editor
21:36:16 <wildhalcyon> For real?
21:36:19 <wildhalcyon> alternative syntaxes?
21:36:26 <lament> you can probably add your own fairly easily
21:37:09 <lament> too bad it's squeak :(
21:37:35 <ehird> squeak sucks because of its UI
21:37:39 <ehird> and its closed-world view
21:37:41 <lament> (also, what's wrong with the syntax? the method calls in particular are awesome)
21:37:45 <wildhalcyon> well, I could write my own UI too
21:37:46 <ehird> i don't mind the vm + custom ui view
21:37:48 <ehird> but plz make it not as ugly
21:37:55 <ehird> and plz make outside-world interaction easy
21:37:55 <lament> ehird: the ui's allright
21:38:05 <wildhalcyon> lament - its weird how sometimes the variables go in front, sometimes in back. And they're addicted to colons
21:38:09 <lament> but the closed world thing kinda kills it :(
21:38:13 <lament> wildhalcyon: ??????
21:38:16 <lament> what?
21:38:34 <ehird> wildhalcyon: you sound like everyone who has never programmed in smalltalk
21:38:46 <wildhalcyon> I never have programmed in smalltalk
21:38:47 <ehird> & only superficially understands it
21:39:09 <lament> wildhalcyon: perhaps you should. It is the messiah after all.
21:39:10 <ehird> suprise!
21:39:18 <ehird> wildhalcyon: then you don't know if you invented smalltalk or not
21:39:20 <wildhalcyon> I'm only complaining about the syntax, not the deeper structure
21:39:31 <lament> yeah, but it looks you don't know/don't understand the syntax
21:39:59 <wildhalcyon> Well, maybe I don't I guess.
21:40:04 <GregorR> Smalltalk's syntax is simple and elegant.
21:40:22 <lament> heh : http://www.esug.org/whyusesmalltalktoteachoop/smalltalksyntaxonapostcard/
21:40:44 <wildhalcyon> thanks for that
21:41:09 <ehird> #(..) sucks though
21:41:18 <ehird> you should be able to do expressions in it
21:41:19 <ehird> not just constants
21:42:24 <SimonRC> bah, real Smalltalks use _ for assignment, and render it as left-arrow
21:42:27 <SimonRC> :-)
21:42:29 <ehird> SimonRC: :)
21:42:36 <ehird> Squeak renders ^ as up-arrow
21:42:37 <ehird> i love it
21:42:46 <SimonRC> _ was originally left-arrow, to go with ^ as up-arrow
21:43:02 <lament> i'd prefer <-
21:43:04 <SimonRC> squeakhas both of those
21:43:19 <SimonRC> a<-b a < (-b)
21:43:25 * SimonRC goes to bed
21:43:34 <ehird> byebye SimonRC :-)
21:43:34 <wildhalcyon> Well, this turned out worthwhile then
21:43:44 <wildhalcyon> bye SimonRC
21:43:47 <ehird> wildhalcyon: try programmign in smalltalk :)
21:43:48 <lament> of course, the idea of arbitrarily replacing characters with other characters fits nicely with smalltalk's idea of a closed world
21:44:02 <wildhalcyon> what do you mean by closed world?
21:44:03 <lament> or at least, squeak's
21:44:14 <ehird> wildhalcyon: when you start squeak
21:44:17 <ehird> you get one window
21:44:20 <ehird> where its own graphics engine runs
21:44:26 <ehird> and its own windows, font rendering, mouse handling etc
21:44:30 <lament> wildhalcyon: many smalltalks, including squeak, try to be an operating system instead of just an interpreter
21:44:37 <ehird> and generally you are encouraged to stay out of things like the filesystem
21:44:41 <ehird> and handle everything in the VM
21:44:46 <ehird> the VM can be stored and reloaded from a single file
21:45:03 <lament> squeak is an operating system for its VM
21:45:15 <ehird> lament: the reason of course is that smalltalk WAS an operating system
21:45:31 <wildhalcyon> Oh, okay
21:45:36 <lament> sure, and that's fine, but these days it's a pretty dumb approach
21:45:48 <lament> on the other hand, gnu smalltalk seems to be under active development :)
21:45:48 <wildhalcyon> so its closed in the sense that it keeps you out of the rest of your machine?
21:45:54 <ehird> wildhalcyon: not keep you out
21:45:59 <ehird> just nudge you in the other direction
21:46:00 <ehird> hard.
21:46:43 <wildhalcyon> ok
21:46:43 <lament> the real issue is that the concept of a "program" makes a lot sense in smalltalk than it does in, say, java
21:46:48 <lament> er
21:46:51 <lament> *a lot LESS sense
21:46:56 <ehird> yeah
21:47:03 <ehird> smalltalk is a bunch of objects
21:47:05 <wildhalcyon> Well, maybe I can still implement my design in Smalltalk. That might still be interesting.
21:47:12 <ehird> and an app is nothing
21:47:13 <lament> which is really fun one on hand, but absolutely painful and retarded on the other.
21:47:17 <ehird> you just create objects and tell them to do stuf
21:47:19 <ehird> f
21:47:21 <ehird> just like an OS
21:47:28 <lament> and likely one of the main reasons why smalltalk died
21:47:29 <ehird> lament: you CAN do headless stuff with squeak iirc
21:47:32 <ehird> there's even gtk bindings and stuff
21:48:19 <lament> ehird: sure but i don't even want to think about the terrible dependency hell that results due to everything being together as one Big Ball Of Mud while you're developing it.
21:48:31 <wildhalcyon> Can you spawn additional processes in smalltalk from a single process?
21:48:32 <ehird> lament: yeah
21:48:34 <ehird> it's not ideal
21:48:42 <ehird> lament: what do you think about Factor?
21:48:48 <ehird> its listener/IDE thing is custom ui
21:48:50 <ehird> but it supports scripting
21:48:54 <lament> i haven't seen it
21:49:00 <ehird> its like Squeak lite that hugs the outside world
21:49:11 <lament> i think stack based languages are stupid
21:49:29 <wildhalcyon> Why? (I agree, but just curious what you think)
21:49:41 <ehird> lament: not stack-based
21:49:42 <ehird> concatenative
21:49:42 <lament> because a stack is a very unnatural abstraction
21:49:43 <ehird> :)
21:50:01 <ehird> lament: so unix pipes are unnatural?
21:50:04 <wildhalcyon> Lament, only if you're not talking about a stack of books, or papers, or anything else that appears naturally as a stack
21:50:22 <lament> ehird: unix pipes are dataflow
21:50:29 <ehird> lament: so is a stack language
21:50:44 <lament> ehird: how do you do "rot" in unix?
21:51:08 <ehird> lament: you don't because unix pipes are crippled dataflow
21:51:19 <lament> ehird: no, you don't because it's not stack-based
21:51:21 <ehird> (languages (applicative (in (backwards (is (composition (function))))))) -- Slava Pestov, creator of Factor
21:51:44 <ehird> to be honest most functions i write are function composition with a little bit of application
21:51:52 <ehird> so that seems reasonable
21:57:03 -!- jix has quit ("CommandQ").
22:04:52 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:06:19 -!- Judofyr has joined.
22:10:40 <lament> ehird: a program (a function) should deal with the stuff in the domain of the problem it is solving.
22:10:58 <lament> ehird: and not with the stuff which is completely irrelevant to the problem it is solving.
22:11:18 <lament> "A programming language is low level when its programs require attention to the irrelevant."
22:11:41 <lament> stack management is exactly this type of low-level irrelevant stuff.
22:12:28 <lament> also, remember the whole conversation in #haskell from yesterday about how good names are and how silly Peaker is for trying to get rid of them. Having a stack means exactly that - you get rid of names.
22:13:40 <wildhalcyon> Smalltalk is pretty cool
22:13:50 <wildhalcyon> I read the design principles document
22:13:56 <ehird> lament: well, the idea is making it high-level enough through defining words that you don't see the stack manip
22:14:01 <ehird> & providing combinators to hide it
22:14:03 <ehird> like recursion in haskell.
22:14:22 <lament> ehird: that doesn't solve the loss-of-names problem
22:14:27 <lament> which also happens in haskell a lot
22:14:33 <lament> (esp. with pointfree style)
22:14:57 <lament> compare and contrast with the wonderful magical smalltalk method call syntax :)
22:15:00 <ehird> lament: but haskell is restricted to one return value
22:15:10 <ehird> and using (.) the rightmost can only consume one value
22:15:16 <ehird> and also since haskell isn't designed for that
22:15:17 <lament> ehird: right, which makes the problem a little less important
22:15:20 <ehird> it doesn't have a lot of the useful combinators
22:15:36 <ehird> real concatenative languages have useful combinators and none of those restrictions
22:16:16 <lament> you still have to keep track of the stack (i'm guessing)
22:17:32 <lament> hell, 'dup' is the first word introduced
22:17:48 <lament> in the cookbook
22:18:29 <lament> also, the argument about function application being backwards looks completely retarded given code like this:
22:18:33 <lament> [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ]
22:19:12 <ehird> lament: you don't have to keep track of the stack because there are high-level combinators doing it for you
22:19:20 <ehird> and introducing 'dup' is just like introducing recursion in a haskell tutorial
22:19:28 <ehird> you rarely use it
22:20:03 <lament> honestly this single defn is enough to make me never look at Factor again
22:20:04 <lament> : sign-test ( n -- ) dup 0 < [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ] if print ;
22:20:14 <ehird> lament: it's a COOKBOOK
22:20:19 <ehird> also, that word definition is horible
22:20:24 <ehird> that is true
22:20:27 <ehird> 'Shuffle word and definition cookbook'
22:20:29 <ehird> that's 'reference'
22:20:31 <ehird> not tutorial
22:20:37 <lament> ehird: can you give a good-looking definition for sign-test?
22:20:56 <ehird> lament: you would rarely want to write a function like that
22:21:05 <ehird> #concatenative is the factor channel. ask them. i don't code in factor much
22:21:10 <lament> i see :)
22:21:29 <lament> i don't want to go there, it would come across as trolling
22:21:55 <ehird> lament: they're very friendly
22:22:07 <ehird> just say that you were wondering if this looks ugly to anyone else
22:22:08 <wildhalcyon> alright, I need to get out of here. Thanks for the help ehird and lament
22:22:08 <ehird> or something
22:22:13 <ehird> bye wildhalcyon :)
22:22:47 -!- wildhalcyon has left (?).
22:22:48 <lament> aha, here it is in a different part in the cookbook, using a different combinator:
22:22:51 <lament> { { [ dup 0 > ] [ "positive" ] } { [ dup 0 < ] [ "negative" ] } { [ dup zero? ] [ "zero" ] } } cond
22:23:13 <ehird> lament: that will look better on multi lines
22:23:20 <ehird> { { [ dup 0 > ] [ "positive" ] }
22:23:20 <lament> why the 'dup's everywhere? because stack-based languages suck
22:23:25 <ehird> lament: err no
22:23:28 <ehird> because that's not typical code
22:23:29 <ehird> seriously
22:23:32 <ehird> #concatenative
22:23:49 <lament> also, the 'cond' at the end is just so ugly
22:23:57 <lament> maybe i'm not Japanese enough
22:23:58 <lament> to appreciate it
22:24:13 <ehird> lament: Slava Pestov is certainly not japanese..
22:24:16 <ehird> #concatenative
22:24:29 <lament> you're reading the program top to bottom. If the cond body is two pages long, you have to scroll down first to see that it's a cond, then scroll back up.
22:24:40 <ehird> #concatenative
22:24:45 <ehird> also
22:24:49 <lament> if it's not two pages long, you still have to do it mentally
22:24:49 <ehird> if you hae a two-page long cond body
22:24:52 <ehird> your code is fucked
22:25:23 <lament> if it's two lines long, you still have to glance at the end of the thing to see that it's a cond. The point is, you just can't read the code in order that it's written.
22:25:58 <lament> anyway, you don't program in Factor so i don't have to convince you of anything :)
22:26:00 <ehird> #concatenative
22:26:01 <ehird> #concatenative
22:26:01 <ehird> #concatenative
22:26:06 <ehird> lament: i do occasionally
22:27:06 <lament> you suggest me to go to #concatenative just to tell them "hey, your language sucks"?
22:27:47 <ehird> no
22:27:53 <ehird> to ask them about your queries in a reasoned manner
22:27:59 <ehird> and debate the plusses and minuses
22:28:07 <lament> as far as i can see, they're not queries.
22:28:08 <lament> :)
22:28:25 <ehird> lament: they are, they have the implicit 'Am I wrong?'
22:28:34 <ehird> you are new to factor, you are unconvinced. of course they'll be friendly
22:28:37 <lament> i'm just saying it sucks, and i think i have explained why. I'm not wrong. :)
22:28:55 -!- RedDak has quit (Remote closed the connection).
22:29:06 <ehird> lament: you are wrong, and #concatenative will tell you why
22:29:17 <lament> (not factor, which i'm sure is awesome. Just the idea of stack-based languages)
22:29:21 <ehird> being 100% sure that you are correct without asking the people who can truly tell you why they think you are wrong is just idiotic
22:29:57 <lament> well, i'm clearly right about the difficult-to-read word order
22:30:14 <ehird> lament: just ask
22:30:17 <ehird> and no
22:30:19 <lament> about what???
22:30:20 <ehird> you are not clearly right
22:30:25 <ehird> #concatenative. seriously
22:30:31 <lament> yes, i'm clearly right
22:30:40 <lament> just like i'd be clearly right if i said "lisp has lots of parentheses"
22:31:06 <ehird> #concatenativeeeeee
22:36:42 <ehird> lament: just joining doesn'tt help, i imagine
22:36:42 <ehird> :p
22:37:14 <lament> fine
22:38:47 <ehird> lament: neither does leaving again
22:38:48 <ehird> :p
22:39:34 <lament> since you do program in factor, feel free to tell me how i'm wrong if you ever find out :)
22:47:58 <lament> haha "While there is a very nice slope of indentation as one follows code down into the depths of nesting, that is about the only notion of elegance that could possibly come to one's mind when considering this code."
23:32:36 -!- ehird_ has joined.
23:33:32 -!- ehird has quit (Read error: 113 (No route to host)).
23:34:17 <ehird_> bye ghost
23:35:00 -!- ihope has joined.
23:35:08 <ihope> Ello.
23:48:32 -!- timotiis has quit ("leaving").
23:54:58 -!- wildhalcyon has joined.
←2008-03-30 2008-03-31 2008-04-01→ ↑2008 ↑all