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