←2010-10-29 2010-10-30 2010-10-31→ ↑2010 ↑all
00:00:43 <catseye> < elliott> Vorpal: just calls the makefile in the parent directory
00:00:53 <catseye> dependency injected inversion-of-control visitor pattern
00:01:21 <catseye> < elliott> $F00, 0xF00, or F00h? I just wanna spark a religious war, is that so wrong?
00:01:35 <catseye> $ for 6502. h suffix should die.
00:02:05 <Sgeo> Note to self: Do not aneurism early while reading this text
00:02:06 <Sgeo> "For instance, the programmer in the examples above may have written code to check for correctness on the client's side (that is, the user's browser)."
00:02:14 <catseye> < elliott> anyway but $f00 is so pretty and nice, is it not fizzie?
00:02:25 <catseye> it is not fizzie. Also, I didn't realize you could use it on x86 anywhere.
00:03:26 <Sgeo> The author proceeds to explain why it's a crap idea in the next paragraph
00:03:45 -!- nooga has joined.
00:07:34 <catseye> storkbot: die die die!
00:07:34 <storkbot> catseye: Unknown command. Type '|help' for help.
00:07:41 -!- storkbot has quit (Remote host closed the connection).
00:08:26 -!- catseye has quit (Quit: Lost terminal).
00:09:22 -!- catseye has joined.
00:09:54 -!- catseye has quit (Client Quit).
00:18:10 -!- catseye has joined.
00:19:11 <catseye> Cool, I have xfce4 with actual "window management" featurez now
00:19:16 <catseye> And it does the virtual desktops thing
00:19:25 <catseye> Is pretty sweet
00:19:35 <catseye> Unicode test time!
00:20:46 <catseye> But no?ne is there.
00:20:50 <catseye> Did that look right?
00:20:58 <catseye> 'Cos it don't to me.
00:22:29 <zzo38> catseye: It is not right. It has a question mark in there.
00:23:41 <catseye> Thanks zzo38. I think I see what I need to fix.
00:23:54 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
00:24:38 <catseye> One sec...
00:24:40 -!- catseye has quit (Quit: leaving).
00:25:38 -!- catseye has joined.
00:26:07 <catseye> So, coördination. Hey, that looks right to me.
00:26:16 <elliott> ditto
00:26:32 <catseye> It didn't work when I tried it in the bash command line, but, well, ok. I don't need it there yet!
00:30:07 * Sgeo wonders why biennale.py doesn't del the variable names and function names it uses
00:30:19 <catseye> The scite distribution is a semi-zipbomb. It creates two versionless directories.
00:31:04 <quintopia> anyone here know what to do if xrandr says "no protocol specified can't open display :0.0" and it can't open display 1 or 2 or anything either?
00:31:05 <elliott> Sgeo: ...?
00:31:16 <quintopia> surely there's gotta be a way to figure out what display is displaying?
00:31:18 <Sgeo> elliott, Python virus
00:31:29 <elliott> Sgeo: Why would it del anything?
00:31:52 <Sgeo> To prevent accidentally interfering with the host program
00:32:13 -!- poiuy_qwert has quit (Ping timeout: 245 seconds).
00:33:16 <catseye> quintopia: check /tmp for stale named sockets? this is largely a guess
00:33:52 <catseye> elliott: the file manager kind of sucks a little bit in that it doesn't always understand what a "directory" is
00:34:12 <elliott> catseye: how doesn't it?
00:34:46 <quintopia> catseye: figured it out. can't run it as su.
00:34:57 <quintopia> (dunno why, but de-suing worked)
00:35:02 <Sgeo> "Viruses cannot infect hardware. True. "
00:35:03 <Sgeo> Hmm
00:35:19 <elliott> Sgeo: yes you can, no it's not particularly relevant, the end
00:35:19 <Sgeo> What does something like flashable CMOS count as?
00:35:26 <catseye> elliott: i double-click on 'build', all good, it cd's there; i double-click on another directory, nothing. then 'build' doesn't let itself be changed into either. i either triggered a bug, or i have something messed up.
00:35:37 <Sgeo> Software, or firmware, i guess
00:35:37 <Sgeo> Hmm
00:35:53 <elliott> catseye: that's... uh... that should work.
00:35:58 <elliott> catseye: i can click directories forever here.
00:36:21 <elliott> catseye: i can also click the buttons at the top to navigate through the path i'm in, and go to the *directories* inside :P
00:36:56 <catseye> elliott: do your dirs always have folder icons? some of mine have file icons.
00:37:02 <catseye> well "piece of paper" icons
00:37:05 <elliott> catseye: always folders here. screenshot please?
00:37:09 <catseye> one min
00:37:09 <elliott> catseye: are they special directories in any way?
00:37:14 -!- poiuy_qwert has joined.
00:37:15 <catseye> not at all
00:37:22 <elliott> catseye: and it is thunar, yes?
00:37:25 <catseye> hm, i hope this supports screenshots
00:37:30 <elliott> catseye: xfce doesn't, I use scrot
00:37:38 <catseye> Thunar 1.0.1
00:37:43 <catseye> ok
00:37:46 <elliott> catseye: $ sleep 2; scrot -bs foo.png
00:37:53 <elliott> catseye: enter, move to the window you want, wait two seconds, click it
00:37:56 <elliott> voila, screenshot of window
00:38:05 <elliott> I have Thunar 1.0.2, but Thunar definitely isn't that buggy :)
00:38:12 <catseye> k
00:38:32 <elliott> catseye: pmake is similar to bsdmake right?
00:38:38 <elliott> oh, pmake = netbsd make
00:38:38 <catseye> installing scrot
00:38:40 <elliott> ok, perfect :)
00:38:44 <catseye> pmake = bsd make, yes
00:38:53 <catseye> except for the FAKE PMAKE project
00:39:11 <catseye> which was some dude implementing make in perl for NO REASON
00:39:22 <elliott> heh
00:39:36 <elliott> "Performs the same function as make(1) but is written entirely in perl. A subset of GNU make extensions is supported. For details see Make for the underlying perl module."
00:39:38 <elliott> wow.
00:39:54 <elliott> I like how he doesn't even bother innovating, everyone else ever realised how bad makefiles are for building software projects
00:40:05 <elliott> catseye: oh wow, this almost works with pmake:
00:40:05 <elliott> root=$(dirname $(lastword $(MAKEFILE_LIST)))/..
00:40:05 <elliott> include $(root)/include.make
00:40:09 <elliott> oh wait
00:40:11 <elliott> *shell dirname
00:40:25 <elliott> now it should work entirely. maybe
00:40:28 <catseye> innovating requires creativity. implementing just requires following instructions.
00:40:36 <catseye> we are following instructions SO HARD right now
00:41:52 <elliott> "Many developers think that Python will be the language of the future. It is multiplatform, but not easy to write."
00:42:00 <elliott> i wonder what language they think is easier to write
00:42:33 <elliott> "Of course adding a piece of new code to a software might always damage it, but this is not its main purpose. Additionally, Python is only useful on servers, which are usually run by professionals who know how to trace and treat a virus."
00:42:37 <elliott> these people are retards
00:42:44 <elliott> yeah i've never used a gui python application
00:42:44 <elliott> ever
00:42:50 <elliott> "That means 'biennale.py' would never infect personal/ private/ home computers?
00:42:51 <elliott> 0100101110101101.ORG: Probably not, at least not this version. Maybe in future when the language will be also used on PCs, there might be a danger."
00:42:52 <elliott> lol
00:44:39 -!- catseye has quit (Ping timeout: 240 seconds).
00:47:24 -!- catseye has joined.
00:47:33 <catseye> SO HARD, in fact, that the machine lost power
00:53:07 <elliott> catseye: do you have any make-fu :(
00:53:20 <elliott> catseye: also you said the h prefix should die?
00:53:36 <elliott> http://catseye.tc/projects/befos/src/boot/beboot.s
00:53:38 <elliott> i see h at the end!
00:53:45 <elliott> (ok so i wanted to steal your bootloader code)
00:54:50 <catseye> that was translated from TASM
00:54:54 <catseye> which only does h iirc
00:54:59 <elliott> ah.
00:55:05 <elliott> catseye: also, yes $ does work in nasm at least
00:55:08 <elliott> and 0x is so ugly
00:55:09 <catseye> anyway, not a practice i want to continue
00:55:11 <elliott> 0xabc vs $abc
00:55:16 <elliott> latter is much nicer looking
00:55:23 <elliott> and a better cue for the eyes
00:55:31 <catseye> i approve of its 6502homageness
00:56:38 <elliott> catseye: still though, urgh, please tell me you can make my makefile system work
00:56:53 <elliott> which magic
00:57:19 <catseye> no
00:57:21 <catseye> i can't
00:57:26 <elliott> catseye: *cry*
00:57:41 <catseye> make is a no
00:58:09 <elliott> it is, but... eh
00:58:20 <catseye> SciTEGTK.cxx:656: error: 'MAX_PATH' was not declared in this scope
00:58:21 <catseye> and why is that
00:58:47 <catseye> ("because people cannot write software" is technically correct but will not count towards your total)
01:00:29 <elliott> root := $(dir $(lastword $(MAKEFILE_LIST)))/..
01:00:31 <elliott> slightly better
01:01:30 <catseye> Hah. MAX_PATH is a WindwOS thing.
01:03:30 <catseye> (See, I said I would)
01:03:48 <Gregor> PATH_MAX is the equivalent, but don't use it.
01:04:27 <Gregor> (Some OSes don't have a maximum path length, and so either don't define PATH_MAX or define it arbitrarily)
01:04:42 <catseye> Max Path. He's on the case. He's one dangerously confused sumbitch. And he is ON the case, y'hear?
01:06:31 <catseye> CXXFLAGS:=$(CXXFLAGS) -DMAX_PATH=260
01:06:36 <catseye> that'll learn 'em
01:07:24 <catseye> and will probably give me all the limitations of WindwOS in this regard. nice
01:07:37 -!- Mathnerd314 has quit (Ping timeout: 245 seconds).
01:08:16 <catseye> yeah, now it's stuck on '_environ'
01:09:20 <catseye> yeah, i need to define 'unix', nice
01:09:26 <catseye> did anyone tell me this?
01:09:49 <catseye> no. no one told me this
01:11:01 <elliott> boot//../common.make:4: warning: overriding commands for target `/home/elliott/code/tempo/build'
01:11:01 <elliott> common.make:4: warning: ignoring old commands for target `/home/elliott/code/tempo/build'
01:11:03 <elliott> dear god
01:11:21 <Sgeo> You look better when I'm drunk
01:11:53 <elliott> thanks
01:12:13 <catseye> build damn you build
01:12:39 <catseye> hey! i did write a boot block for that, didn't i
01:12:49 <catseye> it does almost nothing except boot, iirc
01:13:11 <catseye> ld: cannot find -ldl
01:13:17 * catseye blinks
01:16:42 <elliott> catseye: mine's going to do nothing except boot :P
01:17:32 <catseye> it built!
01:17:40 <catseye> elliott: what did you decide to write it in?
01:17:49 <elliott> catseye: nasm, how boring is that?
01:18:07 <catseye> nasm is an exciting mystery like rainbows and giraffes
01:18:12 <elliott> catseye: but it's ok, i'm stuffing all my weirdness into makefiles
01:18:16 <catseye> and, of course... electricity
01:19:12 <elliott> catseye: for example
01:19:13 <elliott> build := $(abspath $(root)/build)
01:19:14 <elliott> empty_string :=
01:19:14 <elliott> space := $(empty_string) #
01:19:14 <elliott> build_escaped := $(subst $(space),\ ,$(build))
01:19:14 <elliott> $(build_escaped):
01:19:15 <elliott> mkdir $(build_escaped)
01:19:26 <elliott> catseye: "you are not expected to understand this"
01:19:40 <elliott> catseye: all that lets you have spaces in the build path :)
01:20:45 -!- dbc has quit (Ping timeout: 276 seconds).
01:20:45 -!- nooga has quit (Read error: Connection reset by peer).
01:23:19 <elliott> catseye: this is worse than recursive make
01:23:24 <elliott> catseye: but damn, it's GNU.
01:23:36 <elliott> possibly the most gnu thing i've ever written
01:25:38 <catseye> i see how you are using the adjective gnu there it is very apropos
01:26:32 <catseye> elliott: http://imgur.com/2OtrI
01:26:50 <catseye> also, my launch panel icons are... mostly missing, actually
01:27:06 <catseye> i think i shall try rebuilding it or somehting
01:27:45 <elliott> catseye: hey i should have $(AS) be a var so people can set it to yasm :D
01:27:49 <elliott> ASFLAGS
01:27:53 <catseye> yup, file manager has a one-directory-change limit. after that, NO MORE CD FOR YOU!
01:27:59 <elliott> catseye: you're missing icons for one
01:28:03 <catseye> yes that will be useful
01:28:08 <elliott> catseye: also, gtk thjemes
01:28:09 <catseye> yes, yes i am
01:28:11 <elliott> *themes
01:28:18 <elliott> catseye: try going into appearances and setting it to something that isn't Raleigh :P
01:28:19 <Sgeo> "The solution, oddly enough, is to artificially pad the encryption process with unnecessary computation so that short computations complete as slowly as long ones.
01:28:20 <Sgeo> "
01:28:21 <elliott> for instance GREY MIST
01:28:22 <Sgeo> I understand why
01:28:25 <Sgeo> It makes sense
01:28:31 <Sgeo> But it still gives me a headache
01:28:46 <catseye> FORI=1TO1000:NEXT gives you a headache?
01:29:00 <catseye> (today is BASIC day)
01:29:44 <Sgeo> I just don't think I'd think of these things on my own
01:30:06 -!- augur has joined.
01:30:26 <catseye> elliott: "going into appearances"?
01:30:31 <catseye> "Raleigh"?
01:30:42 -!- dbc has joined.
01:30:45 <elliott> catseye: xfce menu
01:30:45 <elliott> settings
01:30:47 <elliott> appearances
01:30:52 <elliott> *appearance
01:30:58 <catseye> don't got
01:31:05 <elliott> catseye: ok, let me confirm
01:31:07 <catseye> yowza!
01:31:09 <elliott> catseye: what package did you install for xfce
01:31:32 <catseye> NOT ENOUGH OF THEM, apparently
01:32:25 <catseye> ./xfce4-desktop/work ./xfce4-exo/work ./xfce4-panel/work ./xfce4-session/work ./xfce4-terminal/work
01:32:31 <catseye> also the xfwm4
01:32:49 <catseye> I... will install everything else that says 'xfce4' on it
01:32:52 <elliott> catseye: is there just an xfce4 package?
01:33:16 <catseye> /home/catseye/pkgsrc/x11/xfce4-gtk2-engine good bet
01:33:20 <catseye> elliott: no. no there isn't.
01:34:15 <catseye> ah there's also an xfce4-settings package
01:34:28 <catseye> STRANGE how these are not DEPENDENCIES>
01:34:40 <catseye> >>> hi i like arrows >>>
01:36:16 <catseye> Also, how do you add items to the menu? Wait, I bet that's part of the system I don't have installed yet,
01:36:19 <catseye> so n/m
01:36:47 -!- augur has quit (Ping timeout: 272 seconds).
01:37:21 <elliott> catseye: but yeah just install everything :P
01:38:17 <elliott> define make_directory
01:38:17 <elliott> @echo "MKDIR\t"$(subst $(space),\ ,$@)
01:38:17 <elliott> @mkdir $(subst $(space),\ ,$@)
01:38:17 <elliott> endef
01:38:21 <elliott> this is just great
01:38:27 <catseye> you are sick
01:38:32 <elliott> catseye: i know right?
01:40:04 <catseye> ok trying this out now
01:40:05 -!- catseye has quit (Quit: Lost terminal).
01:41:45 -!- catseye has joined.
01:41:54 <elliott> catseye: common.make http://sprunge.us/ACDb
01:41:55 <elliott> catseye: start of boot/Makefile http://sprunge.us/VEFZ
01:41:57 <elliott> catseye: behold the insanity!
01:43:06 <elliott> catseye: alas, it does not yet handle tabs in the BUILD directory! i shall fix.
01:43:12 <elliott> gnu make *really* needs user-defined macros.
01:43:46 <elliott> WAIT
01:43:52 <elliott> catseye: I COULD RUN THE MAKEFILES THROUGH CPP OMG
01:44:31 <catseye> hoi
01:44:45 -!- augur has joined.
01:44:49 <elliott> catseye: i am so going to do that
01:45:02 <elliott> because i'm kerr-AZY
01:45:06 <elliott> (i'm actually not going to.)
01:45:13 <catseye> GAR
01:45:23 <catseye> xfce4 is in "meta-pkg"
01:45:30 <catseye> *meta-pkgs
01:45:44 <catseye> elliott: do it it will be a blast
01:45:48 <elliott> catseye: no :P
01:45:51 <catseye> or... ansi colors
01:45:53 <catseye> somewhere
01:45:55 <catseye> *colours
01:46:46 <elliott> catseye: ansi colours, maybe!
01:46:51 <elliott> catseye: i might bold all the command names or something :)
01:47:14 <elliott> OMG
01:47:16 * elliott amazing idea
01:47:44 <elliott> catseye: $(build)/boot/bootsector: prog = $(AS) ; $(generic)
01:47:47 <elliott> generic would then do like
01:47:56 <elliott> $(prog) $($(prog)FLAGS) $< -o $@
01:47:58 <elliott> :DDDDDDDdddddddd
01:48:29 <catseye> what is this i don't even
01:48:46 <elliott> catseye: you can override variables for a rule's body in the dependencies
01:48:50 <elliott> catseye: then ; just acts like newline-tab
01:49:02 <elliott> generic would be a variable defined with the define ... endef syntax
01:49:20 <catseye> this is pmake?
01:49:27 <elliott> catseye: hell no, gnu make
01:49:33 <catseye> ok
01:49:33 <elliott> catseye: none of the other makes are exciting enough to let this work
01:49:35 <catseye> this is gnu make?
01:49:38 <elliott> yes
01:50:25 <catseye> k-RRRRAAAZy
01:51:58 <elliott> catseye: on the upside, this build system will scale to the hideously complex Tempo 2024, when it's the most popular OS on the planet :P
01:53:59 <catseye> i'll be an old man then
01:54:03 <catseye> running Falcon on your OS
01:54:22 <catseye> disturbing image, that
01:54:40 <elliott> catseye: oh sweet, i have to escape it in EVERY SINGLE RULE
01:54:43 <elliott> i love this
01:54:44 <catseye> actually, huh. that's ony 14 years away. i won't be THAT old.
01:54:47 <catseye> *only
01:54:52 <elliott> catseye: you are already THAT old.
01:54:52 <Sgeo> I still need to email Fidelity
01:55:52 <catseye> Of course 2024 could be just the version number, not the year
01:58:35 -!- storkbot has joined.
02:01:45 <elliott> catseye: woo, my build system is blowing up!
02:02:50 <catseye> woo
02:02:54 <catseye> totally unexpected, that
02:04:52 <elliott> $(eval include $(build)/config.make)
02:04:56 <elliott> catseye: this could not get any more hilarious
02:05:17 <elliott> aww not quite
02:05:27 <catseye> no
02:05:27 <catseye> NO
02:05:53 <elliott> catseye: wut
02:06:01 -!- zzo38 has quit (Remote host closed the connection).
02:07:11 <catseye> eval include NO
02:07:19 <elliott> catseye: doesn't actually help, as it turns out :)
02:07:27 <catseye> GOOD
02:07:37 <elliott> catseye: omg i can use $(shell) without a variable
02:07:39 <elliott> TOTAL POWER
02:07:55 <elliott> $(shell $(MAKE) -f $(root)/common.make $(build)/config.make)
02:08:04 <elliott> IT SO NEARLY ALMOST WORKS OMG
02:08:11 <elliott> i am a bad person
02:08:14 <catseye> this is certainly an interesting path you've gone down in your BOOT LOADER PROJECT
02:08:20 <elliott> catseye: *OS PROJECT
02:08:35 <catseye> BOOTOS - It boots!
02:08:47 <elliott> catseye: isn't it, like, a rule that OSes have to have hideously complex build systems?
02:08:54 <catseye> True!
02:09:02 <catseye> complex *and* objectionabl
02:09:04 <catseye> e
02:10:29 <elliott> $(shell echo make -w -f $(root)/common.make $(build)/config.make >foo)
02:10:30 <elliott> $(shell sh foo)
02:10:30 <elliott> $(shell rm foo)
02:10:31 <elliott> ALMOST WORKS
02:10:57 <elliott> i hate myself for existing
02:11:19 <catseye> you should take out all the 'rules' stuff and just use this language
02:11:27 <elliott> :D
02:11:33 <elliott> catseye: i should scrap all of this and just use recursive make, shouldn't i?
02:11:40 <elliott> *should just *and use
02:12:01 <catseye> are you doing this to try to avoid recursion?
02:12:08 <catseye> *this badness
02:12:13 <elliott> catseye: well, i'm doing it as part of something that's like 500x better than recursion
02:12:19 <elliott> but, with recursion, it would be a relatively simple task, yes.
02:12:21 <elliott> well, "relatively"
02:12:24 <elliott> not actually all that less, but
02:12:33 <elliott> make: /home/elliott/code/tempo/common.make:32: pipe: Too many open files
02:12:34 <elliott> /home/elliott/code/tempo/common.make:36: /home/elliott/code/tempo/build/config.make: No such file or directory
02:12:34 <elliott> make: /home/elliott/code/tempo/common.make:32: pipe: Too many open files
02:12:34 <elliott> make: *** No rule to make target ``/home/elliott/code/tempo/build/config.make'', needed by `/home/elliott/code/tempo/build'. Stop.
02:13:23 <catseye> that is the first time i've seen make complain about THAT
02:13:32 <elliott> ditto, man. ditto.
02:13:53 <elliott> oh my dear god it almost works
02:15:10 <elliott> common.make:43: /home/elliott/code/tempo/build/config.make: No such file or directory
02:15:10 <elliott> MKDIR/home/elliott/code/tempo/build
02:15:10 <elliott> /home/elliott/code/tempo/boot//../common.make:43: /home/elliott/code/tempo/build/config.make: No such file or directory
02:15:10 <elliott> CONFIGCopying default configuration. make: `/home/elliott/code/tempo/build/config.make' is up to date.
02:15:10 <elliott> /bin/sh: Syntax error: EOF in backquote substitution
02:15:12 <elliott> make: *** [/home/elliott/code/tempo/build/config.make] Error 2
02:15:14 <elliott> catseye: could it get any better?
02:15:28 <Sgeo> My dad is claiming that some of the information I received in the CPR class is dangerously wrong
02:15:41 <elliott> Sgeo: Your dad claims an awful lot of things.
02:15:46 <elliott> An *awful* lot.
02:15:48 <Sgeo> elliott, my dad _is_ a doctor
02:16:04 <elliott> Yes, sure...
02:16:27 <elliott> dear god wtf is up with my build system
02:17:11 <catseye> ok so
02:18:28 <catseye> did i not install ghc yet? oh right, i think i tried building it from source, where it needs to be bootstrapped
02:18:40 <catseye> the pkgsrc looks like it's installing ok so far
02:18:46 <elliott> ifeq ($(shell test -e $(build)/config.make; echo $$?),0)
02:19:01 <elliott> catseye: if you install pkgsrc ghc, I'll walk you through building the latest ghc.
02:19:09 <elliott> catseye: It's alright, really, it just takes a little while.
02:19:23 <catseye> oh right i'm sure i remember all this from before as if in a dream
02:19:44 <catseye> right
02:19:46 <catseye> it bombs out here
02:19:48 <catseye> /usr/bin/ar: Control/Concurrent_stub.o: No such file or directory
02:20:06 <elliott> catseye: install the binary package
02:20:13 <catseye> elliott: i will try!
02:20:14 <elliott> catseye: you won't be using this, anyway, it's just to compile the new one
02:20:24 <elliott> OMG
02:20:27 <elliott> catseye: GNU MAKE HAS MACROS
02:20:28 <elliott> YES
02:20:30 <elliott> WOOOOOO
02:20:37 <elliott> I AM THE WORST KIND OF PERSON
02:22:15 <catseye> they don't got one
02:22:20 <catseye> elliott: YES YOU ARE
02:22:29 <catseye> they srsly have no bin pkg for ghc for 5.0.2
02:22:38 <elliott> catseye: ok. that's ok.
02:22:44 <catseye> trying slightly older set of pkgs
02:22:46 <elliott> catseye: because we can get our own
02:23:00 <elliott> wait maybe not
02:23:11 <catseye> ok they got a slightly older pkg
02:23:17 <elliott> yeah install that
02:23:20 <catseye> (Q2 instead of Q3)
02:23:31 * catseye waits forever
02:23:32 <elliott> catseye: http://sprunge.us/BDgW
02:23:34 <elliott> catseye: look at this
02:23:37 <elliott> catseye: look at the fucking amazing
02:24:14 <catseye> targets with embedded newlines
02:24:32 <catseye> or in fact, just a newline
02:24:40 <elliott> catseye: it's... yeah... i think i might use autotools
02:25:05 -!- augur has quit (Ping timeout: 276 seconds).
02:26:35 <catseye> oh when autotools looks attractive, you KNOW you're in a fine position
02:27:48 <Sgeo> elliott, apparently, the disagreement is because he's not a part of the general public
02:27:55 <elliott> Sgeo: ???
02:27:59 <elliott> catseye: yup
02:28:17 <Sgeo> i can understand how the rules might be different for trained laypersons and medical responders
02:28:20 <Sgeo> I
02:28:34 <catseye> the general public have a different kind of CPR that needs to be performed on them
02:28:39 <pikhq> Well, autotools does beat most of the other complicated build systems out there, primarily due to having better-understood limitations than others.
02:28:54 <elliott> pikhq: do you want to see my common.make? you will like it
02:29:04 <Sgeo> The general public finds it tricky to find a pulse, and might mistake non-pulse for pulse
02:29:13 <elliott> pikhq: http://sprunge.us/ZbMN
02:29:19 <elliott> pikhq: It is the most horrible thing I have ever written in any language.
02:29:21 <pikhq> Sgeo: The taught CPR procedures recently changed due to new evidence of the efficacy of various methods.
02:29:21 <elliott> pikhq: FEAST YOUR EYES
02:29:30 <elliott> pikhq: FEAST THEM
02:29:52 <pikhq> Sgeo: Also, people find it hard to find a pulse? WTF. Takes all of an instant to find it on the wrist.
02:30:02 <Sgeo> pikhq, we were taught that rescue breaths are good if you're comfortable/have a face mask, but compressions are the priority
02:30:03 <elliott> pikhq: FEEEEEAST
02:30:29 <Sgeo> And it's ok to do compressions without the rescue breaths
02:30:38 <pikhq> Sgeo: Yes. That's a very recent change in procedure.
02:30:43 <pikhq> Sgeo: Like, "few months ago".
02:30:48 <elliott> pikhq: And an example directory Makefile using this system: http://sprunge.us/YIYA
02:31:04 <elliott> I call it "system"; more like "abomination".
02:31:14 <pikhq> elliott: Isn't GNU Make revolting?
02:31:29 <elliott> pikhq: Yes, but not nearly as revolting as what I did to it without its consent.
02:31:43 <elliott> pikhq: I'm hoping to make the bootsector rule look like this:
02:31:57 <elliott> $(build)/boot/bootsector: compiler=AS ; $(generic)
02:32:00 <elliott> pikhq: With EVILNESS.
02:32:03 <catseye> GHCi, version 6.8.3: http://www.haskell.org/ghc/ :? for help
02:32:05 <catseye> w00tness
02:32:09 <elliott> pikhq: This will involve generic doing $($(compiler)).
02:32:13 <elliott> catseye: Okay, I'll guide you through.
02:32:23 <catseye> elliott: i need to get food first
02:32:27 <elliott> catseye: alright
02:32:29 <catseye> at least
02:32:30 <elliott> catseye: get lots of it
02:32:34 <elliott> and a thermos flask of coffee
02:32:36 <elliott> lots of it
02:32:37 <pikhq> elliott: Believe me, you want implicit rules. You wants it.
02:32:39 <catseye> i also have like a dozen other things going on
02:32:40 <elliott> or tea
02:32:44 <catseye> k
02:32:46 <elliott> pikhq: for a *bootsector*? no :P
02:32:50 <elliott> pikhq: but, yeah, I might
02:32:54 <elliott> pikhq: in that case, it'll look like
02:33:23 <elliott> pikhq: $(build)/%.o: %.s $(dir $*) compiler=AS ; $(generic)
02:33:28 <elliott> pikhq: Or something. You see, I am *evil*.
02:33:48 <pikhq> elliott: A lot of people *really* discount how nice implicit rules make make.
02:34:00 <elliott> pikhq: Problems I'm trying to solve right now: With that $(build)/config.make rule, currently you get an "omg not found" error before it notices the rule and fixes it; I'd like to hide this. Also: "make build/boot/bootsector" should work rather than having to type out the full path.
02:34:16 <elliott> pikhq: Also: Fix general lack of soul due to programming this piece of shit.
02:34:17 <pikhq> elliott: Fun fact: the following is an entirely valid makefile for building a program with files foo.c, bar.c, and baz.c: foo: bar.c baz.c
02:34:21 <elliott> I know.
02:34:25 <elliott> pikhq: It is not nearly sufficient for my purposes :P
02:34:41 <pikhq> elliott: Yeah, well.
02:34:45 <elliott> pikhq: I need per-directory makefiles because of the relative complexity of building some of my components -- this is an *operating system* -- but I don't really want to use recursive make.
02:34:58 <elliott> pikhq: And I'd like it to automatically build in source-tree/build, but have that be configurable.
02:35:10 <elliott> pikhq: And I'd like to have a build-directory/config.make file with compiler settings, etc.
02:35:26 <elliott> pikhq: On the other hand... right now, recursive make is looking appealing as *fuck*.
02:35:28 <pikhq> elliott: Not only do you not want to use recursive make, you absolutely *should not* unless there are absolutely no cross-directory dependencies.
02:35:50 <elliott> pikhq: Cross-directory dependencies would simply be "directory Y can only be built after everything in directory X is done".
02:36:01 <pikhq> elliott: No. Recursive make is a tempting seductress, but she will do nasty things to your unmentionables.
02:36:23 <elliott> pikhq: I've already raped the slightly-demented kitten that is GNU Make to death. I think I deserve the torture.
02:36:34 <pikhq> elliott: It absolutely *breaks* dependency handling.
02:36:37 <elliott> pikhq: I mean come on, I've defined a string escape function just so you can have spaces in your build directory.
02:36:45 <elliott> pikhq: And, uh, dude:
02:36:46 <elliott> root := $(dir $(lastword $(MAKEFILE_LIST)))/..
02:36:46 <elliott> include $(root)/common.make
02:36:49 <elliott> Just... dude.
02:36:56 <pikhq> elliott: Down that road lies only being able to do builds from a clean source dir.
02:37:04 <elliott> pikhq: There is no unclean source dir.
02:37:08 <elliott> Build directory.
02:37:32 <pikhq> elliott: You will get raped.
02:37:44 <elliott> pikhq: The alternative right now is... autotools.
02:37:54 <pikhq> elliott: This is like relying on the specific behavior of a specific buffer overflow for a program. It. Will. Break.
02:38:26 <pikhq> elliott: And what's more, you lose a lot of parallelism. Because no one make process has a complete view of the dependency graph.
02:38:44 <elliott> pikhq: Okay, firstly, shut up, secondly, as I said, there can be no inter-directory parallelism *anyway(.
02:38:49 <elliott> Thirdly, *the alternative is this monstrosity*.
02:39:11 <pikhq> elliott: Recursive make *is* a monstrosity.
02:39:34 <elliott> pikhq: But a monstrosity that doesn't drive me insane to code it. Stop being a zealot.
02:39:35 <elliott> :p
02:39:39 <pikhq> elliott: Most of the problems with make-based build systems come about because of recursive make.
02:39:40 <pikhq> elliott: Honest.
02:39:44 <elliott> pikhq: I KNOW
02:39:48 <elliott> pikhq: And this is not a conventional build.
02:39:57 <pikhq> elliott: Which only makes it worse.
02:40:10 <elliott> pikhq: Has anyone ever told you how you don't shut up when you're being a zealot?
02:40:46 <pikhq> elliott: Okay, fine. Build it your way. I refuse to have to package any of it.
02:41:06 <elliott> pikhq: I think you'll find you use software compiled with recursive make.
02:41:38 <pikhq> elliott: I think you'll find that I use a lot of shitty software.
02:41:57 <elliott> pikhq: I suppose you refused to use codu.org when it was omg served with the wrong headers too.
02:42:21 <pikhq> Nope, I just didn't stop hounding Gregor about it sucking.
02:42:25 <pikhq> :P
02:42:49 <elliott> pikhq: Okay, *you* implement my build system.
02:43:17 <pikhq> elliott: Details about the program?
02:43:39 <elliott> pikhq: It's an operating system. It *will* involve custom rules, it *will* involve calling ld manually.
02:43:52 <elliott> pikhq: It *will* have subdirectories with files that need to be built differently.
02:43:54 <pikhq> elliott: Oh, an OS? So each directory would be a seperate program?
02:43:57 <elliott> No.
02:44:00 <elliott> Each directory is another component.
02:44:01 <pikhq> Well.
02:44:05 <pikhq> Component.
02:44:05 <elliott> e.g. bootloader, kernel, etc.
02:44:24 <elliott> pikhq: It must be built in either SRC_ROOT/build or a user-specified build directory. The structure inside must mirror the outside directory structure.
02:44:33 <pikhq> That can't really have dependencies on each other except for maybe depending on the entire results of the directory...
02:44:37 <elliott> pikhq: "make build_dir/foo" must work. "make" must work. Preferably, "make some_dir.all" should work.
02:44:46 <elliott> pikhq: "make clean" should get rid of build_dir.
02:44:56 <pikhq> So, what you're saying is that recursive make is the correct answer.
02:45:00 <elliott> pikhq: Preferably, there will be some included makefile you could edit to set CC, AS, etc.
02:45:03 <elliott> pikhq: THANK YOU
02:45:08 <pikhq> This is one of, like, 10 cases that recursive make is justified.
02:45:09 <elliott> I already knew that :P
02:45:23 <pikhq> Gregor: No, I haven't validated a single one.
02:45:26 <pikhq> Gregor: :P
02:45:36 <Gregor> pikhq: So for all you know it's 100% pure rubbish!
02:45:50 -!- Quadrescence has quit (Read error: Connection reset by peer).
02:45:59 <pikhq> Gregor: Well, yeah, who cares about that Gregor Richards guy anyways?
02:46:13 <Gregor> THE WORLD CARES, PIKHQ
02:46:15 <Gregor> THE WORLD CARES
02:46:28 <pikhq> Good thing I put it into an asylum, then.
02:46:56 <elliott> pikhq: Gahahaha I just realised this has similar problems
02:47:16 <pikhq> elliott: Have you considered replacing Make?
02:47:20 <elliott> pikhq: many times
02:47:23 * pikhq feeds into NIH some more
02:47:27 <elliott> root := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))/..)
02:47:27 <elliott> build := $(root)/build
02:47:27 <elliott> include $(build)/config.make
02:47:28 <elliott> WOO
02:47:31 <elliott> so do not want that in every file.
02:48:27 <elliott> pikhq: arithmetic in gnu make: http://www.cmcrossroads.com/ask-mr-make/6504-learning-gnu-make-functions-with-arithmetic
02:48:57 <Gregor> http://codu.org/websplat/imgs/favicongoomba.php?domain=mozilla.org&frame=s6r.png
02:49:06 <elliott> Gregor: xD
02:49:46 <elliott> Gregor: :( gnu.org's is too hard to make out
02:50:01 <elliott> pikhq: I am so tempted just to make these into shell scripts.
02:50:58 -!- augur has joined.
02:53:51 <quintopia> gregor: that is best
02:56:00 <catseye> i would like a make which just implements the common functionality of gnu make and bsd make
02:56:04 -!- augur has quit (Ping timeout: 252 seconds).
02:56:24 <elliott> catseye: lcdmake
02:57:03 <pikhq> I would like a make which handles spaces in file names.
02:57:15 <elliott> pikhq: IT DOES
02:57:17 <elliott> pikhq: you just have to escape them
02:57:20 <elliott> foo\ bar\ baz:
02:57:26 <elliott> note, in there, $@ will be the unescaped version
02:57:29 <elliott> because make just likes fucking with you
02:57:30 <pikhq> elliott: Doesn't work for implicit rules.
02:57:31 <Sgeo> http://mashable.com/2010/10/29/microsoft-silverlgiht-html/
02:57:34 <elliott> pikhq: hahahahaha
02:57:40 <elliott> pikhq: hahahahaaaaa
02:57:55 <pikhq> elliott: Yes, make sucks ass.
02:58:09 <elliott> pikhq: so have you written my build system yet
02:58:16 <pikhq> Nope.
02:59:17 <catseye> < pikhq> elliott: Details about the program?
02:59:23 <catseye> don't listen to him it's a boot block
02:59:40 <elliott> catseye: not even that yet
02:59:43 <elliott> it, uh
02:59:45 <elliott> it's this
02:59:48 <elliott> boot: hlt; jmp boot
02:59:49 <elliott> pretty much
02:59:50 <elliott> :D
03:00:02 <elliott> pikhq: ok i have a wise observation
03:00:10 <elliott> pikhq: FUCK. THE LIVING FUCK. OUT OF OUT-OF-TREE-BUILDS.
03:00:14 <elliott> pikhq: AND FUCK CONFIGURATION FILES.
03:00:20 <elliott> i'm kicking it OLDSCHOOL, FUCK!
03:00:32 <elliott> pikhq: oh and FUCK having $(AS) and shit, you use nasm or you go to hell
03:00:33 <pikhq> elliott: Also, FUCK ANCIENT BUILD SYSTEMS.
03:00:34 <catseye> echo 'nasm boot.s -o boot' > make.sh && chmod 755 make.sh
03:00:36 <elliott> yasm? you're a fucking kiddo
03:00:38 <elliott> nasm is BSD-licensed now
03:00:40 <elliott> get with the program
03:00:41 <elliott> no yasm support
03:00:46 <elliott> i'm hardcoding nasm in my makefiles
03:00:49 <elliott> because i'm just that hardcore, so fuck you
03:01:07 <elliott> pikhq: see, I've become sane again
03:01:08 <pikhq> gcc --make the_whole_program.c
03:01:15 <elliott> a healthy hate for your users is a good thing
03:01:15 <pikhq> WHY CAN'T WE HAVE NICE THINGS
03:01:17 <elliott> catseye: so have you got foods
03:01:57 <catseye> elliott: yes
03:02:02 <elliott> catseye: are you READY FOR THE MAGIC
03:02:04 * pikhq can has Pink Floyd discography.
03:02:06 <elliott> pikhq: is it right to append ".o" to the filename of things that are actually just raw machine code?
03:02:07 <pikhq> For great justice.
03:02:11 <elliott> YOU DECIDE
03:02:23 <pikhq> elliott: I'd go with .bin
03:02:31 <elliott> pikhq: why not just ""
03:02:33 <elliott> bootsector: bootsector.s
03:02:34 <elliott> :P
03:02:38 <pikhq> elliott: .o suggests it's valid linker input.
03:02:43 <pikhq> elliott: "" works too.
03:03:21 * elliott rocks the recursive make
03:03:47 <elliott> i should probably have all targets in my directory makefiles shouldn't i
03:03:48 <elliott> oh well
03:03:50 <elliott> can't be arsed
03:04:18 <elliott> MAKE := $(MAKE) --no-print-directory
03:04:20 <elliott> because it irritates me!
03:04:40 <elliott> oh wait needs to be MAKEFLAGS +=
03:06:22 <elliott> pikhq: what's the size of a proper floppy image again? it's the formatted size, right?
03:06:37 <Sgeo> What an awesome security feature, Opera
03:06:42 * Sgeo gives Opera the middle finger
03:07:04 <pikhq> elliott: 1440 kibibytes.
03:07:12 <elliott> right
03:07:25 <elliott> pikhq: thing dd needs to do: not truncate a file after you write to it
03:07:25 <elliott> i.e.
03:07:31 <elliott> dd if=/dev/zero of=$@ bs=1k count=1440
03:07:31 <elliott> dd if=boot/bootsector of=$@
03:07:33 <elliott> WHY DOES THIS NOT WORK
03:07:47 <Sgeo> 3, 5, 7, 9, 11, 15; 2, 4, 6, 8, 10, 14
03:07:59 <olsner> wtf, someone's highlighted me
03:08:04 <olsner> AGAIN
03:08:13 <pikhq> elliott: The image can be smaller than that.
03:08:13 <Sgeo> It wasn't I, olsner
03:08:22 <catseye> Sgeo: stop numbering olsner!
03:08:25 <elliott> pikhq: i want it to be that size exactly :)
03:08:30 <olsner> then who is the transgressor of this transgression?
03:08:33 <elliott> pikhq: dd sucks because it can't do this
03:08:40 <elliott> pikhq: (I'm trying to bait you into telling me how to do it)
03:08:55 <catseye> olsner: this morning we were talking about swedes...
03:09:07 <catseye> that was hours ago
03:09:09 <olsner> catseye: aha, nothing important then
03:09:11 <pikhq> elliott: Add conv=notrunc
03:09:35 <olsner> I do see that Sgeo has been talking shit about Opera recently
03:09:36 <elliott> pikhq: seriously? that is the ugliest thing ever
03:09:47 <pikhq> dd's syntax is revolting.
03:10:04 <pikhq> I think it's actually an IBM mainframe import.
03:10:31 <elliott> pikhq: yeah
03:10:40 <elliott> pikhq: it was in unix 1 :)
03:10:49 <elliott> pikhq: but interestingly with a *sane* syntax
03:10:58 <elliott> wait no
03:10:59 <elliott> that was find
03:11:03 <elliott> i... think
03:11:03 <elliott> no
03:11:06 <elliott> uh
03:11:08 <elliott> it was something
03:11:09 <elliott> :P
03:11:15 <catseye> no, everything should use dd's syntax!
03:11:39 <elliott> pikhq: now i add stuff to the bootsector rule to check it's 512 bytes or less :)
03:11:46 <catseye> env, for example!
03:12:14 -!- augur has joined.
03:12:29 <catseye> cat if=foo.c
03:12:52 <catseye> a happier world
03:14:15 <catseye> elliott: OK. I have eaten. I have full use of my hands. Where do I start?
03:14:28 <catseye> I assume I download something
03:14:52 <catseye> and if it's ghc-6.12.3-src.tar.bz2 i already have
03:14:55 -!- augur has quit (Read error: Operation timed out).
03:15:12 <elliott> catseye: indeed; unpack that
03:15:40 <olsner> 6.12 is probably considered old nowadays
03:15:53 <elliott> olsner: lol
03:15:54 <olsner> 7.0 has been mentioned, after all
03:15:56 <elliott> olsner: it being the latest release and all
03:16:08 <catseye> unpacked.
03:16:14 <olsner> elliott: exactly
03:16:28 <elliott> catseye: ok, sec
03:16:34 <olsner> "latest" release means past release means old
03:16:39 <catseye> also configured, but not in any particular way
03:16:43 <catseye> configure didn't die
03:16:45 <catseye> good sign
03:16:47 <catseye> that's all
03:16:56 <elliott> catseye: do you care how big the resulting ghc is and stuff?
03:16:57 <elliott> I wouldn't
03:17:03 <elliott> catseye: looks like they've made things better
03:17:10 <catseye> not really
03:17:17 <elliott> catseye: it used to be hell to build
03:17:21 <elliott> catseye: do you have a dual-core system?
03:17:25 <elliott> if not, just $ make
03:17:26 <catseye> not really
03:17:27 <elliott> # make install
03:17:33 -!- Quadrescence has joined.
03:17:34 <catseye> otay
03:17:38 <elliott> catseye: sorry for making you think it was complicated; it *used* to be
03:17:39 <olsner> I did build ghc 6.12.3 the other day, it was just configure/make/make install
03:17:43 <catseye> any ill effects if I want to --prefix=$HOME it?
03:17:51 <catseye> wow, I just verbed a fucking command line option
03:17:54 <elliott> catseye: well, it installs to /usr/local by default
03:18:03 <elliott> catseye: $HOME will be problematic, it has quite a lot of directories
03:18:09 <elliott> catseye: $HOME/local, sure. $HOME, no.
03:18:12 <elliott> catseye: i'd just install to /usr/local
03:18:19 <elliott> catseye: cabal installs to $HOME/.cabal anyway
03:18:25 <elliott> so you won't need to sudo for that regardless
03:18:39 <catseye> $HOME/local is too weird for me. i can live with this polluting the base, then
03:18:46 <olsner> and then I built 7.0 using llvm-backend for all of it, it was about as complicated as unix source-installs usually are :D
03:18:55 <elliott> catseye: /usr/local is hardly base :P
03:19:00 <elliott> and it's default, btw
03:19:11 <catseye> it's base-r
03:19:23 <elliott> catseye: then when that installs, we can build the HASKELL PLATFORM
03:19:26 <elliott> which is FUNNN
03:20:04 <olsner> lol, the "platform" is for n00bs
03:20:27 <catseye> typical netbsd thing: % make <enter> errors x 61! <grr> % gmake
03:20:28 <elliott> olsner: you're full of shit :P
03:20:34 <elliott> catseye: yeah uh, use gmake
03:20:41 <olsner> (no, it's not: it's for everyone who doesn't really give a shit)
03:20:49 <elliott> and for everyone who gives a shit too
03:21:07 <elliott> unless you just LOVE manually installing tons of cabal packages for no freaking raeson
03:21:08 <elliott> *reason
03:21:25 <elliott> catseye: oh, haskell platform is easy it seems
03:21:26 * olsner is full of shit for the people who want shit, due to the people who give shit
03:21:29 <catseye> olsner: it reminds me too much of python's easy_install stuff but elliott claims it's not really that similar
03:21:32 <elliott> catseye: once ghc is installed, http://hackage.haskell.org/platform/2010.2.0.0/haskell-platform-2010.2.0.0.tar.gz then configure gmake gmake install
03:21:36 <catseye> well, cabal, anyway
03:21:38 <elliott> yeah cabal is a proper package manager at least
03:21:40 <catseye> i dunno about HP
03:21:44 <catseye> it sounds like uber-cabal
03:21:45 <olsner> cabal is much better than easy_install
03:21:52 <elliott> haskell platform is just a bunch of cabal libraries in one basically
03:22:12 <olsner> easy_install is just herp-derp-install-some-files
03:22:14 <elliott> catseye: haskell platform == "what should have been in the stdlib but isn't"
03:22:19 <catseye> i know i read some doc on it and some cabal interface is like *exactly* the same as setup.py's for the same thing, and it creeped me out
03:22:20 <elliott> easy_install is atrocious, i read the code once
03:22:27 <catseye> i forgot what though
03:22:27 <elliott> catseye: yes, but you still have the .cabal file
03:22:29 <olsner> cabal is from people who at least know some stuff
03:22:29 <catseye> and i don't care
03:22:30 <elliott> which setup.py *doesn't*
03:22:41 <elliott> catseye: you have to specify package name, versioned dependencies, all that stuff
03:22:44 <elliott> it's more similar to apt.
03:23:08 <catseye> just tell me that the python people cargo-copied the haskell people and i will be happy
03:23:22 <catseye> even if it's not true
03:23:29 <catseye> hmm
03:23:34 <elliott> catseye: the python people predated the haskell people
03:23:34 <olsner> I think you'll find they did *much worse* than copy anyone else
03:23:35 <elliott> but without brains
03:23:44 <elliott> rubygems might be older though
03:23:45 <catseye> ghc needs curses, i shall install that
03:23:48 <elliott> and even that's better than setup.py
03:23:55 <elliott> catseye: you also want to install editline
03:23:57 <elliott> and then reconfigure
03:23:59 <elliott> if you don't already have it
03:24:00 <Sgeo> What's so bad about setup.py/
03:24:03 <catseye> well, ncurses
03:24:04 <elliott> Sgeo: everything
03:24:07 <catseye> editline, ok
03:24:12 <olsner> catseye: and libgmp with headers, you'll also want
03:24:24 <elliott> he probably has that
03:24:24 <catseye> libgmp, ok
03:24:27 <elliott> if ./configure worked
03:24:42 <catseye> gmp-5.0.1 Library for arbitrary precision arithmetic
03:24:51 <elliott> pikhq: my recursive make rules should be phony, right?
03:25:00 <catseye> they wouldn't begrudge you headers on netbsd
03:25:14 <olsner> wouldn't be so sure, I think some of the deps are hidden in recursive configure's or just libraries that will fali to build
03:25:20 <catseye> of course, it says i have curses too
03:25:22 <catseye> ncurses-5.7nb4 CRT screen handling and optimization package
03:25:33 <elliott> "CRT screen handling and optimization package", lovely
03:26:05 <elliott> pikhq: apparently my floppy isn't bootable!
03:26:09 <olsner> (it could well have been optimalization)
03:26:11 <elliott> pikhq: how does the bios tell if a floppy is bootable? x_x
03:26:29 <olsner> it has a boot sector with magic 0xaa55 flags?
03:26:48 <elliott> olsner: $AA $55 is just for the partition table on the hard disk, isn't it?
03:26:53 <catseye> catseye$ echo $LD_LIBRARY_PATH
03:26:54 <catseye> /home/catseye/lib:/usr/pkg/lib:/home/catseye/lib:/usr/pkg/lib:/home/catseye/lib:/usr/pkg/lib:/home/catseye/lib:/usr/pkg/lib:
03:26:57 <catseye> catseye$ ls -la /usr/pkg/lib/libncurses.so
03:26:59 <catseye> lrwxr-xr-x 1 root wheel 19 Oct 27 19:33 /usr/pkg/lib/libncurses.so -> libncurses.so.5.0.7
03:27:06 <elliott> http://catseye.tc/projects/befos/src/boot/beboot.s certainly doesn't have it >:)
03:27:07 <catseye> yet
03:27:08 <catseye> checking for setupterm in -lncursesw... no
03:27:09 <catseye> checking for setupterm in -lncurses... no
03:27:09 <catseye> checking for setupterm in -lcurses... no
03:27:09 <catseye> configure: error: curses library not found, so this package cannot be built
03:27:17 <olsner> elliott: hmm, I thought it meant bootable, but sure
03:27:24 <elliott> olsner: it does for the partition table
03:27:26 <elliott> at last
03:27:27 <elliott> *least
03:28:01 <catseye> elliott: the install process might be doing some other crap to the bootblock as it installs it
03:28:11 <catseye> elliott: so make it find my curses
03:28:25 <elliott> catseye: hmm
03:28:31 <elliott> catseye: try --with-curses=/usr/pkg
03:28:37 <elliott> catseye: also, make clean before all that ofc
03:28:53 <elliott> $(OBJDIR)/beboot.com 0 \
03:28:54 <elliott> $(OBJDIR)/bekernel.com 1 \
03:28:54 <elliott> $(OBJDIR)/welcome.bin 8 \
03:28:59 <elliott> what the fuck kinda targets are that
03:29:08 -!- quintopia has left (?).
03:29:47 <catseye> bedda
03:30:22 <olsner> vroom-vroom
03:30:23 <catseye> whoa, and as the rest of xfce4 is installing, i am seeing icons where they should be
03:30:59 <elliott> catseye: btw, ghc does a two-stage bootstrap, you get to compile it *twice*!
03:31:03 <elliott> catseye: oh uh
03:31:08 <elliott> catseye: before make install on ghc, remember to remove your pkgsrc version
03:31:09 <elliott> obviously
03:31:21 <elliott> hmm, does ghc install docs by default? whatever, they're online anyway
03:32:00 <catseye> it said it would build html docs
03:32:11 <elliott> good
03:32:25 <elliott> void
03:32:25 <elliott> make_bootable(FILE *outfile)
03:32:25 <elliott> {
03:32:25 <elliott> fseek(outfile, 510, SEEK_SET);
03:32:25 <elliott> fwrite("\x55\xaa", 2, 1, outfile);
03:32:26 <elliott> }
03:32:28 <elliott> you sly man
03:33:07 <catseye> well it's easier to put it there than in the asm, that's for sure
03:33:18 <olsner> hmm, looks like 0xaa55 that
03:33:26 <olsner> DOES THIS MEAN I WAS RIGHT?
03:33:36 <elliott> olsner: IT APPEARS SO
03:33:44 <olsner> elliott: SWEET
03:33:45 <elliott> catseye: for SOME REASON you can't use org twice I WONDER WHY
03:34:07 <catseye> multiple orgs in asm
03:34:08 <olsner> I LOVE IT WHEN I'M RIGHT
03:34:24 <olsner> LOOOOOOVE
03:34:26 <catseye> geh
03:34:31 <catseye> it died on 'can't find curses' again
03:34:39 <catseye> this time after building everything
03:34:42 <catseye> well not everything
03:34:44 <catseye> a lot
03:34:51 <elliott> catseye: even with --with-curses?
03:35:01 <olsner> curses, I'm sure you can provide an extensive set of those
03:35:52 <elliott> catseye: hmm
03:35:53 <catseye> wait wait
03:35:55 <elliott> not sure :D
03:36:12 <catseye> gmake triggers something *else* running configure somewhere else
03:37:24 <elliott> cal153: "Unlike the ORG directive provided by MASM-compatible assemblers, which allows you to jump around in the object file and overwrite code you have already generated, NASM's ORG does exactly what the directive says: origin. Its sole function is to specify one offset which is added to all internal address references within the section; it does not permit any of the trickery that MASM's version does."
03:37:27 <elliott> MASM could do this, how sad is that?
03:37:32 <catseye> even with --with-curses, that inner configure fails
03:37:33 <catseye> ok
03:37:35 <elliott> People writing boot sector programs in the bin format often complain that ORG doesn't work the way they'd like: in order to place the 0xAA55 signature word at the end of a 512-byte boot sector, people who are used to MASM tend to code
03:37:35 <elliott> ORG 0
03:37:35 <elliott> ; some boot sector code
03:37:35 <elliott> ORG 510
03:37:36 <elliott> DW 0xAA55
03:37:38 <elliott> haha
03:37:48 <elliott> " TIMES 510-($-$$) DB 0 "
03:37:48 <elliott> wow
03:38:15 <olsner> you explicitly pad your program to put the magic stuff at the right offset
03:38:15 <catseye> elliott: use my bootblock installer program it is da bomb
03:38:25 <catseye> iirc
03:38:25 <pikhq> elliott: IIRC, $ is the origin and $$ is the current address.
03:38:33 <pikhq> Erm, other way around.
03:38:36 <elliott> pikhq: yeah
03:38:48 <elliott> pikhq: even though my origin is 0 apparently i still have to do it like this says the manual
03:38:52 <elliott> catseye: it looked crap and your face is crap
03:38:56 <elliott> :|
03:38:58 <olsner> I think it makes sense, at least I think I get why ORG was not given any magic beyond telling how offsets are interpreted
03:39:08 <elliott> olsner: yeah but is it so much to ask for an "at" instruction?
03:39:09 <elliott> at 510
03:39:10 <elliott> ...
03:39:22 <olsner> elliott: nope
03:39:23 <elliott> woo it "boots" (and does nothing)
03:39:37 <olsner> but boot sectors are ... once an operating system things?
03:39:41 <elliott> catseye: omg
03:39:44 <elliott> db $55, $aa
03:39:44 <elliott> doesn't work
03:39:49 <elliott> db 0x55, 0xaa
03:39:50 <elliott> works
03:39:52 <elliott> db $55,$AA works
03:39:57 <elliott> is this a conspiracy to stop people using $????
03:40:07 <elliott> $aa55 too does it
03:40:31 <catseye> yaaah
03:40:35 <elliott> db $55,$AA
03:40:35 <olsner> no, this is a conspiracy only against elliott
03:40:36 <elliott> doesn't actually work
03:40:40 <elliott> (possibly because of jews?)
03:40:42 <catseye> so, i have curses, but it doesn't support the function that it wants, it lookslike:
03:40:45 <catseye> configure:3737: gcc -o conftest -g -O2 conftest.c -lcurses >&5
03:40:48 <catseye> /var/tmp//ccIbLPmn.o: In function `main':
03:40:50 <catseye> /home/catseye/build/ghc-6.12.3/libraries/terminfo/conftest.c:29: undefined reference to `setupterm'
03:40:55 <elliott> catseye: aha! maybe your curses is like a bsd curses
03:41:00 <elliott> and you need to say -lncurses
03:41:02 <elliott> for the n curses
03:41:09 <elliott> maybe?
03:41:13 <catseye> ah
03:41:22 <catseye> it tries -lcurses before it tries -lncurses
03:41:31 <catseye> i... should kill it for doing that
03:42:14 <catseye> no... it doesnt
03:42:18 <olsner> how can you kill it for something before you have even brought it to life?
03:42:56 <catseye> olsner: i have powers.
03:43:03 <olsner> cool stuff
03:45:01 <catseye> it sez it can't find ncurses.h. i am reinstalling that package. it was installed because i installed cmake. i installed cmake to build Falcon. YOU SEE HOW THIS WORKS
03:45:23 <catseye> Falcon is sending its bad juju vibrations at Haskell via CURSES
03:46:16 <olsner> "Falcon" the brewery?
03:47:12 <elliott> olsner: falcon the "language"
03:47:25 <olsner> and on that bombshell, it's time to end... or whatever they say on "television"
03:48:37 <Sgeo> catseye, why wasn't all Falcon-touching material done in a VM?
03:50:18 <elliott> olsner's entire experience of television is Top Gear
03:51:05 <catseye> this Haskell terminfo library is feral
03:51:17 <catseye> it lets me specify where curses.h is
03:51:22 <catseye> but not where ncurses.h is
03:51:30 <catseye> and my ncurses.h is in
03:51:32 <catseye> /usr/pkg/include/ncurses/ncurses.h
03:51:52 <catseye> I... am going to have to hack configure.ac
03:52:03 <elliott> catseye: lawl
03:52:07 <elliott> catseye: nobody cares about bsds
03:55:13 -!- augur has joined.
03:57:51 <pikhq> Wow.
03:58:05 <pikhq> Y'know how Bush is so fond of saying "history will vindicate me"?
03:58:15 <pikhq> One other President talked like that.
03:58:23 <pikhq> James Buchanan.
03:58:47 <pikhq> Who could reasonably be regarded as the worst President.
03:59:10 <elliott> pikhq: my favourite president is William Henry Harrison
03:59:14 <pikhq> (the Civil War happened on his watch)
03:59:17 <elliott> he's the only one not to fuck anything up
03:59:26 <elliott> as a president
04:00:28 <pikhq> His only act as President was to call a special session of Congress.
04:00:32 <catseye> /usr/pkg/include/ncurses/ncurses.h:66:33: error: ncurses/ncurses_dll.h: No such file or directory
04:00:35 <pikhq> Wow.
04:00:37 <catseye> fuck this
04:01:02 <elliott> you don't need ncurses really
04:01:07 <elliott> pikhq: yup
04:01:10 <elliott> pikhq: best president ever
04:01:17 <catseye> i need to disable terminfo from being built somehow then
04:01:30 <elliott> catseye: oh you probably want terminfo
04:01:31 <elliott> catseye: uh
04:01:42 <elliott> catseye: build ncurses from source into /usr/local? :P
04:01:47 <elliott> pikhq: did anything bad happen under his watch? nope.
04:02:04 <pikhq> elliott: Well, there's the *arguable* David Rice Atchison.
04:02:07 <catseye> elliott: feels so right how can it be wrong
04:02:16 <elliott> catseye: quite
04:02:45 <pikhq> elliott: James Polk's successor, Zachary Taylor refused to be sworn in on a Sunday, when James Polk's term ended.
04:03:08 <elliott> pikhq: However, while it is alleged that the offices of President and Vice President were vacant, Atchison in fact was not next in line. While the terms of President James K. Polk and Vice President George Mifflin Dallas had expired, Atchison's tenure as President pro tempore had already expired when the Thirtieth Congress adjourned sine die on March 3. He also never took the oath of office. No disability or lack of qualification prevented Taylor
04:03:08 <elliott> and Fillmore from taking office, and as they had been duly certified to take office that day as president-elect and vice president-elect, if Taylor was not president because he had not been sworn in as such, then Atchison, who had not been sworn in either, certainly was not President either.[19]
04:03:27 <elliott> Atchison was sworn in for his new term as President pro tempore minutes before both Fillmore and Taylor,[citation needed] which might theoretically make him Acting President for at least that length of time; however, this also implies that many times when the Vice President is sworn in before the President, the Vice President is the de facto Acting President. Since this is a common occurrence, if Atchison is considered President, so must every Vi
04:03:27 <elliott> ce President whose inauguration preceded that of the President if the President was sworn in after noon on Inauguration Day.
04:03:40 <pikhq> elliott: Pity.
04:03:50 <elliott> pikhq: but yeah, fuck yeah William Henry Harrison
04:03:53 <catseye> "Subsequent work (through 1.8.8) was driven by Eric Raymond, who eradicated previous signs of authorship with the current copyright notice between 1.8.7 and 1.8.8, early 1995. " -- ncurses history
04:04:16 <elliott> catseye: xD
04:04:45 <elliott> pikhq: do you know anything about the BIOS?!?!?!
04:05:11 <pikhq> elliott: Not really.
04:05:15 <elliott> pikhq: ;_;
04:05:25 <elliott> i'd bother cpressey but i've bothered him enough for one day
04:05:30 <elliott> "Doing a kernel in Basic" what a splendid idea
04:06:31 <catseye> wh wh wh wait what what?
04:06:43 <catseye> i know only a bit about the bios
04:06:57 <catseye> mainly from reading RBIL
04:07:37 -!- augur has quit (Ping timeout: 245 seconds).
04:07:53 <elliott> catseye: ralf brown's interrupt list?
04:07:58 <elliott> i totally just loaded up the osdev page about that
04:08:08 <elliott> catseye: basically i just want docs of all the interrupts :P
04:08:10 <elliott> and how to call them
04:08:18 <catseye> yes, that
04:08:23 <elliott> "Sadly, the entries for interrupt and port calls that have been "standardized" are not easy to find."
04:08:23 <catseye> it has that
04:08:25 <elliott> catseye: doesn't look much fun
04:08:31 <catseye> it is not fun
04:08:36 <elliott> catseye: i think i'll keep searching :P
04:08:37 <catseye> well, it is not *too* unfun
04:08:46 <catseye> but the formatting is... special
04:08:56 <catseye> it's the best resource i could find, at the time
04:09:44 <catseye> elliott: Thunar looks better now! Can still only cd into one directory, though >_<
04:10:05 <elliott> catseye: try restarting xfce i.e. log out and in again (don't enable "save session" in the logout screen)
04:10:09 <elliott> it... might work
04:10:15 <catseye> yeah, i will, later
04:10:28 <elliott> wait
04:10:34 <elliott> what's the point of local labels?
04:10:35 <elliott> >____>
04:10:46 <elliott> catseye: you have settings now; go into Appearance and set a non-Raleigh theme :P
04:10:51 <elliott> catseye: preferably GREY MIST
04:10:53 <elliott> which is awesome.
04:13:09 <catseye> I don't have GREY MIST yet
04:13:44 <catseye> xfce4-stellar
04:14:38 <catseye> local labels are labels except local
04:14:47 <elliott> catseye: grey mist isn't part of xfce
04:14:50 <catseye> the point is so you can say @loop: in a bunch of places
04:14:50 <elliott> it's part of being awesome
04:14:56 <elliott> isn't it .foo not @foo?
04:15:00 <catseye> how do i install being awesome
04:15:06 <catseye> elliott: er yes, in THIS assembler
04:15:15 <elliott> lawl
04:15:29 <elliott> catseye: how to install grey mist:
04:15:37 <elliott> $ mkdir -p "~/.themes/Grey Mist/gtk-2.0"
04:15:39 <catseye> make: don't know how to make names.c. Stop
04:15:47 <elliott> wait
04:15:51 <elliott> $ mkdir -p ~/.themes/Grey\ Mist/gtk-2.0
04:15:59 <elliott> $ wget http://sprunge.us/PaWY -O ~/.themes/Grey\ Mist/gtk-2.0/gtkrc
04:16:02 <catseye> i cannot build ncurses 2.7 *from source*
04:16:07 <elliott> catseye: then go into xfce appearance and select grey mist.
04:16:28 <elliott> catseye: if your interface is suddenly hideously boring but not ugly, mission accomplished
04:16:47 <catseye> k
04:16:56 <elliott> catseye: oh wait
04:17:02 <elliott> catseye: before you do that, install gtk2-engines
04:17:10 <elliott> catseye: which is probably what it's called.
04:17:15 <catseye> i think i have that
04:17:27 <catseye> i don't have that
04:17:31 <elliott> lawl
04:17:39 <elliott> it's tiny
04:17:41 <elliott> so no biggie to install it
04:17:49 <catseye> it goes
04:18:02 <elliott> catseye: oh so it is called that? phew :P
04:18:33 -!- zzo38 has joined.
04:19:08 <catseye> Where in the world is Carmen Sandiego?
04:19:24 <catseye> ok, ncurses built
04:19:29 <catseye> my mistake: not using gmake
04:20:40 <Sgeo> Did I ever tell you my story about Sandiego?
04:20:55 <elliott> Sgeo: oh, do go on
04:21:45 <Sgeo> On the day that the graduating class was .. doing something. Some trip, celebrationish iirc, end of the year, the girl I liked wasn't there
04:21:57 <Sgeo> I asked her friend, and she said that she's in San Diego
04:22:30 <Sgeo> It utterly failed to process in my mind as a real place, due to "Carmen Sandiego", and thus I thought that that was just some excuse and she was avoiding me or something
04:23:04 <Sgeo> Turns out San Diego is a real place, and I found out why she was there towards the end of the day
04:23:30 <Sgeo> Reason I think about any of that having any effect is because I never asked her friend "Why?", which would have showed some interest, I think
04:23:44 <elliott> exciting
04:24:04 <Sgeo> You asked me to go on
04:24:08 <pikhq> God the US is crazy.
04:24:21 <pikhq> Fun fact: the US is one of two nations with legal *bounty hunting*.
04:24:26 <pikhq> *Bounty hunting*.
04:24:44 <elliott> ha.
04:24:55 <elliott> HowStuffWorks "How Bounty Hunting Works"
04:24:55 <elliott> Bounty hunting is an important part of the American justice system.
04:25:02 <elliott> How to Become a Bounty Hunter - wikiHow
04:25:02 <elliott> wikiHow article about How to Become a Bounty Hunter.
04:25:03 <zzo38> I know things about telephone red-boxing and I know how payphones can be corrected. Say you have three LEDs on the payphone, one red, one yellow, and one green. These lights indicate the mode. The initial mode is red mode.
04:25:32 <Gregor> It
04:25:43 <Gregor> *It's cheaper than a police force.
04:26:19 <zzo38> In red mode, coins inserted go into the holding area and send red-box tones, the keypad is enabled, and the microphone is disabled during red mode. Signals can be sent Y (change to yellow mode), G (change to green mode), Z (accept coins), X (reject coins), from the telephone company to the payphone.
04:26:54 <zzo38> In yellow mode, microphone is enabled, coins are automatically rejected, and the R (change to red mode) command is accepted.
04:27:17 <zzo38> In green mode, microphone is enabled, coins are automatically rejected, and no commands are recognized.
04:27:53 <zzo38> In service mode (all three LEDs lit), everything is enabled, including diagnostic functions.
04:28:07 <zzo38> There. Would this way work better?
04:28:53 <catseye> elliott: the terminfo library is fucked. you need to #include <ncurses/ncurses.h>. You can't just #include <ncurses.h>. they're dumb.
04:29:03 <elliott> catseye: lawl
04:29:09 <elliott> zzo38: no. it really wouldn't
04:29:22 <elliott> zzo38: sounds like a pain to use, no?
04:30:13 <zzo38> elliott: How would it be a pain to use? The user needs to do nothing special. The telephone company's computer can have a simple program to do this logic.
04:30:23 <elliott> oh, okay
04:30:28 <elliott> i thought you were proposing a UI change
04:33:28 <zzo38> elliott: No, no UI change. The only visible change to the payphone is the three LEDs to indicate mode, and it is possible to use the payphone like normal even without paying attention to the mode.
04:33:41 <elliott> zzo38: Why does the mode need to be displayed?
04:34:58 <catseye> of course it [doesn't] run [on] NetBSD!
04:35:00 <zzo38> elliott: Mostly for diagnostics purposes. But I suppose someone who understands them might be able to understand more things from them too.
04:36:35 <catseye> ncurses note: does not build shared libraries by defatul
04:37:05 <catseye> pikhq: What's the other nation?
04:37:43 <catseye> If it's Norway, maybe one got oerjan.
04:38:18 <pikhq> catseye: The Phillipines.
04:38:41 <catseye> I see...
04:39:06 <elliott> *Philippines
04:42:44 <elliott> wow i have no idea how to use bios interrupts
04:43:06 <zzo38> The mode lights can still be useful if you want to use them, such as to tell when you inserted the correct coins and your call is now connected, or, in case of operator assistance, to tell when it is ready to insert money. And you can't toll fraud with the red box, since the microphone is disabled in red mode.
04:43:50 <catseye> YES
04:44:12 <zzo38> (Note that it is disallowed to switch from yellow mode directly to green mode. This is important.)
04:44:26 <pikhq> Aaah, rock music that really *uses* dynamic contrast. Such a nice change.
04:46:33 <catseye> elliott: they're easy
04:46:40 <catseye> well, they're not hard, anyway
04:46:42 <elliott> catseye: ok explain them :P
04:46:45 <catseye> befos is full of them
04:47:16 <catseye> mov ax, something; mov bx, something else; int 10h
04:47:21 <catseye> maybe also cx
04:47:30 <elliott> catseye: i still need a list that isn't evil though :P
04:49:17 <catseye> elliott: have you seen this version: http://www.ctyme.com/intr/int-10.htm
04:49:39 <catseye> for example: http://www.ctyme.com/intr/rb-0210.htm
04:49:49 <catseye> that's readable!
04:49:56 <elliott> catseye: oh that's much nicer
04:49:56 <elliott> thanks
04:50:23 <elliott> catseye: http://www.ctyme.com/intr/int-00.htm interrupt 0 is a LICENSE
04:50:39 <catseye> autoextract script is perfect!
04:50:53 <catseye> most of the ones you want are in 10h iirc
04:51:03 -!- evincar has joined.
04:51:55 <elliott> catseye: the bios has non-10 interrupts? sheesh
04:51:57 <elliott> also that's 10 in hex right?
04:52:02 <elliott> yeah
04:52:11 <elliott> catseye: will you kill me for writing "int 10h"?
04:52:29 <catseye> no, as i think fizzie mentioned, that is the one place where h is acceptable.
04:52:36 <elliott> yay
04:53:05 <catseye> even *i* instinctively type 10h and 21h after 'int', and I'm not much of an x86 person.
04:53:25 <Sgeo> What's wrong with h?
04:53:36 <catseye> it makes you wonder why there's no g
04:53:41 <catseye> abcdefh
04:53:44 <elliott> :D
04:53:55 <elliott> catseye: we just need to copy the mathematicians and use _16
04:53:56 <elliott> but not really
04:53:59 <elliott> that shit needs to go in front
04:54:03 <elliott> 16#foo is what smalltalk does i think
04:54:04 <elliott> and that's nice
04:54:12 <catseye> yes, erlang stole it from there
04:54:17 <elliott> right
04:54:30 <catseye> i could generalize it further!
04:54:37 <elliott> catseye: FRACTIONAL BASES
04:54:42 <Sgeo> (2+i)1
04:54:45 <catseye> '0123456789'#42
04:54:46 <elliott> Sgeo: no
04:54:51 <Sgeo> (2+i)#1
04:54:53 <Quadrescence> imaginary bases
04:55:02 <Quadrescence> P-ADIC INTEGERS
04:55:02 <elliott> catseye: '# )'##) )#
04:55:14 <pikhq> Quadrescence: Imaginary bases have been seriously used.
04:55:15 <Sgeo> elliott?
04:55:20 <elliott> Sgeo: base is '# )'
04:55:22 <Quadrescence> pikhq: i don't doubt it
04:55:25 <elliott> i.e. # is 0
04:55:25 <catseye> elliott: escape those damn spaces
04:55:27 <elliott> space is 1
04:55:28 <elliott> ) is 2
04:55:30 <elliott> and thus
04:55:31 <Quadrescence> dildos have been seriously used too
04:55:34 <elliott> #) )#
04:55:35 <elliott> is
04:55:41 <pikhq> Quadrescence: Most notably Knuth's quater-imaginary base.
04:55:42 <Sgeo> I meant, why the no?
04:55:42 <elliott> 2120
04:55:43 <elliott> in trinary
04:55:46 <pikhq> (base 2i)
04:55:47 <elliott> Sgeo: just no :P
04:55:52 <Quadrescence> pikhq: yes i know
04:55:52 <zzo38> You can use italic for octal numbers and typewriter style for hexadecimal numbers
04:55:58 <Quadrescence> it has some neat properties
04:56:04 <Sgeo> Imaginary bases have a serious use?
04:56:07 <pikhq> Such as not needing a sign.
04:56:12 <Quadrescence> yea
04:56:17 <Sgeo> Also, I guess elliott's trying to tell me that it should be 2i#1
04:56:23 <elliott> no
04:56:56 <Sgeo> 2+i is complex, at any rate. Any use for complex bases over plain old imaginary bases?
04:57:29 <elliott> cpressey: man all this head and drive and cylinders and stuff
04:57:31 <elliott> cpressey: it's so retro and i hate it
04:57:49 <pikhq> Sgeo: Pain and agony, maybe.
04:57:51 * Sgeo retconjurates elliott
04:58:04 <zzo38> You can also do all numbers extend on the left instead of the right of the radix point, you can have without the sign, because in base 2, you have ......11111111111 for negative one, and (-1$0) (where $ is interleave operator) for negative two thirds.
04:58:37 <Sgeo> base-n has an interleave operator?
04:58:40 <Sgeo> Hmm
04:58:49 <catseye> elliott: PACKET MODE
04:58:52 <catseye> nuff said
04:58:56 <Sgeo> If we describe this whole thing with bases as "base-n", what's "base-n,m"?
04:59:04 <zzo38> Sgeo: O, instead of complex bases, can you now use bases with hypercomplex numbers, or meta-complex numbers, or with quantum states or whatever?
04:59:07 <elliott> catseye: i, uh...
04:59:18 <elliott> catseye: is that your rebuttal to everything? :D
04:59:19 <catseye> oh you were talking to cpressey sorry
04:59:23 <zzo38> Sgeo: I mean like the INTERCAL interleave operator, but with infinite amount of bits
04:59:25 <Sgeo> Surreal bases!
04:59:43 * Sgeo does not know what a meta-complex number is
04:59:45 <zzo38> Sgeo: Yes, surreal bases, that is an example of what I mean, by making new bases
05:00:02 <Sgeo> And is "hypercomplex" number just a term for things such as quaternions and octonions?
05:00:18 <elliott> catseye: i am apparently unable to read asm
05:00:18 <zzo38> Yes, "hypercomplex" is for quaternions and octonions
05:00:23 <elliott> catseye: befos confounds me
05:00:54 <catseye> it's not the prettiest asm but mostly it's because it has no real plan
05:01:03 <catseye> the individual routines are ok
05:01:11 <catseye> not golfed or anything mostly
05:01:16 * Sgeo still has no idea what a meta-complex number is
05:01:31 <zzo38> While meta-complex is a idea I invented (possibly other people did too, independent of me), where a rank-3 meta-complex number has eight components: real-real-real (RRR), real-real-imaginary (RRI), RIR, RII, IRR, IRI, IIR, III.
05:01:50 <Sgeo> Argably, 2+i still fits the base-n format. n just = 2+i
05:01:52 <zzo38> Meta-complex numbers are commutative.
05:01:59 <zzo38> (regardless of rank)
05:02:04 * pikhq did not realise that anyone had actually done anything that's hypercomplex.
05:02:23 <pikhq> The construction is pretty obvious, of course. Just didn't realise anyone had actually done it.
05:02:31 <Sgeo> SL, and probably lots of other 3d stuff, uses quarternions for rotations
05:03:00 <pikhq> I was even *less* aware that it was even vaguely useful.
05:03:01 <zzo38> Matrix reprentations of meta-complex numbers can be synthesized by tensor products of matrix representations of complex numbers.
05:03:55 <elliott> pikhq: unfortunately you can't do 3plexes
05:03:58 <elliott> which is LAAAME
05:04:28 <zzo38> Sgeo: Now do you have idea what a meta-complex number is?
05:04:59 <Sgeo> 2|4|i + 5|i|2i ?
05:05:20 <catseye> elliott: btw: guy who reformatted the interrupt list: loser
05:05:25 <zzo38> Sgeo: No, not quite like that.
05:05:29 <elliott> catseye: wut
05:05:57 <catseye> "As a visionary of the computer industry, I have become a minor celebrity in the world of nerds. I'm the Supreme Commander of the Nerd Liberation Movement. We're coming out of the Back Room. I'm so smart that the government wants me to register my brain as a weapon. I'm the most dangerous mind on the Internet."
05:06:12 <elliott> catseye: that's nothing
05:06:14 <elliott> "John C. Dvorak (Good man!)"
05:06:24 <elliott> catseye: i topped it in five words
05:06:24 <elliott> take that
05:06:39 <catseye> wait what? this isn't a war of losers
05:06:41 <zzo38> If you represent a complex number (or rank-1 meta-complex number) as ordered pair, then a rank-2 meta-complex number is represent by ordered quad (four components) of reals.
05:06:44 <elliott> catseye: no, the same guy said that
05:06:47 <pikhq> catseye: Well, if he can perform decent-quality encryption in his brain somehow (implant?), then his brain would in fact be a weapon.
05:06:49 <catseye> i have no wish to promote this loser as PARTICULARLY loserful
05:06:51 <catseye> oh!
05:06:55 <elliott> catseye: i'm saying mine demonstrates how losery he is in far fewer words
05:07:07 <elliott> because he likes Dvorak, who is a real-life troll and moron ofc
05:07:23 <elliott> catseye: ohh it's THAT guy!
05:07:26 <catseye> i have no idea who that is
05:07:46 <elliott> catseye: the guy who has a page telling teenagers to smoke weed
05:08:32 <elliott> catseye: (and also has a page telling them that smoking cigarettes is the WORST THING EVER)
05:08:36 <elliott> http://www.perkel.com/politics/issues/smoke.htm
05:08:37 <elliott> http://www.perkel.com/politics/issues/pot.htm
05:09:25 <catseye> yes
05:09:28 <catseye> loser.
05:09:38 -!- elliott has left (?).
05:09:40 -!- elliott has joined.
05:09:45 <elliott> cpressey: good thing i only care about the interrupts :)
05:09:50 <catseye> yes
05:10:06 <elliott> cpressey: so uh... do i really have to care about sectors and cylinders and crap?
05:10:33 <zzo38> elliott: If you write a operating system on IBM PC, it is necessary to deal with sector numbers and cylinder numbers.
05:10:44 <elliott> zzo38: i mean in my bootloader
05:11:22 <myndzi> |
05:11:22 <myndzi> |\
05:11:28 <catseye> by hacking configure.ac
05:11:30 <elliott> catseye: wait
05:11:38 <elliott> catseye: in http://catseye.tc/projects/befos/src/boot/beboot.s where do you set ah to 02?
05:11:40 <zzo38> elliott: Yes, in the bootloader, you use sector numbers and cylinder numbers. I wrote a simple bootloader.
05:11:42 <Gregor> `echo Am I still slow?
05:11:54 <HackEgo> Am I still slow?
05:12:00 <Gregor> Eh, not that slow.
05:12:08 <elliott> catseye: wait you have it in KERNEL_AX which is... inexplicably not just 02
05:12:24 <elliott> AM CONFUZZLE
05:12:27 <catseye> elliott: where do you see that i need to>
05:12:29 <catseye> *?
05:12:32 <elliott> http://www.ctyme.com/intr/rb-0607.htm
05:12:33 <elliott> DISK - READ SECTOR(S) INTO MEMORY
05:12:33 <elliott> AH = 02h
05:12:40 <elliott> Int 13/AH=02h
05:13:09 <catseye> elliott: INT13_READCODE * 256
05:13:22 <catseye> that's rather eurr of me
05:13:29 <elliott> catseye: and then you add KERNEL_SIZE to it for some inexplicable reason???
05:13:33 <elliott> oh are you like
05:13:35 <catseye> elliott: that's al
05:13:37 <elliott> assigning both in one instruction
05:13:39 <elliott> because you're crazy
05:13:46 <catseye> OPTOMIZED
05:13:49 <elliott> right
05:13:50 <zzo38> http://sprunge.us/fbJU
05:13:54 <elliott> not gonna optomise it, catseye
05:13:58 <elliott> i'm dumb as fuck and so will be my code
05:14:11 <zzo38> That is a simple MBR code.
05:14:18 <catseye> as long as it fits in 400mumble bytes!
05:14:43 <zzo38> catseye: What does that mean?
05:14:48 <catseye> zzo38: i'm still planning to replace it with yours
05:15:00 <elliott> zzo38: yours is, uh, wow, what does it do?
05:15:13 <catseye> zzo38: it means you can say "mov ah, ...; mov al, ..." if you like, but "mov ax, ..." is still shorter
05:15:22 <catseye> elliott: enters unreal mode!
05:15:23 <catseye> iirc
05:15:29 <elliott> catseye: and nothing else?
05:15:38 <catseye> well, and loads and boots something else
05:15:43 <catseye> again iirc
05:15:50 <elliott> catseye: unreal mode is irreversibly associated with this image of mr bean for me: http://blog.tmcnet.com/blog/tom-keating/images/mr-bean.jpg
05:15:54 <zzo38> elliott: It fills the screen with "p" and loads the operating system into RAM, and then jump to the start of operating system code.
05:15:56 <elliott> catseye: and bad english written by a polish person
05:16:13 <zzo38> catseye: It is the operating system itself that enters unreal mode.
05:16:13 <elliott> catseye: because of this really young (like 11, 12) pole on the osdev forums who did an unreal mode os and that was his avatar
05:16:16 <elliott> catseye: it has... soured my impression
05:16:22 <elliott> zzo38: why fill screen with p :D
05:16:22 <catseye> zzo38: ah, i misremembered
05:16:44 <zzo38> elliott: Because of the color attribute.
05:16:47 <elliott> catseye: omg i'm gonna make my bootloader print out additional os for each time it has to retry reading
05:16:51 <elliott> catseye: boooot
05:16:59 <zzo38> (That is the reason why it isn't a different letter)
05:17:17 <catseye> ld: cannot find -lgmp
05:17:19 <catseye> yesssss
05:18:49 <catseye> zzo38: is the code to enter unreal mode short enough that you COULD put it in the bootblock?
05:20:00 <zzo38> catseye: I believe it probably is.
05:20:17 * catseye has wicked thoughts
05:20:33 <elliott> zzo38: now how do you output characters with bios >:)
05:20:37 <elliott> looks like http://www.ctyme.com/intr/rb-0100.htm
05:21:07 <zzo38> The MBR code I have does not use BIOS to output characters; it writes directly to video memory.
05:21:20 <zzo38> However, you can output characters with BIOS, too.
05:21:32 <elliott> mov ah, 0x0A
05:21:32 <elliott> mov al, 'B'
05:21:32 <elliott> mov cx, 1
05:21:32 <elliott> int 10h
05:21:33 <elliott> woot!
05:21:43 <elliott> zzo38: oh, i tried video memory
05:21:46 <elliott> but it didn't quite work...
05:21:47 <zzo38> (The operating system should clear the screen once it boots)
05:22:59 * elliott tries to understand your asm
05:23:12 <zzo38> elliott: Why did video memory not quite work? Ensure segment 0xB800 for text video.
05:23:25 <elliott> zzo38: it doesn't help that i suck at segments :)
05:23:41 <zzo38> (Absolute memory address 0xB8000)
05:24:00 <elliott> mov ax, 0xB800
05:24:00 <elliott> mov word [0], 0x0798
05:24:01 <elliott> clearly not this!
05:24:06 <elliott> (note: i have never done segments before)
05:24:18 <zzo38> You need to set the segment register!
05:24:45 <zzo38> (DS for most things, but ES for destination of STOSB and similar things)
05:24:58 <elliott> that would help, yes :D
05:25:29 <elliott> mov ds, 0xB800
05:25:31 <elliott> apparently this isn't cosher
05:25:33 <elliott> *kosher
05:25:35 * elliott reads more
05:25:39 <elliott> must. figure. it. out!
05:25:56 <catseye> elliott: no, you can't assign segment registers directly
05:26:02 <elliott> catseye: lol.
05:26:03 <catseye> instead, push onto stack, then pop ds
05:26:04 <zzo38> There is no MOV DS,immediate command, too bad!
05:26:08 <elliott> catseye: whaaat
05:26:14 <elliott> zzo38: 8086 makes no sense, agreed?
05:26:44 <elliott> omg
05:26:48 <elliott> it does beautiful things
05:26:53 <elliott> but i have no idea how
05:27:07 <elliott> oh it does boring things when i fix it
05:27:12 <pikhq> elliott: Setting the code segment is even weirder.
05:27:21 <pikhq> elliott: You do a long jump.
05:27:25 <elliott> :D
05:28:15 <elliott> pikhq: grumble why don't bioses start OSes with a blank screen
05:28:18 <elliott> why i ask you, why?!
05:28:40 <pikhq> Your computer does it tons of times per second.
05:28:41 <elliott> zzo38: wait, does yours fill the screen without jumping?
05:29:02 <zzo38> elliott: Yes, it uses REPZ and STOSB command to fill.
05:29:10 <elliott> i bow to you.
05:29:13 <zzo38> It fills screen with black "p" on gray background.
05:29:23 <zzo38> So that you can see it is loading.
05:29:33 <zzo38> And then operating system should clear it, to tell you it has been loaded.
05:30:47 <elliott> zzo38: is this code public domain, or?
05:30:56 <zzo38> elliott: Yes, it is public domain.
05:31:01 <elliott> thanks
05:31:13 <elliott> it's helped me learn. sort of :P :)
05:32:02 <elliott> err
05:32:05 <elliott> mov word [0], 0x0766
05:32:08 <elliott> how come this isn't the same as
05:32:14 <elliott> oh wait
05:32:19 <elliott> 66 isn't in decimal there
05:32:20 <elliott> :D
05:32:59 <zzo38> You can also see the strange way it loads the operating system, it does that so that it can load even if the operating system code overwrites the MBR code.
05:33:06 <elliott> zzo38: heh
05:33:20 <elliott> cpressey: you know what, outputting is overrated
05:33:25 <elliott> viva the silent boot!
05:33:51 <catseye> fuckit
05:33:54 <catseye> LIBRARY_PATH
05:33:57 <catseye> you are my friend
05:34:35 <zzo38> When the MBR code is loaded, the DX register already contains the current drive number.
05:35:13 <elliott> catseye: why does the befos kernel start at sector 4, not 2? whyyyy
05:35:15 <elliott> that is what i ask you
05:35:28 <catseye> elliott: i wanted padding for... something
05:35:34 <elliott> catseye: like a LAMER.
05:35:45 <elliott> zzo38: oh it does?
05:35:47 <catseye> i was predicting the boot code would grow?
05:35:48 <elliott> zzo38: i don't need to "mov dl, 0" then :)
05:36:03 <elliott> catseye: well the boot sector can't, can it? it's one sector by definition
05:36:10 <elliott> catseye: and all other booting code can be done in the "OS"
05:36:16 <zzo38> elliott: Yes, it does. You don't need to adjust the DL register.
05:36:17 <catseye> yeah yeah
05:36:27 <elliott> catseye: :p
05:36:58 <elliott> movah, 0ah
05:37:00 <elliott> Ah, oh ah.
05:37:26 -!- Sgeo has quit (Read error: Connection reset by peer).
05:38:15 <elliott> catseye: why doesn't nogood set cx?
05:38:23 <elliott> ALL THESE QUESTIONS
05:38:42 <zzo38> What I have in the operating system is a Forth word DISK which points to a variable in memory storing the current drive number. When the system loads it copy DL to DISK and then it copy DISK to DL when doing BIOS call to read the files on the disk.
05:39:35 <zzo38> So instead of typing A: like you do in DOS, you would type 0 DISK ! for the similar function.
05:40:54 <catseye> elliott: i have no idea
05:40:59 <elliott> heh
05:41:08 <elliott> zzo38: cool
05:41:31 <catseye> elliott: I guess it will be written KERNEL_SEC + (KERNEL_CYL * 256) times
05:42:01 <elliott> mov dword [0], 0x076F0762
05:42:02 <elliott> mov word [5], 0x076F
05:42:06 <elliott> my optimazition totally no worketh
05:42:35 <elliott> aha it needs to be [4]
05:42:42 <catseye> my LIBRARY_PATH cheatingness seems to have gotten ghc to make further progress
05:45:04 <catseye> i wonder what would happen if i *did* switch to unreal mode in the MBR, then booted DOS with that
05:45:23 <elliott> foo:mov al, 0
05:45:23 <elliott> mov ah, 0x07
05:45:23 <elliott> mov dh, 25
05:45:24 <elliott> mov dl, 80
05:45:24 <elliott> int 10h
05:45:26 <elliott> clears the screen woo
05:45:51 <elliott> hey i never use al anywhere
05:45:56 <elliott> great place to put my cursor pointer!
05:46:56 <elliott> inc al
05:46:56 <elliott> inc al
05:47:01 <elliott> cpressey: OPTOMISED
05:47:24 <elliott> cpressey: psht what's this i can't do mov [al]?
05:47:30 <elliott> cpressey: x86 is so unorthogonal
05:48:34 <elliott> oh wait
05:48:35 <elliott> al is, uh
05:48:35 <elliott> yeah
05:48:48 <catseye> one byte?
05:49:29 <elliott> yeah
05:49:30 <catseye> aiiiRRRhhhh
05:49:32 <elliott> cal153: woot
05:49:36 <elliott> it now fills the screen with "booooooooooooooO"
05:49:40 <elliott> not the capital
05:49:41 <elliott> you know what i mean
05:49:46 <elliott> erm
05:49:48 <elliott> *catseye:
05:49:57 <elliott> catseye: you can measure how long your floppy takes to get ready by the number of os!
05:49:59 <elliott> genius, right?
05:50:02 <elliott> boot = magic floppy
05:50:03 <catseye> I'm-a gonna set C_INCLUDE_PATH too
05:50:06 <elliott> booot = one retry
05:50:10 <elliott> boooot = two retries
05:50:15 <elliott> booooot = uh oh
05:50:21 <elliott> boooooot = most OSes have already given up at this point
05:51:56 <pikhq> catseye: I suspect that unreal mode DOS would *barely* work.
05:52:03 <catseye> most people have already given up building ghc 6.12 on netbsd on this point
05:52:11 <catseye> *at this
05:52:27 <pikhq> catseye: You could just build it for i686-pc-linux-gnu on NetBSD.
05:52:43 <catseye> pikhq: I could just run Ubuntu, too.
05:52:45 <pikhq> And by build I mean download.
05:53:30 <elliott> catseye: http://sprunge.us/DPId my AWESOME incomplete bootsector
05:53:36 <elliott> pikhq: it's even better than the makefile!
05:54:11 <elliott> a successful boot should result in something like booot! :)
05:54:23 <elliott> with the !
05:54:26 <elliott> the ! marks SUCCESS
05:55:37 <elliott> cpressey: is it bad to be enjoying this?
05:56:46 <catseye> not at all
05:56:58 <elliott> hmm it's at cylinder 0 it seems
05:57:03 <elliott> (2 (position) / 18) / 2
05:57:52 <elliott> head 0 too
05:58:23 <catseye> elliott: while ghc builds i'm going to try putting netbsd on this usb stick
05:58:29 <elliott> catseye: good luck
05:58:43 <elliott> ES:BX -> data buffer
05:58:53 <elliott> does this mean BX as interpreted within the segment pointed to by ES is where the data goes?
06:01:10 <catseye> elliott: basically yes
06:01:16 <elliott> catseye: hmm, why is befos loaded into segment 0x50?
06:01:27 <elliott> are a certain number of segments not wise to touch?
06:01:38 <catseye> think of ES as the "high word" and BX as the "low word" except there is actually some overlap (don't worry about that)
06:01:49 <elliott> yeah i know that
06:01:54 <catseye> elliott: there was a doc i read once that suggested it
06:02:00 <catseye> i will never find it again
06:02:04 <elliott> heh
06:02:07 <catseye> and i don't remember why
06:02:23 <elliott> what's the lowest segment that should work barring x86 being crazy? has to be after wherever 0x7C00 is presumably since that's where the bootloader is
06:02:26 <catseye> let me... let me think what it was called. someone might have archived it on the internets
06:05:44 <elliott> catseye: hmm, what would the org be for something loaded in sector 0x50 or whatever?
06:06:12 <catseye> i think i found the site
06:06:22 <catseye> elliott: don't know off the top of my head
06:06:28 <elliott> heh
06:07:34 * pikhq votes 0xFFFF
06:08:43 <catseye> elliott: I found it! http://pastie.org/private/gvavjfgtp0mbpntidfimta
06:09:05 <elliott> you linked that thing's docs yesterday, didn't you? :)
06:09:08 <elliott> maybe not
06:09:28 <elliott> "Note that any
06:09:28 <elliott> file (.COM or otherwise) which is booted from a disk MUST NOT contain
06:09:28 <elliott> any DOS calls (INT 21 etc.) since DOS is not loaded, and any calls to
06:09:28 <elliott> it will crash the system."
06:09:30 <elliott> you don't say
06:10:12 <elliott> catseye: i don't see 0x50 there :)
06:10:18 <elliott> only 0x40
06:10:34 <elliott> which has bios shit in it, and so sounds less-than-optimal...
06:12:15 <catseye> Booted programs requiring less than 30464 bytes of memory can be loaded
06:12:15 <catseye> at the default segment $0050, below the BOOT loader code. Larger programs
06:12:15 <catseye> should be loaded at segment $0800, above the boot loader.
06:12:25 <catseye> (that was NOT 5 lines, irssi)
06:12:26 <elliott> "movl $42, %fs:(%eax) ; Equivalent to M[fs:eax]<-42) in RTL"
06:12:29 <elliott> comment: beyond useless
06:12:32 <elliott> (--wikipedia)
06:12:36 <elliott> catseye: ah
06:12:47 <elliott> catseye: it was 5 lines, just most of them were blank and the ircd discarded them :)
06:12:57 <elliott> well "most", still less than half :p
06:13:13 <elliott> catseye: 0x800 sounds good then
06:13:46 <zzo38> elliott: But your program http://sprunge.us/DPId mess up the DL register!!?
06:14:18 <elliott> zzo38: hmm? how?
06:14:20 <elliott> also, does it matter?
06:14:33 <elliott> also it is hardly a program yet, i haven't put in disk reading :)
06:14:59 <zzo38> You need the DL register to boot from the drive. Perhaps push it to the stack if you need it for something else at first.
06:15:47 <elliott> oh yes, dl is drive number!
06:15:52 <elliott> I completely forgot.
06:16:06 <elliott> zzo38: I will just use a different register.
06:17:12 <elliott> zzo38: hmm, will DL always be 0?
06:17:16 <elliott> or does the bios set it automatically?
06:17:40 <zzo38> The BIOS sets it automatically, I think. DL will be zero if you are booting from the first floppy drive.
06:18:18 <elliott> Okay.
06:18:26 <elliott> zzo38: Thank you for pointing that out.
06:19:00 <catseye> elliott: usb stick is being newfs'ed
06:19:03 <elliott> catseye: woot
06:19:24 <elliott> catseye: this is the most fun programming something i've had in ages
06:19:30 <elliott> i'm totally learning here!
06:19:44 <elliott> this is my first asm program that i didn't just copy-and-paste... even if i did take a lot of cues from your bootloader :P
06:21:10 <elliott> catseye: now i have to decide how many sectors my kernel takes up, sheesh!
06:21:31 <elliott> catseye: hmm, one sector = 512 bytes?
06:21:33 <elliott> oh, of course
06:21:50 <elliott> catseye: should i just set it to the rest of the floppy to start with?
06:22:28 <catseye> up to you I suppose
06:22:35 <elliott> i think i will
06:22:36 <zzo38> elliott: You can do how I did it, if you want to
06:22:42 <catseye> I just picked 8K on the basis that I would probably not make anything that big to start
06:22:55 <elliott> zzo38: sorry, I couldn't understand your program, not a good enough asm programmer :) how does yours do it?
06:23:06 <elliott> catseye: yeah but i'm probably going to be using C here (although... i like this asm malarkey a lot)
06:23:09 <elliott> catseye: and, well, you know gcc.
06:23:33 <catseye> sure
06:24:01 <elliott> catseye: long term plan is to not have this on a floppy anyway, and then, well, it's just loading a 1.44 megs minus 512 bytes kernel off a way larger medium :p
06:24:08 <elliott> catseye: even though, uh, i have no partition table, so it'd probably be a CD
06:24:13 <elliott> or just a partition
06:24:18 <zzo38> Mine loads the maximum number of sectors, starting at the address in RAM which is designated for the operating system.
06:24:57 <zzo38> That is how it loads the kernel.
06:25:44 <catseye> options COMPAT_FREEBSD # binary compatibility with FreeBSD
06:25:49 <catseye> heh, you *can* has that
06:26:23 <elliott> catseye: here, have the cat -v version of my bootsector
06:26:25 <elliott> RM-4^GM-:P^YM-M^PZM-4^BM-M^Ph^@M-8^_fM-G^F^@^@b^Go^GM-;^D^@M-G^Go^GCCM-4^@M-M^Sh^@^H^G1M-[M-0>M-1^B0M-vM-M^SrM-ffM-G^Gt^G!^G^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
06:26:25 <elliott> ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
06:26:26 <elliott> ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@UM-*
06:27:39 <catseye> WAH
06:27:40 <elliott> cpressey: oh woot, my celebration code doesn't work
06:27:44 <elliott> cpressey: how cool is that
06:28:08 <catseye> what does uouospdfo your celebration code do?
06:28:29 <catseye> um del word #3
06:28:52 <catseye> local lag becuz i am building a USB_STICK kernel
06:29:00 <elliott> wait wait wait
06:29:00 <elliott> first
06:29:02 <elliott> hexdump bootloader
06:29:03 <elliott> 0000000 b452 ba07 1950 10cd b45a cd02 6810 b800
06:29:03 <elliott> 0000010 661f 06c7 0000 0762 076f 04bb c700 6f07
06:29:03 <elliott> 0000020 4307 b443 cd00 6813 0800 3107 b0db b13e
06:29:03 <elliott> 0000030 3002 cdf6 7213 e9e6 fffd 0000 0000 0000
06:29:05 <elliott> 0000040 0000 0000 0000 0000 0000 0000 0000 0000
06:29:07 <elliott> *
06:29:09 <elliott> 00001f0 0000 0000 0000 0000 0000 0000 0000 aa55
06:29:11 <elliott> 0000200
06:29:15 <elliott> catseye: mov dword [bx], 0x07210774
06:29:19 <elliott> oh wait
06:29:25 <catseye> and yes, assembly coding is a blast
06:29:27 <elliott> catseye: would modifying es fuck up the segments?
06:29:34 <elliott> maybe not, it still changes the screen
06:29:36 <elliott> just erratically
06:29:42 <catseye> i don't think you've touched es yet?
06:29:48 <elliott> push 0x800 ; segment
06:29:49 <elliott> pop es
06:29:51 <elliott> i have full loading now!
06:29:53 <catseye> oh you do
06:29:56 <elliott> it's on to the celebration bit post-load
06:30:12 <elliott> catseye: you know the awesome thing? i can't think how i'd use up 510 bytes.
06:30:19 <catseye> yes but what is that mov dword supposed to do? put two chars on screen?
06:30:27 <elliott> yes
06:30:28 <elliott> 't!'
06:30:33 <catseye> ah yes
06:30:34 * elliott makes it two words to test
06:31:02 <elliott> catseye: the result is "t!o"
06:31:04 <elliott> which makes little sense really
06:31:08 <elliott> oh wait
06:31:09 <elliott> i clobber bx
06:31:12 <elliott> when loading
06:31:12 <elliott> heh
06:31:20 <elliott> catseye: got a better register to stuff this into than dx? :P
06:31:28 <elliott> x86 is so register-starved it's not even funny
06:31:32 <elliott> I see why people use x86-64
06:32:00 <elliott> woot
06:32:03 <elliott> "boot!"
06:33:57 <elliott> catseye: oh wow
06:34:06 <elliott> catseye: jumping to KERNEL_SEGMENT:0 does wonderful things
06:34:13 <elliott> catseye: the t morphs into tons of characters every second
06:34:22 <elliott> catseye: presumably the null byte does really fun stuff as x86
06:34:45 <elliott> catseye: add [bx+si],al apparently
06:34:53 <elliott> can't think why that would do anything to vga but still
06:34:55 <elliott> catseye: hmm wait
06:35:12 <elliott> catseye: when i do the long jump it's the jumped-to code's responsibility to set up segment registers and whatnot right?
06:35:53 <elliott> hmm wait so bx is ... 6 there, si is presumably 0(?)
06:35:54 <elliott> aha
06:35:56 <elliott> catseye: oh man that's great
06:35:58 <elliott> catseye: si is 0
06:36:08 <elliott> catseye: bx is the pointer to the t, since i don't bother incrementing dx after celebrating (why bother?)
06:36:13 <elliott> catseye: we're in vga text ram
06:36:23 <elliott> catseye: and al is KERNEL_SECTORS = 62
06:36:33 <elliott> catseye: so basically after the jump, the NULLs add 62 to the t every cycle
06:36:42 <elliott> wonderful
06:36:49 <catseye> yes
06:36:58 <catseye> i mean
06:36:59 <elliott> catseye: aaaand before today i wouldn't have been able to figure that out
06:37:00 <elliott> go me
06:37:02 <catseye> wait what
06:37:14 <elliott> catseye: ok, so, si is 0
06:37:16 <elliott> because i never touch si
06:37:30 <elliott> catseye: at the start of the program i switch segment to 0xB800 i.e. text display
06:37:38 <elliott> catseye: and i use bx for the offset
06:37:46 <elliott> catseye: so it starts off as 4 because i've put "bo" in there
06:37:58 <catseye> < elliott> can't think why that would do anything to vga but still <-- ds still points to the screen right?
06:37:59 <elliott> catseye: then it gets "o" and gets incremented twice -- because ofc the property/attribute thing matters
06:38:11 <elliott> catseye: yes, i figured it out
06:38:12 <elliott> see below :)
06:38:18 <elliott> anyway, yeah, so
06:38:20 <elliott> 4+2 = 6
06:38:29 <elliott> i put the celebratory "t!" in, no point incrementing bx
06:38:32 <elliott> so it still points at the t
06:38:40 <elliott> then add [bx+si],al == add [bx], al
06:38:51 <elliott> al is a leftover from the floppy read, it's the number of kernel sectors
06:38:53 <elliott> which i have set to 64
06:38:55 <elliott> *62
06:38:56 <elliott> thus it's
06:38:58 <elliott> add [bx], 62
06:39:00 <elliott> every single cycle
06:39:03 <elliott> and bx points to the t characters
06:39:07 <elliott> thus, flickery character fun
06:39:15 <catseye> yes
06:39:35 <elliott> catseye: now i make things more fun
06:39:44 <elliott> catseye: why fill the floppy with zeroes when you can fill it with /dev/urandom?
06:40:07 <elliott> catseye: it... inexplicably does the same thing
06:40:29 <elliott> catseye: that means there's something wrong with where I'm jumping to, doesn't it.
06:42:22 <catseye> possibly
06:42:41 <catseye> fill it with 55's or something
06:43:12 <elliott> nah it's doing exactly what 0 did all the time, so, my read is going wrong
06:43:27 <catseye> do you check the error code?
06:43:33 <catseye> wait well you do retry
06:43:34 <elliott> catseye: nope :)
06:43:36 <elliott> but yeah
06:43:39 <elliott> i do check the carry
06:43:42 <elliott> int 13h
06:43:42 <elliott> jc load ; try again
06:44:01 <elliott> catseye: http://sprunge.us/LITK
06:44:03 <elliott> is my current code
06:47:14 <catseye> and it prints 2 "o"'s
06:47:15 <catseye> ?
06:47:31 <elliott> catseye: yep
06:47:33 <elliott> catseye: "boot!"
06:47:34 <catseye> it will try indefinitely it seems like
06:47:37 <elliott> and then the t goes all whoaaaaa
06:47:43 <elliott> catseye: so the read is succeeding
06:47:46 <elliott> it's just not going where i want somehow!
06:48:30 <elliott> LOL
06:48:34 <elliott> catseye: note how I never set ah to 0x02
06:48:46 <elliott> catseye: it's been succeeding... at resetting the disk, with a bunch of non-options
06:48:56 <elliott> catseye: btw, do you think "mov ah, fooh" is also acceptable?
06:49:01 <elliott> i think it is
06:49:07 <elliott> but i need confirmation, you see
06:49:20 <catseye> i... what was the story with $ again
06:49:35 <elliott> catseye: it... is unreliable
06:49:39 <catseye> 0x is really no better than 00h, i've decided
06:49:43 <catseye> and if $ is wonky
06:49:44 <catseye> i don't care
06:49:50 <elliott> catseye: db $55,$AA doesn't work
06:49:55 <elliott> catseye: sometimes lowercase doesn't work
06:49:56 <elliott> and uppercase does
06:49:57 <elliott> and stuff
06:50:17 <elliott> catseye: yay, it now boots properly
06:50:27 <elliott> and trying "make test" a lot proves that different, boring stuff happens each time
06:50:33 <elliott> catseye: haha "Booti"
06:50:44 <elliott> [blue on yellow "b"][teal on grey "o"]ot!
06:51:06 <elliott> qemu: fatal: Trying to execute code outside RAM or ROM at 0x27b92952
06:51:33 <elliott> catseye: wish i could set "unreliable floppy" in qemu :)
06:51:34 <elliott> boooooooot!
06:51:55 <catseye> wtf
06:52:14 <elliott> catseye: ?
06:52:20 <catseye> oh different boring stuff ok
06:52:28 <catseye> hallu!
06:52:33 <elliott> catseye: well it's vaguely fun actually
06:52:38 <elliott> catseye: i can tar it up if you want to experience THE FUN
06:53:00 <catseye> i'm good! also i can build from your source
06:53:11 <catseye> oh but your awesome makefile
06:53:13 <catseye> i forgot
06:53:17 <elliott> catseye: yeah.
06:53:18 <elliott> :P
06:53:22 <elliott> catseye: two makefiles actuall
06:53:23 <elliott> *actually
06:53:28 <elliott> catseye: and i de-awesomed them
06:53:35 <elliott> it's just recursive make now
06:53:52 <elliott> boèt!
06:54:09 <elliott> boon!
06:54:15 <elliott> oot
06:54:18 <elliott> * oot!
06:54:59 <elliott> æoot!
06:55:01 <elliott> catseye: you are SO missing out
06:55:11 <elliott> wow
06:55:15 <elliott> this one displays semi-complex behaviour
06:56:17 <elliott> cpressey: http://filebin.ca/jdpamz/floppy.img
06:56:20 <elliott> cpressey: try this (qemu -fda)
06:56:29 <elliott> cpressey: WOW! it's semi-random
06:56:35 <elliott> cpressey: changes on each boot
06:56:44 <elliott> or, huh
06:56:47 <elliott> it *did* morph the b the first time
06:56:50 <elliott> but now it's always the !
06:56:52 <elliott> very interesting
06:58:32 <elliott> "Sub: We don't put lettuce or tomatoes on a BLT unless specifically asked to sir, it's company policy not to unless it's requested by the customer."
06:58:59 <elliott> catseye: MY BOOT SECTOR IS SHORTER THAN YOUR BOOT SECTOR (it isn't actually, but it has diagnostics!)
06:59:44 <evincar> Hey whoa, I just left myself logged in and now I stumble upon boot sector golf?
07:00:17 <elliott> evincar: oh hell yeah.
07:00:28 <elliott> evincar: technically, no, just me writing a boot sector
07:00:34 <elliott> evincar: HERE 'TIS: http://sprunge.us/WMIV
07:00:38 <evincar> elliott: I almost don't want to know how we got to this point. *refrains from reading log*
07:00:45 <elliott> evincar: i decided to write a boot sector
07:00:51 <elliott> and used catseye's for uh
07:00:52 <elliott> clues
07:01:09 <elliott> mine has diagnostic output and his doesn't, also it tries forever and his doesn't
07:01:11 <elliott> it's totally cooler
07:01:18 <elliott> evincar: if your floppy drive is really REALLY incomprehensibly slow you could get
07:01:20 <elliott> boooooot!
07:01:25 <evincar> I like "; here we go".
07:01:35 <elliott> it's boo(o for each time it retries)t!
07:01:48 <elliott> evincar: it's a long jump off a short pier
07:02:09 <evincar> elliott: Truer words were never spoken of bootloaders.
07:02:28 <elliott> evincar: but hey, it *is* miniscule!
07:03:15 <elliott> evincar: 151 bytes, it seems (plus a ton of zeroes, plus the two byte bootable signature)
07:05:23 <catseye> elliott: downloaded your img file
07:05:31 <elliott> catseye: qemu -fda hallu
07:05:41 <elliott> it's not that fun
07:05:44 <elliott> just... semi-interesting
07:05:52 <elliott> stuff happening constantly and then another thing happening every N
07:05:58 <elliott> not the kind of thing you expect from /dev/urandom
07:06:30 <catseye> damn i don't have qemu yet. only bochs, and that will be a pain
07:06:57 <catseye> ok, so, building ghc, installing netbsd to a usb stick AND building bochs
07:07:01 <catseye> *qemu
07:07:42 <catseye> storkbot: tl moo
07:07:42 <storkbot> catseye: oo
07:07:55 <elliott> catseye: bochs should work
07:07:58 <elliott> catseye: you have a command for it in befos
07:08:07 <catseye> hey yes i do
07:09:54 <elliott> catseye: oh
07:09:57 <elliott> catseye: it doesn't do the fun stuff though
07:10:01 <elliott> oh wait no
07:10:04 <elliott> catseye: that was with my working image
07:10:12 <elliott> catseye: holy shit bochs is slow :)
07:10:16 <elliott> 00017311310i[CPU0 ] BOUND_GdMa: fails bounds test
07:10:23 <elliott> it's outputting one of them every cycle even when the bootloader is running
07:10:25 <elliott> wonder what that means?
07:10:27 <Gregor> /sbin/shutdown: You must be in the / directory to run /sbin/shutdown.
07:10:34 <elliott> Gregor: ...awesome
07:10:41 <catseye> >>PANIC<< dlopen failed for module 'x': Shared object "libSM.so.6" not found
07:10:41 <elliott> Gregor: I guess 'cause . could get unmounted.
07:10:46 <catseye> hate you bochs you suck now
07:10:47 <elliott> catseye: try sdl
07:10:47 <elliott> or wx
07:10:53 <catseye> ah this shit
07:11:07 <Gregor> elliott: Yes ... and shutdown could just chdir() before doing that ...
07:11:35 <elliott> Gregor: Your mom could just chdir :P
07:12:09 <evincar> elliott: Now now, let's be civil.
07:12:16 <elliott> evincar: Your FACE is uncivil.
07:12:23 <elliott> catseye: oh it's just what happens when you spew crap at bochs heh
07:12:28 <elliott> catseye: just use qemu, it does the fun stuff.
07:12:34 <catseye> elliott: I got it to boot! oo coloury t
07:12:49 <elliott> catseye: it's awesome in qemu because it goes all nice and flickery!
07:12:51 <elliott> like RAINBOWS
07:13:03 <catseye> LD_LIBRARY_PATH="/usr/pkg/share/x11-links/lib/:$LD_LIBRARY_PATH" bochs -q 'boot:a' 'floppya: 1_44=floppy.img, status=inserted' ftw
07:13:38 <elliott> catseye: in bochs it just sits there spewing debug
07:13:38 <elliott> for me
07:13:40 <evincar> Bah, I just got out of an hour-long conversation, largely in French, with a guy I barely knew from high school, and of all things he ended up hitting on me. :P
07:13:42 <catseye> i have a feeling i'm going to be all about the environment variables being all slutty, here in NetBSD land...
07:14:10 <elliott> evincar: thats cuz french is gay duh
07:14:35 <evincar> elliott: No, French is "anything that moves".
07:14:44 <elliott> evincar: and most things that don't
07:14:50 <elliott> evincar: also: striking
07:14:57 <elliott> i imagine the language goes on strike and suddenly you can't write books any more
07:15:11 <elliott> also: white flag, how many stereotypes have i got left now?
07:15:14 <evincar> Hah. Absolutely.
07:15:55 <elliott> catseye: yeah $ is not worky
07:16:00 <elliott> catseye: dw $foo always says symbol foo is undefined
07:16:33 <evincar> Why is it that a young bisexual man assumes that every other young bisexual man he meets logically wants to exchange nude pictures online? Am I the only 19-year-old who doesn't want to sleep with every person at every chance I get?
07:16:51 <evincar> This is totally off-topic, sorry.
07:16:52 <elliott> Yes.
07:16:58 <elliott> (Note: No.)
07:17:02 <evincar> Darn.
07:17:18 <evincar> (Note: Still darn, because there seem to be few to none around me.)
07:17:37 <elliott> evincar: But there is the stereotype of bisexual = sluttiness...
07:17:47 <elliott> And probably more than a few people claim to be bisexual just because, well, anything that moves.
07:19:28 <evincar> I know, which really gets on my nerves. Just because *they* have an overactive sex drive doesn't mean *I* ought to be considered a slut for simply associating with them.
07:19:43 <evincar> RIGHTEOUS IDNIGNATION okay I'm done.
07:19:59 <elliott> blah blah blah nobody gives a shit :p
07:20:02 <evincar> I was so righteously indignant that I couldn't even type properly.
07:20:03 <evincar> Yeah.
07:20:36 <evincar> I also inadvertently came out to an esoteric programming language IRC channel, but I don't exactly give a damn.
07:21:00 <evincar> Maybe a third of a damn.
07:21:05 <catseye> why do people keep thinking there is a topic here?
07:21:40 <evincar> I wouldn't say there's a topic per se, but there is presumably a shared interest lurking somewhere.
07:21:42 <elliott> evincar: lol @ this idea of "coming out"
07:21:49 <Gregor> <evincar> Why is it that a young bisexual man assumes that every other young bisexual man he meets logically wants to exchange nude pictures online? Am I the only 19-year-old who doesn't want to sleep with every person at every chance I get? <-- because you're talking to the entirely wrong young bisexual men :P
07:21:58 <elliott> because *everywhere* is backwards enough to think that people are straight by default!
07:22:15 <elliott> and everywhere makes a big deal about not being straight ESPECIALLY ON THE INTERNET WHERE WE ARE ALL WHOLESOME HETEROSEXUALS
07:22:23 <elliott> sidenot: Wholesome Heterosexuals -- band name.
07:23:13 <evincar> elliott: Yeah, I'm "out" in the sense that if it comes up, I'll be honest, and if I find a male attractive, I'll ask him if he's interested in menfolk. It tends to really take people by surprise.
07:23:16 -!- aloril has quit (Read error: Connection reset by peer).
07:23:30 <elliott> evincar: WELCOME TO AMERICA
07:24:21 <evincar> Gregor: You try finding the entirely right *anybody* if you're dealing with a group that's negatively stereotyped and almost deserves it.
07:24:45 <evincar> elliott: Screw it, I'm moving to Canada in a couple of years anyway.
07:24:57 <elliott> Sidenote: If you're seeking out specifically *bisexual* men, rather than bisexual or gay men, aren't you bisexualsexual, not bisexual?
07:25:00 <elliott> Or X=Xsexual...
07:25:55 <Gregor> Also, if you're only seeking out bisexual *men*, you're homobisexualsexual.
07:26:17 -!- elliott has changed nick to keanu.
07:26:19 <keanu> Gregor: ...whoa.
07:26:22 -!- keanu has changed nick to elliott.
07:26:43 <Gregor> X-D
07:27:04 <elliott> Gregor: I think we need parentheses.
07:27:09 <elliott> (homo,bisexual)sexual
07:27:15 <elliott> Is that it?
07:27:16 <elliott> Hmm.
07:27:19 <elliott> homo(bisexual)sexual?
07:27:24 <elliott> AAAAA THE CONFUSION
07:27:46 <evincar> I would really resent requiring a *tuple* to describe my sexual orientation.
07:27:46 <Gregor> elliott: Now find the word for a man who is attracted only to heterosexual, homophobic men.
07:27:58 <elliott> Gregor: Republican
07:28:03 <Gregor> evincar: That's because describing sexual orientation is ridiculous.
07:28:04 <Gregor> ...
07:28:06 <Gregor> elliott++
07:28:33 <elliott> let's just agree to stop talking, nothing can possibly top that
07:28:34 <evincar> But it surely is.
07:28:44 <evincar> I'm working on a language.
07:28:54 -!- aloril has joined.
07:28:55 <evincar> It might get done this weekend.
07:29:20 * evincar is trumped.
07:29:51 <elliott> evincar: It even has a fuckin' BOOTLOADER.
07:29:52 <elliott> Fuckin' A.
07:30:01 <evincar> Fuckin' A:.
07:30:13 <elliott> Peter Gibbons: This isn't so bad, huh? Makin' bucks, gettin' exercise, workin' outside.
07:30:13 <elliott> Lawrence: Fuckin' A.
07:30:13 <elliott> Peter Gibbons: [nods] Fuckin' A.
07:30:13 <evincar> I'm sorry, it just sorta slipped out.
07:31:20 <evincar> Unfortunately this idea is sort of messing with my head...
07:32:28 <evincar> ...a totally naive and terrible way of describing it would be to say "everything is a type".
07:32:38 <elliott> evincar: oh, Oleg: The Language
07:32:49 <elliott> evincar: and if you don't know who oleg is: http://okmij.org/ftp/
07:33:00 <elliott> he is possibly the smartest computer scientist alive today.
07:33:05 <elliott> if not that, the most diverse, by far.
07:33:11 <elliott> evincar: and he does everything. in the type system
07:33:19 <evincar> So I see.
07:33:27 <elliott> he could write my operating system in the type system.
07:33:29 <evincar> I think I love this man.
07:34:15 <evincar> Ooh.
07:34:26 <evincar> "Object-Oriented programming is a harmful methodology"
07:34:28 <elliott> everyone's gay for oleg. even republicans
07:34:50 <elliott> evincar: he says such controversial things but then smooth-talks you into agreeing with it. also: he has tons of OOP-related stuff on there anyway :P
07:34:57 <elliott> mostly implementations of OOP in [unlikely place]
07:35:14 <elliott> evincar: it's probably better using the categories rather than the what's-new
07:35:44 <evincar> elliott: So I see. But luckily I seem to already share in his controversial thinking.
07:35:48 <zzo38> Object-oriented is not good for everything. Some people think it is. But actually it is good only for a few things.
07:35:59 <elliott> yeah i've never been too enamoured with oop.
07:36:42 <elliott> evincar: "object-oriented design is the roman numerals of computing." --Rob Pike
07:37:41 <evincar> zzo38: Right, as with anything. I'm not saying OOP is a bad concept, but it's definitely a bad philosophy.
07:37:52 -!- augur has joined.
07:38:47 <zzo38> evincar: Yes, I believe you.
07:41:35 <zzo38> Many people disagree about many things in programming. I have some opinions also different than others.
07:42:35 <evincar> zzo38: Disagreement is necessary to keep the field lively.
07:43:24 <zzo38> I find bitwise operations useful; I find preprepreprocessor useful; I have written various things; I have used many programming languages (including Forth).
07:44:22 <catseye> GHCi, version 6.12.3: http://www.haskell.org/ghc/ :? for help
07:44:24 <catseye> w00tness
07:44:36 <evincar> (So, am I talking to a bot, or not?)
07:44:42 <zzo38> For example, I have written this, see what you can understand of it: *p++=((charset[b*14+a]>>x)<<7)|c; You probably cannot understand due to lack of context.
07:44:58 -!- augur has quit (Remote host closed the connection).
07:45:13 -!- augur has joined.
07:45:15 <evincar> Nothing has meaning without context.
07:45:35 <zzo38> These days I write programs in Enhanced CWEB, mostly.
07:46:19 <elliott> <catseye> GHCi, version 6.12.3: http://www.haskell.org/ghc/ :? for help
07:46:24 <elliott> catseye: now haskell platform!
07:46:31 <catseye> eek
07:46:44 <elliott> catseye: then, uh, if you have no cabal(1), fetch cabal-install from the interwebs
07:46:58 <elliott> catseye: then after the first "cabal update" or whatever it is edit the config file and enable haddock or documentation or whatever the flag is called
07:47:07 <elliott> then "cabal install foo" as non-root *should* work fine and install docs too
07:47:11 <elliott> catseye: haskell platform is easy
07:47:14 <elliott> just configure gmake gmake install
07:47:22 <catseye> k
07:48:00 <evincar> I love how "configure make make install" is the "next next finish" of the *nix world.
07:48:26 <elliott> evincar: *gmake, catseye is on NETBSD!
07:48:28 <elliott> because i forced him to
07:48:30 <elliott> catseye: how goes the usb
07:48:40 <zzo38> evincar: What if I told you what the variables meant: 'p' is a pointer into video memory. 'b' is a character number. 'a' is a row number. 'x' is a loop counter (actually a unrolled loop). 'c' is a color code.
07:48:57 <evincar> elliott: I said "make" deliberately to provoke a reaction. And it worked. :)
07:49:30 <elliott> <evincar> (So, am I talking to a bot, or not?)
07:49:30 <elliott> no
07:49:45 <evincar> elliott: Have since realised.
07:49:47 <catseye> elliott: it is pretty much done, i would need to reboot to test it obviously
07:49:55 <elliott> catseye: i totally want it tomorrow
07:49:57 <elliott> but for now
07:50:00 <elliott> GOODNIGHT GOOD/BAD SIRS
07:50:04 <elliott> (evil sirs?)
07:50:11 <elliott> vorkit sirso
07:50:14 <elliott> goodnight; bye
07:50:16 <evincar> G'night.
07:50:17 -!- elliott has quit (Quit: Leaving).
07:50:29 <zzo38> evincar: Can you understand the code now, that I told you what each variable means?
07:50:57 <evincar> zzo38: You're setting a pixel in video memory, given a character and font data?
07:51:44 <zzo38> evincar: Yes, I am doing that. But can you see how the colors work?
07:53:54 <evincar> zzo38: It looks like you're killing the last few bits of the character data by shifting them away then shifting zeros in their place, and replacing them with the colour code.
07:54:02 <evincar> It's sort of hard to tell.
07:56:15 <zzo38> Notes: This is a paletted video mode, with 256 colors. The 'c' is a PC text video color code (for example, 0x07 is gray on black). b=e[y*80+x].character; c=e[y*80+x].color&video_mem.flash_state; The 'video_mem.flash_state' can have two possible values. Can you guess what they are?
07:58:59 <zzo38> (The flash_state can easily be switched between those two values by a bitwise XOR operation.)
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:11 <evincar> Flashing if the hight bit is set, I'd guess.
08:01:12 <zzo38> And note that the color code is eight bits long! (Like the DOS screen, bit0-bit3 is foreground, bit4-bit6 is background, and bit7 indicates blinking)
08:01:15 <evincar> *high
08:01:36 <zzo38> evincar: Yes, it flashes if the high bit is set, the same as the PC text video.
08:02:11 <zzo38> Hopefully you can now figure out how the palette is initialized and what the values of 'flash_state' are, from this information.
08:03:19 <evincar> Ugh, I can't spend the effort to think about this right now. I ought to be in bed. :P
08:03:19 <zzo38> (Hint: The palette has many duplicate colors)
08:04:27 -!- evincar has quit (Quit: Immediately bedtime, sorry all.).
08:07:54 <zzo38> I have read up to chapter 27 in TeX: The Program, and I have already found many things which could be improved. Some of it is probably due to the limitations of Pascal, although there are other things, too.
08:12:33 -!- zzo38 has quit (Quit: 0110100110010110).
08:17:12 -!- storkbot has quit (Remote host closed the connection).
08:29:55 -!- catseye has quit (Quit: Lost terminal).
08:56:45 -!- Phantom_Hoover has joined.
09:03:29 -!- augur has quit (Remote host closed the connection).
09:03:52 -!- augur has joined.
09:14:30 <Phantom_Hoover> http://superdickery.com/index.php?option=com_content&view=article&catid=28%3Asuperdickery&id=66%3Alana-and-lois-owned&Itemid=54 I loled.
10:00:34 -!- FireyFly has joined.
10:05:14 -!- tombom has joined.
10:28:00 -!- augur has quit (Remote host closed the connection).
10:28:13 -!- augur has joined.
10:41:22 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
10:41:28 -!- MigoMipo has joined.
10:47:15 -!- augur has changed nick to SheldonCooperPhD.
10:47:26 -!- SheldonCooperPhD has changed nick to augur.
10:48:15 -!- augur has changed nick to SheldonCooperPhD.
10:49:19 -!- SheldonCooperPhD has changed nick to augur.
10:50:58 -!- augur has changed nick to SheldonCooperPhD.
10:56:00 -!- SheldonCooperPhD has changed nick to augur.
11:05:23 -!- MigoMipo_ has joined.
11:05:34 -!- MigoMipo has quit (Ping timeout: 240 seconds).
11:13:37 -!- augur has quit (Remote host closed the connection).
11:13:47 -!- augur has joined.
11:32:06 -!- FireyFly has changed nick to FireFly.
12:05:27 -!- tombom has quit (Quit: Leaving).
12:14:13 -!- Phantom_Hoover has joined.
12:45:44 * Phantom_Hoover attempts to upgrade Ubuntu by reinstalling from the ISO.
12:45:47 <Phantom_Hoover> I MAY NOT RETURN
12:46:42 <Vorpal> Phantom_Hoover, why not upgrade the normal way
12:46:49 <Vorpal> from inside the update manager thingy
12:47:01 <Phantom_Hoover> Vorpal, because that takes about 7 years on my connection.
12:47:15 <Vorpal> Phantom_Hoover, and the ISO didn't take about 7 years to download?
12:47:28 <Phantom_Hoover> It did not, by virtue of Aria.
12:47:31 <Vorpal> Phantom_Hoover, besides not all packages will exist on the ISO probably
12:47:39 <Vorpal> Aria being?
12:47:56 <Phantom_Hoover> Something which seems so utterly insane one of us could have thought of it.
12:48:16 <Vorpal> Phantom_Hoover, well, details? All google gives me is opera related stuff
12:48:24 <Phantom_Hoover> As far as I can tell, it takes a list of mirrors and downloads from all of them simultaneously.
12:48:29 <Vorpal> hm
12:48:42 <Phantom_Hoover> Then drops any that fall behind. And fails routinely.
12:48:48 <Vorpal> Phantom_Hoover, then the limit is not your connection, but the mirrors you use
12:48:57 <Phantom_Hoover> BUT, it got me the ISO in about 10 minutes.
12:49:20 <Vorpal> Phantom_Hoover, tried mirrors.kernel.org for your ubuntu package mirror?
12:49:32 <Vorpal> it is generally quite fast
12:49:39 <Vorpal> even from UK iirc
12:50:59 <Phantom_Hoover> I suppose the fact that I waited 20 days since it was updated could help...
12:51:22 <Vorpal> Phantom_Hoover, hm?
12:51:53 <Phantom_Hoover> Well, the last 2 dist upgrades I did were on the day the new version was released.
12:52:20 <Vorpal> Phantom_Hoover, well, yeah that could explain stuff
12:52:58 <Vorpal> Phantom_Hoover, mirrors.kernel.org manages to max out my connection easily.
12:54:10 <Phantom_Hoover> Vorpal, wait, so it's a mirror of Canonical's APT repositories?
12:54:37 <Phantom_Hoover> My download server is set to "Server for United Kingdom" at the moment.
12:55:00 <Vorpal> Phantom_Hoover, mirrors.kernel.org mirrors lots of stuff. Kernels, arch packages, ubuntu packages, and quite a few other distros
12:55:11 <Phantom_Hoover> Yesyesyes.
12:55:23 <Phantom_Hoover> But how do I speed stuff up with it?
12:55:47 <Vorpal> using it in /etc/apt/sources.list
12:55:54 <Vorpal> at least that is what I always did
12:56:27 <Phantom_Hoover> Hmm, now a quandary.
12:57:14 <Vorpal> example line: deb http://mirrors.se.eu.kernel.org/ubuntu/ lucid-security main universe
12:57:25 <Vorpal> you likely want to change the se bit
12:57:31 <Phantom_Hoover> I can't really be bothered.
12:58:10 <Vorpal> well, Sweden should be fast for you too
12:58:59 <Vorpal> Phantom_Hoover, anyway mirrors.kernel.org is geodns
12:59:04 <Vorpal> so just using that should work fine
13:00:49 <Phantom_Hoover> So just put "deb http://mirrors.kernel.org/ubuntu/ lucid-security main universe" into my sources.list?
13:12:17 <Vorpal> Phantom_Hoover, well look in sources.list, see how it lists a number of different lines
13:12:19 <Vorpal> all:
13:12:28 <Vorpal> deb http://mirrors.kernel.org/ubuntu/ <various stuff>
13:12:38 <Vorpal> well the URL will be different for you currently
13:13:03 <Vorpal> Phantom_Hoover, but what you need to do is replace the existing mirror on all lines with the new one. I couldn't copy all lines, would be a bit too long
13:13:24 <Vorpal> Phantom_Hoover, if you have any lines referring to ddebs.ubuntu.com: leave those alone
13:13:45 <Vorpal> leave any PPAs (ppa.launchpad.net) URLs alone too
13:15:32 <Phantom_Hoover> Vorpal, wait, can't I just use Software Sources for that>
13:16:09 <Vorpal> Phantom_Hoover, uh perhaps. I'm not used to the GUI ways
13:17:48 <Phantom_Hoover> Apparently, the fastest mirror from my computer is in France.
13:18:00 <Phantom_Hoover> mirrors.ircam.fr, apparently.
13:19:54 <Vorpal> Phantom_Hoover, heh
13:20:09 * Phantom_Hoover starts the upgrade.
13:21:10 <Phantom_Hoover> !wiki
13:22:30 <Phantom_Hoover> Wow, download time is under an hour.
14:04:17 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
14:43:20 -!- zzo38 has joined.
15:05:53 -!- sftp has quit (Remote host closed the connection).
15:15:21 -!- sftp has joined.
15:30:38 -!- sftp has quit (Remote host closed the connection).
15:45:33 -!- Mathnerd314 has joined.
16:00:27 -!- Quadrescence has quit (Read error: Operation timed out).
16:02:25 -!- Quadrescence has joined.
16:05:13 -!- wareya_ has joined.
16:06:34 -!- wareya has quit (Read error: Operation timed out).
16:07:00 -!- sftp has joined.
16:19:58 -!- catseye has joined.
16:34:09 -!- elliott has joined.
16:37:34 <elliott> 04:48:24 <Phantom_Hoover> As fa04:48:24 <Phantom_Hoover> As far as I can tell, it takes a list of mirrors and downloads from all of them simultaneously.
16:37:34 <elliott> r as I can tell, it takes a list of mirrors and downloads from all of them simultaneously.
16:37:40 <elliott> you can configure it this insane way, but, no
16:37:57 <elliott> 05:00:49 <Phantom_Hoover> So just put "deb http://mirrors.kernel.org/ubuntu/ lucid-security main universe" into my sources.list?
16:38:00 <elliott> or just use the gui configuration
16:38:35 <elliott> fastest mirror detection is unreliable, use the swedish one :)
16:41:32 <zzo38> Assuming \def\msg#1{\immediate\write16{#1}} guess what output will be produced from these commands:
16:42:20 <zzo38> \msg{\expandafter\meaning\noexpand\message} \msg{\expandafter\meaning\noexpand\noexpand} \def\qq{123} \msg{\expandafter\meaning\noexpand\qq} % section 358
16:43:15 <zzo38> First guess without trying it, and then read section 358 and 210 of TeX: The Program and then try to guess again. And then run these commands in TeX to see the actual response.
16:44:06 <elliott> http://www.cliki.net/Clon THREE CLON PACKAGES
16:44:16 <elliott> zzo38: No idea, and I don't have that book.
16:45:17 <zzo38> If you don't have that book, you can read it on-screen by weaving the tex.web file (althoug you won't get many of the improvements in page formatting that the book has)
16:46:19 <zzo38> OK, if you have no idea here is another thiing you can try: Run these commands in TeX, and then see if you understand why you get the answers you do.
16:50:06 <zzo38> Can you guess this one: \setbox0=\vbox{\hrule width 42pt width 15pt} \msg{\the\wd0}
16:50:14 -!- MigoMipo_ has quit (Remote host closed the connection).
16:50:39 -!- MigoMipo has joined.
16:51:05 <zzo38> This one: \catcode`8=11 \catcode`B=12 \count0=567890 \count1="4819 \count2="0B \count3="0b \msg{\the\count0} \msg{\the\count1} \msg{\the\count2} \msg{\the\count3}
16:51:58 <zzo38> This one: \catcode`P=1 \dimen0=42PT \msg{\the\dimen0}
16:53:46 <zzo38> Are you good at TeX? Or are you really bad at it?
16:55:24 <elliott> Sorry, I was away.
16:55:29 <elliott> Where is the tex.web file?
16:55:49 <zzo38> elliott: You should find a copy anywhere you can find TeX distributions.
16:57:13 <elliott> zzo38: Can I not weave it, TeX it, and then view the resulting file?
16:58:11 <zzo38> elliott: No, I wouldn't expect that to work.
16:58:18 <elliott> zzo38: Is that not how the book was produced?
16:59:41 <zzo38> The book is produced by weaving (the WEAVE program converts the WEB format to TeX format), and then converted to DVI by TeX. (There are likely other changes too; the book has footnotes that the on-screen view doesn't have.)
17:00:01 <elliott> zzo38: Then I could do that myself to get the book, minus the footnotes; are the footnotes important?
17:00:14 <elliott> <elliott> zzo38: Can I not weave it, TeX it, and then view the resulting file?
17:00:23 <elliott> Weave the tex.web file, run TeX on it, and view the result.
17:00:41 <zzo38> Yes you can weave it and TeX it and view the result with a DVI viewer, or print it.
17:00:57 <zzo38> The footnotes are not that important, it is just a kind of short index.
17:01:27 <elliott> zzo38: But you said you didn't expect that to work.
17:01:28 -!- Sgeo has joined.
17:01:31 <elliott> Didn't you?
17:02:10 <zzo38> No. I said I didn't expect it to work if you did it incorrectly. If you do it correctly, it should work.
17:02:39 <elliott> What was incorrect about what I was planning to do? I'll make sure not to do it :)
17:03:24 <zzo38> There are many things that you can do wrong; just do WEAVE and TeX and then DVI and hopefully it should work, as long as you have the correct macro packages for WEB programs.
17:04:18 <elliott> Okay.
17:04:24 <zzo38> (I believe most TeX distributions include the macro packages you need)
17:04:27 <elliott> zzo38: Do you know where I can obtain WEB? I have searched for it but I can only find CWEB.
17:04:43 <zzo38> If you have TeX, it probably includes WEB.
17:05:07 <zzo38> (Try to run the "tangle" and/or "weave" program)
17:05:19 <elliott> I appear not to have TeX on this machine! I will install the Debian texlive package.
17:05:33 <elliott> Hopefully that has WEB; if not, it'll be one of the subpackages, I guess.
17:10:08 <zzo38> (I would suggest using Enhanced CWEB for new programs, though. The Pascal WEB program is still useful for TeX and those old programs, though.)
17:10:48 * Sgeo WTFs at NuCaptcha
17:10:57 <Sgeo> I'd imagine having it be a video would be WORSE
17:11:19 <Sgeo> Since a spambot might be able to determine which shapes are letters and which aren't
17:11:28 <zzo38> What is NuCaptcha?
17:11:39 <Sgeo> nucaptcha.com
17:11:44 <Sgeo> Advertising in captchas
17:11:54 * Sgeo is looking at http://www.nucaptcha.com/products/basic
17:12:39 <elliott> Sgeo: they seem to animate the random stuff behind it too
17:12:43 <elliott> and also elements in the "scene"
17:12:49 <elliott> which probably confuses a lot of stuff
17:12:58 <elliott> still, i could imagine detecting the outlines and using the extra frames to get a better estimate
17:14:00 <Sgeo> I found one that doesn't animate the background...
17:14:06 <Sgeo> http://www.nucaptcha.com/products/engage/6
17:14:36 <zzo38> I still prefer plain text CAPTCHA programs
17:14:53 <elliott> Insert the following: Abcd
17:14:54 <elliott> [ ]
17:15:32 <zzo38> They could be a bit more complex than that, depending on usage.
17:15:39 <elliott> zzo38: Yay, I have TeX.
17:15:41 <zzo38> You could also just have fields which say "please leave blank", or whatever.
17:16:13 <zzo38> Spambot programs probably don't understand the fields anyways, and will fill the form incorrectly.
17:16:27 <Gregor> I think if I saw a site with NuCaptcha, I /might/ just hunt down the webmasters and brutally kill them.
17:16:45 <elliott> Gregor: Ditto.
17:17:20 <catseye> selecting from a dozen animals would probably be more effective
17:17:27 <catseye> at least for a while
17:17:34 <elliott> Gregor: Of course, it's trivially easy to fight off non-site-specific spambots: Hide, with CSS, an input tag with name="email" somewhere; whether by display: none (risky), visibility: hidden, opacity: 0, positioning it far away (Google doesn't like this though), etc.
17:17:53 <elliott> But everyone's egotistical enough to think their site will get special treatment if they do that :)
17:18:08 <elliott> Gregor: Oh, and server-side, just refuse to post whenever the email field is filled, of course.
17:18:12 <Gregor> That's pretty brilliant actually X-D
17:18:21 <Sgeo> What if someone's browser autofills it in?
17:18:23 <elliott> If it's filled after you give three warnings and a refusal to post, ban the IP for so long or whatever.
17:18:29 <elliott> Sgeo: Their browser is made of fail.
17:18:47 <Sgeo> I can imagine Opera doing that (on user request)
17:18:52 <elliott> On user request.
17:18:57 <elliott> So have it say "don't do that" on the warning page.
17:18:57 <zzo38> elliott: Yes, I have seen that. And then, hide also the text that goes with it "Please leave it blank", so that if CSS is disabled, you can still understand it
17:19:04 <elliott> zzo38: Yes, indeed.
17:19:34 <Sgeo> What happens when Spambots become able to understand CSS?
17:20:25 <zzo38> Other ways are simply using protocols other than HTTP and SMTP, such as Gopher and Telnet.
17:20:54 <zzo38> Sgeo: You can just do other things such as keep the fields visible
17:20:59 <catseye> What happens when Spambots become able to understand Gopher?
17:21:18 <Sgeo> That sounds less useful
17:21:18 <catseye> you know that day is coming
17:21:27 <elliott> <Sgeo> What happens when Spambots become able to understand CSS?
17:21:30 <elliott> Unlikely.
17:21:45 <elliott> Sgeo: It's very hard to understand what's what with a CSS page; just ask Gregor.
17:21:49 <elliott> Spambots would have to do even more reasoning.
17:21:53 <Velmont> I did display:none on a big website, using that techinque, it did *not* work.
17:22:06 <elliott> Velmont: That's why you don't use display: none.
17:22:15 <elliott> Velmont: Also, big website = someone coded it in manually.
17:22:18 <Velmont> elliott: Yeah, I mean it's very easy to parse.
17:22:25 <Velmont> elliott: Not big enough for that.
17:22:36 <elliott> Velmont: Then use visibility:hidden or any number of things.
17:22:43 <elliott> Sgeo: Also, a lot of fields might be "fake", only with the real fields filled in by JS.
17:22:46 <elliott> So they'd have to understand JS.
17:22:53 <elliott> And by now the spammers have all shot themselves.
17:22:56 <elliott> Out of horror.
17:22:58 <Velmont> elliott: Only 100k visits per week. Which is not very much for spammers to consider making rules for it.
17:23:05 <elliott> <elliott> Velmont: Then use visibility:hidden or any number of things.
17:23:06 <elliott> :p
17:23:07 <zzo38> Gopher and Telnet protocols likely that if there are any spambots there will be very few, if any. These are uncommon protocols for the things that spambots are intended to post messages to.
17:23:16 <elliott> Velmont: Wait, did you use inline CSS?
17:23:24 <elliott> Velmont: Obviously put it in a linked stylesheet.
17:23:28 <elliott> With @import, even, if you can manage that.
17:23:36 <elliott> They're very unlikely to slog through that.
17:23:38 <Velmont> elliott: Hmm. Don't think so. Maybe I did. I can check the git log.
17:24:01 <elliott> Velmont: I would be *astonished* if spambots actually read linked CSS files, looked at all the selectors, and figured out whether it hid the field they're looking at.
17:24:07 <elliott> Velmont: After all, there are far bigger targets...
17:24:15 <elliott> Or, well, far MORE targets.
17:24:23 <zzo38> Do any spambots post ZIP quines anywhere?
17:24:30 <elliott> zzo38: I... doubt that
17:27:22 <Sgeo> ZIP quines?
17:27:42 <elliott> Sgeo: x = zip({'x': x})
17:27:51 <elliott> unzip(x) == {'x': x}
17:28:12 <Sgeo> You can zip a dict?
17:28:28 <elliott> ...
17:28:44 <elliott> >____<
17:29:19 <zzo38> There is also a GZIP file that when uncompressed, makes a file that is the same as the compress file concatenated by itself
17:30:04 <Sgeo> What zzo38 said was clearer, but I don't think equiv. to what elliott said
17:30:06 <elliott> zzo38: Nice.
17:30:15 <elliott> Sgeo: X.ZIP CONTAINS THE FILE "X.ZIP"
17:30:19 <elliott> happy?
17:30:40 <Sgeo> Yes
17:31:08 <zzo38> And there is a ZIP file which contains both a picture file and a copy of the ZIP file.
17:31:10 <catseye> that's like twice as cool as a quine program
17:31:15 <elliott> Sgeo: http://research.swtch.com/2010/03/zip-files-all-way-down.html
17:31:32 <elliott> catseye: it's great, it uses the fact that the zip decompressor is basically a simple sub-tc machine, with instructions and all
17:31:55 <Velmont> elliott: The CSS was in the included stylesheet. So it was not inline.
17:32:06 <elliott> Velmont: Then I'm inclined to blame something else entirely :)
17:32:14 <Sgeo> How can you make a captcha off of this?
17:32:15 <elliott> Velmont: Was the class called "hidden" or something?
17:32:23 <elliott> Sgeo: ...of recursive zip files?
17:32:24 <elliott> You can't.
17:32:31 <Velmont> elliott: Nope, "kode".
17:32:33 <Sgeo> So what was "ZIP Captcha"?
17:32:41 <elliott> Velmont: Hmm. What was the markup?
17:32:47 <elliott> Sgeo: Who said that?
17:32:49 <catseye> elliott: sure you can! "Upload recursive zip file here (one I haven't seen before):"
17:32:58 <elliott> catseye: I was thinking about that :)
17:33:02 <Sgeo> <zzo38> Do any spambots post ZIP quines anywhere?
17:33:04 <Sgeo> Oh
17:33:06 <catseye> of course, compuers might be better at it than us
17:33:06 <Sgeo> Duh
17:33:24 <Velmont> elliott: Just the same as the other fields. It had to know that it was disabled. So I think they read CSS.
17:33:25 * Sgeo faceplants
17:33:33 <elliott> Velmont: Was it display:none?
17:33:40 <Velmont> elliott: Yes.
17:33:43 <catseye> I think you should have to beat the captcha at chess!
17:33:51 <elliott> Velmont: Bet visibility:hidden would have worked. :)
17:33:56 <elliott> Velmont: Or even opacity:0; z-index: -34859758345893473
17:34:01 <catseye> Wait, that's also something where they kick our asses, huh.
17:34:10 <elliott> (For both of those, relative-positioning the next field on top of it or whatever.)
17:34:20 <elliott> Or just having it at the end, but maybe super-clever spambots won't be fooled by that.
17:34:33 * catseye goes back to the "identify this farm animal" captcha idea
17:34:54 <Velmont> elliott: They are just as easy to have a test for. - But I don't know how they got around it, but anyway, they can't do the STATIC captcha we're using now(!), but they did in fact spam a lot with the hidden field.
17:35:05 <zzo38> catseye: What if you do not know the names for all of the animals in English, or if the picture has bad lighting? (Or, if images are disabled?)
17:35:09 <elliott> Velmont: Just as easy, but not nearly as common.
17:35:21 <catseye> zzo38: it could be by sound!
17:35:26 <elliott> Velmont: Besides, opacity:0 may be some magic UI trick and hovering over it would show the field ;)
17:35:28 <elliott> Velmont: But meh.
17:35:37 <catseye> and it should translate from all human languages.
17:35:40 <zzo38> catseye: You could have sound disabled, too.
17:36:04 <catseye> zzo38: it could be by smell!
17:36:06 <zzo38> It is also possible the user has never seen a farm or any of the animals.
17:36:15 <catseye> Perhaps we are not quite that advanced yet.
17:36:41 <Sgeo> The nice thing about r.gz is that even broken web browsers that ordinarily decompress downloaded gzip data before storing it to disk will handle this file correctly!
17:36:43 <catseye> OK, maybe this won't work.
17:36:49 * catseye scraps his patent application
17:36:52 <Sgeo> ^^surround by quotes
17:36:54 <elliott> zzo38: Yay, I have tex.pdf now.
17:37:11 <zzo38> elliott: So, it works now?
17:37:28 <elliott> zzo38: Well, I appear to have TeX: The Program: The Footnoteless edition, so yes.
17:37:36 <elliott> Why are the footnotes not part of tex.web? :)
17:37:52 <elliott> zzo38: Oh, dear; it has not changed the <foo> code references into hyperlinks.
17:38:20 <elliott> zzo38: Is that an Enhanced CWEB-only feature or something? :-)
17:38:57 <zzo38> elliott: I assume the reason the footnotes are not there is because Knuth used a modified macro package, perhaps?
17:39:05 <elliott> Perhaps.
17:39:24 -!- wareya_ has changed nick to wareya.
17:40:15 <zzo38> Changing code references to hyperlinks is done by CWEB (Enhanced CWEB does it as well, since it is based on CWEB); I think there was no PDF format when WEB was designed.
17:40:55 <zzo38> (You might be able to make hyperlinks in WEB by modifying the webmac.tex file)
17:44:06 <zzo38> At first try to guess the output of \msg{\expandafter\meaning\noexpand\message} \msg{\expandafter\meaning\noexpand\noexpand} \def\qq{123} \msg{\expandafter\meaning\noexpand\qq}
17:44:33 <zzo38> And then read section 358 and 210 and then guess again. And then run it and see if you guess correctly.
17:46:22 <elliott> catseye: So what should I do with my OS Now? :) :P
17:46:26 <elliott> zzo38: I will in a minute.
17:46:31 <elliott> Or thereabouts.
17:47:37 <zzo38> See if you can find things which can be improved. (I read up to chapter 27 and I already found many things that could be improved, much of it probably having to do with limitations of Pascal; which can be improved in C)
17:53:02 <elliott> Erm, C question, I always forget this one: is *x++ the same as (*x)++ or *(x++)?
17:54:41 <Vorpal> elliott, *x++ will get the value and increment the pointer
17:54:49 <elliott> right
17:54:52 <elliott> so *buf++ = foo is what i want
17:54:57 <elliott> char *base256(char *buf, uint32_t n)
17:54:57 <elliott> {
17:54:58 <elliott> while (n) {
17:54:58 <elliott> *buf++ = n % 256;
17:54:58 <elliott> n /= 256;
17:54:58 <elliott> }
17:54:59 <Vorpal> elliott, I'm not sure what the order of *(x++) ends up as
17:55:00 <elliott> return buf;
17:55:02 <elliott> }
17:55:04 <elliott> :)
17:55:15 <elliott> well presumably *x then x is incremented...
17:55:31 <Vorpal> elliott, yeah probably, but it looks so strange written that way ;P
17:55:43 <elliott> for (i = 0; i <= 4294967295; i++) {
17:55:44 <elliott> MWAHAHA
17:55:52 <Vorpal> elliott, MAX_INT?
17:55:56 <Vorpal> err
17:55:56 <elliott> Vorpal: I use uint32_t
17:56:03 <elliott> so it's definitely that value
17:56:04 <Vorpal> yeah MAX_UINT
17:56:08 <elliott> and i don't think there's a UINT32_MAX.
17:56:15 <elliott> Vorpal: and on platforms with 64-bit int?
17:56:18 <Vorpal> elliott, there is iirc, if you use stdint.h
17:56:30 <elliott> oh, so there is
17:56:31 <elliott> thanks :)
17:56:42 <elliott> (that blog post about recursive zip crcs has inspired me to write a program to find a base-256 32-bit integer whose crc is itself)
17:57:07 <Vorpal> hah
17:57:49 <Vorpal> elliott, if you want to format that uint32_t the C standard says you should use one of the defines from <inttypes.h>
17:58:03 <Vorpal> they look quite bulky though
17:58:14 <elliott> heh
17:58:35 <elliott> Vorpal: I OPTOMISED my base256 function: http://sprunge.us/RFNZ
17:58:47 <elliott> (Reason: I want to zero out the buffer even if the result is small.)
17:58:53 <elliott> (And OPTOMISE!)
17:59:03 <Vorpal> elliott, they are used like: printf("%" PRIu32 "\n", your_unit32);
17:59:04 <elliott> "Two or more, use a four, you fucking bum!" --Dijkstra, rolling in his grave
17:59:07 <elliott> Vorpal: lovely
17:59:09 <Vorpal> which is, yeah, bulky
17:59:13 <elliott> Vorpal: uint32?
17:59:15 <elliott> *unit
17:59:18 <elliott> what happened to the last unit?
17:59:22 <Vorpal> oops :P
17:59:25 <elliott> (heh, i typo'd your typo and it became correct)
17:59:55 <catseye> elliott: why are you not using shifts
18:00:02 <elliott> catseye: oh touche, i can do that can't i
18:00:09 <catseye> yes you must OPTOMISE
18:00:16 <elliott> catseye: wait, for the divides sure, that's just >> 8
18:00:18 <Vorpal> even gcc -O1 turns % into shifts when possible
18:00:19 <elliott> catseye: but what about the modulo?
18:00:24 <elliott> oh wait yes
18:00:28 <Vorpal> elliott, you mean a bitmask :P
18:00:29 <elliott> wait what?
18:00:32 <elliott> I've confused myself
18:00:34 <elliott> Vorpal: oh indeed
18:00:38 <Vorpal> err
18:00:40 <Vorpal> &
18:00:41 <Vorpal> yeah
18:00:42 <elliott> Vorpal: well, you know what, I'm looping through 4 billion freakin' values here
18:00:45 <elliott> I'm going to hand-optimise
18:00:47 <Vorpal> elliott, anyway *the compiler does this for you*
18:00:50 <elliott> it's only a 20 line program :P
18:00:54 <elliott> Vorpal: I don't trust gcc
18:00:58 <elliott> and not trusting gcc has served me well
18:01:04 <elliott> especially in programs designed to process 4 billion items of data
18:01:06 <Vorpal> elliott, why are you not using clang!?
18:01:26 * Sgeo watches the Rally to Restore Sanity and/or Fear
18:01:38 <pikhq> Vorpal: It makes sense to use bitshifts if that is a better model of what you're *actually doing*, though.
18:01:46 <elliott> Vorpal: Oh yeah, n & 255!
18:01:53 <elliott> Is there a >>=?
18:01:57 <elliott> n >>= 8
18:01:59 <catseye> Sgeo: yeah what is this? i just saw a poster
18:02:01 <elliott> Please tell me there's a >>=.
18:02:04 <catseye> i guess google will know
18:02:05 <zzo38> Yes I think you can use >>=
18:02:11 <catseye> google knows all
18:02:20 <elliott> catseye: Jon Stewart and Stephen Colbert are mocking Glenn Beck with ridiculous extravaganza, organising a satirical sally today.
18:02:34 <zzo38> (And I, too, use bitwise operations a lot)
18:02:45 <Vorpal> <pikhq> Vorpal: It makes sense to use bitshifts if that is a better model of what you're *actually doing*, though. <-- well yes
18:02:56 <Vorpal> pikhq, but when it isn't that, don't :P
18:03:05 <elliott> catseye: (In response to Glenn Beck's Restoring Honor rally.)
18:03:06 <Vorpal> <elliott> Is there a >>=? <-- yes
18:03:09 <Vorpal> well
18:03:11 <Vorpal> no
18:03:14 <Vorpal> there is a >>= however
18:03:14 <Vorpal> :P
18:03:20 <elliott> catseye: (of August 28)
18:03:36 <Sgeo> catseye, mock rally thing with Jon Stewart and Colbert
18:03:41 <Sgeo> Well, rally for sanity
18:03:45 <Sgeo> Not supposed to be political
18:03:56 <elliott> Sgeo: *Rally to Restore Sanity and/or Fear
18:04:10 <elliott> (The merging of the Rally to Restore Sanity and the March to Keep Fear Alive.)
18:04:18 <elliott> Vorpal: omg my code can be OPTOMISED even more
18:04:20 <elliott> Vorpal: i don't need to shift it
18:04:24 <Vorpal> elliott, oh?
18:04:26 <elliott> Vorpal: i just need my bitmasks to be that little bit higher up
18:04:27 <elliott> 255
18:04:29 <elliott> 255<<8
18:04:31 <elliott> 255<<8<<8
18:04:31 <elliott> etc
18:04:35 <Vorpal> eh
18:04:37 <Vorpal> okay
18:04:39 <elliott> Vorpal: no?
18:04:47 <elliott> *buf++ = n & 255; n >>= 8;
18:04:47 <elliott> *buf++ = n & 255; n >>= 8;
18:04:47 <elliott> *buf++ = n & 255; n >>= 8;
18:04:47 <elliott> *buf++ = n & 255; n >>= 86;
18:04:49 <Vorpal> elliott, I need to see context to have any clue wtf you just meant
18:04:53 <elliott> that second one can easily be & 65280 right?
18:04:55 <Vorpal> 86 bits?
18:05:04 <elliott> Vorpal: see the above code
18:05:07 <elliott> er
18:05:09 <elliott> 86 is a typo
18:05:10 <elliott> ignore that
18:05:12 <Vorpal> elliott, ah
18:05:23 <elliott> Vorpal: i can just change 255 to 255<<8 and so on in the next ones, can't I?
18:05:27 <elliott> and get rid of the shifts
18:05:30 <Vorpal> elliott, I think shifting a 32-bit integer by more than 32 bits is undefined behaviour btw
18:05:41 <elliott> I don't do that
18:05:42 <elliott> afaik
18:05:44 <zzo38> No, that shouldn't work
18:05:51 <elliott> zzo38: why not?
18:06:16 <zzo38> Because if buf is char* and then 255<<8 will be out of range of char
18:06:16 <Vorpal> elliott, and well hm, is this the CRC code?
18:06:24 <olsner> you still need to shift to get the right byte value to store in buf
18:06:25 <zzo38> So you will just get zero
18:07:08 <elliott> Vorpal: no, the crc code was generated for me
18:07:13 <elliott> it's primarily a big-ass table :)
18:07:13 -!- augur has quit (Read error: Connection reset by peer).
18:07:19 <Vorpal> elliott, I know.
18:07:21 <elliott> a big ass-table
18:07:29 <elliott> olsner: oh right
18:07:29 <elliott> I mean
18:07:34 <Vorpal> elliott, CRC is generally done with table lookup indeed
18:07:36 <Sgeo> "And do they respond to obvious pandering?"
18:07:39 <elliott> (n & 65280) >> 8
18:07:45 <elliott> which is probably just as slow, right? :P
18:07:49 <Vorpal> elliott, wait, isn't base256() above the same as just copying the number into those bytes?
18:07:57 <pikhq> Vorpal: Implementation-defined for unsigned ints, IIRC.
18:07:58 <elliott> Vorpal: Yes. But, defined endianness!
18:08:08 <Vorpal> elliott, oh right, you want this portable?
18:08:16 <elliott> Vorpal: Well, no, I just want to be sure it works :)
18:08:26 <elliott> Vorpal: And I can't imagine any *faster* way to do that, so, yeah.
18:08:31 * elliott changes *buf++ to buf[0], buf[1] etc.
18:08:36 <olsner> if buf is a byte-size type I think the anding is completely superfluous, you can just shift and store
18:08:47 <elliott> olsner: oh, of course
18:08:48 <elliott> thanks!
18:08:51 <Vorpal> elliott, #ifdef BIG_ENDIAN ... #elif defined(LITTLE_ENDIAN) ... #else #error "Screw you" #endif
18:09:19 <elliott> >> x == / 2^x
18:09:23 <zzo38> Perhaps write a better error message, though.
18:09:28 <olsner> or you can byte-swap and store as words, which could be slightly more efficient
18:09:29 <elliott> so >>8>>8 == (/ 2^8) / 2^8
18:09:47 <elliott> so I want >>16
18:09:49 <elliott> oh, it's just doubling
18:10:24 <Vorpal> olsner, or you could do some ifdef for endianness then use an union
18:10:24 <elliott> Vorpal: is there a gcc flag to INLINE EVERYTHING
18:10:44 <olsner> I think there's an __attribute__(forceinline)
18:10:46 <elliott> Vorpal: is there a standard way to detect endianness?
18:10:48 <Vorpal> elliott, there are some __attribute__ s to force a specific function to be inlined if possible
18:10:53 <elliott> i wouldn't expect C to define things that much! :)
18:11:07 <elliott> Vorpal: I want to force even the functions that aren't mine... well, ok, really I just want the crc ones to be inline
18:11:08 <Vorpal> elliott, "if possible" here basically means "I will ignore it if you try to force inlining a recursive function"
18:11:12 <elliott> And they're generated code so I'm scared to touch them :)
18:11:22 <elliott> Even if they're perfectly readable.
18:11:49 <elliott> Vorpal: I'm using a goto to keep my nesting down, am I a bad person?
18:11:54 <Vorpal> <elliott> Vorpal: is there a standard way to detect endianness? <-- autoconf! *ducks*
18:11:56 <zzo38> elliott: There is attributes and stuff, and flags to set how mucn inlining it should do, but to inline everything you can use chunks in Enhanced CWEB perhaps, or use include files and macros, or etc.
18:12:04 <zzo38> Using goto is not always bad
18:12:23 <elliott> Even when it's totally unneeded? :-)
18:12:36 <zzo38> Sometimes
18:12:54 * elliott just puts the celebration in another function
18:14:30 <elliott> Vorpal: but, not autoconf :P
18:14:33 <elliott> ehh
18:14:39 <elliott> fuck people not on little-endian right?
18:15:11 <elliott> union {
18:15:11 <elliott> uint32_t i;
18:15:11 <elliott> char s[4];
18:15:11 <elliott> } x;
18:15:14 <elliott> Fuck yeah, am I right?
18:15:15 <Vorpal> elliott, why not let the user do cc -DBIG_ENDIAN=1 if they want that
18:15:16 <Vorpal> or such
18:15:18 <elliott> no
18:15:21 <elliott> it'll be SLOW!
18:15:25 <Vorpal> elliott, what
18:16:08 <elliott> Vorpal: can't use UNION MAGIC!
18:17:09 <Vorpal> elliott, why not use a byteswapping function for them then? There are generally fast asm ones
18:17:11 <elliott> No manual entry for gcc
18:17:12 <elliott> *blink*
18:17:22 <elliott> Vorpal: But I don't care about portability :P
18:17:27 <elliott> And if I did I wouldn't use assembly.
18:17:51 <elliott> srsly why don't i have manpages
18:18:26 <elliott> i A manpages-dev - Manual pages about using GNU/Linux for dev
18:18:31 <elliott> ????
18:18:54 <Vorpal> <elliott> fuck people not on little-endian right? <elliott> Vorpal: But I don't care about portability :P
18:18:55 <Vorpal> elliott, :P
18:19:02 <elliott> Vorpal: Indeed.
18:19:20 <Vorpal> elliott, so why not just asm all the way
18:19:24 <elliott> Aha, I needed gcc-doc.
18:19:30 <Vorpal> elliott, gcc-doc for what
18:19:34 <elliott> Vorpal: I'm not very good at assembly. Hey, I wrote a bootsector yesterday, isn't that good enough?
18:19:35 <elliott> For gcc(1).
18:19:38 <Vorpal> ah
18:20:01 <elliott> -finline-functions
18:20:02 <elliott> OH YEAH.
18:21:04 <elliott> Vorpal: Oh, good, I never call libc in my inner loop.
18:21:13 <Vorpal> -finline-functions
18:21:14 <Vorpal> Integrate all simple functions into their callers. The compiler heuristically decides which functions are simple enough to be worth integrating in this way.
18:21:16 <elliott> Well. I do 10 times per program (progress display), and whenever I find a collision.
18:21:17 <elliott> But that's it.
18:21:20 <Vorpal> Enabled at level -O3.
18:21:23 <elliott> Vorpal: Oh.
18:21:30 <elliott> What about -finline-functions-called-once? :)
18:21:40 <Vorpal> elliott, you want to make them static then
18:21:44 <Vorpal> otherwise it can't know
18:21:53 <elliott> I'm sure it can figure things out anyway.
18:21:55 <Vorpal> Consider all "static" functions called once for inlining into their caller even if they are not marked "inline". If a call to a given function is integrated,
18:21:55 <Vorpal> then the function is not output as assembler code in its own right.
18:21:57 * elliott looks at the resulting assembly
18:23:04 <Vorpal> elliott, inlining can be a pessimisation if the code path of that function can be skipped with an if and the other branch is taken most often
18:23:06 <elliott> call crc_update
18:23:09 <elliott> I DO NOT CALL THAT INLINING
18:23:10 <Vorpal> you need profile feedback here
18:23:15 <elliott> Do I need -fwhole-program to handle multiple C files or whatever?
18:23:33 <Vorpal> elliott, -combine -fwhole-program <list all the c files here>
18:24:22 <elliott> call crc_update
18:24:24 <zzo38> Use Enhanced CWEB, and use chunks and then they will be surely inlined. Another way is C preprocessor macros for some things.
18:24:24 <elliott> Well that isn't helping.
18:24:36 <Vorpal> elliott, -O3 ?
18:24:52 <elliott> Vorpal: Yes.
18:24:57 <elliott> $ gcc -Wall -S -O3 -combine -fwhole-program crc.c self.c
18:25:20 <elliott> Oh, wait.
18:25:22 <elliott> Vorpal: I need -o foo.s.
18:25:23 <elliott> Heh.
18:25:41 <Vorpal> elliott, what?
18:25:46 <zzo38> Now maybe it will work?
18:25:48 <elliott> Vorpal: I need -o foo.s or it doesn't combine.
18:25:59 <Vorpal> elliott, shouldn't it combine in a.out
18:26:04 <elliott> Vorpal: I used -S.
18:26:06 * elliott sighs
18:26:09 <Vorpal> elliott, ah
18:26:19 <Vorpal> well yes obviously
18:26:23 <elliott> if (x.i % (UINT32_MAX / 10)) fputc('.', stderr);
18:26:25 <elliott> note to self: don't do this
18:26:38 * elliott is stupid. ever so slightl
18:26:40 <elliott> *slightly
18:26:50 <Vorpal> elliott, fputc_unlocked
18:26:55 <elliott> Vorpal: wat
18:27:11 <elliott> Vorpal: also, i meant more the fact that it spews .s everywhere when you run it, rather than ten times per program :)
18:27:15 <Vorpal> elliott, bypasses thread safety locks in libc :P
18:27:18 <elliott> oh joy
18:27:20 <elliott> no.
18:27:23 <elliott> :p
18:27:35 <elliott> wait.
18:27:39 <elliott> why *doesn't* that work?
18:27:39 <Vorpal> elliott, well since you were going ridiculous anyway...
18:29:31 <Vorpal> elliott, why doesn't what work?
18:29:36 <elliott> if (x.i % (UINT32_MAX / 10)) fputc('.', stderr);
18:29:41 -!- sebbu2 has changed nick to sebbu.
18:29:46 <Vorpal> elliott, what do you think it should do?
18:29:59 <elliott> print . ten times per program (the loop goes up to UINT32_MAX)
18:30:03 * elliott 's brain is malfunctioning, it seems
18:30:17 <Vorpal> you want a ! there I think
18:30:32 <Vorpal> elliott, you now *skip* it 10 times
18:30:37 <Vorpal> 0 == false
18:30:39 <elliott> hahaha
18:30:44 <elliott> of course
18:30:49 <elliott> thanks :)
18:31:16 <elliott> Vorpal: how fast do you think this will go then?!
18:31:17 <elliott> :D
18:31:25 <elliott> wow
18:31:25 <Vorpal> elliott, I have no idea
18:31:27 <elliott> another dot already
18:31:29 <elliott> this is quick
18:31:35 <Vorpal> elliott, a few minutes maybe?
18:31:40 <elliott> indeed
18:31:56 <Vorpal> elliott, I mean, it is not memory bound, it is CPU bound
18:31:57 <elliott> Vorpal: this is embarrassingly parallel it should be a dual-core program but i'm way too lazy for that :)
18:32:04 <Vorpal> everything could be in cache
18:32:06 <elliott> wtf @ xfce task manager calling it "sflf"
18:32:11 <elliott> the program is called self
18:32:15 <elliott> why would you think it's called sflf.
18:32:16 <Vorpal> elliott, XD
18:32:22 <Vorpal> elliott, what does ps aux say?
18:32:31 <elliott> elliott 12555 99.2 0.0 3716 376 pts/0 R+ 18:30 1:16 ./self
18:32:31 <elliott> elliott 12556 0.0 0.0 5364 632 pts/0 S+ 18:30 0:00 tee self_result
18:32:32 <fizzie> You must've incremented the e. :p
18:32:35 <elliott> (it's actually self_results)
18:32:55 <elliott> hmm no collisions so far, this strategy isn't looking good
18:33:11 <elliott> other things i'll try: reverse endianness? or perhaps a hex or whatever representation of the checksum?
18:33:17 <Vorpal> elliott, maybe there are no collisions that short?
18:33:31 <elliott> Vorpal: that "short"? I'm not looking for collisions per se
18:33:40 <Vorpal> elliott, you are looking for self-collision iirc?
18:33:42 <elliott> Vorpal: I'm looking for crc32(x) being the base 256 interpretation of x
18:33:50 <elliott> so, yes, hash(x) = x more or less
18:33:59 <elliott> Vorpal: crc-32 i.e. 4 bytes by definition
18:34:04 <elliott> i.e. there are no "larger" self-collisions
18:34:09 <Vorpal> elliott, indeed. I never disputed that
18:34:22 <elliott> then what you meant to say is maybe there's no collisions
18:34:29 <Vorpal> but perhaps there are no such self-collisions
18:35:05 <elliott> elliott@dinky:~/code/crcllision$ ./self | tee self_results
18:35:06 <elliott> ...................
18:35:08 <elliott> Vorpal: yes, that would be sad.
18:35:12 <Vorpal> elliott, I mean, it is trivial to construct a hash where there are none: h(x) = x + 1 % 256 for example has no self collisions
18:35:19 <Vorpal> err
18:35:24 <Vorpal> operator precedence fail
18:35:32 <Vorpal> h(x) = (x + 1) % 256
18:35:36 <Vorpal> obviously
18:37:33 <Vorpal> elliott, hm those dots, more than ten eh?
18:38:02 <elliott> ...................................
18:38:03 <elliott> SEEMINGLY
18:38:07 <elliott> if (!(x.i % (UINT32_MAX / 10))) fputc('.', stderr);
18:38:23 <Vorpal> elliott, attach gdb and check what x.i is?
18:38:30 <Vorpal> elliott, maybe you made an infinite loop
18:38:36 <elliott> for (x.i = 0; x.i <= UINT32_MAX; x.i++) {
18:38:40 <elliott> oh
18:38:42 <Vorpal> yes
18:38:43 <elliott> so i have
18:38:44 <Vorpal> you did
18:38:53 <elliott> Vorpal: well, at least i know there's no collisions :)
18:38:59 <Vorpal> elliott, -Wall -Wextra would probably warn you about it
18:39:04 <elliott> for (x.i = 0; x.i <= UINT32_MAX; x.i < UINT32_MAX && x.i++) {
18:39:06 <elliott> behold my engineering skills
18:39:09 <Vorpal> "always true" or something
18:39:29 <Vorpal> elliott, that loop is infinite too? except it will just stall at the end?
18:39:44 <elliott> for (x.i = 0; x.i <= UINT32_MAX; x.i < UINT32_MAX && break || x.i++) {
18:39:46 <elliott> (note: joking)
18:40:04 <Vorpal> elliott, out of interest: would that even compile?
18:40:09 <elliott> no :P
18:40:10 <elliott> wait, doesn't x.i start as 0 anyway?
18:40:14 <elliott> i can just make it a while
18:40:35 <Vorpal> elliott, unroll the first iteration
18:40:37 <Vorpal> and then do:
18:40:42 <Vorpal> while (x.i != 0)
18:40:43 <elliott> no :P
18:40:44 <Vorpal> or such
18:40:45 <Vorpal> wait
18:40:47 <Vorpal> a do while loop
18:40:49 <Vorpal> would work
18:40:52 <elliott> oh yeah
18:40:53 <elliott> thanks
18:41:12 <Vorpal> elliott, I'm a genius. Just admit it.
18:41:17 <elliott> clearly.
18:41:46 <elliott> Vorpal: I like how it DOESN'T EVEN WARN ME about that union awfulness.
18:41:57 <Vorpal> elliott, why would it?
18:42:06 <Vorpal> elliott, you mean that the C specs say you can't do that?
18:42:14 <Vorpal> well, gcc accepts that, it is even documented
18:42:23 <Vorpal> since it is so common it is well supported
18:42:27 <elliott> but still...
18:42:29 <elliott> it's awful :)
18:42:46 <Vorpal> elliott, anyway, reversing endianness wouldn't help I think. Since you test all possible bit patterns
18:43:03 <Vorpal> no collisions one way, no collisions the other way
18:43:21 <elliott> Vorpal: no, because
18:43:26 <elliott> i always *check* the result of the hash
18:43:35 <Vorpal> any change of endianness would just change *where* the collision shows up
18:43:37 <elliott> i never check it when the string that's fed is big-endian
18:43:38 <elliott> but the uh
18:43:43 <elliott> hmm maybe
18:43:50 <Vorpal> elliott, or, maybe not
18:43:51 <Vorpal> hm
18:44:09 <Vorpal> elliott, do you check the hash against the uint?
18:44:15 <elliott> Vorpal: yes
18:44:20 <elliott> if (crc32(x.s, 4) == x.i)
18:44:23 <Vorpal> ah then perhaps it could affect stuff
18:44:34 <elliott> i never check abcd with the integer dcba
18:44:38 <elliott> imagine a is a byte or whatever
18:44:40 <elliott> you get the idea
18:45:12 <Vorpal> elliott, use arpa/inet.h and htonl(), with glibc that will give you an optimised asm swap
18:45:27 <elliott> Vorpal: ...lol
18:45:28 <Vorpal> like:
18:45:37 <Vorpal> if (htonl(crc32(x.s, 4)) == x.i)
18:45:39 <Vorpal> or whatever
18:51:29 <elliott> Vorpal: also *OPTOMISED
18:52:03 <Vorpal> elliott, trademark infringement
18:52:15 <elliott> no! trademark UTILISATION
18:52:27 <elliott> he tells people who write terse OPTOMISED programs to use that terminology and the logo
18:52:32 <elliott> well, we just use our very special dialect of terse
18:52:33 <elliott> called C
18:52:36 <elliott> OPTOMISED
18:54:07 <fizzie> Called "Ter-C".
18:54:19 <elliott> precisely!
18:54:23 <elliott> it's identical to C.
18:55:29 <catseye> "you keep using that trademark. i do not think you know what it means"
18:55:48 <elliott> catseye: *i do not think it means what you think it means, no?
18:55:56 <catseye> right, right
18:56:04 <catseye> been a while since i last saw the movie :)
18:56:42 <elliott> watching it is on my infinitely long todo list
18:56:46 <elliott> but, well, internet meme osmosis
18:56:49 <elliott> i probably know half the lines because of that :p
18:56:56 <Vorpal> elliott, which movie?
18:57:03 <elliott> Vorpal: The Princess Bride
18:57:19 <elliott> source of, like, half of every internet meme ever :P
18:57:21 <elliott> (note: hyperbole!)
18:57:28 <Vorpal> elliott, the other half being Sparta?
18:57:34 <elliott> *300
18:57:42 <Vorpal> ah yes that was the name of that movie
18:57:43 <elliott> 300 is the source of exactly two, as far as I know.
18:57:55 <elliott> (madness!/SPAAARTA and "tonight we dine in hell")
18:58:07 <elliott> Sorry, *Tonight. We dine. IN HEEEEELLLL
18:58:12 <Vorpal> hm
18:58:42 <catseye> Vorpal: I am writing a bash script!
18:58:52 <catseye> I have decided I like pain.
18:59:00 <elliott> catseye: your MOM is a bash script
18:59:01 <Vorpal> catseye, okay, are you using bashdoc (it's like doxygen for bash)
18:59:06 <elliott> (oh snap)
18:59:06 <Vorpal> (yes it actually exists)
18:59:35 <elliott> using doxygen should be punishable by death
18:59:41 <elliott> or stabbing with rusty spoons
18:59:45 <elliott> either is acceptable
18:59:47 <elliott> *repeated stabbing
19:00:08 <elliott> http://www.sourcemage.org/bashdoc SOURCEMAGE ENGINEERING FUCK YEAH
19:00:16 <elliott> Vorpal: oh wow
19:00:17 <elliott> "I'm writing a bashdoc in C++ because I don't know bash."
19:00:19 <elliott> i...
19:00:22 <elliott> will cherish this quote forever
19:00:24 <Vorpal> elliott, what? where?
19:00:26 <catseye> Vorpal: No, I am using English sentences after #'s.
19:00:32 <Vorpal> elliott, the bashdoc I saw for bash was written in bash
19:00:32 <elliott> Vorpal: the bottom of http://www.sourcemage.org/bashdoc
19:00:37 <elliott> irrelevant
19:00:38 <elliott> "I'm writing a bashdoc in C++ because I don't know bash."
19:00:41 <elliott> just... let that sink in
19:00:43 <elliott> absorb it
19:00:46 <elliott> you will become the WTF
19:00:55 <Vorpal> elliott, yes I'm aware of it being a wtf
19:01:00 <Vorpal> I mean, the parser eh...
19:01:02 <elliott> no but there are many layers of wtf
19:01:05 <elliott> you just have to... meditate on it
19:01:08 * elliott goes insane
19:01:38 * catseye becomes the wtf
19:01:39 <Vorpal> elliott, must be a troll. It's a wiki
19:01:48 <catseye> Become the WTF you wish to see in the world.
19:02:07 <elliott> Vorpal: nope, just an idiot
19:02:10 <elliott> i have seen many like them
19:02:12 <elliott> not trollish, that line, no
19:02:18 <elliott> just... yes, i can picture who would do that
19:02:26 <elliott> anyway, brb booting netbsd! THIS WILL GO SPLENDIDLY I HATE YOU CATSEYE
19:02:34 -!- elliott has quit (Remote host closed the connection).
19:03:50 <catseye> # There is probably a better way to do this, in a real language.
19:04:10 <catseye> Well, or if there were disklabel bindings for bash
19:04:42 <Vorpal> catseye, disklabel?
19:05:11 <catseye> Vorpal: bsd command to edit BSD partitions on a disk.
19:05:12 <Vorpal> catseye, I'm quite good at bash, in case you wonder about something
19:05:20 <Vorpal> catseye, ah. right
19:05:24 <catseye> Vorpal: thanks, i will keep it in mind
19:05:48 <Vorpal> catseye, you tend to learn it when you write an irc bot in it after all
19:06:03 <catseye> Vorpal: I am using this pattern: DO='echo'
19:06:04 <Sgeo> Jon Stewart's apologizing for singing
19:06:13 <catseye> then $DO disklabel etc
19:06:27 <catseye> when it all seems to work out i'll replace it with DO='sudo'
19:06:35 <Vorpal> ah useful indeed
19:06:37 -!- elliott has joined.
19:08:32 <Vorpal> elliott, worked?
19:09:20 <elliott> Vorpal: no
19:09:35 <elliott> Vorpal: catseye's usb-fu is not yet refined enough
19:09:44 -!- elliott has set topic: 9 days since last oerjan sighting | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
19:10:08 -!- Vorpal has set topic: 9 days since last oerjan sighting | http://tunes.org/~nef/logs/esoteric/?C=M;O=D | May contain nuts..
19:12:10 <elliott> this place definitely contains nuts
19:12:12 <elliott> and cases for them, too
19:13:04 <Vorpal> elliott, indeed.
19:15:38 <catseye> and cases for the baskets
19:17:03 <Sgeo> How TF did the word "parse" be created?
19:17:13 <elliott> Sgeo: how TF did the word "fuck" be created?
19:17:27 <Sgeo> But "parse" seems like it has to be very new
19:17:31 <elliott> The term parsing comes from Latin pars (ōrātiōnis), meaning part (of speech).
19:17:33 <elliott> no.
19:17:42 <elliott> In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens (for example, words), to determine its grammatical structure with respect to a given (more or less) formal grammar. Parsing can also be used as a linguistic term, especially in reference to how phrases are divided up in garden path sentences.
19:17:42 <elliott> Parsing is also an earlier term for the diagramming of sentences of natural languages, and is still used for the diagramming of inflected languages, such as the Romance languages or Latin. The term parsing comes from Latin pars (ōrātiōnis), meaning part (of speech).[1][2]
19:18:26 <Sgeo> How long has linguistics been around for? That people had an interest in it?
19:19:09 <elliott> Sgeo: you realise that people adopt latin and greek terms to english all the time?
19:19:44 <elliott> "From Middle English pars, from Old French pars (plural of part), from Latin part."
19:19:50 <elliott> i.e. making-into-parts
19:19:57 <elliott> used as making-into-parts (of speech)
19:21:25 <catseye> parse-tition
19:21:47 -!- cheater99 has quit (Ping timeout: 245 seconds).
19:22:42 <catseye> elliott: so why are you coding base256? if that is what you were OPTOMIZING before
19:22:52 <elliott> catseye: to find crc self-collisions
19:22:56 <catseye> ah
19:23:07 <elliott> based on that self-zip post, where he just brute-forced crc to find a zip file that, when you fill in that checksum, hashes to that checksum
19:26:11 <pikhq> Sgeo: Well, before the late 20th century, it was more usually called "philology"... (the change in term came along with an increase in rigor)
19:26:21 <pikhq> Sgeo: And had been practiced for quite a while.
19:35:57 -!- Sasha has joined.
19:36:24 -!- cheater99 has joined.
19:36:40 -!- Sasha has quit (Client Quit).
19:37:03 -!- Chachi has quit (Ping timeout: 264 seconds).
19:56:48 <pikhq> God I hate US patent law.
19:56:54 <pikhq> Fun fact: 20% of the human genome is patented.
19:57:09 <pikhq> Making it illegal to for cells to mitose.
19:57:19 <elliott> yeah :)
19:57:31 <elliott> pikhq: erm only humans can break the law i think :P
19:57:40 <elliott> causing cells to mitose, sure
19:57:45 <Sgeo> Isn't there some ruling against that?
19:57:50 <pikhq> elliott: Humans do so by living.
19:57:57 <pikhq> elliott: Or reproducing.
19:58:10 <pikhq> elliott: Or caring for some life form.
19:58:12 <pikhq> Sgeo: No.
20:09:28 -!- Phantom_Hoover has joined.
20:10:39 <Phantom_Hoover> elliott, more TV Tropes related news!
20:10:57 <Phantom_Hoover> Their AdSense support has been withdrawn!
20:11:29 <elliott> Phantom_Hoover: why? :D
20:13:00 <Phantom_Hoover> For having "adult and mature content" on AdSensed pages.
20:13:26 <elliott> Phantom_Hoover: Adult and mature... text?
20:13:36 <elliott> Phantom_Hoover: I guess Fetish Fuel is EVEN WORSE as a Troper Tales!
20:14:22 <Phantom_Hoover> elliott, links to adult sites? Pages more explicit than the Fetish Fuel ones?
20:14:26 <elliott> Phantom_Hoover: You know, I've always felt that TV Tropes has suffered an imbalance due to "Anime & Manga" coming first in the alphabetical list.
20:14:35 <elliott> If it was "Manga & Anime" it'd probably be less weeaboo.
20:15:14 <Phantom_Hoover> I think it might also be due to manga and anime producing a *massive* volume of work.
20:15:33 <elliott> Phantom_Hoover: Well, yeah, but...
20:15:42 <elliott> Phantom_Hoover: It's actual *work* to get to non-anime entries after you expand all.
20:15:47 <elliott> And I think that's affected by the audience.
20:15:53 <elliott> Phantom_Hoover: I mean, come *on*: http://images.encyclopediadramatica.com/images/a/a8/Tvtropesanimeimbalance.png
20:15:59 <Phantom_Hoover> Very probably.
20:18:40 <Phantom_Hoover> FWIW, the first page I sampled (Xanatos Roulette) looks fairly balanced.
20:19:31 <elliott> Phantom_Hoover: That's *subjective*!
20:19:53 <Phantom_Hoover> elliott, ah, but I've zoomed out enough to see the relative sizes of sections!
20:20:08 <elliott> Phantom_Hoover: No, I mean, Xanatos Roulette.
20:20:30 <Phantom_Hoover> And no, it isn't. They haven't gone that far.
20:20:46 <elliott> Phantom_Hoover: BUT THEY SHOULD
20:21:16 <Phantom_Hoover> http://tvtropes.org/pmwiki/pmwiki.php/Administrivia/TheSituation
20:21:52 <elliott> [[Turn off anonymous editing in the wiki. This is so that we can tell Google, "See, we do have standards, and we can identify and take action against people who violate them." This has already been implemented.]]
20:21:53 <elliott> HAHAHA
20:22:26 <Phantom_Hoover> O.o
20:22:31 <elliott> "A Donation Button is already set up if you'd like to throw some money at us directly."
20:22:33 <elliott> For... ruining the site?
20:22:35 <elliott> No thanks.
20:22:39 <elliott> "This may eventually include TV Tropes merchandise"
20:22:43 <elliott> I hate you and want you to die.
20:23:06 <elliott> "How dire is the situation, really? Is Tv Tropes going to have to shut down or cut way back?"
20:23:07 <Phantom_Hoover> Ah, they disabled anonymous editing: it's RUINED FOREVER.
20:23:13 <elliott> Cut way back on all those needless expenses of RUNNING A PHP SCRIPT
20:23:25 <elliott> Phantom_Hoover: Well, they won't see any more of my little fixes. :)
20:23:45 <Phantom_Hoover> elliott, ah, right, because we all know servers cost nothing to run.
20:23:45 <elliott> "While it's a running gag that TV Tropes Will Ruin Your Life, for many people it's equally true that TV Tropes Will Enhance Your Life."
20:23:52 <elliott> It's a fucking website.
20:24:00 <elliott> Phantom_Hoover: No they don't. But they don't cost *significant* amounts if you're smart.
20:24:14 <elliott> That PHP script is probably really inefficient. The webserver too.
20:24:19 -!- ais523 has joined.
20:24:32 <elliott> Cost of paying someone to optimise the fuck out of everyone <<< cost of running an inefficient website indefinitely.
20:24:58 <ais523> elliott: I imagine it depends on /how/ inefficient
20:25:07 <zzo38> C programs do run more efficiently than PHP programs.
20:25:09 <elliott> ais523: We're talking about TV Tropes, who have recently gone certifiably insane.
20:25:13 <ais523> if you're running at the wrong computational order, definitely if you're at all large
20:25:25 <ais523> if you just have the wrong constant factor, maybe not
20:25:39 <elliott> ais523: Firstly, they started categorising tons of tropes as "subjective". This includes really universal ones, despite the fact that *every opinion on media is subjective*.
20:25:56 <elliott> ais523: This also meant you weren't allowed to add to some pages or something, I forget exactly.
20:26:13 <Phantom_Hoover> elliott, well, they are trying to cut down on the "This Troper" crap.
20:26:15 <elliott> ais523: Then they started moving pages -- well, at least one -- to Troper Tales, for no apparent reason other than maybe they don't like the main namespace.
20:26:32 <ais523> well, some tropes are definitely objective
20:26:37 <elliott> ais523: And as Phantom_Hoover just pointed out, they stopped people adding "This Troper" and the like to the pages which was *nice* and conversational and not at all wrong, even the original goddamn wiki did it.
20:26:57 <elliott> ais523: Then Google dropped their ads and they've disabled anonymous editing and all sorts of crap and are whining about server costs.
20:27:13 <Phantom_Hoover> elliott, c2 is fun to read, but useless for getting actual information.
20:27:26 <elliott> Oh yeah, TV Tropes is a SERIOUS INFORMATIONAL DATABASE
20:27:40 <elliott> Not at all something to read to brighten your day and maybe even learn something.
20:27:43 <elliott> Definitely not.
20:27:48 <elliott> It's practically an SQL table.
20:28:01 <ais523> wait, why did Google drop their ads?
20:28:06 <elliott> ais523: "adult content"
20:28:18 <elliott> ais523: presumably there was a link to some nsfw site on one of the pages or something
20:28:22 <ais523> hmm
20:28:34 <ais523> I would have thought Google were willing to advertise on such sites anyway
20:28:40 <elliott> apparently not
20:28:40 <Phantom_Hoover> elliott, TV Tropes does actually have pretty NSFW pages in the main site.
20:28:44 <elliott> don't be evil OR unwholesome!
20:28:52 <elliott> Phantom_Hoover: text can't be nsfw, and i haven't seen any nsfw images
20:29:16 <Phantom_Hoover> elliott, "text can't be NSFW"... um, yes it can. Just not as blatantly.
20:29:18 <pikhq> How odd, considering Google actually has adsense ads for NSFW sites.
20:29:19 <elliott> ais523: anyway, I have no sympathy for them because they're making repeated stupid, bureaucratic, Wikipedia-esque "NPOV"-y decisions, disabling anonymous editing and then complaining about money.
20:29:27 <elliott> Phantom_Hoover: No, it really can't.
20:29:35 <elliott> NSFW is "If someone passed by you, they'd go '...'."
20:29:44 <elliott> pikhq: They haven't been audited by a human yet, apparently.
20:29:59 <pikhq> elliott: Motherfucker.
20:30:02 <Phantom_Hoover> And anyway, it said "adult and mature content" in the first place, so drop the strawman.
20:30:09 <pikhq> That's retarded.
20:30:12 <pikhq> Positively retarded.
20:30:19 <ais523> elliott: people actually say ...?
20:30:24 <ais523> I thought they only did that in computer games
20:30:28 <elliott> ais523: oh, shush :)
20:30:33 * ais523 wonders how it's pronounced
20:30:41 <elliott> ais523: it's pronounced [blank stare]
20:31:10 <pikhq> ais523: It's the awkward silence phoneme.
20:31:37 <ais523> hmm, in one of those RPGs that gives you a menu of what to say
20:31:45 <ais523> there should really be one that offers you a choice between ..., ???, and !!!
20:31:59 <Phantom_Hoover> elliott, for what it's worth, I've never really read TV Tropes for the discussions on the pages in the first place.
20:32:18 <elliott> You're one person.
20:32:35 <zzo38> ais523: I was making a game "Super ASCII MZX Town Part II", maybe in one menu somewhere in the game I can make that choice
20:32:35 <elliott> ais523: Sounds like the kind of thing Monkey Island would do.
20:32:56 <Phantom_Hoover> elliott, so are you.
20:33:17 <elliott> ais523: Some choice dialogue decisions from those: - Getting to choose how, exactly, to fumble your words and be unable to speak - Having the option of saying a variety of less-than-polite things that all end up saying the polite alternative
20:33:18 <Phantom_Hoover> I'll admit that the subjective stuff is going too far, though.
20:33:26 <elliott> Phantom_Hoover: There are more than a few who like discussions on pages...
20:33:58 <zzo38> If needed, they could put discussions on a separate page, so you have the Article page and the Talk page, separate, which is how MediaWiki is designed to do.
20:34:40 <catseye> < zzo38> C programs do run more efficiently than PHP programs.
20:34:46 <catseye> but how many ISPs charge by the cycle?
20:35:05 <ais523> catseye: "ISP"? how would they even know how many cycles you'd taken?
20:35:15 <ais523> and how many were relevant to their business?
20:35:16 <catseye> hosting outfit, then
20:35:24 <elliott> catseye: I was referring more to optimising CPU usage and RAM, but mainly compressing the hell out of the page source (inline the CSS, NO SPACES ZOMG, gzip to hell, etc.)
20:35:29 <catseye> hosting is an internet service!
20:35:30 <elliott> Also: CACHE EVERYYTHIIIIIIING
20:35:31 <Phantom_Hoover> elliott, also, your "ruined FOREVER" attitude to these changes is really irritating.
20:35:47 <ais523> I suppose if you discovered that someone's BGP settings were sufficiently complex they were Turing-complete, you could run programs on the backbone routers
20:36:01 <elliott> Phantom_Hoover: They have made an awful lot of terrible decisions in a short space of time. I don't feel terribly inclined to contribute there any more especially as I am no longer allowed tow ithout signing up for an account.
20:36:01 <ais523> which would be awesome, but is a) unlikely to happen, and b) if it did happen, it would be unlikely anyone noticed
20:36:13 <elliott> Just because you can brand something as calling something "ruined FOREVER" doesn't mean it isn't actually.
20:36:14 <zzo38> OK, hosting outfit. I don't know if any do charge by the cycle, but regardless of what is charged, C programs are still generally run more efficiently (unless you are a bad programmer).
20:36:28 <Phantom_Hoover> elliott, i.e. filling two text fields and pressing a button.
20:36:30 <Phantom_Hoover> TAXING.
20:36:52 <elliott> Why did I never think of this obvious truth before?!
20:37:12 <Sgeo> Is the efficiency difference resulting in actually observable performance gains?
20:37:16 <Phantom_Hoover> Well, I can't see why you view it as evil.
20:37:17 * Sgeo syntax weirds
20:37:42 <Phantom_Hoover> You seem to have forgotten that they need to police their content to get any money for the upkeep.
20:37:46 <ais523> elliott: that sounds like the "just because I'm paranoid doesn't mean they're out to get me" argument, which is both entirely correct, and not particularly useful except as a reminder
20:37:47 <Phantom_Hoover> Oh, wait, I forgot.
20:38:04 <elliott> Phantom_Hoover: http://wakaba.c3.cx/shii/ is a good summary of why anonymity is a Good Thing. Anonymity enables drive-by edits without significant investment in the wiki, it is far more convenient, and there are many contributors who only want to fix one or two things, and who will now *not*.
20:38:08 <zzo38> The difference is observable. I have written a complicated C program that does many things, and it still runs much faster than a PHP program which simply copies part of a file.
20:38:11 <elliott> It also enables the forming of cliques as seen in many, many places.
20:38:18 <Phantom_Hoover> They need money because they're IDIOTS who aren't as SMART as YOU, and as such they deserve everything they get.
20:38:18 <elliott> Anyway, you're just mocking me in lieu of rational argument, so forget it.
20:38:30 <elliott> You sure take this personally. Bye.
20:38:44 <elliott> ais523: "it sounds like X, X has property Y, therefore it has property Y" :)
20:39:07 <elliott> ais523: Consider: "They removed the website and replaced it with a 404 page." "Yeah yeah you're just saying 'zomg ruined FOREVER'." "Yes. Yes I am."
20:40:22 <Phantom_Hoover> elliott, "ruined FOREVER" refers more to viewing ultimately fairly minor changes as if they have personally jumped up and down on your dog's face.
20:40:42 <elliott> Turns out Hoover isn't the same word as Hover.
20:40:53 <Phantom_Hoover> Zuh?
20:41:24 <pikhq> Bweheheh. You can get Debian on a BDROM.
20:41:32 <elliott> pikhq: wut
20:41:35 <ais523> elliott: what if they replaced it with a "temporarily unavailable" page, would it be ruined forever then?
20:41:37 <pikhq> elliott: 2 disks.
20:41:41 <elliott> ais523: no :P
20:41:42 <elliott> pikhq: heh
20:41:44 <ais523> pikhq: I misread that as "BROOM", and thought it was entirely plausible
20:41:45 <elliott> pikhq: wait what?
20:41:47 -!- tombom has joined.
20:41:52 <elliott> pikhq: debian is only 16 gigs of x86 sources
20:41:57 <elliott> *no x86
20:42:01 <elliott> is it all architectures binaries or something?
20:42:08 <pikhq> No, single arch.
20:42:13 <Phantom_Hoover> Does it have the entire APT archive on it?
20:42:15 <elliott> pikhq: ??? x86 binaries are only 18 gigs
20:43:04 <Phantom_Hoover> No, Ubuntu's is on the order of 400GB.
20:43:50 <pikhq> elliott: Pretty sure it's larger than that...
20:44:02 <ais523> 400GB is in range for a single hard drive atm, I think
20:44:06 <elliott> pikhq: nope
20:44:14 <pikhq> elliott: Citation?
20:44:19 <elliott> pikhq: http://lists.canonical.org/pipermail/kragen-tol/2010-October/000928.html
20:44:27 <elliott> | Current Debian stable source (5.0.6) | 16.8GB | lots of free software |
20:44:27 <elliott> | Debian i386 binaries | 18.5GB | same, but compiled |
20:44:27 <elliott> |--------------------------------------+--------+-----------------------|
20:44:37 <elliott> kragen is a pretty long-term debian user, so
20:44:51 <pikhq> elliott: It may also include the source debs.
20:45:03 <elliott> pikhq: 18.5 + 16.8 = 35.3
20:45:13 <elliott> pikhq: that would fit on a single dual-layer blu-ray
20:45:19 <elliott> i guess two single-layers may be cheaper, but that seems unlikely to me
20:45:32 <pikhq> Blu-ray burner.
20:45:42 <pikhq> Single layers are much cheaper in that use case.
20:45:43 <ais523> hmm, binaries larger than source? that's rare
20:45:51 <ais523> normally the binaries are a little smaller
20:45:55 <ais523> although, probably the source compresses better
20:46:03 <elliott> ais523: i'm not sure that's compiled
20:46:07 <elliott> *compressed
20:46:17 <elliott> are .debs compressed? i forget whether it's a .tar or a .tar.gz inside
20:49:23 <pikhq> They are compressed.
20:49:31 <elliott> ok.
20:49:47 <elliott> I still haven't found that maximal set of Debian packages page yet.
20:49:55 <elliott> I'd work it out, but I fear I'd have to use apt's API and *brr*.
20:49:58 <elliott> (Does it HAVE an API?)
20:50:18 <pikhq> It's an ar archive of: a version number, a metadata .tar.gz, and a data tar, tar.gz, tar.bz2, tar.lzma, or tar.xz.
20:50:34 <elliott> heh
20:50:49 <elliott> Use `dselect' or `aptitude' for user-friendly package management.
20:50:51 <elliott> -- apt-cache
20:51:32 <pikhq> They still *have* dselect?
20:52:16 <fizzie> Incidentally, is there an aptitude equivalent of "apt-get source <package>"?
20:52:31 <elliott> fizzie: "aptitude source"?
20:52:40 <elliott> Seems not.
20:52:43 <elliott> fizzie: Guess not.
20:53:26 <fizzie> There's nothing wrong with "apt-get source", of course (ha, rhymity), just thought if they're deprececacacating it.
20:53:38 <elliott> fizzie: It's not deprecated, it's just not the official package manager of the Debian project.
20:53:48 <elliott> fizzie: It is, instead, a lower-level tool, like dpkg.
20:54:01 <elliott> But true, I guess they might add that to aptitude and get rid of apt-* sometime in the future.
20:54:08 <elliott> Well, apt-get and apt-cache, anyway.
20:58:35 <zzo38> @ @(normal.c@>=
20:58:40 <zzo38> #undef ABNORMAL
20:58:48 <zzo38> @<Entire program@>@;
20:58:52 <zzo38> @ @(abnormal.c@>=
20:58:55 <zzo38> #define ABNORMAL
20:58:58 <zzo38> @<Entire program@>@;
21:00:03 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
21:00:28 -!- poiuy_qwert has joined.
21:01:50 -!- lifthrasiir has quit (Quit: s/flute.ruree.net/ocarina.ruree.net/g).
21:31:26 <Mathnerd314> math is a natural-language esolang.
21:33:46 <Phantom_Hoover> Mathnerd314, care to elaborate?
21:34:11 <Mathnerd314> it's designed to be difficult to understand
21:34:37 <zzo38> How is it designed to be difficult to understand?
21:35:10 * elliott thinks Mathnerd314 has a pretty shallow understanding of mathematics for his nick...
21:35:36 -!- elliott has quit (Remote host closed the connection).
21:35:39 <Mathnerd314> elliott: obviously. otherwise I would have a more specific nick
21:36:00 -!- catseye has changed nick to cohomology.
21:36:20 -!- cohomology has changed nick to NewtonsMethod.
21:36:27 <NewtonsMethod> this could get ugly
21:37:06 -!- NewtonsMethod has changed nick to octonion.
21:37:13 <octonion> surprised this wasn't taken
21:37:28 -!- octonion has changed nick to Automorphism.
21:37:32 -!- elliott has joined.
21:37:36 -!- Automorphism has changed nick to catseye.
21:38:01 -!- Phantom_Hoover has changed nick to Vertex.
21:38:12 -!- catseye has changed nick to group.
21:38:15 <group> o.O
21:38:16 -!- elliott has changed nick to syrup.
21:38:23 <syrup> Syrupy automorphisms.
21:38:31 <group> syrup: what kind of mathematics are YOU?
21:38:37 <syrup> Gregor: Syrupy.
21:38:38 <syrup> ...
21:38:39 <Mathnerd314> how do you think of all these nicks?
21:38:39 <syrup> group.
21:38:41 <zzo38> What does that mean?
21:38:43 -!- Vertex has changed nick to Modularity_theor.
21:38:53 <Modularity_theor> Mathnerd314, because we are actual math nerds!
21:38:53 -!- syrup has changed nick to arcane-sceptre.
21:38:56 <arcane-sceptre> Mathnerd314: Like this!
21:38:57 <group> Mathnerd314: having... studied... math a bit?
21:39:03 -!- arcane-sceptre has changed nick to CRAXIOM___ofchoi.
21:39:07 -!- CRAXIOM___ofchoi has changed nick to CRAXIOM__ofchoic.
21:39:09 -!- CRAXIOM__ofchoic has changed nick to CRAXIOM_ofchoice.
21:39:12 <CRAXIOM_ofchoice> It's an axiom... on CRACK
21:39:24 -!- Modularity_theor has changed nick to Poincare_Conject.
21:39:33 -!- CRAXIOM_ofchoice has changed nick to FundThrmOfIRC.
21:39:36 <FundThrmOfIRC> is that we're AWESOME.
21:39:39 <Mathnerd314> yeah, I would never hurt my axioms like that
21:40:00 -!- group has changed nick to CatOfSmallCats.
21:40:25 -!- FundThrmOfIRC has changed nick to CnsrvtnOfEnrgy.
21:40:43 <CnsrvtnOfEnrgy> CatOfSmallCats: omg i need to get cats and name them after categories
21:40:48 -!- CatOfSmallCats has changed nick to MaxwellsEqns.
21:40:50 -!- Poincare_Conject has changed nick to fermatslittlethe.
21:40:59 -!- fermatslittlethe has changed nick to Phantom_Hoover.
21:41:06 -!- MaxwellsEqns has changed nick to catseye.
21:41:10 -!- CnsrvtnOfEnrgy has changed nick to frmthadalittle.
21:41:10 <catseye> that was fun
21:41:19 <Mathnerd314> but now it's tiem to _stop_ the madness!
21:41:19 -!- frmthadalittle has changed nick to archaeology.
21:41:21 <archaeology> totally.
21:41:23 <archaeology> madness over
21:41:35 -!- BeholdMyGlory has joined.
21:41:50 <zzo38> A guest teacher told me to prove the twin prime conjecture after the school was finished; I have been thinking about it ever sice.
21:41:53 <zzo38> s/sice/since/
21:42:53 <Mathnerd314> zzo38: really? you have nothing better to do?
21:43:02 <archaeology> zzo38: ...Good luck with that, I think they were joking ;P
21:43:03 <archaeology> *:P
21:43:07 * Phantom_Hoover once wrote the Riemann Hypothesis on a whiteboard for homework.
21:43:10 <archaeology> Mathnerd314: says the person on *IRC*
21:43:26 <Phantom_Hoover> Noöne cared.
21:43:27 <zzo38> Mathnerd314: I have other things to do, too. But I have still been thinking about it. I don't know how to prove it, yet.
21:43:51 <Phantom_Hoover> zzo38, there's NIH and there's proving the TPC single-handedly after a day's work.
21:44:01 <catseye> Phantom_Hoover: well you have *prove* it, that's the thing, *then* they will care
21:44:21 <archaeology> zzo38: You do realise the probability of you proving it is somewhere in the region of zero?
21:44:24 <archaeology> Just like everyone else :P
21:44:27 <zzo38> I have proven other things though, such as Pythagorean theorem (I have done so while resting on the couch).
21:44:32 <Phantom_Hoover> catseye, but they didn't even attempt the assignment!
21:44:37 <zzo38> archaeology: Yes I realize that
21:44:53 <Phantom_Hoover> zzo38, for extra credit, demonstrate that there are only 5 finite regular solids.
21:45:09 <archaeology> Proving Pythagoras' theorem is something like a million billion trillion times easier than proving the twin prime conjecture :P
21:45:27 <zzo38> archaeology: Yes, you are correct about that.
21:45:36 <Phantom_Hoover> Demonstrating that there are only 5 Platonic solids is slightly harder, but not much.
21:45:56 <zzo38> I will try that at some time.
21:47:07 <catseye> then prove plato was an alien (note: requires axioms not found in ZFC)
21:47:49 <zzo38> catseye: I don't think I can do that......
21:48:34 -!- lifthrasiir has joined.
21:48:46 <olsner> "noöne"? wtf?
21:49:22 -!- lifthrasiir has quit (Client Quit).
21:49:26 <archaeology> olsner: valid, but obnoxious.
21:49:32 <archaeology> also archaic
21:49:46 -!- lifthrasiir has joined.
21:50:02 <Phantom_Hoover> archaeology, why the sudden hatred for the diæresis?
21:50:30 <Gregor> You can't put them in nicks :P
21:52:23 * Sgeo tried to play with the twin prime conjecture in high school
21:52:47 <Sgeo> Did stuff like finding out that all primes except the early ones are centered around 6n+-1
21:52:58 <Sgeo> And thus, thought in terms of "rules"
21:53:12 <Sgeo> And dividing centers by 6
21:53:13 <Phantom_Hoover> If Sgeo solves the twin prime conjecture every mathematician in the world will commit suicide out of shame.
21:53:28 <Sgeo> I've stopped thinking about it a long while ago
21:54:22 -!- archaeology has quit (Remote host closed the connection).
21:55:58 <Mathnerd314> how many programs do you know of that use Knuth's line breaking algorithm?
21:57:19 <catseye> i would assume tex contains some form of it
21:57:24 <catseye> other than that, no
21:57:27 <catseye> *none
21:58:19 -!- catseye has changed nick to ChineseRemainder.
21:58:38 * Phantom_Hoover reboots
21:58:41 <Mathnerd314> that has to change... I want computer typography!
21:59:03 <zzo38> Mathnerd314: What has to change?
21:59:26 <Mathnerd314> the lack of usage of good line-breaking algorithms
22:00:11 <zzo38> Do you think the one TeX uses is good algorithm? It seems to work good when hyphenation is turned off.
22:00:16 -!- elliott has joined.
22:00:31 -!- ChineseRemainder has changed nick to catseye.
22:00:32 <zzo38> (It sometimes works badly when hyphenation is turned on, though)
22:01:16 <Mathnerd314> well, it's definitely better than the seemingly-standard greedy algorithm
22:01:53 <zzo38> You can adjust it by changing the parameters
22:03:02 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
22:04:43 -!- Phantom_Hoover_ has joined.
22:04:55 <Phantom_Hoover_> Mathnerd314, so wait, you aren't actually a maths nerd?
22:05:32 -!- catseye has changed nick to MathsNerd.
22:05:46 -!- MathsNerd has changed nick to catseye.
22:05:49 <Mathnerd314> Phantom_Hoover_: I just don't know anymore. CS is too attractive.
22:05:57 <Phantom_Hoover_> LIES
22:06:05 <elliott> Mathnerd314: CS is easier, maybe...
22:06:11 <elliott> well bad cs is easier :))
22:06:24 <fizzie> GNU coreutils' "fmt" tool doesn't use the greedy algorithm, but I don't think it's exactly Knuth's either. It's has a cost function characterized by various parameters; it tries to avoid raggedness, too many lines, orphaned words; and it gives bonus points for line-breaking immediately after a sentence; and so on.
22:06:24 <Phantom_Hoover_> CS is just mathematics with some crap stuck on,
22:06:25 <Mathnerd314> I want hardcore CS
22:06:37 <elliott> i like cs, but it's strictly a branch of mathematics
22:06:41 <elliott> Mathnerd314: "hardcore"? seriously?
22:06:48 <Phantom_Hoover_> Mathnerd314, is that "nerd hardcore" or "maths hardcore"?
22:06:50 <elliott> out of curiosity...how old are you?
22:06:55 <catseye> CS is math for machines
22:07:03 <elliott> catseye: no... WE'RE the machine
22:07:04 <elliott> RAGE AGAINST IT
22:07:33 <catseye> i wish my name was Reg... my nick would so totally be RegAgainstTheMachine
22:07:38 <Mathnerd314> fizzie: "the algorithm is a variant of that given by Donald E. Knuth" http://www.gnu.org/software/coreutils/manual/html_node/fmt-invocation.html
22:07:38 <Phantom_Hoover_> Mathnerd314, do you know how big O notation works?
22:07:50 <Phantom_Hoover_> If you do not, you aren't even remotely a maths nerd.
22:07:57 <elliott> ...who doesn't know how big O notation works?
22:08:05 <elliott> also, uh, oh forget it.
22:08:08 * Phantom_Hoover_ , until under a year ago
22:08:11 <Mathnerd314> Phantom_Hoover_: yeah. I even know about big-theta too :p
22:08:16 <elliott> Phantom_Hoover_: yes but you're like three years old.
22:08:26 <Phantom_Hoover_> 3½!
22:09:00 <catseye> Mathnerd314: Do you know how to prove that a language is not regular?
22:09:22 <elliott> catseye: step one, try and parse it with a regexp
22:09:28 <elliott> step two, failed? CONGRAJTSJ!
22:09:30 <elliott> "This may not be the best way, but sometimes you can use dd to write the file to a usb and it will be bootable
22:09:30 <elliott> dd -i file.iso -o /dev/sdb"
22:09:34 * elliott wonders what inexplicably saner dd this man has
22:09:38 <Phantom_Hoover_> I'd stick to maths if they had any cool channels...
22:12:01 <Mathnerd314> catseye: I'd write an algorithm for parsing it, and see how much state I'd need
22:12:40 <elliott> write a working program and then analyse it's properties... sounds like Mathnerd314 really is CSnerdΩ
22:12:44 <elliott> *is really
22:12:54 <Mathnerd314> catseye: but first I'd check wikipedia to see if there were any good theorems
22:13:22 <elliott> in the future, papers will have references to wikipedia
22:13:26 <elliott> and that will be a sad, sad day
22:15:40 <catseye> Mathnerd314: you do realize that the existence of an algorithm that can't parse it doesn't imply non-existence of an algorithm that can, yes?
22:16:24 <elliott> pikhq: "Reversing a longstanding policy, the federal government said on Friday that human and other genes should not be eligible for patents."
22:16:26 <elliott> pikhq: What timing.
22:17:40 <Mathnerd314> elliott: that's already there, in middle/high schools. But I'm guessing most colleges will use Arxiv or something
22:17:41 <Mathnerd314> the main thing to worry about is citing a Google search
22:18:12 <elliott> Or... you know... cite the actual journal.
22:18:34 <Mathnerd314> catseye: ok; after checking wikipedia, I'd find http://en.wikipedia.org/wiki/Myhill-Nerode_theorem, and then see if I could use that
22:18:52 -!- Phantom_Hoover_ has quit (Ping timeout: 245 seconds).
22:19:03 <Mathnerd314> catseye: or maybe http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages since it looks easier
22:20:27 <Gregor> (I'll pump your lemma)
22:21:26 <catseye> Gregor: Your lemma's so fat it needs its own paper
22:22:22 <Gregor> catseye: Your lemma's so ugly they published it in an addendum.
22:22:35 -!- elliott has quit (Ping timeout: 240 seconds).
22:22:42 <catseye> oh snap!
22:23:01 -!- catseye has quit (Quit: Lost terminal).
22:26:46 -!- catseye has joined.
22:27:11 <catseye> 11:26 <catseye> help
22:27:11 <catseye> 11:26 -frigg(~frigg@freenode/utility-bot/frigg)- Available help topics are: help
22:27:33 <catseye> 11:26 <catseye> help help
22:27:33 <catseye> 11:26 -frigg(~frigg@freenode/utility-bot/frigg)- help <topic|command> -- Gives help on a given topic or command.
22:28:10 <zzo38> catseye: I get 44 help topics.
22:28:22 <zzo38> When typing HELP
22:28:35 -!- iGO has joined.
22:30:17 <catseye> i don't.
22:30:24 <catseye> frigg must just hate me/
22:30:33 -!- elliott has joined.
22:30:38 -!- Phantom_Hoover_ has joined.
22:30:46 <catseye> also, there are 480 possible bases for the octonions! we are so lucky to have so much choice
22:31:47 -!- augur has joined.
22:33:33 <Phantom_Hoover_> catseye, bases?
22:34:22 <catseye> Phantom_Hoover_: multiplication tables for e_0 through e_7
22:34:51 <Phantom_Hoover_> Wait, the octonions are *useful*?
22:34:57 <catseye> here I thought there were just "the octonions"
22:34:59 <catseye> Phantom_Hoover_: don
22:35:03 <catseye> Phantom_Hoover_: don't believe it!
22:35:14 <catseye> "string theory, special relativity, and quantum logic"
22:35:31 <Phantom_Hoover_> Wait, SR? Seriously?
22:35:34 <catseye> immensely practical subjects
22:35:38 <catseye> also,
22:35:40 <catseye> -- Wikipedia
22:35:49 <Phantom_Hoover_> Its mathematics are fairly simple IIRC.
22:36:45 <catseye> yeah, octonions aren't knotty, they're just weird
22:38:45 * Phantom_Hoover_ checks if his graphics drivers behave now.
22:38:52 <Phantom_Hoover_> This may get messy...
22:39:48 * Phantom_Hoover_ punches air
22:40:17 <Phantom_Hoover_> Ooh, I can run Oolite again.
22:40:45 <Phantom_Hoover_> ...Or I could, if I hadn't deleted the useless executable months ago.
22:41:32 <zzo38> And is Dirac notation *useful* in accounting?
22:41:42 <Phantom_Hoover_> No, but that doesn't matter.
22:41:57 <Phantom_Hoover_> Do you have a precis of the stuff you came up with?
22:42:36 <zzo38> Well, I find Dirac notation useful in accounting. (That is, using matrix accounting, which is some mathematics for accounting, that I made up, and it is useful)
22:42:47 <zzo38> Phantom_Hoover_: What is a precis of the stuff?
22:44:46 <zzo38> Now I wrote the "intlconv.w" program, so that the translation files used with "internationalization.wi" program can be maintained easily.
22:45:02 -!- wareya has quit (Read error: Connection reset by peer).
22:45:57 -!- wareya has joined.
22:46:28 -!- Phantom_Hoover_ has quit (Read error: Connection reset by peer).
22:46:28 <zzo38> And what is Oolite?
22:48:02 -!- Phantom_Hoover has joined.
22:48:19 <zzo38> O, go drink hydroxic acid.
22:48:21 <Phantom_Hoover> * Two reboots later...
22:48:32 <Phantom_Hoover> Well, I guess I shouldn't tempt fate.
22:48:36 <Sgeo> Oolite?
22:48:50 <Sgeo> Oh
22:48:53 <zzo38> Can you answer my questions?
22:48:53 <Phantom_Hoover> Sgeo, you are neither British nor in your late 30s.
22:48:59 <Phantom_Hoover> You can't be nostalgic about it.
22:49:36 <Sgeo> Nor am I a geologist
22:49:57 <Phantom_Hoover> Indeed you aren't, Sgeo, indeed you aren't.
22:50:16 <Sgeo> What of apparently 3 oolites are you referring to?
22:50:27 <Sgeo> You're not referring to the rock, you're not referring to the video game
22:50:28 <Phantom_Hoover> The remake of Elite
22:50:36 <Sgeo> You are referring to the video game
22:50:40 <Phantom_Hoover> Yep.
22:50:48 <Sgeo> Why would I have to be British to care?
22:51:04 <Phantom_Hoover> Because about 5 Americans owned Acorn computers.
22:52:09 * Sgeo splashes hydroxic acid in zzo38's face
22:52:59 <zzo38> I should try to make a set of cards and tokens for a Mornington Crescent game. I already have a map.
22:55:56 <zzo38> Now see the programs http://sprunge.us/XHjL and http://sprunge.us/PdEF and now complain that I did it wrong because there is no such command in C, or because the sun is the wrong color, or whatever.
22:56:34 <elliott> zzo38: The sun should be blue.
22:56:46 <Phantom_Hoover> Anyway, I need a nerd (preferably lovable) to explain why it is within normal operating parameters for my graphics driver to crash my computer.
22:56:50 <Sgeo> I remember seeing WEB stuff
22:57:01 <Sgeo> Assuming that that's what WEB stuff looks like
22:57:03 <Sgeo> I remember it
22:57:11 <zzo38> elliott: Not in this solar system, I think....
22:57:34 * Sgeo hits zzo38 with an @
22:57:35 <zzo38> Sgeo: These programs are Enhanced CWEB programs. It is similar to WEB, but C instead of Pascal, as well as some other differences, too.
22:57:42 <zzo38> Can you understand these programs?
22:57:54 <Sgeo> The thing I read about wasn't specific to any language
22:58:44 <Sgeo> I wrote some Python stuff with it
22:58:45 <Sgeo> iirc
22:58:48 <zzo38> Sgeo: The WEB system was designed for Pascal. (The reference implementation of TeX is written in WEB.)
22:59:05 <Sgeo> Well, whatever I used had a lot of @
22:59:10 <zzo38> Sgeo: Then it might have been a different language-independent system, such as noweb or newfangle.
22:59:38 <Sgeo> noweb sounds right
23:00:37 <zzo38> What program did you write with it?
23:01:30 <Sgeo> I don't remember
23:01:37 <Sgeo> Probably something Haver related
23:02:06 <zzo38> What is Haver?
23:02:28 <Sgeo> A chat protocol supposed to be used instead of IRC
23:02:59 <ais523> hmm, Clang's coming along well
23:03:09 <Sgeo> elliott, help me describe Haver?
23:03:09 <ais523> it now does the whole of FreeBSD, and enough of Linux that the result runs well enough to recompile itself
23:03:24 <elliott> Sgeo: It's IRC, except worse, and nobody uses it.
23:04:11 <Sgeo> "worse"? Howso?
23:04:13 <zzo38> Sgeo: Well, do you understand my two programs? Is there any parts you did not understand, you can ask?
23:04:28 <ais523> hmm, "IRC, except worse" describes a lot of things
23:04:42 * Sgeo didn't read them
23:04:50 <zzo38> I think IRC is OK, if they followed the protocol, which they don't!
23:05:36 <zzo38> Sgeo: Then, read them
23:06:28 <elliott> Sgeo: Or ELSE.
23:07:10 -!- elliott has quit (Remote host closed the connection).
23:07:44 <zzo38> Also tell me if there are things you do not like about these programs
23:08:52 <ais523> zzo38: in that case, "IRC, except worse" describes practical implementations of IRC
23:10:10 <zzo38> ais523: My IRC server and IRC client is capable to use the proper protocol (although it also can use non-standard extensions).
23:10:32 <zzo38> Most IRC servers and IRC clients are not capable to use the proper protocol.
23:12:09 -!- elliott has joined.
23:13:29 -!- Phantom_Hoover_ has joined.
23:13:52 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:14:23 <Phantom_Hoover_> OK. I now need advice on use of enhanced coercive interrogation techniques to make my computer stop mocking me.
23:14:45 <zzo38> ?
23:16:07 <zzo38> I don't know anything about enhanced coercive interrogation techniques.
23:17:57 <Phantom_Hoover_> Nor I.
23:18:09 <Phantom_Hoover_> I would not prefer a lovable nerd for this solution
23:18:20 <zzo38> Read a book about it, then.
23:18:34 <elliott> "WATERBOARDING: The Do-It-Yourself Guide"
23:18:46 <elliott> I swear, waterboarding sounds like a sport.
23:19:07 <Sgeo> I'm pretty sure you don't need a book to teach you how to waterboard
23:19:24 <Sgeo> Unless it's about not accidentally killing the person, psychological damage, etc
23:19:35 <Sgeo> How to use it to get confessions that might not actually be true
23:19:41 <olsner> you can't just put a board on water and expect to do waterboarding without some instruction
23:19:54 <elliott> you gotta learn how to keep your balance
23:19:56 <elliott> how to ride the wave
23:19:57 <elliott> etc.
23:22:08 <olsner> would probably be a good strategy to get rid of criticism due to waterboarding - invent a sport to match the name and market it violently until no-one remembers a method of torture with the same name
23:22:45 <elliott> heh
23:22:46 <Mathnerd314> olsner: like surfing?
23:22:51 <elliott> Mathnerd314: yes, but
23:22:52 <elliott> waterboarding!
23:23:03 <olsner> "what do you think about waterboarding performed by the military?" "I think it's great that they get some R&R over there!"
23:23:32 <elliott> surfboards don't have feet straps do they?
23:23:36 <elliott> you could add that to start with
23:23:37 <elliott> or do they
23:23:39 <elliott> i have no idea
23:23:57 * Phantom_Hoover_ gets a rag and some water.
23:23:58 <olsner> no, they're just flat afaik
23:24:08 <elliott> well then
23:24:09 <Phantom_Hoover_> SO COMPUTER YOU THINK YOU'RE SO SMART
23:24:11 <elliott> feet straps
23:24:13 <olsner> Phantom_Hoover_: *board* and water :D
23:24:44 * Phantom_Hoover_ has quit (Read error: Connection reset by peer)
23:25:01 <elliott> heh
23:25:08 <zzo38> Phantom_Hoover_: ?
23:25:23 <elliott> olsner: ok so maybe with waterboarding you're actually like
23:25:29 <elliott> olsner: lying flat on the board at all times
23:26:10 <olsner> hmm, that could work
23:26:24 <olsner> although you do that when surfing too, just not all the time
23:27:07 <elliott> olsner: right, but CONSTANTLY
23:27:09 <elliott> olsner: ooh
23:27:16 <elliott> olsner: maybe your arms go underneath, and you tie them to it
23:27:18 <elliott> same with feet
23:27:21 <elliott> you become one with the board!
23:29:34 <olsner> it's like, drowning while strapped to a board and having fun!
23:30:39 <elliott> olsner: yup!
23:30:46 <elliott> olsner: just like waterboarding.
23:32:37 <olsner> well, the torture version is less likely to kill you I think
23:33:01 <elliott> olsner: it sounds great though
23:33:04 <elliott> BECOME ONE WITH THE BOARD
23:35:49 -!- zzo38 has quit (Remote host closed the connection).
23:41:19 -!- tombom has quit (Quit: Leaving).
23:41:36 <Vorpal> <ais523> zzo38: in that case, "IRC, except worse" describes practical implementations of IRC <-- "IRC, except not quite as braindead" is how practical implementations of IRC work.
23:43:18 -!- MigoMipo_ has joined.
23:45:25 -!- catseye has quit (Quit: Lost terminal).
23:46:51 -!- MigoMipo has quit (Ping timeout: 255 seconds).
23:47:12 -!- catseye has joined.
23:48:09 <Vorpal> night →
23:48:24 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
23:58:39 <Sgeo> What's braindead about the spec?
←2010-10-29 2010-10-30 2010-10-31→ ↑2010 ↑all