< 1258934419 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: what i want is copy-on-write, basically < 1258934423 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :even if /env/foo = $home/env/foo < 1258934426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if I write to /env/foo < 1258934429 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it should < 1258934433 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cp $home/env/foo /env < 1258934436 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and modify it < 1258934437 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :see? < 1258934467 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :not exactly, i see what you are saying but i think you are misunderstanding the semantics of bind a bit < 1258934478 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I know what they are in this instance < 1258934485 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :give me a sec to do a couple tests locally so i can make sure to give you accurate response < 1258934489 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's impossible < 1258934491 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm 90% sure < 1258934498 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it SHOULD be possible < 1258934502 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: to explain WHY < 1258934510 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/blah/env is on disk < 1258934512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it is just some files < 1258934512 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :the problem with what you described doing was that you didnt have a 'poop' in /env previously, right? < 1258934513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for instance < 1258934518 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/blah/env/cc is 8c < 1258934519 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :now < 1258934523 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this is bound to /env < 1258934528 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you then do < 1258934536 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :echo -n gcc >/blah/env/cc < 1258934541 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then /env/cc is gcc, too < 1258934542 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :BUT < 1258934547 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you do, in a shell session < 1258934551 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :% cc=somecciwanttouserightnow < 1258934554 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it'll modify /env/cc < 1258934558 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so, /env/cc will be a new file < 1258934562 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :contents somecciwanttouserightnow < 1258934566 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and /blah/env/cc stays as gcc < 1258934572 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :modifying /blah/env/cc now does nothing to /env/cc < 1258934577 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because you've overridden it < 1258934580 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :see? < 1258934595 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :id agree with you, i was still trying to analyze the example you gave above and explain its behavior < 1258934609 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i understand it, it's very simple < 1258934615 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but for this case it's wrong :P < 1258934619 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :oh, i thought it was something unexpected < 1258934681 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :see i think the issue is that you are wanting to make bind 'synchronize' different files, but it doesnt do that, its basically just rewriting a path name < 1258934756 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i know that < 1258934760 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm not trying any synchronisation < 1258934761 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sigh < 1258934764 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this is pointless < 1258934776 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1258934784 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because you never understand :| < 1258934797 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :you should be more patient with people who arent as smart as yourself, im sorry < 1258934805 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i dont even understand what it is im not understanding, though < 1258934814 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i didn't ever claim you weren't as smart < 1258934822 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :im making that claim < 1258934913 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :anyway - there is the core issue of /env not synchronizing, which i understand and is lame - im not following exactly what you need/want bind to do that it isnt < 1258934962 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1258934964 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1258934976 0 :pikhq!unknown@unknown.invalid QUIT :"Java user signed off" < 1258934994 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: i'm itching to make my own plan 9-alike < 1258935001 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because plan 9 doesn't go far enough :P < 1258935006 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :not nearly far enough < 1258935015 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :specifically, I'd totally redesign the c language < 1258935018 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so it's filesystem based < 1258935025 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :files uber alles, memory must die! < 1258935046 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah i have similar ideas, trying to recreate most of an OS environment via synthetic 9p fileservers < 1258935062 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :int foo() { return 42; } → /proc/##/procs/foo < 1258935064 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :the plan9 kernel doesnt use 9p to talk to itself internally < 1258935070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you could execute that via the shell < 1258935120 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: did you see that i'm writing some plan 9-inspired core utilities for linux? < 1258935122 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in go < 1258935132 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :part of uriel's project < 1258935147 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah i noticed that and was gonna ask if you are hosting that code anywhere < 1258935160 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :also, tracking your example above, are you sure the behavior you want isnt bind -b rather than bind -a? < 1258935163 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not yet, but i can send you a tarball of the finished commands and a mkfile if you want < 1258935166 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: dunno < 1258935182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i have cat, echo, false, mkdir, pwd, seq and true done and am working on ls and vis, fwiw < 1258935185 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i think when i told you that you wanted bind -a i was misunderstand what you meant by 'writes go to /env' < 1258935203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i can send along ls too, but vis is totally broken atm < 1258935217 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :because once you bind -b something on top of /env you still read and write from /env as usual within that namespace < 1258935219 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ls works, i just need to implement another gob of functionality before it's complete < 1258935231 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i have no version control atm, should prolly add some but meh < 1258935327 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh, i didn't explain what vis is < 1258935332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's from later unices < 1258935339 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :basically it's cat -v/-e as a separate program < 1258935354 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah its mentioned in the cat -v paper isnt it? < 1258935356 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1258935362 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :for 'visible' < 1258935364 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for some reason it's file ... there < 1258935367 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with mine it's [ file ] < 1258935376 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just as cat shouldn't make things visible, surely vis shouldn't concatenate? < 1258935382 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1258935402 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(welcome to rebuttals to that, btw — a lot of unix progs take a variable number of files and it's mostly a bad idea) < 1258935429 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my mkdir does it because there's no "cat" there, it's creating; my ls does it because once it works properly, it'll prepend the path to each entry in the listing like plan 9 ls; you can't duplicate that without it < 1258935432 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but vis? < 1258935438 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :its amazing how much you find even in the core basics of something like unix/C stdio how much weird shit and corner cases there are < 1258935452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :like? < 1258935462 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(i'm curious of your opinion on the implicit catting, btw) < 1258935463 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :behavior of stdio buffers and whether they need to be fflush() < 1258935516 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :im not much of a purist, i guess it seems to me that allowing vis to take multiple file inputs is basically just making it analogous to the fact that lots of command line tools do, as you mentioned < 1258935562 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :but it also doesnt seem to make much of a difference because after all you can always cat foo bar biz | vis < 1258935577 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah, but can you think of a good reason to take multiple files? < 1258935595 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a priori < 1258935607 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :only that random users may attempt to use it that way 'by instinct/analogy' with cat < 1258935613 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a priori, I said < 1258935624 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :philosophically, i dont believe in synthetic a priori propositions < 1258935628 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :so i ignored that < 1258935631 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :neither does your mom. < 1258935638 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i just meant "without reosrting to historical justification" < 1258935640 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*resorting < 1258935700 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :um, slightly greater flexibility for use in some scripting contexts? nothing that strikes me as actually important or worth changing your mind over < 1258935785 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::| < 1258935792 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i was expecting a justification based on unix style < 1258935793 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :honestly i think the 'antisymmetry with cat' argument from historical context is a pretty good reason to stick with your idea < 1258935895 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ok, from unix style: cat, grep, sed, and probably several others all accept multiple files as input < 1258935904 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :on the command line that is < 1258935915 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no, modern cat/grep/sed do < 1258935924 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i quoth < 1258935926 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also < 1258935928 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cat doesn't count < 1258935933 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cat is meant to concatenate files duh < 1258935934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://man.cat-v.org/unix-1st/1/ < 1258935939 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :go find me a non-cat, non-cp example < 1258935970 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :um, and non-mv < 1258935998 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i totally disagree with what i interpret to be your implicit premise < 1258936006 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :eh shaddup < 1258936013 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :namely, that unix 1st edition implements the unix design principles more thoroughly than the later unices < 1258936022 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :unix style < 1258936024 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is not unix implementation < 1258936026 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is my point < 1258936042 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i would say unix style is defined by the evolved practices, and certainly with say unix v7 having the heaviest weighting < 1258936052 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :because at&t unix v7 is imo the most important OS release ever probably < 1258936060 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no way dude, v7 has pcc < 1258936071 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it has chroot < 1258936071 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :it introduced the Bourne Shell and C stdio library < 1258936074 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ioctl < 1258936076 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :IT HAS IOCTL, mycroftiv < 1258936079 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i o c t l < 1258936081 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i rest my fuckin' case < 1258936089 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :v7 was the death of unix. < 1258936100 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well, in that case id take Plan 9 as the definitive model of unix style < 1258936107 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :look < 1258936109 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :stop using implementations < 1258936115 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm asking for arguments from the principles of unix style < 1258936120 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :since after all it was Pike who wrote the book, and was the main designer of plan 9 < 1258936123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :by analogy to their judgement on other aspects < 1258936137 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :principles are implicit in implementations < 1258936142 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :stfu < 1258936147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :implementations are always imperfect < 1258936158 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :so are principles < 1258936168 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :which is irrelevant, but was GREAT as a snappy debating point < 1258936200 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :can you just argue from analogy to principles or stfu :P < 1258936226 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ok, heres a semiprincipled argument < 1258936238 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :many unix command line tools are basically 'stream' tools < 1258936250 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :the operate on a stream of input and produce a stream of output, and they dont care about the origin < 1258936266 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :the files given on the command line just determine 'what the stream is' < 1258936274 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :by that argument no cmd should take file args < 1258936276 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just do cmd a < 1258936400 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bar Binary < 1258937128 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :What if I had < 1258937140 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ld :: Object -> Object -> Object (isomorphic to [Object] -> Object) < 1258937141 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :? < 1258937152 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That way, I could have compiling and linking in one stage, and still link files of separate languages. < 1258937162 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That is, cc foo.c bar.c -o blah.o < 1258937168 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You could then do ./blah.o if it has main() < 1258937172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or < 1258937175 0 :AnMaster!unknown@unknown.invalid QUIT :Network is unreachable < 1258937179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :go foo.go bar.go -o blahgo.o < 1258937182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Then < 1258937191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ld blah.o blahgo.o -o final.o < 1258937194 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$ ./final.o < 1258937196 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sweet! < 1258937196 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$ < 1258937219 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :that sounds cool, i have no clue what the technical details/issues of implementation are though < 1258937220 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cc would of course be able to link in other objects, too (using library functions from ld) < 1258937225 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so, you could do < 1258937234 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$ cc foo.c bar.c /lib/blah.o -o prog.o < 1258937242 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :All object files, libraries and binaries are of the same format. < 1258937247 0 :FireFly!unknown@unknown.invalid QUIT :"Later" < 1258937256 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So you have one simple format and some functions to create that format, provided by ld. < 1258937276 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ld itself is just a thin wrapper for making a new object, adding n objects to it, and finalising it. < 1258937312 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :that sounds sensible enough i feel there must be a catch < 1258937315 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :An "unld" would also be fun: if ld writes out where the individual symbols are from, you could split it into N .o files < 1258937347 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: normally libraries are archives full of multiple .o files; using a symbol from one .o includes that whole .o in the linked program < 1258937363 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah, im aware of that < 1258937365 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: with this system, either it'd have to include the whole library even if you just use a function, or the linker would have to analyse the machine code < 1258937372 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :to see what other symbols each symbol references < 1258937372 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :that causes some annoyances in plan9 porting because it uses static linking < 1258937380 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :so huge libraries cause annoying binaries < 1258937384 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1258937396 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :You could have the object format store the list of symbols each symbol uses < 1258937399 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, unless the library files include tags to denote data/function (bad bad bad) < 1258937405 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :and only link in symbols needed < 1258937408 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it'd have to use a heuristic to do dependency analysis < 1258937416 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: oh, that's a good solution < 1258937515 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :lies. It came from me :P < 1258937555 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :another thought is: from conway's law, we can derive that the fewer passes in a compiler the better < 1258937567 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because an N-pass compiler is-as-if produced by an N-group team < 1258937577 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and behemoth teams famously produce terrible software < 1258937608 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so the question is, can we make the c dialect compileable simply and elegantly with one pass? < 1258937642 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and since cc uses object-functions to "link" (basically it just compiles every file to one, adding as it goes along), you'd be able to compile and link an entire program in one single paass < 1258937646 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*pass < 1258937655 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :A C file can be compiled in a single pass < 1258937667 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes, but it's more convenient to have multiple passes, generally < 1258937715 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i wonder how fast a one-pass, self-linking c-sideset (subset and superset) compiler could be < 1258937720 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :almost certainly faster than Go's fast compiler < 1258937736 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i bet something like 100 kloc in, oh, 3 seconds? < 1258937743 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :on a moderately fast machine that is < 1258937752 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ignoring io, prolly < 1258937774 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :just checked, clang is single-pass < 1258937802 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: so clang can compile /dev/stdin without reading all of it first? < 1258937808 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :theoretically < 1258937855 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: It actually waits for the whole file for code generation < 1258937869 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right, but theoretically < 1258937875 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there's no obstacle to it other than it operating on a string < 1258937880 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but parsing and semantic analysis are one pass, and could be done without the whole file < 1258937885 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :right < 1258937887 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1258937890 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that sounds like 2-pass, then < 1258937906 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :parsing and code generation, loosely < 1258937918 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :It only passes over the actual text once < 1258937927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't really count < 1258937933 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :imo < 1258937938 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but it won't give you anything until it's done (note, however, that there is some work towards a REPL) < 1258937947 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a true 1-pass compiler does all its work without looking over the code twice < 1258937954 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :how does this relate to the goal of producing the best quality (by whatever metric) output from the compiler? < 1258937967 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :each block of code comes in, it's parsed, analysed, and it generates the code < 1258937969 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and goes onto the next bit < 1258937977 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: The problem with that is that it loses optimization opportunity < 1258937984 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: it doesn't, but the compiler would be much simpler and elegant < 1258938000 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :optimising the libc and the like is far more rewarding than trivial compiler optimisations < 1258938007 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I heard a really good quote from rob pike or someone about this < 1258938008 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lemme find it < 1258938045 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1258938047 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'll paraphrase < 1258938088 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"(some unoptimised, redundant code; trivially optimised) This can be optimised by the compiler into: (the optimised version of this code) The latter snippet runs faster and is easier to read. Optimisation only gets you the former, and it makes the compiler more complex." < 1258938108 0 :calamari_!n=calamari@ip72-211-145-161.tc.ph.cox.net JOIN :#esoteric < 1258938109 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the only worthwhile optimisation is that with a big gain that can't be done easily by the programmer < 1258938127 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric := very few < 1258938179 0 :calamari_!unknown@unknown.invalid NICK :calamari < 1258938218 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ive never actually seen any meaningful benchmarks of the efficiency of code output by various compilers < 1258938248 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a truly 1-pass c compiler would be interesting, it'd probably be written in yacc+c or whatever < 1258938254 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :possibly a yacc derivative that's "lighter" < 1258938263 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i.e. meshes better with C, for heavier processing programs < 1258938270 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it'd be almost literate in a way (@mycroftiv :P) < 1258938286 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"here is some syntax, and here is the corresponding code' < 1258938289 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*code" < 1258938293 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: There's another type of useful optimization < 1258938337 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Do continue. < 1258938338 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :An optimization that depends on the platform < 1258938348 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Like? < 1258938359 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You mean like substituting some instructions for a faster one on the CPU? < 1258938364 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1258938368 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That should be done when generating the instructions in the first place, really. < 1258938370 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :or loop unrolling may be good on some platforms and bad on others < 1258938381 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Irrelevant; it's mostly useless. < 1258938400 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The gains aren't very large, and when they are this is clearly ugly performance code; unrolling it explicitly would show the intent. < 1258938430 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, c isn't compilable in one pass, if you mean cpp+c, which most people do < 1258938447 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Why not? < 1258938456 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because the standard says that cpp MUST be done as a separate pasas. < 1258938458 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*pass < 1258938468 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: No, it says they must be done as if they were separate passes < 1258938499 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :There's the wonderful "as-if" rule < 1258938514 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hooray, tangled logic ahoy. < 1258938527 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Basically it'd end up reading the file and storing it, then going over the results. < 1258938529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not really 1 pass. < 1258938560 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :No, a compiler can run the preprocessor at the same time that it does normal tokenization, like clang does < 1258938578 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :if it sees an identifer during lexing, it checks it against macros and possibly does substitution < 1258938592 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :same goes for directives < 1258938612 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, eh. < 1258938613 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Maybe. < 1258938617 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :how are you going to handle a forward goto in one pass? < 1258938639 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :If we say one pass as generating asm, then simply use a label. < 1258938650 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Otherwise, let the linker do it. < 1258938655 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :If it includes linking? < 1258938658 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'll have to think. < 1258938667 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :you can't do it truely in one pass < 1258938684 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Actually, maybe you could... hmm. < 1258938714 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(The simple answer is, of course, to simply leave a note and tie them up at the end; that's not "really" 2-pass, and it'd be such a minor step.) < 1258938714 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but you can simply put it in a list of "unknown labels" and then when you see the label, adjust all the forward gotos < 1258938722 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or that, yep. < 1258938737 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Either way, you still have to wait a little past the goto to generate code < 1258938758 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, sure; you can't generate code for every character, either. < 1258938764 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :C++ templates work similarly (/me ducks) < 1258938771 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Just as you have to parse ahead. < 1258938786 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ehird: point taken hehe < 1258938786 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, any forward goto more than about 20 lines from its destination is eek! < 1258938793 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Esoteric language coming on... :P < 1258938806 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Code for each character? < 1258938811 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1258938812 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's called Brainfuck with a different looping structure. < 1258938820 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that's what I was thinking too :/ < 1258938827 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Like, say, any ascii char above n has n taken away from it < 1258938829 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and is the same as < 1258938832 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[ the next n chars ] < 1258938843 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :actually, you could do it in regular BF < 1258938844 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :since every char is one instruction... < 1258938849 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: what would [ compile to? < 1258938861 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: A conditional jump to a thunk < 1258938866 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1258938871 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cheating < 1258938876 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :you could do the same with forward gotos, actually < 1258938885 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that incurs a runtime penalty < 1258938891 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :backwards and forward gotos should be the same in the result < 1258938904 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: That's just unecessary optimization :P < 1258938910 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no, it's not < 1258938916 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's not deliberately incurring a penalty when it's quite simple not to < 1258938919 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :note the sarcasm < 1258938926 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it was invisible < 1258938927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :brb < 1258938935 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :how was it invisible? There was a :P < 1258939555 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :back < 1258939708 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway. < 1258939738 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So! < 1258939800 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That light yacc sounds fun. < 1258939914 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Also: Grr include files including include files is irritating. < 1258939978 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"In practice, #if is almost always followed by a variable like ‘‘pdp11.’’ What it means is that the programmer has buried some old code that will no longer compile." < 1258939978 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :—A New C Compiler, Ken Thompson < 1258940026 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1258940074 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm, that paper warns against using the cpu's call instruction < 1258940088 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but then: "The first three compilers built were for the National 32000, Western 32100, and an internal computer called a Crisp. These compilers have drifted into disuse. Currently there are active compilers for the Motorola 68020 and MIPS 2000/3000 computers." < 1258940093 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so who knows what the situation is on x86 < 1258940101 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :although < 1258940104 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: does 8c do that? < 1258940107 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :same compiler suite < 1258940131 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :umm lemme scan back < 1258940144 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: does 8c produce the x86 CALL instruction < 1258940148 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or does it just JMP < 1258940166 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :8c + an x86 dissembler will answer this < 1258940176 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*disassembler < 1258940177 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :fuck if i know, i can make it spit out ASM though, got a test case? < 1258940222 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo() < 1258940223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{ < 1258940223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : return 42; < 1258940223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :} < 1258940224 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : < 1258940224 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :main() < 1258940225 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{ < 1258940227 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : return foo(); < 1258940229 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :} < 1258940231 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :compile with -N < 1258940233 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or it might be inlined < 1258940237 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :/kick ehird < 1258940246 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: were you trying to talk over those lines? < 1258940249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no, i didn't think so either. < 1258940281 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pastebins are useful when there is channel activity or when there are so many lines that it'd obstruct the channel and be slow to send < 1258940299 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nine lines in an at the moment very slow channel is not either < 1258940414 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :man, I've been reading too much bad grammar when I start to get annoyed at people on IRC :( < 1258940433 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: what, for bad grammar? what error did i make? < 1258940441 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"in an at the moment very slow channel"? < 1258940449 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's a stylistic choice, descriptivist! < 1258940451 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1258940452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :prescriptivist < 1258940454 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yeah, that twigged me somewhat. I honestly don't care though, it's IRC. < 1258940474 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :it's just that I'm reading Internet short stories at the moment, and it can be a bit of a slog < 1258940479 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :CALL,foo+0(SB) < 1258940483 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :when i say it out aloud it's rhythmed like that, and "in an, at the moment, very slow channel" doesn't convey this well < 1258940488 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: right < 1258940498 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ACTION resisted the urge to paste the whole ASM output ;) < 1258940500 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so maybe CALL beats handling JMPs yourself on 386 < 1258940504 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or maybe they just got lazy < 1258940510 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: why are you doing that? < 1258940527 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: That's a good question :/ < 1258940528 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you should read my short story, 'cept i haven't wrote it yet < 1258940652 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure call does a bunch of needless shit on x86 though < 1258940686 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :all you really need is to push a return address and jmp (caveat: you can't assume registers have the same value afterwards) < 1258940724 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(common solution: save the registers elsewhere and restore them; my suggested solution: use registers as a cache and temporary calculation area, not the sole place to find a value) < 1258940964 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :>;e < 1258940967 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :speak you fools < 1258940969 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*>:e < 1258941018 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :my level of expertise on compiler theory is limited to reading source code for the plan 9 compiler and vaguely understanding it, and a few hours fucking with some x86 emulator and simple asm programs < 1258941037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there's no 8i which is phooey < 1258941038 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :aka not enough bits to make a byte of useful information < 1258941046 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yea but just make shit up < 1258941047 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and guess < 1258941049 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and theorise < 1258941130 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :um, theres a great ken thompson interview which might have some ideas for you < 1258941140 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :let me see if i can find it and then pretend its me having them < 1258941191 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ug, google just found me: < 1258941203 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :www.realitywanted.com/.../1738-exclusive-interview-with-ken-thompson-of-make-me-a-supermodel < 1258941213 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :404 < 1258941214 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :clearly someone is invading ken thompson's namespace < 1258941228 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let's call ken kent hompson in future < 1258941232 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :kent@hompson < 1258941232 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i didnt follow the link, just appalled by the description < 1258941240 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :paste it < 1258941292 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :'ken thompson of make me a supermodel', that is all < 1258941298 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right < 1258941303 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Kent Hompson < 1258941376 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ok, found the interview at least - heres something he references, a paper that talks about creating optimization by testing all the possible algorithms that are equivalent he can discover randomly < 1258941421 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :he says that it generates 'indescribable and inhuman' code < 1258941450 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :eviiiiil < 1258941453 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :and he says he used the trick for some crazy optimizations himself, like precomputing multiplication shortcuts < 1258941457 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1258941476 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :short paste: < 1258941484 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: theorise with me about a "lighter" yacc, good if the code related to some syntax is long and involved; i.e. a full program, not just a parser < 1258941484 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric : On one case I used it for a compiler I’m writing for 68000 um, multiply takes thirty-two seconds no matter what. So, if you multiply something by three, thirty-two cycles. Those same thirty-two cycles, thirty-two adds, on this machine. < 1258941496 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lighter syntax (maybe mark yacc bits, not c bits), adds less cruft, etc < 1258941501 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :So, what a combination if you change a multiply into shifts and adds. Multiply by a constant with shifts and adds of, you know, the original thing. You’re going to always beat the multiply because, the multiply is implemented so badly on this chip and so what I did is write super optimizer, which tries all combinations of shifts and adds to generate, to simulate a multiply by constants between one and ten thousand or < 1258941512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"takes thirty-two seconds no matter what" < 1258941516 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lawl transcription error < 1258941528 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah for cycles < 1258941531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"and ten thousand or" < 1258941533 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :got cut off < 1258941548 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[01:59] ehird: mycroftiv: theorise with me about a "lighter" yacc, good if the code related to some syntax is long and involved; i.e. a full program, not just a parser < 1258941548 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[01:59] ehird: lighter syntax (maybe mark yacc bits, not c bits), adds less cruft, etc < 1258941582 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :um well what is the minimum task? < 1258941588 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :? < 1258941590 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :handling backaus naur forms or some shit? < 1258941597 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yacc < 1258941646 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :um, isnt that basically what yacc does? < 1258941704 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i thought parsing languages was basically about mapping them to backaus naur forms that define their grammar? < 1258941716 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm talking about a yacc derivative < 1258941721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the actual syntax parsing stays the same < 1258941731 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mainly the syntax differs < 1258941735 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :of the yacc files < 1258941751 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :to make it nicer to do things like c compilers as yacc files < 1258941754 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for long blocks of c < 1258941774 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ok, so not a ground up rewrite of yacc < 1258941787 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1258941792 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lemme come up with an example < 1258941817 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what is the file ext of yacc files in plan 9 < 1258941854 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :y.various stuff if thats what you mean < 1258941885 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :y.tab.c is what you give to the compiler < 1258941928 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ooh, cool idea me has < 1258941943 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you know my 1-pass-including-linking idea? < 1258941950 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let's say you give it multiple c files, now < 1258941967 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it compiles all of these (and thus links them in, as soon as it compiles a given bit) in parallel < 1258941978 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as long as the functions that operate on an object in the ld library are thread-safe < 1258941987 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :we can actually literally compile and link multiple c files in parallel < 1258942071 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1258942163 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :one issue here is when you have two symbols of the same name < 1258942167 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :trivially solved, however < 1258942172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :when one conflicts, list all of them < 1258942178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :don't say which one was first < 1258942195 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :one issue is if a symbol gets declared first < 1258942200 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then it is used by something expecting the other one < 1258942203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and this causes a type error < 1258942210 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :perhaps on every type error, we should check for conflicts first < 1258942212 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :you know, i think there is an interesting general principle about how parallelization can be aided by serialization of an orthogonal element < 1258942219 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that'd be simple and incur not much of a penalty < 1258942225 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and penalties on error conditions are irrelevant anyway < 1258942231 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: agreed? < 1258942257 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :im convinced but im not competent as an expert witness on compilers, as ive said < 1258942279 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :shaddap < 1258942291 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :if i can figure out how to get my #includes right and my mkfile works, im happy < 1258942306 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: Poor you, then; no #include in mine. < 1258942307 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Probably. < 1258942327 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#include might work, but probably something like #include stdio will be recommended. < 1258942332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Almost certainly no actual c preprocessor. < 1258942337 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i have no objection to that kind of simplification < 1258942347 0 :Asztal!unknown@unknown.invalid QUIT :Success < 1258942347 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so #include "foo.h" might not work < 1258942351 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or it might just scan for declarations < 1258942352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not sure < 1258942361 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but almost certainly not rampant inclusion of the contents < 1258942427 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: If there's multiple symbols of the same name there, are three possibilities: < 1258942443 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: Note that one may be added, code meaning to use the other one will be processed, then the other will be added. < 1258942449 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And the middle step may break horribly. < 1258942462 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Wait. < 1258942464 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :1) All but one or all of the symbols are static. This is probably the most difficult case < 1258942476 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I could just check for conflicts before adding any symbol, but that's a lot of overhead for such a common operation. < 1258942478 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And it's an exceptional case. < 1258942486 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: static as in static linking? < 1258942496 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: No, as in C static < 1258942499 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah, right < 1258942500 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :limited to a file < 1258942507 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :2) The non-static ones are inline symbols. You can freely use any one, because if they aren't identical it's UB < 1258942508 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm, how are those linked? < 1258942511 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :renaming them? < 1258942513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :to like __file__foo < 1258942519 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yeah, that would work fine < 1258942522 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no i mean < 1258942525 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :how is it done in practice < 1258942539 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Not 100% sure. They get a special type of linkage < 1258942547 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :weird. < 1258942584 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :A UUID prefix would work fine < 1258942590 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :or similar < 1258942593 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :since you'd be doing the whole file at once < 1258942601 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :and they don't need to be seen from outside < 1258942624 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :since you are making a compiler, are you going to put in the classic 'ultimate back door' described by thompson in his 'reflections on trusting trust' paper? you should < 1258942638 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :3) There is a conflict between non-static, non-inline symbols. This is an error as well < 1258942655 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: no. < 1258942668 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: It's possible static symbols are simply linked prior to the emission of the object file, but I don't think that's it < 1258942674 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://sprunge.us/jdXj ;; what hello world will probably look like in Plan Y (which I am tentatively naming my OS) C < 1258942690 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :thingies: void is implicit, to make writing procedures nicer < 1258942695 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :io lib is different, simpler < 1258942702 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#include syntax < 1258942713 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(procedures as opposed to functions) < 1258942723 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I know you're going to hate me, but you could go the C++ route for library headers e.g. #include < 1258942725 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :no extension < 1258942732 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :click the damn link :) < 1258942736 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I did < 1258942744 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: re linkage, doesn't apply to my case ofc when you're linking all things into one object < 1258942750 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: why include the needless <> < 1258942767 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: It does; the question is whether the symbol is visible in the .o or not < 1258942779 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Because then you're compatible with standard C < 1258942780 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: ah, as opposed to just having an address? < 1258942786 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yeah < 1258942787 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, i don't care < 1258942793 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm already not compatible by making void implicit < 1258942799 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and probably removing the parens in control structures < 1258942801 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :it's int, and it is implicit < 1258942816 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1258942818 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's void. < 1258942824 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because i said so < 1258942828 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's more logical that way < 1258942836 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a procedure has no return value; so there is no return type to specify. < 1258942839 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :no one will use your OS if you don't ship standard C :/ < 1258942848 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :feel free to ship a modified version as well < 1258942850 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: don't ship standard C; you mean like plan 9 doesn't? < 1258942860 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's mostly backwards compatible... "mostly" < 1258942865 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe in the c itself < 1258942868 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but definitely not in the libs < 1258942882 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you could argue that nobody uses plan 9 either, i could argue that i don't care; i'm a researcher < 1258942908 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: most "real" c is in ansi c anyway < 1258942909 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :btw, using clang may provide another headache for you < 1258942912 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in which case it will explicitly specify void < 1258942915 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's okay, i'm not going to < 1258942923 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1258942961 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :removing parens from control structures is a rather obvious and totally backwards compatible extension, surprised it isn't more common < 1258942963 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'd say that < 1258942966 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if validsize(x) < 1258942970 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is better than < 1258942972 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if(validsize(x)) < 1258942981 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(example shamelessly stolen from Notes on Programming in C) < 1258942986 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: No, it's int in standard C++ < 1258942988 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :*C < 1258943001 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(it's also int in C++, how coincidental) < 1258943003 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: you've already said that < 1258943011 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i already replied < 1258943018 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I know < 1258943027 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but then you said that most "real" C will explicitly specify void < 1258943058 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :btw, I'm not a fan of implicit int, implicit void, or implicit anything else < 1258943085 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :most real c will say < 1258943086 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :void foo() < 1258943088 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh, you mean main is int < 1258943091 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes, most things will do that < 1258943108 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :main is void in mine because there's no reason for it not to be; exit(1) vs return 1; is a dilemma that shouldn't exist. < 1258943115 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, void isn't really a return type < 1258943118 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you don't do < 1258943121 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :return ; < 1258943125 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and falling off the end is valid < 1258943125 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :you can! < 1258943128 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there is simply: < 1258943131 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no return value < 1258943137 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :retval name(args) { < 1258943138 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1258943140 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there is no return value < 1258943146 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so there is no return value type < 1258943157 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so we take the simplest, most terse route and omit the type for returnless functions < 1258943160 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :name(args) { < 1258943163 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :if you want my honest advice, don't make a C dialect. Either make something better than C, or standard C < 1258943168 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this also makes writing procedures, as opposed to functions to be used in expression context, nicer < 1258943178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :c is pretty nice for kernel programming. < 1258943179 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :C has such great features as C declaration syntax and the C preprocessor < 1258943226 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Perhaps you could try the proposed new C++ declaration syntax instead of the C one (yes I'm 100% serious) < 1258943241 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway, I'll disregard that advice as I've thought for surely at least a full weeks worth (i.e. 7*24 = 168 hours of thought) on OSs andp rogramming languages < 1258943245 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*and programming languages < 1258943253 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :C is the best language in which to write a Unix OS. < 1258943257 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: elaborate < 1258943267 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Trying to find the paper < 1258943291 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I think I'll do debugging symbols by simply having a key/value set attached to each symbol < 1258943333 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that way stripping debug info is easy to boot < 1258943344 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as well as any other auxiliary data < 1258943372 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: the declaration syntax put all the declarators in a linear order so that you could clearly see that something was, say a pointer to pointer to function returning pointer to array < 1258943388 0 :Slereah!n=Slereah@ANantes-259-1-89-111.w92-139.abo.wanadoo.fr JOIN :#esoteric < 1258943395 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: Just like Go, SPECS, etc. < 1258943404 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yeah < 1258943466 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: ah, they hadn't fully fleshed it out before it was dropped < 1258943472 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :don't care < 1258943474 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :summarise < 1258943484 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :note that i don't want to deviate too much from c in the actual meat of things < 1258943493 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :it's very un-c-like < 1258943495 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but far more readable < 1258943497 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://sprunge.us/jdXj just accentuates the differences, is all < 1258943544 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders what's a better way to express pointer-to-anything than void *, which is just a kludge < 1258943549 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but you could probably do it with i : int; j *-> int; k (int, char) -> int; // i is an int, j is a pointer to int, k is a function returning int < 1258943561 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :probably needs some fiddling < 1258943596 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :the issue of typeless objects is something i think deserves a huge amount more attention < 1258943603 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: my eyes tried to parse that < 1258943606 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and they glazed over < 1258943642 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: Indeed. If I ever get around to making a "real" language, typing will be the #1 concern < 1258943700 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my experience indicates that typing is overemphasised < 1258943727 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the main thing missing from most systems that spurs research into behemoth type systems is a generic-type capability < 1258943736 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :true enough < 1258943736 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so you can define a hash table working on any type, strongly-typed, etc < 1258943736 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i really started thinking about this more from learning 9p, because all of the real 'meat' of what goes on in a fs all happens in whatever is attached to the void* aux pointer < 1258943741 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you add that to something like C < 1258943744 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty close to being fine < 1258943761 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i would wager that most type errors are caught by a very simple system < 1258943767 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :true enough < 1258943772 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the ones that aren't are very rare < 1258943776 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :at least compared to other errors < 1258943785 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :But the trick is to make a complex and strong type system that is easy to use and does The Right Thing < 1258943789 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: elaborate < 1258943799 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: why? < 1258943804 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :complexity is never a virtue. < 1258943805 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Never. < 1258943827 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Not complexity for the sake of complexity; complexity as needed to reduce type errors while preserving ease of use < 1258943842 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ok the 9p protocol and its implementation in the standard libraries, all the 9p related structures are basically there for 'bookkeeping' on the protocol, they determine nothing about the content and behavior of the fs really, all of that is implemented... < 1258943858 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: But I postulate, and experience backs this up, that non-trivial type errors are rare. < 1258943863 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :via whatever structs and functions you create that manipulate the obects that the file->aux pointer points at < 1258943874 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Certainly time should be diverted away from catching them to more useful areas. < 1258943911 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: In a simple language like C, most typing errors are trivial < 1258943966 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :But the triviality of typing errors decreases as the complexity of the type system increases, unless some of that complexity is directed at making errors more trivial < 1258943982 0 :Slereah_!unknown@unknown.invalid QUIT :Success < 1258944051 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1258944067 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: I've used Haskell, dude. < 1258944085 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's pretty high at the top, and I can tell you that the type system hindered and bothered me a lot, and helped me surprisingly few times in comparison. < 1258944097 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And I'm not just some noob; I'm pretty damn good at Haskell's type system, and know how it increases expressivity. < 1258944107 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: and likewise for myself and C++ < 1258944110 0 :facsimile!unknown@unknown.invalid PRIVMSG #esoteric :how does it increase expressivity? < 1258944116 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :C++'s type system has nothing on Haskell's. < 1258944131 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :facsimile: type classes let you do things you can't do without it, for one < 1258944135 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I had a really good example, but I've forgotten it < 1258944143 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: It's getting there. < 1258944147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :basically, the static dispatch they do lets you condition on them (remember, I forgot) < 1258944153 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :increasing expressivity < 1258944172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: In complexity; not in power. Haskell's type system's power is derived solely from its pure functionality. < 1258944180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :C++ will never be purely functional; it cannot compete. < 1258944190 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Oh yes < 1258944210 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Oh yes what? < 1258944220 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Oh yes, as in "Oh, I misunderstood" < 1258944251 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :though C++'s type system is rather orthogonal to the fact that it generally doesn't have purely functional code < 1258944293 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: isn't that normally rendered "Oh, yes" < 1258944299 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :s/$/?/ < 1258944304 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: hey, does plan 9 ed let you do "a" inline? < 1258944310 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as in a full a with text on one line < 1258944312 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or do you have to do < 1258944312 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a < 1258944313 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1258944313 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :. < 1258944333 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Yeah, usually. But this is IRC and I've had too much bad grammar lately < 1258944342 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You've "had" it? < 1258944342 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ill check, i always do it on separate lines but i havent tested < 1258944360 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I've received too much of it. < 1258944395 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It strikes me that if http://doc.cat-v.org/bell_labs/pikestyle was about English, not C, it would be one of the best essays on style and typography ever written. < 1258944401 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(the joys of trying to determine whether a set of quotes is an actual quotation, emphasis, indicating a character thinking to themselves, or a badly-misplaced apostrophe know no bounds) < 1258944403 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :need to use separate lines < 1258944520 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: darn < 1258944531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that makes ed unsuitable as an irc correction language :) < 1258944566 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well, thats why sed was invented, wasnt it? time travelling irc-er wanted a good way to express revisions on the stream < 1258944595 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I've actually considered writing a script to apply sed corrections automatically < 1258944653 0 :facsimile!unknown@unknown.invalid PRIVMSG #esoteric :type class dispatch < 1258944685 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: how would you delete the last character of a line with sed? < 1258944692 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :My non-trivial sed is rusty. < 1258944708 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :s/.$//? < 1258944711 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not s. < 1258944723 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1258944727 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Who uses anything but s? < 1258944740 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Shush, you. < 1258944815 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :d is the delete verb if thats all you needed to know < 1258944821 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: Nope. < 1258944827 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how to select just the last char of a line. < 1258944837 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :.$ ? < 1258944872 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as a regexp? < 1258944876 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, yeah :P < 1258944886 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I will henceforth attempt to use sed commands other than s to apply corrections to my messages.§ < 1258944889 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/.$/d < 1258944917 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :How do you append inline with sed? < 1258944924 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I don't think you can easily... with sam it's easy. < 1258944926 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i/hello/ < 1258944958 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Wait, that /.$/d doesn't work. < 1258944959 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Queer. < 1258944965 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Meh. < 1258945199 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway. < 1258945242 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders if a better alternative to the 8c convention is arch/c. e.g., 386/c, mips/c. < 1258945251 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Along with 386/l, mips/l, etc.) < 1258945265 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Seems less distinctive and more verbose. < 1258945484 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is still poking at sed  < 1258945603 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i dont think you can operate on objects smaller than a line using the basic pattern space operations, have to use regexp < 1258945613 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"Name servers don’t scale well, for precisely the reason that the ARPANET name scheme doesn’t scale well: the name server must understand all possible name syntaxes." < 1258945613 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :— The Hideous Name, Rob Pike & P.J. Weinberger < 1258945614 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Shoot and a miss. < 1258945637 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"Name servers have problems on other levels, too. Who administers a name server’s database? If the database is not audited frequently much of the data will be obsolete, while if the controls are too onerous, people won’t bother keeping the database current. What does the database contain? Most name servers produce network addresses, but no single network reaches everywhere." < 1258945648 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: no biggie < 1258945671 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if I can append stuff after some other stuff or at the end of a line, if I can delete stuff anywhere in the line and if I can replace stuff I'm fine < 1258945679 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :all in one line, preferably with multiple operations per line possible < 1258946014 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :"The algorithm proceeds in two steps. First, we need to generate a number of equations to solve, then we need to solve them." ~Wikipedia < 1258946087 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i like the 2-step 'generate equations, then solve them' algorithm < 1258946136 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :A parable on the uselessness of find < 1258946139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :find . -name *.c < 1258946140 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :du -a | grep '\.c$' < 1258946161 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Admittedly the latter gives you a bunk column. You could trivially make a "tree" command to do the same as "find .".) < 1258946173 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: any progress on sedliness? < 1258946208 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :hm? was there a topic left open in relation to it? < 1258946260 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[03:08] ehird: if I can append stuff after some other stuff or at the end of a line, if I can delete stuff anywhere in the line and if I can replace stuff I'm fine < 1258946260 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[03:09] ehird: all in one line, preferably with multiple operations per line possible < 1258946269 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I haven't figured out how to append inline, and I haven't totally sussed deletion < 1258946273 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :oh, ok < 1258946278 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/.$/d doesn't seem to work < 1258946297 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :no it doesnt do what you want < 1258946308 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :that deletes everything < 1258946355 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :what i was saying was that the operations in sed other than s and y work on the whole-line level, they dont dig inside the line < 1258946420 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's shit. < 1258946425 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :In sam, /.$/d works fine. < 1258946513 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well, the stuff in sed that isnt using the s regexp substitution verb isnt supposed to be the same thing as what sam is doing < 1258946530 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Phooey. < 1258946545 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :For five points, figure out how to use sam to script /dev/stdin→/dev/stdout. :P < 1258946661 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :* ! cat /fd/0 >>/fd/1 < 1258946675 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: nono, I mean as a command < 1258946677 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so I can do < 1258946690 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$ echo 'butt' | samscript 'i/hello/' < 1258946696 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*echo butt < 1258946944 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :why not just 0,$ p < 1258946964 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :? < 1258946982 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what's that do < 1258946987 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :prints everything < 1258947034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$ printf 'i/hello\\n/\n0,$p\n' | sam -d 2>/dev/null < 1258947034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hello < 1258947034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$ < 1258947035 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that works < 1258947117 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :thats a very strange hello, world < 1258947123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{{ < 1258947123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#!/usr/bin/env rc < 1258947123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :echo $1' < 1258947123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :0,$p < 1258947124 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :' | sam -d >[2]/dev/null < 1258947124 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :}} < 1258947155 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :does sam let you put multiple commands on a line at all? < 1258947175 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i dunno, i never use sam < 1258947182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :loser :P < 1258947244 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :seems like not, the manpage says you can group multiple commands with { } but they go one per line < 1258947273 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :annoying < 1258947279 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :despite using plan9 fanatically, there are still major pieces of it that i haven't explored < 1258947288 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has an idea < 1258947292 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i dont even have plan9 handling my email < 1258947302 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :which lots of plan9 users swear by < 1258947311 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i just use gmail :P < 1258947316 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah exactly < 1258947322 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :and of course i could use plan9 as a client for gmail < 1258947331 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :gmail's ui is the only reason to use gmail < 1258947335 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :but ive never felt motivated < 1258947350 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i dont particularly like the gmail ui, but im very ui indifferent < 1258947352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :erm what's the rc thing to concatenate a list into one < 1258947360 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :oh right < 1258947363 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: conversations. QED < 1258947369 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nothing else has 'em < 1258947378 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :lemme check, i should know that rc question but i always forget < 1258947414 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :$"var i think < 1258947427 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :darn, i knew you had to assign a var < 1258947429 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :that should turn a list into a simple string < 1258947473 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :what what do you mean? < 1258947482 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :if you have a list, dont you already have a var? < 1258947494 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(a b c) < 1258947500 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{{ < 1258947501 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#!/usr/bin/env rc < 1258947501 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ifs=' < 1258947501 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :' echo $"*' < 1258947501 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :0,$p' | sam -d >[2]/dev/null < 1258947502 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :}} < 1258947503 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :behold, samscript < 1258947509 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :samscript i/hello/ i/world/ < 1258947515 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :untested :P < 1258947521 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the shebang is for plan9port only < 1258947534 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wait, ifs is \n normally < 1258947539 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so $"* mustn't use ifs? < 1258947549 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :indeed it doesn't < 1258947794 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i will get 5.5 hours sleep. sigh < 1258948190 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Gawd, OSs and libraries are so stupid. < 1258948221 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Why on earth do people fuck so much with compiler optimisation when some simple sanity in OS and library design would speed things up immensely and simplify them in the process? < 1258948258 0 :mycrofti1!n=infernus@h69-128-47-243.mdsnwi.dedicated.static.tds.net JOIN :#esoteric < 1258948278 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :my irc box just died < 1258948300 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://tunes.org/~nef/logs/esoteric/09.11.22 < 1258948302 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you're welcome < 1258948305 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(what irc client do you use?) < 1258948373 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :i use irssi in gnu/linux and irc7 in plan9 < 1258948399 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: incidentally, how do you feel about my decision that what comes after "name:" isn't a sentence; "name:" starts the sentence? < 1258948424 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: thus, even when capitalising the first letter of sentences, this should only be done when addressing people on the second line onwards. Like this. < 1258948425 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :does that decision have any notable consequences? < 1258948432 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: IMO, it flows better. < 1258948452 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :I find that decision mostly interesting on the meta-level < 1258948467 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :I rarely decide to make decisions of that type < 1258948492 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: i change my style all the time. < 1258948502 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm also considering not capitalising "i". < 1258948510 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :There doesn't seem to be any particular reason to. < 1258948522 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :I will try to pay more attention now that I know you put a lot of signal into your typography and it isn't merely noise. < 1258948522 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You could, however, make an argument that it's less noisy than I, because it's a more complicated shape. < 1258948545 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycrofti1: stop that; you're deliberately talking with capitalisation and punctuation :) < 1258948567 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I tend to put signal in it for a while and then it degenerates into noise. I have trouble sticking to a style. < 1258948568 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :Shit, busted. < 1258948580 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycrofti1: you don't sound anything like mycroftiv at all like that :D < 1258948628 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :In general, I find that paying attention to the surface niceties of my text causes disruption of my general train of thought. < 1258948643 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycrofti1: STOP IT STOP IT STOP IT STOP IT STOP IT STOP IT STOP IT < 1258948662 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycrofti1: i need to be up at around 9:30; tell me that I'm crazy and need to sleep urgently < 1258948668 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*i'm < 1258948701 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :It's clearly a sleep emergency and you should sleep with as much force and vigor as possible. < 1258948710 0 :mycrofti1!unknown@unknown.invalid PRIVMSG #esoteric :If you're not sweating, you're not sleeping hard enough. < 1258948722 0 :mycroftiv!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1258948748 0 :mycrofti1!unknown@unknown.invalid NICK :mycroftiv < 1258948756 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: what is this i don't even < 1258948923 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: please, just tell me that i need to sleep < 1258948954 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :Not only do you need to sleep, there is a hired bounty hunter who will hunt you down if you do not sleep asap. < 1258948992 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: at least capitalise "ASAP" you lazy bugger < 1258949019 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :This from someone who isn't capitalizing "I" :P < 1258949033 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"I" is not an acronym. < 1258949044 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I need to work out pointer semantics for referencing English words and the like... < 1258949092 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, I can resume my OS and compiler thoughts tomorrow, I guess, and the longer I wait the worse I'll be at thinking about them tomorrow. So I will head off to bed now; cheerio. < 1258949107 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(And with that line I have decided that capitalised "I" is more aesthetic.) < 1258949164 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I BID YOU FAREWELL, HEATHENS! < 1258949167 0 :ehird!unknown@unknown.invalid QUIT : < 1258949702 0 :facsimile!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Toffoli_gate < 1258953406 0 :Gracenotes!n=person@wikipedia/Gracenotes JOIN :#esoteric < 1258956292 0 :oklofok!n=oklopol@a91-153-117-208.elisa-laajakaista.fi JOIN :#esoteric < 1258959926 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i am getting drunk < 1258960080 0 :FireFly!n=FireFly@1-1-3-36a.tul.sth.bostream.se JOIN :#esoteric < 1258960545 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1258960556 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1258960580 0 :facsimile!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood what about quantum theory? < 1258960591 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :? < 1258960592 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ethanol < 1258960597 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :is amazing < 1258960630 0 :facsimile!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how to got it < 1258960663 0 :facsimile!unknown@unknown.invalid PRIVMSG #esoteric :mapl syrup is amazing < 1258961197 0 :kar8nga!n=kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1258961382 0 :madbr!n=madbrain@modemcable175.136-81-70.mc.videotron.ca JOIN :#esoteric < 1258961717 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1258961728 0 :facsimile!unknown@unknown.invalid QUIT :"Leaving" < 1258962061 0 :oklofok!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1258962123 0 :oklofok!n=oklopol@a91-153-117-208.elisa-laajakaista.fi JOIN :#esoteric < 1258962314 0 :AnMaster!n=AnMaster@unaffiliated/anmaster JOIN :#esoteric < 1258962390 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I hate my shitty ADSL modem! < 1258962392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :had locked up < 1258962394 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in the middle of the night < 1258962430 0 :oklokok!n=oklopol@a91-153-117-63.elisa-laajakaista.fi JOIN :#esoteric < 1258963094 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl, university → < 1258963095 0 :FireFly!unknown@unknown.invalid QUIT :"Later" < 1258963097 0 :Pthing!n=pthing@77-100-194-169.cable.ubr04.pres.blueyonder.co.uk JOIN :#esoteric < 1258963199 0 :clog!unknown@unknown.invalid QUIT :ended < 1258963200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1258963712 0 :oklofok!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1258964668 0 :madbr!unknown@unknown.invalid QUIT :"Radiateur" < 1258966412 0 :ais523!n=ais523@147.188.254.115 JOIN :#esoteric < 1258970428 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Speaking of the "replace a 's/c/d/' regex with 'secede' for obfuscation points", turns out that while sed gleefully accepts "-e secede", Perl won't take "$x =~ secede;" -- it has to be a "non-alphanumeric, non-whitespace delimiter". < 1258970485 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, because otherwise you couldn't give any functions names starting with s < 1258970513 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, unless you wanted to prefix them with & all the time < 1258970799 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Perl parsing is such a hack, they could've easily done an "after =~ if it starts with s or m, at least try to make a regex out of it if the delimiters match sensibly and there's no cruft after it" kludge there too. < 1258970836 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Besides, there are not so many words starting with s that have the correct structure for a s///-style regex. < 1258970863 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: no, the issue is that the =~ is optional < 1258970865 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you'd just type < 1258970867 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :secede; < 1258970885 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it would be ambiguous whether it meant $_=~s/c/d/; or &secede(); < 1258970898 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Sure, it might not work there; but it could be that =~ induces a "we really expect a regex here" mode-of-thinking. < 1258970900 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(or even "secede"; but Perl never uses that interpretation, as it would make no sense) < 1258971054 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Uh.. are you sure it won't use that last interpretation? Perl -e 'secede;' doesn't complain, and with 'use strict' the error looks like it's thinking of it as a bareword; and perl -e '$a = secede;' sticks the string "secede" to $a. Assuming there's no sub secede { ... } seen, of course. < 1258971154 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, right < 1258971158 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I turn "use strict" on all the time < 1258971171 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which disallows barewords that aren't subs, except in a couple of specific contexts < 1258971182 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so yes, it will use that last interpretation if it's the only one available, unless you tell it not to < 1258974484 0 :kar8nga!unknown@unknown.invalid QUIT :Remote closed the connection < 1258974523 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1258974534 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1258975285 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I just received reports that "$a = 'foo'; $a =~ s ofobo; print $a;" prints out 'boo'. Now *that*'s tricky. And not mentioned in my perlop doc page. < 1258976231 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, how does that work? < 1258976241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$a =~ s ofobo makes no sense to me < 1258976244 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what does it mean < 1258976280 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It seems to mean s/f/b/, of course, but we have no idea why adding a space there makes the alphabetic delimiter work. < 1258976308 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hm that seems wrong. After all space is not alphanumeric < 1258976317 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so space should be the delimiter < 1258976327 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Whitespace is not an allowed delimiter. < 1258976338 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :But neither should be alphanumerics, so... < 1258976368 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's DWIMmery < 1258976377 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, meaning? < 1258976386 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It's a bit weird even for DWIMmery. < 1258976388 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: instead of throwing syntax errors, Perl guesses < 1258976397 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you only get a syntax error if it had no idea what you meant < 1258976398 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1258976401 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but what does it stand for? < 1258976406 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Do What I Mean < 1258976408 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1258976436 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's some great DWIMmery in C-INTERCAL, where it guesses whether you meant C-INTERCAL or CLC-INTERCAL notation by which character set you're using < 1258976462 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, heh < 1258976476 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh some issues on mac: stdout is fully buffered, stderr is line buffered < 1258976489 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :can you override it with setvbuf? < 1258976505 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, if it is an mpw tool that seems to mess up MPW badly < 1258976510 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :haven't tried for SIOW < 1258976521 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and the error codes 1, 2 and 3 have reserved meanings for MPW tool < 1258976522 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for example < 1258976528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :1 = syntax error (command line) < 1258976537 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :user defined ones should be 4 or higher < 1258976550 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C-INTERCAL error codes are just the INTERCAL error number < 1258976556 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is fun, because that's normally out of range on UNIX (it wraps it) < 1258976580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, as far as I can see from the docs the range should be somewhat larger than that, 24 bits it seems < 1258976591 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I don't have them on screen atm < 1258976602 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but from what I read yesterday it looked like that < 1258976619 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, another thing, it turns out you share stack with the shell. Oh and heap of course < 1258976628 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so any mem leaks = bad < 1258976638 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Even with a "sub s { ... }" defined above, "$a =~ s ecede;" is interpreted as a regex; you need "$a =~ s(ecede);" to make it actually call s. So as long as that's the case, IM(ns)HO they could as well have made $a =~ secede; work too. < 1258976664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, except it seems MPW tries some heuristics to find such leaks. The docs contradict itself on this point however < 1258976680 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1258976689 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could write a deliberate leak to see what happened < 1258976696 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: s is an operator < 1258976701 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well it is a bit hard to tell what with the Mac OS memory model < 1258976708 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what does $a =~ s(ecede)(fcede) do? < 1258976713 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if a function s is defined? < 1258976743 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :What you'd expect; substitutues ecede with fcede. < 1258976758 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :heh, LR(infinity) < 1258976764 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, what I'd expect; I don't know what you'd expect. < 1258976767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, wait, does ( match )? < 1258976772 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1258976778 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's some special casing... < 1258976778 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, that's another of Perl's specialities. < 1258976789 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Parentheses-style delimiters have to be used in pairs. < 1258976790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, does it work for <> {} and [] too? < 1258976794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1258976796 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :At least {} and []. < 1258976801 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and in perl6, it works for all the parentheses in Unicode < 1258976801 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and what about various unicode parens? < 1258976815 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, such as «» ? < 1258976823 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think the French use those or something < 1258976824 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1258976833 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"the four sorts of brackets (round, angle, square, curly) will all nest". < 1258976835 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in fact, «» has a predefined meaning in Perl6 < 1258976843 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's equivalent to perl5's qw() < 1258976863 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION arges that s→abc←→def← should work < 1258976874 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :argues* < 1258977055 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Wasn't there something with «X» and »X« and such to do [something] to just about any operators? < 1258977097 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Perl 6 has an *awesome* set of operators; http://glyphic.s3.amazonaws.com/ozone/mark/periodic/Periodic+Table+of+the+Operators+A4+300dpi.jpg (warning: a bit big image, 3477x2456 pixels). < 1258977133 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: yep, they're basically the different possible ways of currying map with the operators in question < 1258977135 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, heh < 1258977139 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :very nice image < 1258977144 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, «X« is valid sometimes as well, I think < 1258977155 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as well as X« for unaries (or was that X»? I know only one is meaningful) < 1258977175 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :op« and »op are listed in that table. < 1258977223 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1258977227 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I like the ":iffy", ":diffy" and ":fiddly" tags there, too. < 1258977234 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1258977272 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, I love the ... operator < 1258977292 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you know how it's usual in code examples to write /* ... */ or whatever to show that there is code there, you just haven't written it yet? < 1258977300 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Perl6 has an actual ... operator for that < 1258977307 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which throws an exception if it's ever actually run < 1258977338 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, question: what is the diff between those listed as metaops and those not? < 1258977350 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Don't ask me, I'm not a Perl 6 scholar. < 1258977356 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Hah, a "p5=>" operator. < 1258977367 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: it means almost exactly the same thing as "," < 1258977379 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: metaops are basically functions that take operators as arguments and return other operators < 1258977380 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in fact I'm wondering why ! is listed as metaop? < 1258977388 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :isn't that just negation? < 1258977392 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You can apply ! to many other operators. < 1258977406 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, you mean like == != but instead writing !==? < 1258977415 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(where the ? is NOT part of the op) < 1258977437 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, it's more useful for other things though < 1258977443 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, the unary prefix ! is there also listed separately. < 1258977445 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, what about good old negation, like you would write if (!foo) in C < 1258977448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is that the same !? < 1258977457 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, ah can't find it < 1258977457 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :In the "Complementary" column (IV). < 1258977469 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah there < 1258977481 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, how does perl tell them apart? < 1258977492 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you can always use quoting < 1258977501 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :quoting operators?? < 1258977512 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1258977523 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what sort of quotes? < 1258977525 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The other is an infix operator and always applied to some other operator; that doesn't sound "hard", but it probably is messy. < 1258977532 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :e.g. !{=} is not-assignment, as opposed to !{==} which is not-equality < 1258977535 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :at least, I think you quote with {} < 1258977540 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Oh, ???, !!! and ... are all these "stub" operators. < 1258977545 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, does "not assignment" even make sense? < 1258977561 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :isn't that same as commenting out the relevant part? < 1258977576 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if (!(in = fopen("/etc/passwd","r")) { /* ... */ } < 1258977585 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or, is it same as: x = !y < 1258977587 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that sort of thing (although the above line was C, in Perl it would be a lot simpler) < 1258977592 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, it's !(x = y) < 1258977593 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1258977598 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Anything with the ":iffy" tag is listed as "can be used with !op". I don't see assignment there. < 1258977604 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, should be "do not assign to this variable" < 1258977605 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1258977609 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :would be more esoteric < 1258977613 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :In fact, there are very few :iffy-tagged ones. Though the table might not be the last word in this. < 1258977614 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: ah < 1258977618 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, that would be INTERCAL < 1258977635 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, true, but isn't intercal esoteric? < 1258977638 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :$ perl6 < 1258977640 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :> $a = 5 < 1258977641 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Segmentation fault < 1258977647 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :does not fill me with confidence < 1258977650 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Modulus (%) is listed as :iffy, so !% should be legal... it's not exactly clear what the "negated modulus" is. < 1258977659 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: "is divisible by" < 1258977669 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, seg fault? < 1258977670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1258977678 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sounds like a bug in a high level language like perl < 1258977694 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: a bug in Rakudo, almost certainly < 1258977701 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm just amused it happened on the first command I tried < 1258977716 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Rakudo? Is it related to Parrot in any way? < 1258977751 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, Parrot is the VM that Rakudo targets < 1258977754 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Must be off to a lecture/lecture-alike.) < 1258977757 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION updates Parrot and Rakudo < 1258977761 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so perl6 is compiled? < 1258977767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bytecode? < 1258977770 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's bytecode-compiled < 1258977771 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like Java < 1258977777 0 :kar8nga!n=kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1258977785 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except, it's probably possible to compile Parrot to native code, but then you can do that with Java bytecode too < 1258977793 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, do you have to do it explicitly like in java, or does it happen automatically like in python? < 1258977802 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably either < 1258977810 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how perlish < 1258977838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, you can do it explicitly for python too. IIRC there is some script called during the python build process to do that for the standard library < 1258977918 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION reads /usr/lib/python2.6/compileall.py < 1258977981 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm /usr/lib64/python2.6/py_compile.py < 1258977990 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :MAGIC = imp.get_magic() < 1258977993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's a nice line < 1258978083 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh and I have a vague memory of there being something like "compile byte code by interpreting a string as the source of a module" in the Python C API < 1258978087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or something like that < 1258978232 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, wait, did you say you could compile perl6 to native code in theory? < 1258978243 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1258978248 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wouldn't that imply being possible to parse it without running it? < 1258978254 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :perl6 is meant to be better-behaved than perl5 < 1258978256 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :apparently quite some effort has gone into making it compilable < 1258978262 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and even to be able to have more than one parser < 1258978272 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think you can nest compile-times inside runtimes, or something like that < 1258978278 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :rather CLC-INTERCALlishly < 1258978300 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so you can't do that thing to make it undecidable? < 1258978315 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suspect the syntax is probably decidable, now < 1258978345 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wouldn't matter if it wasn't, though; it would just send the compiler into an infinite loop in the undecidable case < 1258978347 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as that's what the undecidable case did /anyway/ < 1258978570 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1258978707 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but how does it execute code at compile time if it needs to compile it to bytecode first? Does it JIT-compile to bytecode, or does it switch to interpreting? < 1258978718 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure < 1258978731 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Perl5 has enough magic as it is, I suspect in Perl6 the magic is recursive < 1258978751 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(you can even change the grammar on the fly, again CLC-INTERCAL style; in fact, CLC-INTERCAL is looking more and more like a Perl6 tech demo) < 1258978758 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with magic you mean obscure code? < 1258978785 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1258978792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, or perl6 tech demo is looking more and more like CLC-INTERCAL < 1258978794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :preferably, which works for no reason at all < 1258978803 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: CLC-INTERCAL is pretty magical too < 1258978821 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm pretty confident that the number of people who understand how it works is less than 10 < 1258978825 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and possibly just 1. or 0. < 1258978831 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe even negative, if that makes sense < 1258978852 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster: CLC-INTERCAL is pretty magical too <-- Of course, it's INTERCAL. < 1258978858 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it's given that it is magical < 1258982766 0 :BeholdMyGlory!n=behold@d83-183-181-73.cust.tele2.se JOIN :#esoteric < 1258983556 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1258984717 0 :FireFly!n=FireFly@1-1-3-36a.tul.sth.bostream.se JOIN :#esoteric < 1258984950 0 :Gracenotes!unknown@unknown.invalid QUIT :Remote closed the connection < 1258985506 0 :augur!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1258985985 0 :Gracenotes!n=person@wikipedia/Gracenotes JOIN :#esoteric < 1258986313 0 :Gracenotes!unknown@unknown.invalid QUIT :"Leaving" < 1258987068 0 :MigoMipo!i=3e779bfd@gateway/web/freenode/x-dlmfykwbajqeaktt JOIN :#esoteric < 1258987698 0 :Pthing!unknown@unknown.invalid QUIT :Remote closed the connection < 1258990012 0 :kar8nga!unknown@unknown.invalid QUIT :Remote closed the connection < 1258991265 0 :coppro!unknown@unknown.invalid QUIT :Success < 1258991362 0 :MigoMipo!unknown@unknown.invalid QUIT :"Page closed" < 1258992751 0 :kar8nga!n=kar8nga@82.66.176.74 JOIN :#esoteric < 1258993975 0 :facsimile!n=somebody@unaffiliated/fax JOIN :#esoteric < 1258994357 0 :augur!n=augur@129-2-175-79.wireless.umd.edu JOIN :#esoteric < 1258995143 0 :Pthing!n=pthing@77-100-194-169.cable.ubr04.pres.blueyonder.co.uk JOIN :#esoteric < 1258995901 0 :kar8nga!unknown@unknown.invalid QUIT :Remote closed the connection < 1258998132 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1258998316 0 :BeholdMyGlory!n=behold@83.183.181.73 JOIN :#esoteric < 1258998492 0 :iamcal!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1258998587 0 :ais523!unknown@unknown.invalid QUIT :Remote closed the connection < 1258998973 0 :cal153!n=cal@c-69-181-46-213.hsd1.ca.comcast.net JOIN :#esoteric < 1258999879 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, there? < 1258999914 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or anyone else that might happen to know if there is any ipv6 range that is reserved for examples (same way as example.org is or such) < 1258999951 0 :Asztal!n=asztal@86.169.6.59 JOIN :#esoteric < 1258999975 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :never mind, found one reserved for documentation < 1259000040 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Right, 2001:DB8::/32. < 1259000107 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1259000110 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1259000224 0 :pikhq!n=pikhq@75-106-100-139.cust.wildblue.net JOIN :#esoteric < 1259002581 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Quiet today, ne. < 1259002608 0 :facsimile!unknown@unknown.invalid PRIVMSG #esoteric :ne < 1259002689 0 :augur_!n=augur@129-2-175-79.wireless.umd.edu JOIN :#esoteric < 1259002750 0 :augur!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1259002992 0 :MigoMipo!n=MigoMipo@84-217-14-221.tn.glocalnet.net JOIN :#esoteric < 1259003425 0 :kar8nga!n=kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1259003708 0 :ais523!n=ais523@92-236-187-64.cable.ubr08.king.blueyonder.co.uk JOIN :#esoteric < 1259003828 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wb ais523 < 1259003835 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1259003851 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is irritated as SQL DBs < 1259003878 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there doesn't seem to be a portable way to get the value of an auto incremented column, when you need to use that value later in the same transaction < 1259003955 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :SQL is sort-of like Scheme or JS in that you can't expect it to be portable < 1259003962 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also the syntax for it in the dbms used by this module is just hideous: (select current_value of ObjectID_SEQ from MIMER.ONEROW) < 1259003967 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's even worse than those two languages, as it doesn't even have a portablish core < 1259003973 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :assuming the sequence is ObjectID_SEQ < 1259003994 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, SQL does have a core... At least in theory < 1259004005 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :this SQL 2003 standard thingy < 1259004005 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a standard, IIRC < 1259004008 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yeah < 1259004012 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but most SQLs don't comply with it by default < 1259004012 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that was my point < 1259004019 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1259004024 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean, they don't even agree on what quoting operators to use < 1259004027 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"" vs. '' vs. `` < 1259004044 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, this one uses "" for quoting strange table/column names and '' for strings < 1259004048 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I thought that was standard? < 1259004060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mysql uses `` for table/column names, at least < 1259004060 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in fact I'm pretty sure postgresql does it like that too < 1259004067 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which definitely isn't what the standard says < 1259004070 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well ok, mysql is crap however < 1259004093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :postgresql or sqlite are the ones I would use if I had the choice < 1259004111 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(note sqlite is good for small embedded, but standard support is quite bad) < 1259004115 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :note:* < 1259004196 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, also how would one declare a temp variable in sql? Basically I need to store the last inserted row id somewhere, and then insert two other things in the same table that refers to the first row < 1259004210 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :thus I can't just use that "(select current_value of ObjectID_SEQ from MIMER.ONEROW)" both times < 1259004229 0 :augur_!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1259004233 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(this would be for the initial schema creation and data importing file) < 1259004250 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1259004304 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I don't think that's standardised either < 1259004308 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :damn < 1259004309 0 :augur!n=augur@129.2.175.79 JOIN :#esoteric < 1259004499 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm some testing indicates it needs to be inside a begin ... end; block, however the command line sql client thingy seems to have problems handling that (it gives a syntax error if any line inside that contains a semicolon, only way to make it work is to put the entire block on one line, which makes the sql file in question rather unreadable) < 1259004514 0 :Gracenotes!n=person@wikipedia/Gracenotes JOIN :#esoteric < 1259004691 0 :ehird!n=ehird@91.105.114.252 JOIN :#esoteric < 1259004732 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Vel helo dar. < 1259004739 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1259004748 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1259004884 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: We should do shifts like that. < 1259005033 0 :facsimile!unknown@unknown.invalid QUIT :"Leaving" < 1259005064 0 :iamcal!n=cal@c-69-181-46-213.hsd1.ca.comcast.net JOIN :#esoteric < 1259005152 0 :bsmntbombdood!n=gavin@174-16-203-196.hlrn.qwest.net JOIN :#esoteric < 1259005178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :04:10:48 wouldn't that imply being possible to parse it without running it? < 1259005178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this is possible < 1259005179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's just TC < 1259005197 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: hey are you there < 1259005403 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, well I didn't know they dropped that thing from perl5 *shrug* < 1259005405 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl again < 1259005412 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: they did not. < 1259005426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Parsing Perl has always been possible; just not without potentially executing Perl. < 1259005523 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ehird: size[4] Tauth tag[2] afid[4] uname[s] aname[s] < 1259005531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you confuse me < 1259005535 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you confuse me with your words < 1259005543 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :whats up? < 1259005571 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not much tbh < 1259005653 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :go-nuts (205) < 1259005657 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :should probably read-all that < 1259005666 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i was just reading some lkml controvery about something gcc was doing, putting 16-byte alignment where it wasn't wanted < 1259005778 0 :zzo38!n=zzo38@h24-207-48-53.dlt.dccnet.com JOIN :#esoteric < 1259005792 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: i'm musing on c derivativery, OSs, plan 9 and yacc < 1259005797 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and compiler architectures < 1259005879 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :something worth thinking about in that regard is the relation of on-disk filesystems to synthetic filesystems < 1259005908 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :are you kidding me, i've probably thought about that at least 70 times < 1259005909 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :theres really no connection between 9p synthetic filesystems and on disk stuff like fossil, it would be nice to change that < 1259005912 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hi zzo38, quiet today < 1259005923 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: just implement fossil as a 9p server? < 1259005928 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is the boring, simple, and probably correct solution < 1259005929 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well fossil does serve 9p < 1259005934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, then. < 1259005953 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :thats not quite the same as what i was referring to, i was thinking more about the way the data is structured < 1259005960 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1259005970 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :btw, you said the p9 kernel doesn't use 9p to talk to itself. < 1259005974 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what does it do? just pass structs? < 1259005989 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :it would be nice if the in memory content of a 9p fs could be snapshotted to disk in a way that naturally fits the disk filesystem < 1259006013 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think that's a bit vague to meaningfully discuss; define naturally fits and justify how fossil doesn't achieve that < 1259006046 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well, fossil ties into venti and uses a tree of pointer blocks pretty much < 1259006061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :imo dumb deduplication probably works well enough. < 1259006077 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :whereas 9p uses this big set of structures like fcall and the internal stuff the libraries use to provide the public interfaces < 1259006098 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i always have this idea you should be able to basically dump bytes straight from memory onto the disk, and have it be structured so that it fits the disk storage format < 1259006111 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I am writing a real assembler called 888ASM, which I will use for writing operating systems < 1259006122 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Have you ever tried to write operating systems < 1259006134 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Okay. Yes. < 1259006163 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :No, I mean, for making program in real-mode. < 1259006181 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I haven't tried to write a real-mode OS, if that's what you mean. < 1259006193 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Yes, that's what I mean. < 1259006204 0 :cal153!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1259006250 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: do you know why plan9port doesn't include a drawterm rio? < 1259006256 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'd love to use its rio in an os x window < 1259006316 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :what exactly do you mean a 'drawterm rio' ? when you run drawterm rio is being executed by the cpu server you connect to, drawterm is just providing a /dev/draw for it < 1259006381 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :its analogous to the plan9 cpu command, which basically just runs processes on the cpu server with their namespace structured so that the devices are provided by the terminal < 1259006399 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i meant drawterm as in the way plan9port runs the graphical apps like acme < 1259006407 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :rio uses the same widgets, so surely it uses the same lib? < 1259006418 0 :zzo38!unknown@unknown.invalid PART #esoteric :? < 1259006419 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so why can't we have actual rio, instead of an x11 wm that imitates rio? < 1259006476 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well rio is a fileserver < 1259006518 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :er, I am talking about the WM < 1259006525 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :look at plan9port's rio(1); it's an x11 wm < 1259006529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe rio technically isn't that < 1259006530 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yes i know < 1259006532 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it's implemented elsewhere < 1259006536 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but who cares < 1259006555 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i mean a little plan 9 wm that i can use as if i had rio running in plan 9, in a window < 1259006567 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah that would be cool < 1259006589 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is there any technical obstacle other than porting the code from plan 9 c to posix c? < 1259006593 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i was just explaining that in plan9 rio is a fileserver that multiplexes access to the plan9 kernel files like #c (/dev/cons) and #i (/dev/draw) < 1259006597 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it uses the same graphical lib all the progs do, right? < 1259006604 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :so that doesnt translate in a direct way to *nix < 1259006640 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :plan9port can't do fileservers? < 1259006671 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah it can < 1259006687 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :but the linux or other standard *nix kernel doesnt provide underlying devices that work the same way < 1259006691 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ok, so only the kernel bits would need to be changed. /dev/draw is already handled for progs like sam/acme/etc < 1259006700 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and /dev/cons is "sort of" easy to do < 1259006710 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :im sure it would be a not-that-hard project to implement < 1259006734 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :and i agree that you could use drawterm code for a lot of it < 1259006740 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :because drawterm provides those devices i was talking about < 1259006753 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to find a cruftless source of Rob Pike's "Notes on Programming in C" to give it some nice typographical lovin' < 1259006763 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :so basically you would run rio in plan9 port and have it available for drawterm to dial into < 1259006795 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :that could really work i think < 1259006822 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not that rio is very good, tbh < 1259006825 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :might need to wire them together to start at the same time, rio doesnt know how to sit around and wait with no display for a client to show up unless you patch it < 1259006832 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is it possible to write "other wms" for plan9? it is right? < 1259006836 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just hijack /dev/draw and remap it < 1259006840 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah plan9 user interface is kinda cool but not perfection or the OS strong suit < 1259006844 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :oh of course < 1259006856 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :as you know you can run any app right on the framebuffer, no need to put rio in there < 1259006889 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :as a matter of fact someone is working on a plan9 wm alternative who actually has the skill to deliver something technically solid, i think its a grad school project for them or something < 1259006904 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: do you know the source of the bell labs-area quote that replacing a snippet with a better equivalent one gets you speed and clarity, and machine optimisation only gets the first? < 1259006908 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think it was on cat-v or sth < 1259006930 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think making acme be able to embed /dev/draw windows would be kickass < 1259006939 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :all other plan 9 interfaces would instantly become obsolete < 1259006942 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :its familiar to me but all the rob pike ive read is all smushed together in my brain, i cant recall what line comes from what < 1259006953 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, apart from letting you hide acme windows and recall them later like rio < 1259006960 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :add that and acme is one of the best WMs in existence < 1259006965 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: i think it was rob pike, yeah < 1259006974 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah the 'rio inside an acme panel' thing has been talked about a fair amount, again, not too hard to do < 1259006988 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nonono not rio < 1259006990 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :fgb understands the issues well since abaco is his project and it integrates acme with some graphical display < 1259006991 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as in a panel is a window < 1259007002 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i just meant as an example < 1259007006 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right < 1259007027 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :since thats something some people think 'should work' already, as a matter of design principle and general coolness < 1259007034 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :run anything in an acme panel < 1259007052 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :maybe inferno acme-sac already does that? < 1259007057 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i dunno < 1259007070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :rio is a pretty useless wm < 1259007076 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :acme is very good at efficiently organising things < 1259007096 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :rio isnt great but it has some things i really like, i like how it and rc work together < 1259007121 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :the awesomely purist backscroll of text that you can edit in, how the execution point works, 'send' option < 1259007160 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :and the basic mechanic of 'new' sweeping out a window, and apps 'taking over' the window they were started in < 1259007162 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i find revising the most recent flawed command, my most common editing operation by far, is needlessly tedious with the system < 1259007168 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and i know that's heretical < 1259007186 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, the not scrolling by default just makes me disable it until i want to read a manpage < 1259007195 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as it's completely useless to have to scroll every time all the time < 1259007201 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :can change that in your profile < 1259007202 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: now, acme's terminal < 1259007204 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Win) < 1259007206 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's good < 1259007208 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :purist yet usable < 1259007217 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: i don't care, it's a shitty default < 1259007230 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :its not useless, it can be used to control execution and have a buffer of upcoming commands that you edit in response to what is going on - and yeah i agree it sucks as a default, i usually change it in my profile < 1259007280 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://www.lysator.liu.se/c/pikestyle.html is quite a clean source for NOPIC < 1259007302 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wonder where it was originally published, so that I can examine the formatting of the original. < 1259007318 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://www.csl.cornell.edu/courses/ece314/tutorials/pike_C.html is devoid of stylistic markup < 1259007352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :does bwk/pike's book The Practice of Programming include it? < 1259007364 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :dunno < 1259007368 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[[I've long recommended Pike's "Notes on Programming in C" on my web page. This book includes most of the content from that essay and much more, but is still thin and concise.]] < 1259007369 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nope. < 1259007430 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://doc.cat-v.org/bell_labs/pikestyle seems to retain the formatting of the first one I linked, so either uriel got it from there, it's canonical, or some common ancestor used it < 1259007437 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, common ancestor source or just source < 1259007487 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and that's the last i can find < 1259007500 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i think im going to start lobbying for tex as the best long-term document storage format < 1259007511 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Please, no. < 1259007532 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well, fortunately for you, my lobbying wont affect anyone at all since nobody cares < 1259007560 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :but it makes sense, the output is quite well defined and the program is 'finished', nothing will be changing in the future in the core program < 1259007564 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :If you want to champion a hopeless cause, roff is better than TeX. Of course, both are monumental tortures to write in (roff slightly moreso). < 1259007578 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But TeX has many flaws, especially as it does not store *documents*. < 1259007588 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It stores typesettings. < 1259007591 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :oh no, semantics! < 1259007598 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Semantics are all there is. < 1259007602 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And it is IMPORTANT. < 1259007616 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Cruft around the content is not the content (although typography is part of it). < 1259007634 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :People sometimes write their document within the confines of the typesetting language, but this is certainly not a good long-term practice for document storage. < 1259007641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :At least roff encourages that. < 1259007650 0 :Pthing!unknown@unknown.invalid QUIT :Remote closed the connection < 1259007659 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(And enables a dabbling of typography while leaving the rest to itself.) < 1259007711 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i was intending to refer to the case where people are trying to preserve or recover specific formatting < 1259007723 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :since the context was you trying to find what the 'original' of pikestyle looked like < 1259007735 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sure, and roff would have worked here for the typography I want. < 1259007741 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :TeX would have been more of a pain to extract it from. < 1259007789 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i guess i just was thinking of tex as being valuable because its output is so precisely specified < 1259007816 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Except for complete devoidness of support for Unicode. < 1259007833 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Which makes it useless for a great many things where formatting is very important indeed. < 1259007864 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(btw, by roff I meant including n and troff) < 1259007893 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if http://repo.cat-v.org/troff-slider/ is any good. < 1259007897 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well, obviously tex isnt a solution for everyone or everything, but im still pretty impressed with it < 1259007940 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :using TeX directly is a good thing if, uh… you are Knuth < 1259007995 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :incidentally, a thought i had about my 1-pass compiler idea: what about portability? < 1259008010 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :should every compiler really rewrite all the c processing code? that's insane < 1259008023 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I think the way I'll do it is to have the main cc < 1259008033 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and then you write some functions that it calls < 1259008036 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for each type of node < 1259008042 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :to generate the code, given loads of context and stuff < 1259008050 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then you just link 'em together to produce that compilerer < 1259008053 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*compiler < 1259008156 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but the architecture-specific files will be confusing < 1259008165 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just a series of unrelated snippets < 1259008207 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[[Unfortunately, Ossanna's troff was written in PDP-11 assembly language and produced output specifically for the CAT phototypesetter. He rewrote it in C, although it was now 7000 lines of uncommented code and still dependent on the CAT. As the CAT became less common, and was no longer supported by the manufacturer, the need to make it support other devices became a priority. However, before this could be done, Ossanna died.]] < 1259008280 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :im forgetting what your primary motivation for a 1 pass compiler was - simplicity of creating the compiler itself, parallelization of operation, just because its an interesting possibility, all of the above? < 1259008324 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :simplicity of the compiler code, speed of the compiler, and from what i derived from conway's law (gimme a sec to find it) < 1259008346 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :16:52:35 another thought is: from conway's law, we can derive that the fewer passes in a compiler the better < 1259008346 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :16:52:47 because an N-pass compiler is-as-if produced by an N-group team < 1259008347 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :16:52:57 and behemoth teams famously produce terrible software < 1259008347 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :16:53:28 so the question is, can we make the c dialect compileable simply and elegantly with one pass? < 1259008446 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :yeah i remember the conway's law thing, i thought that was clever but not rigorous < 1259008528 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :indeed, it's just an idea < 1259008536 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :does p9 have an alternate way to middle click < 1259008543 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mine fails in 9vx and plan9port < 1259008555 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :try clicking both left and right at the same time < 1259008566 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i think theres also a key to hold down while you click also < 1259008573 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i really oughta make a note of this since it comes up a lot < 1259008628 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :since you are talking about doing stuff like ditching preprocessor, any other notable deviations from C standards you think are worth doing to maximize the efficiency/elegance goals? < 1259008641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dual click magixxx is what i tried < 1259008644 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it phails o no < 1259008655 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: not too much. probably very similar to plan 9 c < 1259008673 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :void will probably be implicit < 1259008684 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :main() {} returning void, as you've seen < 1259008748 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :prolly different io lib < 1259008756 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i don't really know < 1259008774 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :you familiar with plan 9's bio library? < 1259008872 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, wait, are you suggesting that cpp should be dropped? < 1259008891 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: indeed i am, and C's creators agree. < 1259008891 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ehird: emulate middle button by holding down shift key while pressing right button < 1259008896 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it was mostly eliminated in plan 9 < 1259008905 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :now remember what i said about shifts? you left right after i arrived < 1259008910 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let's enact that system, it'll be wonderful < 1259008912 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, okay I agree too. Just one question: < 1259008917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what will you replace #include with? < 1259008930 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for getting prototypes for library functions and such < 1259008941 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: doesn't work (i'm using 9vx) < 1259008957 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, and system defines, or rather enums now I guess? < 1259008981 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: #include foo can simply look at /lib/foo < 1259008992 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :annotated with signatures, for instance < 1259008999 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's the immediate first idea i had, one of many options < 1259009005 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, and the library will contain definitions of stuff like protypes and structs and such? < 1259009011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in some magic way < 1259009037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not prototypes; as I said, the symbols are annotated with them. < 1259009047 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Some magic way like having a standardised format to define structures? Oh, how magical and crazy. < 1259009053 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ehird: http://9fans.net/archive/2009/04/495 < 1259009064 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :This is just one idea; I'd think for longer about it, but I'm too lazy. I'll come to that problem when I come to it. < 1259009071 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, wait, why are you using sarcasm? < 1259009084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, magic is usually used disparagingly in this context... < 1259009093 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Perhaps #include will simply parse the file, which must contain only declarations. < 1259009102 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, in this case I just meant "some yet to be defined meta data format" < 1259009133 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Well, yes; just as my object format is yet to be defined. Did you read that my computer will actually link every symbol into the object as soon as it compiles them? < 1259009152 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, you mean static linking? Well no news < 1259009154 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And I'm using the same object format for objects, binaries and libraries. ld is just a composer. < 1259009157 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I didn't say that. < 1259009159 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Read it again. < 1259009170 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, are you going about your distro or your OS? < 1259009175 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :os. < 1259009181 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah, well then all bets are off < 1259009181 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cc actually produces a $universal_object_format increementally. < 1259009185 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not just an .o < 1259009189 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but an .o too < 1259009193 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :same as an .a and an (executable) < 1259009214 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And it doesn't assemble machine code, and then generate the object file; it does it as part of the code generation process, which is in the single pass like every other step. < 1259009233 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It literally parses a chunk of code, generates the machine code for it, and adds it to the object (probably stored in memory until exit by default). < 1259009233 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, weren't you going to use forth + smalltalk for your OS iirc? < 1259009241 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You can run it as-is if it has a main(). < 1259009251 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Executing foo just loads the object foo and calls main(); very simple. < 1259009272 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or you can do "$ld myccode.o myotherlangcode.o -o combined.o". < 1259009281 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(which just merges the two objects) < 1259009285 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :etc. < 1259009297 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I can have more than one OS project, can't I? < 1259009299 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's not like anyone will use them/ < 1259009301 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*them. < 1259009302 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh ok < 1259009312 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, can you name them differently so we can keep them apart? < 1259009314 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1259009326 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, by the way, on your distro you realise you will still be stuck with a special form of dynamic linking whatever you do? < 1259009346 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, and that is the form called "system call" < 1259009353 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sure your OS might get rid of it ;P < 1259009360 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: (1) The one I'm talking about with this architecture will probably be called Plan Y. (2) That is one idiotic definition of dynamic linking. < 1259009365 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Very strawmanesque. < 1259009384 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Free joke: Y Plan Y? Y not?) < 1259009391 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sure, you could consider it IPC to kernel I guess < 1259009424 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION just disables scrolling button so he can middle-click for a few seconds < 1259009428 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that is exactly what it is, more or less. < 1259009444 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, none of the problems with dynamic linking apply to system calls. < 1259009470 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :System calls don't incur a runtime penalty to load the library; the kernel is the one running it! < 1259009485 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :System calls very, very, VERY rarely break compatibility. < 1259009492 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :are you using 9vx with a full plan9 distribution or are you using just the stripped down microdistro that is part of the 0.12 tarball < 1259009503 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :etc. < 1259009514 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And system call users are portable; < 1259009518 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you are never without the kernel. < 1259009521 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: latter. < 1259009547 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :fuck shittingbugger i forgot what i was going to do in this plan9 :D < 1259009561 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :you should, in my opinion, download the plan9 .iso image and then mount it and copy it over to your disk, and run 9vx using that copied full plan9 distribution as your root < 1259009572 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm not too fussed about 9vx. < 1259009577 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's slow. meh. < 1259009582 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :at least for graphical shit < 1259009590 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :wait, are you using it in os x? < 1259009594 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1259009600 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :oh yeah ive heard its awfully slow in os x < 1259009614 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :its fast as fuck (and fuck was measured at 496.5 mph) in leenooks < 1259009657 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :fucking at 496.5 mph? intriguing concept. < 1259009660 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION adds to todo list < 1259009710 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a n y w a y < 1259009895 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: you can trivially make a plan 9 / that boots on multiple architectures right? < 1259009926 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :sure thats why its set up the way it is < 1259009931 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :thought so < 1259009937 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: is that used for clusters? < 1259009938 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :no reason a file server couldnt have stuff for every arch < 1259009963 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :probably so in the case of the blue gene project as a modern example < 1259009979 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ooh, install everything from /n/sources < 1259009982 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the core distro < 1259009986 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for every arch supported < 1259009987 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1259009991 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1259009992 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it is literally all of plan 9 < 1259010000 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it would be COMPLETE FOREVER < 1259010004 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : System calls very, very, VERY rarely break compatibility. <-- that is because the kernel developers go to great lengths to avoid it < 1259010011 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: No shit, sherlock < 1259010015 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :more or less, although there are a fair amount of projects that never got loaded onto sources for one reason or another < 1259010036 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i wonder if anyone has a plan 9 cluster with every supported arch < 1259010038 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that would be hardcore < 1259010060 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, you know how many variants of the stat() system call linux have had? < 1259010067 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :it would be, however, a couple things - i think some of the supported arches may be moribund, in the sense that they were last actively used circa 1999 and need to be saved from bitrot < 1259010069 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*has < 1259010070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*HAS < 1259010076 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :PLURALISATION! LEARN ITTTTTTTT < 1259010087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, "had" because it was past tense < 1259010094 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*has had < 1259010094 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :duh < 1259010097 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well ok < 1259010098 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :have is plural. < 1259010101 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :linux: singular. < 1259010103 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Linux has had things. < 1259010115 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Network is unreachable < 1259010118 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, yes, it's not handled perfectly, but it still works in practice, and all my other notes still apply. < 1259010123 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :and secondly, i get the sense that apart from the HARE/blue gene project and los alamos and related, and coraid, and the lsub, and a few crazed hobbyists like me, there arent that many medium to large scale grids out there really < 1259010134 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's more a criticism of Linux, but at least it works in practice. < 1259010135 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, anyway around 6 or so I think < 1259010155 0 :bsmntbombdood!n=gavin@174-16-83-229.hlrn.qwest.net JOIN :#esoteric < 1259010168 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: how many archs does plan9 support? every one has a *c right? < 1259010183 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so 10 archs < 1259010195 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :10 machines isn't such a big investment, esp as things like ARM only come in little, cheap form < 1259010205 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : And system call users are portable; <-- you have to make sure to not use ones added recently, if you want backward compatibility < 1259010209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sparc, though, that'd be an investment < 1259010221 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: The relevant issue is forwards compatibility. < 1259010229 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :im sure the biggest investment is in the time required to get something like 68000 up and running from whatever remains of the code for it < 1259010265 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: personally i think dropping spim, 68000, 68020 and alpha would be smart < 1259010273 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :perhaps even mips and arm < 1259010275 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :as a practical matter indeed < 1259010282 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that'd leave amd64, 386, sparc, power < 1259010287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, both apply somewhat if you need to support users on older systems too (like, in software that handles upgrading for example) < 1259010287 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :all of which are probably quite used < 1259010303 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :the amd64 code isnt publicly released yet much to a lot of people's annoyance < 1259010314 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: but you can't dynamically link to a function < 1259010316 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then have it work in the past either < 1259010337 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i was listing how the important issues of dynlinking don't apply to syscalls < 1259010349 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and forward breakage is (no, the way glibc etc solve this by having old versions isn't really a solution) < 1259010353 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1259010354 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I didn't say that. Was just saying backward compat also mattered with system calls < 1259010358 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just ignore it ffs, i'm tired of talking about this one point < 1259010362 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as well as forward compat < 1259010362 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pretend i only made my other points < 1259010368 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, sure < 1259010368 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1259010376 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: it isn't? why not? < 1259010383 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :eh, drop amd64 then (is it new? i don't recall seeing it earlier) < 1259010394 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that'd leave 386, sparc, power < 1259010402 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i imagine sparc is "quite" popular < 1259010405 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and power is probably used a bit < 1259010410 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :plan 9 development model isn't conventional open source (doesnt work like lkml) and they have an idea about releasing stuff when its 'ready' < 1259010429 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wait, no amd64? argh < 1259010430 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i do that too except i don't release binaries until it's ready either. < 1259010436 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: amd64 is supported; not open source. < 1259010437 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :so apparently amd64 still has some bugs or something < 1259010443 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, that's crazy < 1259010443 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :everyone uses 386, anyway. < 1259010459 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: then the fact that plan 9 was closed source until the 90s is sheer lunacy death-defying mayhem < 1259010461 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I might be getting a system with 8 GB ram soon < 1259010463 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just fyi < 1259010464 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or, wait, no, it's called being closed source < 1259010469 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: why should I care? < 1259010475 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: anyway, plan 9 is used in clusters < 1259010488 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, sure, but nothing says each system has to be weak < 1259010489 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Blue Gene/L looks at your 8 GiB of RAM and laughs. it laughs. < 1259010491 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :does it? < 1259010495 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I'm aware < 1259010501 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a cluster with each node having 8 GiB of RAM is called a folly. < 1259010509 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what arch is blue gene? < 1259010519 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :custom iirc. < 1259010519 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, also road runner looks at blue gene and laughs :P < 1259010526 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i think its basically power64 isnt it? < 1259010529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :road runner has a shit architecture < 1259010533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, sure. < 1259010539 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's not interesting at all it's just a bunch of computers lopped together < 1259010539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mixed arch < 1259010540 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :boring < 1259010543 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :blue gene is magic < 1259010546 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :good magic < 1259010546 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :actually the plan9 blue gene stuff just got released as a matter of fact < 1259010554 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :and sheevaplug too < 1259010558 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :furthermore < 1259010558 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://upload.wikimedia.org/wikipedia/commons/d/d3/IBM_Blue_Gene_P_supercomputer.jpg < 1259010559 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, road runner still beats it < 1259010561 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is roadrunner this beautiful? < 1259010563 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i don't think so < 1259010569 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: if your only metric is marginal amounts of computing power. < 1259010571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I think it is < 1259010581 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dude, roadrunner is just a bunch of grills with computers in them < 1259010589 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you just have a roadrunner fetish < 1259010610 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, http://en.wikipedia.org/wiki/File:Roadrunner_supercomputer_HiRes.jpg < 1259010620 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i stand by what i said < 1259010624 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so do I < 1259010635 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :roadrunner has an uninteresting architecture, building it is trivially easy (routers, computers and link cable? ok, just stick them up!), and it required no rea thought or innovation < 1259010660 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :all it has is slightly more computing power than the competition, and furthermore it's being used on military stuff which is lame < 1259010678 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, actually road runner uses Cell and Opetron iirc < 1259010692 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :did i contradict that < 1259010692 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No. < 1259010694 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Opteron* < 1259010697 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(blue gene otoh is innovative, made real bounds in computing power compared to previous supercomputers and cleverly designed) < 1259010704 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*and is < 1259010710 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, mixing two architectures doesn't sound trivial to me < 1259010719 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's not like their CPU boards are mixed together......... < 1259010738 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You just compile each program for both architectures and they communicate with a common protocol. < 1259010745 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No thought involved whatsoever, it's exactly what you do with any cluster. < 1259010824 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so what is so great with blue gene exactly? < 1259010828 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :apart from that it can run plan9 < 1259010834 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wikipedia is that way < 1259010841 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :btw, not can; does < 1259010850 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :plan 9 is used on blue gene/L for actual use < 1259010861 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, are you saying it can't but still does‽ ... < 1259010868 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : < 1259010889 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I hereby direct you to http://xkcd.com/169/. < 1259010908 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, and I don't care shit about it < 1259010918 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You continue to fail at grammar forever. < 1259010928 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so does your mom < 1259010930 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: quick, say something interesting before I off myself due to tedium. < 1259010936 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, give me a gun. < 1259010947 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders how much missing the point "meagry" would be < 1259010950 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably quite a lot < 1259010957 0 :augur!unknown@unknown.invalid QUIT :Read error: 145 (Connection timed out) < 1259010977 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, context? < 1259010984 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ehird's link < 1259010988 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's the traditional answer to the riddle < 1259011005 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I like how AnMaster knew he didn't "care shit about it" when he clearly didn't even click. < 1259011008 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :$ grep gry$ /usr/share/dict/words < 1259011010 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :angry < 1259011011 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hungry < 1259011020 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although, the dictionary here disagrees with the riddle in question < 1259011023 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :He has a black-box of link→doesCareShitAboutIt < 1259011026 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(it's not perfect, though) < 1259011039 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I get more words: < 1259011041 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :aggry < 1259011041 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ahungry < 1259011041 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :angry < 1259011041 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anhungry < 1259011042 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hungry < 1259011044 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :unangry < 1259011048 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1259011050 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"unangry" < 1259011052 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"ahungry"? < 1259011059 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ehird: do you agree that the center of the 'average person' computing experience is shifting to mobile devices (phones blah blah) - if so, what are the implications for what systems designers such as yourself need to be doing? < 1259011073 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: fuck all because people are idiots and i do research < 1259011073 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, complete webster 1934 edition < 1259011077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: next question :D < 1259011078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :says /usr/share/dict/README < 1259011082 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: heh < 1259011086 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, selected because copyright has elapsed < 1259011096 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :double heh, even though I vaguely guessed that < 1259011105 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the one here's a compilation of various open-source word lists < 1259011110 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most of which seem remarkably unsystematic < 1259011145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh? < 1259011173 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I can't remember the details, nor can I be sufficiently bothered to look them up < 1259011183 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway "aggry" seems to be a valid answer to the riddle < 1259011203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's not a riddle, it's a joke/prank. < 1259011222 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :As a riddle it's an uninteresting literal interpretation; as a joke/prank it's infuriatingly idiotic. < 1259011222 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :according to Google, it's only used in the combination "aggry beads" < 1259011233 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But the former is definitely derived from the latter; probably by idiots who can't even annoy correctly. < 1259011238 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Google will back me up on this. < 1259011240 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: the original riddle isn't a trick question and has "meagry" as the actual answer < 1259011246 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it isn't a particularly interesting one, though < 1259011251 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :IIRC the Straight Dope disagrees with you < 1259011256 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it is infallible, after all. < 1259011258 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, I love your "can't even annoy correctly" < 1259011287 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It is a refined antitalent. < 1259011301 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it reminds me of the modern decline in the quality of trolls < 1259011311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :really good Usenet trolls I actually enjoy watching, it's a performance art < 1259011315 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although you rarely see them nowadays < 1259011324 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(an ideal troll leaves you wondering if they were a troll or not) < 1259011325 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :usenet trolls of the late 90s were indeed the all time highwater mark of trolling I must say < 1259011335 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that late? < 1259011341 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :was that before or after the Eternal September? < 1259011345 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :id say so because the audience was large < 1259011349 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :1993 is early september. < 1259011353 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :late 90s is just flooding and spam. < 1259011359 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wait, I mean before or during < 1259011364 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :no, because web boards hadnt taken over by then < 1259011367 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :during < 1259011369 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :DSL standard: ADSL2+ Mode < 1259011369 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :near-end bit rate: 18601 kbps < 1259011369 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Wooo, that was some good service. I sent an email two hours ago to their support service, complaining that my modem's saying "DSL standard: Error" and speeds are <= 8Mbps; now it's magically fixed. (Now if they'd just bother also replying to that email... still, admittedly it's not exactly office hours right now -- ~2325 localtime.) < 1259011382 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i read on encyclopedia dramatica about a totally epic-sounding usuenet war, lemme see if i can dig it up < 1259011389 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, heh < 1259011397 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :from 95-98 usenet was where the 'entire damn internet' had its conversation < 1259011407 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :well, mailing lists also of course, although lots of overlap there < 1259011424 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :was after the arrival of 'the general public' and before web based discussion forums took over < 1259011429 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: encyclopedia dramatica's one of those sites I never knowingly click on links to < 1259011452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah, the deluge of ads and offensive language may hard-reboot your brain. < 1259011457 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION vaguely wonders about blocking it at the /etc/hosts level, and wonders what's the actually correct way rather than just redirecting it to 127.0.0.1 like everyone else does < 1259011525 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ED should be shut down by the president of the united states of USA, i hear they mocked lilo AFTER HE DIED < 1259011584 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :eh, can't find the article. < 1259011633 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, is there any other way? < 1259011664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I redirect to 127.0.0.2 < 1259011666 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well,* < 1259011673 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :There are some IPs reserved as invalid, I believe. < 1259011677 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because I sometimes run a development web server locally < 1259011681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, good point < 1259011691 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: 127.0.0.2 should map to 127.0.0.1 < 1259011698 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1259011700 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in theory, the whole of 127.0.0.0/8 is loopback < 1259011701 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :IIRC < 1259011702 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1259011718 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well, that depends on what ips the web server is set up to listen to < 1259011721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :128.0.0.0/16 Reserved (IANA) < 1259011721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :191.255.0.0/16 Reserved (IANA) < 1259011721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :192.0.0.0/24 Reserved (IANA) < 1259011722 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :223.255.255.0/24 Reserved (IANA) < 1259011722 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :240.0.0.0/4 Reserved (former Class E network) < 1259011731 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not "invalid", but reserved and unlikely to be released nonetheless. < 1259011733 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Wrong. < 1259011738 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure that the whole 127/8 *has* to be, but that's the usual. < 1259011738 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :127.0.0.0/8 Loopback < 1259011738 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, sure? < 1259011744 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Per RFC 3330. < 1259011770 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, well, I don't know but on my ubuntu laptop: < 1259011773 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lo Link encap:Local Loopback < 1259011773 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : inet addr:127.0.0.1 Mask:255.0.0.0 < 1259011773 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : inet6 addr: ::1/128 Scope:Host < 1259011779 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :anyway, "skugry" is a great word, I should use it more often, as in at all < 1259011784 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well yes < 1259011785 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So Ubuntu is breaking the IP standard. < 1259011786 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1259011786 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ACTION rings the Sacred Bell that announces the arrival of 'Per RFC #'  < 1259011786 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's not news. < 1259011790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, wrong < 1259011791 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"This is ordinarily implemented using only 127.0.0.1/32 for loopback, but no addresses within this block should ever appear on any network anywhere [RFC1700, page 5]." < 1259011792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :read it again < 1259011796 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :skugry: 16th-century spelling of the dialect word scuggery meaning 'secrecy' (the faint echo of 'skulduggery' is quite accidental!). < 1259011797 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that mask should make it work < 1259011799 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1259011807 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Erm, are you sure? < 1259011826 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, no < 1259011827 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Mask:255.0.0.0 < 1259011829 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I suck at networking < 1259011833 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :implies that loopback handles the whole range < 1259011834 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I suspect that is how it works < 1259011835 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right should work < 1259011859 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, still you can bind to exactly one of the ips that is bound to a specific interface < 1259011868 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :ais523: That's not really true. It just means that's the network it's in. It's not like the "inet addr:10.102.76.2 Bcast:10.102.76.255 Mask:255.255.255.0" in my eth0 implies it should handle the whole network. < 1259011892 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :lets start an urban myth that somewhere is an ultra secret computer designated as the TRUE 127.0.0.1 and secretly it gets to eavesdrop on everyone's loopback < 1259011894 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I thought it did < 1259011901 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: no < 1259011903 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, route to our gateway for that network if we get something in range < 1259011917 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: that one is vaguely plausible for people who don't understand computing < 1259011938 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv, lets not < 1259011947 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, btw, 850*77.1 is actually 100000, there's a conspiracy amongst mathematicians and calculators to make people think it's 65535 < 1259011951 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :there need to be more urban myths of computing though < 1259011961 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only Microsoft accidentally leaked the correct answer and were forced to hush it up by the CIA < 1259011986 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i want an hp calculator < 1259011992 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :non-rpn is so efficient with calculator buttons < 1259011997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : oh, btw, 850*77.1 is actually 100000, there's a conspiracy amongst mathematicians and calculators to make people think it's 65535 <-- I have yet to see a calculator that gave that answer < 1259011998 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Well, "yes", in that sense that it gets routed to the lo device whenever it's in the network; "no" in the sense that the mask doesn't mean the device would normally accept any packets except the ones that actually have the destination address it has, namely, 127.0.0.1. < 1259012002 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and have you used a modern calculator? < 1259012004 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :those buttons are useless! < 1259012013 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mushy useless pieces of shit < 1259012016 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :barely ever register < 1259012020 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: OK, I agree with you there < 1259012021 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :slam them and still make errors < 1259012027 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what does loopback do to the ones that aren't aimed at 127.0.0.1? drop them? < 1259012032 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ping 127.0.0.2 < 1259012037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://upload.wikimedia.org/wikipedia/commons/9/95/HP48G.jpg ;; the 48g is prettier than the TI-83 to boot < 1259012044 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : mushy useless pieces of shit <-- what are you talking about < 1259012044 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :In fact the lo device magic makes them handled anyway. < 1259012046 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :although less capable for programming stuff < 1259012050 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm getting replies, at least < 1259012050 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: read context. < 1259012059 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably from myself based on the ping times < 1259012059 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if it'd be feasible to port rfk to the HP48G. < 1259012060 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, yes and it doesn't make sense to me < 1259012066 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Why not? < 1259012077 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It's a bit like the lo device is always in promiscuous mode, and... uh, something else so that the packets are even processed by the relevant stacks. < 1259012080 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and http://127.0.0.2/ is /var/www/index.html < 1259012089 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, well, I used TI-84 and I didn't find it's keys "mushy" < 1259012094 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, my own is a TI-83+ < 1259012094 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I said "modern". < 1259012104 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, TI-84 is modern, TI-83+ isn't < 1259012108 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Especially the cheaper ones. < 1259012115 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Of course if you pay a lot you get good buttons. < 1259012117 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, such as? < 1259012129 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anything from 0 to 30 dollars? < 1259012136 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Maybe >30. < 1259012142 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, you mean non-graphing calc? < 1259012150 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I said "calculator". < 1259012161 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But I'm sure you can get a graphing calculator that cheap; it'll just be shitty, is all. < 1259012164 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, sorry, I haven't owned any sort by graphing calculator for *years* < 1259012171 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so I didn't think of the other type at all < 1259012174 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't take much to go from simple table calculation and display to graphs. < 1259012178 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Debian's installer -- at least at one time -- adds into /etc/hosts "127.0.0.1 localhost" and "127.0.1.1 host.domain host", where "host.domain" are the values you provide during the installation; this is so that things don't get confused -- you still have 127.0.0.1 == localhost, and still get locally delivered packets if you use the computer name itself. < 1259012186 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :A bit higher-res screen, a slightly faster CPU, a little more RAM and some routines. < 1259012194 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, when someone says calculator, I first think of a TI-83+ < 1259012198 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure they do that nowadays, since it sort of breaks things if you change the hostname but don't remember that /etc/hosts entry. < 1259012199 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just so used to it < 1259012211 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, also, TI-83+ is low res < 1259012214 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not high res < 1259012220 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :by any definition < 1259012221 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Read what I said. < 1259012223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I never claimed otherwise. < 1259012243 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Cheaper calculators just show tables in smaller font; they normally manage one line of input and one of results. < 1259012248 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or maybe a bit more. < 1259012249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Whatever. < 1259012256 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Haha, wow; the HP-48 series calculators have a hierarchical filesystem and a real-time clock. < 1259012272 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, well did you mean one of those that is just [-+*/%0-9] plus "remember number" and "recall number"? < 1259012273 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :basically < 1259012280 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No. < 1259012287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, there is a segment in between? < 1259012290 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I never seen those < 1259012290 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1259012313 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tables you said? hm < 1259012317 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That + sin/cos/etc + a few variables + display settings + simple table calculation (one variable, limited range). < 1259012326 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1259012329 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I have one that's the above but without table calculation lying around somewhere. < 1259012330 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, multi-line screen? < 1259012334 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or single line? < 1259012336 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :One or two lines. < 1259012342 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes; "function calculator" (literal translation) is the name for that segment in Finnish. < 1259012348 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how can you make a table with 1-2 lines? < 1259012355 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well two I guess < 1259012357 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but 1? < 1259012358 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :They display the expression before evaluation, have history and recall, let you use the previous result as a variable and have one line for result. < 1259012360 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Smaller font. < 1259012371 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm okay < 1259012407 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Since you can't use graphical calculators in most of our high-school exams, those things were pretty popular in the sense that everyone had one at exam-time. I'm not sure how the rules go in other places. < 1259012408 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, and those have mushy buttons? < 1259012433 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yes, although less so than cheaper ones. < 1259012434 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :speaking of calculator's, i think something like knuth's tcalc for arithmetic with arbitrarily large integers should be available in all calculators and computing environments < 1259012435 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Cheaper calculators let you spell 5319009 and turn it upside-down and you get a dirty word, eh-ee-hee. < 1259012441 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :oh god i apostrophed forgive me < 1259012442 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: *calculators < 1259012447 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, luckily graphing ones are fine at university. And at high school it was usually "no calculators, or school provided ones" at exams < 1259012449 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Also, arbitrarily large integers are rarely useful. < 1259012469 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :64-bit covers most of all calculations you want to do, 128-bit most of the rest, and anything else should be done on a real computer. < 1259012491 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I needed 10^94 once iirc on my calc. It goes to 10^99 btw < 1259012492 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Oh, and you get enough electricity from a small solar cell to provide power for a device that simple, so you don't need to worry about stale batteries. < 1259012494 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i disagree, dont you realize that the VAST MAJORITY of integers are very, very large? < 1259012505 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: Nothing I said contradicts this. < 1259012511 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or do you not think calculator environments are intended for humans? < 1259012516 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, oh? I don't need to on my TI-83+ either. Because it's batteries last for years < 1259012526 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think I replaced like 4 years ago now last time < 1259012533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and still working fine, has been used a lot < 1259012549 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: 2^64 is a little bit over 10^94. < 1259012555 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*10^99 < 1259012579 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, err what? < 1259012580 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I find it very suspicious that a^b would be over c^d when both a ais523: it irritates me to no end that mathematics is equated with mental arithmetic in the pre-university segments of education <-- me too < 1259012912 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :my thought is that the bagel i just toasted is going to be delicious < 1259012916 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't access hardware; the UML kernel has most of the drivers stripped off. < 1259012920 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Still, disallowing calculators is far more commonplace than reasonable. < 1259012922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : mycroftiv: it's just a forked linux kernel, I think <-- part of official kernel sources < 1259012924 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not a fork < 1259012934 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(if that is the sense you meant it in) < 1259012935 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think the non-calculator bits are to do with things like asking people what sin 30 is and wanting them to work it out from first principles rather than just putting it into their calculators < 1259012946 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :see /usr/src/linux/arch/um < 1259012947 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :iirc < 1259012949 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but yes, they do it for an entire exam even when half of it would be irrelevant < 1259012957 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'd much prefer you to simply have to explain what sin is and how it's calculated rather than trivial menial work. < 1259012969 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: but then people might not get full marks < 1259012973 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :at least sin 30 is easily memorisable < 1259012976 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ehird: IIRC, at GCSE there was a mental arithmetic test that was separate from the main maths tests <-- was using paper and pen allowed? < 1259012981 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Um, duh. < 1259012982 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not really < 1259012985 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1259012989 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: really? < 1259012989 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1259012990 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I couldn't have managed then < 1259012993 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you had to answer on a piece of paper that only had just enough space for the answers < 1259012995 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :none for working < 1259013006 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it was, after all, a /mental/ arithmetic test < 1259013008 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, as I was saying; but then schools have a culture of rote memorisation, copying and menial work. < 1259013011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I can't keep numbers in my head. paper and pen I can manage < 1259013014 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, you had about 5 seconds for each question < 1259013016 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mental arithmetic is just useless < 1259013017 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Ridiculous crap, the lot of it. < 1259013018 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the questions were read out from tape < 1259013019 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, horrible < 1259013021 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: 5 seconds? < 1259013024 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what was the point < 1259013029 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I can't add two two-digit numbers in five seconds < 1259013029 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: to test mental arithmetic < 1259013036 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, okay < 1259013038 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes i can < 1259013041 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :exaggerated slightly there :P < 1259013063 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and who had to take this test? < 1259013076 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :mental arithmetic is useless...until you are piloting a starfreighter that gets struck by an asteroid and you have to rapidly calculate an emergency trajectory to save your desperately needed cargo of medical supplies for the orphans on Zarbulus 4 < 1259013078 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it was part of the maths GCSE when I did it < 1259013085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, GCSE = ? < 1259013101 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Mental arithmetic is indeed totally useless. < 1259013101 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: major exam at about 15 years old < 1259013121 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :basically the lowest qualification that makes you eligible for any job that requires any thought at all, nowadays < 1259013126 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv, ah, that is why I have a backup computer in *my* starship ;P < 1259013154 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mental arithmetic is useful when you have a reputation for being good at maths and all the other students in the school muddle maths and mental arithmetic < 1259013155 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, mhm, good think I didn't live in UK < 1259013175 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: the mark for the top grade is rumoured to be somewhere between 20 and 30 percent < 1259013230 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Uhh, but the Swedish educational system is worse by far. < 1259013236 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, since I completely fail at mental arithmetics. I can manage with paper and pen and time. But I couldn't add any except trivial two digit numbers in my head in 5 seconds (I could manage stuff like: 50+50 or 20+2) < 1259013242 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :allegedly (according to a Murdoch-owned news source found via Google) 16% was enough for a C in maths in 2005, 47% for an A* < 1259013246 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(23+19 I couldn't for example) < 1259013253 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :42 < 1259013260 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, huh < 1259013260 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Murdoch-owned sources: the most reliable kind! < 1259013264 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Wait, no, the opposite. < 1259013275 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hey kids, let's learn our TIMES TABLES < 1259013278 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it's ironic because of the big row between him and Google < 1259013280 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, sure it is. But it isn't doing such stupid tests < 1259013283 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ONE TIMES TWO IS TWO < 1259013285 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I had to sit through that for months in school! < 1259013286 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :TWO TIMES TWO IS FOUR < 1259013290 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :THREE TIMES TWO IS SIX < 1259013294 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there was even a little tape that set times tables to music < 1259013294 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FOUR TIMES TWO IS EIGHT < 1259013298 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AAAAAAAAAAAAAAAARGH MAKE IT STOP KILL ME NOW < 1259013334 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION usually goes "lets see, which one is the closest one I remember, how much to substract/add from that" < 1259013347 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes I'm talking about the times table too :P < 1259013351 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm... theory: part of the reason the pass marks are so low is due to competition between exam boards < 1259013368 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what's an exam board? < 1259013378 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: an organisation responsible for setting and marking exams < 1259013390 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, isn't that some part of the gov? < 1259013395 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :schools get to choose which one to use for each individual exam, within reason < 1259013399 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is in Sweden at least < 1259013401 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it's not directly part of the government < 1259013428 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :here's an example news story: you can see < 1259013430 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :umm, wrong paste < 1259013438 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :here's an example news story: http://www.guardian.co.uk/education/2008/oct/24/science-grades-changed < 1259013456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :basically, Ofqual are a government body that tell the exam boards what to do < 1259013466 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"here's an example news story: you can see" < 1259013472 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Couldn't I before? < 1259013483 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And surely it's self-evident? < 1259013488 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, is there a "this article does not reflect a worldwide view" template on wikipedia *but for a single section*? < 1259013510 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I'm unable to find one < 1259013520 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it may be the same one with a param < 1259013528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, huh. < 1259013535 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: for AnMaster, who doesn't live in the UK and for whom it therefore isn't obvious < 1259013550 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[21:59] ehird: "here's an example news story: you can see" < 1259013550 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[21:59] ehird: Couldn't I before? < 1259013550 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[21:59] ehird: And surely it's self-evident? < 1259013553 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You super fail < 1259013572 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah indeed it seems so < 1259013572 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: {{globalise-section}}, anyway < 1259013575 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1259013883 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://domino.research.ibm.com/comm/research_projects.nsf/pages/hare.index.html "Hare" = "Holistic Aggregate Resource Environment" and there is the plan9 "bunny" there too. < 1259013885 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Reviving for a moment the calculator conversation fork, what I had for exam-time and other unsorted needs, was http://education.ti.com/educationportal/sites/US/productDetail/us_ti30x_iis.html < 1259013885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is it just me < 1259013902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or does that "hare" seem like a bacronym? < 1259013909 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :+spelling < 1259013915 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, you are practically of infinite genius. < 1259013919 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"backronym" is the usual spelling, though < 1259013924 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :umm, why did I say "though" < 1259013924 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes I said +spelling < 1259014326 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dfghjkl; < 1259014444 0 :MigoMipo!unknown@unknown.invalid QUIT : < 1259015010 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :abcdeghj < 1259015011 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1259015137 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: can you summarise plan b for me? < 1259015163 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is that like an upside-down plan 9? < 1259015177 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no, it's an operating system implemented on top of plan 9 < 1259015184 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :at least the 4th edition is < 1259015192 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i gather that older ones were independent < 1259015201 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or perhaps not, ,who knows < 1259015203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*not, who < 1259015504 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1259015562 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1259015576 0 :BeholdMyGlory!n=behold@d83-183-181-73.cust.tele2.se JOIN :#esoteric < 1259015849 0 :pikhq!n=pikhq@75-106-100-139.cust.wildblue.net JOIN :#esoteric < 1259015914 0 :adam_d!n=Adam@AAnnecy-751-1-5-129.w90-52.abo.wanadoo.fr JOIN :#esoteric < 1259015948 0 :kar8nga!unknown@unknown.invalid QUIT :Remote closed the connection < 1259017334 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1259018139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: how are syscalls done in p9? < 1259018296 0 :adam_d!unknown@unknown.invalid QUIT :"Leaving" < 1259018408 0 :Sgeo!n=Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1259018498 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: how are syscalls done in p9?mycroftiv: how are syscalls done in p9?mycroftiv: how are syscalls done in p9?mycroftiv: how are syscalls done in p9?mycroftiv: how are syscalls done in p9?mycroftiv: how are syscalls done in p9? < 1259018504 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1259018564 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION loves laying down in bed with his computer < 1259018568 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric : < 1259018582 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, uh, thanks for imparting that... information. < 1259018610 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :You know what I meant, non-pervertedly, right? < 1259018728 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yes... "non-pervertedly"... < 1259018740 0 :bsmntbombdood!n=gavin@174-16-91-250.hlrn.qwest.net JOIN :#esoteric < 1259018888 0 :ais523!unknown@unknown.invalid QUIT :Remote closed the connection < 1259018889 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :WHEEEEEEEEEEEEEEEEEEEEEEEEE < 1259018891 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :x < 1259018910 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric ::-S < 1259018920 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: What. < 1259018976 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :why /WHE*/? < 1259018986 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Why not? < 1259019008 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"When libc is built, it generates a set of small assembly functions that move the system call number to a register and perform interrupt 0x40." < 1259019013 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Boring and expected! < 1259019050 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Would you rather have "clever"? < 1259019157 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Lying in bed is fun, but there's no way I'm coding like this. Moving to the den < 1259019360 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I tell untruths in bed aaaaaall the time. < 1259019389 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :What/ < 1259019399 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :BRB, disconnecting from wireless < 1259019420 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Lie. < 1259019421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :In bed. < 1259019426 0 :Sgeo_!n=Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1259019469 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: how easy and cheap is it to assemble a box that can run plan 9 perfectly, with the least fuss in operation; using more modern components where possible (i.e. not a 486) as long as it doesn't cause problems? < 1259019480 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :roughly < 1259019485 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(assume a combined cpu server/graphical console; i can extrapolate from that) < 1259019489 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :would be fun to have a native p9 < 1259019590 0 :augur!n=augur@129-2-175-79.wireless.umd.edu JOIN :#esoteric < 1259019804 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :the diagrams I have seen seem to be recommending things like seperate file servers < 1259019810 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1259019865 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: yes < 1259019892 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if i know what a "full box" is, though, then I can take a bit away from it and add a little bit to it to get each machine < 1259019922 0 :Warrigal!unknown@unknown.invalid PRIVMSG #esoteric :Hey, my school has a den, too. < 1259019962 0 :Warrigal!unknown@unknown.invalid PRIVMSG #esoteric :It contains wolves, making it obviously similar to Sgeo's. < 1259020079 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :uh, what? < 1259020114 0 :FireFly!unknown@unknown.invalid QUIT :"Later" < 1259020168 0 :augur!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1259020218 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: who was that to? < 1259020277 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :was wondering what Warrigal was writing, WRT "wolves" < 1259020326 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Who knows :P < 1259020339 0 :Warrigal!unknown@unknown.invalid PRIVMSG #esoteric :In this case, the wolves are all powerful computers. < 1259020354 0 :Warrigal!unknown@unknown.invalid PRIVMSG #esoteric :Why they're called wolves, only Professor Wolffe knows for sure. < 1259020359 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1259020407 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :How powerful, exactly? < 1259020612 0 :Warrigal!unknown@unknown.invalid PRIVMSG #esoteric :I don't know. More powerful than your average desktop computer. Not necessarily more powerful than your average desktop computer five years from now. < 1259020654 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :How huge are they, what kind of casing are they in, how loud are they, and how many are there? The four heuristics of computing power! < 1259020723 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :also applicable to other areas of life < 1259020746 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes < 1259020792 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, um... yeses. < 1259020793 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*yes