00:02:30 -!- poiuy_qwert has quit ("This computer has gone to sleep"). 00:06:12 -!- poiuy_qwert has joined. 01:10:28 oklofok: yut. 01:16:39 no u r nut 01:17:59 a mad cadamia 01:21:02 or a loco coco 01:37:10 oerjan: iwc :D 01:37:54 NOW HOW CAN ANMASTER WIN 01:38:18 O_o 01:38:51 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 also i didn't think today's was any special 01:40:35 did AnMaster grow up? 01:42:02 no i think he just got bored 01:43:09 i see, i see 01:49:34 he's a total nut 01:50:31 completely off the wal 01:50:42 :D 01:51:18 how do you come up with that stuff 01:51:59 magic. 01:53:28 I didn't even rad the iwc 01:53:30 Read 01:53:39 what a cheater 01:53:40 I just wanteds 01:53:44 Muffles 01:53:54 Nifgle 01:54:04 Sniffle 01:54:06 I just 01:54:12 I just wanted to win something in my life for once 01:54:12 Schnibble 01:54:14 :( 01:54:59 how heartbreaking 01:54:59 :/ 01:55:30 I want to create an esolang called poop. It will be the poopiest language. 01:55:36 have you tried not sucking? 01:55:55 fecissima lingua 01:56:11 why adj first 01:56:19 oh wait 01:56:24 does latin always do that 01:56:43 no latin word order is pretty free 01:56:52 oh IC 01:57:26 http://tunes.org/~nef/logs/esoteric/?C=S;O=A 01:57:32 Our most spammy days. 01:57:58 Yesterday is quite far up there at 204 KiB. 01:58:02 O=D 01:58:32 That link sorts by size. 01:58:54 Also that is a dude with a halo. 01:59:12 A vertical halo. 01:59:18 dies spamissimae 01:59:42 oklofok: Oic 01:59:48 I had D 01:59:53 -!- ehirdiphone has quit (Remote closed the connection). 02:03:14 the top day seems to have a lot of bfjoust 02:04:09 um bottom actually, on that list 02:07:30 wait someone made bct in /// 02:07:41 you don't _say_ 02:08:00 my point exactly, why didn't anyone tell me 02:08:03 * oerjan coughs discreetly 02:08:05 i thought it was an open problem 02:08:10 yeah i know it was you 02:08:34 well i didn't know, but you've shown interest for solving the infinite loop 02:08:46 yeah 02:08:46 "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 and it's in haskell 02:08:51 http://dotnetperls.com/dictionary-keys 02:09:01 Suddenly, I'm not so interested in reading the rest of this site 02:09:14 haskell is used like an assembler, there 02:09:17 OMG that's pretty :D 02:10:30 is there a simple trick? 02:10:36 it's much easier to program /// if you _don't_ try to use just / and \, incidentally :D 02:11:30 did you make the quine too? 02:11:33 i hate wikis 02:11:34 yes 02:11:37 i want names 02:11:47 i suppose that's not a general problem of wikis 02:11:58 but i hate them, so it seemed to fit. 02:12:21 is there a simple trick? 02:12:32 to programming it, did you have a revelation 02:12:40 did you see beneath the surface 02:12:44 did you touch its inner beast 02:12:53 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 the "Simpler counter" section explains some things 02:14:08 -!- jpc has joined. 02:14:17 in the more readable style with free use of characters 02:15:55 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 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 yeah 02:18:12 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 (using my perl /// interpreter) 02:19:58 heh 02:20:04 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 is it incredibly fast? i just uninstalled my perl interpreter yesterday 02:21:18 it's pretty naive perl, but perl's regexes are quite optimized, so it's still the fastest /// interpreter afaik 02:21:27 i mean the /// prog :P 02:21:35 oh that, heavens no 02:22:04 i suppose it could be faster with a less naive /// interpreter 02:22:20 but is it like 2^ or ^2 02:22:28 it takes several minutes to run the example code 02:22:39 oh i think it is polynomial at least 02:23:00 (at most) 02:23:00 right 02:23:08 yeah at least at most 02:23:26 there is nothing unary or anything, it's just that by the nature of /// it needs to recopy itself a lot 02:24:02 right, copying the program is polynomial stuff usually 02:25:16 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 (this is one point where the interpreter could have been smarter, after a match it just starts again from the beginning) 02:26:13 (the perl interpreter) 02:26:25 -!- augur has joined. 02:26:32 by storing the program more sensibly, you could probably mostly just look-up where substitutions happen 02:26:47 hm perhaps 02:27:02 hayo 02:27:14 helloes 02:27:19 hi augur 02:27:44 hey 02:27:45 sup 02:34:39 oklofok: i also made some programs using the http://esoteric.voxelperfect.net/wiki/Itflabtijtslwi input extension 02:37:30 you're so awesome 02:37:34 i wish i was as awesome 02:38:49 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 if you , you've exhausted all the esolanging *i* did last year 02:39:32 :P 02:39:38 (that one is untested, btw, since there isn't afaik any eodermdrome interpreter yet 02:39:39 at least i think 02:39:41 ) 02:39:49 well i made an eodermdrome interp 02:39:50 could be 02:39:55 oh right... 02:40:03 but, well, i probably didn't put it anywhere. 02:40:18 so it's gone, all my hd's are broken 02:40:37 darn 02:41:12 but isn't it incredibly trivial to write one 02:41:50 not if you want it fast? 02:42:12 well it's graph rewriting, so... 02:42:26 i just mean for the purpose of testing 02:42:34 what does speed matter 02:43:08 maybe 02:44:47 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 not that us mathematicians are allowed to think about such trivialities 02:46:08 right, right 02:46:29 5 hours till lecture! 02:46:53 i better start preparing mentally 02:47:03 aka sleep? 02:47:21 or maybe it's too late for that 02:47:23 i actually didn't mean anything by that, realized seconds later i should've meant sleeping 02:47:34 so really i could've said "yes" here 02:48:23 food -> 02:48:25 i slept from like 18 to 22, which is why i'm not asleep yet 02:48:38 ah. 02:49:08 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 (classy hamburger restaurant.) 02:50:08 heh 02:50:36 as for me, i'm going to my local bread drawer 02:51:26 i have bread + hunger, but i don't want to wake up the female pol 02:51:34 oh wait i'm a fok now 02:54:45 you are so foked 02:55:21 *munch* 02:55:53 :'( 02:56:25 i suppose a finnish famine is no joking matter 02:59:18 actually i think she's awake already 02:59:34 the typity type type makes noise 02:59:47 so......... 03:00:02 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 I hit an issue with efunge and ATHR 12:19:05 which is 12:19:12 reliable testing of thread handling 12:19:30 btw, I'm on a unreliable wlan connection + ssh tunnel to my bouncer 12:20:03 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 AnMaster: does Erlang have testsuites for that sort of thing already? 12:22:29 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 ais523, well there is stuff, but the stuff I need to test is that I don't have race conditions 12:23:26 exactly 12:23:31 and that really is hard to check, since instrumenting stuff can change thing 12:23:34 things* 12:23:47 ais523, there nothing like helgrind afaik though 12:24:16 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 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 ais523, also there are some settings for debugging to change length of time between context switches 12:26:07 ais523, also there is the SMP issue. And message passing between OS level threads 12:26:08 AnMaster: I think you're missing the point of what I'm saying 12:26:27 and why did that line render as a bar-code lookalike for a moment there... 12:26:32 * AnMaster prods xchat. 12:26:40 ais523, possibly 12:27:29 ais523, anyway not only befunge instruction level interleaving, but what about the functions called in the erlang code 12:27:47 what if it switches to another thread in the middle of io:format() for exampe 12:27:49 example* 12:28:00 AnMaster: ah, can't you instrument those as well? 12:28:03 (I'm pretty sure that won't hurt, but you get the idea) 12:28:10 I must get around to implementing DO INEVITABLY in INTERCAL 12:28:16 ais523, well, up to a level. A bit to hard to inverleave 12:28:17 so you can inject test code into other bits of code 12:28:42 ais523, can you inject code in printf() ? 12:29:02 AnMaster: you can inject it into 1010 and the other stdlib functions, yes 12:29:12 hm 12:29:20 ais523, well not the C standard library printf though 12:29:48 no, but only because it isn't written in INTERCAL 12:29:57 ais523, and correct usage of the erlang stdlib is the level I'm currently worried at. 12:31:17 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 and erlang has a host on it's own 12:31:35 AnMaster: that's just more combinations to test 12:32:11 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 it's no big matter, testing all combinations shouldn't take more than a handful of universe heat deaths anyway 12:32:29 oerjan, :D 12:33:06 though I believe the erlang system is probably reliable, I had to write a custom supervisor behaviour for the befunge threads 12:33:12 the default one didn't cut it 12:33:49 (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 (for example, generic server process, generic supervisor process, generic state machine, and iirc a few more) 12:35:15 (and I'm quite worried about my own superrvisor, even though I based it on the one in erlang.) 12:36:21 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 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 I should write an INTERCAL race-condition checker 12:37:52 probably by checking different alignments in a loop, with a callback to report success or failure of the program 12:38:40 ais523, testing all possible combinations becomes infeasible quite quickly. Well depends on how well defined the interleaving is 12:38:56 you could just do random combinations 12:39:00 you'll end up testing all of them eventually 12:39:15 ais523, likely to find a few, but far from all. Something like klee but for threads sounds better 12:39:25 not sure it can be done 12:39:31 or if it even makes sense 12:40:17 (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 "zut alors", indeed 12:44:58 or wait 12:45:06 * oerjan fails french 12:54:08 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 either old, or just overly detailed :) 12:56:09 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 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 "puts delays in places systematically until it's checked all sequencings of thread interleaving" sounds very much like Promela + Spin. 14:19:32 http://spinroot.com/spin/whatispin.html was used in our parallel systems course. 14:20:37 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 how very strange 14:49:18 my desktop locked up the moment I plugged in the usb mouse 14:49:50 I had just before unlocked it (I use slock) 14:50:02 and this is the second time that happens when I plug in the mouse 14:50:19 (I take the mouse with me, if I plan to work for extended periods on my laptop) 14:50:24 so: hardware issue? 14:50:31 -!- AnMaster has quit (Connection reset by peer). 14:52:25 -!- AnMaster has joined. 14:55:14 nothing relevant in system logs, sysrq didn't work 15:14:07 -!- augur has joined. 15:14:16 well hello there 15:20:46 hi 15:49:58 -!- FireFly has joined. 16:11:16 -!- soupdragon has joined. 16:26:52 -!- ehird has joined. 16:27:18 No ais523 :-( 16:29:25 04:54:08 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 04:54:25 either old, or just overly detailed :) 16:29:28 Two words: Emacs tutorial. 16:29:51 ehird, oh? 16:29:54 hm true 16:30:17 Emacs commands generally involve the CONTROL key (sometimes labeled 16:30:19 CTRL or CTL) or the META key (sometimes labeled EDIT or ALT). Rather than 16:30:20 write that in full each time, we'll use the following abbreviations: 16:30:22 C- means hold the CONTROL key while typing the character 16:30:23 Thus, C-f would be: hold the CONTROL key and type f. 16:30:25 M- means hold the META or EDIT or ALT key down while typing . 16:30:26 If there is no META, EDIT or ALT key, instead press and release the 16:30:28 ESC key and then type . We write for the ESC key. 16:30:41 "We write for the ESC key." :D 16:30:43 You can use the arrow keys, ← I'm surprised this isn't qualified with "if you have them" 16:30:53 Each line of text ends with a Newline character, which serves to 16:30:55 separate it from the following line. (Normally, the last line in 16:30:56 a file will have a Newline at the end, but Emacs does not require it.) 16:30:57 When you move past the top or bottom of the screen, the text beyond 16:30:59 the edge shifts onto the screen. This is called "scrolling". It 16:31:01 enables Emacs to move the cursor to the specified place in the text 16:31:02 without moving it off the screen. 16:31:04 ehird, about the arrow keys, it would have been if ais had written it 16:31:17 You can also move the cursor with the arrow keys, if your terminal has 16:31:18 arrow keys 16:31:26 AnMaster: ding! 16:31:27 bingo 16:31:33 *arrow keys. 16:31:43 If you are using a windowed display, such as X or MS-Windows, there 16:31:44 One word: vimtutor 16:31:45 should be a tall rectangular area called a scroll bar on one side of 16:31:46 the Emacs window. (There are other tall rectangles on either side of 16:31:48 (pwnd) 16:31:48 the Emacs display. These "fringes" are used for displaying 16:31:49 continuation characters and other symbols. The scroll bar appears on 16:31:51 only one side, and is the outermost column on that side.) 16:31:52 You can scroll the text by clicking the mouse in the scroll bar. 16:31:55 If your mouse has a wheel button, you can also use this to scroll. ← Now that's modern! 16:32:02 haha 16:32:14 soupdragon, it is even worse then? 16:32:21 No, vimtutor is reasonable. 16:32:24 I need programming help 16:32:26 Which makes it BOOOOOO-RING 16:32:31 -!- snowscape has joined. 16:32:32 ehird, exactly 16:32:48 In order to make the text you edit permanent, you must put it in a 16:32:49 file. Otherwise, it will go away when your invocation of Emacs goes 16:32:51 away. In order to put your text in a file, you must "find" the file 16:32:53 before you enter the text. (This is also called "visiting" the file.) 16:32:54 Finding a file means that you see the contents of the file within 16:32:56 Emacs. In many ways, it is as if you were editing the file itself. 16:32:57 However, the changes you make using Emacs do not become permanent 16:32:59 ehird, iirc you used to have to change a setting to make the scroll wheel work in emacs 16:32:59 until you "save" the file. This is so you can avoid leaving a 16:33:02 Has anyone got a font that looks like the output of a dot matrix printer? :-) 16:33:03 half-changed file on the system when you do not want to. Even when 16:33:04 is d as in dy/dx just like 0.00000000...00001 (some kind of infintesimal)? 16:33:05 you save, Emacs leaves the original file under a changed name in case 16:33:07 you later decide that your changes were a mistake. 16:33:09 wait ill ask #math 16:33:10 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 soupdragon: yeah i think so 16:33:43 since you can approximate it better and better with 0.1,0.01,0.001,etc 16:33:50 ehird, I more usually use µemacs rather than gnu emacs for file editing these days 16:33:51 I'm trying to read about non-standard analysis but it seems to require stuff like ultrafilters 16:33:55 and gnu emacs mostly for irc 16:34:02 AnMaster: o_O 16:34:05 AnMaster: What's happened to you? 16:34:15 ehird, hm? 16:34:17 lol@keeping GNU Emacs just for ERC, it isn't an *especially* good client :-) 16:34:34 ehird, well there are a few other major/minor modes I find useful 16:34:53 microEmacs doesn't do things like inferior/interaction modes, does it? 16:35:03 ehird, not that I found anyway 16:35:03 like interacting with lisp while editing a lisp program 16:35:14 thus it's only Emacs in a very tenuous keybindings sense 16:35:19 ehird, lisp is one of the things I edit in gnu emacs still 16:35:28 you edit lisp? 16:35:45 ehird, well, a bit, more often scheme than elisp though 16:35:55 bbl 16:36:24 AnMaster: Clearly you must use amend for everything. 16:36:32 alter 16:36:49 ehird, have you started coding on it yet? 16:36:55 soupdragon: amend. 16:36:57 AnMaster: no :P 16:37:03 designs are percolating in my head 16:37:40 ehird, what about your linux distro? your os? your 16:38:00 I have thought about my OS as recently as yesterday, actually, and mentioned that fact. 16:38:06 I do have a list of long-term projects, you know. 16:38:28 ehird, well, yes, but due to adding new ones the old ones just seem to get pushed further and further back 16:38:35 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 Not once was it intended as a short-term project. 16:39:03 ehird, well sure. What about the editor 16:39:16 DEATH TO INFIDELS 16:39:18 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 AnMaster: The editor? You mean amend? 16:39:27 That would be what I am talking about now. 16:39:28 ehird, well yeah 16:39:39 ehird, well yes. But I mean, do you have any time scale for it 16:39:43 1 year? 10 years? 16:39:50 Yes, in fact. 16:39:50 2 weeks or so 16:39:50 or somewhere in between 16:39:52 Lemme check my logs. 16:40:27 [Monday 11 Jan 2010] [01:17:09] 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 [Monday 11 Jan 2010] [01:17:20] And another one and a half weeks to do polishing up. 16:40:30 [Monday 11 Jan 2010] [01:17:46] So about 7 weeks; maybe less, maybe more. 16:40:31 [Monday 11 Jan 2010] [01:17:53] Hopefully less. 16:40:33 [Monday 11 Jan 2010] [01:17:55] I can code like hell. 16:40:35 [Monday 11 Jan 2010] [01:18:10] So let's say 5-7 weeks; most likely around 5.5-6. 16:40:36 [Monday 11 Jan 2010] [01:18:31] coppro: But if you can deal with oft-brokenness, you could start using it in, like, 3.5 weeks. 16:40:56 so about 2 weeks, give or take 5 16:41:00 That's for the earliest version you're likely to want to use. 16:41:06 oklofok: Yuk yuk yuk. 16:41:08 hm 16:41:14 -!- BeholdMyGlory has joined. 16:41:24 ehird, assuming you don't become preoccupied by other things 16:41:38 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 or actually just give 16:41:48 AnMaster: Indeed. Is anybody waiting for my editor with every breath? 16:41:59 Well, coppro seems to want it quite a bit, but nobody else, really. 16:42:20 what? i'm basically basing my whole future on your editor 16:42:23 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 ehird, well, I will probably try it out, and if I like it, who knows 16:42:29 oklofok: I'll have it done yesterday 16:42:36 AnMaster: That isn't waiting for it with every breath :P 16:42:36 it's like a father to me 16:42:41 also I find that time schedule slightly unrealistic, some bits overly optimistic and other parts overly pessimistic 16:42:52 AnMaster: Hopefully those cancel out, eh. 16:42:56 like basic editing would take as long as modes 16:43:07 It would if you want a decent structure. 16:43:07 somehow I think modes will take longer 16:43:12 what are modes 16:43:13 ehird, hm maybe 16:43:30 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 oklofok, define: says: "a particular functioning condition or arrangement; "switched from keyboard to voice mode" " 16:43:40 amonst other things 16:43:45 You need to come up with decent keybindings and a general editing philosophy. 16:43:52 You need to write UIs for things like incremental searching. 16:44:00 oklofok, or more precise, think like modes in emacs 16:44:02 Heck, you need to implement incremental searching; not the easiest thing ever. 16:44:08 oklofok doesn't know Emacs. 16:44:14 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 hey i even had emacs installed 16:44:20 AnMaster: Of course. 16:44:20 how do current editors do it 16:44:24 AnMaster: Multiple times, which is the whole point. 16:44:24 although i did uninstall it a few days ago 16:44:40 i think i've like saved a file or something in it 16:44:42 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 oh 16:44:51 irc-mode is for wasting time. 16:44:51 You need to write UIs for things like incremental searching. <-- I'm quite fond of how emacs does that. 16:45:12 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 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 good point. 16:45:47 [X] Case insensitive [ ] Regular expression [ Next ] [ Previous ] 16:45:49 ehird, this won't be GUI right? 16:45:51 and each of those having a keyboard shortcut 16:45:55 as in, it will work in terminal 16:46:02 won't need GTK or QT or such 16:46:08 AnMaster: No, it won't. Not unless you want to port Tk to ncurses. 16:46:13 Curses is retarded anyway. Get a windowing system. 16:46:33 Tk? How can you like how it looks? 16:46:44 I was hoping you'd say that! 16:46:51 http://tktable.sourceforge.net/tile/screenshots/unix.html 16:46:58 Tk 8.5 onwards have a new theming engine. 16:47:07 Note how Default, Revitalized and Clam aren't bad. 16:47:11 didn't you already tell AnMaster once to look at that if he thinks tk is ugly 16:47:12 Also note that it uses freetype and the like. 16:47:16 So antialiased fonts, too. 16:47:19 oklofok: prolly 16:47:25 ehird, hm okay 16:47:35 ehird, btw I use a bitmap font in emacs when I use it in X mode 16:47:35 Besides, it's not as if the editor will have many GUI widgets showing 99% of the time. 16:47:44 AnMaster: Well, it might work. 16:47:54 UI and code fonts are different things, though. :P 16:48:07 well yes 16:48:16 In fact, there might even be the possibility of setting the text font vs the code font. 16:48:19 one standard monospaced font for all purposes 16:48:23 So you could read emails and IRC proportionally. 16:48:26 If you want. 16:48:27 and death to infidels 16:48:29 ehird, iirc openmotif supports fontconfig these days even. 16:48:41 Freetype, you mean. 16:48:45 oh maybe that was it 16:48:45 Fontconfig is just the configuramotron. 16:48:50 well, ttf fonts anyway 16:48:56 that look antialiased and stuff 16:48:57 Xft, you mean, then. 16:49:12 anyway this has been most educational, tell me when the editor has tetris 16:49:16 ehird, well, I don't remember the details. Point was "not just X fonts any more" 16:49:17 * oklofok goes -> 16:49:56 anyway, so, I think I've changed my original stance on pritners 16:50:00 ehird, so did you decide on a language for amend? 16:50:01 ("I don't believe in printing") 16:50:10 ehird, oh? 16:50:17 i'm sort of craving a black and white laser printer to, like, print papers on and stuff 16:50:27 ehird, there is no such thing as a printer 16:50:29 never inkjet though, i will never put myself through that horror ever again 16:50:44 If I need colour, I'll go and raise lots of money and buy a colour laser printer 16:50:46 but NEVER inkjet 16:50:47 ehird, notice I have a black fleece jacket and I'm a man. (never mind the blue jeans) 16:50:47 NEVER 16:50:58 AnMaster: ...okay? 16:51:03 ehird, sorry, bad joke 16:51:05 That was... completely non-sequiturish. 16:51:08 ehird, no 16:51:19 ehird, " ehird, there is no such thing as a printer" " ehird, notice I have a black fleece jacket and I'm a man. (never mind the blue jeans)" <-- MIB 16:51:35 >_< 16:51:36 ANYWAY 16:51:46 As far as language, I'm honing in on various possibilities. 16:51:49 Only a few, actually. 16:52:08 why laser rather than inkjet btw? 16:52:35 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 The toner *doesn't* cost more than the printer. 16:53:18 And they're far more reliable. 16:53:21 ehird, well, iirc Kodak made a product line where the printer was expensive and the ink cheap 16:53:32 I may have dreamt this 16:53:47 Also, laser printers are for hardcore geeks who love network printers. 16:53:52 And dammit, I love the idea of network printers. 16:54:01 So, as I was saying. 16:54:02 I haven't seen a laser able to print on photo paper yet 16:54:14 That's okay. With a black-and-white laser, all I'll be printing is text. 16:54:19 And that is absolutely fine by me. 16:54:22 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 ehird, lots of languages have tk bindings 16:54:38 Scheme is a consideration, because I like Scheme. 16:54:49 AnMaster: Yes, but they're not close to Tk in a fits-in-with-the-language way. 16:54:55 true 16:54:58 And also because Scheme is good for extending syntax and stuff for e.g. mode definition and the like. 16:55:10 Also, lexical fucking scope! I would beat elisp to a feathery pulp. 16:55:24 C is also some sort of consideration because, well, it's C. 16:55:33 ehird, you would probably have to patch the interpreter you used somewhat to fit the editor better 16:55:44 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 Which I guess could be useful... for something... 16:56:06 Of course, C and Go leave the "extension language" problem open. 16:56:17 AnMaster: Doubtful. Edwin gets fine with just stock MIT Scheme. 16:56:18 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 Admittedly, it's written by the MIT Scheme people. 16:56:25 I know that. 16:56:33 But it's an advantage Tcl has. 16:57:03 http://code.google.com/p/chromium/issues/detail?id=31482 16:57:14 Uh oh, serious goat teleportation issues with Chrome 16:57:21 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 and erlang has lexical scope 16:57:50 Well, I don't know Erlang, for one. But assuming I do: 16:58:06 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 ehird, for ttk: I'm not sure. What should I look for (I never used those bindings) 16:58:32 Concurrency, yes, but using Erlang for a task that has concurrency only as a small part seems... weird. 16:58:40 AnMaster: Link me to the docs, I guess. 16:58:43 sec 16:59:04 http://erlang.org/doc/apps/gs/index.html 16:59:05 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 though I believe the focus nowdays is on wxgtk bindings 16:59:20 Unsurprising. 16:59:27 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 AnMaster: wow, that's a really bare-bones binding 16:59:50 Nope, no ttk. 16:59:54 ah 17:00:01 How nice are the gtk bindings? 17:00:06 ehird, wxgtk 17:00:09 ??? 17:00:12 so it is wxwidgets 17:00:15 wxWidgets except it only works with GTK? :P 17:00:15 you probably know of it 17:00:18 ehird, no 17:00:28 I'm mainly avoiding the big toolkits because their API is hideously complex and sucks to use. 17:00:29 ehird, afaik it works with all wxwidgets ports 17:00:31 And makes me want to kill myself. 17:00:39 but on linux it is wxgtk that exists 17:00:41 afaik 17:00:58 http://erlang.org/doc/apps/wxgtk/index.html ← 404 17:01:01 http://erlang.org/doc/apps/wx/index.html <-- hideously complex seems nice 17:01:13 nice desc* 17:01:27 Oh, yes, and the other reason that I forgot: Bah, objects! 17:01:29 probably you don't need to use all those functions 17:01:30 I poop on them. 17:01:38 ehird, mostly erlang doesn't have them 17:01:41 if that is what you meant 17:01:49 But wx, gtk and qt are all OOP. 17:01:55 oh true 17:02:04 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 ehird, doesn't tcl have objects of some sort? 17:02:17 It's an addon thing. 17:02:26 Like a Scheme package implementing objects. 17:02:47 ehird, it could certainly be done with qt at least, there are loadable plugins in kate 17:02:53 Of course it's doable. 17:03:02 But I have a deadline, here :D 17:03:06 probably easier with tk 17:03:29 ehird, also with the new NIF stuff, I believe writing a better tk wrapper wouldn't be too hard 17:03:35 assuming you can call it in a C like way 17:03:53 You can, I believe, but I'd rather have to maintain an editor rather than an editor and a Tk binding. 17:03:58 of course NIFs were added only in the last release, and is subject to change 17:04:00 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 ehird, still, I think a lisp or scheme is somehow more appropriate 17:04:44 ← 17:04:46 The problem with writing a powerful editor with some Emacs heritage is that you get branded as "Emacs in $LANGUAGE". :-) 17:04:59 Edwin is Emacs-in-Scheme, that Perl editor is Emacs-in-Perl, etc. 17:05:01 who cares if you get branded just ignor them 17:05:08 But yes, a lisp is probably the best choice. 17:05:22 Almost certainly for the extension language. 17:05:26 why don't you use an esolang 17:05:27 Dunno about the implementation language. 17:05:30 ehird, how easy is it to interface native code from it 17:05:34 soupdragon: That would be... difficult :-P 17:05:38 AnMaster: From what; Lisp or Scheme? 17:05:40 ehird, I suspect you will need it for some tiny bits 17:05:43 ehird, scheme 17:05:46 but lisp as well 17:05:50 with lisp as common lisp 17:05:54 Impossible. R5RS has no facility for doing that. 17:06:04 Nor, I believe, for performing tasks such as "deleting a file". 17:06:10 Ditto for Common Lisp. 17:06:13 ehird, what about Tk then 17:06:14 Also, networking and threading is impossible in both. 17:06:24 Of course, nobody actually *obeys* the standard... 17:06:25 you will need to rely on custom extensions I guess 17:06:29 No shit :P 17:06:30 I was joking 17:06:41 ehird, if you go for a lisp, which one? 17:06:42 sbcl? 17:06:48 Probably not Common Lisp. 17:06:50 I prefer Scheme. 17:06:54 well okay 17:06:57 what scheme then 17:07:26 I would doubt you go for mzscheme, since it is r6rs wannabe these days isn't it? 17:07:40 (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 AnMaster: Maybe I'll write my own! :P 17:07:57 But, eh, maybe Gauche or something. 17:08:06 ehird, what about the tk bindings? 17:08:15 you said you didn't want to maintain tha 17:08:17 that* 17:08:34 Then I could use the circa-1995 STk! 17:08:54 never heard of that. And I doubt it has ttk bindings then 17:08:55 Okay, okay, not that old. 17:08:57 Circa-1999. 17:09:07 AnMaster: Well, it's been obsoleted by STklos since, like, 2001. 17:09:09 So... yeah. 17:09:27 ehird, what is STklos then 17:09:50 oh it uses GTK 17:09:53 Yeah. 17:09:55 And objects. 17:09:58 'Nuff said. 17:10:14 ehird, so I guess you will have to maintain your own Tk bindings for scheme if you are to use it 17:10:40 Probably, yes. 17:10:54 There doesn't appear to be a simple solution to all this. 17:11:25 ehird, there is always tcl 17:11:30 Maybe I'll think about something simple and fun, like my poop language or SECRET-ESOLANG-PROJECT. 17:11:41 AnMaster: Crazy semantics, very imperative, meh. 17:11:51 well good point 17:12:06 how hard would writing Tk bindings be 17:12:18 Dunno. 17:12:25 Not *too* hard, but not trivial either. 17:12:36 It essentially amounts to writing a Tcl binding, and then a sugar layer over that. 17:12:45 considering emacs runs a tcl process and uses stdin/stdout to talk to it 17:12:48 in the gs bindings 17:12:49 Tcl has a good C API, but... 17:12:54 AnMaster: *erlang 17:12:57 err yeah 17:12:58 typo 17:13:09 [17:11] Maybe I'll think about something simple and fun, like my poop language or SECRET-ESOLANG-PROJECT. 17:13:12 :| 17:13:13 :P 17:13:33 ehird, then that schedule for your editor just went down the ditch ;P 17:13:41 No it didn't. 17:13:53 poop is, like, a day-long project and SECRET-ESOLANG-PROJECT just needs ais. 17:14:03 ("poop is, like, a day-long project" —me. You can quote me on that.) 17:14:15 ((har har poop joke)) 17:16:02 ehird, sbcl's extensions seems very nice 17:16:09 ehird, ooh new idea for language: mathematica 17:16:15 AnMaster: I am killing you. 17:16:20 haha 17:16:21 Common Lisp is crufty, anyway. 17:16:25 I don't feel like using it. 17:16:30 fair enough 17:16:43 what about java? 17:16:45 (SECRET-ESOLANG-PROJECT will totally make this channel LIVE ONCE MORE.) 17:17:00 AnMaster: Completely ignoring the fact that I'd have to use JNI to make Tcl bindings... 17:17:00 explain SECRET-ESOLANG-PROJECT 17:17:01 ...no. 17:17:13 ehird, befunge98? 17:17:13 soupdragon: No, Gregor will just go and implement it before I can :D 17:17:23 AnMaster: "LCT"(...) 17:17:24 ehird, not if you implement it fast enough 17:17:24 Yes! 17:17:29 also, is it a new language 17:17:33 AnMaster: Sort of. 17:17:33 ehird, actually that is a good idea 17:17:38 Tk bindings for befunge98 17:17:53 If by good, you mean horrible and excellent! 17:17:54 maybe I'll do that when I have more time 17:18:05 ehird, "good idea" + "befunge" = what you said 17:18:19 Make sure to do Tcl bindings to handle additions to Tk 17:18:32 hm 17:18:38 and have an additional fingerprint, TK, that provides sugar over it for common Tk operations 17:18:39 :D 17:18:40 ehird, I certainly need to read up on the tcl api first 17:18:56 ehird, also there is a limited number of instructions per fingerprint you know 17:19:02 You could do the stdin/stdout method; a lot of things seem to do that. 17:19:04 you have to pick carefully 17:19:11 AnMaster: Well, exactly. 17:19:15 Which is why TK is a separate fingerprint. 17:19:18 You'd do: 17:19:25 ehird, well for erlang there are good reasons. Mainly that loading native extensions into the vm is a fairly new feature 17:19:29 "KT"(...oops I need some more stuff than it provides "LCT"(...)...) 17:19:31 -!- ais523 has joined. 17:19:34 certainly much newer than the gs module 17:19:34 hi ais523 17:19:35 -!- augur has quit (Read error: 110 (Connection timed out)). 17:19:36 AnMaster: Also that it's easier. 17:19:38 ais523: Just in time! 17:19:55 for what? 17:19:56 ehird, what? ais523 isn't bytecode... 17:20:09 ais523: I need to discuss an esolang project with you related to one of yours :| 17:20:20 I just came out of a meeting with two of the university's FPGA experts 17:20:33 ais523, TCL/TK bindings for befunge. Opinion? 17:20:34 who were busy talking about how all FPGA development environments were rubbish 17:20:42 AnMaster: bindings to anything is good 17:20:45 even if it's something ridiculous 17:20:46 :D 17:20:49 *Tcl/Tk 17:20:53 You fail at capitalisation. 17:20:59 I wouldn't even be against .NET bindings 17:21:05 or even ActionScript bindings 17:21:08 ais523, what about java ones? 17:21:18 ais523, or cobol. 17:21:32 oh and I think I have half a spec somewhere for the fingerprint SQL 17:21:38 never finished the details 17:21:44 ehird: anyway, conversation pop 17:21:49 A web servlet/Swing Befunge IRC client? 17:21:52 ais523: see /msg 17:21:56 ehird, wow 17:22:13 AnMaster: that is, usable from both the web and on the desktop 17:22:15 :D 17:22:25 ehird, well, to begin with I would have to learn java 17:22:29 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 In Befunge! 17:22:33 same goes for tk of course 17:22:34 AnMaster: no, just JNI :D 17:22:59 ehird, oh right, I used the python C API before I used python 17:23:03 so I guess that is doable 17:23:17 btw, could someone check the most recent edit to Esolang for me? 17:23:22 I need a second opinion 17:23:29 ingenious spam, trolling, or a legit edit? 17:24:12 ais523, one of the former two I would say 17:24:27 -!- MigoMipo has joined. 17:24:43 * ehird looks 17:25:01 and it is ridiculous 17:25:12 Custom Research Paper Writing Service 17:25:13 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 Yet another we-write-your-papers-for-you spam. 17:25:26 Revert and ban with extreme prejudice. 17:25:30 yes 17:25:35 also, s/the (Wikipedia)/$1/, please 17:25:41 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 *what happens 17:26:08 I'm interested to see if it's remade 17:27:53 ais523, btw are there any bindings for befunge you *would* be against? 17:27:57 just curious 17:28:19 also what about the secret esolang project that ehird said he needed you for 17:28:21 bindings to the DS9K network protocol 17:28:29 we are strictly pacifist in this channel! 17:28:37 AnMaster: illegal ones, and ones that actually caused bodily harm or similar issues 17:28:38 ah I got an idea: befunge bindings for befunge 17:28:47 XD 17:28:58 *actually cause 17:29:01 ais523, I can't think of any in either category 17:29:21 ehird, link me to the spec! 17:29:56 bbl food 17:29:57 http://dspace.dial.pipex.com/town/green/gfd34/art/ 17:30:04 You'll have to purchase it 17:30:10 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 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 which one? that one that's everywhere and continually displays messages about how sorry it is for not loading the page? 17:36:56 yes 17:39:36 hy I wanna poll your um 17:39:39 whatever it's called 17:39:48 principle of least surprise or something: 17:39:54 int a = 1; var f = x=> a+x; a = 2; int b = f(0); what is the value of b ? 17:40:17 x=>y being a function, presumably 17:40:29 soupdragon: it really depends on the type of language 17:40:42 if it's trying to be a cool functional dude, I'd probably expect 1 17:40:43 no that's the point 17:40:44 I 3 17:40:45 3 17:40:48 but almost all conventional languages do 2 17:40:50 Sgeo: what. 17:40:56 ^ kidding 17:41:10 Sgeo reads it as some esolang :P 17:41:40 There should totally be a language where the about makes b = something other than 1 or 2 17:41:49 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 so I'm like huh? 17:42:00 soupdragon: tell him he's a retard 17:42:12 I don't think that would be very nice 17:42:13 list of languages that do it that way 17:42:14 * ehird breaths in 17:42:16 Lisp 17:42:18 Scheme 17:42:19 Ruby 17:42:20 no 17:42:21 Python 17:42:22 no no no 17:42:22 C# 17:42:26 list the ones that DON'T 17:42:27 *breathes 17:42:31 soupdragon: () 17:42:33 if you can get more than zero I'll be impressed 17:42:37 At least, that I know of. 17:42:44 And I know of quite a lot of languages. 17:42:54 think about this: foreach(x in y) list.add(z=>z+x); 17:42:54 you want to capture the value of x, not the slot 17:43:11 :( 17:43:37 nope, 1 17:43:38 for pluk atleast, in some other languages it may be 2 17:43:38 like lisp and javascript and so on 17:43:38 (and ... every langauge :P) 17:43:38 no, not really 17:43:55 so am I in the wrong there 17:44:34 Wait, I'm confused 17:45:00 soupdragon: you are totally correct 17:45:12 that's a common closure pitfall, expecting them to work like that 17:45:31 soupdragon: basically 17:45:36 the problem is that his variables are mutable 17:45:39 in e.g. haskell 17:45:49 map (\x -> (\z -> z+x)) 17:45:52 x is a new variable each time 17:45:56 so we get the expected behaviour 17:46:00 the "x" in each function is the element 17:46:04 in Perl, you can get either behaviour 17:46:07 but since his variables are mutable and x is always the same variable 17:46:08 he's fucked 17:46:17 and this is why mutable state is bullshit. 17:46:23 http://codepad.org/1iagmDfc 17:46:29 ehird: what do you think of the OCaml method? 17:46:37 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 ais523: how does it do it? 17:47:18 ocaml is very explicit (in a good way) 17:47:45 ehird: I'm writing a paste now 17:48:01 ehird you must make a mutable cell in ocaml 17:48:04 http://codepad.org/YzQtEiid 17:48:11 soupdragon: ah, right 17:48:14 ais523: it=ocaml 17:48:16 the ocaml method 17:48:23 anyway the ocaml method is just haskell's iorefs then :P 17:48:29 or strefs 17:48:34 I'm rreally jelous of ais' perl skills 17:48:42 but I'd never admit it 17:48:45 oh, in ocaml everything's an immutable value 17:48:46 ais523: yeah that's basically because %a becomes a new variable 17:48:48 each iteration 17:48:49 erm 17:48:51 you can have an explicit pointer to a memory location, though 17:48:52 to use the foreach example 17:48:54 in which case the pointer is the value 17:48:55 *$a 17:48:59 which is basically what i said 17:49:07 ais my $a = $a kinda cheating :P 17:49:08 ehird: yes, you have to mark it with a lexicaliser 17:49:12 you might as well write 17:49:18 soupdragon: no, because it's how you do that in Perl 17:49:29 my $z = $a ... [$a/$z] 17:49:52 soupdragon: yes, you might, and that would be fine too 17:50:02 .... $a = $a has an effect in Perl? 17:50:04 * Sgeo cries 17:50:05 the point is, the value of $a is stored in the closure because it's been lexicalised 17:50:06 Sgeo: no 17:50:14 the bracketing is (my $a) = $a 17:50:26 and in perl5, my doesn't create the new variable name until the end of the statement 17:50:27 hehehe 17:50:47 $a=$a is just mutating $a 17:50:50 but my $a declares a var 17:50:59 sgeo won't get this because he codes python, and python is stupid and has no variable declarations 17:51:03 thus leading to the wonderful "global" kludge 17:51:05 in fact, I think you can get away with just "my $a" which means the same thing 17:51:12 and the wrapping-a-variable-in-an-array-to-mutate-it-in-a-nested-function kludge 17:51:21 ah no, it initialises to undef 17:51:44 global awesome 17:51:47 lol python 17:51:49 -!- augur has joined. 17:52:15 hiya augur, 17:52:23 Who calls "ti" "si"? 17:52:29 hey soupdragongirly 17:52:30 sup 17:53:14 -!- kar8nga has joined. 17:54:16 just pwning some noobs u? 17:55:52 playing around with DNF-expression k-sat 17:57:18 did you implement prolog yet 17:57:49 i have a semi-working version, yeah. :) 18:03:57 cool 18:04:20 what strategy did you use 18:04:23 is it streams or stack or what? 18:09:55 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 Fortran? 18:13:46 fortran's awful at text processing 18:14:12 ehird, yes 18:14:16 ehird, or asm 18:15:46 about " 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 hey AnMaster thanks! 18:16:23 btw 18:16:23 x86 asm doesn't have as long a history as Fortran. 18:16:36 soupdragon: AnMaster cheated 18:16:36 soupdragon, well for a start, it throws an exception trying to assign to the same variable twice 18:16:38 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 ? 18:16:40 if the values differ 18:16:44 so it's just a REPL thing? 18:16:47 "A=2" was pattern matching 18:16:48 ehird, not x86 no 18:16:49 or whatever 18:16:51 not assigning 18:16:56 so it isn't actual mutation 18:16:56 ehird, well that is how erlang *does* assign 18:16:59 and A was still 1 18:17:03 so it didn't change, QED 18:17:10 there no no actual concept of assigning apart from pattern match 18:17:11 ehird, ^ 18:17:15 exactly 18:17:19 i.e. no mutable variables 18:17:21 soupdragon, and yes it is a repl 18:17:25 i.e. that wasn't an actual demonstration 18:17:26 soupdragon, and variables are not mutable 18:17:28 idea: is it possible to use URL-shorteners as free webhosting by using data:// URLs? 18:17:35 ais523, old 18:17:37 ais523: some of them, yes, iirc 18:17:39 I did it with tinyurl 18:17:44 ais523, I have already seen a tinyurl 18:17:47 that did it 18:17:51 i.e. AnMaster was doing his regular "har-har-mine-doesn't-work-like-that" misleadingness 18:18:04 AnMaster but I mean -- peculiar to the REPL 18:18:09 soupdragon, eh? 18:18:10 "TinyURL was created as a free service to make posting long URLs easier, and may only be used for actual URLs" 18:18:21 soupdragon, in a normal function, it depends on if you catch that exception or not 18:18:31 hey, that means that if you put the leading http:// on, it violates the TOS 18:18:37 because then it's a URI not a URL 18:18:38 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 no 18:18:45 huh 18:18:46 URI superset-of URL 18:19:03 I thought URLs couldn't specify the protocol, though 18:19:05 AnMaster what I mean is: is this a valid program? 18:19:09 soupdragon, erlang does not have assignment. It only has pattern matching. 18:19:18 soupdragon: no, it threw an error 18:19:21 test -> A = 1; F = fun(X) -> A + X; A = 2; B = F(0); B 18:19:25 the pattern-matching, not assignment "A=2" failed 18:19:28 I think it's not because we used A twice 18:19:35 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 soupdragon, A *can not be changed in erlang* 18:19:57 it is *invalid* to change the value of a variable once you set it 18:19:59 soupdragon: it was AnMaster's idea of a joke 18:20:00 soupdragon, get that 18:20:03 ? 18:20:05 what it a joke? 18:20:06 what's the GNU internationalisation package called 18:20:10 that normally uses a macro called _? 18:20:11 ais523, gettext? 18:20:13 ais523: gettext 18:20:13 thanks 18:20:19 "Please type or paste a valid web address into the input box." 18:20:22 I'm trying all sorts of shorteners 18:20:36 ehird, you managed with data:// didn't you? 18:20:42 dunno, maybe 18:20:45 AnMaster well it's sort of inexpressible in erlang then.. unless you do it like ocaml I guess 18:20:54 Firefox can't find the server at data. 18:20:55 so close 18:20:56 soupdragon, how does ocaml do it. I don't know ocaml 18:21:23 AnMaster: OCaml has the type pointer-to-mutable-data, effectively 18:21:25 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 src="http://data: 18:21:31 the pointer itself is immutable, but you can mutate what it points to 18:21:32 fffuuu 18:21:34 hmm wait 18:21:34 ais523, erlang does not 18:21:36 does anyone know a service 18:21:42 http://foo/poop?url=... 18:21:45 that just redirects to ... 18:21:46 aha 18:21:47 * ehird idea 18:21:50 soupdragon, okay you could store it in the database engine of erlang. mnesia 18:21:52 ehird: anonym.to? 18:21:56 yep 18:21:58 that's what I thought of 18:22:01 soupdragon, but that would be ridiculous 18:22:03 -!- augur has quit (Read error: 110 (Connection timed out)). 18:22:06 heh 18:22:19 ehird: that's a ridiculous idea, I like it 18:22:37 aww, it truncates it :( 18:22:48 what, anonym.to? 18:22:48 I will store this jpeg whether it's the last thing I do 18:22:51 yep 18:22:56 what's it a jpeg of, anyway? 18:23:14 truthfully? the non-goatse at goatse.cx 18:23:18 (it was changed a while ago) 18:23:20 (it's SFW) 18:23:25 just looks like goatse, if you know what goatse looks like 18:23:52 hmm, a fake goatse, what a weird concept 18:23:58 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 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 oh that's interesting AnMaster 18:24:25 it's just a goatse parody 18:24:25 so I've seen maybe about 5% of goatse, the harmless part 18:24:28 can you write that as a proc?? 18:24:35 if you are like bored or something 18:24:41 soupdragon, as a proc? 18:24:45 nr 18:24:47 function 18:24:48 Request-URI Too Large 18:24:49 The requested URL's length exceeds the capacity limit for this server. 18:24:51 whatever erlang calls it 18:24:51 asdfgjkl; 18:25:37 soupdragon, well there is function. The fun I used on that line is like lambda in scheme (closure style that is) 18:25:39 omg 18:25:41 that one almost worked 18:25:50 soupdragon, normally you don't use that syntax in source files 18:25:56 well, a similar syntax 18:26:01 except it prepended http:// :( 18:26:20 soupdragon, also write *what* bit as a function 18:26:49 ais523: well this'll certainly be a rather robust image host :-D 18:26:58 the one using the dicts 18:27:01 anyone who visits the image has a never-expiring token to share it 18:27:10 you could even bookmark it 18:27:17 ooh, insane idea 18:27:24 an entire website made out of data: urls 18:27:28 presumably, mostly generated via JS 18:27:34 each page on it stores the entire site 18:27:35 ais523: omg 18:27:37 it could quine 18:27:40 so you can just bookmark any of them 18:27:41 so you can go back to the index page 18:27:42 it /has/ to quine 18:27:50 ais523: wow, I think I want to marry you 18:27:51 just for that idea 18:27:55 that's brilliant 18:28:00 quining URIs 18:28:07 practically useful, too 18:28:32 it could have an auto-update via AJAX 18:28:41 * ehird settles for pasting the image via pastebin.ca 18:28:43 http://pastebin.ca/raw/1748566 18:28:52 it's like tinyurl's preview-the-url service, except more work and uselses 18:28:54 *useless 18:28:56 but by gum, it works 18:29:11 ais523: ajax to *where*, exactly? 18:29:16 the whole point would be that it was decentralised 18:29:19 ooh, my 18:29:22 * ehird just had an awful idea 18:29:27 soupdragon, oh well, that would be like: 18:29:29 it could be a forum, right 18:29:40 and posting a message would post a specially formatted paste to one of a list of pastebin services 18:29:45 and it'd scan those to find the posts 18:29:56 wow, that is an awful idea 18:30:01 especially when the pastebin operators find out 18:30:02 it's awful *and* wonderful 18:30:09 ais523: eh, you're allowed to paste plaintext in 'em 18:30:12 although, cross-domain security requirements might stop that working 18:30:16 and people post conversation snippets in pastebins anyway 18:30:22 soupdragon, http://codepad.org/i8ZzmGPl 18:30:30 soupdragon, that is REPL again, too lazy to write it in a module 18:30:46 AnMaster, I need in a module or it's just as bad at the first paste you did :[ 18:30:48 soupdragon, since F can't reference the new dict (unless you make it a parameter) 18:30:57 what about process tables 18:31:01 and by bad I mean an evil trick 18:31:04 ehird, you mean get/put? 18:31:07 hm forgot about that 18:31:22 ehird, I thought you didn't know erlang? 18:31:32 and, it would be evil. 18:31:54 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 soupdragon, since erlang is based on message passing concurrency this is trivial 18:32:34 AnMaster: just do it 18:32:38 it's exactly the original problem 18:32:54 -!- Pthing has joined. 18:32:54 well then I believe it would return 2 there. 18:33:23 really 18:33:23 ? 18:33:30 I'd be glad if it returns 2 :P 18:33:30 just do it :P 18:33:31 not hard 18:33:34 because then I would be right! 18:33:37 soupdragon: it'd be the only one that actually mutates 18:33:45 but if it returns 1 then that's cool too because having counterexamples is good 18:34:16 soupdragon, well there http://codepad.org/cPjBrzF3 18:34:32 soupdragon, and that is bad programming practise 18:34:36 of course, C would do the same. 18:34:45 nobody cares about whether it's idiomatic 18:34:49 we care about the results :P 18:35:08 ehird, you could use state in haskell to do this I believe 18:35:12 if you really wanted it to 18:35:17 just a hunch 18:35:35 yes, you could 18:35:38 soupdragon: IORefs or ST? 18:35:40 I guess ST 18:35:46 since this problem isn't IO-related in any way 18:35:48 State also 18:35:49 I'll do both 18:35:59 ehird, can't you do it with IORefs as well? 18:36:08 yes, but ST = IO with only IORefs 18:36:10 except they're STRefs 18:36:23 soupdragon: lazy or strict state? :D 18:36:28 I'll go for lazy, since it's more haskelly 18:36:33 ehird, why not eager state? 18:36:41 you mean strict 18:37:20 ehird, oh? wouldn't eager be on the other side? 18:37:29 at least the way I thought of "eager" in programming 18:37:54 of course it doesn't make much sense for state here 18:38:44 soupdragon: hmm 18:38:50 is passing in the mutable reference that is a to f acceptable? 18:38:53 can't do it any other way w/ haskell 18:39:02 I'll just do 18:39:04 passing a mutable ref is fine, that's like ocaml 18:39:07 let foo = f a 18:39:08 right 18:39:10 well if you could do that. then using a dict in erlang would work 18:39:14 just pass the dict along to it 18:39:18 it seems like in every SANE language that the result is 2 18:39:19 of course, a different dict 18:39:26 so it's funy that guy thinks 1 is acceptable 18:39:32 wth 18:39:59 soupdragon: lazy or strict state? 18:40:04 -!- cal153 has joined. 18:40:26 -!- zeotrope has quit (Connection reset by peer). 18:40:27 ehird, would scheme give 1 or 2, well depends on what you mean by it 18:40:43 (define a 1) 18:40:48 (define (f x) (+ a x)) 18:40:51 (set! a 2) 18:40:52 ehird they both give the same answer here 18:40:57 (f 0) → 2 18:41:00 soupdragon: thought so 18:41:09 import Control.Monad.ST.Lazy 18:41:09 ehird well don't take my word for it 18:41:10 import Data.STRef.Lazy 18:41:12 f a x = do 18:41:13 I just guessed that 18:41:13 a' <- readSTRef a 18:41:15 return (a' + x) 18:41:16 foo = do 18:41:16 ehird, ah but what if you changed set! to define? 18:41:18 a <- newSTRef 1 18:41:19 let f' = f a 18:41:21 writeSTRef a 2 18:41:22 return (f' 0) 18:41:24 ↑ st version 18:41:25 state is trivially the same 18:41:27 AnMaster: invalid 18:42:13 it's funny. 1) arch only has guile it seems. 2) it seems to be built without readline 18:42:32 guile is shit 18:42:37 ehird, exactly 18:42:45 use scheme48 or chicken or sisc or mit scheme 18:42:55 sisc is java but standards compliant in the most anal way imaginable 18:42:58 there is one called "bigloo" too 18:43:02 scheme48 is kinda cool and also compliant 18:43:07 chicken is sorta deviant and practical but alright 18:43:10 oh mzscheme is under drscheme 18:43:14 mit scheme is totally old school man (and written in mit scheme) 18:43:19 mzscheme is acceptable if put in r5rs mode, but meh 18:43:21 bigloo is shit 18:43:49 wth, it is 230 MB 18:43:52 I like chicken 18:43:53 drscheme that is 18:43:59 ehird, is chicken open source? 18:44:21 Who said it wasn't? 18:44:28 well, I don't know 18:44:30 I asked you 18:44:34 Chez Scheme is the one that's closed-source. 18:44:39 AnMaster: why did you assume it might not be? 18:44:50 42,56 MB for download... 230,30 installed size 18:44:55 quite nice compression ratio 18:45:03 (please place docs in a separate package) 18:46:06 ehird, wth: http://codepad.org/iVQeluXu 18:46:13 that isn't supposed to happen is it? 18:46:23 You use DEFINE in an invalid manner. 18:46:27 Your program is not correct. 18:46:33 Thus, its behaviour is undefined. 18:46:38 I refuse to comment on it, as it is not an R5RS program. 18:46:39 ah undef. Right 18:46:49 Allow me to quote the definition of DEFINE: 18:46:59 pastebin if long 18:47:28 Eh, just read http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-8.html#%_sec_5.2 18:47:32 Technically 18:47:34 At the top level of a program, a definition 18:47:35 (define ) 18:47:37 has essentially the same effect as the assignment expression 18:47:38 (set! ) 18:47:40 but that changes inside a function 18:47:42 and functions are where the meat is, so. 18:47:48 Definitions may occur at the beginning of a (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 . That is, is bound rather than assigned, and the region of the binding is the 18:47:50 entire . For example, 18:47:57 Keyword "at the beginning". 18:48:57 ehird, plt-r5rs accepted it too. 18:48:59 just fyi 18:49:25 Your program is in fact correct, but only because the REPL is top-level. 18:49:31 ehird, well yes 18:49:32 If it simulated being inside a function body it would be incorrect. 18:49:40 But DEFINE is really only useful like that if you can use it after the start. 18:49:47 Anyway, don't use the REPL to test Scheme behaviour. 18:49:50 Try it in a (define (main) ...). 18:49:55 sure 18:50:28 anyway I dislike soupdragon suggestion that only insane languages return 1 for it 18:50:33 it seemed to be what he said above 18:50:44 Hm I wonder 18:50:47 what does mathematica do 18:51:46 mathematica returns 2 18:51:53 1 wouldn't have surprised me 18:52:04 what does make do 18:52:11 make does not have variable mutation. 18:52:15 (and how does one define a *function* in it) 18:52:21 ehird, oh? 18:52:24 gnu make here 18:52:38 -!- ais523 has quit (Remote closed the connection). 18:52:42 gnu makes supports both "evaluate on use" and "evaluate on assignment" 18:52:46 = is the former 18:52:48 := is the latter 18:53:03 if it has user definable functions I don't know 18:54:04 AnMaster excuse me?? 18:54:20 how about his, name one sane language that gives 1? 18:54:47 !bfjoust isthisthingon >((+)*127>(-)*127)*8>((-)*128[-.]>(+)*128[+.])*21 18:54:57 * ehird prods EgoBot 18:55:03 Gregor: ↑ 18:55:04 Score for ehird_isthisthingon: 15.1 18:55:07 ah 18:55:17 I did upsettingly badly :( 18:55:19 anyone wanna play? 18:55:20 what's that?? 18:55:24 brainfuck joust dude 18:55:28 http://esolangs.org/wiki/BF_Joust 18:55:36 we play with ais523's revised one with egojoust 18:55:38 FFFFFFFFFFFFFFFFF 18:55:41 see http://codu.org/eso/bfjoust/report.txt 18:55:54 and http://codu.org/eso/bfjoust/in_egobot/ for program sources 18:55:58 well, warrior sources 18:57:10 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 but it died down and that ensaddens me 18:57:36 !bfjoust whataboutthis [+-]+ 18:57:48 Score for AnMaster_whataboutthis: 7.8 18:57:48 well 18:57:51 hah 18:58:15 why does main() in C take argc, argv rather than argc, ... 18:58:20 as in, stdarg.h 18:58:31 because that predates stdarg, and stdarg is a bitch to use 18:58:39 oh good points 18:59:19 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 !bfjoust isthisthingon >(+)*127<+>>(-)*126<<->>>(+)*125<<<+>>>>>>>>>>[[-]>+] 18:59:46 Score for ehird_isthisthingon: 2.9 18:59:51 AnMaster: because that is not how the system stack works. 18:59:52 ehird where is the result page for it 19:00:01 how do you play this????? 19:00:02 I linked that a second ago. 19:00:04 ehird, too high level I guess 19:00:11 oh there 19:00:11 !bfjoust isthisthingon >((+)*127>(-)*127)*8>((-)*128[-.]>(+)*128[+.])*21 19:00:19 Score for ehird_isthisthingon: 14.1 19:00:23 what's the game ?? 19:00:28 soupdragon: i fucking linked you 19:00:35 [18:55] http://esolangs.org/wiki/BF_Joust 19:00:36 yeah thanks 19:00:36 [18:55] we play with ais523's revised one with egojoust 19:00:37 [18:55] FFFFFFFFFFFFFFFFF 19:00:39 [18:55] see http://codu.org/eso/bfjoust/report.txt 19:00:41 [18:55] and http://codu.org/eso/bfjoust/in_egobot/ for program sources 19:00:42 [18:55] well, warrior sources 19:00:43 [18:55] FFFFFFFFFFFFFFFFF 19:00:43 [18:56] 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 >_< 19:00:48 yes. 19:00:48 key part of the discourse 19:00:51 what about it? 19:00:54 you can't read? 19:01:00 oh 19:01:05 esolangs server is up now 19:01:07 !bfjoust discourse [++] 19:01:10 -!- kar8nga has quit (Remote closed the connection). 19:01:15 Score for ehird_discourse: 5.4 19:02:14 "(+-)*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 why not 19:02:26 For interpretation efficiency. Use % 19:02:29 ([)*2 ]] 19:02:39 ehird, "meh" 19:02:48 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 !bfjoust discourse ((+)*127(-)*127))*394 19:03:04 ehird, you mean, by writing several programs? 19:03:06 Score for ehird_discourse: 0.0 19:03:15 AnMaster: As I said, I am not interested in discussing this. 19:03:25 It only encouraged you then and it will only do the same now. 19:04:11 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 I guess it is just because you dislike me so 19:04:25 very nice of you 19:04:33 You will note that the other players got pissed off too, as evidenced by the log. 19:04:55 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 ehird, sure. So everybody who got pushed off the hill hates me. Bad loosers. 19:05:08 I don't understand the rulse 19:05:14 ehird, bbl 19:05:20 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 They then dropped off the hill and you accused Gregor of removing them. 19:06:08 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 soupdragon: why not 19:06:28 well I didn't really read them 19:06:33 you're at one end of the tape 19:06:35 the opponent is at the other 19:06:38 > means closer to opponent 19:06:41 < means further away 19:06:44 oh but you don't know how long? 19:06:47 tape is random from 10-30 items 19:06:51 if you run off the tape, you die 19:06:51 ok 19:06:53 at each end is a flag 19:06:56 at your end is your flag 19:06:59 the other end, the opponent's 19:07:03 if your flag is 0 for two cycles, you lose 19:07:07 both programs run simultaneously 19:07:14 also, ] takes up a cycle 19:07:15 so [-] 19:07:17 ehird, goatse.cx might be NSFW if your employer's seen goatse before 19:07:17 goes [-]-]-] 19:07:22 so -(it's zero)](the other guy loses) 19:07:24 erm 19:07:25 yeah 19:07:30 because it's 0 for two cycles 19:07:44 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 there are various strategies you can use; I won't go into them. 19:07:57 (x)*n is x, repeated n times. 19:08:10 (x{y}z)%n is x, repeated n times; y; z, repeated n times. 19:08:12 !bfjoust add [+] 19:08:12 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 In ({}), you can use []. 19:08:17 bbl again 19:08:21 To do ()*n for loops. 19:08:31 Score for soupdragon_add: 5.5 19:08:40 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 It is understandable, then, that we wanted you to fuck off and stop ruining our game. 19:08:59 stop :( 19:08:59 *when everyone said 19:09:27 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 I don't believe this flamefest will interrupt the game. 19:09:55 Fix the edge case? 19:10:15 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 Sgeo, that would be the correct way yes. 19:11:55 fixing bugs is always better than making a silly work around for them 19:12:18 ehirds suggestion is like "the correct way to fix beeps on shutdown is to blacklist the pc speaker module" 19:12:28 which is how ubuntu "fixed" it 19:13:18 -!- MizardX has quit (Read error: 104 (Connection reset by peer)). 19:13:19 Silly work around as in "we get your point, stop exploiting it now so we can have fun" 19:13:34 It's called social interaction and the instance we experienced there was known as "being an asshole". 19:13:45 this argument between you two is stupid :P 19:13:45 silly workaround as in not fixing the underlying issue in the code 19:13:53 soupdragon, agreed 19:14:09 if ehird could just stop going on about it 19:14:10 yes, I'm obviously right 19:14:14 yes, I'm obviously right 19:14:30 ehird, har 19:14:51 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 ehird, after that you did. And I do not intend to discuss this further 19:15:25 lets just see if they fixed that issue I remember 19:15:32 !bfjoust invalid < 19:15:38 Score for AnMaster_invalid: 0.0 19:15:45 maybe it wasn't that issue then 19:15:54 there was one that crashed it I remember 19:17:00 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 Oh, I do delete things from the hill. 19:26:46 All the time. 19:26:48 That's how I roll. 19:27:14 -!- Sgeo has changed nick to PrimeIntellect. 19:27:35 Sgeo: not egotistical whatsoever 19:27:38 augur do you know feature terms? 19:27:47 Gregor-L: I'm totally working on my BF Joust implementation again. 19:28:03 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 Are you? Totally? Really and totally and truly and totally? 19:28:07 Absolutely. 19:28:11 Definitely totally. 19:28:16 -!- PrimeIntellect has changed nick to Sgeo. 19:28:24 oh my god 19:28:29 If there's a Go package in Debian, I'd be willing to install it into EgoBot *shrugs* 19:28:39 Gregor-L: There isn't, but I can give you a binary. :P 19:28:56 Bleh @ binaries :P 19:29:17 augur (it's an example in these CHR notes, but apparently comes from linguistics) 19:29:22 Well, those are your two choices :P 19:30:52 * Gregor-L goes and implements it himself instead. 19:30:53 OH WAIT 19:30:56 :P 19:31:03 lawls 19:31:04 hm it looks like a synonym for feature structures 19:31:04 -!- upbeatsarcastic has joined. 19:32:11 -!- upbeatsarcastic has left (?). 19:33:17 "Our central database master, mysql.agni, is currently running on an 8-core Xeon E5450 with 64 gigs of RAM" 19:33:21 ok, I want to work for Linden Labs now 19:34:03 Gregor-L: anyway installing go into a directory takes like... three commands 19:34:09 i guess that would TAINT YOU HORRIBLY though 19:34:21 I hate second life 19:34:22 I *could* run it thorugh a Go→C compiler, after inventing one 19:34:31 the programming language they use is such a fucking disgrace 19:34:31 soupdragon: xeon with 64 fucking GiB of RAM 19:34:34 want, no matter what 19:34:35 ehird, even though they use mysql? 19:34:35 it makes me so angry 19:34:57 AnMaster: i'm sorry did you hear 19:34:58 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 sixty-four 19:35:00 gibi-bytes 19:35:09 soupdragon: no it wouldn't because they'd be too dumb to understand it 19:35:18 you are so clueless ehird 19:35:21 i know rite 19:35:26 ehird, no it must be GB, otherwise the would have said "gibis" not "gigs" 19:35:44 or joking 19:35:54 half-joking 19:36:29 it's just like a huge opportunity wasted 19:36:37 and it really upsets me to think about it 19:36:44 you're overreacting 19:36:51 I'm not acting at all 19:37:27 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 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 fizzie: ok i'd much rather work at your university 19:37:51 how big is it to need that many gs of ram 19:37:55 the uni tat is 19:37:57 *that 19:38:27 ehird you have used the SL language right? 19:38:27 hmm 19:38:29 I think we have some 10k "active" students? 19:38:33 soupdragon: i've seen snippets 19:38:34 I don't really recall. 19:38:39 hmm 19:38:44 what's the term X where tape X = under/overflow 19:38:47 i.e. it means either 19:38:50 tape flow? :P 19:38:51 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 tape boundary oversteppingness? 19:40:05 (811 screen sessions.) 19:41:38 ehird, out of bounds error? 19:41:57 AnMaster: OutOfBounds would work. 19:42:04 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 assuming it doesn't wrap around 19:42:07 I guess I'll leave it as separate for under/overflow, though, just for the statistics porn. 19:42:39 hm 19:43:01 !bfjoust test ([.]+)*99999 19:43:02 const ( 19:43:03 TapeUnderflow WinReason = iota 19:43:05 TapeOverflow 19:43:06 FlagZeroed 19:43:08 ) 19:43:09 type MatchResult struct { 19:43:11 Winner Warrior 19:43:12 Reason WinReason 19:43:14 Cycles int 19:43:15 Score for AnMaster_test: 7.8 19:43:15 } 19:43:17 most. statistics. applied. to. brainfuck. evar! 19:43:55 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 how did it manage to win against ais523_vibration.bfjoust 19:43:59 that is strange 19:44:16 !bfjoust test (+)*99999 19:44:33 fizzie: ugh, is it "Wave" university now? 19:44:39 i don't want to work here any more 19:44:40 *there 19:44:47 ehird: Yes. Wave it like you just don't care! 19:44:48 Score for AnMaster_test: 7.8 19:45:19 !bfjoust test >+>+>>+<<+<<(+)*99999 19:45:19 fizzie: i guess google wave will be used for all official communications :) 19:45:21 :D 19:45:41 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 from the business world. 19:45:45 Sounds ghastly. 19:45:50 Score for AnMaster_test: 3.6 19:45:58 Bloody free market idiots 19:46:12 !bfjoust test >+<(+)*99999 19:46:19 fizzie: so en:wave == fi:alto? 19:46:26 fi:aalto. 19:46:29 erm right 19:46:31 http://www.aalto.fi/fi/ 19:46:33 "A?" 19:46:34 what a retarded logo 19:46:36 did i mention 19:46:37 RETARD 19:46:40 Score for AnMaster_test: 3.6 19:46:42 That's not the only logo. 19:46:50 "A!" and 'A"' are also the logo. 19:46:59 !bfjoust test (-)*99999 19:47:09 "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 They're supposed to be used quasi-randomly and in a uniformly distributed way. 19:47:12 That's some deadline. 19:47:23 Only ten years! 19:47:33 Score for AnMaster_test: 7.8 19:47:54 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 At least my beamer template rerandomizes the logo (color + character) for each slide separately. 19:48:44 make one that's A(unicode :( ) 19:48:45 fizzie, that would be distracting 19:48:51 aka "A fuck this logo" 19:48:51 http://www.soundcreationsinc.com/tech/splendid/grand._collection.html <-- SWEET Piano soundfont 19:49:00 SWEET penis soundfont 19:49:05 Gregor-L, argh not free 19:49:16 yes it is 19:49:16 Free 72MB version 19:49:20 Free 72 MB Version 19:49:24 Gregor-L: snap 19:49:26 oh there 19:49:40 how the heck to open sfark 19:49:47 sfArk is annoying :( 19:49:53 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 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 lulz. 19:50:01 There is a (non-F/OSS) extractor for Linux though. 19:50:08 Gregor-L, 32-bit only iirc 19:50:23 AnMaster: Yup. 19:50:26 Gregor-L, is the spec closed? 19:50:28 fizzie: Dude, the typeface just looks like modified Helvetica to me. 19:50:30 Pretty much. 19:50:32 Anyway, once it's extracted you never need sfArk again. 19:50:41 OK, so the WEB SITE is stupid :P 19:50:51 Ignoring that, the soundfont is awesome. 19:50:53 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 Gregor-L: AND THE PEOPLE WHO MADE IT ARE STUPID :P 19:51:09 Because they like Jesus, you see. 19:51:16 ehird: Yes. 19:51:17 Yes, well, I guess you could use it, as long as you don't claim it as the Aalto logo. 19:51:18 What they should do, instead, is LOVE Jesus! 19:51:21 ♥ 19:51:26 I love how Compose <3 works 19:51:53 fizzie: so the Aalto logo is a single logo, except it's quantumly superpositioned? 19:51:54 cool 19:52:08 make a program that accesses the user's webcam 19:52:15 and only fills in the second character when they look at it 19:52:23 aalto's logo is not dead 19:52:46 ehird, why doesn't compose :( work 19:52:48 hm 19:53:06 and why doesn't the pi compose work, even though I restarted X since then 19:53:07 -!- sebbu2 has joined. 19:54:14 Paste your .XCompose line 19:54:21 sec 19:54:24 Smiley faces would be nice, I should add those 19:54:31 include "/usr/share/X11/locale/en_US.UTF-8/Compose" 19:54:31

: "π" U03C0 # GREEK SMALL LETTER PI 19:54:41 that's all 19:54:43 Replace the first line with include "%L" 19:54:46 That way it's portable across locales 19:54:51 Also shorter, and less path-dependent 19:54:53 ehird, okay, but ignoring that? 19:55:01 since other compose combos works 19:55:02 work* 19:55:04

: "π" U03C0 # GREEK SMALL LETTER PI 19:55:09 -!- Phantom_Hoover has joined. 19:55:09 Did you save it in ~/.XCompose? 19:55:12 -!- Asztal has quit (Read error: 60 (Operation timed out)). 19:55:21 ehird, that is the file 19:55:36 No clue 19:55:39 $ cat ~/.XCompose 19:55:39 include "%L" 19:55:39

: "π" U03C0 # GREEK SMALL LETTER PI 19:55:40 Try a full reboot :P 19:55:42 is what the file reads at 19:55:44 as* 19:55:50 Maybe that path doesn't exist 19:55:51 ehird, I did that, unintentionally 19:55:55 Although that's unlikely, I guess 19:56:02 But maybe "%L" will work and your old version won't 19:56:04 So try restarting X now 19:56:09 ehird, the full reboot was forced due to hardware lockup 19:56:20 when plugging in an usb device 19:56:24 second time in a few weeks 19:56:27 and different usb devices 19:56:35 -!- Asztal has joined. 19:56:36 I believe the mobo is getting glitchy 19:56:42 ehird, even sysrq was *dead* 19:57:08 Wow. 19:57:16 Why not just use your laptop and hook it up to your display/keyboard/mouse? 19:57:27 The sysrq key? 19:57:34 Alt+SysRq. 19:57:36 Linux magic key. 19:57:40 Lets you talk directly to the kernel. 19:57:42 ehird, becuase laptop is unable to get the resolution of the of the monitor 19:57:47 it can do widescreen high res 19:57:51 but only lower res for 4:3 19:57:54 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 don't ask me why 19:57:56 I don't seem to have that... I feel inadequate. 19:58:01 ehird, it just refuses to handle 1400x1050 19:58:04 Phantom_Hoover: It's the Print Screen key. 19:58:05 -!- sebbu has quit (Read error: 60 (Operation timed out)). 19:58:09 ehird, also, the harddrive is smaller in it 19:58:31 AnMaster: Buy a hard drive enclosure and extract the disk from the desktop 19:58:32 ehird, and the sound is worse than my sb live 5.1 in my desktop 19:58:42 Meh 19:59:05 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 since I don't believe you can get a new mobo with this socket any more 20:03:03 ehird, what do you call percent humdity as in the air 20:03:06 as in 20:03:11 humidity 20:03:13 the thing you measure with that unit 20:03:14 30% humidity 20:03:14 ah 20:03:27 ehird, 11% indoors is horribly dry btw 20:03:34 Misread somehow " I don't believe in humidity". 20:03:54 fizzie, tell me what the hamming distance is for that one 20:04:28 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 It's a mangling of two lines. 20:04:43 Cue oklofok; "i don't believe in humidity". 20:04:55 humidity* 20:04:57 Who? 20:05:31 Phantom_Hoover, who what? 20:05:48 Who oklofok? 20:05:53 Phantom_Hoover: … 20:05:55 GTFO :| 20:06:05 Why...? 20:06:10 Darn newbs, not knowing who oklofok is 'n shizz :P 20:07:01 oh Phantom_Hoover is new here 20:07:14 Phantom_Hoover, look in the output of /names 20:07:15 that oklofok 20:08:35 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 ehird, "go problem"? 20:10:51 oerjan, hi there 20:11:12 hi AnMaster 20:11:20 AnMaster: Go as in Go the language. 20:14:20 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 ehird, yes 20:22:15 ehird, but why is Go a problem? 20:22:35 no debian packages, and gregor hates go so him installing it is unlikely :) 20:22:40 ah 20:22:41 (without an easy package) 20:22:50 probably not all that unlikely but ehh 20:23:18 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 ehird, compare vs assign (pascal) 20:23:47 AnMaster: if you just want to test joust warriors without spamming the hill you could just download a binary 20:23:53 that is if you trust binaries me or gregor made 20:23:56 AnMaster: "compare"? 20:23:58 I mean in make 20:23:59 :P 20:23:59 ehird, I don't 20:24:04 ehird, oh I told you that above 20:24:14 ehird, the first doesn't evaluate the value at assignment 20:24:16 such that 20:24:21 i recall something vaguely similar… yesterday 20:24:26 CFLAGS = $(SET_LATER) 20:24:30 SET_LATER = -O2 20:24:30 AnMaster: ok, so it should be CC = gcc, not CC := gcc? :P 20:24:37 means that CFLAGS expands to -O2 20:24:49 ehird, in that case it wouldn't make any difference 20:24:59 ehird, well a bit of difference 20:25:06 ehird, with overriding CC on command line 20:25:16 iirc it won't work for the latter 20:25:22 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 ehird, since you probably want make CC=icc to work, the former 20:25:39 methinks "very bad" 20:25:47 ehird, depends on your goals 20:26:14 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 CFLAGS +:=? :P 20:26:32 ehird, I have no clue 20:26:39 I'll just do = 20:26:48 lamers who want their own cflags can do make CFLAGS=… 20:26:50 ehird, += would append for both 20:26:59 AnMaster: yeah which sucks 20:27:01 if you don't want that 20:27:08 ehird, also isn't := gnu specific 20:27:11 don't care 20:27:17 iirc autotools screams about it if you use it 20:27:21 which is funny 20:27:29 good thing I don't use autotools 20:27:51 ehird, well the funny thing is that GNU automake tells you not to use gnu make specific syntax 20:28:39 !bfjoust x . 20:28:55 did you loose if program ended? 20:28:57 I forgot 20:28:57 Score for AnMaster_x: 7.8 20:29:23 don't recall 20:29:41 !bfjoust x (+)*999999999999999999999999999999999 20:29:49 I hate how gmake's default rules do 20:29:53 $(CFLAGS) $(CPPFLAGS) ... 20:29:55 Score for AnMaster_x: 7.8 20:29:55 so that you get tons of spaces 20:30:00 ehird, why? 20:30:05 because it irritates me 20:30:06 there is a single space between them 20:30:11 in your paste 20:30:13 ehird@meson:~/src/lance$ make 20:30:14 cc -O3 -c -o lance.o lance.c 20:30:16 cc -O3 -c -o main.o main.c 20:30:18 well 20:30:20 $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) 20:30:20 that is a tab 20:30:21 but 20:30:21 etc 20:30:24 since I only use cflags... 20:30:24 $(CFLAGS) $(CPPFLAGS) ... 20:30:27 it isn't a tab 20:30:28 there is a singe space ther 20:30:29 ah 20:30:29 it's a space 20:30:32 well 20:30:34 spaces 20:30:43 ehird, well any -I and -D should be CPPFLAGS 20:30:49 yes, I know 20:30:51 but all I do is -g or -O3 20:30:54 any -Wl, or -l or -L should be LDFLAGS 20:30:56 depending on if DEBUG is set 20:31:01 ehird, so you want to break it for everyone else 20:31:06 or it could just do 20:31:12 $(if foo, spacefoo) 20:31:13 or whatever 20:31:15 :| 20:31:23 ehird, would be messy 20:31:23 also 20:31:26 nobody uses the default rules anyway precisely because of all the spaces 20:31:26 just do: make -s 20:31:28 iirc 20:31:33 that removes helpful output 20:31:37 ehird, I use the default rules 20:31:39 in fact 20:31:44 no you don't, you use cmake 20:31:52 ehird, not always 20:31:57 it depends on how large the project is 20:32:05 I sometimes use a simple: 20:32:14 all: foo bar 20:32:17 clean: 20:32:22 ... 20:32:27 you forgot .PHONY 20:32:29 .PHONEY: all clean 20:32:31 also, -O2 20:32:32 *PHONY 20:32:34 also, "all"? 20:32:37 don't you mean "executablename" 20:32:41 ehird, well there were two names there 20:32:53 ehird, and that is enough with the implicit rules 20:33:00 not if any program has more than one file 20:33:03 ehird, true 20:33:08 ehird, I said for simple projects 20:33:18 lol if i do 20:33:21 lance: main.o 20:33:24 cc -O3 -c -o main.o main.c 20:33:25 cc -O3 lance.c main.o -o lance 20:33:31 ehird, XD 20:33:47 lance: lance.o main.o works though 20:33:49 ehird, do lance: lance.o main.o 20:33:51 yeah 20:33:54 hmm 20:34:00 gmake should be able to automatically create a clean :( 20:34:22 clearly the solution is for me to write Yet Another Makefile Generator :D 20:34:34 ehird, also I use makefiles for stuff like: *.dia -> *.svg -> *.pdf 20:34:47 or *.dot for that matter 20:35:02 *.pdf for embedding in pdftex output 20:35:23 that's what make is designed for 20:35:24 you can embed pdf in pdf, unlike most other formats 20:35:27 ehird, indeed 20:35:30 automating file transformation 20:35:49 * ehird realises he doesn't actually need clean, axes it 20:35:54 ehird, C -> executable is also such a transformation 20:35:57 yes. 20:36:00 ehird, I find clean useful if I change the Makefile 20:36:03 but you can do 20:36:11 lance: lance.o main.o Makefile 20:36:12 I guess 20:36:25 yeah i guess 20:36:27 erhm no 20:36:34 lance.o wouldn't depend on Makfile there 20:36:39 Makefile* 20:36:43 %.o: Makefile 20:36:47 good point 20:37:02 also rm *.o works quite well :P 20:37:19 ehird, rm *.o lance you mean 20:37:21 CFLAGS = -O3 20:37:23 lance: lance.o main.o 20:37:25 there that's nice and small 20:37:26 AnMaster: well yes 20:37:36 (debug compile: make CFLAGS=-g :P) 20:37:50 oh wait 20:37:53 I'm using Emacs 20:38:05 c-mode has the worst indentation defaults ever 20:38:06 halp 20:38:15 ehird, sec 20:38:29 ehird, I suspect ais likes the defaults ;P 20:38:30 lance: lance.o main.o 20:38:31 lance.o main.o: lance.h 20:38:33 I hope this works 20:38:50 AnMaster: no, he uses mixed tabs and spaces, 2-space indent, and this brace style: 20:38:51 void f(){ 20:38:53 ...; 20:38:55 ...;} 20:38:57 -*- mode: C; coding: utf-8; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- 20:38:59 (really) 20:39:03 ehird, there is a modline for you 20:39:09 AnMaster: I'd prefer to just set it in my .emacs rather than clutter my files 20:39:17 meh 20:39:43 how does it go again 20:39:47 add-hook 'c-mode-hook 20:39:57 -!- Azstal has joined. 20:39:58 (custom-set-variables 20:39:58 '(standard-indent 4) 20:39:58 '(tab-width 4)) 20:40:02 fuck custom 20:40:12 also, I want it only for C 20:40:19 ehird, meh 20:40:40 ehird, one you might like: 20:40:40 (c-set-style 'k&r) 20:40:42 (setq inhibit-startup-message t) 20:40:43 or is it "k&r" 20:40:45 yeah the latter 20:40:47 AnMaster: old hat, of course I have that 20:40:53 ehird, good 20:41:06 and (blink-cursor-mode -1) and (tool-bar-mode -1) and (menu-bar-mode -1) 20:41:16 and the long snippet to move #foo# and foo~ files out of the way 20:41:44 ehird, I like my *~ 20:42:28 I don't. 20:42:46 (add-hook 'c-mode-hook 20:42:48 (lambda () 20:42:49 (setq indent-tabs-mode t) 20:42:51 (c-set-style "k&r"))) 20:42:52 Oops, that uses tabs. 20:42:54 * ehird untabify 20:43:22 oh sweet 20:43:29 C-x C-f ~/src/lance/*.c works 20:43:51 ugh, my c-mode-hook didn't work 20:44:11 and k&r still uses dumbfuck 5-space indentation 20:44:57 And two idents would be 1 tab and 2 spaces? 20:45:04 believe so 20:45:14 emacs' way of thinking about tabs/spaces is pretty stupid 20:45:58 * ehird tries c-set-style linux 20:46:14 Much better. 20:46:15 ehird, anything wrong with tabs? 20:46:24 ??? 20:46:34 Oops, that uses tabs. 20:46:42 In elisp, yes. 20:46:47 Because you don't always indent by a fixed amount. 20:46:54 ehird, well yes 20:46:54 You align, and lambda gets two spaces, but 20:46:56 (f 20:46:57 x) 20:46:59 gets one 20:47:00 etc 20:47:02 Thus, tabs are retarderated. 20:47:05 but I thought that was in C? 20:47:17 [20:42] (add-hook 'c-mode-hook 20:47:18 [20:42] (lambda () 20:47:20 [20:42] (setq indent-tabs-mode t) 20:47:21 [20:42] (c-set-style "k&r"))) 20:47:22 ah 20:47:23 [20:42] Oops, that uses tabs. 20:47:24 Read closer. 20:48:17 actually it didn't look like that here 20:48:22 (add-hook 'c-mode-hook 20:48:22 (lambda () 20:48:23 vs. 20:48:27 [20:42] (add-hook 'c-mode-hook 20:48:27 [20:42] (lambda () 20:48:32 Yes, Konversation erased them on paste or something. 20:48:44 huh 20:48:55 Ehh, c-mode's electric mode is rubbish. 20:49:01 It doesn't add spaces after commas or anything. 20:49:08 ehird, what was that electric mode, I don't remember 20:49:14 C is a language I use µemacs for 20:49:16 int main(){ 20:49:18 → 20:49:19 int main() 20:49:21 { 20:49:22 automatically 20:49:24 just by typing { 20:49:25 NO! 20:49:27 int main() { 20:49:29 It would be nice, if it worked. 20:49:32 in fact 20:49:36 int main(void) { 20:49:40 AnMaster: that's pointless, it gets changed automatically you idiot 20:49:40 is the only True Way 20:49:43 that's what electric-mode does 20:49:47 ehird, right 20:49:52 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 i mean, come the fuck on, Unix was the first C software 20:50:10 ehird, True Way by Committee! 20:50:12 if ANYTHING is the true way it's what it did 20:50:23 AnMaster: actually very few corporate things are written like that 20:50:28 mostly they use Allman style, is my impression 20:53:41 allman? 20:53:53 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 Gah, Emacs is not nearly hyper enough. 20:56:05 Is AnMaster turning into me? 20:57:34 -!- Asztal has quit (Read error: 60 (Operation timed out)). 20:57:38 ? 20:57:45 No, AnMaster has never googled for things. 20:59:02 People are dropping left and right... 20:59:50 * ehird drops 20:59:58 Phantom_Hoover: who are you, anyway? 21:00:00 witch! 21:00:15 New Now Know How sounds familiar 21:00:20 -!- Asztal has joined. 21:00:31 oh 21:00:55 nm 21:01:23 i must be turning into ehird, i googled it. 21:01:29 ehird: I'm just zis guy, you know? 21:01:34 chatzilla default message :P 21:01:37 yes 21:01:49 Phantom_Hoover: right right. wait, you're not the guy who made Esme, are you? just checking. 21:01:54 Esme? 21:01:58 good 21:02:03 Phantom_Hoover: the worst esolang ever created 21:02:12 http://esolangs.org/wiki/Esme 21:02:17 if it can even be considered a language 21:02:21 meaningless as it is 21:02:53 " 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 What the hell does it do? 21:03:31 EXACTLY 21:03:32 We don't know 21:03:36 Pretty sure he's just a troll 21:03:42 But it's amazing how... informationless... he made it 21:03:54 You literally cannot infer a single thing from the page 21:04:23 -!- Azstal has quit (Success). 21:04:38 Sweet, installing manpages-posix-dev makes `man foo.h` work. 21:04:52 Hashes makes little more sense... 21:06:04 wow, rosegarden depends on kdialog for export/import 21:06:07 that is just crazy 21:07:23 ugh, i hate getopt_long's api 21:08:47 * ehird just writes a manual loop rather than futz with it 21:09:14 ehird, don't use getopt_long 21:09:16 use getopt 21:09:21 No; I want long options. 21:09:23 it's more portable 21:09:26 ehird, fine 21:09:28 Don't give a fuck. 21:09:51 Actually, I wish there was an option parser that also did argument parsing. 21:09:57 That would be nice. 21:11:19 Seems like http://argtable.sf.net/ does that, but I don't like the syntax. 21:13:24 Gregor, that soundfont was indeed good 21:13:33 "BUT NOT ANY MORE!" 21:13:48 har 21:13:58 Hey, you could have things like: 21:14:09 OPTION(name) 21:14:15 that did __typeof__(name), say char * 21:14:19 to infer what kind of argument it is 21:14:26 *does 21:14:28 and generates --name 21:14:32 ehird, gcc has it's own language just to describe command line options iirc 21:15:13 Perhaps if it did the declaration too 21:15:21 FLAG(int, verbose) 21:15:24 OPTION(char *, name) 21:15:30 OPTION_DEFAULT(char *, name, "fred") 21:16:36 This paper presents a method for creating formally correct just-in-time (JIT) compilers 21:16:38 woah 21:16:49 ? 21:16:54 Ooh, it could even let you pass a function as the third argument to OPTION_DEFAULT. 21:17:02 no, wait 21:17:06 types are post-cpp, darn 21:17:44 Gregor, know any way to load more than one sound font at once into sb live cards? 21:17:57 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 argh too little ram to load both at once 21:30:05 God I hate C's string handling. 21:30:47 Even writing (dirname(argv[0]) ~ "/hill"), where ~ = string concatenation, is a pain in the arse! 21:31:33 Do the basename, strlen it, add strlen("/hill") to it, allocate a new string, strcpy them in. 21:31:34 FML 21:34:14 FML? 21:34:19 Fuck My Life 21:34:26 you know, in other languages, writing the command-line interface is nice relaxing busywork before tackling the real problems 21:34:26 oh thought it was "language" 21:34:30 in C it's the opposite! 21:34:32 AnMaster: also that XD 21:34:47 int main(int argc, char *argv[]) 21:34:48 { 21:34:50 return 0; 21:34:51 } 21:34:53 that will do for now 21:34:58 ehird, what does the app do? 21:35:06 BF Joust 21:35:13 Sieve and Kettle are back! Polarity FUCK YEAH! 21:35:34 why are you doing dirname(argv[0]) ~ "/hill" 21:35:44 ehird, 1) argv[0] may or may not contain the path 21:35:59 2) whats wrong with current working directory 21:36:09 1) bah, you're right 21:36:14 2) because that isn't what i want 21:36:32 "lance prog" battles prog against the entire hill; you can set that with --hill 21:36:38 1) of course I'm right 21:36:39 but by default it's that directory 21:36:51 "lance prog1 prog2" battles the two, and ignores the hill, so it doesn't matter there 21:36:57 I guess lance prog1 prog2 prog3... will work too 21:37:36 ehird, if you are linux specific: 21:37:56 Maybe I'll do Go but ignore the concurrency part 21:38:02 It has string concatenation! 21:38:06 /proc/self/exe 21:38:13 -!- soupdragon has quit ("Leaving"). 21:38:25 AnMaster: lol. 21:38:26 !help languages 21:38:26 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 ehird, hm? 21:38:45 AnMaster: because the code to open and read that file will be *even bigger* 21:40:01 !help 21:40:02 help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 21:40:17 !help userinterps 21:40:17 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 ehird, it's a symlink 21:40:38 AnMaster: x_x 21:40:38 !userinterps 21:40:38 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 crazy 21:40:46 ehird, what? 21:40:54 Well, okay, not crazy. 21:41:07 I believe you can use stat() 21:41:08 Maybe I should write yet another string library for C. You know, because I hate myself :P 21:41:14 AnMaster: readlink(), rather 21:41:35 ehird, ah yes that is it 21:41:40 stat(1) does it iirc 21:42:16 !help 21:42:16 help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 21:42:20 !info 21:42:20 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 readlink("/proc/self/exe", "/", 1) = 1 21:42:26 readlink("/proc/self/exe", "/u", 2) = 2 21:42:26 readlink("/proc/self/exe", "/usr", 4) = 4 21:42:26 readlink("/proc/self/exe", "/usr/bin", 8) = 8 21:42:26 readlink("/proc/self/exe", "/usr/bin/stat", 16) = 13 21:42:30 how inefficient 21:43:56 also it doesn't null terminate 21:44:03 !help help 21:44:03 help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 21:44:11 !help interp 21:44:11 Sorry, I have no help for interp! 21:44:17 !help bf 21:44:17 Sorry, I have no help for bf! 21:44:36 !languages 21:44:55 !help userinterps 21:44:55 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 !help languages 21:45:00 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 !lazyk 21:45:15 Couldn't fork sub-program. 21:45:22 Phantom_Hoover, you need to give it code 21:46:01 Yeah, but the cat program in Lazy K is an empty file. 21:46:16 Phantom_Hoover, hm report a bug to Gregor 21:46:21 or use the url variant 21:46:27 to link to an empty file 21:47:01 !sh cat /dev/null >butt 21:47:01 /tmp/input.11852: line 1: butt: Permission denied 21:47:03 !sh cat butt 21:47:04 /bin/cat: butt: No such file or directory 21:47:05 dammit 21:47:08 !sh cat /dev/null | lazyk 21:47:09 /tmp/input.11907: line 1: lazyk: command not found 21:47:10 aw 21:47:20 !sh ls 21:47:21 interps 21:47:27 !sh ls .. 21:47:27 multibot_cmds 21:47:28 `echo "try this" 21:47:28 "try this" 21:47:32 ehird, ^ 21:47:51 !sh pwd 21:47:51 /home/egobot/egobot.hg/multibot_cmds 21:48:00 !sh ls ~ 21:48:01 egobot.hg 21:48:05 !sh ls / 21:48:05 bin 21:48:24 !sh ls / | tr -d $'\n' 21:48:25 bindevetchomeliblib64proctmpusr 21:48:25 Ego != Hack 21:48:30 !sh ls / | tr $'\n' ' ' 21:48:31 bin dev etc home lib lib64 proc tmp usr 21:48:33 !sh ls 21:48:33 interps 21:48:36 !sh ls interps 21:48:37 1l 21:48:40 !sh ls | tr $'\n' ' ' 21:48:41 interps lib slox 21:48:45 !sh ls interps/lazyk 21:48:46 !sh ls ~ | tr $'\n' ' ' 21:48:47 USED_VERSION 21:48:47 egobot.hg 21:48:58 !sh ls interps/lazyk | tr $'\n' ' ' 21:48:59 !sh interps/lazyk/lazy 21:48:59 USED_VERSION lazy lazy.cpp primes.lazy 21:49:08 !sh interps/lazyk/lazy --help | tr $'\n' ' ' 21:49:09 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 ehird, note it gives you only one line 21:49:15 indeed 21:49:16 !lazyk 21:49:16 Couldn't fork sub-program. 21:49:17 `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 !sh interps/lazyk/lazy -e '' | tr $'\n' ' ' 21:49:18 No output. 21:49:19 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 ``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 No output. 21:49:22 `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 No output. 21:49:24 Phantom_Hoover: sigh. 21:49:26 noobs. 21:49:27 pastebin.ca 21:49:29 use it 21:49:33 then !lazyk url 21:49:38 siisii! 21:49:53 soupdragon, :D 21:50:26 !lazyk http://pastebin.ca/1748851 21:50:28 Couldn't fork sub-program. 21:50:41 -!- oerjan has quit ("Reboot"). 21:51:03 you must link to the raw version 21:51:17 !lazyk http://pastebin.ca/raw/1748851 21:51:18 Couldn't fork sub-program. 21:51:21 borken 21:51:27 !sh ls 21:51:28 interps 21:51:33 !sh ls interps 21:51:33 1l 21:51:58 -!- MigoMipo has quit. 21:52:13 !sh ls interps/lazyk 21:52:13 USED_VERSION 21:52:46 !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 /tmp/input.12798: line 1: unexpected EOF while looking for matching `"' 21:52:48 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 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 stop it 21:52:58 for fuck's sake 21:53:01 it won't fit on one irc line 21:53:02 Sorry! 21:53:05 xD 21:53:07 don't mind me 21:53:09 i'm just grumpy 21:53:15 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 although I'm not now, because I read the word grumpytacular 21:53:30 hey i never said you should leave 21:53:35 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 Sgeo: make a haskell program and i'll be happy 21:55:35 i like haskell programs 21:56:14 -!- oerjan has joined. 21:56:34 haskell = "sucks" 21:56:36 hapy??? 21:57:02 soupdragon: that is not a haskell program 21:57:03 also, you suck 21:57:12 how is that not a haskell program? 21:57:56 no main function 21:58:24 There's a function that I forgot the name and type of 21:58:34 Sgeo: how useful 21:58:52 main = id 21:59:01 Is a cat program, iirc 21:59:32 interact 21:59:41 Yes. And obviously it doesn't start with c 21:59:56 * Sgeo 's memory is obviously broken 22:00:06 scrambled, possibly 22:00:08 interact :: (String → String) → String 22:00:16 no 22:00:20 erm 22:00:21 http://www.haskell.org/hoogle/?hoogle=interact 22:00:21 → IO () 22:00:26 should have made :: the unicode character, but my Compose doesn't have it 22:00:47 Does Haskell actually accept arrows like that? I doubt it 22:01:18 i understand ghc has some unicode extensions 22:01:38 Sgeo: yes 22:01:46 if you enable it 22:03:11 cool ]{}[ isn't registered :D 22:09:30 info ] 22:09:30 opos 22:09:30 oops 22:09:30 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 Deewiant: is coadjute abandoned? 22:10:28 All my Haskell stuff has been semi-abandoned lately 22:10:28 Why? 22:10:55 Just curious 22:10:56 (Why?) 22:11:59 s(int*a,int b){int t=*a;--b?s(a+1,b),a[(*a=1[a]) C sort 22:12:34 "defining command line parsers" sounds.. boring.. 22:12:48 soupdragon: stfu, it uses type magic 22:12:55 and type magic is always sweet 22:12:56 :( 22:12:59 don't make me stfu 22:13:09 besides, boring things can be interesting 22:13:18 s(a,b)int*a;{int t=*a;--b?s(a+1,b),a[(*a=1[a]) hmm 22:13:43 is it valid without the return type declaration? 22:13:44 i guess not 22:13:46 so why not even 22:13:47 s(a,b){...} 22:14:04 There is no return type declaration? 22:14:10 exactly 22:14:12 is it valid without it 22:14:16 There never was one 22:14:17 if not, then we don't have to define param types anyway 22:14:19 as we're not valid c 22:14:25 Sure it's valid 22:14:31 Isn't it? 22:14:34 don't you need to say "void"... 22:14:54 Doesn't it default to int 22:15:05 is that standard? 22:15:27 main(){puts("hello, world");} and all that 22:16:09 s(a,b)int*a;{int t=*a;--b&&s(a+1,b),a[(*a=1[a]) One character saved 22:16:14 But in any case, that doesn't return anything 22:16:15 or does a&&b,c not work? 22:16:17 guess not 22:16:20 Deewiant: That isn't valid 22:16:29 What isn't? 22:16:52 hmm 22:16:54 perhaps it is 22:17:02 Deewiant: I thought int-default-return was just a K&R relic 22:17:12 Of course it's a K&R relic :-P 22:17:16 Doesn't make it invalid 22:17:56 Anyhoo, I think we want to make it void since it doesn't return 22:18:10 int-default-return ? 22:19:07 ehird: I think your && breaks stuff 22:19:27 Deewiant: Yeah, I guessed as much 22:19:32 a ? b,c,d : e has to parse as a ? (b,c,d) : e 22:19:50 But , has the lowest precedence of everything 22:20:17 So your a && b,c,d becomes (a && b), c, d 22:20:43 ehird: It's invalid in C99. 22:21:24 Hmm 22:21:34 Exchange sorts probably suck for this, because swapping a var in c is quite verbose 22:21:58 int z=x;x=y;y=z; or x^=y;y^=x;x^=y; 22:22:24 Also, recursion is a nice property here 22:23:22 s(int*a){*a&&*a>a[1]?z=a[1],*a=a[1],a[1]=z:s(a+1);} 22:23:32 does a&&b?c:d work? 22:23:35 as a&&(b?c:d) 22:23:38 even with commas 22:23:50 ?: has lower precedence 22:23:52 So no 22:24:05 What about a?b?c:d:0 :P 22:24:11 That works 22:24:15 As what? 22:24:19 a?(b?c:d):0? 22:24:21 As the only thing it can work as 22:24:29 True that. 22:24:37 s(int*a){*a?*a>a[1]?z=a[1],*a=a[1],a[1]=z:s(a+1):0;} 22:24:43 This has one flaw: It fails on "0". 22:24:46 But who uses that number? 22:24:51 Oh wait. 22:24:58 s(int*a){~*a?*a>a[1]?z=a[1],*a=a[1],a[1]=z:s(a+1):0;} 22:25:02 Okay, now it can't sort the maximum integer. 22:25:12 Apart from that it's pea-chy 22:25:30 You need to declare that z methinks 22:25:38 Tru dat 22:25:54 Hmm, and I can't use C99-style declarations either 22:25:56 Because 22:26:00 int z=a[1],... 22:26:02 It'd have to be 22:26:06 (int z=a[1]),... 22:26:34 from make output: ./compiletex font.tex font.h font 22:26:36 Declarations aren't expressions :-P 22:26:38 really confused me that 22:26:43 then I realised tex = texture 22:26:47 not TeX 22:26:48 Deewiant: Tru dat 22:26:57 Hey, I just realised the xor swap must work in thiscase. 22:27:01 Because > therefore !=. 22:27:16 And it's three chars shorter than declaring a variable 22:27:35 Wait, two. 22:27:39 No wait, 1. 22:27:56 s(int*a){*~a?*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:s(a+1):0;} 22:27:58 Oops 22:28:01 s(int*a){~*a?*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:s(a+1):0;} 22:29:24 How's that going to sort {3,4,1,2}? 22:29:41 ({3,4,1,2,~0}) 22:29:51 ehird, too tired to work it out, what does it do? 22:29:58 Deewiant: Oh, you're right 22:30:02 I have to recurse even if I do swap 22:30:05 AnMaster: No cookie for you 22:30:17 It does one pass of bubble sort or suchlike 22:30:19 ehird, fine *half asleep* 22:30:44 s(int*a){~*a?*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:0,s(a+1):0} 22:31:14 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 Which it probably… doesn't. 22:31:19 You just changed the :s(a+1) case to :0,s(a+1)? 22:31:32 s(int*a){~*a?(*a>a[1]?*a^=a[1],a[1]^=*a,*a^=a[1]:0),s(a+1):0;} 22:31:36 There, properly parenised. 22:32:02 Deewiant: Rather, if we're not at the end of the list, we always go on one 22:32:07 regardless of our swapping 22:32:16 Since you need those parens it'll probably be shorter with an if 22:32:24 Hmm wait 22:32:28 What if ~*a but ~a[1] 22:32:29 ehird: That's still O(n) :-P 22:32:31 Better make it ~a[1] 22:32:39 Deewiant: Gah, you're right 22:32:40 You aren't going to sort anything in O(n) 22:32:51 Well, not with comparisons anyway. 22:32:57 http://en.wikipedia.org/wiki/Bubble_sort 22:33:03 I was just stupidly copying wp's pseudocode 22:33:04 without, you know 22:33:06 reading it 22:33:10 >_< 22:33:17 Maybe I'l do pigeonhole sort 22:33:18 *I'll 22:33:21 Do selection sort or something instead, bubble sort sux 22:33:26 Or whatever 22:33:32 Deewiant: I'm not concerned about performance 22:33:37 CONCISION IS EVERYTHING 22:33:42 Neither am I 22:34:03 I can never remember how bubble sort works but selection sort can be described in less than five words 22:34:07 int foo[max value in array], when you find n do foo[n]++, reassemble array 22:34:12 Ehh, too much overhead 22:34:24 Deewiant: Do so, then :D 22:34:59 "Repeatedly fetch the minimum" conveys the point well enough 22:35:34 Deewiant, merge sort for the win 22:36:02 split, recurse, swap, merge 22:36:28 Swap? 22:36:48 Deewiant, innermost layer 22:37:21 well I guess you could split into 1, and then merge those 22:37:23 No, there's no swap 22:37:29 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 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 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 It wasn't really an argument for anything 23:01:49 i suppose, neither was mine 23:02:20 so i win 23:02:22 that is bubble sort 23:02:27 "slightly harder to remember than bubble sort" 23:02:29 YOU MADE AN ERROR 23:02:31 you lose 23:02:34 :D 23:02:42 i suppose 23:02:58 you now have only 13096 tries left 23:03:39 so i win. 23:03:50 that remains to be seen 23:04:39 oklofok: yeah, that is exactly bubble sort 23:04:46 at least it's not bogosort 23:05:48 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 holy shit 23:05:51 if you use wall(1) in kde 23:05:54 it comes up in the notification area 23:05:56 :D 23:06:14 otherwise it's basically selection 23:07:20 err wait it's symmetric 23:07:51 so nevermind that. in any case it is quite similar to selection sort 23:08:03 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 ehird: write too 23:09:37 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 whoa. 23:11:39 I wish the fish shell had less flaws :< 23:11:43 i hate using traditional shells 23:19:59 ehird, what flaws? 23:20:18 well, for instance, setting a variable for the duration of one command is a bitch 23:20:25 iirc 23:20:32 you have to do env x=y ... 23:20:34 i believe 23:20:48 woot, J works nicely on Kubuntu 23:20:53 *in Kubuntu, I guess. 23:21:41 under Kubuntu 23:26:35 oh god, J comes with a package browser for all kinds of stuff 23:26:38 awesome 23:26:45 there's even updates of the base library 23:30:58 I should do some sort of specifying of the poop language. 23:31:40 Pathological Objects Osomething Psomething. 23:32:33 Pathological Object Oriented Programming 23:32:52 actually, that'd be a good one; it isn't OOP in the slightest, but it has "objects" 23:32:56 and the language is oriented around them 23:33:07 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 basically, you have little particles that go in directions, and there are mirrors they can bounce off 23:37:48 and if two particles collide, they shoot off some different particles 23:37:56 and there are sinks and stuff that they can fall into to do things 23:43:49 and nothing makes sense 23:44:39 poop makes sense 23:45:24 coppro: what's the gesture that does the exposé-type thing in kde 23:45:27 i keep doing it by mistake 23:45:41 ah go to top-left and scroll mouse 23:45:43 obvious :P 23:45:49 O_o 23:45:57 I just use the screen edges 23:46:06 oh, I just didn't hit the edge fast enough 23:46:10 except when scrolling 23:46:13 as an entirely incidental thing 23:53:21 Particles Out Of Place 23:54:54 -!- augur has quit (Read error: 104 (Connection reset by peer)). 23:55:01 maybe it can have multiple expansions! 23:59:56 -!- augur_ has joined.