←2014-10-12 2014-10-13 2014-10-14→ ↑2014 ↑all
00:04:12 <Sgeo> 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 <Sgeo> Hmm, I assume [nil isEqual: nil] is NO :/
00:16:30 <Sgeo> I should check
00:19:32 <Sgeo> Well, I got (null) when I tried to NSLog it from http://www.compileonline.com/compile_objective-c_online.php
00:22:25 <elliott_> presumably it's nil, not NO
00:25:30 <Sgeo> 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 <elliott_> presumably because (int) NULL is 0
00:28:55 * Sgeo wonders how OS X compares to something like KDE
00:31:45 <Sgeo> " Essential to [AppleScript's] functionality is the fact that Macintosh applications publish "dictionaries" of addressable objects and operations."
00:32:01 <Sgeo> Hmm, interesting... is DBUS something simiilar on Linux?
00:37:35 <elliott_> yes
00:38:46 -!- ais523 has joined.
00:39:37 <elliott_> note that KDE doesn't do its own thing any more, it just uses dbus
00:39:42 <elliott_> afaik
00:40:09 <ais523> hi
00:40:13 <elliott_> hi
00:43:34 -!- AndoDaan has quit (Ping timeout: 250 seconds).
00:43:37 <Bike> molecular steel
00:43:48 <ais523> I think my computer has an annoying habit of being an hour slow
00:43:58 <ais523> I was planning to catch a train to University at about 11pm
00:44:03 <ais523> but it was actually midnight, so I had to walk
00:44:16 <ais523> even worse, this means that the places where I expected to be able to potentially by food were shut
00:44:38 <ais523> 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 <elliott_> ais523: have you heard of daylight savings time?
00:44:48 <ais523> eventually I got food from a petrol station
00:44:54 <ais523> elliott_: yes, I have
00:45:04 <ais523> but this has happened on more than one occasion; and the clock updates from ntp
00:45:05 <elliott_> thanks for the information. keep me updated if you stop having heard of it
00:45:21 <elliott_> ais523: I bet a disagreement on whether the hardware clock is UTC or localtime
00:45:23 <elliott_> that's a problem with windows
00:45:29 <elliott_> though maybe it doesn't apply for dst
00:45:36 <ais523> this is one thing I was wondering about, indeed
00:45:37 <elliott_> a problem with windows and linux, that is
00:45:40 <ais523> 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 <ais523> wow these crisps are terrible, even though they're the brand I normally buy
00:49:17 <coppro> ais523: there are only like two brand + flavour combinations I like
00:49:26 <ais523> 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 <coppro> and a small handful of others that I'll eat when nothing else is available
00:49:34 <ais523> coppro: they're the brand /and/ flavour I normally buy
00:49:53 <coppro> weird
00:50:00 <ais523> and they're in date (29 11 14, which is a nicely unambiguous date)
00:50:04 <ais523> but the packet is larger than normal
00:50:17 <lifthrasiir> ais523: 2029-11-14?
00:50:22 <ais523> wait, not completely ambiguous, it could be the 14th November 2029
00:50:31 <ais523> but I don't think crisps last that long
00:50:54 <ais523> 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 <ais523> they had a negative price anyway due to interaction of special offers
00:51:34 <ais523> I wasn't planning to buy them
00:51:34 <coppro> haha
00:56:13 <pikhq> ais523: Perhaps it's the 11th of Twentyninember, 29 AD.
00:56:39 <elliott_> it's middle-endian
00:56:40 <coppro> pikhq: that uses 29 twice
00:56:56 <elliott_> it expired on the 29th of Second February, 2011
00:57:04 <HackEgo> [wiki] [[Polyglot]] http://esolangs.org/w/index.php?diff=40601&oldid=36314 * 90.189.54.149 * (-30)
00:57:14 <coppro> elliott_: I don't think he knows about second february
00:58:13 <elliott_> it only happens on leap years
00:58:54 <nys> * A complete date was specified, so use the other pope.
00:58:55 <nys> */
00:59:12 <elliott_> that is an amazing comment
00:59:31 <dianne> what does it mean
01:00:26 <nys> it's from the source of the "cal" utility from netbsd
01:01:00 <elliott_> ais523: how dead is agora these days?
01:01:23 <ais523> elliott_: it has a spurt of activity starting last week
01:01:35 <ais523> when comex attempted a dictatorship scam, and I attempted a counterscam
01:01:44 <ais523> that is the only thing going on, though, and it was mostly dead before that
01:04:48 <coppro> nys: wasn't Julian an emperor?
01:04:59 <nys> hm maybe
01:05:01 <coppro> ah, yes, it was Julius Caesar himself
01:05:07 <nys> i'm not a calendarist
01:07:01 -!- aretecode has quit (Ping timeout: 260 seconds).
01:07:49 <pikhq> coppro: 14 is clearly the ancinet number of repetition.
01:08:07 <pikhq> ... what the what.
01:08:16 <pikhq> Lettuce, yes *lettuce*, is a mild narcotic.
01:09:12 <coppro> pikhq: ban it
01:09:18 <coppro> wait, we haven't come up with a scary name for it
01:09:26 <pikhq> Lactucarium.
01:09:31 <coppro> excellent
01:09:35 <coppro> 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 <elliott_> 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 <elliott_> can you ever do anything useful with a /usr/bin/cd that just runs cd in a shell?
01:30:50 <pikhq> Uuuuh. Unsure.
01:31:42 <ais523> 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 <pikhq> :(
01:32:44 <Jafet> It could leave the new shell running
01:34:49 <ais523> oh wow, this is broken
01:35:00 <ais523> the directory bash thinks I'm in is not the directory I'm actually in
01:35:17 <pikhq> That's pretty easy to do.
01:35:27 <pikhq> The directory bash thinks you're in is the contents of PWD.
01:36:57 <elliott_> 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 <ais523> how do I get bash to read a file and send it to another process's stdin?
01:37:32 <elliott_> 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 <elliott_> ais523: err, cmd < file?
01:37:43 <ais523> doing "command < file" doesn't work, because then the command reads the file
01:37:47 <ais523> not bash, bash just opens the file
01:37:54 <elliott_> ais523: cmd =(cat file), in zsh
01:38:24 <elliott_> erm, sort of
01:38:31 <elliott_> sorry, I'm really wrong.
01:38:39 <ais523> elliott_: then cat reads it, just checked
01:38:41 <elliott_> does cat file | cmd not work?
01:38:45 <elliott_> oh, you really want bash itself to do it
01:38:48 <ais523> yes
01:38:48 <elliott_> (<file) | cmd?
01:38:51 <elliott_> that'll be a subshell though
01:38:56 <Jafet> There's always read
01:39:12 <elliott_> ais523: { <file; } | cmd might work
01:39:28 <elliott_> oh, I guess <file is a zshism...
01:40:03 <ais523> elliott_: I tried that last one in zsh, seems to be run by a process called "pager"
01:40:29 <elliott_> ais523: pager, really?
01:40:37 <elliott_> the only pager I know is the one I have to automatically page stuff
01:40:46 <ais523> elliott_: yes, it surprises me too
01:40:59 <ais523> "pager" seems to be a wrapper around less on my system
01:41:07 <ais523> so I guess zsh is using some sort of weird intelligence
01:41:25 <pikhq> 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 <HackEgo> [wiki] [[Special:Log/newusers]] create * RiftocLANG * New user account
02:37:22 <ais523> hmm, that might be not a spambot
02:41:32 -!- AndoDaan has quit (Ping timeout: 245 seconds).
02:42:42 <coppro> I'm glad that levels, so far, has managed to get away with rebasing onto the master branch
02:42:46 <coppro> oh wait, wrong channel
02:59:36 <zzo38> 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 <zzo38> (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 <zzo38> 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 <Sgeo> 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 <Sgeo> And a lot of descriptions of what he sees
04:46:41 <zzo38> (According to the pattern of the table, $C2 and $E2 would have been "decrement immediate" and "increment immediate".)
04:47:26 <ais523> zzo38: what should writing to immediates do? modify the command itself in memory?
04:48:24 <zzo38> 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 <zzo38> Note that VAX does have commands to write to immediate operands.
04:56:41 <fizzie> 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 <ais523> subshell doesn't really work for my idea
04:57:26 <ais523> what I wanted to do was get at the parent of bash from inside bash by reading /proc/self/status
04:58:27 <ais523> 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 <fizzie> read -d $'\0' x; echo -n "$x" | cmd ...but $$ should work too.
04:59:06 <ais523> yes, it does, I was being stupid
04:59:10 <ais523> still, the original problem was interesting
04:59:47 <fizzie> read -d $'\0' x < file; echo -n "$x" | cmd that is. And won't work with nulls.
05:05:58 <ais523> OK, behold my working implementation of cd: http://sprunge.us/PBNT
05:06:08 <ais523> wait, I should probably be deleting the tempfile
05:06:10 <ais523> after use
05:06:11 <ais523> oh well
05:07:11 -!- MoALTz_ has joined.
05:07:34 <fizzie> 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 <fizzie> 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 <fizzie> 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 <ais523> I just wanted to get it working; I expected there to be a cleaner way to do it
05:16:39 <elliott_> ais523: disgusting
05:16:45 <ais523> thanks
05:17:33 <elliott_> ais523: this is making me think about a shell where all builtins are implemented externally...
05:17:51 <elliott_> 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 <elliott_> I guess current directory is a libc abstraction though?
05:18:20 <ais523> well, /proc/pid/cwd is a symlink, so you should be able to retarget it with ln -sf
05:18:31 <ais523> and you could actually implement that in the kernel
05:18:36 <ais523> and no, current directory is kernel, not libc
05:18:43 <elliott_> um, are you saying it exists?
05:18:48 <elliott_> wow, it does
05:18:51 <elliott_> why didn't it tab-complete?
05:18:58 <ais523> /proc is weird
05:19:18 <elliott_> looks like ln -sf on the cwd just does nothing
05:19:19 <elliott_> :(
05:19:29 <ais523> this becomes obvious when you realise that a process's current directory can be deleted
05:19:36 <elliott_> right
05:19:43 <elliott_> hmm, what other core builtins of a posix shell are there?
05:19:50 <ais523> I guess, actually, it's less obvious
05:19:57 <ais523> what libc /could/ do is hold a handle to it open
05:20:01 <ais523> and use the *at functions to move around
05:20:20 <elliott_> exit could use a signal
05:20:23 <elliott_> except for status codes
05:21:33 <elliott_> 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 <elliott_> this is terrible
05:22:58 <elliott_> ais523: it's a shame you can't use that cd to do exploits
05:23:07 <elliott_> since it requires your parent process to run you with the same user anyway
05:23:15 <elliott_> so you can't, like, exploit it in a CGI or whatever
05:23:17 <elliott_> actually... can you?
05:23:22 <ais523> s/shame/good thing/?
05:23:22 <elliott_> CGIs are often run as the webserver user, I guess
05:23:34 <zzo38> Can a .EXE file be made that can work in DOS, Windows, and also in .NET/Mono?
05:23:45 <elliott_> can you make a CGI that shuts down the parent webserver?
05:23:45 <elliott_> oh
05:23:48 <elliott_> it could just, like, use kill.
05:23:52 <ais523> and really, if you can get a webserver to run gdb, you can probably get it to do anything
05:24:13 <elliott_> ais523: well, being able to write to a .php file is one thing
05:24:17 <elliott_> killing apache with it is another
05:24:19 <ais523> 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 <ais523> you could almost certainly make a valid Linux ELF executable that's also a valid Windows COM executable, though
05:24:43 <zzo38> I know that a .EXE file can be designed for both DOS and Windows.
05:24:48 <ais523> elliott_: gdb is a C interpreter
05:25:10 <elliott_> ais523: my point is just, being able to control the webserver process
05:25:11 <zzo38> ais523: Isn't .COM only DOS programs though?
05:25:18 <ais523> thus if you can give arbitrary input to it, you already have arbitrary local exec
05:25:26 <elliott_> ais523: yes...
05:26:22 <elliott_> ais523: I don't think you are replying to what I am saying
05:26:22 <ais523> I don't understand what you're saying, in that case
05:26:22 <elliott_> 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 <elliott_> 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 <zzo38> 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 <elliott_> but anyway I wasn't thinking that clearly.
05:26:59 <ais523> zzo38: you could create a .COM that writes an executable file in /temp or somewhere like that, then runs it
05:27:25 <fizzie> 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 <zzo38> ais523: Yes, although I am not trying to do that anyways.
05:27:50 <ais523> fizzie: and EXE files have to start MZ or ZM
05:28:05 <ais523> so ELF/EXE is impossible (except that you can rename a .COM file to .EXE and it'll still work, IIRC)
05:28:18 <fizzie> (It probably wouldn't be terribly hard otherwise either, since there's free bytes quite near the start in ELF.)
05:28:33 <zzo38> 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 <zzo38> 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 <elliott_> does jg 0x47 do anything exciting?
05:29:48 <elliott_> oh
05:29:59 <elliott_> I was thinking it was intentionally jg
05:30:03 <elliott_> but you were just disassembling for convenience
05:30:19 <fizzie> It would jump into a place which you could easily arrange to be free of ELF headers, that's all.
05:30:22 <elliott_> fizzie: ideally, put an ELF loader starting at 0x47
05:30:28 <elliott_> that loads the executable itself
05:30:36 <fizzie> That would be nifty.
05:30:38 <elliott_> turn any elf into a .com!
05:31:09 <elliott_> how does the linux kernel's EFISTUB thing work?
05:31:15 <elliott_> compiled linux kernels are ELF executables, I believe?
05:31:25 <elliott_> but they're also UEFI applications, so they have to be PE/COFF
05:32:44 <ais523> elliott_: I believe it just wraps an ELF in the minimum headers needed to make it look like a PE executable
05:33:16 <elliott_> 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 <elliott_> or are there?
05:33:29 <elliott_> linux doesn't do multiboot, IIRC
05:34:53 <zzo38> 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 <ais523> 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 <zzo38> (This is what DEBUG tells me it is anyways after I filled in the header according to what Wikipedia says.)
05:35:54 <elliott_> ais523: are you telling me that linux dropped compatibility with all older versions of grub when it gained EFISTUB support?
05:35:57 <elliott_> I don't believe you
05:36:13 <ais523> elliott_: I think it was a kernel option whether to become EFI or not
05:36:19 <ais523> and you wouldn't turn it on if you had an old GRUB
05:36:27 <ais523> it was probably off by default (quite possibly still is, in fact)
05:37:07 <elliott_> 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 <ais523> hmm
05:37:21 <elliott_> https://www.kernel.org/doc/Documentation/efi-stub.txt
05:37:40 <elliott_> 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 <ais523> sudo file /boot/vmlinuz-3.13.0-37-generic
05:37:57 <ais523> /boot/vmlinuz-3.13.0-37-generic: x86 boot sector
05:38:21 <elliott_> http://lxr.free-electrons.com/source/arch/x86/boot/header.S
05:38:38 <elliott_> file isn't very good at polyglots
05:38:50 <ais523> it starts MZ, anyway
05:38:57 <ais523> so my conclusion is, it's not an ELF and never was
05:40:06 <elliott_> https://en.wikipedia.org/wiki/Vmlinux#bzImage aha
05:40:06 <elliott_> it contains ELFs
05:40:06 <Bike> "movw $bugger_off_msg, %si"
05:40:32 <Bike> ".word 0x8664 # x86-64", nice
05:41:10 <elliott_> I like how linux just tells you to fuck off if you use it as a boot sector
05:41:12 <elliott_> I guess it no longer supports that
05:42:00 <ais523> hmm, both the entire PlayStation series, and the GameCube and Wii, use ELF
05:42:12 <ais523> 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 <ais523> cartridges always used to work .COM-style, the cartridge /is/ your memory
05:42:43 <elliott_> even playstation 1?
05:42:43 <ais523> ah no
05:42:43 <ais523> PS2 onwards
05:42:45 <ais523> I saw four entries, but one of them's the PSP
05:43:02 <Bike> "# 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 <ais523> Bike: this sort of thing happens a lot
05:43:39 <ais523> the Linux kernel has a table of efficient NOPs of various byte lengths
05:43:59 <ais523> 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 <ais523> (you can't just write NOP, it might assemble to the wrong bitwidth)
05:44:43 <Bike> "# 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 <b_jonas> 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 <b_jonas> as in, all of them work as nops in all cpus, but different ones are recommended as the most efficient.
06:28:44 <elliott_> benchmark them
06:29:27 <b_jonas> 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 <b_jonas> elliott_: also, no
06:29:50 <elliott_> that just means you have to be more evil :p
06:29:52 <b_jonas> I'll just believe the manuals
06:30:03 <b_jonas> why wouldn't I believe them?\
06:30:09 <elliott_> b_jonas: well, I mean to find the best compromise
06:30:14 <b_jonas> no I don't
06:30:16 <elliott_> between the two manufcaturers
06:30:19 <b_jonas> no
06:30:33 <elliott_> I don't actually think you're obligated to.
06:30:49 <b_jonas> 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 <b_jonas> if it doesn't matter, then just use one of them
06:31:32 <elliott_> I was kidding. :p
06:33:09 <b_jonas> also, it's not my job, I'm not the one writing compilers
06:33:57 <b_jonas> I only use them
06:34:55 <zzo38> 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 <zzo38> Is there software like that?
06:36:33 <b_jonas> zzo38: this is about that Z-machine stuff still?
06:37:14 <zzo38> 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 <zzo38> (O, and I have now released a Z-machine debugging interpreter, in case you want it for any reason.)
06:38:01 <shachaf> zzo38: Today I was talking about the Z-machine with someone.
06:38:18 <shachaf> And also Zork Zero.
06:39:34 <zzo38> 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 <zzo38> (I have tested Zork I.)
06:41:41 <shachaf> But Zork Zero is more fun.
06:41:45 <zzo38> OK
06:42:17 <shachaf> We also talked about Zork: Grand Inquisitor.
06:55:50 <oerjan> @tell AndoDaan <AndoDaan> well, 'minor'... <-- it's not supposed to be used for actual new content.
06:55:50 <lambdabot> Consider it noted.
06:56:29 <oerjan> @tell AndoDaan i tend to err on the side of _not_ marking edits minor.
06:56:29 <lambdabot> Consider it noted.
07:00:51 -!- Sprocklem has quit (Ping timeout: 272 seconds).
07:03:59 <oerjan> @tell coppro <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 <lambdabot> Consider it noted.
07:10:59 <AndoDaan> oerjan: ah, sorry. I should have realized that.
07:12:49 <AndoDaan> In the future I'll be less minor marking happy.
07:13:20 <oerjan> good, good
07:14:14 <FreeFull> How many of the months of the year are named after caesars?
07:14:54 <AndoDaan> 2?
07:15:06 <AndoDaan> augustine and julius
07:15:48 <oerjan> *augustus
07:15:56 <oerjan> augustine was a christian saint
07:16:14 <FreeFull> What was February named after?
07:16:30 <oerjan> some roman god
07:17:44 <oerjan> 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 <oerjan> (also julius wasn't technically an emperor)
07:18:35 <oerjan> (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 <oerjan> *+s
07:19:18 <oerjan> ok possibly february isn't named after a god
07:19:32 <oerjan> "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 <oerjan> 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 <AndoDaan> Augustine sounded pretty in my head :\
07:20:56 <b_jonas> oerjan: http://www.tondering.dk/claus/calendar.html
07:21:05 <b_jonas> http://www.tondering.dk/claus/cal/roman.php in particular
07:21:39 <b_jonas> oerjan: also http://www.xkcd.com/1104/
07:26:21 <FreeFull> oerjan: Of course a lot of the month names are different in slavic languages
07:26:35 <FreeFull> January is Styczeń in Polish
07:27:50 <FreeFull> I have to go now
07:28:10 -!- FreeFull has quit.
07:30:33 <fizzie> We've got mostly godless months, they're more about agriculture and stuff.
07:30:34 <fizzie> Tammikuu, helmikuu, maaliskuu, huhtikuu, toukokuu, kesäkuu, heinäkuu, elokuu, syyskuu, lokakuu, marraskuu, joulukuu.
07:30:50 <fizzie> Several of those are very unimaginative. June -> kesäkuu -> "summer month".
07:31:06 <fizzie> September -> syyskuu -> "autumn month".
07:31:15 <fizzie> December -> joulukuu -> "Christmas month".
07:33:27 <fizzie> And October -> lokakuu -> approximately "mud month", July -> heinäkuu -> "hay month".
07:35:03 <fizzie> And toukokuu and elokuu are named after the planting and harvesting of wheat.
07:35:58 <elliott_> mud month :D
07:36:14 <fizzie> http://en.wiktionary.org/wiki/loka#Finnish
07:37:04 <fizzie> 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 <fizzie> March -> maaliskuu -> unknown etymology, rumoured to be something about how the ground ("maa") gets uncovered when the snow melts.
07:38:39 <fizzie> April -> huhtikuu -> something about forestry related to that time of the year.
07:39:37 <fizzie> November -> marraskuu -> "death month", basically.
07:39:58 <fizzie> From an entirely obsolete/archaic word http://en.wiktionary.org/wiki/marras#Finnish
07:40:02 <fizzie> And that's the lot.
07:40:40 <elliott_> death month is hardcore.
07:40:54 <fizzie> That's how we roll.
07:44:17 <nortti> and toukokuu (May) is something like "seed-planting month"
07:48:45 <elliott_> fizzie doesn't believe in may.
07:52:13 -!- oerjan has quit (Quit: Needs more napping).
07:54:06 <shachaf> you can't get more unimaginative than the hebrew system for naming days
07:54:29 <shachaf> sunday-friday are called first day, second day, third day, fourth day, fifth day, sixth day
07:59:52 <zzo38> 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 <lifthrasiir> shachaf: so do Chinese days of the week
08:23:10 <zzo38> Actually this particular kind of overlapping seems to be less important than just filling in gaps of blocks with other blocks.
08:30:29 <zzo38> 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 <zzo38> 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 <zzo38> 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 <zzo38> How can a sorting algorithm work on a partial ordering?
08:56:53 <lifthrasiir> zzo38: topological sort?
09:04:49 -!- impomatic_ has quit (Ping timeout: 260 seconds).
09:27:21 <zzo38> Let me see if Wikipedia describes it
09:32:35 <zzo38> 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 <HackEgo> [wiki] [[Special:Log/newusers]] create * Viznut * New user account
10:23:18 <fizzie> 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 <fizzie> Heh, seems likely.
10:28:19 <HackEgo> [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 <fizzie> 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 <oerjan> <zzo38> 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 <oerjan> (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 <int-e> oerjan: I swear the "Mail merge" anagolf problem is made to make Haskell look bad.
10:47:44 <zzo38> oerjan: Well, yes, both ways work in that case.
10:47:55 <b_jonas> int-e: that wasn't specifically my intention with the problem
10:47:59 <oerjan> int-e: i haven't looked at it yet
10:48:40 <fizzie> 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 <int-e> 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 <b_jonas> int-e: um, but isn't that input and output UTF-8?
10:49:21 <b_jonas> let me check the form
10:49:27 <int-e> nope, it seems to be ISO8859-1
10:49:27 <b_jonas> or hexdump it
10:49:28 <zzo38> 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 <int-e> 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 <oerjan> ouch
10:50:55 <b_jonas> int-e: it does seems to be utf8 to me
10:51:19 <int-e> b_jonas: submit a cat program, the submission form gives you hex dumps for output and expected output
10:51:25 <fizzie> It does seem to be UTF-8 to me too.
10:51:26 <b_jonas> int-e: it starts with \xc3\x81tv\xc3\xa9teli
10:51:37 <b_jonas> int-e: yes, that's what I just did
10:51:42 <fizzie> Expected: "\xc3\x81tv\xc3\xa9teli".
10:51:57 <fizzie> Quite UTF-8y.
10:51:59 <int-e> hmm.
10:52:12 <b_jonas> let me try to check if it's all UTF-8
10:53:24 <fizzie> "UTF-8 Unicode text", says file about the entire expected output, after replacing \xNN's.
10:53:37 <int-e> ok, I'm misdiagnosing the problem
10:54:20 <oerjan> perhaps _haskell_ isn't set to utf8 by default in that version?
10:54:30 <fizzie> The anagolf environment seems to use the C locale, if that helps.
10:54:37 <fizzie> Possibly Haskell is locale-aware enough?
10:54:39 <b_jonas> I think it's all utf-8
10:54:41 <int-e> but in any case I'm getting a.out: <stdin>: hGetContents: invalid argument (invalid byte sequence) for interact id. what's the locale setting there?
10:54:48 <fizzie> int-e: "C".
10:55:01 <oerjan> in later versions it is locale-aware.
10:55:33 <int-e> ... ("LC_ALL","C")
10:55:38 <b_jonas> 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 <oerjan> don't know about 7.4.
10:55:53 <oerjan> b_jonas: yes.
10:56:28 <int-e> I do recall that ghc 7.4 was in a particularly bad state concerning encoding issues, 7.6 being slightly better
10:56:56 <oerjan> it's hGetContents that's in trouble, so it's breaking on input
10:57:03 <int-e> but with a C locale, the input *should* be treated as bytes, so what's that error doing there...
10:57:11 <fizzie> The (POSIX) C locale is nominally ASCII, so all the non-ascii bytes are technically invalid?
10:58:14 <int-e> `` echo "äöü" | LC_ALL=C ghc -e 'interact id'
10:58:26 <int-e> oh. <interactive>: <stdin>: hGetContents: invalid argument (invalid byte sequence)
11:00:03 <int-e> fizzie: And that's how ghc treats it (in version 7.8 as well). SIGH.
11:00:10 <fizzie> How does 'exec is denied' interact with something like bash, incidentally? Only shell builtins?
11:00:41 <oerjan> someone said it doesn't apply to shell scripts, but...
11:01:20 <fizzie> 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 <b_jonas> well, I'm sorry if this causes you trouble with Haskell.
11:08:54 <mroman_> anagol isn't set for utf8
11:09:15 <mroman_> which is the reason you can't embed binary stuff in burlesque programs on anagol
11:09:20 <mroman_> well..
11:09:29 <mroman_> that probably wouldn't work with utf8 as well
11:09:57 <mroman_> or is it utf8 on anagol?
11:10:47 <mroman_> anyway you can't embed binary stuff in Burlesque :)
11:11:09 <oerjan> > map length["`hSetBinaryMode`True","`hSetEncoding`utf8"]
11:11:11 <lambdabot> [20,18]
11:11:19 <oerjan> int-e: slight improvement
11:12:15 <int-e> nice, thanks
11:14:05 <int-e> > length "import System.IO;main=mapM(`hSetEncoding`utf8)[stdin,stdout]>>"
11:14:06 <lambdabot> 62
11:14:16 <zzo38> 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 <zzo38> (This also shows how the scoring for special problems is decided.)
11:18:28 <int-e> > length "LC_ALL=en_US.utf8 ghc -e 'let in'"
11:18:30 <lambdabot> 33
11:23:51 <fizzie> 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 <oerjan> 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 <Jafet> oerjan needs to golf more, so that he automatically writes map as <$>.
12:43:35 <mroman_> You may need an import for <$>
12:43:42 <oerjan> Jafet: um what mroman_ said
13:13:09 -!- sebbu has joined.
13:13:23 <fizzie> oerjan: You still have over three hours to beat int-e on count the overlap hth
13:14:43 <mroman_> stop this hth non-sense
13:17:03 <fizzie> 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 <zzo38> 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 <mroman_> " 2 down vote
13:31:30 <mroman_>
13:31:32 <mroman_> 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 <mroman_> right. right.
13:31:53 <mroman_> > len "2147483647"
13:31:55 <lambdabot> Not in scope: ‘len’
13:31:55 <lambdabot> Perhaps you meant one of these:
13:31:55 <lambdabot> ‘lex’ (imported from Prelude), ‘lens’ (imported from Control.Lens)
13:31:59 <mroman_> > length "2147483647"
13:32:01 <lambdabot> 10
13:32:02 <mroman_> @define len = length
13:32:05 <lambdabot> Defined.
13:32:13 <mroman_> it's 80 bits AT LEAST
13:33:02 <zzo38> Perhaps it means it is converted into at least a signed 32-bit integer?
13:33:38 <zzo38> (Although an implementation could treat it differently, such as to avoid converting it at all, I suppose)
13:35:12 <mroman_> I think his point is, that in XML 2147483647 isn't encoded as 32bit
13:35:13 <oerjan> <fizzie> 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 <mroman_> that's like saying
13:35:26 <mroman_> int8_t = 12; is invalid
13:35:30 <mroman_> because 12 isn't 8bits
13:35:32 <mroman_> it's 16bits!
13:35:52 <fizzie> I don't think that's what the comment said at all, it just objected to the word "is".
13:35:56 <mroman_> so technically 12 isn't an 8bit value
13:36:08 <fizzie> Presumably "xs:int has the range of a 32-bit signed integer" would have been just fine.
13:36:31 <zzo38> fizzie: Yes, probably that would have helped.
13:37:22 <mroman_> [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 <fizzie> What's the definition of long, then?
13:38:02 <mroman_> [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 <oerjan> 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 <mroman_> But what's the defintion of integer then?
13:38:19 <mroman_> [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 <fizzie> mroman_: It's types all the way down!
13:38:48 <mroman_> but what's the definition of decimal then?
13:38:57 <mroman_> [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 <mroman_> luckily it ends here
13:39:32 <fizzie> That got cut off: "-- is the order relat".
13:39:57 <mroman_> the only link to go here is "value space"
13:40:13 <fizzie> It doesn't define what "decimal numerals" are. :/
13:40:18 <oerjan> *suspecting
13:40:32 <fizzie> oerjan: You are also a suspect, if that helps.
13:40:41 <mroman_> `? int
13:40:50 <oerjan> OKAY
13:41:07 <fizzie> Hm.
13:41:08 <oerjan> surely you mean *ith
13:42:02 -!- HackEgo has joined.
13:42:05 <fizzie> That's better.
13:42:24 <mroman_> If it looks like an int, swis like an int and quacks like an int, then it probably is an integer.
13:42:27 <mroman_> *swims
13:42:57 <fizzie> Software interrupts like an int.
13:43:17 <fizzie> (SWI is an ARM instruction.)
13:43:50 <Jafet> What if ISWIM as a duck
13:44:55 <mroman_> there's also negativeInteger
13:45:00 <mroman_> which derives from nonPositiveInteger
13:46:19 <fizzie> Does the positiveInteger derive from nonNegativeInteger?
13:46:34 <mroman_> yes
13:46:40 <fizzie> Good, at least it's consistent.
13:48:15 <fizzie> I think it should also include a separate zeroInteger type that would have a value space of 0.
13:48:51 <mroman_> you can define a simpleType zeroInteger
13:49:05 <mroman_> using <assertion test='$value eq 0'/>
13:49:43 <mroman_> XML is good .
13:49:44 <fizzie> Would that also allow "00" like I guess integer does?
13:49:54 <mroman_> I'd say so.
13:50:13 <mroman_> but you can also add a <pattern>
13:50:17 <J_Arcane> (kun (ja (näenko? i) (uimako? i) (vaakkuko? i)) (asettaa! i 'ankka))
13:50:27 <mroman_> <pattern value="0"/> should work
13:51:29 <mroman_> Can you define a regex that checks if a regex is a valid regex?
13:52:42 <mroman_> I guess not
13:52:52 <mroman_> PCRE might
13:53:08 <fizzie> (kun (ja (näyttääkö? i) (uiko? i) (vaakkuuko? i)) (aseta! i 'ankka)), more like.
13:54:02 <mroman_> Is that a finnish lisp?
13:54:28 <fizzie> It's (when (and (looks? i) (swims? i) (quacks? i)) (set! i 'duck)) translated.
13:54:51 <J_Arcane> Ahh, joo. Kiitos.
13:56:05 <fizzie> Possibly "jos" for "if", though it might not be all 1:1 mappings.
13:58:26 -!- tlvb has joined.
14:02:22 <oerjan> yay i managed to tie henkma on http://golf.shinh.org/p.rb?A014062
14:03:02 <oerjan> i wonder if he found the same cheat i did
14:06:25 -!- AndoDaan has quit (Ping timeout: 248 seconds).
14:13:24 <Phantom_Hoover> what was the cheat
14:14:07 <oerjan> i used a way to do combinations that only works up to a limited answer length
14:15:27 <oerjan> and that is basically applying newton's binomial formula in reverse
14:16:20 <oerjan> (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 <oerjan> 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 <oerjan> but i doubt that's possible.
14:21:48 <oerjan> argh google is down
14:28:44 <J_Arcane> https://twitter.com/J_Arcane/status/521661553968693248
14:38:00 <Phantom_Hoover> why would Incantation be parametrised...
14:39:04 <J_Arcane> For some reason I was thinking in terms of the IO ().
14:42:18 <coppro> lambdabot: give me the goods
14:42:21 <oerjan> 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 <int-e> oerjan: yes indeed
15:03:27 <oerjan> my tying solution at the moment has mapM print$1: in it :P
15:03:51 <int-e> yeah I think that's the way to go
15:05:38 <int-e> oh you got A014062
15:05:55 <oerjan> indeed
15:06:27 <oerjan> i gave some spoilers above
15:06:36 <oerjan> (not actual code, but)
15:08:04 <oerjan> 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 <oerjan> or wait...
15:16:27 <int-e> Ah, you spoiled it well.
15:16:49 <oerjan> sorry, couldn't resist Phantom_Hoover
15:17:09 <oerjan> does that mean you got it too?
15:17:18 <int-e> yes
15:18:10 <int-e> And I should've thought of that.
15:18:19 <int-e> > iterate(11*)1
15:18:21 <lambdabot> [1,11,121,1331,14641,161051,1771561,19487171,214358881,2357947691,2593742460...
15:20:05 <int-e> but no, I was stuck doing (n*n-n+1)*...*(n*n)/(1*...*n)
15:21:08 <oerjan> yeah i tried some variations on that
15:21:21 <int-e> 65 characters is what I had
15:22:52 <int-e> 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 <int-e> (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 <oerjan> wait what language
15:25:35 <int-e> 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 <int-e> *did it in 62
15:25:54 <int-e> (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 <b_jonas> hmm, I should try that
15:50:17 <b_jonas> I mean, I should apply the regex solution to that
15:50:21 <b_jonas> to see how long it comes out
15:50:26 <b_jonas> in perl
15:51:02 <int-e> 45 characters? ;-)
15:51:09 <b_jonas> hmm, though
15:51:26 <b_jonas> j-bot, ping=
15:51:27 <j-bot> b_jonas, pong:
15:51:35 <b_jonas> [ >.541%8
15:51:36 <j-bot> b_jonas: 68
15:51:45 <int-e> (I don't know, but it's the only really short primality test in perl that I'm aware of)
15:51:49 <b_jonas> I could try a hardcoded bitmask
15:52:21 <b_jonas> int-e: it's not really that much shorter than a trial division, is it now?
15:53:38 <b_jonas> guess I'll have to try both
15:54:03 <int-e> scnr: "A double bogey isn't really that many more shots than par, is it now?"
15:56:40 <b_jonas> oh come on, isn't the test itself just something like !grep$p%$_<1,2..$p-1
15:57:10 <b_jonas> only problem is, you can't put the prime to test in $_ for that
16:00:04 <b_jonas> well, I'll just have to try
16:00:19 <b_jonas> 45 chars seems very short of course. there are real golfers here.
16:02:29 <zzo38> 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 <int-e> haha, good: bash: php: command not found
16:10:26 -!- boily has quit (Quit: PROCESSED CHICKEN).
16:12:03 <int-e> in fact, stderr doesn't count at all. you can produce garbage on stderr and still get accepted.
16:13:55 <fizzie> 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 <b_jonas> 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 <b_jonas> fizzie: what? it's a com file, you only have to do a far return to exit
16:14:34 <b_jonas> that's one byte
16:14:39 <b_jonas> it might still be shorter to not do anything
16:14:45 <b_jonas> but only by one byte
16:14:55 <int-e> 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 <int-e> which is kind of nasty.
16:15:48 <fizzie> b_jonas: I didn't know you can do ret to exit from com.
16:15:54 <fizzie> Can't say I've ever thought about it, really.
16:16:30 <zzo38> fizzie: Well, you can!
16:16:36 <fizzie> Of course every byte counts, so that might explain why they all fail.
16:16:43 <b_jonas> 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 <int-e> fizzie: it's a CP/M thing.
16:17:03 <fizzie> There's that, too.
16:17:04 <zzo38> 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 <b_jonas> zzo38: a register? I thought it's only in a byte of the PSP
16:18:04 <zzo38> (I have written a program for adjusting the palette which used this)
16:18:09 <b_jonas> (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 <zzo38> b_jonas: Actually it is passed in a register too, but only if it is a drive letter.
16:18:49 <zzo38> (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 <int-e> IIRC also the FCB records are filled in from the first two arguments
16:19:23 <zzo38> int-e: Yes, it does that too, so that you can easily do file I/O.
16:25:15 <int-e> 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 <zzo38> Does it work on FreeDOS? If not, should it be fixed?
16:27:33 <int-e> 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 <int-e> (some even manage to make use of the resulting dx=0x20CD value)
16:29:13 <b_jonas> int-e: on anagolf, you can assume that some of these things are deterministic, and find out their values easily
16:29:21 <int-e> And I don't know how much of this is true for Freedos. I would actually expect that it works.
16:29:40 <zzo38> 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 <b_jonas> 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 <b_jonas> or is it only that I can't find that variable?
16:32:21 <b_jonas> apparently there is no such thing
16:32:47 <b_jonas> hmm wait
16:32:50 <b_jonas> my test is wrong
16:33:34 <int-e> ok, oerjan has the same basic formula for "count the overlap" but completely different implementation for most of the rest... interesting.
16:37:01 <int-e> @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 <lambdabot> Consider it noted.
16:37:34 <b_jonas> 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 <b_jonas> and there's one that gives an error when numified (scary)
16:40:12 -!- AndoDaan has joined.
16:47:37 <int-e> @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 <lambdabot> Consider it noted.
16:50:29 <fizzie> Heh, I wrote a mostly unoptimized Z80 mail merge, and it's three bytes shorter than the Perl.
16:50:52 <b_jonas> fizzie: yes, it's quite short
16:51:12 -!- S1 has quit (Quit: S1).
16:51:16 <fizzie> All those one-byte instructions.
16:51:45 <b_jonas> incidentally, will anagol want to add ruby 2.1 in the future?
16:51:58 <b_jonas> as a separate language from ruby 1.8 I mean
16:52:32 <fizzie> Incidentally, is it a bit of a shame this channel is turning into some sort of #anagol-adjunct? :)
16:53:21 <int-e> fizzie: it's a change from the #lens-exile and #haskell-sidechannel that it usually is :P
16:53:42 <elliott_> fizzie: I see you sourced a replacement finn
16:55:11 <fizzie> elliott_: If you mean J_Arcane, I had nothing to do with that, but it's certainly very coincidental.
16:55:26 <elliott_> fizzie: no, I mean the one from today :p
16:55:28 <J_Arcane> :D
16:55:30 <b_jonas> wait, wrong channel
16:55:52 <elliott_> so many new finns even the finns can't keep track of them
16:55:56 -!- MoALTz has joined.
16:55:57 <fizzie> elliott_: Oh, right, yes; but I had nothing to do with that either, as far as I know!
16:56:30 <fizzie> (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 <elliott_> 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 <elliott_> well, you know what they say, the more finns the better (only finnish people say this)
16:57:17 <fizzie> I assure you, I was as surprised as $anyone about this.
16:57:27 <fizzie> I can only assume we had some good SEO keywords in the esowiki or something.
16:57:52 <elliott_> pfft, propping up your own wiki administration skills too
16:58:28 <elliott_> "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 <zzo38> And if you don't like it you can turn it off like I have done, too.
16:59:21 <fizzie> It's the "accurate" sense of the word "nice".
16:59:54 <elliott_> zzo38: all the other messages? yes I suppose you could, the channel would be pretty nice then
17:00:31 <zzo38> 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 <zzo38> Including this one; put user mode +D to ignore all channel messages.
17:02:31 <HackEgo> [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 <elliott_> yay, new VM esolang
17:03:43 <HackEgo> [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 <elliott_> viznut: external links are [url text] without the |, btw; mediawiki syntax is a mess
17:04:47 <HackEgo> [wiki] [[User:Viznut]] http://esolangs.org/w/index.php?diff=40605&oldid=40604 * Viznut * (+0)
17:06:10 <HackEgo> [wiki] [[TrybblePusher]] M http://esolangs.org/w/index.php?diff=40606&oldid=40603 * Viznut * (+25)
17:06:58 <HackEgo> [wiki] [[TrybblePusher]] http://esolangs.org/w/index.php?diff=40607&oldid=40606 * Viznut * (-36)
17:07:41 <fizzie> Very 3.
17:08:18 <viznut> yeah, it seems it was too much time before i used mediawiki
17:08:46 <viznut> *since
17:09:00 <elliott_> better, it means you've been free of it long enough to forget
17:12:33 <viznut> now that i'm on it, i might to create the ibniz article as well
17:13:42 <elliott_> I'm surprised nobody had written an article on it already
17:16:29 <b_jonas> 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 <viznut> i thought DI/EI are the z80 instructions to disable/enable interrupts
17:17:42 <b_jonas> I see
17:18:16 <viznut> it seems that the wiki lacks a category for virtual machines as well
17:18:48 <elliott_> there is [[Category:Finite state automata]], btw
17:20:52 <viznut> i somehow failed to add that category
17:21:57 <elliott_> it's paid DLC only (actually because "Cateogry")
17:23:40 <fizzie> 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 <b_jonas> fizzie: I see. is there a way to read these?
17:25:44 <fizzie> 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 <b_jonas> as in, for saving and restoring
17:26:16 <b_jonas> I see
17:26:18 <fizzie> 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 <b_jonas> ah, I see
17:26:31 <b_jonas> well, that should be enough
17:26:50 <HackEgo> [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 <HackEgo> [wiki] [[User:Viznut]] http://esolangs.org/w/index.php?diff=40609&oldid=40605 * Viznut * (-29)
17:27:55 <HackEgo> [wiki] [[TrybblePusher]] M http://esolangs.org/w/index.php?diff=40610&oldid=40607 * Viznut * (+35)
17:28:51 <fizzie> (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 <b_jonas> 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 <b_jonas> the NMI is irrelevant, you could just say the NMI routine shouldn't call anything like that
17:30:56 <fizzie> 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 <b_jonas> fizzie: yes, but that comes out a bit long and slow then, because you have to save A and stuff
17:31:41 <b_jonas> oh no
17:31:45 <b_jonas> actually that doesn't matter
17:31:51 <b_jonas> you probably have to save A in such a function anyway
17:31:59 <b_jonas> so that's not an extra
17:32:27 <fizzie> 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 <b_jonas> fizzie: well, you can't expect too much freedom from one byte long instructions
17:33:09 <b_jonas> 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 <fizzie> 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 <int-e> g_ is gcd?
18:11:21 <fizzie> Yes.
18:11:43 <fizzie> Hadn't come across the builtin, and for some reason didn't think to look for it.
18:12:22 <int-e> same in the Haskell solution? :)
18:13:52 <int-e> @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 <lambdabot> Consider it noted.
18:14:13 <J_Arcane> omg wat https://gitlab.brokenpipe.de/stettberger/avremu/tree/master
18:14:34 <J_Arcane> "An AVR Emulator written in pure LaTeX"
18:15:10 <fizzie> 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 <zzo38> Someone has written a BASIC interpreter in TeX.
18:16:35 <zzo38> I have also written Easter calculation (and many other date calculations) in TeX, and even chess game.
18:16:49 <J_Arcane> I may've seen your chess game.
18:17:28 <zzo38> 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 <zzo38> J_Arcane: Have you? It can do many chess variants too.
18:23:07 <b_jonas> zzo38: I was thinking about that kind of portability at one point, and wrote a list
18:23:11 <b_jonas> let me pull it up
18:24:49 <b_jonas> zzo38: here's my list: http://dpaste.com/3WN0DVW
18:25:13 <b_jonas> hmm, that list is completely broken
18:25:17 <b_jonas> it doesn't even mention javascript in browsers
18:25:25 <b_jonas> maybe ignore it then
18:25:50 <b_jonas> oh, it does
18:25:56 <b_jonas> only it says "firefox" instad of javascript
18:26:05 <J_Arcane> 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 <J_Arcane> I think there was even some kind of text adventure system.
18:26:53 <zzo38> Yes, I suppose there certainly could be.
18:28:20 <zzo38> 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 <zzo38> (The amount of memory available is implementation-dependent.)
18:28:51 <b_jonas> zzo38: yes, I know
18:29:04 <b_jonas> it is quite portable indeed
18:29:23 <zzo38> So it has difference in that way from the other things listed (except for Plain METAFONT, which has the same portability).
18:31:05 <b_jonas> 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 <b_jonas> but yes, plain tex is probably the most portable among these
18:34:50 <b_jonas> 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 <J_Arcane> But could you write a C in TeX? :D
18:36:43 <b_jonas> J_Arcane: what?
18:37:23 <b_jonas> oh, you mean a C interpreter?
18:37:45 <J_Arcane> Yeah. I
18:38:11 <b_jonas> 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 <J_Arcane> Sounds about right. The clock rate of that Latex emulator is in the KHz after all.
18:40:20 <b_jonas> 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 <tromp> hmm, http://esolangs.org/wiki/Brainfuck_implementations lacks a TeX implemention?!
18:40:58 <zzo38> 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 <J_Arcane> True. Pointers are tricky beasties; probably the same reason why the Racket C #lang is only a toy/demonstration version.
18:41:16 <b_jonas> heh, KHz range brings me back some memories
18:41:46 <zzo38> Can you understand this program?
18:42:15 <J_Arcane> FizzBuzz using the date as an incrementer?
18:42:22 <b_jonas> 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 <b_jonas> 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 <quintopia> fizzie: can you make you blsq program output abacabadabacaba... instead?
18:42:58 <b_jonas> but it turns out my emulator is probabyl faster, that 1/1000 is just an understatement
18:43:03 <zzo38> J_Arcane: It does reuse that register in fact, as well as some other registers previously used for other purpose.
18:43:06 <b_jonas> that hardware is actually much slower
18:43:33 <J_Arcane> b_jonas: Seeing a 4-bit CPU makes me think of the multiple CPUs built in Powder Toy.
18:43:54 <J_Arcane> You want to try slow, try emulating individual electrons/light-pulses one at a time in a particle physics engine. :D
18:44:00 <b_jonas> zzo38: hmm, I don't know what \day does
18:44:34 <zzo38> 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 <b_jonas> zzo38: I see
18:45:29 <b_jonas> yea, \showthe\day says 13
18:46:42 <b_jonas> and you use \mit as another such register. ouch
18:46:57 <b_jonas> do these like have the shortest names or something?
18:47:00 <zzo38> Actually, \mit isn't a register.
18:47:04 <b_jonas> yes
18:47:08 <b_jonas> but it's still a count-like thing
18:47:33 <b_jonas> well, they're certainly shorter than \finalhyphendemerits
18:47:50 <b_jonas> ah, fizbuzz!
18:47:50 <zzo38> 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 <b_jonas> um yes, but so? can't you still set it a count, as long as it's between 0 and 16?
18:49:16 <fizzie> http://sprunge.us/JAPV well that's just great
18:49:17 <zzo38> Perhaps you mean the \fam register?
18:49:19 <b_jonas> oh
18:49:21 <b_jonas> I see
18:49:25 <b_jonas> so \mit assigns to \fam
18:49:27 <b_jonas> makes sense
18:49:30 <b_jonas> brilliant
18:49:50 -!- Froox has changed nick to Frooxius.
18:49:59 <b_jonas> now I have to understand the \ifvmode part, that's probabyl some trick
18:50:15 <b_jonas> and the \endgraf
18:50:25 -!- AndoDaan_ has changed nick to AndoDaan.
18:50:42 <zzo38> The \endgraf means the same as \par (or a blank line), but \par cannot be used here.
18:50:44 <b_jonas> you don't seem to output anything anywere, so what changes away from vertical mode?
18:50:54 <b_jonas> ah!
18:51:02 <b_jonas> because \long
18:51:28 <b_jonas> oh right, the Fizz and Buzz are output
18:51:44 <b_jonas> so they change to horizontal mode
18:51:45 <b_jonas> makes sense
18:51:46 <b_jonas> nice
18:51:58 <b_jonas> so this will output to successive lines in the dvi output
18:52:02 <b_jonas> nice hack
18:52:36 <b_jonas> 100 lines, that probably needs more than one page, but no problem
18:52:44 -!- Lorenzo64 has joined.
18:53:34 <b_jonas> and why is the \newcount worth? is there no other short enough register, when it appears three times?
18:53:41 <b_jonas> right, that's believable
18:53:42 <b_jonas> ok
18:53:53 <b_jonas> thanks, this is an interesting piece of code
18:57:18 <zzo38> 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 <zzo38> 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 <zzo38> 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 <zzo38> 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 <boily> there are multiple discordian calendars?
20:09:57 <boily> (and not \Quebec???)
20:10:13 <zzo38> I forgot Quebec, as well as a number of other things, sorry.
20:10:43 <zzo38> If I know the special days for Quebec I should put it in.
20:12:29 <zzo38> 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 <boily> 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 <boily> http://en.wikipedia.org/wiki/National_Patriots%27_Day
20:16:43 <boily> (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 <zzo38> 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 <fizzie> 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 <fizzie> 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 <zzo38> If it is a really small program then probably you don't need an assembler, necessarily.
20:33:24 <fizzie> For x86-32 Linux, I think something like http://sprunge.us/POMA would work as the body of the program.
20:33:57 <b_jonas> zzo38: exe? a com program is much easier
20:34:36 <zzo38> 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 <zzo38> fizzie: Can you explain what these system calls are meaning in here?
20:36:24 <b_jonas> 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 <b_jonas> hmm, I may have a link somehow though
20:36:36 <fizzie> 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 <b_jonas> damn, where is it
20:37:17 <fizzie> (You could probably omit the "push eax" and do "mov bl, [esp]" instead just fine.)
20:37:29 <b_jonas> there was a really good webpage with lots of information about programming dos, including exe
20:37:49 <b_jonas> 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 <b_jonas> COM vs EXE doesn't matter, it's real vs protected mode that does
20:38:09 <zzo38> b_jonas: I know, but I want to make a Windows executable file
20:38:29 <fizzie> http://sprunge.us/SXeg -- seems to work.
20:38:33 <b_jonas> 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 <b_jonas> zzo38: what kind? a 16 bit or 32 bit or 64 bit one?
20:39:34 <zzo38> b_jonas: 32-bits
20:39:42 <b_jonas> zzo38: dunno then
20:40:08 <b_jonas> 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 <b_jonas> sorry
20:40:48 <fizzie> 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 <b_jonas> (I don't know about 16 bit or 64 bit either)
20:41:12 <b_jonas> fizzie: did you write full working exes that way, possibly using an assembler?
20:41:31 <fizzie> b_jonas: I forget the details. It was some sort of an exe-mangler tool I wrote.
20:42:09 <b_jonas> I See
20:42:09 <fizzie> b_jonas: Some sort of packer-encrypter dealie, you know, that sort of stuff.
20:42:17 <b_jonas> yeah
20:42:51 <fizzie> 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 <b_jonas> these days I'm not really interested about this kind of thing
20:43:01 <int-e> http://www.phreedom.org/research/tinype/ looks like a good starting point.
20:43:24 <b_jonas> I may want to do low level assembled stuff, but only embedded into proper compiled programs with proper good practices
20:43:43 <fizzie> int-e: It seems to be consciously emulating that ELF page.
20:43:44 <b_jonas> like, individual functions written in assembler only, called from a normal C program
20:43:59 <int-e> fizzie: could be, could be.
20:44:16 <fizzie> 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 <b_jonas> 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 <b_jonas> I try to avoid windows somewhat
20:44:44 <b_jonas> 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 <zzo38> Well, I should try to work it on both Linux and on Windows (and also ReactOS).
20:45:25 <b_jonas> 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 <int-e> fizzie: it's a good example to follow in any case :)
20:46:05 <fizzie> It also has good links for the PE details, apparently.
20:46:51 <b_jonas> 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 <fizzie> 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 <fizzie> (Though a bit more so, the last versions seem to have 4 different headers coexisting in the same bytes.)
20:50:28 <b_jonas> 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 <b_jonas> it's a COM that changes the 9x16 VGA font, with the new font built in
20:52:46 <b_jonas> (it's 1788 bytes long, but could probably be compressed to half or third that size)
20:54:11 <fizzie> 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 <b_jonas> (try it if you dare)
20:55:29 <fizzie> 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 <fizzie> I compiled that one .com file with GCC, though it only worked in dosbox with no segment size checks.
20:56:55 <fizzie> (Still, that could've been fixed relatively easily.)
20:57:18 <fizzie> It was a non-crosscompiler Linux GCC and all, too.
20:57:35 -!- Frooxius has joined.
20:58:16 <fizzie> http://sprunge.us/KYJZ
20:58:36 <b_jonas> fizzie: wait what?
20:58:44 <b_jonas> a non-crosscompiler linux gcc
20:58:46 <b_jonas> uh
20:58:50 <b_jonas> scary
20:59:08 -!- boily has quit (Quit: ANYWHERE CHICKEN).
20:59:18 <fizzie> 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 <b_jonas> fizzie: I see
20:59:52 <b_jonas> that's really fragile, but a nice hack
20:59:55 <fizzie> 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 <fizzie> 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 <b_jonas> like, as fragile as running compiled code with that old x86 interpreter ioccc entry that is very limited
21:01:15 <b_jonas> 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 <b_jonas> but that old one
21:02:04 -!- AndoDaan has joined.
21:02:13 <b_jonas> I don't think the new one should have won. It's so cheating.
21:03:06 <fizzie> 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 <oerjan> @messages-
21:25:53 <lambdabot> 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 <lambdabot> 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 <lambdabot> 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 <oerjan> @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 <lambdabot> 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 <oerjan> @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 <lambdabot> 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 <Somelauw> is this esoteric?
22:13:59 <Somelauw> esoteric what?
22:14:19 <Bicyclidine> `welcome somelauw
22:14:26 <Bicyclidine> hm
22:14:34 <Bicyclidine> well, programming languages, anyway
22:14:48 <oerjan> fizzie!
22:14:59 <shachaf> And Roald Dahl.
22:15:12 <oerjan> (alternatively Gregor)
22:15:15 <Somelauw> like brainfuck, whitespace, lolcode, c--, things like that?
22:15:19 <oerjan> yep
22:16:25 <Somelauw> [-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.----.----------.++++++++++++++++++++++++.
22:16:28 -!- LordCreepity has quit (Quit: Leaving).
22:16:40 <oerjan> ^bf [-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.----.----------.++++++++++++++++++++++++.
22:16:49 <oerjan> wat
22:16:55 <oerjan> WHO KILLED ALL OR BOTS
22:17:00 <oerjan> @bf [-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.----.----------.++++++++++++++++++++++++.
22:17:00 <lambdabot> okay
22:17:01 <Somelauw> ^who
22:17:06 <Bicyclidine> these are supposed to be bot commands, if you're wondering, Somelauw
22:17:07 <oerjan> *OUR
22:17:11 <Bicyclidine> wow
22:17:24 <oerjan> except trusty lambdabot
22:17:24 <shachaf> oerjan: the android killed all the ordroods hth
22:17:29 <shachaf> ordroids
22:17:36 <shachaf> androids
22:17:38 <shachaf> sigh
22:17:51 <shachaf> you get the idea
22:17:53 <oerjan> you're such a drood
22:18:46 <shachaf> looj i'm typing on a phone
22:18:53 <Somelauw> @bf -[+.]
22:18:53 <lambdabot> Done.
22:18:58 <shachaf> and it was an acceptable pun
22:19:15 <Somelauw> @bf +[.+]
22:19:15 <lambdabot> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij...
22:19:26 <Lymia> !bfjoust hi <
22:19:27 <zemhill> Lymia.hi: points -46.00, score 0.00, rank 47/47
22:19:32 <Lymia> We have a living bot!
22:19:34 <Somelauw> @bf -[.-]
22:19:34 <lambdabot> ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987654...
22:19:36 <Bicyclidine> at least the important things are running
22:19:55 <Bicyclidine> plus a logbot
22:20:08 <Somelauw> 256 wrapping at least
22:21:10 <Bicyclidine> ^welcome
22:21:14 <Bicyclidine> @welcome
22:21:14 <lambdabot> Unknown command, try @list
22:21:24 <Bicyclidine> ok whatever just imagine you were welcomed by a robot
22:21:45 <Somelauw> hello
22:21:49 <Bicyclidine> sup
22:22:03 <Somelauw> what are you favourite esoteric langs?
22:22:06 <Somelauw> your*
22:22:12 <shachaf> tervetuloa Somelauw
22:22:34 <Bicyclidine> eodermdrome, funge, gravity
22:22:43 <Bicyclidine> also throat singing
22:23:58 <shachaf> Bicyclidine: spivak is such a tiny book
22:24:09 <shachaf> i expected it to be big like spivak
22:24:14 <Bicyclidine> when it wsa recommended to me it was named as "smaller spivak"
22:25:50 <Bicyclidine> shorter spivak, actually
22:26:10 <Bicyclidine> 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 <Somelauw> shachaf: no soy finish
22:27:48 <shachaf> 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 <shachaf> "oops double negative"
22:28:31 <Bicyclidine> that kind of surprises me given how hard integration is
22:28:43 <Bicyclidine> i forget, are computable real functions always smooth?
22:29:54 <oerjan> basically, derivation is easier symbolically, integration is easier numerically
22:30:04 <Bicyclidine> yeah that's true
22:30:15 <Bicyclidine> i do love me some ball and disk integrators
22:31:23 <shachaf> oerjan: differentiation is easier on expressions, integration is easier on functions?
22:32:06 <Bicyclidine> well, integration makes functions smoother
22:32:16 <Bicyclidine> 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 <shachaf> imo who cares about uncomputable functions anyway
22:34:45 <Bicyclidine> well, knowing the zeroes of a function is nice sometimes
22:39:36 <shachaf> 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 <shachaf> Bicyclidine: so what's with the whole chain rule = functoriality thing
23:18:11 <Bicyclidine> i have never heard that word in my life
23:18:15 <Bicyclidine> or seen it
23:18:53 <shachaf> the chain rule apparently expresses the fact that differentiation is a functor
23:19:14 <Bicyclidine> on uh, what category. functions?
23:19:50 <shachaf> that's the kind of thing i was hoping you would clarify
23:19:57 <Bicyclidine> oh
23:20:01 <shachaf> hm, wikipedia says "the functor sends each space to its tangent bundle and it sends each function to its derivative"
23:20:23 <Bicyclidine> oh ok
23:20:32 <Bicyclidine> uh how does that work with chain rule, hrm
23:20:35 <shachaf> 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 <Bicyclidine> kind of wish i was high, so i'd have an excuse not to think about what composing tangent bundles means
23:24:28 <Somelauw> 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 <shachaf> well, it's composing morphisms between tangent bundles, presumably?
23:24:51 <shachaf> since you're an expert in tangent bundles you probably know what those are
23:25:02 <Bicyclidine> well i know what a tangent bundle is yeah
23:25:09 <oerjan> shachaf: https://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant
23:25:33 -!- MoALTz has quit (Ping timeout: 255 seconds).
23:26:12 <oerjan> ^ord a
23:26:13 <oerjan> oops
23:26:45 <shachaf> oerjan: which question is that answering
23:28:07 <oerjan> 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 <oerjan> basically at each point x, Df is a linear function between the tangent spaces of x and f(x)
23:28:58 <shachaf> yes
23:29:13 <shachaf> but how do you end up with f'(g(x))*g'(x)
23:29:36 <shachaf> also do you have an analogy for the "holes in types" kind of derivative
23:29:45 <shachaf> in which the chain rule is much more intuitive
23:30:17 <oerjan> Somelauw: http://esolangs.org/wiki/Brainfuck_algorithms#Print_value_of_cell_x_as_number
23:30:32 <Somelauw> oerjan: i want the exact opposite of that
23:30:48 <Somelauw> not to print, but store a number in cell x
23:31:08 <oerjan> oh
23:31:44 <oerjan> Somelauw: if fungot was here i think it has some command that does that.
23:31:55 <oerjan> and which is written in brainfuck
23:32:15 <shachaf> Perhaps I'm missing something obvious.
23:33:25 <oerjan> shachaf: my intuition for holes in types is much weaker
23:35:05 <oerjan> hm...
23:35:17 <shachaf> 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 <shachaf> i mean a G' a
23:35:40 <shachaf> since you just wanted to take one a out of the whole thing
23:35:49 <oerjan> Dg(x)(t) = t*g'(x), Df(g(x))(u) = u*f'(g(x))
23:36:16 <oerjan> that is, Dg(x) is a linear function etc
23:36:55 <oerjan> D(f . g)(x)(t) = t*(f . g)'(x)
23:37:53 <oerjan> 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 <oerjan> i think
23:38:31 <Somelauw> 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 <oerjan> Somelauw: we all know the simple version. shachaf is trying to understand it via category theory.
23:38:54 <Bicyclidine> they're talking about it in the context of differential geometry
23:39:01 <Bicyclidine> or category theory, whatever
23:39:16 <Bicyclidine> so you're taking derivatives of mountains or something
23:39:16 <Somelauw> esoteric mathematics?
23:39:21 <oerjan> of course!
23:39:25 <Bicyclidine> well, it's common in physics
23:39:29 <Bicyclidine> but yeah it's weird i guess
23:40:40 <oerjan> 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 <oerjan> *-)
23:41:30 <oerjan> 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 <oerjan> *+y
23:42:50 <shachaf> oerjan: hm
23:42:52 <oerjan> er oops
23:43:21 <oerjan> s/D(f)(f(x))/D(f)(g(x))/ etc.
23:44:12 <oerjan> 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 <oerjan> and the latter is Df(x)
23:45:22 <oerjan> and if you have R^n spaces you get jacobian matrices instead of slopes
23:46:56 <shachaf> I think the R^n view is probably more reasonable anyway.
23:47:38 <shachaf> (imo saying "matrix" when you mean "linear function" is kind of silly)
23:47:56 <oerjan> well ok
23:48:10 <oerjan> but you need matrices to do numerical calculations
23:48:11 <Bicyclidine> yeah fuck matrices
23:48:17 <Bicyclidine> that is my contribution to this conversation
23:48:54 <Bicyclidine> oh, i guess differentials should make this easy or something, but i barely get them
23:49:30 <Bicyclidine> which is what oerjan said probably whatever
23:50:25 * pikhq computes the eigenfuck matrix
23:51:32 <oerjan> https://en.wikipedia.org/wiki/Pushforward_(differential) seems relevant
23:52:34 <Bicyclidine> this is in like the first fives pages of burke but i still don't remember it. i need homework
23:54:12 <oerjan> my formal math education was somehow devoid of differential geometry
23:54:37 <oerjan> no one at the institute really cared about it, i guess.
23:54:52 <Bicyclidine> how cruel
23:55:22 <shachaf> Q: Why is Khans of Tarkir useful for differential geometry?
23:55:23 <Bicyclidine> 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 <Bicyclidine> iunno this pure math shite
23:55:30 <shachaf> A: Because it's a wedge product!
23:56:06 <oerjan> shachaf: i'm not even going to look up that reference
23:56:17 <Bicyclidine> http://en.wikipedia.org/wiki/World_Standards_Day meanwhile in prewritten jokes
23:56:28 <Bicyclidine> 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 <MDude> I do tend to not appear for a while at places now and then.
23:59:42 <oerjan> fiendish!
23:59:55 <MDude> At times, it's due to being busy reappearing elsewhere.
←2014-10-12 2014-10-13 2014-10-14→ ↑2014 ↑all