←2010-01-11 2010-01-12 2010-01-13→ ↑2010 ↑all
00:02:30 -!- poiuy_qwert has quit ("This computer has gone to sleep").
00:06:12 -!- poiuy_qwert has joined.
01:10:28 <ehirdiphone> oklofok: yut.
01:16:39 <oklofok> no u r nut
01:17:59 <oerjan> a mad cadamia
01:21:02 <oerjan> or a loco coco
01:37:10 <ehirdiphone> oerjan: iwc :D
01:37:54 <ehirdiphone> NOW HOW CAN ANMASTER WIN
01:38:18 <oerjan> O_o
01:38:51 <oerjan> in case you didn't notice, we stopped that a while ago
01:39:04 -!- Asztal has quit (Read error: 110 (Connection timed out)).
01:39:35 <oerjan> also i didn't think today's was any special
01:40:35 <oklofok> did AnMaster grow up?
01:42:02 <oerjan> no i think he just got bored
01:43:09 <oklofok> i see, i see
01:49:34 <oklofok> he's a total nut
01:50:31 <oerjan> completely off the wal
01:50:42 <oklofok> :D
01:51:18 <oklofok> how do you come up with that stuff
01:51:59 <oerjan> magic.
01:53:28 <ehirdiphone> I didn't even rad the iwc
01:53:30 <ehirdiphone> Read
01:53:39 <oerjan> what a cheater
01:53:40 <ehirdiphone> I just wanteds
01:53:44 <ehirdiphone> Muffles
01:53:54 <ehirdiphone> Nifgle
01:54:04 <ehirdiphone> Sniffle
01:54:06 <ehirdiphone> I just
01:54:12 <ehirdiphone> I just wanted to win something in my life for once
01:54:12 <oerjan> Schnibble
01:54:14 <ehirdiphone> :(
01:54:59 <oerjan> how heartbreaking
01:54:59 <oklofok> :/
01:55:30 <ehirdiphone> I want to create an esolang called poop. It will be the poopiest language.
01:55:36 <oklofok> have you tried not sucking?
01:55:55 <oerjan> fecissima lingua
01:56:11 <oklofok> why adj first
01:56:19 <oklofok> oh wait
01:56:24 <oklofok> does latin always do that
01:56:43 <oerjan> no latin word order is pretty free
01:56:52 <oklofok> oh IC
01:57:26 <ehirdiphone> http://tunes.org/~nef/logs/esoteric/?C=S;O=A
01:57:32 <ehirdiphone> Our most spammy days.
01:57:58 <ehirdiphone> Yesterday is quite far up there at 204 KiB.
01:58:02 <oklofok> O=D
01:58:32 <ehirdiphone> That link sorts by size.
01:58:54 <ehirdiphone> Also that is a dude with a halo.
01:59:12 <ehirdiphone> A vertical halo.
01:59:18 <oerjan> dies spamissimae
01:59:42 <ehirdiphone> oklofok: Oic
01:59:48 <ehirdiphone> I had D
01:59:53 -!- ehirdiphone has quit (Remote closed the connection).
02:03:14 <oerjan> the top day seems to have a lot of bfjoust
02:04:09 <oerjan> um bottom actually, on that list
02:07:30 <oklofok> wait someone made bct in ///
02:07:41 <oerjan> you don't _say_
02:08:00 <oklofok> my point exactly, why didn't anyone tell me
02:08:03 * oerjan coughs discreetly
02:08:05 <oklofok> i thought it was an open problem
02:08:10 <oklofok> yeah i know it was you
02:08:34 <oklofok> well i didn't know, but you've shown interest for solving the infinite loop
02:08:46 <oerjan> yeah
02:08:46 <Sgeo> "You can erase all the key/value pairs within your Dictionary by using the Clear() method, which accepts no parameters. Alternatively, you can assign the variable to null. The difference between Clear and null is not important for memory, as in either case the entries are garbage-collected. Internally, I see that Clear calls Array.Clear, which is not managed code."
02:08:48 <oklofok> and it's in haskell
02:08:51 <Sgeo> http://dotnetperls.com/dictionary-keys
02:09:01 <Sgeo> Suddenly, I'm not so interested in reading the rest of this site
02:09:14 <oerjan> haskell is used like an assembler, there
02:09:17 <oklofok> OMG that's pretty :D
02:10:30 <oklofok> is there a simple trick?
02:10:36 <oerjan> it's much easier to program /// if you _don't_ try to use just / and \, incidentally :D
02:11:30 <oklofok> did you make the quine too?
02:11:33 <oklofok> i hate wikis
02:11:34 <oerjan> yes
02:11:37 <oklofok> i want names
02:11:47 <oklofok> i suppose that's not a general problem of wikis
02:11:58 <oklofok> but i hate them, so it seemed to fit.
02:12:21 <oklofok> is there a simple trick?
02:12:32 <oklofok> to programming it, did you have a revelation
02:12:40 <oklofok> did you see beneath the surface
02:12:44 <oklofok> did you touch its inner beast
02:12:53 <oerjan> well the _basic_ trick is that "quoting" thing, to find a way of encoding a character so you can _both_ copy the encoded version and unpack it
02:13:55 <oerjan> the "Simpler counter" section explains some things
02:14:08 -!- jpc has joined.
02:14:17 <oerjan> in the more readable style with free use of characters
02:15:55 <oerjan> that style is simple enough to be done by hand. i think i only used a few substitutions in vim to simplify the quoting/escaping, the rest is manual
02:16:48 <oerjan> the pure / \ style is far too verbose, unreadable, and too much to keep track of, so i used haskell to assemble it
02:17:20 <oklofok> yeah
02:18:12 <oerjan> in fact for that i had trouble keeping it under perl's 32K or so regexp recursion limit, i had to redesign my tokens several times to shorten it :D
02:18:46 <oerjan> (using my perl /// interpreter)
02:19:58 <oklofok> heh
02:20:04 <oerjan> but the main additional idea for that is to find a way to choose tokens consisting of only / and \ that nevertheless are unlikely to clash with the main scaffolding of the program
02:20:12 <oklofok> is it incredibly fast? i just uninstalled my perl interpreter yesterday
02:21:18 <oerjan> it's pretty naive perl, but perl's regexes are quite optimized, so it's still the fastest /// interpreter afaik
02:21:27 <oklofok> i mean the /// prog :P
02:21:35 <oerjan> oh that, heavens no
02:22:04 <oerjan> i suppose it could be faster with a less naive /// interpreter
02:22:20 <oklofok> but is it like 2^ or ^2
02:22:28 <oerjan> it takes several minutes to run the example code
02:22:39 <oerjan> oh i think it is polynomial at least
02:23:00 <oerjan> (at most)
02:23:00 <oklofok> right
02:23:08 <oklofok> yeah at least at most
02:23:26 <oerjan> there is nothing unary or anything, it's just that by the nature of /// it needs to recopy itself a lot
02:24:02 <oklofok> right, copying the program is polynomial stuff usually
02:25:16 <oerjan> and a single /// command is not exactly constant time either, it needs to scan through the entire rest of program every time
02:25:48 <oerjan> (this is one point where the interpreter could have been smarter, after a match it just starts again from the beginning)
02:26:13 <oerjan> (the perl interpreter)
02:26:25 -!- augur has joined.
02:26:32 <oklofok> by storing the program more sensibly, you could probably mostly just look-up where substitutions happen
02:26:47 <oerjan> hm perhaps
02:27:02 <augur> hayo
02:27:14 <oklofok> helloes
02:27:19 <oerjan> hi augur
02:27:44 <augur> hey
02:27:45 <augur> sup
02:34:39 <oerjan> oklofok: i also made some programs using the http://esoteric.voxelperfect.net/wiki/Itflabtijtslwi input extension
02:37:30 <oklofok> you're so awesome
02:37:34 <oklofok> i wish i was as awesome
02:38:49 <oerjan> now, now. if you also take a look at my BCT interpreter in Eodermdrome, i think you've pretty much exhausted all the esolanging i did last year. so maybe awesome, but definitely slow.
02:39:27 <oklofok> if you , you've exhausted all the esolanging *i* did last year
02:39:32 <oklofok> :P
02:39:38 <oerjan> (that one is untested, btw, since there isn't afaik any eodermdrome interpreter yet
02:39:39 <oklofok> at least i think
02:39:41 <oerjan> )
02:39:49 <oklofok> well i made an eodermdrome interp
02:39:50 <oerjan> could be
02:39:55 <oerjan> oh right...
02:40:03 <oklofok> but, well, i probably didn't put it anywhere.
02:40:18 <oklofok> so it's gone, all my hd's are broken
02:40:37 <oerjan> darn
02:41:12 <oklofok> but isn't it incredibly trivial to write one
02:41:50 <oerjan> not if you want it fast?
02:42:12 <oklofok> well it's graph rewriting, so...
02:42:26 <oklofok> i just mean for the purpose of testing
02:42:34 <oklofok> what does speed matter
02:43:08 <oerjan> maybe
02:44:47 <oklofok> i don't know how hard optimization is, since i don't know anything about the typical eo prog, but probably you'd just have to store a bit of info about where different kinds of subgraphs live atm
02:45:31 <oklofok> not that us mathematicians are allowed to think about such trivialities
02:46:08 <oerjan> right, right
02:46:29 <oklofok> 5 hours till lecture!
02:46:53 <oklofok> i better start preparing mentally
02:47:03 <oerjan> aka sleep?
02:47:21 <oerjan> or maybe it's too late for that
02:47:23 <oklofok> i actually didn't mean anything by that, realized seconds later i should've meant sleeping
02:47:34 <oklofok> so really i could've said "yes" here
02:48:23 <oerjan> food ->
02:48:25 <oklofok> i slept from like 18 to 22, which is why i'm not asleep yet
02:48:38 <oerjan> ah.
02:49:08 <oklofok> i was gonna suggest we go eat at a local restaurant, then realized you are not the one person i usually talk to.
02:49:37 <oklofok> (classy hamburger restaurant.)
02:50:08 <oerjan> heh
02:50:36 <oerjan> as for me, i'm going to my local bread drawer
02:51:26 <oklofok> i have bread + hunger, but i don't want to wake up the female pol
02:51:34 <oklofok> oh wait i'm a fok now
02:54:45 <oerjan> you are so foked
02:55:21 <oerjan> *munch*
02:55:53 <oklofok> :'(
02:56:25 <oerjan> i suppose a finnish famine is no joking matter
02:59:18 <oklofok> actually i think she's awake already
02:59:34 <oklofok> the typity type type makes noise
02:59:47 <oklofok> so.........
03:00:02 <oklofok> one more theorem, then i'll do it
03:09:47 -!- coppro has joined.
03:49:00 -!- lifthrasiir has joined.
03:54:14 -!- oerjan has quit ("Good night").
03:57:09 -!- jpc has quit ("I will do freaking anything for a new router.").
04:02:44 -!- augur has quit (Read error: 60 (Operation timed out)).
04:25:31 -!- coppro has quit ("Reconnecting…").
04:25:47 -!- coppro has joined.
05:40:08 -!- Cerise has quit (Remote closed the connection).
06:02:44 -!- BeholdMyGlory has quit (Remote closed the connection).
06:08:33 -!- bsmntbombdood_ has changed nick to bsmntbombdood.
06:27:25 -!- FireyFly has joined.
07:22:28 -!- FireyFly has changed nick to FireFly.
07:48:51 -!- poiuy_qwert has quit ("Leaving").
07:52:18 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:18:44 -!- FireFly has quit (farmer.freenode.net irc.freenode.net).
08:18:44 -!- zeotrope has quit (farmer.freenode.net irc.freenode.net).
08:18:45 -!- uorygl has quit (farmer.freenode.net irc.freenode.net).
08:18:45 -!- puzzlet has quit (farmer.freenode.net irc.freenode.net).
08:18:45 -!- mtve has quit (farmer.freenode.net irc.freenode.net).
08:18:45 -!- HackEgo has quit (farmer.freenode.net irc.freenode.net).
08:18:46 -!- SimonRC has quit (farmer.freenode.net irc.freenode.net).
08:18:46 -!- Ilari has quit (farmer.freenode.net irc.freenode.net).
08:21:13 -!- FireFly has joined.
08:21:13 -!- zeotrope has joined.
08:21:13 -!- puzzlet has joined.
08:21:13 -!- uorygl has joined.
08:21:13 -!- HackEgo has joined.
08:21:13 -!- SimonRC has joined.
08:21:13 -!- mtve has joined.
08:21:13 -!- Ilari has joined.
08:22:08 -!- FireFly has quit ("Leaving").
08:22:50 -!- FireFly has joined.
08:29:55 -!- FireFly has quit ("Leaving").
08:55:52 -!- Pthing has quit (Read error: 104 (Connection reset by peer)).
09:04:29 -!- ais523 has joined.
09:20:33 -!- coppro has quit ("I am leaving. You are about to explode.").
10:50:27 -!- BeholdMyGlory has joined.
10:56:02 -!- MigoMipo has joined.
11:07:17 -!- MizardX has joined.
11:09:38 -!- MizardX has quit (Connection reset by peer).
11:09:59 -!- MizardX has joined.
11:10:48 -!- MizardX has quit (Read error: 104 (Connection reset by peer)).
11:12:22 -!- MizardX has joined.
11:15:07 -!- MigoMipo has quit (Remote closed the connection).
11:33:30 -!- Asztal has joined.
12:19:04 <AnMaster> I hit an issue with efunge and ATHR
12:19:05 <AnMaster> which is
12:19:12 <AnMaster> reliable testing of thread handling
12:19:30 <AnMaster> btw, I'm on a unreliable wlan connection + ssh tunnel to my bouncer
12:20:03 <AnMaster> and I forgot to exit client at home, so no scrollback replayed, and won't happen if I lose connection from here
12:22:12 <ais523> AnMaster: does Erlang have testsuites for that sort of thing already?
12:22:29 <ais523> I can imagine a race-condition testsuite that puts delays in places systematically until it's checked all sequencings of thread interleaving
12:23:12 <AnMaster> ais523, well there is stuff, but the stuff I need to test is that I don't have race conditions
12:23:26 <ais523> exactly
12:23:31 <AnMaster> and that really is hard to check, since instrumenting stuff can change thing
12:23:34 <AnMaster> things*
12:23:47 <AnMaster> ais523, there nothing like helgrind afaik though
12:24:16 <ais523> maybe you could do it manually, using a sequence of mutexes or semaphores or something to force the threads to interleave in all possible orders
12:25:07 <AnMaster> ais523, well, since erlang is based on message passing it it has a server for locks, which means, it is implemented as message sending and waited underneath
12:25:19 -!- oerjan has joined.
12:25:30 -!- Sgeo has joined.
12:25:50 <AnMaster> ais523, also there are some settings for debugging to change length of time between context switches
12:26:07 <AnMaster> ais523, also there is the SMP issue. And message passing between OS level threads
12:26:08 <ais523> AnMaster: I think you're missing the point of what I'm saying
12:26:27 <AnMaster> and why did that line render as a bar-code lookalike for a moment there...
12:26:32 * AnMaster prods xchat.
12:26:40 <AnMaster> ais523, possibly
12:27:29 <AnMaster> ais523, anyway not only befunge instruction level interleaving, but what about the functions called in the erlang code
12:27:47 <AnMaster> what if it switches to another thread in the middle of io:format() for exampe
12:27:49 <AnMaster> example*
12:28:00 <ais523> AnMaster: ah, can't you instrument those as well?
12:28:03 <AnMaster> (I'm pretty sure that won't hurt, but you get the idea)
12:28:10 <ais523> I must get around to implementing DO INEVITABLY in INTERCAL
12:28:16 <AnMaster> ais523, well, up to a level. A bit to hard to inverleave
12:28:17 <ais523> so you can inject test code into other bits of code
12:28:42 <AnMaster> ais523, can you inject code in printf() ?
12:29:02 <ais523> AnMaster: you can inject it into 1010 and the other stdlib functions, yes
12:29:12 <AnMaster> hm
12:29:20 <AnMaster> ais523, well not the C standard library printf though
12:29:48 <ais523> no, but only because it isn't written in INTERCAL
12:29:57 <AnMaster> ais523, and correct usage of the erlang stdlib is the level I'm currently worried at.
12:31:17 <AnMaster> ais523, also it isn't just 2 threads at that level. For example, I have the following user space threads for 2 befunge threads: befunge1, befunge2, io_server, fspace_server, id_mapper, and a few more iirc
12:31:28 <AnMaster> and erlang has a host on it's own
12:31:35 <ais523> AnMaster: that's just more combinations to test
12:32:11 <AnMaster> ais523, the number to test grows quite rapidly. Especially with SMP where not only are they interleaved, but actually executing at once on different cores
12:32:23 <oerjan> it's no big matter, testing all combinations shouldn't take more than a handful of universe heat deaths anyway
12:32:29 <AnMaster> oerjan, :D
12:33:06 <AnMaster> though I believe the erlang system is probably reliable, I had to write a custom supervisor behaviour for the befunge threads
12:33:12 <AnMaster> the default one didn't cut it
12:33:49 <AnMaster> (a behaviour is a ready-made module for the "tricky" stuff, so you just implement callbacks, you could call using them a design pattern of erlang)
12:34:24 <AnMaster> (for example, generic server process, generic supervisor process, generic state machine, and iirc a few more)
12:35:15 <AnMaster> (and I'm quite worried about my own superrvisor, even though I based it on the one in erlang.)
12:36:21 <AnMaster> I have test cases to ensure that things work correctly for a single thread, and doesn't do completely incorrect for two threads. That takes me partway at least.
12:37:13 <AnMaster> ais523, anyway, thread race conditions and such is tricky to detect in any language. Even when there are tools to help you
12:37:36 <ais523> I should write an INTERCAL race-condition checker
12:37:52 <ais523> probably by checking different alignments in a loop, with a callback to report success or failure of the program
12:38:40 <AnMaster> ais523, testing all possible combinations becomes infeasible quite quickly. Well depends on how well defined the interleaving is
12:38:56 <ais523> you could just do random combinations
12:39:00 <ais523> you'll end up testing all of them eventually
12:39:15 <AnMaster> ais523, likely to find a few, but far from all. Something like klee but for threads sounds better
12:39:25 <AnMaster> not sure it can be done
12:39:31 <AnMaster> or if it even makes sense
12:40:17 <AnMaster> (since klee tries all possible paths through the program to detect bugs. And uses tricks such as calculating possible range of values a variable might have)
12:44:25 * oerjan notes that count dooku in D&D mangles even his _french_
12:44:36 <oerjan> "zut alors", indeed
12:44:58 <oerjan> or wait
12:45:06 * oerjan fails french
12:54:08 <AnMaster> I think the erlang manual for the event tracer is slightly old: "[..] by clicking (press and release the mouse button 1) on the event label text or on the arrow"
12:54:25 <AnMaster> either old, or just overly detailed :)
12:56:09 <cheater> lol
12:56:46 -!- augur has joined.
12:58:33 -!- ais523 has quit (Remote closed the connection).
13:00:07 -!- Slereah_ has quit (Read error: 60 (Operation timed out)).
13:01:12 -!- Slereah has joined.
13:10:57 -!- BeholdMyGlory has quit (Remote closed the connection).
13:41:34 <AnMaster> bbl
13:57:52 -!- lifthrasiir has quit (Read error: 60 (Operation timed out)).
14:08:28 -!- lifthrasiir has joined.
14:08:39 -!- oerjan has quit ("leaving").
14:18:46 <fizzie> "puts delays in places systematically until it's checked all sequencings of thread interleaving" sounds very much like Promela + Spin.
14:19:32 <fizzie> http://spinroot.com/spin/whatispin.html was used in our parallel systems course.
14:20:37 <fizzie> Doesn't really help with Erlang code, of course.
14:40:24 -!- Cerise_ has joined.
14:48:44 -!- augur has quit (Read error: 60 (Operation timed out)).
14:48:53 -!- anmaster_l has joined.
14:48:58 <anmaster_l> how very strange
14:49:18 <anmaster_l> my desktop locked up the moment I plugged in the usb mouse
14:49:50 <anmaster_l> I had just before unlocked it (I use slock)
14:50:02 <anmaster_l> and this is the second time that happens when I plug in the mouse
14:50:19 <anmaster_l> (I take the mouse with me, if I plan to work for extended periods on my laptop)
14:50:24 <anmaster_l> so: hardware issue?
14:50:31 -!- AnMaster has quit (Connection reset by peer).
14:52:25 -!- AnMaster has joined.
14:55:14 <anmaster_l> nothing relevant in system logs, sysrq didn't work
15:14:07 -!- augur has joined.
15:14:16 <augur> well hello there
15:20:46 <AnMaster> hi
15:49:58 -!- FireFly has joined.
16:11:16 -!- soupdragon has joined.
16:26:52 -!- ehird has joined.
16:27:18 <ehird> No ais523 :-(
16:29:25 <ehird> 04:54:08 <AnMaster> I think the erlang manual for the event tracer is slightly old: "[..] by clicking (press and release the mouse button 1) on the event label text or on the arrow"
16:29:26 <ehird> 04:54:25 <AnMaster> either old, or just overly detailed :)
16:29:28 <ehird> Two words: Emacs tutorial.
16:29:51 <AnMaster> ehird, oh?
16:29:54 <AnMaster> hm true
16:30:17 <ehird> Emacs commands generally involve the CONTROL key (sometimes labeled
16:30:19 <ehird> CTRL or CTL) or the META key (sometimes labeled EDIT or ALT). Rather than
16:30:20 <ehird> write that in full each time, we'll use the following abbreviations:
16:30:22 <ehird> C-<chr> means hold the CONTROL key while typing the character <chr>
16:30:23 <ehird> Thus, C-f would be: hold the CONTROL key and type f.
16:30:25 <ehird> M-<chr> means hold the META or EDIT or ALT key down while typing <chr>.
16:30:26 <ehird> If there is no META, EDIT or ALT key, instead press and release the
16:30:28 <ehird> ESC key and then type <chr>. We write <ESC> for the ESC key.
16:30:41 <AnMaster> "We write <ESC> for the ESC key." :D
16:30:43 <ehird> You can use the arrow keys, ← I'm surprised this isn't qualified with "if you have them"
16:30:53 <ehird> Each line of text ends with a Newline character, which serves to
16:30:55 <ehird> separate it from the following line. (Normally, the last line in
16:30:56 <ehird> a file will have a Newline at the end, but Emacs does not require it.)
16:30:57 <ehird> When you move past the top or bottom of the screen, the text beyond
16:30:59 <ehird> the edge shifts onto the screen. This is called "scrolling". It
16:31:01 <ehird> enables Emacs to move the cursor to the specified place in the text
16:31:02 <ehird> without moving it off the screen.
16:31:04 <AnMaster> ehird, about the arrow keys, it would have been if ais had written it
16:31:17 <ehird> You can also move the cursor with the arrow keys, if your terminal has
16:31:18 <ehird> arrow keys
16:31:26 <ehird> AnMaster: ding!
16:31:27 <ehird> bingo
16:31:33 <ehird> *arrow keys.
16:31:43 <ehird> If you are using a windowed display, such as X or MS-Windows, there
16:31:44 <soupdragon> One word: vimtutor
16:31:45 <ehird> should be a tall rectangular area called a scroll bar on one side of
16:31:46 <ehird> the Emacs window. (There are other tall rectangles on either side of
16:31:48 <soupdragon> (pwnd)
16:31:48 <ehird> the Emacs display. These "fringes" are used for displaying
16:31:49 <ehird> continuation characters and other symbols. The scroll bar appears on
16:31:51 <ehird> only one side, and is the outermost column on that side.)
16:31:52 <ehird> You can scroll the text by clicking the mouse in the scroll bar.
16:31:55 <ehird> If your mouse has a wheel button, you can also use this to scroll. ← Now that's modern!
16:32:02 <AnMaster> haha
16:32:14 <AnMaster> soupdragon, it is even worse then?
16:32:21 <ehird> No, vimtutor is reasonable.
16:32:24 <soupdragon> I need programming help
16:32:26 <ehird> Which makes it BOOOOOO-RING
16:32:31 -!- snowscape has joined.
16:32:32 <AnMaster> ehird, exactly
16:32:48 <ehird> In order to make the text you edit permanent, you must put it in a
16:32:49 <ehird> file. Otherwise, it will go away when your invocation of Emacs goes
16:32:51 <ehird> away. In order to put your text in a file, you must "find" the file
16:32:53 <ehird> before you enter the text. (This is also called "visiting" the file.)
16:32:54 <ehird> Finding a file means that you see the contents of the file within
16:32:56 <ehird> Emacs. In many ways, it is as if you were editing the file itself.
16:32:57 <ehird> However, the changes you make using Emacs do not become permanent
16:32:59 <AnMaster> ehird, iirc you used to have to change a setting to make the scroll wheel work in emacs
16:32:59 <ehird> until you "save" the file. This is so you can avoid leaving a
16:33:02 <snowscape> Has anyone got a font that looks like the output of a dot matrix printer? :-)
16:33:03 <ehird> half-changed file on the system when you do not want to. Even when
16:33:04 <soupdragon> is d as in dy/dx just like 0.00000000...00001 (some kind of infintesimal)?
16:33:05 <ehird> you save, Emacs leaves the original file under a changed name in case
16:33:07 <ehird> you later decide that your changes were a mistake.
16:33:09 <soupdragon> wait ill ask #math
16:33:10 <ehird> I think the fact that the Emacs tutorial is half Emacs tutorial, half "how computers work" totally cements the fact that Emacs is a wannabe OS.
16:33:18 <ehird> soupdragon: yeah i think so
16:33:43 <ehird> since you can approximate it better and better with 0.1,0.01,0.001,etc
16:33:50 <AnMaster> ehird, I more usually use µemacs rather than gnu emacs for file editing these days
16:33:51 <soupdragon> I'm trying to read about non-standard analysis but it seems to require stuff like ultrafilters
16:33:55 <AnMaster> and gnu emacs mostly for irc
16:34:02 <ehird> AnMaster: o_O
16:34:05 <ehird> AnMaster: What's happened to you?
16:34:15 <AnMaster> ehird, hm?
16:34:17 <ehird> lol@keeping GNU Emacs just for ERC, it isn't an *especially* good client :-)
16:34:34 <AnMaster> ehird, well there are a few other major/minor modes I find useful
16:34:53 <ehird> microEmacs doesn't do things like inferior/interaction modes, does it?
16:35:03 <AnMaster> ehird, not that I found anyway
16:35:03 <ehird> like interacting with lisp while editing a lisp program
16:35:14 <ehird> thus it's only Emacs in a very tenuous keybindings sense
16:35:19 <AnMaster> ehird, lisp is one of the things I edit in gnu emacs still
16:35:28 <ehird> you edit lisp?
16:35:45 <AnMaster> ehird, well, a bit, more often scheme than elisp though
16:35:55 <AnMaster> bbl
16:36:24 <ehird> AnMaster: Clearly you must use amend for everything.
16:36:32 <soupdragon> alter
16:36:49 <AnMaster> ehird, have you started coding on it yet?
16:36:55 <ehird> soupdragon: amend.
16:36:57 <ehird> AnMaster: no :P
16:37:03 <ehird> designs are percolating in my head
16:37:40 <AnMaster> ehird, what about your linux distro? your os? your <whatever else it was>
16:38:00 <ehird> I have thought about my OS as recently as yesterday, actually, and mentioned that fact.
16:38:06 <ehird> I do have a list of long-term projects, you know.
16:38:28 <AnMaster> ehird, well, yes, but due to adding new ones the old ones just seem to get pushed further and further back
16:38:35 <ehird> My OS, if it is ever incarnated in a form good enough to be worthy of being called my original vision, will most likely take something like ten years.
16:38:36 -!- snowscape has quit ("ChatZilla 0.9.86 [Firefox 3.5.7/20091221164558]").
16:38:46 <ehird> Not once was it intended as a short-term project.
16:39:03 <AnMaster> ehird, well sure. What about the editor
16:39:16 <oklofok> DEATH TO INFIDELS
16:39:18 <ehird> My Linux distro I'm undecided on. Kubuntu seems to be annoying me a little enough amount that I might just stick with it; Linux is crap in general anyway. :P
16:39:22 <ehird> AnMaster: The editor? You mean amend?
16:39:27 <ehird> That would be what I am talking about now.
16:39:28 <AnMaster> ehird, well yeah
16:39:39 <AnMaster> ehird, well yes. But I mean, do you have any time scale for it
16:39:43 <AnMaster> 1 year? 10 years?
16:39:50 <ehird> Yes, in fact.
16:39:50 <oklofok> 2 weeks or so
16:39:50 <AnMaster> or somewhere in between
16:39:52 <ehird> Lemme check my logs.
16:40:27 <ehird> [Monday 11 Jan 2010] [01:17:09] <ehird> Well, given design, general toolkit mumbling and procrastination, I'll probably start serious coding on it in 1.5 to 2 weeks. Let's say another week or two, so 1.5, to get something that can do the most basic of editing tasks. Two more to get modes working alright.
16:40:29 <ehird> [Monday 11 Jan 2010] [01:17:20] <ehird> And another one and a half weeks to do polishing up.
16:40:30 <ehird> [Monday 11 Jan 2010] [01:17:46] <ehird> So about 7 weeks; maybe less, maybe more.
16:40:31 <ehird> [Monday 11 Jan 2010] [01:17:53] <ehird> Hopefully less.
16:40:33 <ehird> [Monday 11 Jan 2010] [01:17:55] <ehird> I can code like hell.
16:40:35 <ehird> [Monday 11 Jan 2010] [01:18:10] <ehird> So let's say 5-7 weeks; most likely around 5.5-6.
16:40:36 <ehird> [Monday 11 Jan 2010] [01:18:31] <ehird> coppro: But if you can deal with oft-brokenness, you could start using it in, like, 3.5 weeks.
16:40:56 <oklofok> so about 2 weeks, give or take 5
16:41:00 <ehird> That's for the earliest version you're likely to want to use.
16:41:06 <ehird> oklofok: Yuk yuk yuk.
16:41:08 <AnMaster> hm
16:41:14 -!- BeholdMyGlory has joined.
16:41:24 <AnMaster> ehird, assuming you don't become preoccupied by other things
16:41:38 <ehird> Of course, if you want something even remotely as complete or stable as any half-popular editor, or don't want to code to get things working, well, come back in a year or so.
16:41:42 <oklofok> or actually just give
16:41:48 <ehird> AnMaster: Indeed. Is anybody waiting for my editor with every breath?
16:41:59 <ehird> Well, coppro seems to want it quite a bit, but nobody else, really.
16:42:20 <oklofok> what? i'm basically basing my whole future on your editor
16:42:23 <ehird> I'm a hobbyist programmer, I'm not getting paid for this. If I don't find a project fun, of course I'll code something else instead.
16:42:23 <AnMaster> ehird, well, I will probably try it out, and if I like it, who knows
16:42:29 <ehird> oklofok: I'll have it done yesterday
16:42:36 <ehird> AnMaster: That isn't waiting for it with every breath :P
16:42:36 <oklofok> it's like a father to me
16:42:41 <AnMaster> also I find that time schedule slightly unrealistic, some bits overly optimistic and other parts overly pessimistic
16:42:52 <ehird> AnMaster: Hopefully those cancel out, eh.
16:42:56 <AnMaster> like basic editing would take as long as modes
16:43:07 <ehird> It would if you want a decent structure.
16:43:07 <AnMaster> somehow I think modes will take longer
16:43:12 <oklofok> what are modes
16:43:13 <AnMaster> ehird, hm maybe
16:43:30 <ehird> You need to come up with the right structure for the text so you can e.g. delete a character in the middle without shifting the rest of the buffer.
16:43:36 <AnMaster> oklofok, define: says: "a particular functioning condition or arrangement; "switched from keyboard to voice mode" "
16:43:40 <AnMaster> amonst other things
16:43:45 <ehird> You need to come up with decent keybindings and a general editing philosophy.
16:43:52 <ehird> You need to write UIs for things like incremental searching.
16:44:00 <AnMaster> oklofok, or more precise, think like modes in emacs
16:44:02 <ehird> Heck, you need to implement incremental searching; not the easiest thing ever.
16:44:08 <ehird> oklofok doesn't know Emacs.
16:44:14 <AnMaster> <ehird> You need to come up with the right structure for the text so you can e.g. delete a character in the middle without shifting the rest of the buffer. <-- surely this has already been solved
16:44:18 <oklofok> hey i even had emacs installed
16:44:20 <ehird> AnMaster: Of course.
16:44:20 <AnMaster> how do current editors do it
16:44:24 <ehird> AnMaster: Multiple times, which is the whole point.
16:44:24 <oklofok> although i did uninstall it a few days ago
16:44:40 <oklofok> i think i've like saved a file or something in it
16:44:42 <ehird> oklofok: c-mode is for editing C, python-mode is for editing Python, python-interaction-mode is for using Python's >>> console while editing an associated file.
16:44:51 <oklofok> oh
16:44:51 <ehird> irc-mode is for wasting time.
16:44:51 <AnMaster> <ehird> You need to write UIs for things like incremental searching. <-- I'm quite fond of how emacs does that.
16:45:12 <ehird> AnMaster: Yes, but you can't say "be case sensitive" or "use regexps" in an Emacs C-s without doing something else.
16:45:32 <ehird> My idea is the same as Emacs' UI, except it pops up a tiny embedded UI in the bottom of the screen with the text entry, and:
16:45:32 <AnMaster> good point.
16:45:47 <ehird> [X] Case insensitive [ ] Regular expression [ Next ] [ Previous ]
16:45:49 <AnMaster> ehird, this won't be GUI right?
16:45:51 <ehird> and each of those having a keyboard shortcut
16:45:55 <AnMaster> as in, it will work in terminal
16:46:02 <AnMaster> won't need GTK or QT or such
16:46:08 <ehird> AnMaster: No, it won't. Not unless you want to port Tk to ncurses.
16:46:13 <ehird> Curses is retarded anyway. Get a windowing system.
16:46:33 <AnMaster> Tk? How can you like how it looks?
16:46:44 <ehird> I was hoping you'd say that!
16:46:51 <ehird> http://tktable.sourceforge.net/tile/screenshots/unix.html
16:46:58 <ehird> Tk 8.5 onwards have a new theming engine.
16:47:07 <ehird> Note how Default, Revitalized and Clam aren't bad.
16:47:11 <oklofok> didn't you already tell AnMaster once to look at that if he thinks tk is ugly
16:47:12 <ehird> Also note that it uses freetype and the like.
16:47:16 <ehird> So antialiased fonts, too.
16:47:19 <ehird> oklofok: prolly
16:47:25 <AnMaster> ehird, hm okay
16:47:35 <AnMaster> ehird, btw I use a bitmap font in emacs when I use it in X mode
16:47:35 <ehird> Besides, it's not as if the editor will have many GUI widgets showing 99% of the time.
16:47:44 <ehird> AnMaster: Well, it might work.
16:47:54 <ehird> UI and code fonts are different things, though. :P
16:48:07 <AnMaster> well yes
16:48:16 <ehird> In fact, there might even be the possibility of setting the text font vs the code font.
16:48:19 <oklofok> one standard monospaced font for all purposes
16:48:23 <ehird> So you could read emails and IRC proportionally.
16:48:26 <ehird> If you want.
16:48:27 <oklofok> and death to infidels
16:48:29 <AnMaster> ehird, iirc openmotif supports fontconfig these days even.
16:48:41 <ehird> Freetype, you mean.
16:48:45 <AnMaster> oh maybe that was it
16:48:45 <ehird> Fontconfig is just the configuramotron.
16:48:50 <AnMaster> well, ttf fonts anyway
16:48:56 <AnMaster> that look antialiased and stuff
16:48:57 <ehird> Xft, you mean, then.
16:49:12 <oklofok> anyway this has been most educational, tell me when the editor has tetris
16:49:16 <AnMaster> ehird, well, I don't remember the details. Point was "not just X fonts any more"
16:49:17 * oklofok goes ->
16:49:56 <ehird> anyway, so, I think I've changed my original stance on pritners
16:50:00 <AnMaster> ehird, so did you decide on a language for amend?
16:50:01 <ehird> ("I don't believe in printing")
16:50:10 <AnMaster> ehird, oh?
16:50:17 <ehird> i'm sort of craving a black and white laser printer to, like, print papers on and stuff
16:50:27 <AnMaster> ehird, there is no such thing as a printer
16:50:29 <ehird> never inkjet though, i will never put myself through that horror ever again
16:50:44 <ehird> If I need colour, I'll go and raise lots of money and buy a colour laser printer
16:50:46 <ehird> but NEVER inkjet
16:50:47 <AnMaster> ehird, notice I have a black fleece jacket and I'm a man. (never mind the blue jeans)
16:50:47 <ehird> NEVER
16:50:58 <ehird> AnMaster: ...okay?
16:51:03 <AnMaster> ehird, sorry, bad joke
16:51:05 <ehird> That was... completely non-sequiturish.
16:51:08 <AnMaster> ehird, no
16:51:19 <AnMaster> ehird, "<AnMaster> ehird, there is no such thing as a printer" "<AnMaster> ehird, notice I have a black fleece jacket and I'm a man. (never mind the blue jeans)" <-- MIB
16:51:35 <ehird> >_<
16:51:36 <ehird> ANYWAY
16:51:46 <ehird> As far as language, I'm honing in on various possibilities.
16:51:49 <ehird> Only a few, actually.
16:52:08 <AnMaster> why laser rather than inkjet btw?
16:52:35 <ehird> AnMaster: Laser is: Quieter. Doesn't do that stupid fucking thing where it prints, like, half of the page because one of your colours is low.
16:52:43 <ehird> The toner *doesn't* cost more than the printer.
16:53:18 <ehird> And they're far more reliable.
16:53:21 <AnMaster> ehird, well, iirc Kodak made a product line where the printer was expensive and the ink cheap
16:53:32 <AnMaster> I may have dreamt this
16:53:47 <ehird> Also, laser printers are for hardcore geeks who love network printers.
16:53:52 <ehird> And dammit, I love the idea of network printers.
16:54:01 <ehird> So, as I was saying.
16:54:02 <AnMaster> I haven't seen a laser able to print on photo paper yet
16:54:14 <ehird> That's okay. With a black-and-white laser, all I'll be printing is text.
16:54:19 <ehird> And that is absolutely fine by me.
16:54:22 <ehird> Tcl was a consideration because of closeness to Tk but the general fuckedupness of that language and underscore_naming_convention made me ditch that idea.
16:54:36 <AnMaster> ehird, lots of languages have tk bindings
16:54:38 <ehird> Scheme is a consideration, because I like Scheme.
16:54:49 <ehird> AnMaster: Yes, but they're not close to Tk in a fits-in-with-the-language way.
16:54:55 <AnMaster> true
16:54:58 <ehird> And also because Scheme is good for extending syntax and stuff for e.g. mode definition and the like.
16:55:10 <ehird> Also, lexical fucking scope! I would beat elisp to a feathery pulp.
16:55:24 <ehird> C is also some sort of consideration because, well, it's C.
16:55:33 <AnMaster> ehird, you would probably have to patch the interpreter you used somewhat to fit the editor better
16:55:44 <ehird> Go is also a consideration because it'd be like C without the memory management, and also I could spawn parallel jobs easily.
16:55:49 <ehird> Which I guess could be useful... for something...
16:56:06 <ehird> Of course, C and Go leave the "extension language" problem open.
16:56:17 <ehird> AnMaster: Doubtful. Edwin gets fine with just stock MIT Scheme.
16:56:18 <AnMaster> if you don't want tcl and you do want tk you will have to live with those language bindings in any case
16:56:23 <ehird> Admittedly, it's written by the MIT Scheme people.
16:56:25 <ehird> I know that.
16:56:33 <ehird> But it's an advantage Tcl has.
16:57:03 <ehird> http://code.google.com/p/chromium/issues/detail?id=31482
16:57:14 <ehird> Uh oh, serious goat teleportation issues with Chrome
16:57:21 <AnMaster> ehird, so why not go for erlang: it has tk bindings, it has concurrency, you could do the extension language as erlang itself (though I'm not sure how easy this would be, probably slightly more complex than for scheme)
16:57:31 <AnMaster> and erlang has lexical scope
16:57:50 <ehird> Well, I don't know Erlang, for one. But assuming I do:
16:58:06 <ehird> Tk bindings, sure, but does it have bindings to the ttk part of Tk 8.5, i.e. the part that lets you use the themed widgets, i.e. not be hideous?
16:58:29 <AnMaster> ehird, for ttk: I'm not sure. What should I look for (I never used those bindings)
16:58:32 <ehird> Concurrency, yes, but using Erlang for a task that has concurrency only as a small part seems... weird.
16:58:40 <ehird> AnMaster: Link me to the docs, I guess.
16:58:43 <AnMaster> sec
16:59:04 <AnMaster> http://erlang.org/doc/apps/gs/index.html
16:59:05 <ehird> The extension language as Erlang itself would work, but it doesn't let you define your own syntax, so things like mode definition would be a little awkward.
16:59:15 <AnMaster> though I believe the focus nowdays is on wxgtk bindings
16:59:20 <ehird> Unsurprising.
16:59:27 <ehird> I mean, there's no problem with Erlang, I just don't see why I should particularly choose it over another language.
16:59:47 <ehird> AnMaster: wow, that's a really bare-bones binding
16:59:50 <ehird> Nope, no ttk.
16:59:54 <AnMaster> ah
17:00:01 <ehird> How nice are the gtk bindings?
17:00:06 <AnMaster> ehird, wxgtk
17:00:09 <ehird> ???
17:00:12 <AnMaster> so it is wxwidgets
17:00:15 <ehird> wxWidgets except it only works with GTK? :P
17:00:15 <AnMaster> you probably know of it
17:00:18 <AnMaster> ehird, no
17:00:28 <ehird> I'm mainly avoiding the big toolkits because their API is hideously complex and sucks to use.
17:00:29 <AnMaster> ehird, afaik it works with all wxwidgets ports
17:00:31 <ehird> And makes me want to kill myself.
17:00:39 <AnMaster> but on linux it is wxgtk that exists
17:00:41 <AnMaster> afaik
17:00:58 <ehird> http://erlang.org/doc/apps/wxgtk/index.html ← 404
17:01:01 <AnMaster> http://erlang.org/doc/apps/wx/index.html <-- hideously complex seems nice
17:01:13 <AnMaster> nice desc*
17:01:27 <ehird> Oh, yes, and the other reason that I forgot: Bah, objects!
17:01:29 <AnMaster> probably you don't need to use all those functions
17:01:30 <ehird> I poop on them.
17:01:38 <AnMaster> ehird, mostly erlang doesn't have them
17:01:41 <AnMaster> if that is what you meant
17:01:49 <ehird> But wx, gtk and qt are all OOP.
17:01:55 <AnMaster> oh true
17:02:04 <ehird> One thing I need to be able to do is have modes arbitrarily insert their own GUIs. Easy enough with Tk, I believe, but with the others? Hmm.
17:02:07 <AnMaster> ehird, doesn't tcl have objects of some sort?
17:02:17 <ehird> It's an addon thing.
17:02:26 <ehird> Like a Scheme package implementing objects.
17:02:47 <AnMaster> ehird, it could certainly be done with qt at least, there are loadable plugins in kate
17:02:53 <ehird> Of course it's doable.
17:03:02 <ehird> But I have a deadline, here :D
17:03:06 <AnMaster> probably easier with tk
17:03:29 <AnMaster> ehird, also with the new NIF stuff, I believe writing a better tk wrapper wouldn't be too hard
17:03:35 <AnMaster> assuming you can call it in a C like way
17:03:53 <ehird> You can, I believe, but I'd rather have to maintain an editor rather than an editor and a Tk binding.
17:03:58 <AnMaster> of course NIFs were added only in the last release, and is subject to change
17:04:00 <ehird> s(int*a,int*b){for(int*c=b,t;c>a;)if(t=*c--,*c>t)c[1]=*c,*c=t,c=b;} ← It sorts arrays!
17:04:23 <AnMaster> ehird, still, I think a lisp or scheme is somehow more appropriate
17:04:44 <soupdragon>
17:04:46 <ehird> The problem with writing a powerful editor with some Emacs heritage is that you get branded as "Emacs in $LANGUAGE". :-)
17:04:59 <ehird> Edwin is Emacs-in-Scheme, that Perl editor is Emacs-in-Perl, etc.
17:05:01 <soupdragon> who cares if you get branded just ignor them
17:05:08 <ehird> But yes, a lisp is probably the best choice.
17:05:22 <ehird> Almost certainly for the extension language.
17:05:26 <soupdragon> why don't you use an esolang
17:05:27 <ehird> Dunno about the implementation language.
17:05:30 <AnMaster> ehird, how easy is it to interface native code from it
17:05:34 <ehird> soupdragon: That would be... difficult :-P
17:05:38 <ehird> AnMaster: From what; Lisp or Scheme?
17:05:40 <AnMaster> ehird, I suspect you will need it for some tiny bits
17:05:43 <AnMaster> ehird, scheme
17:05:46 <AnMaster> but lisp as well
17:05:50 <AnMaster> with lisp as common lisp
17:05:54 <ehird> Impossible. R5RS has no facility for doing that.
17:06:04 <ehird> Nor, I believe, for performing tasks such as "deleting a file".
17:06:10 <ehird> Ditto for Common Lisp.
17:06:13 <AnMaster> ehird, what about Tk then
17:06:14 <ehird> Also, networking and threading is impossible in both.
17:06:24 <ehird> Of course, nobody actually *obeys* the standard...
17:06:25 <AnMaster> you will need to rely on custom extensions I guess
17:06:29 <ehird> No shit :P
17:06:30 <ehird> I was joking
17:06:41 <AnMaster> ehird, if you go for a lisp, which one?
17:06:42 <AnMaster> sbcl?
17:06:48 <ehird> Probably not Common Lisp.
17:06:50 <ehird> I prefer Scheme.
17:06:54 <AnMaster> well okay
17:06:57 <AnMaster> what scheme then
17:07:26 <AnMaster> I would doubt you go for mzscheme, since it is r6rs wannabe these days isn't it?
17:07:40 <ehird> (Actually, the only Emacs-alike I've seen that hasn't been branded as Emacs-in-language is http://armedbear-j.sourceforge.net/, probably because (a) it's written in Java; nobody would say "Emacs-in-Java", it's too silly and (b) it uses a real Common Lisp as its extension language.)
17:07:46 <ehird> AnMaster: Maybe I'll write my own! :P
17:07:57 <ehird> But, eh, maybe Gauche or something.
17:08:06 <AnMaster> ehird, what about the tk bindings?
17:08:15 <AnMaster> you said you didn't want to maintain tha
17:08:17 <AnMaster> that*
17:08:34 <ehird> Then I could use the circa-1995 STk!
17:08:54 <AnMaster> never heard of that. And I doubt it has ttk bindings then
17:08:55 <ehird> Okay, okay, not that old.
17:08:57 <ehird> Circa-1999.
17:09:07 <ehird> AnMaster: Well, it's been obsoleted by STklos since, like, 2001.
17:09:09 <ehird> So... yeah.
17:09:27 <AnMaster> ehird, what is STklos then
17:09:50 <AnMaster> oh it uses GTK
17:09:53 <ehird> Yeah.
17:09:55 <ehird> And objects.
17:09:58 <ehird> 'Nuff said.
17:10:14 <AnMaster> ehird, so I guess you will have to maintain your own Tk bindings for scheme if you are to use it
17:10:40 <ehird> Probably, yes.
17:10:54 <ehird> There doesn't appear to be a simple solution to all this.
17:11:25 <AnMaster> ehird, there is always tcl
17:11:30 <ehird> Maybe I'll think about something simple and fun, like my poop language or SECRET-ESOLANG-PROJECT.
17:11:41 <ehird> AnMaster: Crazy semantics, very imperative, meh.
17:11:51 <AnMaster> well good point
17:12:06 <AnMaster> how hard would writing Tk bindings be
17:12:18 <ehird> Dunno.
17:12:25 <ehird> Not *too* hard, but not trivial either.
17:12:36 <ehird> It essentially amounts to writing a Tcl binding, and then a sugar layer over that.
17:12:45 <AnMaster> considering emacs runs a tcl process and uses stdin/stdout to talk to it
17:12:48 <AnMaster> in the gs bindings
17:12:49 <ehird> Tcl has a good C API, but...
17:12:54 <ehird> AnMaster: *erlang
17:12:57 <AnMaster> err yeah
17:12:58 <AnMaster> typo
17:13:09 <ehird> [17:11] <ehird> Maybe I'll think about something simple and fun, like my poop language or SECRET-ESOLANG-PROJECT.
17:13:12 <ehird> :|
17:13:13 <ehird> :P
17:13:33 <AnMaster> ehird, then that schedule for your editor just went down the ditch ;P
17:13:41 <ehird> No it didn't.
17:13:53 <ehird> poop is, like, a day-long project and SECRET-ESOLANG-PROJECT just needs ais.
17:14:03 <ehird> ("poop is, like, a day-long project" —me. You can quote me on that.)
17:14:15 <ehird> ((har har poop joke))
17:16:02 <AnMaster> ehird, sbcl's extensions seems very nice
17:16:09 <AnMaster> ehird, ooh new idea for language: mathematica
17:16:15 <ehird> AnMaster: I am killing you.
17:16:20 <AnMaster> haha
17:16:21 <ehird> Common Lisp is crufty, anyway.
17:16:25 <ehird> I don't feel like using it.
17:16:30 <AnMaster> fair enough
17:16:43 <AnMaster> what about java?
17:16:45 <ehird> (SECRET-ESOLANG-PROJECT will totally make this channel LIVE ONCE MORE.)
17:17:00 <ehird> AnMaster: Completely ignoring the fact that I'd have to use JNI to make Tcl bindings...
17:17:00 <soupdragon> explain SECRET-ESOLANG-PROJECT
17:17:01 <ehird> ...no.
17:17:13 <AnMaster> ehird, befunge98?
17:17:13 <ehird> soupdragon: No, Gregor will just go and implement it before I can :D
17:17:23 <ehird> AnMaster: "LCT"(...)
17:17:24 <AnMaster> ehird, not if you implement it fast enough
17:17:24 <ehird> Yes!
17:17:29 <AnMaster> also, is it a new language
17:17:33 <ehird> AnMaster: Sort of.
17:17:33 <AnMaster> ehird, actually that is a good idea
17:17:38 <AnMaster> Tk bindings for befunge98
17:17:53 <ehird> If by good, you mean horrible and excellent!
17:17:54 <AnMaster> maybe I'll do that when I have more time
17:18:05 <AnMaster> ehird, "good idea" + "befunge" = what you said
17:18:19 <ehird> Make sure to do Tcl bindings to handle additions to Tk
17:18:32 <AnMaster> hm
17:18:38 <ehird> and have an additional fingerprint, TK, that provides sugar over it for common Tk operations
17:18:39 <ehird> :D
17:18:40 <AnMaster> ehird, I certainly need to read up on the tcl api first
17:18:56 <AnMaster> ehird, also there is a limited number of instructions per fingerprint you know
17:19:02 <ehird> You could do the stdin/stdout method; a lot of things seem to do that.
17:19:04 <AnMaster> you have to pick carefully
17:19:11 <ehird> AnMaster: Well, exactly.
17:19:15 <ehird> Which is why TK is a separate fingerprint.
17:19:18 <ehird> You'd do:
17:19:25 <AnMaster> ehird, well for erlang there are good reasons. Mainly that loading native extensions into the vm is a fairly new feature
17:19:29 <ehird> "KT"(...oops I need some more stuff than it provides "LCT"(...)...)
17:19:31 -!- ais523 has joined.
17:19:34 <AnMaster> certainly much newer than the gs module
17:19:34 <AnMaster> hi ais523
17:19:35 -!- augur has quit (Read error: 110 (Connection timed out)).
17:19:36 <ehird> AnMaster: Also that it's easier.
17:19:38 <ehird> ais523: Just in time!
17:19:55 <ais523> for what?
17:19:56 <AnMaster> ehird, what? ais523 isn't bytecode...
17:20:09 <ehird> ais523: I need to discuss an esolang project with you related to one of yours :|
17:20:20 <ais523> I just came out of a meeting with two of the university's FPGA experts
17:20:33 <AnMaster> ais523, TCL/TK bindings for befunge. Opinion?
17:20:34 <ais523> who were busy talking about how all FPGA development environments were rubbish
17:20:42 <ais523> AnMaster: bindings to anything is good
17:20:45 <ais523> even if it's something ridiculous
17:20:46 <AnMaster> :D
17:20:49 <ehird> *Tcl/Tk
17:20:53 <ehird> You fail at capitalisation.
17:20:59 <ais523> I wouldn't even be against .NET bindings
17:21:05 <ais523> or even ActionScript bindings
17:21:08 <AnMaster> ais523, what about java ones?
17:21:18 <AnMaster> ais523, or cobol.
17:21:32 <AnMaster> oh and I think I have half a spec somewhere for the fingerprint SQL
17:21:38 <AnMaster> never finished the details
17:21:44 <ais523> ehird: anyway, conversation pop
17:21:49 <ehird> A web servlet/Swing Befunge IRC client?
17:21:52 <ehird> ais523: see /msg
17:21:56 <AnMaster> ehird, wow
17:22:13 <ehird> AnMaster: that is, usable from both the web and on the desktop
17:22:15 <ehird> :D
17:22:25 <AnMaster> ehird, well, to begin with I would have to learn java
17:22:29 <ehird> If you run it locally it starts both, so assuming you configure your firewall right, you can just punch in your IP on the go to use your IRC client
17:22:31 <ehird> In Befunge!
17:22:33 <AnMaster> same goes for tk of course
17:22:34 <ehird> AnMaster: no, just JNI :D
17:22:59 <AnMaster> ehird, oh right, I used the python C API before I used python
17:23:03 <AnMaster> so I guess that is doable
17:23:17 <ais523> btw, could someone check the most recent edit to Esolang for me?
17:23:22 <ais523> I need a second opinion
17:23:29 <ais523> ingenious spam, trolling, or a legit edit?
17:24:12 <AnMaster> ais523, one of the former two I would say
17:24:27 -!- MigoMipo has joined.
17:24:43 * ehird looks
17:25:01 <AnMaster> and it is ridiculous
17:25:12 <ehird> Custom Research Paper Writing Service
17:25:13 <ehird> A research paper is a type of academic writing that needs more theoretical, significant and methodical level of inquiry than most other written assignments. In order to complete a research paper, you will have to spend a lot of time, study a lot of information resources, come up with a suitable approach and crystallize and summarize all your knowledge in a proper format. Sounds like a lot of work, doesn’t it?
17:25:17 <ehird> Yet another we-write-your-papers-for-you spam.
17:25:26 <ehird> Revert and ban with extreme prejudice.
17:25:30 <AnMaster> yes
17:25:35 <ehird> also, s/the (Wikipedia)/$1/, please
17:25:41 <ais523> I'll do a revert with wording that makes it sound like he didn't do anything wrong, and see what happened
17:26:03 <ais523> *what happens
17:26:08 <ais523> I'm interested to see if it's remade
17:27:53 <AnMaster> ais523, btw are there any bindings for befunge you *would* be against?
17:27:57 <AnMaster> just curious
17:28:19 <AnMaster> also what about the secret esolang project that ehird said he needed you for
17:28:21 <ehird> bindings to the DS9K network protocol
17:28:29 <ehird> we are strictly pacifist in this channel!
17:28:37 <ais523> AnMaster: illegal ones, and ones that actually caused bodily harm or similar issues
17:28:38 <AnMaster> ah I got an idea: befunge bindings for befunge
17:28:47 <AnMaster> XD
17:28:58 <ais523> *actually cause
17:29:01 <AnMaster> ais523, I can't think of any in either category
17:29:21 <AnMaster> ehird, link me to the spec!
17:29:56 <AnMaster> bbl food
17:29:57 <ehird> http://dspace.dial.pipex.com/town/green/gfd34/art/
17:30:04 <ehird> You'll have to purchase it
17:30:10 <ehird> s/it$/it./
17:32:50 * Sgeo is somewhat disoriented by the way that Fark headlines appear days after the article was in Reddit
17:33:05 <ehird> So don't read Fark. Fark is crap.
17:36:14 * soupdragon just spent about 20 mins reading douglas adams inspired 404 page
17:36:51 <ehird> which one? that one that's everywhere and continually displays messages about how sorry it is for not loading the page?
17:36:56 <soupdragon> yes
17:39:36 <soupdragon> hy I wanna poll your um
17:39:39 <soupdragon> whatever it's called
17:39:48 <soupdragon> principle of least surprise or something:
17:39:54 <soupdragon> int a = 1; var f = x=> a+x; a = 2; int b = f(0); what is the value of b ?
17:40:17 <ehird> x=>y being a function, presumably
17:40:29 <ehird> soupdragon: it really depends on the type of language
17:40:42 <ehird> if it's trying to be a cool functional dude, I'd probably expect 1
17:40:43 <soupdragon> no that's the point
17:40:44 <Sgeo> I 3
17:40:45 <Sgeo> 3
17:40:48 <ehird> but almost all conventional languages do 2
17:40:50 <ehird> Sgeo: what.
17:40:56 <Sgeo> ^ kidding
17:41:10 <soupdragon> Sgeo reads it as some esolang :P
17:41:40 <Sgeo> There should totally be a language where the about makes b = something other than 1 or 2
17:41:49 <soupdragon> ehird well I said it should be 2 but he said no.. and I was like all languages except yours would give 2... and he said no not really
17:41:55 <soupdragon> so I'm like huh?
17:42:00 <ehird> soupdragon: tell him he's a retard
17:42:12 <soupdragon> I don't think that would be very nice
17:42:13 <ehird> list of languages that do it that way
17:42:14 * ehird breaths in
17:42:16 <ehird> Lisp
17:42:18 <ehird> Scheme
17:42:19 <ehird> Ruby
17:42:20 <soupdragon> no
17:42:21 <ehird> Python
17:42:22 <soupdragon> no no no
17:42:22 <ehird> C#
17:42:26 <soupdragon> list the ones that DON'T
17:42:27 <ehird> *breathes
17:42:31 <ehird> soupdragon: ()
17:42:33 <soupdragon> if you can get more than zero I'll be impressed
17:42:37 <ehird> At least, that I know of.
17:42:44 <ehird> And I know of quite a lot of languages.
17:42:54 <soupdragon> <bartwe_> think about this: foreach(x in y) list.add(z=>z+x);
17:42:54 <soupdragon> <bartwe_> you want to capture the value of x, not the slot
17:43:11 <soupdragon> :(
17:43:37 <soupdragon> <bartwe_> nope, 1
17:43:38 <soupdragon> <bartwe_> for pluk atleast, in some other languages it may be 2
17:43:38 <soupdragon> <soupdragon> like lisp and javascript and so on
17:43:38 <soupdragon> <soupdragon> (and ... every langauge :P)
17:43:38 <soupdragon> <bartwe_> no, not really
17:43:55 <soupdragon> so am I in the wrong there
17:44:34 <Sgeo> Wait, I'm confused
17:45:00 <ehird> soupdragon: you are totally correct
17:45:12 <ehird> that's a common closure pitfall, expecting them to work like that
17:45:31 <ehird> soupdragon: basically
17:45:36 <ehird> the problem is that his variables are mutable
17:45:39 <ehird> in e.g. haskell
17:45:49 <ehird> map (\x -> (\z -> z+x))
17:45:52 <ehird> x is a new variable each time
17:45:56 <ehird> so we get the expected behaviour
17:46:00 <ehird> the "x" in each function is the element
17:46:04 <ais523> in Perl, you can get either behaviour
17:46:07 <ehird> but since his variables are mutable and x is always the same variable
17:46:08 <ehird> he's fucked
17:46:17 <ehird> and this is why mutable state is bullshit.
17:46:23 <Sgeo> http://codepad.org/1iagmDfc
17:46:29 <ais523> ehird: what do you think of the OCaml method?
17:46:37 <soupdragon> I don't think mutable state is "bullshit" but it is something to do with mutation
17:46:46 * Sgeo is actually confused by this now
17:46:56 <ehird> ais523: how does it do it?
17:47:18 <soupdragon> ocaml is very explicit (in a good way)
17:47:45 <ais523> ehird: I'm writing a paste now
17:48:01 <soupdragon> ehird you must make a mutable cell in ocaml
17:48:04 <ais523> http://codepad.org/YzQtEiid
17:48:11 <ehird> soupdragon: ah, right
17:48:14 <ehird> ais523: it=ocaml
17:48:16 <ehird> the ocaml method
17:48:23 <ehird> anyway the ocaml method is just haskell's iorefs then :P
17:48:29 <ehird> or strefs
17:48:34 <soupdragon> I'm rreally jelous of ais' perl skills
17:48:42 <soupdragon> but I'd never admit it
17:48:45 <ais523> oh, in ocaml everything's an immutable value
17:48:46 <ehird> ais523: yeah that's basically because %a becomes a new variable
17:48:48 <ehird> each iteration
17:48:49 <ehird> erm
17:48:51 <ais523> you can have an explicit pointer to a memory location, though
17:48:52 <ehird> to use the foreach example
17:48:54 <ais523> in which case the pointer is the value
17:48:55 <ehird> *$a
17:48:59 <ehird> which is basically what i said
17:49:07 <soupdragon> ais my $a = $a kinda cheating :P
17:49:08 <ais523> ehird: yes, you have to mark it with a lexicaliser
17:49:12 <soupdragon> you might as well write
17:49:18 <ais523> soupdragon: no, because it's how you do that in Perl
17:49:29 <soupdragon> my $z = $a ... [$a/$z]
17:49:52 <ais523> soupdragon: yes, you might, and that would be fine too
17:50:02 <Sgeo> .... $a = $a has an effect in Perl?
17:50:04 * Sgeo cries
17:50:05 <ais523> the point is, the value of $a is stored in the closure because it's been lexicalised
17:50:06 <ais523> Sgeo: no
17:50:14 <ais523> the bracketing is (my $a) = $a
17:50:26 <ais523> and in perl5, my doesn't create the new variable name until the end of the statement
17:50:27 <soupdragon> hehehe
17:50:47 <ehird> $a=$a is just mutating $a
17:50:50 <ehird> but my $a declares a var
17:50:59 <ehird> sgeo won't get this because he codes python, and python is stupid and has no variable declarations
17:51:03 <ehird> thus leading to the wonderful "global" kludge
17:51:05 <ais523> in fact, I think you can get away with just "my $a" which means the same thing
17:51:12 <ehird> and the wrapping-a-variable-in-an-array-to-mutate-it-in-a-nested-function kludge
17:51:21 <ais523> ah no, it initialises to undef
17:51:44 <soupdragon> global awesome
17:51:47 <soupdragon> lol python
17:51:49 -!- augur has joined.
17:52:15 <soupdragon> hiya augur,
17:52:23 <Sgeo> Who calls "ti" "si"?
17:52:29 <augur> hey soupdragongirly
17:52:30 <augur> sup
17:53:14 -!- kar8nga has joined.
17:54:16 <soupdragon> just pwning some noobs u?
17:55:52 <augur> playing around with DNF-expression k-sat
17:57:18 <soupdragon> did you implement prolog yet
17:57:49 <augur> i have a semi-working version, yeah. :)
18:03:57 <soupdragon> cool
18:04:20 <soupdragon> what strategy did you use
18:04:23 <soupdragon> is it streams or stack or what?
18:09:55 <AnMaster> ehird, okay idea: why not use a language with a history of about the same length as that of Lisp for amend?
18:13:18 <ehird> Fortran?
18:13:46 <ais523> fortran's awful at text processing
18:14:12 <AnMaster> ehird, yes
18:14:16 <AnMaster> ehird, or asm
18:15:46 <AnMaster> about "<soupdragon> int a = 1; var f = x=> a+x; a = 2; int b = f(0); what is the value of b ?" in erlang. That would be: http://codepad.org/RWtT11n8
18:16:17 <soupdragon> hey AnMaster thanks!
18:16:23 <soupdragon> btw
18:16:23 <ehird> x86 asm doesn't have as long a history as Fortran.
18:16:36 <ehird> soupdragon: AnMaster cheated
18:16:36 <AnMaster> soupdragon, well for a start, it throws an exception trying to assign to the same variable twice
18:16:38 <soupdragon> if you did that in one erlang statement, or like, in one erlang function -- you couldn't use A twich could you
18:16:39 <soupdragon> ?
18:16:40 <AnMaster> if the values differ
18:16:44 <soupdragon> so it's just a REPL thing?
18:16:47 <ehird> "A=2" was pattern matching
18:16:48 <AnMaster> ehird, not x86 no
18:16:49 <ehird> or whatever
18:16:51 <ehird> not assigning
18:16:56 <ehird> so it isn't actual mutation
18:16:56 <AnMaster> ehird, well that is how erlang *does* assign
18:16:59 <ehird> and A was still 1
18:17:03 <ehird> so it didn't change, QED
18:17:10 <AnMaster> there no no actual concept of assigning apart from pattern match
18:17:11 <AnMaster> ehird, ^
18:17:15 <ehird> exactly
18:17:19 <ehird> i.e. no mutable variables
18:17:21 <AnMaster> soupdragon, and yes it is a repl
18:17:25 <ehird> i.e. that wasn't an actual demonstration
18:17:26 <AnMaster> soupdragon, and variables are not mutable
18:17:28 <ais523> idea: is it possible to use URL-shorteners as free webhosting by using data:// URLs?
18:17:35 <AnMaster> ais523, old
18:17:37 <ehird> ais523: some of them, yes, iirc
18:17:39 <ehird> I did it with tinyurl
18:17:44 <AnMaster> ais523, I have already seen a tinyurl
18:17:47 <AnMaster> that did it
18:17:51 <ehird> i.e. AnMaster was doing his regular "har-har-mine-doesn't-work-like-that" misleadingness
18:18:04 <soupdragon> AnMaster but I mean -- peculiar to the REPL
18:18:09 <AnMaster> soupdragon, eh?
18:18:10 <ais523> "TinyURL was created as a free service to make posting long URLs easier, and may only be used for actual URLs"
18:18:21 <AnMaster> soupdragon, in a normal function, it depends on if you catch that exception or not
18:18:31 <ais523> hey, that means that if you put the leading http:// on, it violates the TOS
18:18:37 <ais523> because then it's a URI not a URL
18:18:38 <AnMaster> soupdragon, if you don't, well it won't continue past that point. If you do catch it, well depends on what you do
18:18:44 <ehird> no
18:18:45 <soupdragon> huh
18:18:46 <ehird> URI superset-of URL
18:19:03 <ais523> I thought URLs couldn't specify the protocol, though
18:19:05 <soupdragon> AnMaster what I mean is: is this a valid program?
18:19:09 <AnMaster> soupdragon, erlang does not have assignment. It only has pattern matching.
18:19:18 <ehird> soupdragon: no, it threw an error
18:19:21 <soupdragon> test -> A = 1; F = fun(X) -> A + X; A = 2; B = F(0); B
18:19:25 <ehird> the pattern-matching, not assignment "A=2" failed
18:19:28 <soupdragon> I think it's not because we used A twice
18:19:35 <AnMaster> soupdragon, and it would have been written differently outside the repl. For a start it would all have had to be in a function.
18:19:45 <AnMaster> soupdragon, A *can not be changed in erlang*
18:19:57 <AnMaster> it is *invalid* to change the value of a variable once you set it
18:19:59 <ehird> soupdragon: it was AnMaster's idea of a joke
18:20:00 <AnMaster> soupdragon, get that
18:20:03 <AnMaster> ?
18:20:05 <soupdragon> what it a joke?
18:20:06 <ais523> what's the GNU internationalisation package called
18:20:10 <ais523> that normally uses a macro called _?
18:20:11 <AnMaster> ais523, gettext?
18:20:13 <ehird> ais523: gettext
18:20:13 <ais523> thanks
18:20:19 <ehird> "Please type or paste a valid web address into the input box."
18:20:22 <ehird> I'm trying all sorts of shorteners
18:20:36 <AnMaster> ehird, you managed with data:// didn't you?
18:20:42 <ehird> dunno, maybe
18:20:45 <soupdragon> AnMaster well it's sort of inexpressible in erlang then.. unless you do it like ocaml I guess
18:20:54 <ehird> Firefox can't find the server at data.
18:20:55 <ehird> so close
18:20:56 <AnMaster> soupdragon, how does ocaml do it. I don't know ocaml
18:21:23 <ais523> AnMaster: OCaml has the type pointer-to-mutable-data, effectively
18:21:25 <AnMaster> soupdragon, also in the repl, I think variables are actually stored in a dict between the lines. Since you can use a command to forget all bound variables there.
18:21:30 <ehird> src="http://data:
18:21:31 <ais523> the pointer itself is immutable, but you can mutate what it points to
18:21:32 <ehird> fffuuu
18:21:34 <ehird> hmm wait
18:21:34 <AnMaster> ais523, erlang does not
18:21:36 <ehird> does anyone know a service
18:21:42 <ehird> http://foo/poop?url=...
18:21:45 <ehird> that just redirects to ...
18:21:46 <ehird> aha
18:21:47 * ehird idea
18:21:50 <AnMaster> soupdragon, okay you could store it in the database engine of erlang. mnesia
18:21:52 <ais523> ehird: anonym.to?
18:21:56 <ehird> yep
18:21:58 <ehird> that's what I thought of
18:22:01 <AnMaster> soupdragon, but that would be ridiculous
18:22:03 -!- augur has quit (Read error: 110 (Connection timed out)).
18:22:06 <soupdragon> heh
18:22:19 <ais523> ehird: that's a ridiculous idea, I like it
18:22:37 <ehird> aww, it truncates it :(
18:22:48 <ais523> what, anonym.to?
18:22:48 <ehird> I will store this jpeg whether it's the last thing I do
18:22:51 <ehird> yep
18:22:56 <ais523> what's it a jpeg of, anyway?
18:23:14 <ehird> truthfully? the non-goatse at goatse.cx
18:23:18 <ehird> (it was changed a while ago)
18:23:20 <ehird> (it's SFW)
18:23:25 <ehird> just looks like goatse, if you know what goatse looks like
18:23:52 <ais523> hmm, a fake goatse, what a weird concept
18:23:58 <AnMaster> soupdragon, or a dict. But then the dict would be a different one. Since erlang is in effect single assignment it create a new dictionary (sharing most parts of course, the gc will collect the no longer referenced bits later on)
18:24:12 <ais523> I only ever fell for a goatse link once, and it loaded so slowly I guessed it was goatse by the top 20 or so pixels and navigated away
18:24:24 <soupdragon> oh that's interesting AnMaster
18:24:25 <ehird> it's just a goatse parody
18:24:25 <ais523> so I've seen maybe about 5% of goatse, the harmless part
18:24:28 <soupdragon> can you write that as a proc??
18:24:35 <soupdragon> if you are like bored or something
18:24:41 <AnMaster> soupdragon, as a proc?
18:24:45 <soupdragon> nr
18:24:47 <soupdragon> function
18:24:48 <ehird> Request-URI Too Large
18:24:49 <ehird> The requested URL's length exceeds the capacity limit for this server.
18:24:51 <soupdragon> whatever erlang calls it
18:24:51 <ehird> asdfgjkl;
18:25:37 <AnMaster> soupdragon, well there is function. The fun I used on that line is like lambda in scheme (closure style that is)
18:25:39 <ehird> omg
18:25:41 <ehird> that one almost worked
18:25:50 <AnMaster> soupdragon, normally you don't use that syntax in source files
18:25:56 <AnMaster> well, a similar syntax
18:26:01 <ehird> except it prepended http:// :(
18:26:20 <AnMaster> soupdragon, also write *what* bit as a function
18:26:49 <ehird> ais523: well this'll certainly be a rather robust image host :-D
18:26:58 <soupdragon> the one using the dicts
18:27:01 <ehird> anyone who visits the image has a never-expiring token to share it
18:27:10 <ais523> you could even bookmark it
18:27:17 <ais523> ooh, insane idea
18:27:24 <ais523> an entire website made out of data: urls
18:27:28 <ais523> presumably, mostly generated via JS
18:27:34 <ais523> each page on it stores the entire site
18:27:35 <ehird> ais523: omg
18:27:37 <ehird> it could quine
18:27:40 <ais523> so you can just bookmark any of them
18:27:41 <ehird> so you can go back to the index page
18:27:42 <ais523> it /has/ to quine
18:27:50 <ehird> ais523: wow, I think I want to marry you
18:27:51 <ehird> just for that idea
18:27:55 <ehird> that's brilliant
18:28:00 <ehird> quining URIs
18:28:07 <ais523> practically useful, too
18:28:32 <ais523> it could have an auto-update via AJAX
18:28:41 * ehird settles for pasting the image via pastebin.ca
18:28:43 <ehird> http://pastebin.ca/raw/1748566
18:28:52 <ehird> it's like tinyurl's preview-the-url service, except more work and uselses
18:28:54 <ehird> *useless
18:28:56 <ehird> but by gum, it works
18:29:11 <ehird> ais523: ajax to *where*, exactly?
18:29:16 <ehird> the whole point would be that it was decentralised
18:29:19 <ehird> ooh, my
18:29:22 * ehird just had an awful idea
18:29:27 <AnMaster> soupdragon, oh well, that would be like:
18:29:29 <ehird> it could be a forum, right
18:29:40 <ehird> and posting a message would post a specially formatted paste to one of a list of pastebin services
18:29:45 <ehird> and it'd scan those to find the posts
18:29:56 <ais523> wow, that is an awful idea
18:30:01 <ais523> especially when the pastebin operators find out
18:30:02 <ehird> it's awful *and* wonderful
18:30:09 <ehird> ais523: eh, you're allowed to paste plaintext in 'em
18:30:12 <ais523> although, cross-domain security requirements might stop that working
18:30:16 <ehird> and people post conversation snippets in pastebins anyway
18:30:22 <AnMaster> soupdragon, http://codepad.org/i8ZzmGPl
18:30:30 <AnMaster> soupdragon, that is REPL again, too lazy to write it in a module
18:30:46 <soupdragon> AnMaster, I need in a module or it's just as bad at the first paste you did :[
18:30:48 <AnMaster> soupdragon, since F can't reference the new dict (unless you make it a parameter)
18:30:57 <ehird> what about process tables
18:31:01 <soupdragon> and by bad I mean an evil trick
18:31:04 <AnMaster> ehird, you mean get/put?
18:31:07 <AnMaster> hm forgot about that
18:31:22 <AnMaster> ehird, I thought you didn't know erlang?
18:31:32 <AnMaster> and, it would be evil.
18:31:54 <AnMaster> soupdragon, the normal way to keep state in erlang is to make a thread/process that act as a server, which you talk to
18:32:03 <AnMaster> soupdragon, since erlang is based on message passing concurrency this is trivial
18:32:34 <ehird> AnMaster: just do it
18:32:38 <ehird> it's exactly the original problem
18:32:54 -!- Pthing has joined.
18:32:54 <AnMaster> well then I believe it would return 2 there.
18:33:23 <soupdragon> really
18:33:23 <soupdragon> ?
18:33:30 <soupdragon> I'd be glad if it returns 2 :P
18:33:30 <ehird> just do it :P
18:33:31 <ehird> not hard
18:33:34 <soupdragon> because then I would be right!
18:33:37 <ehird> soupdragon: it'd be the only one that actually mutates
18:33:45 <soupdragon> but if it returns 1 then that's cool too because having counterexamples is good
18:34:16 <AnMaster> soupdragon, well there http://codepad.org/cPjBrzF3
18:34:32 <AnMaster> soupdragon, and that is bad programming practise
18:34:36 <AnMaster> of course, C would do the same.
18:34:45 <ehird> nobody cares about whether it's idiomatic
18:34:49 <ehird> we care about the results :P
18:35:08 <AnMaster> ehird, you could use state in haskell to do this I believe
18:35:12 <AnMaster> if you really wanted it to
18:35:17 <AnMaster> just a hunch
18:35:35 <ehird> yes, you could
18:35:38 <ehird> soupdragon: IORefs or ST?
18:35:40 <ehird> I guess ST
18:35:46 <ehird> since this problem isn't IO-related in any way
18:35:48 <ehird> State also
18:35:49 <ehird> I'll do both
18:35:59 <AnMaster> ehird, can't you do it with IORefs as well?
18:36:08 <ehird> yes, but ST = IO with only IORefs
18:36:10 <ehird> except they're STRefs
18:36:23 <ehird> soupdragon: lazy or strict state? :D
18:36:28 <ehird> I'll go for lazy, since it's more haskelly
18:36:33 <AnMaster> ehird, why not eager state?
18:36:41 <ehird> you mean strict
18:37:20 <AnMaster> ehird, oh? wouldn't eager be on the other side?
18:37:29 <AnMaster> at least the way I thought of "eager" in programming
18:37:54 <AnMaster> of course it doesn't make much sense for state here
18:38:44 <ehird> soupdragon: hmm
18:38:50 <ehird> is passing in the mutable reference that is a to f acceptable?
18:38:53 <ehird> can't do it any other way w/ haskell
18:39:02 <ehird> I'll just do
18:39:04 <soupdragon> passing a mutable ref is fine, that's like ocaml
18:39:07 <ehird> let foo = f a
18:39:08 <ehird> right
18:39:10 <AnMaster> well if you could do that. then using a dict in erlang would work
18:39:14 <AnMaster> just pass the dict along to it
18:39:18 <soupdragon> it seems like in every SANE language that the result is 2
18:39:19 <AnMaster> of course, a different dict
18:39:26 <soupdragon> so it's funy that guy thinks 1 is acceptable
18:39:32 <AnMaster> wth
18:39:59 <ehird> soupdragon: lazy or strict state?
18:40:04 -!- cal153 has joined.
18:40:26 -!- zeotrope has quit (Connection reset by peer).
18:40:27 <AnMaster> ehird, would scheme give 1 or 2, well depends on what you mean by it
18:40:43 <ehird> (define a 1)
18:40:48 <ehird> (define (f x) (+ a x))
18:40:51 <ehird> (set! a 2)
18:40:52 <soupdragon> ehird they both give the same answer here
18:40:57 <ehird> (f 0) → 2
18:41:00 <ehird> soupdragon: thought so
18:41:09 <ehird> import Control.Monad.ST.Lazy
18:41:09 <soupdragon> ehird well don't take my word for it
18:41:10 <ehird> import Data.STRef.Lazy
18:41:12 <ehird> f a x = do
18:41:13 <soupdragon> I just guessed that
18:41:13 <ehird> a' <- readSTRef a
18:41:15 <ehird> return (a' + x)
18:41:16 <ehird> foo = do
18:41:16 <AnMaster> ehird, ah but what if you changed set! to define?
18:41:18 <ehird> a <- newSTRef 1
18:41:19 <ehird> let f' = f a
18:41:21 <ehird> writeSTRef a 2
18:41:22 <ehird> return (f' 0)
18:41:24 <ehird> ↑ st version
18:41:25 <ehird> state is trivially the same
18:41:27 <ehird> AnMaster: invalid
18:42:13 <AnMaster> it's funny. 1) arch only has guile it seems. 2) it seems to be built without readline
18:42:32 <ehird> guile is shit
18:42:37 <AnMaster> ehird, exactly
18:42:45 <ehird> use scheme48 or chicken or sisc or mit scheme
18:42:55 <ehird> sisc is java but standards compliant in the most anal way imaginable
18:42:58 <AnMaster> there is one called "bigloo" too
18:43:02 <ehird> scheme48 is kinda cool and also compliant
18:43:07 <ehird> chicken is sorta deviant and practical but alright
18:43:10 <AnMaster> oh mzscheme is under drscheme
18:43:14 <ehird> mit scheme is totally old school man (and written in mit scheme)
18:43:19 <ehird> mzscheme is acceptable if put in r5rs mode, but meh
18:43:21 <ehird> bigloo is shit
18:43:49 <AnMaster> wth, it is 230 MB
18:43:52 <soupdragon> I like chicken
18:43:53 <AnMaster> drscheme that is
18:43:59 <AnMaster> ehird, is chicken open source?
18:44:21 <ehird> Who said it wasn't?
18:44:28 <AnMaster> well, I don't know
18:44:30 <AnMaster> I asked you
18:44:34 <ehird> Chez Scheme is the one that's closed-source.
18:44:39 <ehird> AnMaster: why did you assume it might not be?
18:44:50 <AnMaster> 42,56 MB for download... 230,30 installed size
18:44:55 <AnMaster> quite nice compression ratio
18:45:03 <AnMaster> (please place docs in a separate package)
18:46:06 <AnMaster> ehird, wth: http://codepad.org/iVQeluXu
18:46:13 <AnMaster> that isn't supposed to happen is it?
18:46:23 <ehird> You use DEFINE in an invalid manner.
18:46:27 <ehird> Your program is not correct.
18:46:33 <ehird> Thus, its behaviour is undefined.
18:46:38 <ehird> I refuse to comment on it, as it is not an R5RS program.
18:46:39 <AnMaster> ah undef. Right
18:46:49 <ehird> Allow me to quote the definition of DEFINE:
18:46:59 <AnMaster> pastebin if long
18:47:28 <ehird> Eh, just read http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-8.html#%_sec_5.2
18:47:32 <ehird> Technically
18:47:34 <ehird> At the top level of a program, a definition
18:47:35 <ehird> (define <variable> <expression>)
18:47:37 <ehird> has essentially the same effect as the assignment expression
18:47:38 <ehird> (set! <variable> <expression>)
18:47:40 <ehird> but that changes inside a function
18:47:42 <ehird> and functions are where the meat is, so.
18:47:48 <ehird> Definitions may occur at the beginning of a <body> (that is, the body of a lambda, let, let*, letrec, let-syntax, or letrec-syntax expression or that of a definition of an appropriate form). Such definitions are known as internal definitions as opposed to the top level definitions described above. The variable defined by an internal definition is local to the <body>. That is, <variable> is bound rather than assigned, and the region of the binding is the
18:47:50 <ehird> entire <body>. For example,
18:47:57 <ehird> Keyword "at the beginning".
18:48:57 <AnMaster> ehird, plt-r5rs accepted it too.
18:48:59 <AnMaster> just fyi
18:49:25 <ehird> Your program is in fact correct, but only because the REPL is top-level.
18:49:31 <AnMaster> ehird, well yes
18:49:32 <ehird> If it simulated being inside a function body it would be incorrect.
18:49:40 <ehird> But DEFINE is really only useful like that if you can use it after the start.
18:49:47 <ehird> Anyway, don't use the REPL to test Scheme behaviour.
18:49:50 <ehird> Try it in a (define (main) ...).
18:49:55 <AnMaster> sure
18:50:28 <AnMaster> anyway I dislike soupdragon suggestion that only insane languages return 1 for it
18:50:33 <AnMaster> it seemed to be what he said above
18:50:44 <AnMaster> Hm I wonder
18:50:47 <AnMaster> what does mathematica do
18:51:46 <AnMaster> mathematica returns 2
18:51:53 <AnMaster> 1 wouldn't have surprised me
18:52:04 <AnMaster> what does make do
18:52:11 <ehird> make does not have variable mutation.
18:52:15 <AnMaster> (and how does one define a *function* in it)
18:52:21 <AnMaster> ehird, oh?
18:52:24 <AnMaster> gnu make here
18:52:38 -!- ais523 has quit (Remote closed the connection).
18:52:42 <AnMaster> gnu makes supports both "evaluate on use" and "evaluate on assignment"
18:52:46 <AnMaster> = is the former
18:52:48 <AnMaster> := is the latter
18:53:03 <AnMaster> if it has user definable functions I don't know
18:54:04 <soupdragon> AnMaster excuse me??
18:54:20 <soupdragon> how about his, name one sane language that gives 1?
18:54:47 <ehird> !bfjoust isthisthingon >((+)*127>(-)*127)*8>((-)*128[-.]>(+)*128[+.])*21
18:54:57 * ehird prods EgoBot
18:55:03 <ehird> Gregor: ↑
18:55:04 <EgoBot> Score for ehird_isthisthingon: 15.1
18:55:07 <ehird> ah
18:55:17 <ehird> I did upsettingly badly :(
18:55:19 <ehird> anyone wanna play?
18:55:20 <soupdragon> what's that??
18:55:24 <ehird> brainfuck joust dude
18:55:28 <ehird> http://esolangs.org/wiki/BF_Joust
18:55:36 <ehird> we play with ais523's revised one with egojoust
18:55:38 <soupdragon> FFFFFFFFFFFFFFFFF
18:55:41 <ehird> see http://codu.org/eso/bfjoust/report.txt
18:55:54 <ehird> and http://codu.org/eso/bfjoust/in_egobot/ for program sources
18:55:58 <ehird> well, warrior sources
18:57:10 <ehird> our busiest day ever, http://tunes.org/~nef/logs/esoteric/09.05.28, with a 417 KiB log, was spent playing BF Joust :D
18:57:17 <ehird> but it died down and that ensaddens me
18:57:36 <AnMaster> !bfjoust whataboutthis [+-]+
18:57:48 <EgoBot> Score for AnMaster_whataboutthis: 7.8
18:57:48 <AnMaster> well
18:57:51 <AnMaster> hah
18:58:15 <AnMaster> why does main() in C take argc, argv rather than argc, ...
18:58:20 <AnMaster> as in, stdarg.h
18:58:31 <ehird> because that predates stdarg, and stdarg is a bitch to use
18:58:39 <AnMaster> oh good points
18:59:19 <AnMaster> ehird, beats me why they didn't do stdarg properly, which would be to map it to a void* params[] in the function
18:59:36 <ehird> !bfjoust isthisthingon >(+)*127<+>>(-)*126<<->>>(+)*125<<<+>>>>>>>>>>[[-]>+]
18:59:46 <EgoBot> Score for ehird_isthisthingon: 2.9
18:59:51 <ehird> AnMaster: because that is not how the system stack works.
18:59:52 <AnMaster> ehird where is the result page for it
19:00:01 <soupdragon> how do you play this?????
19:00:02 <ehird> I linked that a second ago.
19:00:04 <AnMaster> ehird, too high level I guess
19:00:11 <AnMaster> oh there
19:00:11 <ehird> !bfjoust isthisthingon >((+)*127>(-)*127)*8>((-)*128[-.]>(+)*128[+.])*21
19:00:19 <EgoBot> Score for ehird_isthisthingon: 14.1
19:00:23 <soupdragon> what's the game ??
19:00:28 <ehird> soupdragon: i fucking linked you
19:00:35 <ehird> [18:55] <ehird> http://esolangs.org/wiki/BF_Joust
19:00:36 <soupdragon> yeah thanks
19:00:36 <ehird> [18:55] <ehird> we play with ais523's revised one with egojoust
19:00:37 <ehird> [18:55] <soupdragon> FFFFFFFFFFFFFFFFF
19:00:39 <ehird> [18:55] <ehird> see http://codu.org/eso/bfjoust/report.txt
19:00:41 <ehird> [18:55] <ehird> and http://codu.org/eso/bfjoust/in_egobot/ for program sources
19:00:42 <ehird> [18:55] <ehird> well, warrior sources
19:00:43 <soupdragon> <ehird> [18:55] <soupdragon> FFFFFFFFFFFFFFFFF
19:00:43 <ehird> [18:56] <ehird> our busiest day ever, http://tunes.org/~nef/logs/esoteric/09.05.28, with a 417 KiB log, was spent playing BF Joust :D
19:00:45 <ehird> >_<
19:00:48 <ehird> yes.
19:00:48 <soupdragon> key part of the discourse
19:00:51 <ehird> what about it?
19:00:54 <ehird> you can't read?
19:01:00 <soupdragon> oh
19:01:05 <soupdragon> esolangs server is up now
19:01:07 <ehird> !bfjoust discourse [++]
19:01:10 -!- kar8nga has quit (Remote closed the connection).
19:01:15 <EgoBot> Score for ehird_discourse: 5.4
19:02:14 <AnMaster> "(+-)*5 expands to +-+-+-+-+- (and likewise for other sets of commands inside the parens, and other decimal numbers; but square brackets inside the parens must be matched) " <-- why matched
19:02:15 <AnMaster> why not
19:02:26 <ehird> For interpretation efficiency. Use %
19:02:29 <AnMaster> ([)*2 ]]
19:02:39 <AnMaster> ehird, "meh"
19:02:48 <ehird> I'm not very interested in talking about BF Joust to you since last time we played it you fucked up the hill
19:03:00 <ehird> !bfjoust discourse ((+)*127(-)*127))*394
19:03:04 <AnMaster> ehird, you mean, by writing several programs?
19:03:06 <EgoBot> Score for ehird_discourse: 0.0
19:03:15 <ehird> AnMaster: As I said, I am not interested in discussing this.
19:03:25 <ehird> It only encouraged you then and it will only do the same now.
19:04:11 <AnMaster> ehird, yeah so I wrote more than one program. And some of them got up the hill. The source is still around. I fail to see why you didn't like me on the high score list
19:04:21 <AnMaster> I guess it is just because you dislike me so
19:04:25 <AnMaster> very nice of you
19:04:33 <ehird> You will note that the other players got pissed off too, as evidenced by the log.
19:04:55 <ehird> By the way, submitting many trivial variations of the same program so that they all draw and, due to a scoring edge-case, stay on the hill for ages, is not playing the game.
19:04:59 <AnMaster> ehird, sure. So everybody who got pushed off the hill hates me. Bad loosers.
19:05:08 <soupdragon> I don't understand the rulse
19:05:14 <AnMaster> ehird, bbl
19:05:20 <ehird> I see you still thought you actually made an achievement, rather than setting up a bunch of programs that drew each other.
19:05:30 <ehird> They then dropped off the hill and you accused Gregor of removing them.
19:06:08 <ehird> I think you have serious issues regarding this; you seem to be unable to believe that you pissed other people off for a reason, subverted the rules of the game, or even that your programs were somehow anything less than great warriors that stayed on the hill because they beat other programs, which they did not.
19:06:14 <ehird> soupdragon: why not
19:06:28 <soupdragon> well I didn't really read them
19:06:33 <ehird> you're at one end of the tape
19:06:35 <ehird> the opponent is at the other
19:06:38 <ehird> > means closer to opponent
19:06:41 <ehird> < means further away
19:06:44 <soupdragon> oh but you don't know how long?
19:06:47 <ehird> tape is random from 10-30 items
19:06:51 <ehird> if you run off the tape, you die
19:06:51 <soupdragon> ok
19:06:53 <ehird> at each end is a flag
19:06:56 <ehird> at your end is your flag
19:06:59 <ehird> the other end, the opponent's
19:07:03 <ehird> if your flag is 0 for two cycles, you lose
19:07:07 <ehird> both programs run simultaneously
19:07:14 <ehird> also, ] takes up a cycle
19:07:15 <ehird> so [-]
19:07:17 <Sgeo> ehird, goatse.cx might be NSFW if your employer's seen goatse before
19:07:17 <ehird> goes [-]-]-]
19:07:22 <ehird> so -(it's zero)](the other guy loses)
19:07:24 <ehird> erm
19:07:25 <ehird> yeah
19:07:30 <ehird> because it's 0 for two cycles
19:07:44 <ehird> soupdragon: your job is to avoid your flag being zeroed and avoid going off the tape, while making your opponent do those things
19:07:50 <ehird> there are various strategies you can use; I won't go into them.
19:07:57 <ehird> (x)*n is x, repeated n times.
19:08:10 <ehird> (x{y}z)%n is x, repeated n times; y; z, repeated n times.
19:08:12 <soupdragon> !bfjoust add [+]
19:08:12 <AnMaster> ehird, exploiting loopholes in game rules is part of the fun of games. Even better if you can make them change the rules. I believe it was fairly common in IOCCC for example
19:08:14 <ehird> In ({}), you can use [].
19:08:17 <AnMaster> bbl again
19:08:21 <ehird> To do ()*n for loops.
19:08:31 <EgoBot> Score for soupdragon_add: 5.5
19:08:40 <ehird> AnMaster: Yes, but then when everyone says "stop it, you are ruining our game", you continued to act haughty and holier-than-thou.
19:08:48 <ehird> It is understandable, then, that we wanted you to fuck off and stop ruining our game.
19:08:59 <soupdragon> stop :(
19:08:59 <ehird> *when everyone said
19:09:27 <ehird> soupdragon: don't worry, AnMaster is shit at bfjoust and has no idea how to make warriors, and minutes before flooding the hill he talked a lot about how he dislikes programming war games anyway
19:09:35 <ehird> I don't believe this flamefest will interrupt the game.
19:09:55 <Sgeo> Fix the edge case?
19:10:15 <ehird> Sgeo: it didn't matter much in practice so it was a low-priority issue once AnMaster's programs fell off the hill
19:11:48 <AnMaster> Sgeo, that would be the correct way yes.
19:11:55 <AnMaster> fixing bugs is always better than making a silly work around for them
19:12:18 <AnMaster> ehirds suggestion is like "the correct way to fix beeps on shutdown is to blacklist the pc speaker module"
19:12:28 <AnMaster> which is how ubuntu "fixed" it
19:13:18 -!- MizardX has quit (Read error: 104 (Connection reset by peer)).
19:13:19 <ehird> Silly work around as in "we get your point, stop exploiting it now so we can have fun"
19:13:34 <ehird> It's called social interaction and the instance we experienced there was known as "being an asshole".
19:13:45 <soupdragon> this argument between you two is stupid :P
19:13:45 <AnMaster> silly workaround as in not fixing the underlying issue in the code
19:13:53 <AnMaster> soupdragon, agreed
19:14:09 <AnMaster> if ehird could just stop going on about it
19:14:10 <ehird> <ehird> yes, I'm obviously right
19:14:14 <ehird> <AnMaster> yes, I'm obviously right
19:14:30 <AnMaster> ehird, har
19:14:51 <ehird> AnMaster: I didn't "go on about it"; I said I wsa not interested in discussing BF Joust with you because of it — the very opposite of "going on about it" — and you then whined about it.
19:15:15 <AnMaster> ehird, after that you did. And I do not intend to discuss this further
19:15:25 <AnMaster> lets just see if they fixed that issue I remember
19:15:32 <AnMaster> !bfjoust invalid <
19:15:38 <EgoBot> Score for AnMaster_invalid: 0.0
19:15:45 <AnMaster> maybe it wasn't that issue then
19:15:54 <AnMaster> there was one that crashed it I remember
19:17:00 <ehird> cool, C-x C-v RET works to reload a file in Emacs
19:17:52 -!- MizardX has joined.
19:26:40 -!- Gregor-L has joined.
19:26:44 <Gregor-L> Oh, I do delete things from the hill.
19:26:46 <Gregor-L> All the time.
19:26:48 <Gregor-L> That's how I roll.
19:27:14 -!- Sgeo has changed nick to PrimeIntellect.
19:27:35 <ehird> Sgeo: not egotistical whatsoever
19:27:38 <soupdragon> augur do you know feature terms?
19:27:47 <ehird> Gregor-L: I'm totally working on my BF Joust implementation again.
19:28:03 <ehird> Gregor-L: It's written in Go, so there's not a chance in hell of you using it, but that's okay because I'm writing my own IRC code too :P
19:28:03 <Gregor-L> Are you? Totally? Really and totally and truly and totally?
19:28:07 <ehird> Absolutely.
19:28:11 <ehird> Definitely totally.
19:28:16 -!- PrimeIntellect has changed nick to Sgeo.
19:28:24 <soupdragon> oh my god
19:28:29 <Gregor-L> If there's a Go package in Debian, I'd be willing to install it into EgoBot *shrugs*
19:28:39 <ehird> Gregor-L: There isn't, but I can give you a binary. :P
19:28:56 <Gregor-L> Bleh @ binaries :P
19:29:17 <soupdragon> augur (it's an example in these CHR notes, but apparently comes from linguistics)
19:29:22 <ehird> Well, those are your two choices :P
19:30:52 * Gregor-L goes and implements it himself instead.
19:30:53 <Gregor-L> OH WAIT
19:30:56 <Gregor-L> :P
19:31:03 <ehird> lawls
19:31:04 <soupdragon> hm it looks like a synonym for feature structures
19:31:04 -!- upbeatsarcastic has joined.
19:32:11 -!- upbeatsarcastic has left (?).
19:33:17 <ehird> "Our central database master, mysql.agni, is currently running on an 8-core Xeon E5450 with 64 gigs of RAM"
19:33:21 <ehird> ok, I want to work for Linden Labs now
19:34:03 <ehird> Gregor-L: anyway installing go into a directory takes like... three commands
19:34:09 <ehird> i guess that would TAINT YOU HORRIBLY though
19:34:21 <soupdragon> I hate second life
19:34:22 <ehird> I *could* run it thorugh a Go→C compiler, after inventing one
19:34:31 <soupdragon> the programming language they use is such a fucking disgrace
19:34:31 <ehird> soupdragon: xeon with 64 fucking GiB of RAM
19:34:34 <ehird> want, no matter what
19:34:35 <AnMaster> ehird, even though they use mysql?
19:34:35 <soupdragon> it makes me so angry
19:34:57 <ehird> AnMaster: i'm sorry did you hear
19:34:58 <soupdragon> they could have designed such a good language for this and it would be a real inspiration for a lot of young people
19:34:58 <ehird> sixty-four
19:35:00 <ehird> gibi-bytes
19:35:09 <ehird> soupdragon: no it wouldn't because they'd be too dumb to understand it
19:35:18 <soupdragon> you are so clueless ehird
19:35:21 <ehird> i know rite
19:35:26 <AnMaster> ehird, no it must be GB, otherwise the would have said "gibis" not "gigs"
19:35:44 <soupdragon> or joking
19:35:54 <ehird> half-joking
19:36:29 <soupdragon> it's just like a huge opportunity wasted
19:36:37 <soupdragon> and it really upsets me to think about it
19:36:44 <ehird> you're overreacting
19:36:51 <soupdragon> I'm not acting at all
19:37:27 <ehird> Gregor-L: if i code it so that you can plumb into individual matches to see why they were lost (tape boundary error, flag being zeroed) and after how many cycles is that cool
19:37:27 <fizzie> ehird: The not-for-any-serious-computing-use mostly-irssi-screens shell server -- the one that's visible in the interwebs for remote logins -- of the university is, coincidentally, also an 8-core Xseon E5450 box with 64 GiB of RAM.
19:37:41 <ehird> fizzie: ok i'd much rather work at your university
19:37:51 <ehird> how big is it to need that many gs of ram
19:37:55 <ehird> the uni tat is
19:37:57 <ehird> *that
19:38:27 <soupdragon> ehird you have used the SL language right?
19:38:27 <ehird> hmm
19:38:29 <fizzie> I think we have some 10k "active" students?
19:38:33 <ehird> soupdragon: i've seen snippets
19:38:34 <fizzie> I don't really recall.
19:38:39 <ehird> hmm
19:38:44 <ehird> what's the term X where tape X = under/overflow
19:38:47 <ehird> i.e. it means either
19:38:50 <ehird> tape flow? :P
19:38:51 <soupdragon> ehird well I guess if you haven't actually programmed in it then it's hard to understand what I am trying to get across
19:38:56 <ehird> tape boundary oversteppingness?
19:40:05 <fizzie> (811 screen sessions.)
19:41:38 <AnMaster> ehird, out of bounds error?
19:41:57 <ehird> AnMaster: OutOfBounds would work.
19:42:04 <fizzie> I'm not sure it actually needs that whole 64 GiB; "free -m" says used 31864, free 30943, cached 19907; the "corrected" memory-use value on the second line is 11238.
19:42:05 <AnMaster> assuming it doesn't wrap around
19:42:07 <ehird> I guess I'll leave it as separate for under/overflow, though, just for the statistics porn.
19:42:39 <AnMaster> hm
19:43:01 <AnMaster> !bfjoust test ([.]+)*99999
19:43:02 <ehird> const (
19:43:03 <ehird> TapeUnderflow WinReason = iota
19:43:05 <ehird> TapeOverflow
19:43:06 <ehird> FlagZeroed
19:43:08 <ehird> )
19:43:09 <ehird> type MatchResult struct {
19:43:11 <ehird> Winner Warrior
19:43:12 <ehird> Reason WinReason
19:43:14 <ehird> Cycles int
19:43:15 <EgoBot> Score for AnMaster_test: 7.8
19:43:15 <ehird> }
19:43:17 <ehird> most. statistics. applied. to. brainfuck. evar!
19:43:55 <fizzie> Actually for the last 12 days we've been part of the new three-universities-combined thing, so... 16472 students using the 2008 statistics.
19:43:57 <AnMaster> how did it manage to win against ais523_vibration.bfjoust
19:43:59 <AnMaster> that is strange
19:44:16 <AnMaster> !bfjoust test (+)*99999
19:44:33 <ehird> fizzie: ugh, is it "Wave" university now?
19:44:39 <ehird> i don't want to work here any more
19:44:40 <ehird> *there
19:44:47 <fizzie> ehird: Yes. Wave it like you just don't care!
19:44:48 <EgoBot> Score for AnMaster_test: 7.8
19:45:19 <AnMaster> !bfjoust test >+>+>>+<<+<<(+)*99999
19:45:19 <ehird> fizzie: i guess google wave will be used for all official communications :)
19:45:21 <ehird> :D
19:45:41 <ehird> In January 2010 all Finnish universities will operate under a new Universities Act. This law separates universities further away from the state apparatus at least in legal and accounting terms. The state will remain the main source of funding, but universities are urged or forced to find new sources of money, especially donations from the industry. One purpose of the reform is to make university governance more clearly based on managerial ideals, adopted
19:45:43 <ehird> from the business world.
19:45:45 <ehird> Sounds ghastly.
19:45:50 <EgoBot> Score for AnMaster_test: 3.6
19:45:58 <ehird> Bloody free market idiots
19:46:12 <AnMaster> !bfjoust test >+<(+)*99999
19:46:19 <ehird> fizzie: so en:wave == fi:alto?
19:46:26 <fizzie> fi:aalto.
19:46:29 <ehird> erm right
19:46:31 <ehird> http://www.aalto.fi/fi/
19:46:33 <ehird> "A?"
19:46:34 <ehird> what a retarded logo
19:46:36 <ehird> did i mention
19:46:37 <ehird> RETARD
19:46:40 <EgoBot> Score for AnMaster_test: 3.6
19:46:42 <fizzie> That's not the only logo.
19:46:50 <fizzie> "A!" and 'A"' are also the logo.
19:46:59 <AnMaster> !bfjoust test (-)*99999
19:47:09 <ehird> "External expectations towards the new Aalto University are high. It is supposed to be of "world-class quality" and fame by the year 2020."
19:47:10 <fizzie> They're supposed to be used quasi-randomly and in a uniformly distributed way.
19:47:12 <ehird> That's some deadline.
19:47:23 <ehird> Only ten years!
19:47:33 <EgoBot> Score for AnMaster_test: 7.8
19:47:54 <fizzie> I'm pretty disappointed that (discounting my latex-beamer slides) most of the places where I've seen the logo use a single variant with no randomization.
19:48:09 <fizzie> At least my beamer template rerandomizes the logo (color + character) for each slide separately.
19:48:44 <ehird> make one that's A(unicode :( )
19:48:45 <AnMaster> fizzie, that would be distracting
19:48:51 <ehird> aka "A fuck this logo"
19:48:51 <Gregor-L> http://www.soundcreationsinc.com/tech/splendid/grand._collection.html <-- SWEET Piano soundfont
19:49:00 <ehird> SWEET penis soundfont
19:49:05 <AnMaster> Gregor-L, argh not free
19:49:16 <ehird> yes it is
19:49:16 <Gregor-L> Free 72MB version
19:49:20 <ehird> Free 72 MB Version
19:49:24 <ehird> Gregor-L: snap
19:49:26 <AnMaster> oh there
19:49:40 <AnMaster> how the heck to open sfark
19:49:47 <Gregor-L> sfArk is annoying :(
19:49:53 <ehird> hmm they quote the bible in their jpeg header, their non-rolled-over ARTISTS menu item is a broken image and they have "PraiseTracks" which are :jesus:
19:49:54 <fizzie> ehird: There's a 50-page "guideline" for using the logo; it absolutely forbids using just any character there. You can only use the specific typeface designed for the logo, and ("for now", they ominously say) it contains only those three official punctuation characters.
19:49:54 -!- augur has joined.
19:49:56 <ehird> lulz.
19:50:01 <Gregor-L> There is a (non-F/OSS) extractor for Linux though.
19:50:08 <AnMaster> Gregor-L, 32-bit only iirc
19:50:23 <Gregor-L> AnMaster: Yup.
19:50:26 <AnMaster> Gregor-L, is the spec closed?
19:50:28 <ehird> fizzie: Dude, the typeface just looks like modified Helvetica to me.
19:50:30 <ehird> Pretty much.
19:50:32 <Gregor-L> Anyway, once it's extracted you never need sfArk again.
19:50:41 <Gregor-L> OK, so the WEB SITE is stupid :P
19:50:51 <Gregor-L> Ignoring that, the soundfont is awesome.
19:50:53 <ehird> fizzie: Just do it in a font that looks similar; then they can't sue you because they can't copyright (black A)(sad smiley face in blue) :-P
19:51:04 <ehird> Gregor-L: AND THE PEOPLE WHO MADE IT ARE STUPID :P
19:51:09 <ehird> Because they like Jesus, you see.
19:51:16 <Gregor-L> ehird: Yes.
19:51:17 <fizzie> Yes, well, I guess you could use it, as long as you don't claim it as the Aalto logo.
19:51:18 <ehird> What they should do, instead, is LOVE Jesus!
19:51:21 <ehird>
19:51:26 <ehird> I love how Compose <3 works
19:51:53 <ehird> fizzie: so the Aalto logo is a single logo, except it's quantumly superpositioned?
19:51:54 <ehird> cool
19:52:08 <ehird> make a program that accesses the user's webcam
19:52:15 <ehird> and only fills in the second character when they look at it
19:52:23 <ehird> aalto's logo is <blink>not</blink> dead
19:52:46 <AnMaster> ehird, why doesn't compose :( work
19:52:48 <AnMaster> hm
19:53:06 <AnMaster> and why doesn't the pi compose work, even though I restarted X since then
19:53:07 -!- sebbu2 has joined.
19:54:14 <ehird> Paste your .XCompose line
19:54:21 <AnMaster> sec
19:54:24 <ehird> Smiley faces would be nice, I should add those
19:54:31 <AnMaster> include "/usr/share/X11/locale/en_US.UTF-8/Compose"
19:54:31 <AnMaster> <Multi_key> <p> <i> : "π" U03C0 # GREEK SMALL LETTER PI
19:54:41 <AnMaster> that's all
19:54:43 <ehird> Replace the first line with include "%L"
19:54:46 <ehird> That way it's portable across locales
19:54:51 <ehird> Also shorter, and less path-dependent
19:54:53 <AnMaster> ehird, okay, but ignoring that?
19:55:01 <AnMaster> since other compose combos works
19:55:02 <AnMaster> work*
19:55:04 <ehird> <Multi_key> <p> <i> : "π" U03C0 # GREEK SMALL LETTER PI
19:55:09 -!- Phantom_Hoover has joined.
19:55:09 <ehird> Did you save it in ~/.XCompose?
19:55:12 -!- Asztal has quit (Read error: 60 (Operation timed out)).
19:55:21 <AnMaster> ehird, that is the file
19:55:36 <ehird> No clue
19:55:39 <AnMaster> $ cat ~/.XCompose
19:55:39 <AnMaster> include "%L"
19:55:39 <AnMaster> <Multi_key> <p> <i> : "π" U03C0 # GREEK SMALL LETTER PI
19:55:40 <ehird> Try a full reboot :P
19:55:42 <AnMaster> is what the file reads at
19:55:44 <AnMaster> as*
19:55:50 <ehird> Maybe that path doesn't exist
19:55:51 <AnMaster> ehird, I did that, unintentionally
19:55:55 <ehird> Although that's unlikely, I guess
19:56:02 <ehird> But maybe "%L" will work and your old version won't
19:56:04 <ehird> So try restarting X now
19:56:09 <AnMaster> ehird, the full reboot was forced due to hardware lockup
19:56:20 <AnMaster> when plugging in an usb device
19:56:24 <AnMaster> second time in a few weeks
19:56:27 <AnMaster> and different usb devices
19:56:35 -!- Asztal has joined.
19:56:36 <AnMaster> I believe the mobo is getting glitchy
19:56:42 <AnMaster> ehird, even sysrq was *dead*
19:57:08 <ehird> Wow.
19:57:16 <ehird> Why not just use your laptop and hook it up to your display/keyboard/mouse?
19:57:27 <Phantom_Hoover> The sysrq key?
19:57:34 <ehird> Alt+SysRq.
19:57:36 <ehird> Linux magic key.
19:57:40 <ehird> Lets you talk directly to the kernel.
19:57:42 <AnMaster> ehird, becuase laptop is unable to get the resolution of the of the monitor
19:57:47 <AnMaster> it can do widescreen high res
19:57:51 <AnMaster> but only lower res for 4:3
19:57:54 <ehird> Alt+SysRq+{R,E,I,S,U,B} does a soft reboot even if your keyboard isn't being listened to by X11.
19:57:54 <AnMaster> don't ask me why
19:57:56 <Phantom_Hoover> I don't seem to have that... I feel inadequate.
19:58:01 <AnMaster> ehird, it just refuses to handle 1400x1050
19:58:04 <ehird> Phantom_Hoover: It's the Print Screen key.
19:58:05 -!- sebbu has quit (Read error: 60 (Operation timed out)).
19:58:09 <AnMaster> ehird, also, the harddrive is smaller in it
19:58:31 <ehird> AnMaster: Buy a hard drive enclosure and extract the disk from the desktop
19:58:32 <AnMaster> ehird, and the sound is worse than my sb live 5.1 in my desktop
19:58:42 <ehird> Meh
19:59:05 <AnMaster> ehird, and there is the issue of the nvidia geforce 7600 card. Anyway I guess I will have to get a new (quieter) desktop soon
19:59:24 <AnMaster> since I don't believe you can get a new mobo with this socket any more
20:03:03 <AnMaster> ehird, what do you call percent humdity as in the air
20:03:06 <AnMaster> as in
20:03:11 <ehird> humidity
20:03:13 <AnMaster> the thing you measure with that unit
20:03:14 <ehird> 30% humidity
20:03:14 <AnMaster> ah
20:03:27 <AnMaster> ehird, 11% indoors is horribly dry btw
20:03:34 <fizzie> Misread somehow "<AnMaster> I don't believe in humidity".
20:03:54 <AnMaster> fizzie, tell me what the hamming distance is for that one
20:04:28 <fizzie> I'm not sure what the source was. I guess it must be a combination of the "don't believe" from one line and "humdity" (hum-ditty?) from the next.
20:04:30 <ehird> It's a mangling of two lines.
20:04:43 <ehird> Cue oklofok; "i don't believe in humidity".
20:04:55 <AnMaster> humidity*
20:04:57 <Phantom_Hoover> Who?
20:05:31 <AnMaster> Phantom_Hoover, who what?
20:05:48 <Phantom_Hoover> Who oklofok?
20:05:53 <ehird> Phantom_Hoover: …
20:05:55 <ehird> GTFO :|
20:06:05 <Phantom_Hoover> Why...?
20:06:10 <ehird> Darn newbs, not knowing who oklofok is 'n shizz :P
20:07:01 <AnMaster> oh Phantom_Hoover is new here
20:07:14 <AnMaster> Phantom_Hoover, look in the output of /names
20:07:15 <AnMaster> that oklofok
20:08:35 <ehird> Gregor-L: The Go problem might not actually exist, since I think BF Joust's ultra-shared-memory architecture is disagreeing with Go's message-passing :P
20:10:18 -!- oerjan has joined.
20:10:49 <AnMaster> ehird, "go problem"?
20:10:51 <AnMaster> oerjan, hi there
20:11:12 <oerjan> hi AnMaster
20:11:20 <ehird> AnMaster: Go as in Go the language.
20:14:20 <ehird> I'd write it in Haskell, but that sounds horrible. :)
20:19:09 -!- Gregor-L has quit (Read error: 110 (Connection timed out)).
20:22:09 <AnMaster> ehird, yes
20:22:15 <AnMaster> ehird, but why is Go a problem?
20:22:35 <ehird> no debian packages, and gregor hates go so him installing it is unlikely :)
20:22:40 <AnMaster> ah
20:22:41 <ehird> (without an easy package)
20:22:50 <ehird> probably not all that unlikely but ehh
20:23:18 <AnMaster> ehird, I'll install it when I need an app that wants to use go
20:23:28 * ehird tries to remember what = vs := does
20:23:41 <AnMaster> ehird, compare vs assign (pascal)
20:23:47 <ehird> AnMaster: if you just want to test joust warriors without spamming the hill you could just download a binary
20:23:53 <ehird> that is if you trust binaries me or gregor made
20:23:56 <ehird> AnMaster: "compare"?
20:23:58 <ehird> I mean in make
20:23:59 <ehird> :P
20:23:59 <AnMaster> ehird, I don't
20:24:04 <AnMaster> ehird, oh I told you that above
20:24:14 <AnMaster> ehird, the first doesn't evaluate the value at assignment
20:24:16 <AnMaster> such that
20:24:21 <ehird> i recall something vaguely similar… yesterday
20:24:26 <AnMaster> CFLAGS = $(SET_LATER)
20:24:30 <AnMaster> SET_LATER = -O2
20:24:30 <ehird> AnMaster: ok, so it should be CC = gcc, not CC := gcc? :P
20:24:37 <AnMaster> means that CFLAGS expands to -O2
20:24:49 <AnMaster> ehird, in that case it wouldn't make any difference
20:24:59 <AnMaster> ehird, well a bit of difference
20:25:06 <AnMaster> ehird, with overriding CC on command line
20:25:16 <AnMaster> iirc it won't work for the latter
20:25:22 <AnMaster> but not completely sure about that
20:25:35 * ehird wonders how bad it is to do #include "lance.c" in main.c to avoid writing an .h
20:25:36 <AnMaster> ehird, since you probably want make CC=icc to work, the former
20:25:39 <ehird> methinks "very bad"
20:25:47 <AnMaster> ehird, depends on your goals
20:26:14 <ehird> AnMaster: what should I do if I want CFLAGS=foo make to append my cflags to foo, but make CFLAGS=foo to override them entirely?
20:26:19 <ehird> CFLAGS +:=? :P
20:26:32 <AnMaster> ehird, I have no clue
20:26:39 <ehird> I'll just do =
20:26:48 <ehird> lamers who want their own cflags can do make CFLAGS=…
20:26:50 <AnMaster> ehird, += would append for both
20:26:59 <ehird> AnMaster: yeah which sucks
20:27:01 <ehird> if you don't want that
20:27:08 <AnMaster> ehird, also isn't := gnu specific
20:27:11 <ehird> don't care
20:27:17 <AnMaster> iirc autotools screams about it if you use it
20:27:21 <AnMaster> which is funny
20:27:29 <ehird> good thing I don't use autotools
20:27:51 <AnMaster> ehird, well the funny thing is that GNU automake tells you not to use gnu make specific syntax
20:28:39 <AnMaster> !bfjoust x .
20:28:55 <AnMaster> did you loose if program ended?
20:28:57 <AnMaster> I forgot
20:28:57 <EgoBot> Score for AnMaster_x: 7.8
20:29:23 <ehird> don't recall
20:29:41 <AnMaster> !bfjoust x (+)*999999999999999999999999999999999
20:29:49 <ehird> I hate how gmake's default rules do
20:29:53 <ehird> $(CFLAGS) $(CPPFLAGS) ...
20:29:55 <EgoBot> Score for AnMaster_x: 7.8
20:29:55 <ehird> so that you get tons of spaces
20:30:00 <AnMaster> ehird, why?
20:30:05 <ehird> because it irritates me
20:30:06 <AnMaster> there is a single space between them
20:30:11 <AnMaster> in your paste
20:30:13 <ehird> ehird@meson:~/src/lance$ make
20:30:14 <ehird> cc -O3 -c -o lance.o lance.c
20:30:16 <ehird> cc -O3 -c -o main.o main.c
20:30:18 <AnMaster> well
20:30:20 <ehird> $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
20:30:20 <AnMaster> that is a tab
20:30:21 <AnMaster> but
20:30:21 <ehird> etc
20:30:24 <ehird> since I only use cflags...
20:30:24 <AnMaster> <ehird> $(CFLAGS) $(CPPFLAGS) ...
20:30:27 <ehird> it isn't a tab
20:30:28 <AnMaster> there is a singe space ther
20:30:29 <AnMaster> ah
20:30:29 <ehird> it's a space
20:30:32 <ehird> well
20:30:34 <ehird> spaces
20:30:43 <AnMaster> ehird, well any -I and -D should be CPPFLAGS
20:30:49 <ehird> yes, I know
20:30:51 <ehird> but all I do is -g or -O3
20:30:54 <AnMaster> any -Wl, or -l or -L should be LDFLAGS
20:30:56 <ehird> depending on if DEBUG is set
20:31:01 <AnMaster> ehird, so you want to break it for everyone else
20:31:06 <ehird> or it could just do
20:31:12 <ehird> $(if foo, spacefoo)
20:31:13 <ehird> or whatever
20:31:15 <ehird> :|
20:31:23 <AnMaster> ehird, would be messy
20:31:23 <AnMaster> also
20:31:26 <ehird> nobody uses the default rules anyway precisely because of all the spaces
20:31:26 <AnMaster> just do: make -s
20:31:28 <AnMaster> iirc
20:31:33 <ehird> that removes helpful output
20:31:37 <AnMaster> ehird, I use the default rules
20:31:39 <AnMaster> in fact
20:31:44 <ehird> no you don't, you use cmake
20:31:52 <AnMaster> ehird, not always
20:31:57 <AnMaster> it depends on how large the project is
20:32:05 <AnMaster> I sometimes use a simple:
20:32:14 <AnMaster> all: foo bar
20:32:17 <AnMaster> clean:
20:32:22 <AnMaster> ...
20:32:27 <ehird> you forgot .PHONY
20:32:29 <AnMaster> .PHONEY: all clean
20:32:31 <ehird> also, -O2
20:32:32 <ehird> *PHONY
20:32:34 <ehird> also, "all"?
20:32:37 <ehird> don't you mean "executablename"
20:32:41 <AnMaster> ehird, well there were two names there
20:32:53 <AnMaster> ehird, and that is enough with the implicit rules
20:33:00 <ehird> not if any program has more than one file
20:33:03 <AnMaster> ehird, true
20:33:08 <AnMaster> ehird, I said for simple projects
20:33:18 <ehird> lol if i do
20:33:21 <ehird> lance: main.o
20:33:24 <ehird> cc -O3 -c -o main.o main.c
20:33:25 <ehird> cc -O3 lance.c main.o -o lance
20:33:31 <AnMaster> ehird, XD
20:33:47 <ehird> lance: lance.o main.o works though
20:33:49 <AnMaster> ehird, do lance: lance.o main.o
20:33:51 <AnMaster> yeah
20:33:54 <ehird> hmm
20:34:00 <ehird> gmake should be able to automatically create a clean :(
20:34:22 <ehird> clearly the solution is for me to write Yet Another Makefile Generator :D
20:34:34 <AnMaster> ehird, also I use makefiles for stuff like: *.dia -> *.svg -> *.pdf
20:34:47 <AnMaster> or *.dot for that matter
20:35:02 <AnMaster> *.pdf for embedding in pdftex output
20:35:23 <ehird> that's what make is designed for
20:35:24 <AnMaster> you can embed pdf in pdf, unlike most other formats
20:35:27 <AnMaster> ehird, indeed
20:35:30 <ehird> automating file transformation
20:35:49 * ehird realises he doesn't actually need clean, axes it
20:35:54 <AnMaster> ehird, C -> executable is also such a transformation
20:35:57 <ehird> yes.
20:36:00 <AnMaster> ehird, I find clean useful if I change the Makefile
20:36:03 <AnMaster> but you can do
20:36:11 <AnMaster> lance: lance.o main.o Makefile
20:36:12 <AnMaster> I guess
20:36:25 <ehird> yeah i guess
20:36:27 <AnMaster> erhm no
20:36:34 <AnMaster> lance.o wouldn't depend on Makfile there
20:36:39 <AnMaster> Makefile*
20:36:43 <ehird> %.o: Makefile
20:36:47 <AnMaster> good point
20:37:02 <ehird> also rm *.o works quite well :P
20:37:19 <AnMaster> ehird, rm *.o lance you mean
20:37:21 <ehird> CFLAGS = -O3
20:37:23 <ehird> lance: lance.o main.o
20:37:25 <ehird> there that's nice and small
20:37:26 <ehird> AnMaster: well yes
20:37:36 <ehird> (debug compile: make CFLAGS=-g :P)
20:37:50 <ehird> oh wait
20:37:53 <ehird> I'm using Emacs
20:38:05 <ehird> c-mode has the worst indentation defaults ever
20:38:06 <ehird> halp
20:38:15 <AnMaster> ehird, sec
20:38:29 <AnMaster> ehird, I suspect ais likes the defaults ;P
20:38:30 <ehird> lance: lance.o main.o
20:38:31 <ehird> lance.o main.o: lance.h
20:38:33 <ehird> I hope this works
20:38:50 <ehird> AnMaster: no, he uses mixed tabs and spaces, 2-space indent, and this brace style:
20:38:51 <ehird> void f(){
20:38:53 <ehird> ...;
20:38:55 <ehird> ...;}
20:38:57 <AnMaster> -*- mode: C; coding: utf-8; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
20:38:59 <ehird> (really)
20:39:03 <AnMaster> ehird, there is a modline for you
20:39:09 <ehird> AnMaster: I'd prefer to just set it in my .emacs rather than clutter my files
20:39:17 <AnMaster> meh
20:39:43 <ehird> how does it go again
20:39:47 <ehird> add-hook 'c-mode-hook
20:39:57 -!- Azstal has joined.
20:39:58 <AnMaster> (custom-set-variables
20:39:58 <AnMaster> '(standard-indent 4)
20:39:58 <AnMaster> '(tab-width 4))
20:40:02 <ehird> fuck custom
20:40:12 <ehird> also, I want it only for C
20:40:19 <AnMaster> ehird, meh
20:40:40 <AnMaster> ehird, one you might like:
20:40:40 <ehird> (c-set-style 'k&r)
20:40:42 <AnMaster> (setq inhibit-startup-message t)
20:40:43 <ehird> or is it "k&r"
20:40:45 <ehird> yeah the latter
20:40:47 <ehird> AnMaster: old hat, of course I have that
20:40:53 <AnMaster> ehird, good
20:41:06 <ehird> and (blink-cursor-mode -1) and (tool-bar-mode -1) and (menu-bar-mode -1)
20:41:16 <ehird> and the long snippet to move #foo# and foo~ files out of the way
20:41:44 <AnMaster> ehird, I like my *~
20:42:28 <ehird> I don't.
20:42:46 <ehird> (add-hook 'c-mode-hook
20:42:48 <ehird> (lambda ()
20:42:49 <ehird> (setq indent-tabs-mode t)
20:42:51 <ehird> (c-set-style "k&r")))
20:42:52 <ehird> Oops, that uses tabs.
20:42:54 * ehird untabify
20:43:22 <ehird> oh sweet
20:43:29 <ehird> C-x C-f ~/src/lance/*.c works
20:43:51 <ehird> ugh, my c-mode-hook didn't work
20:44:11 <ehird> and k&r still uses dumbfuck 5-space indentation
20:44:57 <Ilari> And two idents would be 1 tab and 2 spaces?
20:45:04 <ehird> believe so
20:45:14 <ehird> emacs' way of thinking about tabs/spaces is pretty stupid
20:45:58 * ehird tries c-set-style linux
20:46:14 <ehird> Much better.
20:46:15 <AnMaster> ehird, anything wrong with tabs?
20:46:24 <ehird> ???
20:46:34 <AnMaster> <ehird> Oops, that uses tabs.
20:46:42 <ehird> In elisp, yes.
20:46:47 <ehird> Because you don't always indent by a fixed amount.
20:46:54 <AnMaster> ehird, well yes
20:46:54 <ehird> You align, and lambda gets two spaces, but
20:46:56 <ehird> (f
20:46:57 <ehird> x)
20:46:59 <ehird> gets one
20:47:00 <ehird> etc
20:47:02 <ehird> Thus, tabs are retarderated.
20:47:05 <AnMaster> but I thought that was in C?
20:47:17 <ehird> [20:42] <ehird> (add-hook 'c-mode-hook
20:47:18 <ehird> [20:42] <ehird> (lambda ()
20:47:20 <ehird> [20:42] <ehird> (setq indent-tabs-mode t)
20:47:21 <ehird> [20:42] <ehird> (c-set-style "k&r")))
20:47:22 <AnMaster> ah
20:47:23 <ehird> [20:42] <ehird> Oops, that uses tabs.
20:47:24 <ehird> Read closer.
20:48:17 <AnMaster> actually it didn't look like that here
20:48:22 <AnMaster> <ehird> (add-hook 'c-mode-hook
20:48:22 <AnMaster> <ehird> (lambda ()
20:48:23 <AnMaster> vs.
20:48:27 <AnMaster> <ehird> [20:42] <ehird> (add-hook 'c-mode-hook
20:48:27 <AnMaster> <ehird> [20:42] <ehird> (lambda ()
20:48:32 <ehird> Yes, Konversation erased them on paste or something.
20:48:44 <AnMaster> huh
20:48:55 <ehird> Ehh, c-mode's electric mode is rubbish.
20:49:01 <ehird> It doesn't add spaces after commas or anything.
20:49:08 <AnMaster> ehird, what was that electric mode, I don't remember
20:49:14 <AnMaster> C is a language I use µemacs for
20:49:16 <ehird> int main(){
20:49:18 <ehird>
20:49:19 <ehird> int main()
20:49:21 <ehird> {
20:49:22 <ehird> automatically
20:49:24 <ehird> just by typing {
20:49:25 <AnMaster> NO!
20:49:27 <AnMaster> int main() {
20:49:29 <ehird> It would be nice, if it worked.
20:49:32 <AnMaster> in fact
20:49:36 <AnMaster> int main(void) {
20:49:40 <ehird> AnMaster: that's pointless, it gets changed automatically you idiot
20:49:40 <AnMaster> is the only True Way
20:49:43 <ehird> that's what electric-mode does
20:49:47 <AnMaster> ehird, right
20:49:52 <ehird> also, you cannot call _anything_ that K&R did not do the True Way
20:49:53 -!- augur has quit (Read error: 110 (Connection timed out)).
20:50:08 <ehird> i mean, come the fuck on, Unix was the first C software
20:50:10 <AnMaster> ehird, True Way by Committee!
20:50:12 <ehird> if ANYTHING is the true way it's what it did
20:50:23 <ehird> AnMaster: actually very few corporate things are written like that
20:50:28 <ehird> mostly they use Allman style, is my impression
20:53:41 <AnMaster> allman?
20:53:53 <ehird> Google it.
20:55:15 -!- Asztal has quit (Connection timed out).
20:55:38 -!- Asztal has joined.
20:55:57 -!- augur has joined.
20:55:58 <ehird> Gah, Emacs is not nearly hyper enough.
20:56:05 <Sgeo> Is AnMaster turning into me?
20:57:34 -!- Asztal has quit (Read error: 60 (Operation timed out)).
20:57:38 <ehird> ?
20:57:45 <ehird> No, AnMaster has never googled for things.
20:59:02 <Phantom_Hoover> People are dropping left and right...
20:59:50 * ehird drops
20:59:58 <ehird> Phantom_Hoover: who are you, anyway?
21:00:00 <ehird> witch!
21:00:15 <oklofok> New Now Know How sounds familiar
21:00:20 -!- Asztal has joined.
21:00:31 <oklofok> oh
21:00:55 <oklofok> nm
21:01:23 <oklofok> i must be turning into ehird, i googled it.
21:01:29 <Phantom_Hoover> ehird: I'm just zis guy, you know?
21:01:34 <ehird> chatzilla default message :P
21:01:37 <oklofok> yes
21:01:49 <ehird> Phantom_Hoover: right right. wait, you're not the guy who made Esme, are you? just checking.
21:01:54 <Phantom_Hoover> Esme?
21:01:58 <ehird> good
21:02:03 <ehird> Phantom_Hoover: the worst esolang ever created
21:02:12 <ehird> http://esolangs.org/wiki/Esme
21:02:17 <ehird> if it can even be considered a language
21:02:21 <ehird> meaningless as it is
21:02:53 <ehird> " This article is a stub, which means that it is not detailed enough and needs to be expanded. Please help us by adding some more information." now now, I don't think that page needs expanding at *all*
21:03:19 <Phantom_Hoover> What the hell does it do?
21:03:31 <ehird> EXACTLY
21:03:32 <ehird> We don't know
21:03:36 <ehird> Pretty sure he's just a troll
21:03:42 <ehird> But it's amazing how... informationless... he made it
21:03:54 <ehird> You literally cannot infer a single thing from the page
21:04:23 -!- Azstal has quit (Success).
21:04:38 <ehird> Sweet, installing manpages-posix-dev makes `man foo.h` work.
21:04:52 <Phantom_Hoover> Hashes makes little more sense...
21:06:04 <AnMaster> wow, rosegarden depends on kdialog for export/import
21:06:07 <AnMaster> that is just crazy
21:07:23 <ehird> ugh, i hate getopt_long's api
21:08:47 * ehird just writes a manual loop rather than futz with it
21:09:14 <AnMaster> ehird, don't use getopt_long
21:09:16 <AnMaster> use getopt
21:09:21 <ehird> No; I want long options.
21:09:23 <AnMaster> it's more portable
21:09:26 <AnMaster> ehird, fine
21:09:28 <ehird> Don't give a fuck.
21:09:51 <ehird> Actually, I wish there was an option parser that also did argument parsing.
21:09:57 <ehird> That would be nice.
21:11:19 <ehird> Seems like http://argtable.sf.net/ does that, but I don't like the syntax.
21:13:24 <AnMaster> Gregor, that soundfont was indeed good
21:13:33 <ehird> "BUT NOT ANY MORE!"
21:13:48 <AnMaster> har
21:13:58 <ehird> Hey, you could have things like:
21:14:09 <ehird> OPTION(name)
21:14:15 <ehird> that did __typeof__(name), say char *
21:14:19 <ehird> to infer what kind of argument it is
21:14:26 <ehird> *does
21:14:28 <ehird> and generates --name
21:14:32 <AnMaster> ehird, gcc has it's own language just to describe command line options iirc
21:15:13 <ehird> Perhaps if it did the declaration too
21:15:21 <ehird> FLAG(int, verbose)
21:15:24 <ehird> OPTION(char *, name)
21:15:30 <ehird> OPTION_DEFAULT(char *, name, "fred")
21:16:36 <soupdragon> This paper presents a method for creating formally correct just-in-time (JIT) compilers
21:16:38 <soupdragon> woah
21:16:49 <Phantom_Hoover> ?
21:16:54 <ehird> Ooh, it could even let you pass a function as the third argument to OPTION_DEFAULT.
21:17:02 <ehird> no, wait
21:17:06 <ehird> types are post-cpp, darn
21:17:44 <AnMaster> Gregor, know any way to load more than one sound font at once into sb live cards?
21:17:57 <AnMaster> Gregor, so I can get non-piano from another soundfont
21:18:32 -!- Asztal has quit (Read error: 110 (Connection timed out)).
21:21:55 <AnMaster> argh too little ram to load both at once
21:30:05 <ehird> God I hate C's string handling.
21:30:47 <ehird> Even writing (dirname(argv[0]) ~ "/hill"), where ~ = string concatenation, is a pain in the arse!
21:31:33 <ehird> Do the basename, strlen it, add strlen("/hill") to it, allocate a new string, strcpy them in.
21:31:34 <ehird> FML
21:34:14 <AnMaster> FML?
21:34:19 <ehird> Fuck My Life
21:34:26 <ehird> you know, in other languages, writing the command-line interface is nice relaxing busywork before tackling the real problems
21:34:26 <AnMaster> oh thought it was "language"
21:34:30 <ehird> in C it's the opposite!
21:34:32 <ehird> AnMaster: also that XD
21:34:47 <ehird> int main(int argc, char *argv[])
21:34:48 <ehird> {
21:34:50 <ehird> return 0;
21:34:51 <ehird> }
21:34:53 <ehird> that will do for now
21:34:58 <AnMaster> ehird, what does the app do?
21:35:06 <ehird> BF Joust
21:35:13 <ehird> Sieve and Kettle are back! Polarity FUCK YEAH!
21:35:34 <AnMaster> why are you doing dirname(argv[0]) ~ "/hill"
21:35:44 <AnMaster> ehird, 1) argv[0] may or may not contain the path
21:35:59 <AnMaster> 2) whats wrong with current working directory
21:36:09 <ehird> 1) bah, you're right
21:36:14 <ehird> 2) because that isn't what i want
21:36:32 <ehird> "lance prog" battles prog against the entire hill; you can set that with --hill
21:36:38 <AnMaster> 1) of course I'm right
21:36:39 <ehird> but by default it's that directory
21:36:51 <ehird> "lance prog1 prog2" battles the two, and ignores the hill, so it doesn't matter there
21:36:57 <ehird> I guess lance prog1 prog2 prog3... will work too
21:37:36 <AnMaster> ehird, if you are linux specific:
21:37:56 <ehird> Maybe I'll do Go but ignore the concurrency part
21:38:02 <ehird> It has string concatenation!
21:38:06 <AnMaster> /proc/self/exe
21:38:13 -!- soupdragon has quit ("Leaving").
21:38:25 <ehird> AnMaster: lol.
21:38:26 <Phantom_Hoover> !help languages
21:38:26 <EgoBot> languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
21:38:28 -!- soupdragon has joined.
21:38:34 <AnMaster> ehird, hm?
21:38:45 <ehird> AnMaster: because the code to open and read that file will be *even bigger*
21:40:01 <Phantom_Hoover> !help
21:40:02 <EgoBot> help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
21:40:17 <Phantom_Hoover> !help userinterps
21:40:17 <EgoBot> userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
21:40:18 <AnMaster> ehird, it's a symlink
21:40:38 <ehird> AnMaster: x_x
21:40:38 <Phantom_Hoover> !userinterps
21:40:38 <EgoBot> Installed user interpreters: aol austro b1ff bc bct bfbignum brit brooklyn bypass_ignore chef chiqrsx9p choo cockney ctcp dc drawl dubya echo eehird ehird fudd funetak google graph gregor hello id jethro kraut num ook pansy pirate plot postmodern postmodern_aoler redneck reverse rot13 sadbf sfedeesh sffedeesh sffffedeesh sffffffffedeesh slashes svedeesh swedish valspeak warez yodawg
21:40:40 <ehird> crazy
21:40:46 <AnMaster> ehird, what?
21:40:54 <ehird> Well, okay, not crazy.
21:41:07 <AnMaster> I believe you can use stat()
21:41:08 <ehird> Maybe I should write yet another string library for C. You know, because I hate myself :P
21:41:14 <ehird> AnMaster: readlink(), rather
21:41:35 <AnMaster> ehird, ah yes that is it
21:41:40 <AnMaster> stat(1) does it iirc
21:42:16 <Phantom_Hoover> !help
21:42:16 <EgoBot> help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
21:42:20 <Phantom_Hoover> !info
21:42:20 <EgoBot> EgoBot is a bot for running programs in esoteric programming languages. If you'd like to add support for your language to EgoBot, check out the source via mercurial at https://codu.org/projects/egobot/hg/ . Cheers and patches (preferably hg bundles) can be sent to Richards@codu.org , PayPal donations can be sent to AKAQuinn@hotmail.com , complaints can be sent to /dev/null
21:42:26 <AnMaster> readlink("/proc/self/exe", "/", 1) = 1
21:42:26 <AnMaster> readlink("/proc/self/exe", "/u", 2) = 2
21:42:26 <AnMaster> readlink("/proc/self/exe", "/usr", 4) = 4
21:42:26 <AnMaster> readlink("/proc/self/exe", "/usr/bin", 8) = 8
21:42:26 <AnMaster> readlink("/proc/self/exe", "/usr/bin/stat", 16) = 13
21:42:30 <AnMaster> how inefficient
21:43:56 <AnMaster> also it doesn't null terminate
21:44:03 <Phantom_Hoover> !help help
21:44:03 <EgoBot> help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
21:44:11 <Phantom_Hoover> !help interp
21:44:11 <EgoBot> Sorry, I have no help for interp!
21:44:17 <Phantom_Hoover> !help bf
21:44:17 <EgoBot> Sorry, I have no help for bf!
21:44:36 <Phantom_Hoover> !languages
21:44:55 <AnMaster> !help userinterps
21:44:55 <EgoBot> userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
21:44:59 <AnMaster> !help languages
21:45:00 <EgoBot> languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
21:45:13 <Phantom_Hoover> !lazyk
21:45:15 <EgoBot> Couldn't fork sub-program.
21:45:22 <AnMaster> Phantom_Hoover, you need to give it code
21:46:01 <Phantom_Hoover> Yeah, but the cat program in Lazy K is an empty file.
21:46:16 <AnMaster> Phantom_Hoover, hm report a bug to Gregor
21:46:21 <AnMaster> or use the url variant
21:46:27 <AnMaster> to link to an empty file
21:47:01 <ehird> !sh cat /dev/null >butt
21:47:01 <EgoBot> /tmp/input.11852: line 1: butt: Permission denied
21:47:03 <ehird> !sh cat butt
21:47:04 <EgoBot> /bin/cat: butt: No such file or directory
21:47:05 <ehird> dammit
21:47:08 <ehird> !sh cat /dev/null | lazyk
21:47:09 <EgoBot> /tmp/input.11907: line 1: lazyk: command not found
21:47:10 <ehird> aw
21:47:20 <Phantom_Hoover> !sh ls
21:47:21 <EgoBot> interps
21:47:27 <Phantom_Hoover> !sh ls ..
21:47:27 <EgoBot> multibot_cmds
21:47:28 <AnMaster> `echo "try this"
21:47:28 <HackEgo> "try this"
21:47:32 <AnMaster> ehird, ^
21:47:51 <AnMaster> !sh pwd
21:47:51 <EgoBot> /home/egobot/egobot.hg/multibot_cmds
21:48:00 <AnMaster> !sh ls ~
21:48:01 <EgoBot> egobot.hg
21:48:05 <AnMaster> !sh ls /
21:48:05 <EgoBot> bin
21:48:24 <AnMaster> !sh ls / | tr -d $'\n'
21:48:25 <EgoBot> bindevetchomeliblib64proctmpusr
21:48:25 <ehird> Ego != Hack
21:48:30 <AnMaster> !sh ls / | tr $'\n' ' '
21:48:31 <EgoBot> bin dev etc home lib lib64 proc tmp usr
21:48:33 <ehird> !sh ls
21:48:33 <EgoBot> interps
21:48:36 <ehird> !sh ls interps
21:48:37 <EgoBot> 1l
21:48:40 <AnMaster> !sh ls | tr $'\n' ' '
21:48:41 <EgoBot> interps lib slox
21:48:45 <ehird> !sh ls interps/lazyk
21:48:46 <AnMaster> !sh ls ~ | tr $'\n' ' '
21:48:47 <EgoBot> USED_VERSION
21:48:47 <EgoBot> egobot.hg
21:48:58 <AnMaster> !sh ls interps/lazyk | tr $'\n' ' '
21:48:59 <ehird> !sh interps/lazyk/lazy
21:48:59 <EgoBot> USED_VERSION lazy lazy.cpp primes.lazy
21:49:08 <ehird> !sh interps/lazyk/lazy --help | tr $'\n' ' '
21:49:09 <EgoBot> usage: lazy [-b] { -e program | program-file.lazy } * -b puts stdin and stdout into binary mode on systems that care (i.e. Windows) -e program takes program code from the command line (like Perl's -e switch) program-file.lazy name of file containing program code If more than one -e or filename argument is given, the programs will be combined by functional composition (but in Unix pipe order,
21:49:09 <AnMaster> ehird, note it gives you only one line
21:49:15 <AnMaster> indeed
21:49:16 <Phantom_Hoover> !lazyk
21:49:16 <EgoBot> Couldn't fork sub-program.
21:49:17 <Phantom_Hoover> `k``s``si`k``s`k```sii``s``s`kski``s``s`ksk``s``s`ksk```s``siii``s``s`kski`k``s``si`k``s``s`ksk```s``s`kski``s`k``s``s`kski``s``s`ksk```sii``s``s`kski`k``s``si`k``s`k```sii``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k``s`k```sii``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k``s``s`ksk``s`k``s``s`kski``s``s`ksk``s`k``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k````s``s`ksk```s``siii``s``s`
21:49:18 <ehird> !sh interps/lazyk/lazy -e '' | tr $'\n' ' '
21:49:18 <HackEgo> No output.
21:49:19 <Phantom_Hoover> kski`s``s`ksk```sii``s``s`ksk``s``s`kski`k``s``si`k``s`k``s``s`kski```s``siii``s``s`kski`k``s``si`k``s`k``s``s`ksk``s`k``s``s`kski
21:49:21 <Phantom_Hoover> ``s``s`ksk``s``s`kski``s``s`ksk```s``siii``s``s`kski`k``s``si`k``s``s`ksk``s`k``s``s`kski``s``s`ksk``s`k``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k``s`k``s``s`kski``s``s`ksk``s`k``s``s`kski``s``s`ksk```sii``s``s`ksk``s``s`kski`k``s``si`k``s`k```sii``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k```s``s`kski``s`k``s``s`kski``s``s`ksk```sii``s``s`kski`k``s``si`k``s``s`ksk``s`k``s``s`kski```s`
21:49:22 <HackEgo> No output.
21:49:22 <Phantom_Hoover> `siii``s``s`kski`k``s``si`k``s`k``s``s`kski``s``s`ksk```sii``s``s`kski`k``s``si`k```sii```sii``s``s`kski`k```sii```sii``s``s`kski
21:49:23 <HackEgo> No output.
21:49:24 <ehird> Phantom_Hoover: sigh.
21:49:26 <ehird> noobs.
21:49:27 <ehird> pastebin.ca
21:49:29 <ehird> use it
21:49:33 <ehird> then !lazyk url
21:49:38 <soupdragon> siisii!
21:49:53 <AnMaster> soupdragon, :D
21:50:26 <Phantom_Hoover> !lazyk http://pastebin.ca/1748851
21:50:28 <EgoBot> Couldn't fork sub-program.
21:50:41 -!- oerjan has quit ("Reboot").
21:51:03 <ehird> you must link to the raw version
21:51:17 <ehird> !lazyk http://pastebin.ca/raw/1748851
21:51:18 <EgoBot> Couldn't fork sub-program.
21:51:21 <ehird> borken
21:51:27 <Phantom_Hoover> !sh ls
21:51:28 <EgoBot> interps
21:51:33 <Phantom_Hoover> !sh ls interps
21:51:33 <EgoBot> 1l
21:51:58 -!- MigoMipo has quit.
21:52:13 <Phantom_Hoover> !sh ls interps/lazyk
21:52:13 <EgoBot> USED_VERSION
21:52:46 <Phantom_Hoover> !sh ls interps/lazyk/lazy -e "`k``s``si`k``s`k```sii``s``s`kski``s``s`ksk``s``s`ksk```s``siii``s``s`kski`k``s``si`k``s``s`ksk```s``s`kski``s`k``s``s`kski``s``s`ksk```sii``s``s`kski`k``s``si`k``s`k```sii``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k``s`k```sii``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k``s``s`ksk``s`k``s``s`kski``s``s`ksk``s`k``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`
21:52:47 <EgoBot> /tmp/input.12798: line 1: unexpected EOF while looking for matching `"'
21:52:48 <Phantom_Hoover> k````s``s`ksk```s``siii``s``s`kski`s``s`ksk```sii``s``s`ksk``s``s`kski`k``s``si`k``s`k``s``s`kski```s``siii``s``s`kski`k``s``si`k``s`k``s``s`ksk``s`k``s``s`kski``s``s`ksk``s``s`kski``s``s`ksk```s``siii``s``s`kski`k``s``si`k``s``s`ksk``s`k``s``s`kski``s``s`ksk``s`k``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k``s`k``s``s`kski``s``s`ksk``s`k``s``s`kski``s``s`ksk```sii``s``s`ksk``s``s`kski`k``s``s
21:52:49 <Phantom_Hoover> i`k``s`k```sii``s``s`kski```sii``s``s`ksk``s``s`kski`k``s``si`k```s``s`kski``s`k``s``s`kski``s``s`ksk```sii``s``s`kski`k``s``si`k``s``s`ksk``s`k``s``s`kski```s``siii``s``s`kski`k``s``si`k``s`k``s``s`kski``s``s`ksk```sii``s``s`kski`k``s``si`k```sii```sii``s``s`kski`k```sii```sii``s``s`kski"
21:52:56 <ehird> stop it
21:52:58 <ehird> for fuck's sake
21:53:01 <ehird> it won't fit on one irc line
21:53:02 <Phantom_Hoover> Sorry!
21:53:05 <ehird> xD
21:53:07 <ehird> don't mind me
21:53:09 <ehird> i'm just grumpy
21:53:15 <ehird> i'm in a grumpytacular mood
21:53:17 -!- Phantom_Hoover has quit ("ChatZilla 0.9.86 [Firefox 3.5.7/20100106054534]").
21:53:26 <ehird> although I'm not now, because I read the word grumpytacular
21:53:30 <ehird> hey i never said you should leave
21:53:35 <ehird> now i'm grumpy again
21:54:20 * Sgeo wants to un-grumpify ehird, but I tend to make ehird grumpy, I think
21:55:33 <ehird> Sgeo: make a haskell program and i'll be happy
21:55:35 <ehird> i like haskell programs
21:56:14 -!- oerjan has joined.
21:56:34 <soupdragon> haskell = "sucks"
21:56:36 <soupdragon> hapy???
21:57:02 <ehird> soupdragon: that is not a haskell program
21:57:03 <ehird> also, you suck
21:57:12 <soupdragon> how is that not a haskell program?
21:57:56 <oerjan> no main function
21:58:24 <Sgeo> There's a function that I forgot the name and type of
21:58:34 <oerjan> Sgeo: how useful
21:58:52 <Sgeo> main = <something-that-starts-with-c> id
21:59:01 <Sgeo> Is a cat program, iirc
21:59:32 <oerjan> interact
21:59:41 <Sgeo> Yes. And obviously it doesn't start with c
21:59:56 * Sgeo 's memory is obviously broken
22:00:06 <oerjan> scrambled, possibly
22:00:08 <ehird> interact :: (String → String) → String
22:00:16 <oerjan> no
22:00:20 <ehird> erm
22:00:21 <Sgeo> http://www.haskell.org/hoogle/?hoogle=interact
22:00:21 <ehird> → IO ()
22:00:26 <ehird> should have made :: the unicode character, but my Compose doesn't have it
22:00:47 <Sgeo> Does Haskell actually accept arrows like that? I doubt it
22:01:18 <oerjan> i understand ghc has some unicode extensions
22:01:38 <ehird> Sgeo: yes
22:01:46 <ehird> if you enable it
22:03:11 <ehird> cool ]{}[ isn't registered :D
22:09:30 <ehird> info ]
22:09:30 <ehird> opos
22:09:30 <ehird> oops
22:09:30 <ehird> http://community.haskell.org/~ndm/cmdargs/ ← this is super-rad
22:09:30 -!- Deewiant has quit (Read error: 60 (Operation timed out)).
22:09:30 -!- Deewiant has joined.
22:09:30 -!- augur has quit (Read error: 110 (Connection timed out)).
22:09:30 <ehird> Deewiant: is coadjute abandoned?
22:10:28 <Deewiant> All my Haskell stuff has been semi-abandoned lately
22:10:28 <Deewiant> Why?
22:10:55 <ehird> Just curious
22:10:56 <ehird> (Why?)
22:11:59 <ehird> s(int*a,int b){int t=*a;--b?s(a+1,b),a[(*a=1[a])<t]=t,s(++a,b):0;}
22:12:00 <ehird> C sort
22:12:34 <soupdragon> "defining command line parsers" sounds.. boring..
22:12:48 <ehird> soupdragon: stfu, it uses type magic
22:12:55 <ehird> and type magic is always sweet
22:12:56 <soupdragon> :(
22:12:59 <soupdragon> don't make me stfu
22:13:09 <ehird> besides, boring things can be interesting
22:13:18 <Deewiant> s(a,b)int*a;{int t=*a;--b?s(a+1,b),a[(*a=1[a])<t]=t,s(++a,b):0;}
22:13:38 <ehird> hmm
22:13:43 <ehird> is it valid without the return type declaration?
22:13:44 <ehird> i guess not
22:13:46 <ehird> so why not even
22:13:47 <ehird> s(a,b){...}
22:14:04 <Deewiant> There is no return type declaration?
22:14:10 <ehird> exactly
22:14:12 <ehird> is it valid without it
22:14:16 <Deewiant> There never was one
22:14:17 <ehird> if not, then we don't have to define param types anyway
22:14:19 <ehird> as we're not valid c
22:14:25 <Deewiant> Sure it's valid
22:14:31 <Deewiant> Isn't it?
22:14:34 <ehird> don't you need to say "void"...
22:14:54 <Deewiant> Doesn't it default to int
22:15:05 <ehird> is that standard?
22:15:27 <Deewiant> main(){puts("hello, world");} and all that
22:16:09 <ehird> s(a,b)int*a;{int t=*a;--b&&s(a+1,b),a[(*a=1[a])<t]=t,s(++a,b);}
22:16:12 <ehird> One character saved
22:16:14 <Deewiant> But in any case, that doesn't return anything
22:16:15 <ehird> or does a&&b,c not work?
22:16:17 <ehird> guess not
22:16:20 <ehird> Deewiant: That isn't valid
22:16:29 <Deewiant> What isn't?
22:16:52 <ehird> hmm
22:16:54 <ehird> perhaps it is
22:17:02 <ehird> Deewiant: I thought int-default-return was just a K&R relic
22:17:12 <Deewiant> Of course it's a K&R relic :-P
22:17:16 <Deewiant> Doesn't make it invalid
22:17:56 <Deewiant> Anyhoo, I think we want to make it void since it doesn't return
22:18:10 <Sgeo> int-default-return ?
22:19:07 <Deewiant> ehird: I think your && breaks stuff
22:19:27 <ehird> Deewiant: Yeah, I guessed as much
22:19:32 <Deewiant> a ? b,c,d : e has to parse as a ? (b,c,d) : e
22:19:50 <Deewiant> But , has the lowest precedence of everything
22:20:17 <Deewiant> So your a && b,c,d becomes (a && b), c, d
22:20:43 <pikhq> ehird: It's invalid in C99.
22:21:24 <ehird> Hmm
22:21:34 <ehird> Exchange sorts probably suck for this, because swapping a var in c is quite verbose
22:21:58 <ehird> int z=x;x=y;y=z; or x^=y;y^=x;x^=y;
22:22:24 <ehird> Also, recursion is a nice property here
22:23:22 <ehird> s(int*a){*a&&*a>a[1]?z=a[1],*a=a[1],a[1]=z:s(a+1);}
22:23:32 <ehird> does a&&b?c:d work?
22:23:35 <ehird> as a&&(b?c:d)
22:23:38 <ehird> even with commas
22:23:50 <Deewiant> ?: has lower precedence
22:23:52 <Deewiant> So no
22:24:05 <ehird> What about a?b?c:d:0 :P
22:24:11 <Deewiant> That works
22:24:15 <ehird> As what?
22:24:19 <ehird> a?(b?c:d):0?
22:24:21 <Deewiant> As the only thing it can work as
22:24:29 <ehird> True that.
22:24:37 <ehird> s(int*a){*a?*a>a[1]?z=a[1],*a=a[1],a[1]=z:s(a+1):0;}
22:24:43 <ehird> This has one flaw: It fails on "0".
22:24:46 <ehird> But who uses that number?
22:24:51 <ehird> Oh wait.
22:24:58 <ehird> s(int*a){~*a?*a>a[1]?z=a[1],*a=a[1],a[1]=z:s(a+1):0;}
22:25:02 <ehird> Okay, now it can't sort the maximum integer.
22:25:12 <ehird> Apart from that it's pea-chy
22:25:30 <Deewiant> You need to declare that z methinks
22:25:38 <ehird> Tru dat
22:25:54 <ehird> Hmm, and I can't use C99-style declarations either
22:25:56 <ehird> Because
22:26:00 <ehird> int z=a[1],...
22:26:02 <ehird> It'd have to be
22:26:06 <ehird> (int z=a[1]),...
22:26:34 <AnMaster> from make output: ./compiletex font.tex font.h font
22:26:36 <Deewiant> Declarations aren't expressions :-P
22:26:38 <AnMaster> really confused me that
22:26:43 <AnMaster> then I realised tex = texture
22:26:47 <AnMaster> not TeX
22:26:48 <ehird> Deewiant: Tru dat
22:26:57 <ehird> Hey, I just realised the xor swap must work in thiscase.
22:27:01 <ehird> Because > therefore !=.
22:27:16 <ehird> And it's three chars shorter than declaring a variable
22:27:35 <ehird> Wait, two.
22:27:39 <ehird> No wait, 1.
22:27:56 <ehird> s(int*a){*~a?*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:s(a+1):0;}
22:27:58 <ehird> Oops
22:28:01 <ehird> s(int*a){~*a?*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:s(a+1):0;}
22:29:24 <Deewiant> How's that going to sort {3,4,1,2}?
22:29:41 <Deewiant> ({3,4,1,2,~0})
22:29:51 <AnMaster> ehird, too tired to work it out, what does it do?
22:29:58 <ehird> Deewiant: Oh, you're right
22:30:02 <ehird> I have to recurse even if I do swap
22:30:05 <ehird> AnMaster: No cookie for you
22:30:17 <Deewiant> It does one pass of bubble sort or suchlike
22:30:19 <AnMaster> ehird, fine *half asleep*
22:30:44 <ehird> s(int*a){~*a?*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:0,s(a+1):0}
22:31:14 <ehird> Assuming that a?b?c,d:e,f:g parses as a?((b?(c,d):e),f):g
22:31:15 -!- kar8nga has joined.
22:31:18 <ehird> Which it probably… doesn't.
22:31:19 <Deewiant> You just changed the :s(a+1) case to :0,s(a+1)?
22:31:32 <ehird> s(int*a){~*a?(*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:0),s(a+1):0;}
22:31:36 <ehird> There, properly parenised.
22:32:02 <ehird> Deewiant: Rather, if we're not at the end of the list, we always go on one
22:32:07 <ehird> regardless of our swapping
22:32:16 <Deewiant> Since you need those parens it'll probably be shorter with an if
22:32:24 <ehird> Hmm wait
22:32:28 <ehird> What if ~*a but ~a[1]
22:32:29 <Deewiant> ehird: That's still O(n) :-P
22:32:31 <ehird> Better make it ~a[1]
22:32:39 <ehird> Deewiant: Gah, you're right
22:32:40 <Deewiant> You aren't going to sort anything in O(n)
22:32:51 <Deewiant> Well, not with comparisons anyway.
22:32:57 <ehird> http://en.wikipedia.org/wiki/Bubble_sort
22:33:03 <ehird> I was just stupidly copying wp's pseudocode
22:33:04 <ehird> without, you know
22:33:06 <ehird> reading it
22:33:10 <Deewiant> >_<
22:33:17 <ehird> Maybe I'l do pigeonhole sort
22:33:18 <ehird> *I'll
22:33:21 <Deewiant> Do selection sort or something instead, bubble sort sux
22:33:26 <ehird> Or whatever
22:33:32 <ehird> Deewiant: I'm not concerned about performance
22:33:42 <Deewiant> Neither am I
22:34:03 <Deewiant> I can never remember how bubble sort works but selection sort can be described in less than five words
22:34:07 <ehird> int foo[max value in array], when you find n do foo[n]++, reassemble array
22:34:12 <ehird> Ehh, too much overhead
22:34:24 <ehird> Deewiant: Do so, then :D
22:34:59 <Deewiant> "Repeatedly fetch the minimum" conveys the point well enough
22:35:34 <AnMaster> Deewiant, merge sort for the win
22:36:02 <AnMaster> split, recurse, swap, merge
22:36:28 <Deewiant> Swap?
22:36:48 <AnMaster> Deewiant, innermost layer
22:37:21 <AnMaster> well I guess you could split into 1, and then merge those
22:37:23 <Deewiant> No, there's no swap
22:37:29 <Deewiant> Exactly
22:48:11 -!- soupdragon has quit ("Leaving").
22:49:56 -!- soupdragon has joined.
22:50:32 -!- soupdragon has quit (Remote closed the connection).
22:58:59 -!- coppro has joined.
22:59:56 <oklofok> Deewiant: while not sorted, loop through array, swapping adjacent pairs in correct order.
23:00:30 -!- BeholdMyGlory has quit (Remote closed the connection).
23:01:11 <oklofok> maybe slightly harder to remember than bubble sort, but i'm not sure it's a great argument that it's hard to remember how it works
23:01:40 <Deewiant> It wasn't really an argument for anything
23:01:49 <oklofok> i suppose, neither was mine
23:02:20 <oklofok> so i win
23:02:22 <ehird> that is bubble sort
23:02:27 <ehird> "slightly harder to remember than bubble sort"
23:02:29 <ehird> YOU MADE AN ERROR
23:02:31 <ehird> you lose
23:02:34 <oklofok> :D
23:02:42 <oklofok> i suppose
23:02:58 <oerjan> you now have only 13096 tries left
23:03:39 <oklofok> so i win.
23:03:50 <oerjan> that remains to be seen
23:04:39 <coppro> oklofok: yeah, that is exactly bubble sort
23:04:46 <coppro> at least it's not bogosort
23:05:48 <oklofok> although you need to specify the direction of looping, if you want multiple bubbles, you will need to loop from end to beginning
23:05:49 <ehird> holy shit
23:05:51 <ehird> if you use wall(1) in kde
23:05:54 <ehird> it comes up in the notification area
23:05:56 <ehird> :D
23:06:14 <oklofok> otherwise it's basically selection
23:07:20 <oklofok> err wait it's symmetric
23:07:51 <oklofok> so nevermind that. in any case it is quite similar to selection sort
23:08:03 <oklofok> err... no
23:08:17 * oklofok stops failing at philosophy of sorting algorithms
23:08:47 -!- oerjan has quit (farmer.freenode.net irc.freenode.net).
23:08:47 -!- Sgeo has quit (farmer.freenode.net irc.freenode.net).
23:08:47 -!- comex has quit (farmer.freenode.net irc.freenode.net).
23:08:48 -!- fungot has quit (farmer.freenode.net irc.freenode.net).
23:08:48 -!- yiyus has quit (farmer.freenode.net irc.freenode.net).
23:08:48 -!- Deewiant has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- FireFly has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- anmaster_l has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- lifthrasiir has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- olsner has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- bsmntbombdood has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- dbc has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- EgoBot has quit (farmer.freenode.net irc.freenode.net).
23:08:49 -!- mycroftiv has quit (farmer.freenode.net irc.freenode.net).
23:09:16 <coppro> ehird: write too
23:09:37 <coppro> though since it goes a message per line, it's not great
23:10:37 -!- Deewiant has joined.
23:10:37 -!- FireFly has joined.
23:10:37 -!- anmaster_l has joined.
23:10:37 -!- lifthrasiir has joined.
23:10:37 -!- olsner has joined.
23:10:37 -!- bsmntbombdood has joined.
23:10:37 -!- dbc has joined.
23:10:37 -!- EgoBot has joined.
23:10:37 -!- mycroftiv has joined.
23:11:13 -!- oerjan has joined.
23:11:13 -!- Sgeo has joined.
23:11:13 -!- comex has joined.
23:11:13 -!- fungot has joined.
23:11:13 -!- yiyus has joined.
23:11:34 <ehird> whoa.
23:11:39 <ehird> I wish the fish shell had less flaws :<
23:11:43 <ehird> i hate using traditional shells
23:19:59 <AnMaster> ehird, what flaws?
23:20:18 <ehird> well, for instance, setting a variable for the duration of one command is a bitch
23:20:25 <ehird> iirc
23:20:32 <ehird> you have to do env x=y ...
23:20:34 <ehird> i believe
23:20:48 <ehird> woot, J works nicely on Kubuntu
23:20:53 <ehird> *in Kubuntu, I guess.
23:21:41 <oerjan> under Kubuntu
23:26:35 <ehird> oh god, J comes with a package browser for all kinds of stuff
23:26:38 <ehird> awesome
23:26:45 <ehird> there's even updates of the base library
23:30:58 <ehird> I should do some sort of specifying of the poop language.
23:31:40 <ehird> Pathological Objects Osomething Psomething.
23:32:33 <oerjan> Pathological Object Oriented Programming
23:32:52 <ehird> actually, that'd be a good one; it isn't OOP in the slightest, but it has "objects"
23:32:56 <ehird> and the language is oriented around them
23:33:07 <ehird> I guess it's similar to what my impression of DOBELA is given only Deewiant's probing about it
23:35:53 -!- anmaster_l has quit (Read error: 110 (Connection timed out)).
23:35:54 -!- augur has joined.
23:37:37 <ehird> basically, you have little particles that go in directions, and there are mirrors they can bounce off
23:37:48 <ehird> and if two particles collide, they shoot off some different particles
23:37:56 <ehird> and there are sinks and stuff that they can fall into to do things
23:43:49 <oklofok> and nothing makes sense
23:44:39 <ehird> poop makes sense
23:45:24 <ehird> coppro: what's the gesture that does the exposé-type thing in kde
23:45:27 <ehird> i keep doing it by mistake
23:45:41 <ehird> ah go to top-left and scroll mouse
23:45:43 <ehird> obvious :P
23:45:49 <coppro> O_o
23:45:57 <coppro> I just use the screen edges
23:46:06 <ehird> oh, I just didn't hit the edge fast enough
23:46:10 <ehird> except when scrolling
23:46:13 <ehird> as an entirely incidental thing
23:53:21 <oerjan> Particles Out Of Place
23:54:54 -!- augur has quit (Read error: 104 (Connection reset by peer)).
23:55:01 <ehird> maybe it can have multiple expansions!
23:59:56 -!- augur_ has joined.
←2010-01-11 2010-01-12 2010-01-13→ ↑2010 ↑all