00:04:12 nortti: ok, according to wiki on Nemesis Sudio, Nemsis == Master of the Hellish Yard (or at least, it describes events that are part of MAster of the Hellish Yard song) 00:12:50 -!- Phantom_Hoover has quit (Ping timeout: 272 seconds). 00:16:24 Hmm, I assume [nil isEqual: nil] is NO :/ 00:16:30 I should check 00:19:32 Well, I got (null) when I tried to NSLog it from http://www.compileonline.com/compile_objective-c_online.php 00:22:25 presumably it's nil, not NO 00:25:30 Yes. Although I think the thing I was reading said if a BOOL was expected, it would give NO. I assume 'expected' is in terms of casting, though? 00:26:13 presumably because (int) NULL is 0 00:28:55 * Sgeo wonders how OS X compares to something like KDE 00:31:45 " Essential to [AppleScript's] functionality is the fact that Macintosh applications publish "dictionaries" of addressable objects and operations." 00:32:01 Hmm, interesting... is DBUS something simiilar on Linux? 00:37:35 yes 00:38:46 -!- ais523 has joined. 00:39:37 note that KDE doesn't do its own thing any more, it just uses dbus 00:39:42 afaik 00:40:09 hi 00:40:13 hi 00:43:34 -!- AndoDaan has quit (Ping timeout: 250 seconds). 00:43:37 molecular steel 00:43:48 I think my computer has an annoying habit of being an hour slow 00:43:58 I was planning to catch a train to University at about 11pm 00:44:03 but it was actually midnight, so I had to walk 00:44:16 even worse, this means that the places where I expected to be able to potentially by food were shut 00:44:38 so I took a ~20 minute detour to go to a 24 hour supermarket, only to find it wasn't 24 hour any more 00:44:42 ais523: have you heard of daylight savings time? 00:44:48 eventually I got food from a petrol station 00:44:54 elliott_: yes, I have 00:45:04 but this has happened on more than one occasion; and the clock updates from ntp 00:45:05 thanks for the information. keep me updated if you stop having heard of it 00:45:21 ais523: I bet a disagreement on whether the hardware clock is UTC or localtime 00:45:23 that's a problem with windows 00:45:29 though maybe it doesn't apply for dst 00:45:36 this is one thing I was wondering about, indeed 00:45:37 a problem with windows and linux, that is 00:45:40 it'd explain an hour offset 00:46:32 -!- Lymia has quit (Ping timeout: 255 seconds). 00:46:55 -!- AndoDaan has joined. 00:47:28 wow these crisps are terrible, even though they're the brand I normally buy 00:49:17 ais523: there are only like two brand + flavour combinations I like 00:49:26 also the computer here turns itself on and off spontaneously, I'm assuming it's some combination of standby-timeout and wake-on-LAN 00:49:32 and a small handful of others that I'll eat when nothing else is available 00:49:34 coppro: they're the brand /and/ flavour I normally buy 00:49:53 weird 00:50:00 and they're in date (29 11 14, which is a nicely unambiguous date) 00:50:04 but the packet is larger than normal 00:50:17 ais523: 2029-11-14? 00:50:22 wait, not completely ambiguous, it could be the 14th November 2029 00:50:31 but I don't think crisps last that long 00:50:54 so either they use lower-quality ingredients for the larger packs, or they go off when they're close to the best-before date 00:51:22 * ais523 throws the crisps away 00:51:29 they had a negative price anyway due to interaction of special offers 00:51:34 I wasn't planning to buy them 00:51:34 haha 00:56:13 ais523: Perhaps it's the 11th of Twentyninember, 29 AD. 00:56:39 it's middle-endian 00:56:40 pikhq: that uses 29 twice 00:56:56 it expired on the 29th of Second February, 2011 00:57:04 [wiki] [[Polyglot]] http://esolangs.org/w/index.php?diff=40601&oldid=36314 * 90.189.54.149 * (-30) 00:57:14 elliott_: I don't think he knows about second february 00:58:13 it only happens on leap years 00:58:54 * A complete date was specified, so use the other pope. 00:58:55 */ 00:59:12 that is an amazing comment 00:59:31 what does it mean 01:00:26 it's from the source of the "cal" utility from netbsd 01:01:00 ais523: how dead is agora these days? 01:01:23 elliott_: it has a spurt of activity starting last week 01:01:35 when comex attempted a dictatorship scam, and I attempted a counterscam 01:01:44 that is the only thing going on, though, and it was mostly dead before that 01:04:48 nys: wasn't Julian an emperor? 01:04:59 hm maybe 01:05:01 ah, yes, it was Julius Caesar himself 01:05:07 i'm not a calendarist 01:07:01 -!- aretecode has quit (Ping timeout: 260 seconds). 01:07:49 coppro: 14 is clearly the ancinet number of repetition. 01:08:07 ... what the what. 01:08:16 Lettuce, yes *lettuce*, is a mild narcotic. 01:09:12 pikhq: ban it 01:09:18 wait, we haven't come up with a scary name for it 01:09:26 Lactucarium. 01:09:31 excellent 01:09:35 rename it to lactucarium, then ban it 01:09:37 -!- aretecode has joined. 01:09:52 -!- HackEgo has quit (Ping timeout: 245 seconds). 01:13:49 -!- Lymia has joined. 01:25:13 sounds like lactation. 01:26:02 -!- AndoDaan has quit (Ping timeout: 250 seconds). 01:26:21 -!- AndoDaan has joined. 01:29:52 -!- shikhout has quit (Ping timeout: 240 seconds). 01:30:21 can you ever do anything useful with a /usr/bin/cd that just runs cd in a shell? 01:30:50 Uuuuh. Unsure. 01:31:42 a /usr/bin/cd could attach a debugger to its parent and force it to run chdir 01:32:04 -!- ^v has quit (Quit: http://i.imgur.com/Akc6r.gif). 01:32:19 :( 01:32:44 It could leave the new shell running 01:34:49 oh wow, this is broken 01:35:00 the directory bash thinks I'm in is not the directory I'm actually in 01:35:17 That's pretty easy to do. 01:35:27 The directory bash thinks you're in is the contents of PWD. 01:36:57 pikhq: OS X ships with one :) and I guess FreeBSD at least in the past, going by the copyright attribution on the file 01:37:32 how do I get bash to read a file and send it to another process's stdin? 01:37:32 maybe bash stats the dir it's in or something, so you can use it to trigger a side-effect with a FUSE filesystem that waits to be statted 01:37:40 ais523: err, cmd < file? 01:37:43 doing "command < file" doesn't work, because then the command reads the file 01:37:47 not bash, bash just opens the file 01:37:54 ais523: cmd =(cat file), in zsh 01:38:24 erm, sort of 01:38:31 sorry, I'm really wrong. 01:38:39 elliott_: then cat reads it, just checked 01:38:41 does cat file | cmd not work? 01:38:45 oh, you really want bash itself to do it 01:38:48 yes 01:38:48 ( that'll be a subshell though 01:38:56 There's always read 01:39:12 ais523: { oh, I guess elliott_: I tried that last one in zsh, seems to be run by a process called "pager" 01:40:29 ais523: pager, really? 01:40:37 the only pager I know is the one I have to automatically page stuff 01:40:46 elliott_: yes, it surprises me too 01:40:59 "pager" seems to be a wrapper around less on my system 01:41:07 so I guess zsh is using some sort of weird intelligence 01:41:25 Sounds pretty zsh. 02:06:34 -!- aloril has quit (Read error: Connection reset by peer). 02:18:17 -!- aloril has joined. 02:26:26 -!- MoALTz__ has joined. 02:29:17 -!- MoALTz_ has quit (Ping timeout: 244 seconds). 02:36:54 [wiki] [[Special:Log/newusers]] create * RiftocLANG * New user account 02:37:22 hmm, that might be not a spambot 02:41:32 -!- AndoDaan has quit (Ping timeout: 245 seconds). 02:42:42 I'm glad that levels, so far, has managed to get away with rebasing onto the master branch 02:42:46 oh wait, wrong channel 02:59:36 How to make a "block assembler" that it the program instead of specifying absolute addresses, can contain blocks, and the blocks can contain gaps, calculations, inlining of other blocks, preferences of closer blocks, etc, and then can determine how to put them into the binary including overlapping and that stuff? 03:00:40 (O, and also specification of alignment of blocks.) 03:21:08 -!- AndoDaan has joined. 03:54:59 -!- tromp_ has joined. 04:26:41 -!- ais523 has quit. 04:26:49 -!- callforjudgement has joined. 04:26:59 -!- callforjudgement has changed nick to ais523. 04:30:18 -!- Frooxius has quit (Read error: Connection reset by peer). 04:30:29 -!- Frooxius has joined. 04:40:17 -!- nys has quit (Quit: q). 04:44:02 As far as I can see, all of the unofficial "NOP immediate" instructions in 6502 seem to do that because the processor is not designed to write to immediates. But if this is the case, why do instructions $C2 and $E2 still take only two cycles without affecting flags? 04:44:39 re_birthday has a very ... revelation-ary feel, at least the sub I watch/like. "The red chains disappear and said to me 'You will soon be reborn'" 04:44:49 And a lot of descriptions of what he sees 04:46:41 (According to the pattern of the table, $C2 and $E2 would have been "decrement immediate" and "increment immediate".) 04:47:26 zzo38: what should writing to immediates do? modify the command itself in memory? 04:48:24 ais523: Well, it should *try* to modify the command itself in memory; of course if it is ROM it won't work (but if there are side-effects for writing there, it should do that). 04:48:39 Note that VAX does have commands to write to immediate operands. 04:56:41 ais523: How about while read x; do echo "$x"; done < file | cmd ? (Might need extra work to cope with some contents, and while reading should be done by bash, it'd be a subshell and not the original; though reading all to a variable separately should be doable too.) 04:57:12 subshell doesn't really work for my idea 04:57:26 what I wanted to do was get at the parent of bash from inside bash by reading /proc/self/status 04:58:27 wait, would a simple /proc/$$/status work? I think I'm overcomplicating this 04:58:54 -!- AndoDaan has quit (Ping timeout: 246 seconds). 04:58:55 read -d $'\0' x; echo -n "$x" | cmd ...but $$ should work too. 04:59:06 yes, it does, I was being stupid 04:59:10 still, the original problem was interesting 04:59:47 read -d $'\0' x < file; echo -n "$x" | cmd that is. And won't work with nulls. 05:05:58 OK, behold my working implementation of cd: http://sprunge.us/PBNT 05:06:08 wait, I should probably be deleting the tempfile 05:06:10 after use 05:06:11 oh well 05:07:11 -!- MoALTz_ has joined. 05:07:34 Couldn't you do that without tempfiles with something like gdb ... -x <(echo ...) ? (May involve exporting some variables for the command in <(...) to use.) 05:09:52 Or I guess just (echo ...; echo ...) | gdb -x - if it takes that, or -x /dev/stdin if not. 05:10:06 -!- MoALTz__ has quit (Ping timeout: 246 seconds). 05:10:41 -!- AndoDaan has joined. 05:11:52 Or did bash copy even unexported variables to subshells, just not to the actual environment of executed commands? I guess it might, sounds like it'd be a too common pitfall if it didn't. 05:12:23 I just wanted to get it working; I expected there to be a cleaner way to do it 05:16:39 ais523: disgusting 05:16:45 thanks 05:17:33 ais523: this is making me think about a shell where all builtins are implemented externally... 05:17:51 like, if /proc/pid/cwd was a link to a program's current directory, and you could just change it, or something 05:17:59 I guess current directory is a libc abstraction though? 05:18:20 well, /proc/pid/cwd is a symlink, so you should be able to retarget it with ln -sf 05:18:31 and you could actually implement that in the kernel 05:18:36 and no, current directory is kernel, not libc 05:18:43 um, are you saying it exists? 05:18:48 wow, it does 05:18:51 why didn't it tab-complete? 05:18:58 /proc is weird 05:19:18 looks like ln -sf on the cwd just does nothing 05:19:19 :( 05:19:29 this becomes obvious when you realise that a process's current directory can be deleted 05:19:36 right 05:19:43 hmm, what other core builtins of a posix shell are there? 05:19:50 I guess, actually, it's less obvious 05:19:57 what libc /could/ do is hold a handle to it open 05:20:01 and use the *at functions to move around 05:20:20 exit could use a signal 05:20:23 except for status codes 05:21:33 export, you'd make processes have mutable environs (a major departure, admittedly, that's a libc abstraction right now) and have the shell expose the non-exported variable bindings in /proc/pid, and then just move them around 05:21:54 this is terrible 05:22:58 ais523: it's a shame you can't use that cd to do exploits 05:23:07 since it requires your parent process to run you with the same user anyway 05:23:15 so you can't, like, exploit it in a CGI or whatever 05:23:17 actually... can you? 05:23:22 s/shame/good thing/? 05:23:22 CGIs are often run as the webserver user, I guess 05:23:34 Can a .EXE file be made that can work in DOS, Windows, and also in .NET/Mono? 05:23:45 can you make a CGI that shuts down the parent webserver? 05:23:45 oh 05:23:48 it could just, like, use kill. 05:23:52 and really, if you can get a webserver to run gdb, you can probably get it to do anything 05:24:13 ais523: well, being able to write to a .php file is one thing 05:24:17 killing apache with it is another 05:24:19 zzo38: you might have problems with the magic numbers in the first few bytes, which are intentionally designed to distinguish between files 05:24:36 you could almost certainly make a valid Linux ELF executable that's also a valid Windows COM executable, though 05:24:43 I know that a .EXE file can be designed for both DOS and Windows. 05:24:48 elliott_: gdb is a C interpreter 05:25:10 ais523: my point is just, being able to control the webserver process 05:25:11 ais523: Isn't .COM only DOS programs though? 05:25:18 thus if you can give arbitrary input to it, you already have arbitrary local exec 05:25:26 ais523: yes... 05:26:22 ais523: I don't think you are replying to what I am saying 05:26:22 I don't understand what you're saying, in that case 05:26:22 my *premise* is that you can run any old code. that's exactly what getting to write to a .php or any other CGI type thing is. 05:26:22 it didn't strike me until now that that might extend to, say, being able to shut down apache because it forks CGIs as the same user. 05:26:22 But, yes I suppose if it can be done a .COM program which is both a valid DOS program and x86 Linux ELF program, can help too, for a different purpose. 05:26:39 but anyway I wasn't thinking that clearly. 05:26:59 zzo38: you could create a .COM that writes an executable file in /temp or somewhere like that, then runs it 05:27:25 ais523: ELF files are required to start with "jg 0x47" ("\x7fE"); now I wonder about the initial state of flags. If that is guaranteed to jump, it'd make a polyglot ELF/.com positively trivial to write. 05:27:28 ais523: Yes, although I am not trying to do that anyways. 05:27:50 fizzie: and EXE files have to start MZ or ZM 05:28:05 so ELF/EXE is impossible (except that you can rename a .COM file to .EXE and it'll still work, IIRC) 05:28:18 (It probably wouldn't be terribly hard otherwise either, since there's free bytes quite near the start in ELF.) 05:28:33 It has to start with MZ, regardless if it is DOS, Windows, or .NET/Mono, and a .EXE file can be both DOS and Windows. 05:29:11 -!- password2 has joined. 05:29:30 Just starting DEBUG on my computer right now I get the following flags: NV UP EI PL NZ NA PO NC I don't know which (if any) are guaranteed, though. 05:29:40 does jg 0x47 do anything exciting? 05:29:48 oh 05:29:59 I was thinking it was intentionally jg 05:30:03 but you were just disassembling for convenience 05:30:19 It would jump into a place which you could easily arrange to be free of ELF headers, that's all. 05:30:22 fizzie: ideally, put an ELF loader starting at 0x47 05:30:28 that loads the executable itself 05:30:36 That would be nifty. 05:30:38 turn any elf into a .com! 05:31:09 how does the linux kernel's EFISTUB thing work? 05:31:15 compiled linux kernels are ELF executables, I believe? 05:31:25 but they're also UEFI applications, so they have to be PE/COFF 05:32:44 elliott_: I believe it just wraps an ELF in the minimum headers needed to make it look like a PE executable 05:33:16 how does that maintain compatibility with things expecting the kernel to be a regular ELF? I guess there maybe aren't such things 05:33:24 or are there? 05:33:29 linux doesn't do multiboot, IIRC 05:34:53 I figured out what the rest of the instructions in the ELF header would be too; it seems to be: JG 0147 DEC SP INC SI ADD [BX+DI],AX ADD [BP+DI],AX 05:35:14 elliott_: I think the only things that expect that are lilo and grub, and they're generally quite good at changing to fit what Linux needs 05:35:14 (This is what DEBUG tells me it is anyways after I filled in the header according to what Wikipedia says.) 05:35:54 ais523: are you telling me that linux dropped compatibility with all older versions of grub when it gained EFISTUB support? 05:35:57 I don't believe you 05:36:13 elliott_: I think it was a kernel option whether to become EFI or not 05:36:19 and you wouldn't turn it on if you had an old GRUB 05:36:27 it was probably off by default (quite possibly still is, in fact) 05:37:07 I don't think what you're saying is plausible. EFISTUB is on in any distro that supports gummiboot, at the least. 05:37:15 hmm 05:37:21 https://www.kernel.org/doc/Documentation/efi-stub.txt 05:37:40 it looks to me far more like it just makes a dubious PE/COFF and ELF polyglot that is good enough to fool firmware, or something 05:37:56 sudo file /boot/vmlinuz-3.13.0-37-generic 05:37:57 /boot/vmlinuz-3.13.0-37-generic: x86 boot sector 05:38:21 http://lxr.free-electrons.com/source/arch/x86/boot/header.S 05:38:38 file isn't very good at polyglots 05:38:50 it starts MZ, anyway 05:38:57 so my conclusion is, it's not an ELF and never was 05:40:06 https://en.wikipedia.org/wiki/Vmlinux#bzImage aha 05:40:06 it contains ELFs 05:40:06 "movw $bugger_off_msg, %si" 05:40:32 ".word 0x8664 # x86-64", nice 05:41:10 I like how linux just tells you to fuck off if you use it as a boot sector 05:41:12 I guess it no longer supports that 05:42:00 hmm, both the entire PlayStation series, and the GameCube and Wii, use ELF 05:42:12 it's weird to think of a games console as using an executable format at all 05:42:42 -!- conehead has quit (Quit: Computer has gone to sleep). 05:42:43 cartridges always used to work .COM-style, the cartridge /is/ your memory 05:42:43 even playstation 1? 05:42:43 ah no 05:42:43 PS2 onwards 05:42:45 I saw four entries, but one of them's the PSP 05:43:02 "# Explicitly enter this as bytes, or the assembler # tries to generate a 3-byte jump here, which causes # everything else to push off to the wrong offset." assembly: too high-level 05:43:23 Bike: this sort of thing happens a lot 05:43:39 the Linux kernel has a table of efficient NOPs of various byte lengths 05:43:59 and Raymond Chen talks about how for a while, the Windows kernel needed specifically 32-bit NOPs in order to work around bugs in early 32-bit processors 05:44:11 (you can't just write NOP, it might assemble to the wrong bitwidth) 05:44:43 "# Apparently some ancient versions of LILO invoked the kernel with %ss != %ds, which happened to work by accident for the old code. Recalculate the stack pointer if %ss is invalid." jesus 05:46:16 -!- oerjan has joined. 06:18:50 -!- MoALTz_ has quit (Quit: Leaving). 06:21:52 -!- tlvb has quit (Ping timeout: 240 seconds). 06:26:32 ais523: the fun part about efficient nops at various byte length is that the AMD optimization manuals and the Intel optimization manuals recommend different ones. 06:26:46 as in, all of them work as nops in all cpus, but different ones are recommended as the most efficient. 06:28:44 benchmark them 06:29:27 elliott_: that's a bit tricky, because the difference may be in the decoder, not the execution when it's already cached 06:29:47 elliott_: also, no 06:29:50 that just means you have to be more evil :p 06:29:52 I'll just believe the manuals 06:30:03 why wouldn't I believe them?\ 06:30:09 b_jonas: well, I mean to find the best compromise 06:30:14 no I don't 06:30:16 between the two manufcaturers 06:30:19 no 06:30:33 I don't actually think you're obligated to. 06:30:49 in code where that kind of micro-optimization really matters, you can just generate different code for amd and intel cpus, and different code for different generations 06:31:08 if it doesn't matter, then just use one of them 06:31:32 I was kidding. :p 06:33:09 also, it's not my job, I'm not the one writing compilers 06:33:57 I only use them 06:34:55 I want to know how to make a compiler that can decide where to place blocks that are allowed to overlap if they contain partially same data, and which may contain gaps and expressions as well. 06:35:50 Is there software like that? 06:36:33 zzo38: this is about that Z-machine stuff still? 06:37:14 b_jonas: In this case yes, although I also want to know how it can be done in a general purpose way, not only specific to Z-machine. 06:37:38 (O, and I have now released a Z-machine debugging interpreter, in case you want it for any reason.) 06:38:01 zzo38: Today I was talking about the Z-machine with someone. 06:38:18 And also Zork Zero. 06:39:34 Zork Zero is YZIP, and this interpreter I made is ZIP. So, Zork Zero will not run on it, but Zork I will work. 06:39:39 (I have tested Zork I.) 06:41:41 But Zork Zero is more fun. 06:41:45 OK 06:42:17 We also talked about Zork: Grand Inquisitor. 06:55:50 @tell AndoDaan well, 'minor'... <-- it's not supposed to be used for actual new content. 06:55:50 Consider it noted. 06:56:29 @tell AndoDaan i tend to err on the side of _not_ marking edits minor. 06:56:29 Consider it noted. 07:00:51 -!- Sprocklem has quit (Ping timeout: 272 seconds). 07:03:59 @tell coppro nys: wasn't Julian an emperor? <-- there _was_ an emperor julian, even if that's not who the term refers to. 07:03:59 Consider it noted. 07:10:59 oerjan: ah, sorry. I should have realized that. 07:12:49 In the future I'll be less minor marking happy. 07:13:20 good, good 07:14:14 How many of the months of the year are named after caesars? 07:14:54 2? 07:15:06 augustine and julius 07:15:48 *augustus 07:15:56 augustine was a christian saint 07:16:14 What was February named after? 07:16:30 some roman god 07:17:44 technically july and august are _also_ named after some roman god, because the senate declared many of the emperors to be gods 07:18:03 (also julius wasn't technically an emperor) 07:18:35 (also technically a whole bunch of the caesar had all of julius, caesar and augustus in their name. or something like that.) 07:18:38 *+s 07:19:18 ok possibly february isn't named after a god 07:19:32 "The Roman month Februarius was named after the Latin term februum, which means purification, via the purification ritual Februa held on February 15 (full moon) in the old lunar Roman calendar." 07:20:23 the roman calendar just gets weirder every time i read about it: "January and February were the last two months to be added to the Roman calendar, since the Romans originally considered winter a monthless period." 07:20:50 Augustine sounded pretty in my head :\ 07:20:56 oerjan: http://www.tondering.dk/claus/calendar.html 07:21:05 http://www.tondering.dk/claus/cal/roman.php in particular 07:21:39 oerjan: also http://www.xkcd.com/1104/ 07:26:21 oerjan: Of course a lot of the month names are different in slavic languages 07:26:35 January is Styczeń in Polish 07:27:50 I have to go now 07:28:10 -!- FreeFull has quit. 07:30:33 We've got mostly godless months, they're more about agriculture and stuff. 07:30:34 Tammikuu, helmikuu, maaliskuu, huhtikuu, toukokuu, kesäkuu, heinäkuu, elokuu, syyskuu, lokakuu, marraskuu, joulukuu. 07:30:50 Several of those are very unimaginative. June -> kesäkuu -> "summer month". 07:31:06 September -> syyskuu -> "autumn month". 07:31:15 December -> joulukuu -> "Christmas month". 07:33:27 And October -> lokakuu -> approximately "mud month", July -> heinäkuu -> "hay month". 07:35:03 And toukokuu and elokuu are named after the planting and harvesting of wheat. 07:35:58 mud month :D 07:36:14 http://en.wiktionary.org/wiki/loka#Finnish 07:37:04 Let's see, what's left? January -> tammikuu -> literally "oak month", but AIUI it's originally from some other meaning of 'tammi' somewhat like 'core', because it's the 'core' of winter. February -> helmikuu -> "pearl month", allegedly from pearl-like ice in the trees. 07:38:01 March -> maaliskuu -> unknown etymology, rumoured to be something about how the ground ("maa") gets uncovered when the snow melts. 07:38:39 April -> huhtikuu -> something about forestry related to that time of the year. 07:39:37 November -> marraskuu -> "death month", basically. 07:39:58 From an entirely obsolete/archaic word http://en.wiktionary.org/wiki/marras#Finnish 07:40:02 And that's the lot. 07:40:40 death month is hardcore. 07:40:54 That's how we roll. 07:44:17 and toukokuu (May) is something like "seed-planting month" 07:48:45 fizzie doesn't believe in may. 07:52:13 -!- oerjan has quit (Quit: Needs more napping). 07:54:06 you can't get more unimaginative than the hebrew system for naming days 07:54:29 sunday-friday are called first day, second day, third day, fourth day, fifth day, sixth day 07:59:52 If I have one block "ABC???DEF" and one block "A???F" then it can overlap like "ABC?A?DEF" assuming the alignment and areas are OK. What algorithm is usable? 08:06:15 shachaf: so do Chinese days of the week 08:23:10 Actually this particular kind of overlapping seems to be less important than just filling in gaps of blocks with other blocks. 08:30:29 However there is still at least the following: [1] A block may have an alignment and offset from that alignment. [2] A block can contain gaps. [3] A block may be restricted in where it can be placed. [4] A block can contain arithmetic on addresses of other blocks. 08:31:57 -!- drdanmaku has quit (Quit: Connection closed for inactivity). 08:35:26 How should this be encoded into the computer in a best way that it can be efficiently decided to put in the blocks too? 08:40:52 -!- ais523 has quit. 08:44:49 O, there is also the case of a block being made up of blocks, so the block can have a container. I suppose this can even be used as a generalization of needing in different areas of the file, too. 08:44:59 -!- thekey has quit (Quit: Leaving). 08:49:51 How can a sorting algorithm work on a partial ordering? 08:56:53 zzo38: topological sort? 09:04:49 -!- impomatic_ has quit (Ping timeout: 260 seconds). 09:27:21 Let me see if Wikipedia describes it 09:32:35 Yes, it looks like the thing I would need. 09:52:39 -!- S1 has joined. 10:11:06 -!- olsner has quit (Ping timeout: 246 seconds). 10:12:02 -!- olsner has joined. 10:22:27 [wiki] [[Special:Log/newusers]] create * Viznut * New user account 10:23:18 Huh, I wonder if that's "the" viznut. 10:24:41 -!- AndoDaan has quit (Ping timeout: 260 seconds). 10:25:00 -!- Phantom_Hoover has joined. 10:25:08 -!- viznut has joined. 10:25:30 Heh, seems likely. 10:28:19 [wiki] [[Esolang:Community portal]] http://esolangs.org/w/index.php?diff=40602&oldid=34737 * Fizzie * (+125) /* IRC */ Advertise the IRC RC feed. 10:28:48 I've been meaning to mention that there for a while now. (Not that it probably sees that many visitors.) 10:39:13 -!- oerjan has joined. 10:41:31 If I have one block "ABC???DEF" and one block "A???F" then it can overlap like "ABC?A?DEF" assuming the alignment and areas are OK. What algorithm is usable? <-- also as ABC?F?DEF 10:42:20 (not much idea of algorithm, although it reminds me of what i was thinking about optimizing /// interpretation) 10:42:58 -!- sebbu has quit (Quit: monthly reboot). 10:47:28 oerjan: I swear the "Mail merge" anagolf problem is made to make Haskell look bad. 10:47:44 oerjan: Well, yes, both ways work in that case. 10:47:55 int-e: that wasn't specifically my intention with the problem 10:47:59 int-e: i haven't looked at it yet 10:48:40 It's kind of similar to the sequence alignment stuff our bioinformaticists deal with, except presumably in this case there's no fuzz factor involved, and the solution would need to exactly fill the criteria. And I'm not sure they deal with that kind of missing data, more like "there can be gaps anywhere". 10:48:46 b_jonas: ghc's runtime wants to treat input and output as UTF-8, which fails miserably. 10:49:05 -!- AndoDaan has joined. 10:49:11 int-e: um, but isn't that input and output UTF-8? 10:49:21 let me check the form 10:49:27 nope, it seems to be ISO8859-1 10:49:27 or hexdump it 10:49:28 oerjan: However, if there is a constraint that the two blocks need to have different addresses for some reason, then it won't work; otherwise it does work. 10:50:38 anyway, my submission currently starts with import System.IO;main=mapM(`hSetBinaryMode`True)[stdin,stdout]>> (is there a shorter way to do that?) and it's annoying. 10:50:50 ouch 10:50:55 int-e: it does seems to be utf8 to me 10:51:19 b_jonas: submit a cat program, the submission form gives you hex dumps for output and expected output 10:51:25 It does seem to be UTF-8 to me too. 10:51:26 int-e: it starts with \xc3\x81tv\xc3\xa9teli 10:51:37 int-e: yes, that's what I just did 10:51:42 Expected: "\xc3\x81tv\xc3\xa9teli". 10:51:57 Quite UTF-8y. 10:51:59 hmm. 10:52:12 let me try to check if it's all UTF-8 10:53:24 "UTF-8 Unicode text", says file about the entire expected output, after replacing \xNN's. 10:53:37 ok, I'm misdiagnosing the problem 10:54:20 perhaps _haskell_ isn't set to utf8 by default in that version? 10:54:30 The anagolf environment seems to use the C locale, if that helps. 10:54:37 Possibly Haskell is locale-aware enough? 10:54:39 I think it's all utf-8 10:54:41 but in any case I'm getting a.out: : hGetContents: invalid argument (invalid byte sequence) for interact id. what's the locale setting there? 10:54:48 int-e: "C". 10:55:01 in later versions it is locale-aware. 10:55:33 ... ("LC_ALL","C") 10:55:38 oh, so it does that stupid thing like the python stdlib by default where it tries to interpret any file read according to your locale automatically? 10:55:42 don't know about 7.4. 10:55:53 b_jonas: yes. 10:56:28 I do recall that ghc 7.4 was in a particularly bad state concerning encoding issues, 7.6 being slightly better 10:56:56 it's hGetContents that's in trouble, so it's breaking on input 10:57:03 but with a C locale, the input *should* be treated as bytes, so what's that error doing there... 10:57:11 The (POSIX) C locale is nominally ASCII, so all the non-ascii bytes are technically invalid? 10:58:14 `` echo "äöü" | LC_ALL=C ghc -e 'interact id' 10:58:26 oh. : : hGetContents: invalid argument (invalid byte sequence) 11:00:03 fizzie: And that's how ghc treats it (in version 7.8 as well). SIGH. 11:00:10 How does 'exec is denied' interact with something like bash, incidentally? Only shell builtins? 11:00:41 someone said it doesn't apply to shell scripts, but... 11:01:20 If it doesn't, it might easily turn out the case that a shell script that calls GHC after setting locale would be shorter than a "Haskell" solution, which is patently silly. 11:01:29 well, I'm sorry if this causes you trouble with Haskell. 11:08:54 anagol isn't set for utf8 11:09:15 which is the reason you can't embed binary stuff in burlesque programs on anagol 11:09:20 well.. 11:09:29 that probably wouldn't work with utf8 as well 11:09:57 or is it utf8 on anagol? 11:10:47 anyway you can't embed binary stuff in Burlesque :) 11:11:09 > map length["`hSetBinaryMode`True","`hSetEncoding`utf8"] 11:11:11 [20,18] 11:11:19 int-e: slight improvement 11:12:15 nice, thanks 11:14:05 > length "import System.IO;main=mapM(`hSetEncoding`utf8)[stdin,stdout]>>" 11:14:06 62 11:14:16 fizzie: Yes, the "exec is denied" doesn't apply to shell scripts. You are allowed to look at the codes for the submission forms (it is all written in Ruby) on Github to see how it is working. 11:16:02 (This also shows how the scoring for special problems is decided.) 11:18:28 > length "LC_ALL=en_US.utf8 ghc -e 'let in'" 11:18:30 33 11:23:51 oerjan: Have you been Haskell-golfing so much that you omit spaces e.g. between length and the [, or after the , in the list, by default? 11:24:20 -!- Patashu has quit (Ping timeout: 260 seconds). 11:24:59 fizzie: heh 12:02:15 -!- AndoDaan_ has joined. 12:05:31 -!- AndoDaan has quit (Ping timeout: 276 seconds). 12:05:36 -!- AndoDaan_ has changed nick to AndoDaan. 12:22:22 -!- heroux_ has quit (Ping timeout: 245 seconds). 12:23:12 -!- heroux has quit (Ping timeout: 245 seconds). 12:23:38 -!- heroux has joined. 12:23:55 -!- heroux_ has joined. 12:26:57 -!- zemhill has quit (Ping timeout: 245 seconds). 12:27:58 -!- zemhill has joined. 12:43:12 oerjan needs to golf more, so that he automatically writes map as <$>. 12:43:35 You may need an import for <$> 12:43:42 Jafet: um what mroman_ said 13:13:09 -!- sebbu has joined. 13:13:23 oerjan: You still have over three hours to beat int-e on count the overlap hth 13:14:43 stop this hth non-sense 13:17:03 I was thinking of doing a Befunge-98 solution that'd do it "manually" by actually drawing the squares in some empty region of the fungespace e.g. by doing *3, *5 and *7 for a, b, c and then counting overlaps by summing how many cells are zero %15, %21, %35 and %105, but... didn't. 13:25:42 -!- conehead has joined. 13:25:46 -!- conehead has quit (Changing host). 13:25:46 -!- conehead has joined. 13:27:35 I will tell you something about Z-machine instruction encoding: If it is using EXT encoding, and if y means the byte telling the operand types, then __builtin_popcount(255&~y) is calculating how many bytes the operands take up. 13:31:29 " 2 down vote 13:31:30 13:31:32 I would just add a note of pedantry that may be important to some people: it's not correct to say that xs:int "is" a signed 32-bit integer. That form of words implies an implementation in memory (or registers, etc) within a binary digital computer. XML is character-based and would implement the maximum 32-bit signed value as "2147483647" (my quotes, of course), which is a lot more than 32 bits! " 13:31:43 right. right. 13:31:53 > len "2147483647" 13:31:55 Not in scope: ‘len’ 13:31:55 Perhaps you meant one of these: 13:31:55 ‘lex’ (imported from Prelude), ‘lens’ (imported from Control.Lens) 13:31:59 > length "2147483647" 13:32:01 10 13:32:02 @define len = length 13:32:05 Defined. 13:32:13 it's 80 bits AT LEAST 13:33:02 Perhaps it means it is converted into at least a signed 32-bit integer? 13:33:38 (Although an implementation could treat it differently, such as to avoid converting it at all, I suppose) 13:35:12 I think his point is, that in XML 2147483647 isn't encoded as 32bit 13:35:13 oerjan: You still have over three hours to beat int-e on count the overlap hth <-- i don't really have any good idea that could work, i think. 13:35:22 that's like saying 13:35:26 int8_t = 12; is invalid 13:35:30 because 12 isn't 8bits 13:35:32 it's 16bits! 13:35:52 I don't think that's what the comment said at all, it just objected to the word "is". 13:35:56 so technically 12 isn't an 8bit value 13:36:08 Presumably "xs:int has the range of a 32-bit signed integer" would have been just fine. 13:36:31 fizzie: Yes, probably that would have helped. 13:37:22 [Definition:] int is ·derived· from long by setting the value of ·maxInclusive· to be 2147483647 and ·minInclusive· to be -2147483648. The ·base type· of int is long. 13:37:46 What's the definition of long, then? 13:38:02 [Definition:] long is ·derived· from integer by setting the value of ·maxInclusive· to be 9223372036854775807 and ·minInclusive· to be -9223372036854775808. The ·base type· of long is integer. 13:38:03 fizzie: i also had the idea of making an explicit list of coordinates, but i am suspected my current solution is better than that (of course, if that's how int-e beat me...) and my actual problem is with munging I/O. 13:38:09 But what's the defintion of integer then? 13:38:19 [Definition:] integer is ·derived· from decimal by fixing the value of ·fractionDigits· to be 0 and disallowing the trailing decimal point. This results in the standard mathematical concept of the integer numbers. The ·value space· of integer is the infinite set {...,-2,-1,0,1,2,...}. The ·base type· of integer is decimal. 13:38:35 mroman_: It's types all the way down! 13:38:48 but what's the definition of decimal then? 13:38:57 [Definition:] decimal represents a subset of the real numbers, which can be represented by decimal numerals. The ·value space· of decimal is the set of numbers that can be obtained by dividing an integer by a non-negative power of ten, i.e., expressible as i / 10n where i and n are integers and n ≥ 0. Precision is not reflected in this value space; the number 2.0 is not distinct from the number 2.00. The order relation on decimal is the order relat 13:39:09 luckily it ends here 13:39:32 That got cut off: "-- is the order relat". 13:39:57 the only link to go here is "value space" 13:40:13 It doesn't define what "decimal numerals" are. :/ 13:40:18 *suspecting 13:40:32 oerjan: You are also a suspect, if that helps. 13:40:41 `? int 13:40:50 OKAY 13:41:07 Hm. 13:41:08 surely you mean *ith 13:42:02 -!- HackEgo has joined. 13:42:05 That's better. 13:42:24 If it looks like an int, swis like an int and quacks like an int, then it probably is an integer. 13:42:27 *swims 13:42:57 Software interrupts like an int. 13:43:17 (SWI is an ARM instruction.) 13:43:50 What if ISWIM as a duck 13:44:55 there's also negativeInteger 13:45:00 which derives from nonPositiveInteger 13:46:19 Does the positiveInteger derive from nonNegativeInteger? 13:46:34 yes 13:46:40 Good, at least it's consistent. 13:48:15 I think it should also include a separate zeroInteger type that would have a value space of 0. 13:48:51 you can define a simpleType zeroInteger 13:49:05 using 13:49:43 XML is good . 13:49:44 Would that also allow "00" like I guess integer does? 13:49:54 I'd say so. 13:50:13 but you can also add a 13:50:17 (kun (ja (näenko? i) (uimako? i) (vaakkuko? i)) (asettaa! i 'ankka)) 13:50:27 should work 13:51:29 Can you define a regex that checks if a regex is a valid regex? 13:52:42 I guess not 13:52:52 PCRE might 13:53:08 (kun (ja (näyttääkö? i) (uiko? i) (vaakkuuko? i)) (aseta! i 'ankka)), more like. 13:54:02 Is that a finnish lisp? 13:54:28 It's (when (and (looks? i) (swims? i) (quacks? i)) (set! i 'duck)) translated. 13:54:51 Ahh, joo. Kiitos. 13:56:05 Possibly "jos" for "if", though it might not be all 1:1 mappings. 13:58:26 -!- tlvb has joined. 14:02:22 yay i managed to tie henkma on http://golf.shinh.org/p.rb?A014062 14:03:02 i wonder if he found the same cheat i did 14:06:25 -!- AndoDaan has quit (Ping timeout: 248 seconds). 14:13:24 what was the cheat 14:14:07 i used a way to do combinations that only works up to a limited answer length 14:15:27 and that is basically applying newton's binomial formula in reverse 14:16:20 (the answer limit can be varied; i used e=9^40 because it was the highest number i could define that shortly) 14:16:45 if i could define a large enough e shorter, i could beat henkma. 14:16:57 -!- Sorella has quit (Ping timeout: 258 seconds). 14:17:00 but i doubt that's possible. 14:21:48 argh google is down 14:28:44 https://twitter.com/J_Arcane/status/521661553968693248 14:38:00 why would Incantation be parametrised... 14:39:04 For some reason I was thinking in terms of the IO (). 14:42:18 lambdabot: give me the goods 14:42:21 hm the first element of the output in http://golf.shinh.org/p.rb?Primey+Factory+EX is actually ill defined 14:45:10 -!- AndoDaan has joined. 14:50:45 -!- AndoDaan_ has joined. 14:51:44 -!- AndoDaan has quit (Ping timeout: 244 seconds). 14:57:54 -!- drdanmaku has joined. 15:00:46 -!- Sorella has joined. 15:01:36 -!- Sorella has quit (Changing host). 15:01:36 -!- Sorella has joined. 15:02:51 oerjan: yes indeed 15:03:27 my tying solution at the moment has mapM print$1: in it :P 15:03:51 yeah I think that's the way to go 15:05:38 oh you got A014062 15:05:55 indeed 15:06:27 i gave some spoilers above 15:06:36 (not actual code, but) 15:08:04 i suppose there's no real win to be had by trying to use 99 instead of 100 here. 15:08:20 -!- Froox has joined. 15:08:30 -!- Frooxius has quit (Read error: Connection reset by peer). 15:10:51 or wait... 15:16:27 Ah, you spoiled it well. 15:16:49 sorry, couldn't resist Phantom_Hoover 15:17:09 does that mean you got it too? 15:17:18 yes 15:18:10 And I should've thought of that. 15:18:19 > iterate(11*)1 15:18:21 [1,11,121,1331,14641,161051,1771561,19487171,214358881,2357947691,2593742460... 15:20:05 but no, I was stuck doing (n*n-n+1)*...*(n*n)/(1*...*n) 15:21:08 yeah i tried some variations on that 15:21:21 65 characters is what I had 15:22:52 There's another cheat I'd like to know, http://golf.shinh.org/p.rb?prime+numbers ... I'm at 65 characters there, too, and two people did it in 20. 15:23:24 (the mod(2^n-2)n<1 trick doesn't cut it, because one needs a test that works up to 541) 15:25:31 wait what language 15:25:35 So I believe there's another neat, most likely limited, primality test that's only 3 characters longer, but as usualy there may still be something non-optimal about the remaining code. 15:25:44 *did it in 62 15:25:54 (how did I do that, I don't know) 15:35:49 -!- boily has joined. 15:42:56 -!- AndoDaan_ has quit (Ping timeout: 255 seconds). 15:44:19 -!- oerjan has quit (Quit: Goddamn dog). 15:44:27 -!- AndoDaan has joined. 15:50:02 hmm, I should try that 15:50:17 I mean, I should apply the regex solution to that 15:50:21 to see how long it comes out 15:50:26 in perl 15:51:02 45 characters? ;-) 15:51:09 hmm, though 15:51:26 j-bot, ping= 15:51:27 b_jonas, pong: 15:51:35 [ >.541%8 15:51:36 b_jonas: 68 15:51:45 (I don't know, but it's the only really short primality test in perl that I'm aware of) 15:51:49 I could try a hardcoded bitmask 15:52:21 int-e: it's not really that much shorter than a trial division, is it now? 15:53:38 guess I'll have to try both 15:54:03 scnr: "A double bogey isn't really that many more shots than par, is it now?" 15:56:40 oh come on, isn't the test itself just something like !grep$p%$_<1,2..$p-1 15:57:10 only problem is, you can't put the prime to test in $_ for that 16:00:04 well, I'll just have to try 16:00:19 45 chars seems very short of course. there are real golfers here. 16:02:29 One golf challenge that confused me a bit is the one to print "Success". I could figure out how to print it on stderr, but that doesn't count. 16:08:22 haha, good: bash: php: command not found 16:10:26 -!- boily has quit (Quit: PROCESSED CHICKEN). 16:12:03 in fact, stderr doesn't count at all. you can produce garbage on stderr and still get accepted. 16:13:55 All the DOS COM programs I've seen there have exited with to some sort of dosemu error message, since it's shorter to end with some processor exception than it is to do a proper int 21h exit. 16:14:01 int-e: sure. and that's useful too, otherwise you'd sometimes have to ask perl to omit its stupid "mandatory" warnings 16:14:32 fizzie: what? it's a com file, you only have to do a far return to exit 16:14:34 that's one byte 16:14:39 it might still be shorter to not do anything 16:14:45 but only by one byte 16:14:55 b_jonas: yes, I assumed that was the reason. for Haskell it means that you can abort the program by a pattern match failure if that's shorter 16:14:58 which is kind of nasty. 16:15:48 b_jonas: I didn't know you can do ret to exit from com. 16:15:54 Can't say I've ever thought about it, really. 16:16:30 fizzie: Well, you can! 16:16:36 Of course every byte counts, so that might explain why they all fail. 16:16:43 fizzie: of course, it might not work if the golf does something that breaks it before that, like not restoring the stack pointer, or smashing that area of the stack 16:17:01 fizzie: it's a CP/M thing. 16:17:03 There's that, too. 16:17:04 Also in .COM, if you specify a drive letter on a command line parameter, then the drive letter will be passed in a register. 16:17:38 zzo38: a register? I thought it's only in a byte of the PSP 16:18:04 (I have written a program for adjusting the palette which used this) 16:18:09 (the PSP being the 256 byte long metadata segment DOS craetes for each program, of which 128 bytes are the command line parameters) 16:18:31 b_jonas: Actually it is passed in a register too, but only if it is a drive letter. 16:18:49 (It doesn't have to be a valid drive letter, but you do need to put a letter followed by a colon.) 16:18:57 IIRC also the FCB records are filled in from the first two arguments 16:19:23 int-e: Yes, it does that too, so that you can easily do file I/O. 16:25:15 right, drive letters are stored in AX, SP=0xFFFE and [FFFE]=0 (unless you're very short on memory). more dodgy assumptions: BX is zero, CX is 0x00FF, SI=0x0100, DI=0xFFFE, BP=0x09?? (I've read an article a while ago *somewhere* why this one is quite reliable in MS-DOS. Not so much in clones.) 16:25:58 Does it work on FreeDOS? If not, should it be fixed? 16:27:33 And some intros assume that PSP word 1 is 0xA000, when they do thingf like les dx,[bx] in order to access the VGA graphics memory via es: 16:28:50 (some even manage to make use of the resulting dx=0x20CD value) 16:29:13 int-e: on anagolf, you can assume that some of these things are deterministic, and find out their values easily 16:29:21 And I don't know how much of this is true for Freedos. I would actually expect that it works. 16:29:40 And if it doesn't work, then you should fix it please. 16:30:22 -!- AndoDaan has quit (Ping timeout: 240 seconds). 16:31:27 for anagolf purposes, does perl really not have a built-in variable with a one-character name that starts with a numeric value of 1 16:31:36 or is it only that I can't find that variable? 16:32:21 apparently there is no such thing 16:32:47 hmm wait 16:32:50 my test is wrong 16:33:34 ok, oerjan has the same basic formula for "count the overlap" but completely different implementation for most of the rest... interesting. 16:37:01 @tell oerjan you may be interested in comparing your program to the second to the second (third, chronologically) version in http://sprunge.us/aRFh - there's some resemblence. 16:37:01 Consider it noted. 16:37:34 there's a variable starting at 2, at 256, at the current time, at the pid, at the uid and gid and euid and egid which are 1000 on anagolf, at 60, and at 5.014002 16:37:46 and there's one that gives an error when numified (scary) 16:40:12 -!- AndoDaan has joined. 16:47:37 @tell oerjan but I all my versions use unwords, and all but the very first compute a list of rectangles from the strings ["ab","ac","bc","abc"], so there's no obvious smaller combination of our programs. tricky :) 16:47:37 Consider it noted. 16:50:29 Heh, I wrote a mostly unoptimized Z80 mail merge, and it's three bytes shorter than the Perl. 16:50:52 fizzie: yes, it's quite short 16:51:12 -!- S1 has quit (Quit: S1). 16:51:16 All those one-byte instructions. 16:51:45 incidentally, will anagol want to add ruby 2.1 in the future? 16:51:58 as a separate language from ruby 1.8 I mean 16:52:32 Incidentally, is it a bit of a shame this channel is turning into some sort of #anagol-adjunct? :) 16:53:21 fizzie: it's a change from the #lens-exile and #haskell-sidechannel that it usually is :P 16:53:42 fizzie: I see you sourced a replacement finn 16:55:11 elliott_: If you mean J_Arcane, I had nothing to do with that, but it's certainly very coincidental. 16:55:26 fizzie: no, I mean the one from today :p 16:55:28 :D 16:55:30 wait, wrong channel 16:55:52 so many new finns even the finns can't keep track of them 16:55:56 -!- MoALTz has joined. 16:55:57 elliott_: Oh, right, yes; but I had nothing to do with that either, as far as I know! 16:56:30 (And I won't be hearing anything certain about my eventual destination until maybe Friday or next week, so it's not entirely sure a replacement is even necessary.) 16:56:30 fizzie: right. there is no finnish cabal and you haven't been using your shady demoscene connections behind the curtain. you're an honest person & I believe you 16:56:46 well, you know what they say, the more finns the better (only finnish people say this) 16:57:17 I assure you, I was as surprised as $anyone about this. 16:57:27 I can only assume we had some good SEO keywords in the esowiki or something. 16:57:52 pfft, propping up your own wiki administration skills too 16:58:28 "Any changes to this wiki are automatically announced on the channel, which makes it a nice way to keep track of what's new." this definition of "nice" needs to take into account seeing every other message here too 16:59:15 And if you don't like it you can turn it off like I have done, too. 16:59:21 It's the "accurate" sense of the word "nice". 16:59:54 zzo38: all the other messages? yes I suppose you could, the channel would be pretty nice then 17:00:31 Well, you can filter out whatever messages you want, including all of them if you want. (Some IRC servers even have a command to filter out all channel messages) 17:01:11 Including this one; put user mode +D to ignore all channel messages. 17:02:31 [wiki] [[TrybblePusher]] N http://esolangs.org/w/index.php?oldid=40603 * Viznut * (+4957) Created page with "'''TrybblePusher''' is a virtual machine designed (but not yet implemented) by [[user:viznut]] in 2014. It is superficially similar to [[BytePusher]] but operates on trybbles ..." 17:02:56 yay, new VM esolang 17:03:43 [wiki] [[User:Viznut]] N http://esolangs.org/w/index.php?oldid=40604 * Viznut * (+109) Created page with "[http://www.pelulamu.net/ibniz/|IBNIZ] [[TrybblePusher]] [http://countecomplex.blogspot.com|Countercomplex]" 17:04:39 viznut: external links are [url text] without the |, btw; mediawiki syntax is a mess 17:04:47 [wiki] [[User:Viznut]] http://esolangs.org/w/index.php?diff=40605&oldid=40604 * Viznut * (+0) 17:06:10 [wiki] [[TrybblePusher]] M http://esolangs.org/w/index.php?diff=40606&oldid=40603 * Viznut * (+25) 17:06:58 [wiki] [[TrybblePusher]] http://esolangs.org/w/index.php?diff=40607&oldid=40606 * Viznut * (-36) 17:07:41 Very 3. 17:08:18 yeah, it seems it was too much time before i used mediawiki 17:08:46 *since 17:09:00 better, it means you've been free of it long enough to forget 17:12:33 now that i'm on it, i might to create the ibniz article as well 17:13:42 I'm surprised nobody had written an article on it already 17:16:29 wait, does the z80 have a built-in way to mask interrupts, like the 6502 and the 8086 does? it doesn't have the 8086 interrupt mask flag, but maybe some other way? 17:17:33 i thought DI/EI are the z80 instructions to disable/enable interrupts 17:17:42 I see 17:18:16 it seems that the wiki lacks a category for virtual machines as well 17:18:48 there is [[Category:Finite state automata]], btw 17:20:52 i somehow failed to add that category 17:21:57 it's paid DLC only (actually because "Cateogry") 17:23:40 b_jonas: It has two "interrupt flip-flops", IFF1 and IFF2. DI and EI set/reset both, IFF1 controls whether maskable interrupts are handled, and IFF1 is copied to IFF2 when an NMI occurs (and a RETN instruction copies it back from IFF2 to IFF1). 17:25:37 fizzie: I see. is there a way to read these? 17:25:44 b_jonas: As a rather curious minor feature, IFF2 is also copied to the parity flag whenever "ld a, i" or "ld a, r" is executed. I was trying to use di/ei to save some semi-permanent state in IFF2 on anagolf (under the assumption that there will be no interrupts anyway), but it ended up not saving any bytes because the only way to test IFF2 (a) takes two bytes and (b) clobbers a. 17:25:46 as in, for saving and restoring 17:26:16 I see 17:26:18 I don't think there's any way to read IFF1 directly, but it's supposed to be equal to IFF2 everywhere except when an active NMI is being handled. 17:26:27 ah, I see 17:26:31 well, that should be enough 17:26:50 [wiki] [[IBNIZ]] N http://esolangs.org/w/index.php?oldid=40608 * Viznut * (+397) Created page with "'''IBNIZ''' (Ideally Bare Numeric Impression giZmo) is a stack-based audiovisual virtual machine and its related programming language created by [[user:viznut]] in 2011. [htt..." 17:27:07 [wiki] [[User:Viznut]] http://esolangs.org/w/index.php?diff=40609&oldid=40605 * Viznut * (-29) 17:27:55 [wiki] [[TrybblePusher]] M http://esolangs.org/w/index.php?diff=40610&oldid=40607 * Viznut * (+35) 17:28:51 (And in the NMI handler IFF1 is 0 anyway, since maskable interrupts are automatically disabled when an NMI is acknowledged, after copying the old value to IFF2, so probably providing a way to test IFF2 is enough.) 17:29:46 -!- AndoDaan_ has joined. 17:29:53 sure, I'm mostly thinking (outside of golf) on what a function that wants to temporarily disable interrupts but might be called from an interrupt routine would have to do 17:30:11 the NMI is irrelevant, you could just say the NMI routine shouldn't call anything like that 17:30:56 In that case I guess just a fixed DI and EI-if-IFF2-was-1-before-DI sounds fine. 17:31:12 -!- AndoDaan has quit (Ping timeout: 248 seconds). 17:31:24 fizzie: yes, but that comes out a bit long and slow then, because you have to save A and stuff 17:31:41 oh no 17:31:45 actually that doesn't matter 17:31:51 you probably have to save A in such a function anyway 17:31:59 so that's not an extra 17:32:27 The rst {0,1,2,3}{0,8}h instructions seem pretty handy for golfing, but also have this effect of "discretizing" the solutions, because you need to align whatever you want to call at an 8-byte boundary. 17:32:59 fizzie: well, you can't expect too much freedom from one byte long instructions 17:33:09 without any kind of setup 17:35:17 -!- shikhin has joined. 17:57:06 -!- FreeFull has joined. 18:00:08 -!- sebbu has quit (Read error: Connection reset by peer). 18:00:38 -!- Sprocklem has joined. 18:00:43 -!- Sprocklem has quit (Signing in (Sprocklem)). 18:00:43 -!- Sprocklem has joined. 18:01:30 -!- sebbu has joined. 18:01:59 -!- nortti has changed nick to lawspeaker. 18:02:02 -!- sebbu has quit (Changing host). 18:02:02 -!- sebbu has joined. 18:02:20 -!- lawspeaker has changed nick to nortti. 18:07:24 Well, would you look at that, teebee's Burlesque A006520 was in fact the kind of #sL[-based thing I was trying, I just completely missed the 256g_ thing in place of my J0j.-&& -- I just made a slow-but-fast-enough 20B based on that. 18:10:06 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 18:10:22 g_ is gcd? 18:11:21 Yes. 18:11:43 Hadn't come across the builtin, and for some reason didn't think to look for it. 18:12:22 same in the Haskell solution? :) 18:13:52 @tell oerjan henkma's A006520 solution comes as a surprise to me, I didn't think of putting the gcd inside the scanl. 18:13:52 Consider it noted. 18:14:13 omg wat https://gitlab.brokenpipe.de/stettberger/avremu/tree/master 18:14:34 "An AVR Emulator written in pure LaTeX" 18:15:10 int-e: That's just what I wrote in Forth except translated to Haskell, I didn't think about it very seriously. Though I distinctly recall looking at the Hackage Prelude documentation, seeing gcd, going "hmm, there's gcd", with no bells ringing. 18:15:13 Someone has written a BASIC interpreter in TeX. 18:16:35 I have also written Easter calculation (and many other date calculations) in TeX, and even chess game. 18:16:49 I may've seen your chess game. 18:17:28 TeX is a really powerful typesetting system, and is also probably the most portable programming language which can work same way in any computer and in past and future too. 18:19:13 -!- password2 has quit (Ping timeout: 258 seconds). 18:21:11 J_Arcane: Have you? It can do many chess variants too. 18:23:07 zzo38: I was thinking about that kind of portability at one point, and wrote a list 18:23:11 let me pull it up 18:24:49 zzo38: here's my list: http://dpaste.com/3WN0DVW 18:25:13 hmm, that list is completely broken 18:25:17 it doesn't even mention javascript in browsers 18:25:25 maybe ignore it then 18:25:50 oh, it does 18:25:56 only it says "firefox" instad of javascript 18:26:05 zzo38: After I switched to LyX for my publishing I went poring through the repos for game-related stuff, and found several whole games implemented in pure LaTeX. 18:26:15 I think there was even some kind of text adventure system. 18:26:53 Yes, I suppose there certainly could be. 18:28:20 b_jonas: Note that Plain TeX is portable to all systems that have it. Any Plain TeX file can be used in even future and past systems; the one thing that can go wrong is running out of memory, which is a fatal error. 18:28:42 (The amount of memory available is implementation-dependent.) 18:28:51 zzo38: yes, I know 18:29:04 it is quite portable indeed 18:29:23 So it has difference in that way from the other things listed (except for Plain METAFONT, which has the same portability). 18:31:05 zzo38: sure, but of course you can write quite past and future portable programs in C too if you're careful. and latex is somewhat past and future compatible too. 18:31:30 but yes, plain tex is probably the most portable among these 18:34:50 well, technically, plain metafont is probably slightly more portable than plain text, but that's minimal, and it's also a worse language because of the very bad IO support. 18:36:27 But could you write a C in TeX? :D 18:36:43 J_Arcane: what? 18:37:23 oh, you mean a C interpreter? 18:37:45 Yeah. I 18:38:11 probably not in TeX only, because of the lack of some IO stuff, plus it would be technically quite difficult to make it efficient, and you'd probably not be able to run C programs that use more than very little memory 18:39:34 Sounds about right. The clock rate of that Latex emulator is in the KHz after all. 18:40:20 J_Arcane: BASIC is a bit easier if you don't do many pointer stuff, though array access might still cause difficulties 18:40:34 hmm, http://esolangs.org/wiki/Brainfuck_implementations lacks a TeX implemention?! 18:40:58 I also wrote this TeX program: \newcount\-\let~\advance\day0\loop~\-1~\day1~\mit\ifnum\-=3\-0Fizz\fi\ifnum\fam=5Buzz\rm\fi\ifvmode\the\day\fi\endgraf\ifnum\day<`d\repeat\bye 18:41:04 -!- boily has joined. 18:41:07 True. Pointers are tricky beasties; probably the same reason why the Racket C #lang is only a toy/demonstration version. 18:41:16 heh, KHz range brings me back some memories 18:41:46 Can you understand this program? 18:42:15 FizzBuzz using the date as an incrementer? 18:42:22 that's a simple hardware cpu with 128 memory, and the webpage says http://www.vttoth.com/CMS/index.php/projects/47 which says "this machine has less than one tenth of a percent of the speed ... of the memory of a modern [in like 2000] Pentium system" 18:42:45 I wrote an emulator in ruby, and decided that if that hw is only 1/1000 slower than a computer, my emulator is probably slower 18:42:50 fizzie: can you make you blsq program output abacabadabacaba... instead? 18:42:58 but it turns out my emulator is probabyl faster, that 1/1000 is just an understatement 18:43:03 J_Arcane: It does reuse that register in fact, as well as some other registers previously used for other purpose. 18:43:06 that hardware is actually much slower 18:43:33 b_jonas: Seeing a 4-bit CPU makes me think of the multiple CPUs built in Powder Toy. 18:43:54 You want to try slow, try emulating individual electrons/light-pulses one at a time in a particle physics engine. :D 18:44:00 zzo38: hmm, I don't know what \day does 18:44:34 b_jonas: It is just a built-in count register, initialized with the current day of the month (although this program reinitializes it). 18:45:06 zzo38: I see 18:45:29 yea, \showthe\day says 13 18:46:42 and you use \mit as another such register. ouch 18:46:57 do these like have the shortest names or something? 18:47:00 Actually, \mit isn't a register. 18:47:04 yes 18:47:08 but it's still a count-like thing 18:47:33 well, they're certainly shorter than \finalhyphendemerits 18:47:50 ah, fizbuzz! 18:47:50 No, it isn't. It is used to change the current font family in math mode (the font won't change if it isn't in math mode). 18:49:01 um yes, but so? can't you still set it a count, as long as it's between 0 and 16? 18:49:16 http://sprunge.us/JAPV well that's just great 18:49:17 Perhaps you mean the \fam register? 18:49:19 oh 18:49:21 I see 18:49:25 so \mit assigns to \fam 18:49:27 makes sense 18:49:30 brilliant 18:49:50 -!- Froox has changed nick to Frooxius. 18:49:59 now I have to understand the \ifvmode part, that's probabyl some trick 18:50:15 and the \endgraf 18:50:25 -!- AndoDaan_ has changed nick to AndoDaan. 18:50:42 The \endgraf means the same as \par (or a blank line), but \par cannot be used here. 18:50:44 you don't seem to output anything anywere, so what changes away from vertical mode? 18:50:54 ah! 18:51:02 because \long 18:51:28 oh right, the Fizz and Buzz are output 18:51:44 so they change to horizontal mode 18:51:45 makes sense 18:51:46 nice 18:51:58 so this will output to successive lines in the dvi output 18:52:02 nice hack 18:52:36 100 lines, that probably needs more than one page, but no problem 18:52:44 -!- Lorenzo64 has joined. 18:53:34 and why is the \newcount worth? is there no other short enough register, when it appears three times? 18:53:41 right, that's believable 18:53:42 ok 18:53:53 thanks, this is an interesting piece of code 18:57:18 Another hack I have seen somewhere else, is if you want to cancel a brace that comes after a macro expansion, you can write: \romannumeral-` 18:57:33 -!- aretecode has quit (Quit: Toodaloo). 19:05:24 -!- S1 has joined. 19:07:57 I have read some people wanted multiple kind of marks (apparently Knuth wanted to add it in, but didn't); I have managed to imitate having multiple kind of marks by using insertions; these insertions contain only marks and page breaks. 19:09:47 -!- shikhout has joined. 19:12:59 -!- shikhin has quit (Ping timeout: 272 seconds). 19:44:52 -!- coppro has quit (Ping timeout: 245 seconds). 19:47:48 -!- MoALTz has quit (Read error: Connection reset by peer). 19:57:12 -!- MoALTz has joined. 20:01:06 -!- Patashu has joined. 20:06:49 O, this calendar program I did with TeX is implementing not only the Julian and Gregorian calendar, but also Discordian. You can assign special days using such specifications as "\Discord72.", "\Easter \Before\Fri", "\First\Mon\Sep", "\Oct31", "\Easter \Minus46", "\May24 \BeforeOn\Mon", etc. Ordinal dates are also implemented. 20:08:55 There are many presets implemented: \DiscordianTraditional \DiscordianModern \CanadaNationwideStatutoryHolidays \CanadaCommon \Alberta \BritishColumbia \Manitoba \NorthwestTerritories \Nunavut \Ontario \PrinceEdwardIsland \Saskatchewan \Yukon \UnitedStates \Japan \EnglishNames \CharlemagneNames \GermanNames \JulianNames \OldTurkmenNames \NewTurkmenNames \OldZorkNames \NewZorkNames 20:09:21 there are multiple discordian calendars? 20:09:57 (and not \Quebec???) 20:10:13 I forgot Quebec, as well as a number of other things, sorry. 20:10:43 If I know the special days for Quebec I should put it in. 20:12:29 The \DiscordianModern command just adds some more special days on to \DiscordianTraditional, though. However you can specify the Julian-based or Gregorian-based Discordian calendar by typing \julian or \gregorian and then type \discordian. 20:13:37 -!- S1 has quit (Ping timeout: 244 seconds). 20:14:43 -!- S1 has joined. 20:15:15 I don't think we have that many special days relatively to the other provinces and territories. Fête des Patriotes or something, maybe? 20:15:34 -!- AndoDaan has quit (Ping timeout: 272 seconds). 20:15:58 http://en.wikipedia.org/wiki/National_Patriots%27_Day 20:16:43 (and obviously the St-Jean on June 24.) 20:21:33 -!- coppro has joined. 20:23:37 -!- Patashu has quit (Ping timeout: 245 seconds). 20:24:20 How can you hand-code in hex codes the .EXE program that can read the first byte from stdin and then to terminate immediately with that value as the exit code? Also, how to do on Linux with ELF? 20:25:16 The well-known http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html might help in the latter, though it only terminates with a hardcoded value by default. 20:26:35 I mean, you can always assemble, and then hexdump. If you for philosophical reasons want to avoid an assembler, that'd be another thing. 20:27:02 If it is a really small program then probably you don't need an assembler, necessarily. 20:33:24 For x86-32 Linux, I think something like http://sprunge.us/POMA would work as the body of the program. 20:33:57 zzo38: exe? a com program is much easier 20:34:36 b_jonas: But, I want to write Windows program; if it is COM then it doesn't work in 64-bit Windows. 20:35:25 fizzie: Can you explain what these system calls are meaning in here? 20:36:24 zzo38: ok. I don't really know much about how exe header works, I've only ever made one with an assembler or compiler. 20:36:35 hmm, I may have a link somehow though 20:36:36 First one is a 'read' (eax=3) from fd 0 (ebx=3) to memory (pointed by ecx) of length 1 (edx=1), and the second one is a 'exit' (eax=1) with the exit code in ebx. 20:36:45 damn, where is it 20:37:17 (You could probably omit the "push eax" and do "mov bl, [esp]" instead just fine.) 20:37:29 there was a really good webpage with lots of information about programming dos, including exe 20:37:49 zzo38: wait, isn't that a dead herring? you can't run DOS 16-bit real mode exes either on 64-bit windows 20:38:02 COM vs EXE doesn't matter, it's real vs protected mode that does 20:38:09 b_jonas: I know, but I want to make a Windows executable file 20:38:29 http://sprunge.us/SXeg -- seems to work. 20:38:33 zzo38: it's because of a CPU limitation: x86_64 long mode doesn't do virtual 8086 mode (real mode like segments) so it has to be emulated 20:38:46 zzo38: what kind? a 16 bit or 32 bit or 64 bit one? 20:39:34 b_jonas: 32-bits 20:39:42 zzo38: dunno then 20:40:08 I definitely don't know how those work, I've only ever created such executables with compilers, and don't know how the starup works 20:40:11 sorry 20:40:48 I've written (32-bit Windows PE) EXE headers manually, based on resources in the internet, but didn't keep any links around. 20:40:49 (I don't know about 16 bit or 64 bit either) 20:41:12 fizzie: did you write full working exes that way, possibly using an assembler? 20:41:31 b_jonas: I forget the details. It was some sort of an exe-mangler tool I wrote. 20:42:09 I See 20:42:09 b_jonas: Some sort of packer-encrypter dealie, you know, that sort of stuff. 20:42:17 yeah 20:42:51 Windows is rather unfriendlier when it comes to raw syscalls, you're really supposed to call functions from DLLs instead, but that's possibly not a problem. 20:43:00 these days I'm not really interested about this kind of thing 20:43:01 http://www.phreedom.org/research/tinype/ looks like a good starting point. 20:43:24 I may want to do low level assembled stuff, but only embedded into proper compiled programs with proper good practices 20:43:43 int-e: It seems to be consciously emulating that ELF page. 20:43:44 like, individual functions written in assembler only, called from a normal C program 20:43:59 fizzie: could be, could be. 20:44:16 Well, I mean, it says so. "In this, I have followed the example of the famous Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux." 20:44:26 and when I learn about the theory of how this kind of low level thing works deep down, I'm more interested about linux than windows 20:44:29 I try to avoid windows somewhat 20:44:44 I have to work with windows at job, but don't do many system-dependent stuff there if I can help it 20:45:01 -!- AndoDaan has joined. 20:45:12 Well, I should try to work it on both Linux and on Windows (and also ReactOS). 20:45:25 as in, I try to write stuff as if I wrote linux programs then ported them to windows, only omit the parts I need to throw away during porting 20:45:29 fizzie: it's a good example to follow in any case :) 20:46:05 It also has good links for the PE details, apparently. 20:46:51 well, admittedly I didn't do much low level stuff in DOS either. I have very few programs written in assembler directly, and they're not very good programs either 20:47:16 I think it's nice how well that PE stuff parallels the ELF stuff, what with the interlacing of headers and all that. 20:50:07 (Though a bit more so, the last versions seem to have 4 different headers coexisting in the same bytes.) 20:50:28 this is like the most useful program I ever wrote for DOS, and it doesn't do much: http://www.math.bme.hu/~ambrus/pu/stickf.com 20:50:42 it's a COM that changes the 9x16 VGA font, with the new font built in 20:52:46 (it's 1788 bytes long, but could probably be compressed to half or third that size) 20:54:11 E.g. there's a dword of the executable that is the e_lfanew of the MZ header, SectionAlignment from the PE optional header, PointerToLinenumbers field of the PE code section header and TimeDateStamp of the import table. 20:54:33 (try it if you dare) 20:55:29 Seems handy when you need the sets of integers and real numbers and whatnot in your command prompt. 20:56:25 -!- Frooxius has quit (Quit: *bubbles away*). 20:56:46 I compiled that one .com file with GCC, though it only worked in dosbox with no segment size checks. 20:56:55 (Still, that could've been fixed relatively easily.) 20:57:18 It was a non-crosscompiler Linux GCC and all, too. 20:57:35 -!- Frooxius has joined. 20:58:16 http://sprunge.us/KYJZ 20:58:36 fizzie: wait what? 20:58:44 a non-crosscompiler linux gcc 20:58:46 uh 20:58:50 scary 20:59:08 -!- boily has quit (Quit: ANYWHERE CHICKEN). 20:59:18 b_jonas: You just tell it to link with --oformat=binary linker flag, and do -Ttext=0x100 to kinda-fake "org 100h", and put asm(".code16gcc") on top so that GAS knows to assemble in bizarro mode. 20:59:30 fizzie: I see 20:59:52 that's really fragile, but a nice hack 20:59:55 Bizarro mode being "this is 32-bit code out of GCC, but assemble it so that it'll sorta-work in a 16-bit segment by putting size-override prefixes in front of about every instruction". 21:00:17 -!- AndoDaan has quit (Ping timeout: 248 seconds). 21:00:32 Written like that, it ends up using offsets beyond the segment limits, so it'll only work in dosbox or (presumably) some sort of unreal mode environment. 21:00:44 like, as fragile as running compiled code with that old x86 interpreter ioccc entry that is very limited 21:01:15 not the recent one which interprets most of x86 but cheats because it stores tables in the large "rom bios" file that are needed to interpret x86 instructions 21:01:19 but that old one 21:02:04 -!- AndoDaan has joined. 21:02:13 I don't think the new one should have won. It's so cheating. 21:03:06 It was less cheating than what I expected from all the indignation (though I've entirely forgotten the details), but I can certainly understand the objections. 21:06:44 -!- b_jonas has quit (Ping timeout: 258 seconds). 21:09:46 -!- Bicyclidine has joined. 21:18:49 -!- b_jonas has joined. 21:25:05 -!- oerjan has joined. 21:25:53 @messages- 21:25:53 int-e said 4h 48m 52s ago: you may be interested in comparing your program to the second to the second (third, chronologically) version in http://sprunge.us/aRFh - there's some resemblence. 21:25:53 int-e said 4h 38m 16s ago: but I all my versions use unwords, and all but the very first compute a list of rectangles from the strings ["ab","ac","bc","abc"], so there's no obvious smaller combination of our programs. tricky :) 21:25:53 int-e said 3h 12m 1s ago: henkma's A006520 solution comes as a surprise to me, I didn't think of putting the gcd inside the scanl. 21:33:37 -!- AndoDaan has quit (Ping timeout: 276 seconds). 21:37:20 -!- AndoDaan has joined. 21:41:04 -!- HackEgo has quit (Ping timeout: 272 seconds). 21:43:52 @tell int-e your third version resembles the one i had before i realized o would be zipWith if i changed from tuples to lists 21:43:53 Consider it noted. 21:59:32 -!- nys has joined. 22:00:52 -!- Bicyclidine has quit (Ping timeout: 255 seconds). 22:01:07 -!- Bicyclidine has joined. 22:06:24 @tell int-e after shortening my own version slightly by flattening the list similarly to you, i conclude that your version is better on _both_ IO and math side 22:06:24 Consider it noted. 22:07:41 -!- AndoDaan_ has joined. 22:07:47 -!- Bicyclidine has quit (Ping timeout: 272 seconds). 22:08:08 -!- Bicyclidine has joined. 22:09:46 -!- AndoDaan has quit (Ping timeout: 240 seconds). 22:13:39 -!- Somelauw has joined. 22:13:51 is this esoteric? 22:13:59 esoteric what? 22:14:19 `welcome somelauw 22:14:26 hm 22:14:34 well, programming languages, anyway 22:14:48 fizzie! 22:14:59 And Roald Dahl. 22:15:12 (alternatively Gregor) 22:15:15 like brainfuck, whitespace, lolcode, c--, things like that? 22:15:19 yep 22:16:25 [-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.----.----------.++++++++++++++++++++++++. 22:16:28 -!- LordCreepity has quit (Quit: Leaving). 22:16:40 ^bf [-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.----.----------.++++++++++++++++++++++++. 22:16:49 wat 22:16:55 WHO KILLED ALL OR BOTS 22:17:00 @bf [-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.----.----------.++++++++++++++++++++++++. 22:17:00 okay 22:17:01 ^who 22:17:06 these are supposed to be bot commands, if you're wondering, Somelauw 22:17:07 *OUR 22:17:11 wow 22:17:24 except trusty lambdabot 22:17:24 oerjan: the android killed all the ordroods hth 22:17:29 ordroids 22:17:36 androids 22:17:38 sigh 22:17:51 you get the idea 22:17:53 you're such a drood 22:18:46 looj i'm typing on a phone 22:18:53 @bf -[+.] 22:18:53 Done. 22:18:58 and it was an acceptable pun 22:19:15 @bf +[.+] 22:19:15 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij... 22:19:26 !bfjoust hi < 22:19:27 Lymia.hi: points -46.00, score 0.00, rank 47/47 22:19:32 We have a living bot! 22:19:34 @bf -[.-] 22:19:34 ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987654... 22:19:36 at least the important things are running 22:19:55 plus a logbot 22:20:08 256 wrapping at least 22:21:10 ^welcome 22:21:14 @welcome 22:21:14 Unknown command, try @list 22:21:24 ok whatever just imagine you were welcomed by a robot 22:21:45 hello 22:21:49 sup 22:22:03 what are you favourite esoteric langs? 22:22:06 your* 22:22:12 tervetuloa Somelauw 22:22:34 eodermdrome, funge, gravity 22:22:43 also throat singing 22:23:58 Bicyclidine: spivak is such a tiny book 22:24:09 i expected it to be big like spivak 22:24:14 when it wsa recommended to me it was named as "smaller spivak" 22:25:50 shorter spivak, actually 22:26:10 if it makes you feel better, that thing i showed a picture of the cover of, with the albatrosses, is several volumes 22:26:19 shachaf: no soy finish 22:27:48 Bicyclidine: did you know derivatives of computable real functions are uncomputable but integrals aren't 22:28:01 -!- AndoDaan_ has quit (Ping timeout: 260 seconds). 22:28:03 "oops double negative" 22:28:31 that kind of surprises me given how hard integration is 22:28:43 i forget, are computable real functions always smooth? 22:29:54 basically, derivation is easier symbolically, integration is easier numerically 22:30:04 yeah that's true 22:30:15 i do love me some ball and disk integrators 22:31:23 oerjan: differentiation is easier on expressions, integration is easier on functions? 22:32:06 well, integration makes functions smoother 22:32:16 whereas differentiation sometimes gets you some freaky discontinuous bullshit 22:32:30 -!- conehead has quit (Quit: Textual IRC Client: www.textualapp.com). 22:33:05 imo who cares about uncomputable functions anyway 22:34:45 well, knowing the zeroes of a function is nice sometimes 22:39:36 next you'll want to decide any predicate about the reals 22:55:18 -!- Phantom_Hoover has joined. 23:04:02 -!- AndoDaan has joined. 23:05:13 -!- Bicyclidine has quit (Ping timeout: 255 seconds). 23:06:40 -!- t1vb has joined. 23:06:43 -!- S1 has quit (Quit: S1). 23:09:28 -!- tlvb has quit (Ping timeout: 260 seconds). 23:11:50 -!- t1vb has changed nick to tlvb. 23:13:39 -!- Bicyclidine has joined. 23:17:22 Bicyclidine: so what's with the whole chain rule = functoriality thing 23:18:11 i have never heard that word in my life 23:18:15 or seen it 23:18:53 the chain rule apparently expresses the fact that differentiation is a functor 23:19:14 on uh, what category. functions? 23:19:50 that's the kind of thing i was hoping you would clarify 23:19:57 oh 23:20:01 hm, wikipedia says "the functor sends each space to its tangent bundle and it sends each function to its derivative" 23:20:23 oh ok 23:20:32 uh how does that work with chain rule, hrm 23:20:35 but what does D(f . g) = Df . Dg mean here 23:21:49 -!- aretecode has joined. 23:22:36 -!- MoALTz_ has joined. 23:23:48 kind of wish i was high, so i'd have an excuse not to think about what composing tangent bundles means 23:24:28 what is the best way to get a number in brainfuck. i know i can do print("," + 48 * "-"), but that only works for a single digit and it doesn't do any error checking. 23:24:31 well, it's composing morphisms between tangent bundles, presumably? 23:24:51 since you're an expert in tangent bundles you probably know what those are 23:25:02 well i know what a tangent bundle is yeah 23:25:09 shachaf: https://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant 23:25:33 -!- MoALTz has quit (Ping timeout: 255 seconds). 23:26:12 ^ord a 23:26:13 oops 23:26:45 oerjan: which question is that answering 23:28:07 shachaf: if you think of Df and Dg as the jacobian matrices, then i think Df . Dg is just matrix multiplication (equivalently, composition of linear functions) 23:28:37 basically at each point x, Df is a linear function between the tangent spaces of x and f(x) 23:28:58 yes 23:29:13 but how do you end up with f'(g(x))*g'(x) 23:29:36 also do you have an analogy for the "holes in types" kind of derivative 23:29:45 in which the chain rule is much more intuitive 23:30:17 Somelauw: http://esolangs.org/wiki/Brainfuck_algorithms#Print_value_of_cell_x_as_number 23:30:32 oerjan: i want the exact opposite of that 23:30:48 not to print, but store a number in cell x 23:31:08 oh 23:31:44 Somelauw: if fungot was here i think it has some command that does that. 23:31:55 and which is written in brainfuck 23:32:15 Perhaps I'm missing something obvious. 23:33:25 shachaf: my intuition for holes in types is much weaker 23:35:05 hm... 23:35:17 oerjan: well, if you put a hole in F (G a), given that you know how to put holes in F and G, then you start with F' (G a) -- i.e. take out one G a from the F (G a) -- but then you took out too much, so you add to that a G a to end up with (F' (G a), G' a) 23:35:26 i mean a G' a 23:35:40 since you just wanted to take one a out of the whole thing 23:35:49 Dg(x)(t) = t*g'(x), Df(g(x))(u) = u*f'(g(x)) 23:36:16 that is, Dg(x) is a linear function etc 23:36:55 D(f . g)(x)(t) = t*(f . g)'(x) 23:37:53 and D(f . g) = D(f) . D(g) becomes D(f . g)(x)(t) = D(f)(f(x))(D(g)(x)(t)) 23:38:04 i think 23:38:31 chain rules is something like: [f(g(x + dx)) - f(g(x))] / dx = [f(g(x + dx)) / g(x + dx)] * [g(x + dx) / dx] = f'(g(x)) * g'(x) 23:38:54 Somelauw: we all know the simple version. shachaf is trying to understand it via category theory. 23:38:54 they're talking about it in the context of differential geometry 23:39:01 or category theory, whatever 23:39:16 so you're taking derivatives of mountains or something 23:39:16 esoteric mathematics? 23:39:21 of course! 23:39:25 well, it's common in physics 23:39:29 but yeah it's weird i guess 23:40:40 shachaf: and my last line becomes t*(f . g)')(x) = t*g'(x)*f'(f(x)) if you fill in the previous ones 23:40:50 *-) 23:41:30 now mind you, this is my intuition, i don't recall actuall reading this but i'm making up how i think this must work 23:41:34 *+y 23:42:50 oerjan: hm 23:42:52 er oops 23:43:21 s/D(f)(f(x))/D(f)(g(x))/ etc. 23:44:12 shachaf: so you can think of the derivative f'(x) as just the slope of the actual linear function between the tangent spaces (which are just R here) 23:44:35 and the latter is Df(x) 23:45:22 and if you have R^n spaces you get jacobian matrices instead of slopes 23:46:56 I think the R^n view is probably more reasonable anyway. 23:47:38 (imo saying "matrix" when you mean "linear function" is kind of silly) 23:47:56 well ok 23:48:10 but you need matrices to do numerical calculations 23:48:11 yeah fuck matrices 23:48:17 that is my contribution to this conversation 23:48:54 oh, i guess differentials should make this easy or something, but i barely get them 23:49:30 which is what oerjan said probably whatever 23:50:25 * pikhq computes the eigenfuck matrix 23:51:32 https://en.wikipedia.org/wiki/Pushforward_(differential) seems relevant 23:52:34 this is in like the first fives pages of burke but i still don't remember it. i need homework 23:54:12 my formal math education was somehow devoid of differential geometry 23:54:37 no one at the institute really cared about it, i guess. 23:54:52 how cruel 23:55:22 Q: Why is Khans of Tarkir useful for differential geometry? 23:55:23 i only care because it turns out calculus on manifolds is nice for when you deal with manifolds which is a lot 23:55:28 iunno this pure math shite 23:55:30 A: Because it's a wedge product! 23:56:06 shachaf: i'm not even going to look up that reference 23:56:17 http://en.wikipedia.org/wiki/World_Standards_Day meanwhile in prewritten jokes 23:56:28 https://en.wikipedia.org/wiki/World_Standards_Day 23:56:46 -!- MDude has joined. 23:58:30 * oerjan has this feeling he hasn't seen MDude in a while 23:59:15 I do tend to not appear for a while at places now and then. 23:59:42 fiendish! 23:59:55 At times, it's due to being busy reappearing elsewhere.