< 1278374404 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Aside from the absurd error checking... < 1278374415 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(mmm, correctness) < 1278374445 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I feel weird. I found a practical use for BF < 1278374455 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :coppro, oh what is it? < 1278374475 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :"I want to learn C#" "Go to this site, it's how I learned" "But you already had some programming experience" < 1278374475 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I just suggested Python or C < 1278374482 0 :aliseiphone!unknown@unknown.invalid QUIT :Remote host closed the connection < 1278374492 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :For "encrypting" a file - not to actually protect the data, but just discourage casual observers. Run the following program, which interestingly enough has each symbol exactly once: +[>,-.<] < 1278374508 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :run it again with s/-/+/ to un"encrypt" it < 1278374539 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :and the BF program is shorter than the equivalent in nearly every other language < 1278374550 0 :aliseiphone!~ehirdipho@82.132.139.5 JOIN :#esoteric < 1278374552 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :The current code is short but doesn't clearly express the fundamental idea "compute a CRC32 checksum". Remember, commands are the functions of the Unix OS. < 1278374555 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :actually, waitaminute < 1278374557 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :that won't work < 1278374567 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: did you get "Look at your..."? < 1278374569 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I forgot how BF behaves when it runs out of input < 1278374579 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :+[,-.+] will do it < 1278374585 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :coppro: sets cell to 0 mostly < 1278374594 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :sometimes unchangef < 1278374595 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :hmm... off-by-one error < 1278374600 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :*unchangef < 1278374604 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :*unchanged < 1278374614 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :,[-.,] < 1278374618 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: No. < 1278374618 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :which my phone autocorrects to unchangef < 1278374626 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Yes. < 1278374631 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: what a fantastic phone i must buy one now < 1278374632 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Oh, I see. < 1278374638 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"Look at your..." ? < 1278374674 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Look at your original code. That expressed your intent incredibly clearly. Strip useless options. Get rid of the, yes, absurd error checking. < 1278374677 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :The current code is short but doesn't clearly express the fundamental idea "compute a CRC32 checksum". Remember, commands are the functions of the Unix OS. < 1278374678 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Y < 1278374692 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :*That's what I said. < 1278374710 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: Okay, so screw the error checking that I added on a bizarre whim. < 1278374729 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone tends to be anti-feature though (j/k) < 1278374737 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I think I can keep the fopen error checking. < 1278374738 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :And functions shouldn't have unneccessary cruft. When writing functions, how many flags do they have? < 1278374743 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Otherwise? Pffft. < 1278374746 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Usually, very few. < 1278374767 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :You nest (pipe) functions (commands) instead. < 1278374780 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: POSIX requires the argument. < 1278374788 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :So, do try and remove all flags that significantly complicate your code. < 1278374804 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: POSIX compliance is an amusing fiction. < 1278374815 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And almost all UNIXes implement that. < 1278374818 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Nothing actually *uses* cksum(1). < 1278374821 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Even Heirloom. < 1278374829 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Fine, fine. < 1278374848 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Separate the code common to the arguments. Say into a function. < 1278374856 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does so < 1278374876 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :"if(flag)" in actually-computing code is lame. :P < 1278374897 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : pikhq: Look at your original code. That expressed your intent incredibly clearly. Strip useless options. Get rid of the, yes, absurd error checking. < 1278374898 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so < 1278374916 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :correctness is less important than simplicity? < 1278374920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, yes or no? < 1278374935 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Also, I do wonder if the octets blab might better belong in the BUGS section of cksum.1. < 1278374940 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, yes or no? < 1278374942 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: For Unix? Yes. < 1278374953 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, no < 1278374954 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :IMO < 1278374959 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: It probably does. < 1278374974 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Go fuck Multics. < 1278374982 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, lovely system < 1278374991 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Point made. < 1278375008 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :It didn't work properly, was one minor flaw. < 1278375045 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :I like the idea of a truly correct C program. Ha! < 1278375045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, which one? < 1278375061 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, that would be awesome. But I suggest using haskell or such for that < 1278375083 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Also, I suggest removing the libc dependency and rewriting it in PDP-11 assembly. < 1278375096 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: a truly correct haskell program??? < 1278375099 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Hahaha < 1278375106 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: :P < 1278375113 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Clearly you know nothing of haskell :) < 1278375130 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also, this is coming out much more nicely. < 1278375138 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Thanks for the sanity check, aliseiphone. < 1278375161 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Just call me "Ultimate Genius, Lord Over Everything". < 1278375166 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :That's all I ask for. < 1278375197 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric : http://sprunge.us/ZWTV < 1278375204 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Mmm. < 1278375251 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Doesn't compile though XD < 1278375270 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :s/else {/} else {/ < 1278375282 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :s/name/argv[1]/ < 1278375306 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, yes, hello world in haskell, ought to be truly correct quite easily < 1278375318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if you meant non-trivial then say so < 1278375367 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Additional, nitpicking suggestions: Put the CRC function first; the UI is cruft, not the important bit; try and reduce the nesting of the UI logic; and use "!strcmp" rather than "strcmp(...) == 0". But these are minutiae; the code is great. < 1278375381 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :*argh* < 1278375386 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :MORE BUGS < 1278375397 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: Other than the bugs < 1278375398 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1278375404 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Have you ever considered being less of a pedant in informal conversation? It's a nice social lubricant. < 1278375416 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: As long as it *looks* elegant! < 1278375421 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: Hah. < 1278375513 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :One day I must figure out how to write a truly elegant ls(1). It has so many interacting flags, but separating these into programs seems near-impossible! < 1278375537 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, you are officially being an idiot or a troll now < 1278375540 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which one I wonder < 1278375599 0 :tombom_!unknown@unknown.invalid QUIT :Quit: Leaving < 1278375644 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Oh? And which line made you decide this? < 1278375651 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : One day I must figure out how to write a truly elegant ls(1). It has so many interacting flags, but separating these into programs seems near-impossible! < 1278375656 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, that one :P < 1278375689 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, and ls without colour I won't use. I find the coloured output very very useful < 1278375692 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just FYI < 1278375719 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: Oh, how I wish that I could return a tuple in C. < 1278375720 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :You are free to note that I can write ls(1) perfectly well, that a version with limited flags is very easy to make truly elegant, and that I have a very stringent definition of "trule elegant". < 1278375736 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :trule :) < 1278375754 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, return struct on stack < 1278375758 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sorry, return one *and pattern match*. < 1278375763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1278375770 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Furthermore, I don't, never have, and never will give a damn about whether you will use my coreutils or not. Especially as I know you won't from the get-go. < 1278375771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :try haskell or erlang < 1278375785 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :patterns are no match for C < 1278375791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, -_- < 1278375797 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://sprunge.us/ZVMh < 1278375798 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Bam. < 1278375798 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that was truly awful < 1278375817 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :gotta keep you on your toes < 1278375818 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, that's the original one aliseiphone hated? < 1278375832 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Thats the old one :P < 1278375833 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ... ? < 1278375837 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :*That's < 1278375838 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: OH < 1278375846 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1278375856 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Lemme get the right thing in the pastebuffer. < 1278375857 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster speaks in a foreign language :P < 1278375860 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric : http://sprunge.us/GGWP < 1278375873 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: inte omöjligt < 1278375889 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, instämmer med föregående Norske talare < 1278375891 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i'm in a pub :F < 1278375896 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: You have crc's prototype right before its definition. < 1278375902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeargh < 1278375906 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :This is... interestingly superfluous. < 1278375908 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: ... Yearghright. < 1278375919 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: my bro is in norway and he's a f*#* genius if it comes to natural langs < 1278375924 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Kill that line. < 1278375935 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION aims and shoots < 1278375941 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, and put static on the next one < 1278375942 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: it's dead < 1278375981 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :I need an ipad and < 1278375993 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :a keyboard here < 1278375993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eww ipad < 1278375997 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :he spent 3 weeks there and he actually speaks simple norwegian < 1278376000 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :and a compiler < 1278376010 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: try hiding a laptop < 1278376020 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, an ipad would be equally hard < 1278376026 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, also put a compiler on n900 < 1278376029 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :consider it done < 1278376030 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :wrong < 1278376054 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :knock on door, press button on ipad, rest on floor, hidden < 1278376056 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, _proper_ smartphones can run compilers < 1278376061 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :laptop... Not so quick. < 1278376062 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :Bartosz Michał Gasperowicz FFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAEEEEEEEEEEEEEEEEEENNNNNNNNNNNNNNNNNNN!! Lurt igjen! :D < 1278376070 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so can the iphone < 1278376080 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone, so do that then? < 1278376099 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: what does this mean? < 1278376100 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Keyboard. Screen real estate. Processing power. < 1278376119 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :500mhz arm + small screen + touchscreen keyboard = no < 1278376128 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :thus the ipad wish < 1278376135 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :nooga: Bartosz Micha? Gasperowicz DAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNN!! Fooled again! :D < 1278376153 0 :poiuy_qwert!~poiuy_qwe@bas5-toronto47-2925108742.dsl.bell.ca JOIN :#esoteric < 1278376163 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :because he works for a guy that can't express feelings, he just passes information < 1278376170 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: l- not ? < 1278376179 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :and says somethin and then does something different < 1278376181 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :polish l :P < 1278376182 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :aliseiphone: what? < 1278376187 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :he's in a village 'near' Floro < 1278376197 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Nooga said < 1278376212 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :"Micha[l-]" < 1278376219 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Not "Micha?". < 1278376221 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there was unicode? oh well. < 1278376224 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it's not Polish l < 1278376233 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :its* < 1278376236 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :So is. < 1278376237 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :its ł < 1278376249 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :shiiiit no < 1278376251 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Polish l. < 1278376251 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it's* < 1278376261 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :l != ł < 1278376265 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, oerjan fail at unicode < 1278376273 0 :aliseiphone!unknown@unknown.invalid PRIVMSG #esoteric :Polish fuck you! < 1278384090 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1278384090 0 :clog!nef@bespin.org JOIN :#esoteric < 1278385613 0 :Gregor!unknown@unknown.invalid QUIT :Quit: Leaving < 1278386048 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1278386053 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how long has clog been missing < 1278386073 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :argh several hours < 1278386219 0 :coppro!unknown@unknown.invalid QUIT :Remote host closed the connection < 1278386265 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1278389776 0 :Oranjer!unknown@unknown.invalid PART #esoteric :? < 1278390609 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1278390840 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION would like to demonstrate how you do a Makefile, for everyone that makes it too complex. < 1278390842 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric : http://sprunge.us/IEXi < 1278391489 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :http://failblog.org/2010/07/05/epic-fail-photos-makeup-fail/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+failblog+(The+FAIL+Blog+-+Fail+Pictures+%26+Videos+at+Failblog.ORG)&utm_content=FaceBook < 1278392364 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is a-doing a coreutils < 1278392365 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :FTW < 1278392936 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : http://sprunge.us/IEXi <-- I would add the .PHONY line, but otherwise I agree < 1278392993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, also I would, if I had more programs, add PROGRAMS = foo bar quux < 1278392999 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then all: $(PROGRAMS) < 1278393003 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :clean: < 1278393003 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Yeah. < 1278393011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : rm -f $(PROGRAMS) *.o < 1278393024 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that way there is less duplication < 1278393035 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, but yes I agree with the general idea < 1278393084 0 :DavidCaruso!48518d8d@gateway/web/freenode/ip.72.81.141.141 JOIN :#esoteric < 1278393114 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, also how would you make one target link -lm there < 1278393120 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, I never figured out a clean way < 1278393126 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is, with just implicit targets < 1278393536 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Uh, GNU make only, but there's a way to do per-target variables. < 1278393570 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :target: LDFLAGS += -lm < 1278393695 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, ah, well that puts it BEFORE the files iirc < 1278393705 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which break with -Wl,--as-needed < 1278393708 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in the environment < 1278393721 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, which might be an issue < 1278393793 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Argh. < 1278393801 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :LDLIBS is what you want. < 1278393803 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, ? < 1278393805 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That goes after. < 1278393810 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :LDLIBS? or LIBS? < 1278393816 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :LDLIBS. < 1278393929 0 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1278393933 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::o < 1278393939 0 :DavidCaruso!unknown@unknown.invalid QUIT :Quit: Page closed < 1278393940 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hey folks. < 1278393961 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric : http://sprunge.us/BgXe It's 100% POSIX compliant cat! < 1278393977 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(thank God they removed all the other options!) < 1278394070 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, fread! < 1278394075 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It worries me greatly that most implementations of cat are actually complex. < 1278394078 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: NO < 1278394084 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, ought to be faster < 1278394092 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: It's fucking CAT < 1278394126 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, yes I want to concatenate a dual-side dual-layer dvd image split on 1.44 MB floppies! ;P < 1278394130 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that needs a fast cat < 1278394149 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :... "1.44 MB floppies". < 1278394162 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No, that needs a cat that operates faster than the floppy drive. < 1278394163 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, yes? < 1278394174 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I can guarantee that this is orders of magnitude faster. < 1278394182 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, ah but already copied the floppies to disk with dd < 1278394203 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Still fast enough. < 1278394208 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, that is to a RAM disk < 1278394211 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION learns a lesson < 1278394215 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Shaddup. < 1278394218 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :NEVER code just for the happy case < 1278394228 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: oh of course. < 1278394230 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Even if, in production, the happy case will always be true < 1278394247 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Because in development, it isn't necessarily the case < 1278394284 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: well, it's a balancing act. It is helpful to consider worse-case scenarios in an algirthm, but if you do it too much you waste a lot of time with boilerplate code. Sometimes you should just let it crash. < 1278394376 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to find a list of utils that POSIX requires < 1278394389 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, it is in the POSIX standard < 1278394396 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, which is free < 1278394396 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, found it < 1278394412 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I still haven't seen error-handling in Haskell in action. < 1278394561 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: It doesn't have a single handy list, but it's possible to see if something's required. Which works for me. < 1278394585 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, it has a list on the side in the pdf bookmarks < 1278394599 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Mmm. < 1278394662 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Gash darnit, awk is mandatory. < 1278394735 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION says no < 1278394746 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I don't care what it says, that's seperate from coreutils. < 1278394842 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, sed it mandatory too < 1278394880 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, as is sh and vi < 1278394922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cya < 1278394931 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :LALALACANTHEARYOU < 1278394955 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, hey you are not ehird :P < 1278394957 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stop doing that < 1278395024 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1278395034 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, iirc getline() is in POSIX 2008 and suc < 1278395036 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :such* < 1278395048 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the glibc people managed to get a few things in < 1278395060 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :things that are actually quite useful in general < 1278395064 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a few useless ones too iirc < 1278395076 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1278396418 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so... < 1278396450 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I have this piss cheap vodka that I do not want to finish off straight. But I don't want to throw it into a shitty mixed drink either if it isn't going to waste good < 1278396456 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :How does coke and vodka sound? < 1278396719 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you know what < 1278396721 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I don't even care < 1278396724 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :coke and vodka it is. < 1278397247 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...okay < 1278397252 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so for future reference < 1278397255 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :coke, vodka, chocolate syrup < 1278398045 0 :coppro!unknown@unknown.invalid QUIT :Remote host closed the connection < 1278398131 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1278398312 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :/bin/cat is 52k. That frightens me. < 1278398364 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I think you can do it in like 50 bytes < 1278398405 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah. < 1278398427 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Mine's 8k with dietlibc, but then, that does include a full stdio implementation. < 1278398448 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :asmutils' is 684 bytes. < 1278398481 0 :Gregor!~Gregor@75-151-73-57-Spokane.hfc.comcastbusiness.net JOIN :#esoteric < 1278398510 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Tomorrow: bc! < 1278398758 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :coppro: The ELF header is longer than 50 bytes :-P < 1278398776 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: oh, well < 1278398779 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :It was something really silly < 1278398782 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :definitely under 1kB < 1278398791 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(it wasn't compliant though; just straight no-option cat < 1278398816 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Something like 250-300 bytes is probably doable < 1278398821 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :coppro: asmutils' is *GNU* compliants. < 1278398826 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Erm. < 1278398828 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :nice < 1278398828 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Compliant. < 1278399000 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: MICROCOSM < 1278399024 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: ADD < 1278399027 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1278399037 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: SUBTRACT < 1278401295 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell sequence $ [[1,2,3],[4,5,6],[7,8,9]] < 1278401299 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[[1,4,7],[1,4,8],[1,4,9],[1,5,7],[1,5,8],[1,5,9],[1,6,7],[1,6,8],[1,6,9],[2,4,7],[2,4,8],[2,4,9],[2,5,7],[2,5,8],[2,5,9],[2,6,7],[2,6,8],[2,6,9],[3,4,7],[3,4,8],[3,4,9],[3,5,7],[3,5,8],[3,5,9],[3,6,7],[3,6,8],[3,6,9]] < 1278401316 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so... superset? < 1278401328 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :what operation am I looking at. < 1278401373 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell sequence $ [[1,2,3],[4,5,6],[7,8,9,10]] < 1278401375 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[[1,4,7],[1,4,8],[1,4,9],[1,4,10],[1,5,7],[1,5,8],[1,5,9],[1,5,10],[1,6,7],[1,6,8],[1,6,9],[1,6,10],[2,4,7],[2,4,8],[2,4,9],[2,4,10],[2,5,7],[2,5,8],[2,5,9],[2,5,10],[2,6,7],[2,6,8],[2,6,9],[2,6,10],[3,4,7],[3,4,8],[3,4,9],[3,4,10],[3,5,7],[3,5,8],[3,5,9],[3,5,10],[3,6,7],[3,6,8],[3,6,9],[3,6,10]] < 1278401381 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh my < 1278401407 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so the size of each sub-list is the minimum size of the input sub-lists < 1278401608 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :for some reason it reminds me of powerset, but it's not the same. < 1278401656 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :oh, and there's one size-4 list.... so now I have no fucking clue what sequence does on [[a]] < 1278401676 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :other than a bunch of permutation-like lists < 1278401973 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell sequence $ [[1],[2]] < 1278401974 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[[1,2]] < 1278401984 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell sequence $ [[1,2],[3,4]] < 1278401985 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[[1,3],[1,4],[2,3],[2,4]] < 1278402008 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...oooooh < 1278402018 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell sequence $ [[1,2,3],[4,5,6]] < 1278402020 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[[1,4],[1,5],[1,6],[2,4],[2,5],[2,6],[3,4],[3,5],[3,6]] < 1278402028 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Speaking of small executables, I have a 253-byte stub (inc. ELF headers + code) for x86-32 which does (with direct syscalls) fork+exec /bin/bzcat, feeds it a blob, reads it to rwx segment and jumps into it. < 1278402102 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: (I use it for compressed executables, since UPX's compression ratio isn't so awesome and its decompression stub is larger; while the "traditional" trick of making a shellscript that decompresses into /tmp/x and runs it is so ugly.) < 1278402194 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: (Anyhow, I'm sure you can get a "doesn't look at argv, just read+write loop" cat into the 100-150 byte range. My headers are 72 bytes, and you can stick 9 bytes of code into the padding in the middle anyway.) < 1278402346 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so basically < 1278402365 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sequence is non-deterministic for [[a]] < 1278402384 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :uh, what? < 1278402390 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :every Haskell function is deterministic < 1278402433 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :each sublist in the output becomes a non-deterministic value of a new non-deterministic sequence... represented determinnistically as a [[a]] < 1278402442 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :coppro: simulated, of course. I use non-deterministic loosely. < 1278402458 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :s/output/input < 1278402467 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :how is this non-deterministic at all? < 1278402476 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :okay... here's what I'm saying < 1278402506 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :let's say the input to the sequencefunction is a sequence x(n) < 1278402511 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :and the output is y(n) < 1278402541 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :y(n) = [x(1), x(2), x(3), x(4) ...] < 1278402577 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell sequence $ [[1,2],[3,4],[5,6]] < 1278402579 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[[1,3,5],[1,3,6],[1,4,5],[1,4,6],[2,3,5],[2,3,6],[2,4,5],[2,4,6]] < 1278402604 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :should start at zero, acutally. So that's < 1278402614 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :[x(0), x(1), x(2)] < 1278402682 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :x(0) = 1 or 2; x(1) = 3 or 4; x(2) = 5 or 6 < 1278402744 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's a simulation of a non-determinstic sequence that constructs every possible deterministic sequence that it represents. < 1278402755 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I don't think I'm making any sense. < 1278402944 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell do {nd_list <- sequence [[1,2,3],[4,5,6]]; nd_list} < 1278402946 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[1,4,1,5,1,6,2,4,2,5,2,6,3,4,3,5,3,6] < 1278402959 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that flattens it. < 1278402978 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :join $ sequence [[1,2,3],[4,5,6]] < 1278402986 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell join $ sequence [[1,2,3],[4,5,6]] < 1278402993 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell :t join < 1278403001 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... :o < 1278403007 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it broke. < 1278403024 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell :t join < 1278403035 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :[00:52:11] I don't think I'm making any sense. <-- this < 1278403045 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ha. < 1278403070 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's basically how the monadic operations of [] a represent non-determinism < 1278403089 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sequence takes one representation and flips it around in a way. < 1278403187 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so instead of having a list where each sub-list is a non-deterministic value < 1278403199 0 :clog!unknown@unknown.invalid QUIT :ended < 1278403200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1278403217 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you now have a list where each sub-list is a possible determinized list. < 1278403249 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :of the original non-deterministic sequence < 1278403258 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1278403265 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :fucking English < 1278403282 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :natural language makes technical things hard to explain. < 1278403291 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: I was thinking of "completely ordinary" executables, not using parts of the ELF header for code. :-) < 1278403306 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :But everyone's doing that! < 1278403306 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: But I did misremember that the headers were around 120 bytes or so. < 1278403472 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell do {x <- [1..9]; return $ [x, x+1, x+2]} < 1278403473 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7],[6,7,8],[7,8,9],[8,9,10],[9,10,11]] < 1278403501 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: They're about that size if you have more than one segment, which you will in a "completely ordinary" executable (one read-write for data, one read-executable for code). < 1278403515 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :!haskell do {x <- [1..9]; [x, x+1, x+2]} < 1278403516 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[1,2,3,2,3,4,3,4,5,4,5,6,5,6,7,6,7,8,7,8,9,8,9,10,9,10,11] < 1278403535 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: (Also mine would be 80 bytes already, I just interlaced the last 8 bytes of the file header with the first 8 of the segment header.) < 1278403535 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Well, you probably don't need a non-code segment for cat < 1278403538 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmmm.... < 1278403544 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :just got an idea < 1278403562 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :if you newtype'd list < 1278403575 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you could implement a monad for digital signal processing that makes things like delay-lines easy to do. < 1278403600 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm, well not newtype actually < 1278403627 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Well: < 1278403628 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :htkallas@pc112:/users/htkallas/tmp$ nasm -Ox -o cat -f bin cat.asm ; chmod u+x cat < 1278403628 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :htkallas@pc112:/users/htkallas/tmp$ echo 'foo, bar, baz' | ./cat < 1278403628 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :foo, bar, baz < 1278403628 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :htkallas@pc112:/users/htkallas/tmp$ ls -l cat < 1278403628 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :-rwxrw-r-- 1 htkallas htkallas 110 2010-07-06 10:06 cat* < 1278403669 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :do { (dval, x) <- signalWithDelay 3 [1..]; return $ dval+x} < 1278403694 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: Doesn't take arguments, I take it :-) < 1278403696 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :psh, wtf am I saying. You don't even need to define a new type. < 1278403717 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Right. Haven't tested it much either, might have bugs. Might also be a bit overly pessimistic as to whether a syscall's argument registers stay intact; I think they might, which would save some bytes. < 1278403723 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking POSIX-compatible < 1278403727 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :signalWithDelay :: [a] -> [(Maybe a,a)] < 1278403732 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :signalWithDelay :: Int -> [a] -> [(Maybe a,a)] < 1278403754 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: I don't think that's guaranteed anywhere, but I'm not sure. < 1278403783 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :signalWithDelay :: Int -> Int -> [a] -> [([Maybe a],a)] < 1278403804 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Somebody claimed it was, and the syscall handling seemed to suggest they were, but I didn't see it exactly spelled out in the docs anywhere. The syscall number is lost, at least, since that's the return value register. < 1278403808 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :first int is distance back, second int is size of the delay line. < 1278403905 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Some architectures clobber the syscall argument registers, according to some glibc bug report I found when googling for whether x86-32 does. < 1278403941 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :delayedSignalWithDefault :: Int -> Int -> Int -> [([a],a)] < 1278403949 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :to get rid of the Maybe. < 1278403975 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :delayedSignalWithDefault :: a -> Int -> Int -> [([a],a)] < 1278403976 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1278404226 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1278404277 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :do you think there would be any real harm in making tuple types a superset of all algebraic data types with a single constructor that fits the tuple? < 1278404309 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :data List = Cons a [a] | Empty < 1278404344 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :list = Cons 0 $ Cons 1 $ Cons 2 $ Cons 3 < 1278404362 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :(x, xs) = list < 1278404384 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :congratulations, you just described Haskell lists < 1278404394 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :well, what I'm saying < 1278404408 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :is there any reason to make tuples distinct from named algebraic constructors. < 1278404420 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1278404437 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :why couldn't tuples simply represent /any/ constructor for pattern matching? < 1278404450 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :any constructor that matches, that is. < 1278404458 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: 101 bytes if I assume the regs are saved, and it seems to work. < 1278404465 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so for example < 1278404487 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: Of course it may work, but that doesn't mean it's ABI-guaranteed :-) < 1278404495 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :a value of type (a, [a]) would contain the set of [a] values constructed via (:) < 1278404526 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: There were some .pdf slidesets that seemed to suggest it was. :p < 1278404553 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but a value of type (a, [a]) would not include values of type [a] constructed from [] < 1278404560 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :because it does not match. < 1278404603 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :[a] values constructed from [] could be type () < 1278404650 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: http://sprunge.us/LhDM if you want to see them codes. < 1278404676 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so... < 1278404702 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :instead of writing functions that operate on specific named types of specific typeclasses < 1278404724 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :you could instead write functions that operate on any algebraic data structure constructed with a certain signature < 1278404747 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :*named types /or/ specific typeclasses < 1278404846 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it would almost be a sort of weak typing < 1278404858 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: I note no error checking < 1278404868 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: Where's your buffer size? < 1278404891 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :under that typing system, (1,(2,(3,()))) would be equivalent to [1,2,3] as well as any other algebraic value constructed the same way. < 1278404919 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: It's the same as the buffer's address. You know, to save bytes. < 1278404930 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: (That's why I loaded the program to a reasonably low address.) < 1278404934 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :>_< < 1278404947 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: ha. < 1278404960 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And there *is* error checking of sorts; if the read fails, it'll exit. < 1278404968 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :If the write fails, though, then it won't bother. < 1278404968 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :imagine if the address was 1 billion base 10. :) < 1278404991 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :But with the correct error code? < 1278405013 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, no, of course not. That would mean I'd have to distinguish between errors and end-of-file. < 1278405034 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Exactly :-) < 1278405048 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Your cat is but a poor approximation of a cat < 1278405069 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: You can possibly add a "sets bl" into some proper spot to get return code 0 of the program when it hits EOF, and 1 when an error occurs. < 1278405092 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The worst part of the cat is that it won't read files specified as arguments, admittedly. < 1278405149 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Also, write may write less than it's given; you need to loop it until it's done < 1278405158 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"Nah." < 1278405181 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'll stick to GNU cat; it may be bloated but at least it works! < 1278405205 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :[] :: (), EOF :: (), () :: () < 1278405250 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :[] :: [a], EOF :: ExampleStreamType a, () :: () < 1278405287 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: The decompression stub I have now writes the whole compressed code into a FIFO before starting to read from bzcat; it works because Linux's pipe buffers are 64k nowadays. I used to have three processes (one child to exec bzcat, one child to loop-write bytes into its stdin, the parent to read until EOF and then run the code) but that took far too many bytes; to get it under 256 bytes I had to cut some corners. < 1278405336 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Hackety-hack < 1278405372 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Another "nice" trick: I put bzcat's argv list at the very end of the program, because that way I don't need to explicitly put the terminating NULL pointer in the file, since what's after the program is zero-initialized data already. < 1278405475 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Lunchtime.) < 1278405488 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :More like breakfast time < 1278406154 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :bah... sockets in Haskell are not very well documented < 1278406246 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :http://yourfreedom.hmg.gov.uk/repealing-unnecessary-laws/repeal-the-2nd-law-of-thermodynamics-1 < 1278407075 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: I almost never manage to do any breakfast at home, so I have to do a 10:30 lunch here. < 1278407103 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Breakfast is the most important meal of the day etc < 1278407317 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Let's call what I just ate a "breakfast", then. < 1278407328 0 :yiyus!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1278407389 0 :MigoMipo!~John@84-217-10-228.tn.glocalnet.net JOIN :#esoteric < 1278408029 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1278408121 0 :Gracenotes!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1278408396 0 :yiyus!~124271242@je.je.je JOIN :#esoteric < 1278408447 0 :Ilari_antrcomp!~user@2002:5870:32ae::1 JOIN :#esoteric < 1278409639 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1278409652 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1278410007 0 :wareya!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1278410106 0 :wareya!~wareya@cpe-74-70-142-220.nycap.res.rr.com JOIN :#esoteric < 1278410499 0 :wareya!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1278410633 0 :wareya!~wareya@cpe-74-70-142-220.nycap.res.rr.com JOIN :#esoteric < 1278412524 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1278413365 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1278413375 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1278413822 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1278414732 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1278414734 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1278414744 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1278415312 0 :DH____!~DHeadshot@cpc2-woki2-0-0-cust667.glfd.cable.ntl.com JOIN :#esoteric < 1278415478 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I think I program a little better after being drunk < 1278415482 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :not while drunk < 1278415486 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :but after I have sobered up < 1278416154 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1278416639 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :where are o(klopol|erian) < 1278417058 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1278417300 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1278417567 0 :augur!unknown@unknown.invalid QUIT :*.net *.split < 1278417569 0 :cheater99!unknown@unknown.invalid QUIT :*.net *.split < 1278417761 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1278417761 0 :cheater99!~cheater@ip-80-226-15-173.vodafone-net.de JOIN :#esoteric < 1278417953 0 :augur!unknown@unknown.invalid QUIT :*.net *.split < 1278417954 0 :cheater99!unknown@unknown.invalid QUIT :*.net *.split < 1278418480 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1278418535 0 :cheater99!~cheater@ip-80-226-15-173.vodafone-net.de JOIN :#esoteric < 1278421836 0 :maxman!~chatzilla@84-74-130-245.dclient.hispeed.ch JOIN :#esoteric < 1278421901 0 :elliottcable!unknown@unknown.invalid NICK :Paws < 1278421911 0 :Paws!unknown@unknown.invalid NICK :elliottcable < 1278421921 0 :maxman!unknown@unknown.invalid PART #esoteric :? < 1278423412 0 :MigoMipo!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1278425490 0 :nooga!~nooga@maverick.aircity.pl JOIN :#esoteric < 1278426120 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: sorry for disappearing, my battery was depleted < 1278426282 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, hm lets see < 1278426303 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : nooga, wtf is http://plfoto.com/zdjecie,inne,wkrotce-bal-sie-tutaj-rozpocznie,1549252.html ? Some sort of post-apocalypse world? < 1278426307 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : nooga, and tell your dad I think your images are awesome. And I love HDR. < 1278426311 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, ^ < 1278426992 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1278427292 0 :lifthrasiir!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1278427301 0 :lifthrasiir!EAyN3mHl@haje12.kaist.ac.kr JOIN :#esoteric < 1278427323 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :not post-apocalypse but post-soviet :D < 1278427461 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :http://keygenjukebox.com < 1278427463 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :http://keygenjukebox.com < 1278427463 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :http://keygenjukebox.com < 1278427471 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :nooga: hahah < 1278427474 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :nooga: it's the same. < 1278427510 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yeah :f < 1278427592 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Hm wow. Any of you have a classical PC keyboard nearby. Not low profile that is. And a rubber band. < 1278427592 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Put the rubber band around ESC-F12, wait while it slides up the keys... Try to predict which way it flies. < 1278427609 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it was like soviets took polish manors and turned them into big farms & stuff and then left < 1278427626 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :so there are some ruined places like this < 1278427801 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no. < 1278427801 0 :wareya!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1278427825 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :nooga: it's not like they weren't pigstalls before the russians came < 1278427856 0 :wareya!~wareya@cpe-74-70-142-220.nycap.res.rr.com JOIN :#esoteric < 1278427879 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :pardon? < 1278427943 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :the royals getting drunk and high all the time for the money they got from traders for selling off their influence < 1278427969 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :you can only have so many drunken parties in a nice place before it turns into a crackhouse < 1278427996 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://cutr.pl/5ec68700f0 < 1278428056 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :uhm < 1278428156 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :do you truly think if the polish gave a shit about their country this stuff would like that *today*? < 1278428174 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :25 years after overthrowing the soviet regime? < 1278428213 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster: no. <-- ? < 1278428240 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: i refuse to be a slave executing your rubberband schemes. < 1278428254 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cheater99, XD < 1278428288 0 :cheater99!unknown@unknown.invalid PRIVMSG #esoteric :>