←2013-02-15 2013-02-16 2013-02-17→ ↑2013 ↑all
00:00:13 <shachaf> Which picture?
00:01:31 <zzo38> Picture for Vs Unisystem display to fit the Wreck-it Ralph on
00:22:18 <fizzie> "undefined * undefined === NaN" is false in the two (2) JavaScripts I tried.
00:22:31 <fizzie> null * null does === 0, though.
00:23:15 <shachaf> fizzie++
00:23:28 <fizzie> And the former is probably only because NaN === NaN is false too.
00:23:38 <shachaf> kmc: you gotta be careful with your ===s
00:24:10 <shachaf> Time to learn about pullbacks?!
00:25:12 <fizzie> (It's also all because ToNumber of Undefined is NaN, and ToNumber of Null is +0.)
00:26:19 <shachaf> do we have a js bot in here......
00:27:36 <fizzie> Odds are not good.
00:27:42 <fizzie> `js
00:28:08 <Lumpio-> aw.
00:28:13 <HackEgo> Rhino 1.7 release 2 2010 02 06 \ js>
00:28:14 <fizzie> It's still working, I think.
00:28:16 <fizzie> Well, won't you look at that.
00:28:23 <fizzie> HackEgo: Feeling a bit slow today?
00:28:28 <Sgeo_> kmc, have you seen wat?
00:29:01 <Sgeo_> http://www.youtube.com/watch?v=THERgYM8gBM
00:29:50 <shachaf> `js 1
00:29:55 <HackEgo> js: Couldn't read source file "1: 1 (No such file or directory)".
00:30:00 <shachaf> `run echo 1 | js
00:30:06 <HackEgo> Rhino 1.7 release 2 2010 02 06 \ js> 1 \ 1 \ js>
00:30:53 <fizzie> I don't know why that's being so nasty.
00:30:56 <fizzie> `run js -e 'print([undefined*undefined, null*null]);'
00:31:00 <HackEgo> js: "<command>", line 1: Unexpected end of file \ js: print([undefined*undefined, \ js: ..........................^ \ js: Couldn't read source file "null*null]);: null*null]); (No such file or directory)".
00:31:10 <fizzie> Compare: http://sprunge.us/QMTL
00:31:13 <Bike> good program
00:32:05 <fizzie> Okay, there is a bit of a version difference.
00:32:24 <fizzie> `run js -e 'print([undefined*undefined,null*null]);'
00:32:29 <HackEgo> NaN,0
00:32:48 <fizzie> But it almost seems like a quotation problem, that the -e argument gets word-splitted one extra time.
00:33:15 <Sgeo_> `run js -e 'Array(16).join("wat" -1)'
00:33:19 <HackEgo> js: "<command>", line 1: missing ) after argument list \ js: Array(16).join("wat" \ js: ...................^ \ Invalid option "-1)" \ Usage: java org.mozilla.javascript.tools.shell.Main [options...] [files] \ Valid options are: \ -?, -help Displays help messages. \ -w Enable warnings. \ -version 100|110|120|130|
00:33:26 <fizzie> Yeah, it's because of this:
00:33:27 <fizzie> `run tail -n 1 $(which js)
00:33:28 <HackEgo> ​$JAVA_CMD $JAVA_OPTS -classpath $JAVA_CLASSPATH $JAVA_MAIN $@
00:33:39 <fizzie> In current versions, it has "$@" instead of plain $@ there.
00:36:00 <fizzie> `run sed -i -e 's/$@/"$@"/' $(which js) # what do you mean permissions?
00:36:01 <HackEgo> sed: couldn't open temporary file /usr/bin/sedimAGpB: Read-only file system
00:36:19 <fizzie> I did my best.
00:37:42 <fizzie> `js print([undefined * undefined, null * null]); /* bin/js saves the day */
00:37:46 <HackEgo> NaN,0
00:38:20 <Sgeo_> `js Array(16).join("wat" -1) + " Batman"
00:38:24 <HackEgo> No output.
00:38:27 <Sgeo_> :(
00:38:28 -!- sebbu has quit (Ping timeout: 248 seconds).
00:39:09 <fizzie> `js print(Array(16).join("wat" -1) + " Batman")
00:39:13 <HackEgo> NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batman
00:39:33 <fizzie> It does still have the Rhino thing of not printing out the result implicitly.
00:39:44 <fizzie> (If it's in -e.)
00:46:42 <Lumpio-> oh, JS time?
00:49:00 <Lumpio-> `js ([]+[][[]])[++[+[]][+[]]]
00:49:05 <HackEgo> No output.
00:49:11 <Lumpio-> `js print(([]+[][[]])[++[+[]][+[]]])
00:49:16 <HackEgo> n
00:49:28 <Bike> Very nice.
00:50:29 <shachaf> Well, you could get away without the print()
00:50:50 <Lumpio-> I'm still not completely sure if +()[] is the minimal charset for writing any program in JS
00:50:53 <Lumpio-> You might need !
00:52:59 -!- hagb4rd has joined.
00:55:31 -!- sebbu has joined.
00:55:31 -!- sebbu has quit (Changing host).
00:55:31 -!- sebbu has joined.
00:58:47 <Phantom_Hoover> so apparently mcbridge doesn't wear shoes
00:58:51 <Phantom_Hoover> *mcbride
01:00:02 <Phantom_Hoover> i hope this information is useful to someone
01:03:05 <shachaf> How do you know?
01:05:04 <Phantom_Hoover> i know a cs student at strathclyde
01:05:24 -!- WeThePeople has joined.
01:17:21 -!- ogrom has quit (Quit: Left).
01:23:36 -!- carado has quit (Ping timeout: 256 seconds).
01:35:32 -!- Frooxius has quit (Ping timeout: 248 seconds).
01:42:34 <Sgeo_> Hey Phantom_Hoover
01:42:42 <Sgeo_> We need a brick stat
01:42:46 <Sgeo_> http://esolangs.org/wiki/Triforce
01:43:09 <Sgeo_> Hmm, ok, so it's easier to do some things in that language
01:44:00 <Bike> "The language and name is inspired by the Triforce of the Legend of Zelda series."
01:56:48 -!- nooga has quit (Ping timeout: 252 seconds).
02:11:57 <Lumpio-> "It is not yet possible to input and store a character."
02:12:03 <Lumpio-> "⧏ Input a character and store it in the cell at the pointer"
02:12:06 <Lumpio-> eh
02:30:05 -!- WeThePeople has quit (Quit: Leaving).
02:31:58 -!- madbr has joined.
02:32:24 <madbr> designing a cpu architecture is hard :o
02:32:25 <madbr> sup
02:33:25 <madbr> it's like
02:33:29 <zzo38> madbr: What CPU architecture were you trying to design?
02:33:51 <Bike> that's an odd question. what are you supposed to say, ARM?
02:33:53 <Phantom_Hoover> ARCHIPELAGO
02:33:54 <madbr> I'm giving up on trying to do a 32bit follow up to the 65816
02:34:12 <Bike> a cpu archipelago sounds like fun.
02:34:17 <madbr> that architecture is butts
02:34:41 <madbr> it's essentially impossible to do a fast pipelined version
02:35:02 <madbr> without turning it into an out of order monstruosity
02:35:09 <zzo38> I do also want to design a computer architecture for audio/video processing using explicitly parallel computing, which can be made efficient both on FPGA and on ASIC.
02:35:48 <fftw> zzo38: why not check colorforth computer?
02:36:14 <fftw> afaik it's business ready
02:36:15 <zzo38> fftw: ColorForth is an operating system (for PC), not a computer, I think? Isn't it?
02:36:38 <pikhq> http://sprunge.us/BLQC zcat, wheeee
02:36:40 <fftw> yeah, but moore made a computer specially for it
02:36:47 <madbr> zzo: I think you should start with a RISC
02:37:01 <fftw> p144 or something
02:37:14 <madbr> and bolt-on the extra parallel stuff
02:37:49 <zzo38> Actually in this computer design I will have more than one component; the CPU will be ARM2 without a coprocessor, but I want to make up the audio/video unit too.
02:37:52 <fftw> GA144. sorry
02:38:51 <fftw> and it's not colorforth but arrayforth. Hmm, big news!
02:39:20 <madbr> zzo: maybe you should do it as an ultra configurable DMA transfer chip
02:39:21 <zzo38> I do know of ArrayForth. It is not quite what I am looking for either.
02:39:30 <zzo38> madbr: How would that work?
02:40:07 <madbr> like, you have something like a set of "instruction registers" on the dma chip
02:40:27 <madbr> you fill those registers with your "program"
02:40:45 <madbr> then you "start the transfer"
02:41:30 <madbr> the chip churns until it's done with its load
02:42:51 <zzo38> To give examples of what I intend to do, includes: emulating the Famicom PPU and APU, decoding Ogg Vorbis/Theora and other open source codecs (and placing overlays), and doing all of these things simultaneously; but have it programmable rather than fixed to any of these purposes.
02:43:35 <madbr> ogg vorbis is like super complicated :O
02:43:36 <zzo38> (I mean both the NTSC Famicom and the RGB Famicom)
02:43:52 -!- Nisstyre-laptop has quit (Quit: Leaving).
02:44:05 <zzo38> madbr: How powerful would it have to be to decode them?
02:44:53 <madbr> I'd target adpcm
02:45:03 <madbr> vorbis is like
02:45:10 <madbr> a huge ass MDCT
02:45:32 <madbr> plus some weird channel coupling and base spectrum stuff
02:45:43 <madbr> plus a mountain of huffman decrunching
02:46:35 <madbr> huffman decrunching is hard to parallelize
02:47:20 <madbr> the whole thing is super complex and multistep
02:47:43 <zzo38> Well, the decoding does not entirely have to be done on the audio/video processor; the ARM2 CPU can be used partially too, if it is not busy with other things.
02:49:07 <madbr> as for the nes apu, depends if you want a cycle by cycle emulation
02:49:18 <madbr> or scanline per scanline is good enough
02:49:29 <madbr> most emulators are per scanline I think
02:49:30 <zzo38> Yes, to do want a cycle by cycle emulation.
02:49:40 <madbr> oh god
02:50:30 <madbr> that's not going to be pretty
02:51:22 <zzo38> For NTSC PPU, including each half-clock (there are eight per pixel), which goes through a D->A and then just output directly; for RGB PPU it is a bit different; it is selected from a palette and then send to digital RGB output port. (It is not needed to support NTSC and RGB mode simultaneously)
02:51:55 <madbr> I think in that case the best way is either NES emulator running on the ARM2
02:52:05 <madbr> or nes emulation on the FPGA
02:52:34 <madbr> the PPU has insane memory access patterns that only make sense for 8 bit and ultra slow ram
02:52:48 <madbr> same thing for the 6502 cpu
02:52:49 <zzo38> Of course it will have much of emulation running on the ARM2, but video and audio should be emulated separately.
02:52:55 <madbr> dude
02:53:09 <madbr> how fast is the arm
02:53:26 <zzo38> This computer is not meant to only emulate the NES/Famicom; it is meant to run other programs too!
02:53:57 <zzo38> They said this ARM2 clone runs at 40 MHz on the Xilinx Spartan 6. But maybe it can be upgrated to work with newer models too
02:54:12 <zzo38> (The newest Xilinx FPGA model is 7, not 6)
02:54:15 <madbr> hm
02:54:42 <zzo38> 40 MHz is not enough for the audio/video.
02:54:55 <madbr> gba was, what, 16mhz?
02:55:32 <zzo38> 40 MHz is more than enough to emulate the 6502 CPU core though.
02:55:50 <madbr> the audio was a bit rough (not too many channels, games made by retards only used GB channels) but it could handle that
02:55:51 <zzo38> Yes, GBA is 16.8 MHz
02:56:14 <madbr> I think you should at least downgrade the video emulation from cycle-wise to scanline-wise
02:57:45 <madbr> at those speeds I'm not sure you're going to get ogg playing
03:02:31 <zzo38> Whichever way is done is done by software anyways; but the hardware should be design to work with all of it. It would need to be almost 43 MHz at maximum speed, if there is enough parallel that it could do all the things at once (for RGB mode that is probably also good enough, since palette lookup could also be data parallel).
03:03:37 <zzo38> NTSC Master clock is 21.47727273 MHz, but the output voltage can change every half clock, so it need to be twice as fast.
03:03:39 <madbr> what's more important, developing new games or emulating existing ones?
03:04:10 <madbr> also is ogg for playing background music in games or as a media player with nothing else running at the same time?
03:05:32 <madbr> ie is the specific ogg format important, or the format can be changed? :D
03:06:11 <zzo38> The format could be changed if running as a background in games, but it should be capable to play Ogg audio and video simultaneously when not doing anything else.
03:06:31 <zzo38> And I intend that it can both make new games and emulate old ones.
03:07:21 <madbr> ok then I'd check if it's possible to do the huffman decrunching and channel decorrelation stuff in software
03:07:27 -!- monqy has joined.
03:07:38 <madbr> and only use the large throughput unit for doing the MDCT transform
03:07:55 <madbr> http://en.wikipedia.org/wiki/Modified_discrete_cosine_transform <- mdct
03:08:19 <madbr> video?
03:08:20 <zzo38> Yes, doing much of it in software is OK. Ogg audio/video is not needed for games; only for standalone. Games can have different programming on it.
03:10:14 <madbr> that means theora?
03:10:39 <madbr> or whatever the name of their video codec is
03:12:05 <madbr> still sounds hard to me
03:12:46 <zzo38> Yes, it is called Theora
03:13:04 <madbr> usually that kind of decoding is done on crazy systems with instruction cache data cache FPU 2-way issue etc
03:13:36 <madbr> that run in the hundreads of hz
03:15:08 <madbr> ogg is probably possible I guess
03:16:21 <zzo38> Yes, OK, but I only need to decode standard definition, not high definition, and not at the same time as any game or anything. If it cannot play those video formats with the first version of the hardware that might be OK, if later version might have faster speed and so on might be improve, if it is also backward-compatible.
03:17:09 <zzo38> Ogg audio, too, needs not run at the same time as a game.
03:18:22 <madbr> standard definition is still 640x480
03:18:31 <madbr> that's murder on a 40mhz system
03:18:57 <madbr> I wonder what sort of DCT theora uses
03:20:33 <madbr> you're looking at at least hardware chroma subsampling
03:20:51 <madbr> (ie video modes geared only towards video playback, yeech)
03:21:04 <madbr> and at least hardware DCT block decoding
03:21:13 <madbr> well, "hardware" (accelerated)
03:23:01 <pikhq> You could maybe pull MPEG-1 on that.
03:23:33 <zzo38> I have read the Xilinx FPGA datasheets, and they do have multiple clock signals so it may be possible that different parts can run at different speeds. I also don't know what speed improvement would be gained by upgrading to 7 series FPGAs, or by taking out the coprocessor and instead hard-coding the things that would be controlled by the coprocessor (such as memory protection and caching regions).
03:24:19 -!- Phantom_Hoover has quit (Remote host closed the connection).
03:25:15 <madbr> I'm pretty sure you'll have to downgrade the video codec to something less hungry
03:25:50 <zzo38> If the first version won't do Theora real time, I suppose that is OK, since a later hardware version might make more speed and other things, especially if a ASIC is made (which it probably won't be unless enough people request it).
03:26:50 <madbr> what's the video playback for anyways?
03:28:04 <zzo38> To watch a movie. Yes, it could be any video codec which it is possible to make the software to play it. If some features have to be omitted from the first hardware version that will be OK, I guess.
03:28:05 -!- DH____ has quit (Read error: Connection reset by peer).
03:28:17 -!- DHeadshot has joined.
03:28:52 -!- azaq23 has quit (Quit: Leaving.).
03:45:39 <zzo38> Do you know of .VGM format of musics?
03:46:08 <zzo38> I am making a program to make .VGM musics, I intend to have support of all of the chips, eventually.
03:47:20 <zzo38> (Existing software (XPMCK, VGM Music Maker, Deflemask, MIDI to VGM, etc) only support some chips.)
03:51:09 <madbr> you know the NDS?
03:51:21 <madbr> that's about the range of power you're going to get
03:51:40 <madbr> possibly something psx - n64 - pentium I- ish
03:51:48 <zzo38> I do have Nintendo DS and have programmed it in the past
03:52:27 <tswett> What classes of programs are capable of solving their own halting problems?
03:53:03 <Bike> I think none of them? That's a Turing degree thing...
03:53:13 <Bike> Maybe there's a degree omega in there?
03:53:17 <tswett> None of the ones that are Turing-complete or better.
03:53:30 <tswett> But ones that are less than Turing-complete might be able to do it.
03:53:45 <tswett> In particular, this set of programs can do it: {Output "The program halts." and halt.}
03:54:20 <zzo38> madbr: Yes, OK, like I said the first one may not be that much more powerful but later ones may get improvement.
03:54:58 <madbr> ogg is realistic you don't do other stuff at the same time
03:55:03 <madbr> but theora?
03:55:25 <tswett> I think that given a finite state machine with n states, you can construct a finite state machine with, like, O(n^3 log n) states that solves its halting problem.
03:55:48 <zzo38> If I try and find out it cannot be done with this system, then I won't have Theora in the first version. But, yes, it could do Vorbis, it needs not do other things at the same time.
03:56:34 <tswett> Run it for n steps; if it loops, it must have looped by now. Record its state. Run it for n! steps; if it loops, then running it for that long must cause it to loop an integer number of times.
03:56:53 <tswett> No, all this isn't necessary at all.
03:57:04 <tswett> Simply run it for n steps. If it hasn't halted by then, it never will.
03:57:22 <tswett> So the new FSM only needs to have O(n log n) states.
03:58:01 <zzo38> Do you have the program to make it embed?
03:58:24 <tswett> Come again?
04:02:43 <zzo38> Which C compilers support the __attribute__((constructor)) command which is supported in GCC?
04:09:53 <Gregor> At this point, probably most that aren't Visual Studio.
04:09:54 <lambdabot> Gregor: You have 2 new messages. '/msg lambdabot @messages' to read them.
04:12:09 <madbr> zzo : 3d games?
04:14:00 <madbr> zzo38 : the stuff that's useful for games is kinda different than the ones for media decoding
04:14:09 <madbr> at least, for sound
04:15:07 <madbr> sound stuff useful for games: sample mixing! (like s3m/mod/xm/it) adpcm decoding, good sounding reverb
04:15:40 <zzo38> madbr: Many games that don't need 3D graphics tend to have it. I don't really need really fancy 3D graphics anyways; but it should be good at 2D graphics, and capable of 3D graphics (not necessarily really good one though). Well, what is done for the sound, whether game or media or whatever, can be done by using different programs.
04:16:47 <zzo38> But yes I can understand, good for S3M/MOD/XM/IT, ADPCM, reverb, I do hope to have such things possible to do! Is why, I intend having a parallel processor which is programmed by explicitly parallel it can do it; I can think of things and try think see what works.
04:17:03 <tswett> Is there any good reason for making your game itself create good sounding reverb, rather than just using samples that already have good sounding reverb?
04:17:31 <zzo38> tswett: The sample may be played at different speeds, I think?
04:18:00 <tswett> Hm. Yeah, that would necessitate recalculating the reverb.
04:18:07 <madbr> stuff useful for media decoding (mp3, ogg): MDCT/subband filtering, huffman/arithmetic encoding
04:18:13 <madbr> tswett: sequenced music
04:18:43 <madbr> also it saves on the sample data (you don't have to add in tails) and it generally sounds good
04:19:01 <zzo38> But, also such thing as synthesizer with square wave, saw wave, simple FM synthesizer, can be used too, possibly.
04:19:20 <tswett> Imagine a function omegaTimes :: (Ordinal -> Ordinal) -> Ordinal, such that omegaTimes f is the smallest ordinal number greater than all of 0, f 0, f (f 0), f (f (f 0)), and so on.
04:19:32 <madbr> zzo: not much point in doing FM if you can mix samples
04:19:48 <tswett> What's the smallest ordinal larger than all ordinals you can express using omegaTimes? Presumably it's the Church–Kleene ordinal.
04:19:54 <zzo38> With a general enough system it may be able to do game audio by themself, and doing some media decoding with help from the CPU.
04:20:34 <madbr> it's not very hard to play s3m on a 40mhz ARM
04:20:46 <madbr> and s3m is easy to compose (for me :3 )
04:22:47 -!- Jafet has quit (Quit: Leaving.).
04:25:28 <madbr> same for gfx, there are like 3 pretty different things to go for
04:26:13 <madbr> ¸1) 2d gfx (drawn by scanline which saves a lot of bandwidth)
04:26:29 <madbr> 2) 3d gfx (using framebuffer, also applicable to 2d gfx)
04:27:44 <madbr> 3) video decoding
04:28:00 <tswett> That would mean that every ordinal number less than the Church–Kleene ordinal can be bounded above by an ordinal number written using omegaTimes, and yet there is no computable sequence of omegaTimes expressions that approaches the Church–Kleene ordinal.
04:28:16 <tswett> So creating larger and larger ordinal numbers using omegaTimes must require more and more ingenuity.
04:31:16 -!- Nisstyre has quit (Ping timeout: 245 seconds).
04:32:37 <madbr> might be cool to have pixel sprites over chroma subsampled background maybe
04:32:38 -!- Arc_Koen has quit (Quit: Arc_Koen).
04:33:34 <zzo38> madbr: Maybe
04:35:35 <zzo38> Nevertheless much of this is must be done in a separate processor which is very parallel, separate from CPU, one that I have to design, having high enough maximum speed and maximum threads.
04:36:44 <madbr> you might have memory bandwidth problems
04:37:26 <zzo38> I was thinking of that too.
04:37:40 <madbr> ok first this is it gonna have cache
04:37:54 <madbr> also what's the ram going to be?
04:37:59 -!- Jafet has joined.
04:38:30 <zzo38> madbr: The ARM2 clone does have cache; it is an existing Verilog program. The other parts, I don't know.
04:40:42 <zzo38> Possibly it would have something like 1GB or 2GB main RAM, but possibly having separate cache RAM for different component if it would help.
04:42:52 -!- augur has joined.
04:44:09 <madbr> yeah but I mean is the ram going to be sdram?
04:46:01 -!- Nisstyre has joined.
04:47:23 <kmc> disappointing fact of the day: HTML/CSS can't represent a color as green as a green laser pointer
04:47:26 <kmc> not nearly
04:49:29 <zzo38> I don't know everything about it yet. What RAM do you think should be used? I don't know a lot about that. It is why, I don't do entirely by myself; there are other people I know too, who can help with it too.
04:49:49 <tswett> For good reason, no? You want every color representable with CSS to be displayable on a computer monitor, and you don't want the color of a green laser pointer to be displayable on a computer monitor.
04:50:06 <madbr> static ram is expensive and comes in small sizes (like 256k and such)
04:50:18 <madbr> but the timing is consistent and it doesn't have to be refreshed
04:50:20 <pikhq> tswett: Why wouldn't you want the *color* representable?
04:50:25 <kmc> well "colors representable on a computer monitor" is a moving target
04:50:41 <pikhq> Note that the color is not the dangerous aspect of lasers at all.
04:50:52 <madbr> DRAM is cheap and comes in huge amounts
04:50:53 <zzo38> madbr: I know that mich of RAM; probably the main RAM would be dynamic, but there may be smaller RAM which is static. I don't know exactly everything about that.
04:50:53 <kmc> and software is harder to upgrade than hardware, paradoxically
04:50:55 <tswett> You mean "displayable"?
04:51:02 <kmc> sure yeah
04:51:02 <pikhq> Sure, whatever.
04:51:04 <tswett> Because that would make the monitor really expensive.
04:51:21 <pikhq> I fail to see your point.
04:51:23 <kmc> laser projectors are a consumer product you can buy
04:51:27 <kmc> i don't know what their color gamut is
04:51:33 <madbr> zzo: well, if you use cache you can pretty much ignore RAM in your design
04:51:43 <kmc> Adobe RGB comes much closer to being able to represent a green laser
04:51:43 <pikhq> Probably a function of the lasers used.
04:51:45 <kmc> fwiw
04:51:46 <Bike> Now I kind of want my computer screen to be a class 4, except then I'd go blind so probably not.
04:51:56 <madbr> your cpu interacts with cache, cache interacts with DRAM
04:52:14 <Sgeo_> Are most unrepresentable colors somewhere between two easily representable colors?
04:52:48 <Sgeo_> If someone only ever looks at images on a screen, how much are they really missing out on? Just some colors in the cracks, or some vibrant hues that the screen can't show?
04:52:53 <kmc> Sgeo_: CSS uses sRGB colors
04:52:55 <tswett> Sgeo_: well, I suppose so, in the sense that colors such as (1/pi, 0, 0) are unrepresentable.
04:53:00 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
04:53:02 <kmc> here's its color chart: http://en.wikipedia.org/wiki/File:Cie_Chart_with_sRGB_gamut_by_spigget.png
04:53:12 <tswett> But we're talking about "vibrant hues that the screen can't show".
04:53:18 <kmc> the triangle are colors representable by sRGB
04:53:33 <kmc> monochromatic things like lasers lie on that outside parabola-ish shape
04:53:38 <zzo38> Sgeo_: You could make up a color representation scheme which include all range, including infrared and ultraviolet, with intensity per frequency?
04:53:40 <pikhq> Technically there's also some colors missing because of quantization, but you can't really notice those.
04:53:45 <tswett> What I'd really like to see is a *teal* laser pointer.
04:53:46 <kmc> (the colors in this image itself are obviously 'not to scale')
04:54:00 <zzo38> (You also need high dynamic range too, if you want to do this!)
04:54:27 <Sgeo_> So, 0,255,0 on my monitor is not the greenest green I can see?
04:54:32 <kmc> correct
04:54:39 <kmc> a green laser is much greener
04:54:49 <shachaf> this one goes to 0,256,0
04:54:52 <madbr> zzo: does the fpga have onboard multipliers?
04:55:19 <kmc> in fact you're able to perceive a green color which is greener than any color you can directly see
04:55:22 <kmc> http://en.wikipedia.org/wiki/Imaginary_color#Perception_of_imaginary_colors
04:55:33 <zzo38> madbr: Actually I looked at the datasheet and it does have "DSP blocks" for multiplication.
04:55:51 <pikhq> 0,255,0 is only as green as the Rec. 709 green primary.
04:55:55 <madbr> are they like 18x18bit multipliers or something like that
04:56:03 <shachaf> All colors are imaginary.
04:56:13 <pikhq> (that is, it is a color of green emitted by a particular phosphor, which is much less green than a green laser)
04:56:15 <Bike> nice job, kodak.
04:56:24 <kmc> when i was young i thought of color as a physical property of the world, and i continually find it trippy as hell to learn more and more about how it's actually a property of the human visual system
04:56:26 <Bike> shachaf: QUALIA
04:56:26 <madbr> my guess is that you're going to design around those DSP blocks and the memory IO architecture :D
04:56:49 <Sgeo_> This is the best classroom ever.
04:56:52 <kmc> ours is but a single arbitrary and awkward 3-dimensional projection of the infinite-dimensional space of emission spectra
04:56:53 <Bike> kmc: i'm continually more and more amazeed by how complicated the damn thing is
04:56:57 <zzo38> (However, I intend not to lock it to one FPGA only, even if, it may have conditional compiling commands to make it efficient for certain FPGA models.)
04:57:24 <kmc> there's an extension to sRGB called scRGB... "The cost of maintaining compatibility with sRGB is that approximately 80% of the scRGB color space consists of imaginary colors."
04:57:33 <Bike> http://en.wikipedia.org/wiki/Complex_cell <-- Like I can't even believe these things exist.
04:57:37 <madbr> zzo: oh god
04:57:42 <kmc> anyway this lets you have RGB components outside [0,1] to represent points outside the sRGB gamut
04:57:57 <pikhq> That is hilarious.
04:58:19 <zzo38> I don't want any "vendor lock" on the design. This might require a few changes, such as adding conditional compiling commands, though.
04:58:47 <kmc> where are the colorspaces for tetrachromats?
04:59:05 <pikhq> What about colorspaces for dichromats?
04:59:07 <Bike> Maybe they've designed some for experiments with birds.
04:59:17 <madbr> zzo: well, no, but you need some kind of spec to design to<
05:00:19 <kmc> pikhq: fair enough
05:00:51 <zzo38> madbr: Do you know if Verilog has commands for conditional compiling? Perhaps that can be used.
05:00:58 <madbr> no idea
05:01:28 <zzo38> If it doesn't have, then a preprocessor could be made up which can add such things on.
05:02:08 <kmc> Sgeo_: my friend wants to do this project where he'll photograph great artworks in world museums, both with a normal camera and with a spectrophotometer
05:02:33 <Sgeo_> kmc, hmm, interesting
05:02:38 <kmc> the former only samples three points on the emission spectrum (red, green, blue) but the latter captures many more
05:02:58 <kmc> then you can make an image which is, say, a picture of the mona lisa, except that every pixel which can't be faithfully reproduced by your computer screen is just black
05:03:04 <kmc> and then you would know exactly how much you're missing out on
05:03:20 <pikhq> God, if we run into alien intelligence all our visual stuff will be so, so useless.
05:03:28 <kmc> mona lisa is kind of bland
05:03:41 <Bike> Isn't that how they do analysis of paintings? Seeing what was erased and shit.
05:03:42 <kmc> van gogh museum?
05:03:49 <kmc> yeah
05:04:13 <Bike> pikhq: http://www.scp-wiki.net/scp-163
05:04:51 <madbr> zzo: there's also a latency-vs-number of gates tradeoff
05:06:21 <madbr> the more latency you build into operations, the higher you can clock stuff and the less gates it takes
05:06:28 <madbr> but the harder to program :D
05:07:34 <tswett> Surely the best thing about the SCP wiki is the fact that the objects' containment procedures are listed before their descriptions.
05:08:43 <Bike> priorities!
05:09:26 <Sgeo_> kmc, oh, sorry, wasn't looking at IRC. That is very interesting.
05:09:34 <tswett> Well, in the real world, you'd probably want at least a brief description of the object right at the top.
05:09:59 <madbr> zzo: another possibility is adding some kind of SIMD unit to the arm
05:10:03 <tswett> "SCP-1234-1 must at all times be closer to SCP-1234-2 than to SCP-1234-3" is a useless instruction if you don't know what the three things look like.
05:10:43 <pikhq> tswett: I assume they're labelled.
05:10:44 -!- DHeadshot has quit (Read error: Connection reset by peer).
05:11:03 <tswett> What if they're really delicate or slippery or something?
05:11:07 -!- DHeadshot has joined.
05:11:14 <Bike> I think it's kind of nice narratively. Gives you some idea of what it is before the description, like an ad or something, completely divorced of extra info.
05:11:18 <Sgeo_> http://www.scp-wiki.net/scp-1960-j
05:11:41 <Bike> pikhq: a lot of them aren't really things you can label. like a two kilometer wide pumpkin, a virus strain, or a star or something.
05:11:43 <Sgeo_> ^^favorite SCP
05:11:55 * copumpkin is only one kilometer wide :(
05:12:23 <tswett> But yeah, narratively, it does a really good job of creating suspense.
05:12:35 <tswett> copumpkin is half a millimeter wide.
05:12:41 <pikhq> Yeah. From a narrative standpoint it's quite clever.
05:12:46 <zzo38> madbr: Maybe that is a possibility, but I intended, having the ARM core programmable by GCC and then, a separate parallel processor, designed to be faster and more parallel (even if that makes it difficult to program).
05:13:04 <Bike> Sgeo_: wow that's great
05:13:24 <Bike> "as if exhibiting a compulsive effect"
05:13:26 <kmc> if a pumpkin is two kilometers wide then maybe a copumpkin is two millimeters wide?
05:13:32 <copumpkin> :(
05:13:40 <kmc> zzo38: like cell
05:13:43 <zzo38> I am OK even if that makes it difficult; why did you think, I am on esolang wiki?
05:13:46 <Bike> copumpkin: Presumably you're 2 km tall to make up for it?
05:13:50 <copumpkin> oh yup
05:14:07 <kmc> carbon nanopumpkin
05:15:30 <tswett> Two millimeters wide and two kilometers tall. Hm.
05:16:16 <tswett> English really has an excess of words for dimensions of things. Length, width, depth, thickness. That's clearly too many.
05:16:19 <tswett> Not to mention height.
05:17:40 <madbr> zzo: yeah that's fine
05:18:47 <madbr> zzo : I guess it's essentially some kind of DSP
05:19:07 <copumpkin> breadth!
05:19:21 <copumpkin> girth
05:19:29 <zzo38> madbr: I guess so.
05:19:43 <tswett> I don't think girth counts as a dimension, since it's not measured linearly.
05:19:52 <tswett> Breadth, yeah, that's another one.
05:20:20 <Bike> Girth just makes me think of the one guy in Paper Mario.
05:20:28 <copumpkin> tswett: bigot.
05:20:38 <copumpkin> always discriminating against things that aren't linear
05:20:49 <madbr> zzo: how about something like 8 ALUs
05:21:02 <madbr> each alu has 2 input ports
05:21:16 <tswett> I wonder why "thickness" is the only one of those not ending in -th.
05:21:30 <copumpkin> thickth
05:21:35 <copumpkin> warmth? coldth
05:22:25 <zzo38> tswett: Because they begin with "th" instead.
05:22:37 <zzo38> In the Dungeons&Dragons game we generally assume even non-humans characters see the same colors, unless it is only grayscale; maybe should Icosahedral RPG rules mentioned differently, or what?
05:22:55 <madbr> and each input port can read the result from the previous 4 cycles or something like that
05:23:10 <zzo38> madbr: I was thinking of something which is a little bit like that actually.
05:23:22 * copumpkin goes to sleep
05:23:37 <tswett> Maybe you'd have to alter the word "thick" in the same way that "long" becomes "leng", "wide" becomes "wid", "deep" becomes "dep", and "high" becomes "heigh".
05:23:46 <madbr> thickth
05:23:54 <pikhq> Thuckth.
05:24:56 <madbr> or maybe 8 units
05:24:58 <tswett> Oh boy. They were distinct in Old English, it appears; you have to go back to Proto-Germanic to see where they were identical.
05:25:06 <madbr> every unit has something like 4 registers
05:25:23 <tswett> PG "langgaz" became OE "lang", but PG "langito" became OE "lengðu".
05:25:48 <tswett> "Width" is from the 1620s.
05:25:55 <zzo38> madbr: They were similar to the kinds of things I was thinking of.
05:26:08 <madbr> and on each cycle the unit reads from one of the 32 registers and writes to one of its 4 registers
05:26:16 <madbr> or maybe inversely
05:26:34 <pikhq> Damn, it'd be inaccurate for me to spell it "widþ".
05:26:39 <madbr> like, you have a bunch of ALUs that read from 2 fixed registers
05:26:42 <tswett> "Breadth" is ultimately an "alteration" of OE "brædu", from "bræd", "probably by analogy of long/length".
05:26:53 <madbr> but can write to any of any of the 32/64/etc registers
05:27:21 <pikhq> Not þat þat ſhall ſtop me in my Efforts to uſe Engliſh in ſilly Ways.
05:27:23 <zzo38> madbr: Yes, that is also some idea. I can consider all of these things.
05:28:15 <tswett> "Depth" is likewise by analogy. "Height", however, actually has a good etymology.
05:28:24 <tswett> pikhq: dōn't forget your macrons!
05:28:50 -!- hagb4rd has joined.
05:28:57 <madbr> zzo: one idea I had was "trace execution"
05:29:03 <pikhq> I don't recall where those go. :(
05:29:08 <madbr> you have a normal RISC style program
05:29:15 <madbr> and it "runs" it
05:29:26 <madbr> but each cycle isn't one operation it does
05:29:34 <pikhq> Demo, rōmaji de nihongo wo kaitara, zenbu oboeteru.
05:29:34 <madbr> rather, it's one unit that it assigns
05:30:42 <kmc> p.s. send pocky
05:31:09 <Bike> i thought they just went on long vowels.
05:31:21 <pikhq> Iya, pokkii hoshikunai.
05:31:40 <tswett> I know the words "rōmaji", "nihongo", and "wo", and I know that I've heard "demo" and "zenbu" in the second opening theme and the first closing theme of Fullmetal Alchemist: Brotherhood, respectively.
05:32:03 <pikhq> "But, when writing Japanese, I remember them all."
05:32:13 <pikhq> Erm.
05:32:22 <pikhq> "But, when writing Japanese with the Roman alphabet, I remember them all."
05:32:34 <shachaf> You should tell me about diagonal functors!
05:32:47 <tswett> Oh right, "kaitara" is the same verb as "kaite".
05:32:56 <tswett> Is there a rule for getting the citation form from the -te form?
05:33:03 <madbr> how large are register files in terms of gates anyways
05:33:20 <pikhq> I'unno. All the rules are from "-u" anyways.
05:33:42 <pikhq> And I'm not too good at remembering the rules in an easily expressable way, the verbs just come out conjugated.
05:34:03 <zzo38> madbr: I don't know
05:34:15 <tswett> How is "kaitara" formed?
05:34:55 <shachaf> «My question is: How do I convert the output from (CurlCode, String) to String?»
05:35:06 <tswett> "Kaita" (the perfective) with "-ra"?
05:35:22 <pikhq> Yes.
05:35:52 <pikhq> It's a bit more literally "But, if I write [...]"
05:36:26 <zzo38> madbr: Have you seen the latest of my Dungeons&Dragons game recordings, yet, however?
05:36:29 <pikhq> But who translates literally? :)
05:36:31 <zzo38> (Just curious)
05:36:45 <zzo38> pikhq: Do you?
05:36:51 <pikhq> No.
05:36:52 <zzo38> pikhq: Do you translates literally?
05:36:57 <pikhq> I do not.
05:37:00 <zzo38> OK
05:37:15 <tswett> I wonder if that's the same "-ra" that appears in a certain place in the first opening theme...
05:37:26 <pikhq> Probably.
05:37:46 <pikhq> That conditional is fairly common.
05:38:08 <madbr> nops
05:38:47 <madbr> zzo: I'd start by looking at how much data you can load in per sample
05:39:06 <madbr> er per cycle
05:39:58 <zzo38> madbr: OK. I will try.
05:40:13 <tswett> Aha, here's the line: "Yarinokoshiteru koto yarinaoshite mitai kara"
05:40:32 <pikhq> Oh, no.
05:40:37 <pikhq> That's not the same "-ra".
05:40:44 <pikhq> "kara" is a single unit.
05:40:46 <pikhq> "Because".
05:40:47 <tswett> Which is translated as... "Tengo cosas por hacer ya que anhelo rehacerlos todos."
05:40:48 <madbr> If it's 32bits load per cycle then for audio mixing you're going to need 2 cycles sample data (if using linear interpolation) plus 1 for mixing buffer input (plus 1 for mixing buffer output)
05:40:56 <madbr> though I guess you can mix multiple channels
05:41:02 <tswett> Let me find the English subtitled version...
05:41:57 <madbr> so there's no point in pipelining/vectorizing/paralellizing the rest of the algo so much that it fits in less than 4 cycles
05:44:06 <tswett> Apparently "I want to try doing over the things I've left undone" is the translation used in the English version of FMA:B.
05:44:18 <kmc> "The name D65 suggests that the correlated color temperature (CCT) should be 6500 K, while in truth it is closer to 6504 K. This discrepancy is due to the scientific community's revision of the constants in Planck's law after the definition of the illuminant."
05:44:31 <pikhq> That's a decent translation.
05:44:39 <Bike> the illuminant
05:44:47 <tswett> How would you translate it?
05:45:19 <pikhq> "I want to retry the things I left undone" maybe?
05:45:28 <pikhq> Or maybe unfinished.
05:45:39 * tswett nods.
05:46:27 <zzo38> madbr: Thank you for information.
05:47:37 <pikhq> やり残してる事やり直して見たいから Also, the sentence is a *lot* clearer with kanji.
05:48:40 <zzo38> pikhq: Japanese is working like that in general.
05:49:01 <pikhq> This is true.
05:52:20 <tswett> Here's a lyric I've seen translated two very different ways, in kanji why not: "だから 気づかぬふリ 再生を選ぶ"
05:52:39 <tswett> I assume those are official kanji, not fan kanji. *shrug*
05:54:04 <pikhq> Well, that's a very strange sentence.
05:54:18 <tswett> I guess that "ri" is, in fact, in hiragana, not katakana.
05:54:37 <pikhq> It's katakana "ri" in what you pasted there.
05:54:52 <tswett> Right, but it's actually a hiragana "ri" which I mistook for a katakana "ri".
05:55:05 <pikhq> Ah.
05:55:51 -!- dessos has quit (Quit: leaving).
05:57:11 <tswett> One translation was "So pretending not to notice, I choose rebirth"; the other was "So I choose to replay the imperceptible pretense".
05:57:29 <tswett> More or less the same content words in each case, but related in completely different ways.
05:57:51 <pikhq> Oh, right, -ふり is to pretend. Duh.
05:57:56 <tswett> Also the romaji for what it's worth: "Dakara kizukanu furi saisei wo erabu".
05:58:29 <pikhq> "So, pretending not to notice, I choose rebirth" is much more close to what the sentence *says*.
05:58:44 <pikhq> Though context may justify the latter.
06:00:36 -!- dessos has joined.
06:00:53 <tswett> So what's "kidzukanu"?
06:03:02 <pikhq> Negation of "kidzuku", to notice.
06:03:50 <pikhq> You'd normally do "kidzukanai", but -nu instead of -nai is perfectly acceptable.
06:04:12 <pikhq> I don't quite know what the difference is, aside from -nu sounding more... poetic?
06:06:15 <zzo38> Do you have any interests in the Dungeons&Dragons game I have recorded, though?
06:06:34 <pikhq> Formed from "気" and "付く", "spirit" and "attach".
06:06:49 <pikhq> No I don't know how that quite works either, but that's the etymology.
06:06:58 <zzo38> Do you have any interests in a program to print out file of Internet Quiz Engine?
06:08:27 <Sgeo_> `slist
06:08:29 <HackEgo> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
06:08:37 <madbr> I'm looking up some pdf file for the "DSP block" in the FPGA
06:08:54 <Bike> slist?
06:09:06 <tswett> So it definitely sounds like "So pretending not to notice, I choose rebirth" is pretty much a literal translation.
06:09:23 <shachaf> Bike: That's the old `list.
06:09:28 <shachaf> Bike: Do not run the new one.
06:09:38 <pikhq> `list
06:09:42 <pikhq> I have not been so ordered.
06:09:44 <HackEgo> cuttlefish boily elliott Taneb HackEgo Sgeo monqy
06:09:48 <shachaf> Great.
06:10:02 <madbr> zzo38 you can probably come up with like half the design with the specs of the DSP slice and the memory IO specs
06:10:06 <shachaf> It's for your own good that you don't want to run it.
06:10:23 <pikhq> tswett: Yeah.
06:10:26 <shachaf> monqy: hello mister monqy
06:10:33 <pikhq> tswett: Context would determine what you'd want to do with it.
06:10:35 <zzo38> madbr: OK, it can be considered.
06:10:41 <monqy> hi shachaf
06:10:46 <pikhq> tswett: Out of context that's pretty much what you'd have to do though.
06:10:56 <shachaf> A race conditon in ptrace can lead to kernel stack corruption and arbitrary kernel-mode code execution.
06:11:03 * tswett nods.
06:11:12 <shachaf> good old ptrace
06:11:22 <Bike> `run cat $(which list)
06:11:22 <tswett> It's likely, I suppose, that that lyric wasn't intended to mean anything in particular anyway.
06:11:23 <HackEgo> ​#!/bin/sh \ oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//; s/.*\* //; s/ .*//"); cd $oldpwd; fgrep -q "$name" bin/list || echo -n "$name " >> bin/list; echo cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq
06:11:30 <kmc> shachaf: yeah
06:11:38 <Bike> This looks like a good program.
06:11:38 <kmc> i don't understand the exploit yet
06:11:41 <kmc> it's p. complicated
06:11:48 <kmc> http://seclists.org/oss-sec/2013/q1/326
06:12:18 <madbr> zzo: like, once you have that just put multiplexers and registers to route the signals from the memory to the DSP blocks back to the memory
06:13:20 <madbr> and then some mechanism for storing the multiplexer and register and DSP slice OPs and memory in OPs and memory out OPs for each processing cycle
06:13:30 <kmc> shachaf: i don't think you can even build a linux kernel without ptrace unless you patch :(
06:13:56 <shachaf> ptrace condition
06:13:58 <kmc> though i would probably jump off a bridge if i had to maintain a server without strace available
06:14:17 <kmc> cause it's like the only tool i know for figuring out why shit is broke
06:14:18 <zzo38> madbr: Well, it is OK, but still I intend not to make it vendor-locked; it should be non-vendor-locked Verilog codes (although it might includes conditional compile command for different FPGA with different features).
06:14:35 <shachaf> kmc: Well, given strace, who needs any other tools?
06:15:15 <zzo38> (I might consider relying on vendor-locked features once that vendor makes open-source FPGAs.)
06:15:41 <shachaf> monqy: why do people write limits with an integral sign.........
06:15:42 <zzo38> (Actually, once they do that, I may even do such things as dynamic hardware programming and so on.)
06:15:53 <Sgeo_> `list
06:16:00 <HackEgo> cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq
06:16:06 <Bike> Sgeo, that's just redundant.
06:16:14 <monqy> shachaf: good question
06:16:19 <Sgeo_> No it's not. pikhq needs to observe the effect
06:16:32 <Sgeo_> Oh, I guess he saw what it does
06:16:32 <shachaf> monqy: do you understand limits
06:16:34 <Sgeo_> derp
06:16:55 <shachaf> monqy: i understood them and then i saw the "'formal' 'definition'" and now maybe i don't understand them again
06:17:17 <monqy> shachaf: i havent gotten around to them yet
06:17:51 -!- fgrep has joined.
06:17:55 <fgrep> `list
06:17:58 <HackEgo> cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq Sgeo_
06:18:00 <fgrep> `list
06:18:03 <HackEgo> cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq Sgeo_
06:18:11 -!- fgrep has quit (Client Quit).
06:18:27 <kmc> heh i like any code of the form while (1) { ... exit(0); }
06:19:05 <monqy> shachaf: hi shachaf
06:19:57 <shachaf> kmc: Does it have a continue?
06:20:16 <madbr> zzo : it might be interesting to have a separate unit for gfx and sound
06:20:31 <Bike> are you talking about calculus limits or some cat theory nuttiness
06:20:33 <shachaf> monqy: did you just disapproval hi me
06:20:46 <madbr> the gfx unit would presumably look like the multi-unit shader stuff in gfx cards
06:20:49 <monqy> :-)????
06:21:19 <madbr> the sound unit could be something like the sb live where you get 512 cycles for each sound output samples
06:23:16 <madbr> so if you want to mix 64 channels you have to do it in 8 cycles :D
06:34:16 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
06:42:17 <tswett> repeat halt(0) until true;
06:42:42 <tswett> So how strong is the calculus of constructions, anyway?
06:42:54 <madbr> hmm
06:42:56 <shachaf> i love the calculus of constructions
06:42:58 <shachaf> it is so easy
06:42:59 <tswett> If ZFC can show that a Turing machine halts, can the CoC prove the same?
06:43:35 <shachaf> tswett: You should explain limits to me.
06:43:43 <shachaf> As natural transformations from the diagonal functor.
06:43:43 <madbr> it would be possible to make a very simple RISC cpu that doesn't even need cache and can directly work with DRAM...
06:44:04 <madbr> but a write/read instruction would take something like 7 cycles
06:44:15 <tswett> ZFC proves that the CoC is consistent, doesn't it? So I guess there must be a Turing machine that halts that the CoC can't prove halts.
06:44:23 <madbr> other instructions (math, jumps) would take 1 cycle though
06:44:43 <shachaf> I guess tswett doesn't like diagonal functors.
06:44:58 <tswett> shachaf: yeah, I can do that.
06:45:08 <tswett> shachaf: but first, what's the diagonal functor?
06:45:13 <madbr> multiple reads/writes from a single instruction would take only 1 extra cycle per extra operation tho
06:45:14 <kmc> CoC SMASH!
06:45:38 <shachaf> tswett: It's the boring one that maps to a constant.
06:46:00 <tswett> All right.
06:46:01 <madbr> also it would have a branch delay slot
06:46:04 <madbr> like MIPS :D
06:46:06 <tswett> And what are limits?
06:46:17 <shachaf> tswett: Wait, I don't mean to a constant.
06:46:29 <shachaf> Never mind.
06:46:36 <tswett> ^_^
06:46:37 <shachaf> tswett: Limits are universal cones over a diagram.
06:46:51 <tswett> Oh, of course.
06:47:32 <tswett> Now excuse me for a moment while I try to figure out what the Chicago category theory is all about.
06:47:54 <shachaf> tell me when you find out thx
06:48:05 <tswett> Will do.
06:48:09 <shachaf> tswett: Do you know terminal objects?
06:48:11 <shachaf> And products?
06:48:18 <tswett> Yeah.
06:48:28 <shachaf> Products as in https://upload.wikimedia.org/wikipedia/commons/b/b2/CategoricalProduct-03.png
06:48:40 <tswett> Yup.
06:48:52 <shachaf> How about pullbacks?
06:48:58 <tswett> Nope.
06:49:16 <shachaf> OK, so start with pullbacks.
06:49:25 <shachaf> They're sort of like products.
06:49:50 <shachaf> In fact they're called "fibered products" sometimes.
06:50:03 <shachaf> Here's the diagram in this case: https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Categorical_pullback_%28expanded%29.svg/225px-Categorical_pullback_%28expanded%29.svg.png
06:50:25 <shachaf> Er, https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Categorical_pullback_%28expanded%29.svg/500px-Categorical_pullback_%28expanded%29.svg.png
06:50:55 <shachaf> So you have X --f--> Z <--g-- Y
06:52:40 <shachaf> OK, well, first, https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Categorical_pullback.svg/500px-Categorical_pullback.svg.png has to commute.
06:52:46 <shachaf> Then you can add the rest of the diagram on.
06:52:48 <tswett> Mm. Let me find a simple example of a pullback.
06:53:18 <shachaf> Sets have a simple example!
06:53:21 <tswett> In the category of sets, a pullback of f and g is... the set of all pairs (x, y) such that f(x) = g(y).
06:53:25 <tswett> Right?
06:53:27 <shachaf> Yes.
06:53:49 <tswett> Whew. I correctly parroted Wikipedia.
06:55:19 <shachaf> That's the what's-it-called.
06:55:32 <shachaf> So clearly the what's-it-called works with this diagram, right? https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Categorical_pullback.svg/500px-Categorical_pullback.svg.png
06:55:44 <tswett> Yeah.
06:55:46 <shachaf> Where p1 = fst; p2 = snd
06:55:49 <tswett> Now...
06:56:12 <shachaf> P is X ×_Z Y in this case.
06:56:38 <tswett> Suppose that X is the ring of integers modulo 2, Y is the ring of integers modulo 3, Z is the ring of integers modulo 1 (the trivial ring, aye?), and f and g are, y'know, the only thing they can possibly be.
06:57:07 <tswett> Would P be the ring of integers modulo 6?
06:58:18 <shachaf> Well, P can be lots of things at this point, since we haven't finished the thing. :-)
06:58:26 <shachaf> But let me see.
06:58:36 <shachaf> Now I need to figure out how ring homomorphisms work.
06:59:18 <kmc> i wonder if there's a good, reasonably simple model for the perceived contrast between two colors
06:59:21 <shachaf> Well, I guess they're straightforward.
06:59:27 <kmc> i guess CIE ΔE is almost that, but not quite?
07:00:08 <Bike> kmc: Doesn't it depend on context?
07:00:36 <kmc> probably
07:00:52 <Bike> like the ol' http://en.wikipedia.org/wiki/File:Grey_square_optical_illusion.PNG
07:01:44 <kmc> yeah
07:01:48 <kmc> that's so fucked
07:02:14 <shachaf> like a monoid?
07:02:23 <kmc> do y'all know about the McCollough effect
07:02:32 <Bike> I think a lot of objective sorts of measures sort of fail when you try to connect them to subjective processing.
07:02:33 <shachaf> yes
07:02:40 * shachaf speaks for all of this channel
07:02:51 <Bike> shachaf speaks for me.
07:02:53 <kmc> so fucked
07:03:06 <tswett> What about the category of types in the simply typed lambda calculus...
07:03:20 <shachaf> kmc: what about that other thing
07:03:31 <shachaf> the shepard scale
07:03:33 <Bike> I think it makes sense when you remember that in four billion years of evolution stimuli like McCollough bars didn't come up much.
07:03:35 <shachaf> that's good too
07:04:12 <tswett> X, Y, and Z are statements. f and g are functions X -> Z and Y -> Z. And... hmm.
07:04:12 <kmc> Bike: eventually the cuttlefish will learn how to do them
07:04:20 <Bike> I still don't honestly understand why pitch perception is logarithmic in frequency.
07:04:37 <tswett> Bike: well, why not?
07:04:45 <Bike> ...heh
07:05:07 <Bike> kmc: iirc chromataphore operation is a lot less centralizing than visual perception? like each point kind of does its own thing?
07:05:30 <kmc> i don't know
07:05:33 <tswett> Now, why are we capable of distinguishing notes played on different instruments at the same time...
07:05:41 <kmc> re pitch perception "i have no point, i'm just saying": http://www.erowid.org/library/books_online/tihkal/tihkal04.shtml
07:05:48 <Bike> erowid, for real
07:05:51 <kmc> (scroll down to "qualitative comments" unless you really love organic chemistry)
07:06:19 <Bike> "Everything was auditory" i need to get my hands on this stuff
07:07:23 <shachaf> auditorium? i 'ardly know 'em!
07:07:29 <kmc> ._.
07:07:53 <kmc> rectangle? damn near killtangle!
07:08:28 <kmc> Bike: i have taken it
07:08:43 <Bike> Anything exciting?
07:08:45 <tswett> All right, how about we let f be the function \(x,y) -> x : (A,B) -> A and g be the function \(x,y) -> y : (B,A) -> A, why don't we.
07:09:04 <kmc> basically as described there
07:09:09 -!- Mathnerd314 has quit (Remote host closed the connection).
07:09:26 <kmc> some flanging for sure
07:10:54 <madbr> damn it
07:11:05 -!- Mathnerd314 has joined.
07:11:28 <madbr> what do you do with a cpu where all the instructions are 1 cycle except memory accesses are 6 cycles
07:11:39 <kmc> waste electricity
07:11:58 <tswett> Use registers.
07:11:59 <zzo38> Or run other instructions in the time of those other cycles?
07:12:02 <kmc> make the memory bus really wide and do SIMD?
07:12:19 -!- FreeFull has quit (Ping timeout: 260 seconds).
07:12:20 <madbr> no the point is that it only takes a 32bit bus
07:12:43 <madbr> dram access is like 1 cycle if it's on the same page
07:12:52 <madbr> but 3+ cycles if you're in a different page
07:13:06 -!- FreeFull has joined.
07:13:08 <madbr> a page is 1k~4k depending on your ram size
07:13:10 <tswett> So, the pullback of f and g.
07:13:11 <zzo38> Then make page-alignment.
07:13:36 <madbr> the catch is that it doesn't have instruction cache
07:13:48 <madbr> so instructions that don't access ram are fine
07:14:11 <madbr> since they're probably on the same page as the previous instructions
07:14:18 <tswett> P is (A,B), p1 is the identity function (A,B) -> (A,B), and p2 is the swapping function (A,B) -> (B,A)?
07:14:43 <madbr> so you can read in your next instruction at the same time as you execute the current one
07:15:05 <madbr> but once you have to read/write to RAM you have to change page
07:15:16 <madbr> bang 3 cycle read
07:15:17 <shachaf> Wait, what's going on?
07:15:25 <shachaf> What category are you talking about?
07:15:36 <madbr> then you need to pull in the next instruction which is also a page change
07:15:43 <madbr> so bang another 3 cycle read
07:15:46 <tswett> The category of types in the simply typed lambda calculus, where morphisms are functions with the appropriate types.
07:16:15 <shachaf> OK.
07:17:03 <madbr> I guess you could make an instruction that reads to like 8 contiguous registers
07:17:22 <shachaf> So you have X -> Z <- Y here.
07:17:25 <madbr> and that would take, uh, 13 cycles
07:17:51 <shachaf> X = (A,B), Y = (B,A)?
07:18:10 <tswett> Yup.
07:18:14 <madbr> (5 cycles + number of memory accesses you're doing)
07:18:58 <kmc> ARM has that instruction doesn't it
07:19:16 <madbr> it has ldm and stm yeah
07:19:21 <zzo38> kmc: What version of ARM, and in what instruction set?
07:19:22 <madbr> dunno if it was added for that reason
07:19:51 <madbr> it's not that interesting if you're on a modern ARM actually because those have cache
07:20:29 <madbr> and also it can't pair the memory accesses but it can pair other ALU instructions so you want to do the reverse, mix your loads with ALU ops
07:21:05 <kmc> yeah i don't think it's added for this reason
07:21:59 <madbr> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/ch02s08s01.html
07:22:01 <kmc> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/ch02s08s01.html
07:22:06 <kmc> haha yeah
07:22:13 <madbr> it's like a mass stack push/pop
07:22:56 <tswett> Mm, maybe P is (B,A,B), p1 is the function that drops the first element, and p2 is the function that drops the last element.
07:23:16 -!- WeThePeople has joined.
07:23:23 <kmc> yeah, although you don't have to write back to the stack pointer register (and it can be any register)
07:23:29 <tswett> In all of these cases, it seems like P is X "times" Y "divided by" Z.
07:23:47 <kmc> (since ARM doesn't really have a hardware stack pointer)
07:23:51 -!- WeThePeople has quit (Read error: Connection reset by peer).
07:25:07 <tswett> Suppose we're in the category of topological spaces, and Z is the plane, and X and Y are open discs in the plane, and f and g are the inclusion morphisms.
07:25:13 <kmc> so it's useful for saving registers around function calls, but also for general block copies
07:25:49 <tswett> Nah, let's be smaller. Z is the real line, X and Y are open intervals.
07:25:59 <madbr> it's max twice as fast as unrolled normal copy I think
07:26:28 <madbr> due to the size of the datapath on whichever modern ARMs
07:27:08 <tswett> So... P is the intersection of X and Y, and p1 and p2 are both inclusion morphisms?
07:32:27 <madbr> I guess it's also possible to load in multiple load/store instructions when you encounter one
07:32:43 <madbr> ie make a very small instruction cache :D
07:37:15 <kmc> happy megasecond 1361
07:38:30 <shachaf> i never megasecond i didn't like
07:39:38 <tswett> jaspers:~ tswett$ date -r 100000000000000000
07:39:39 <tswett> Segmentation fault
07:39:49 <zzo38> How can I get out of this trap in Dungeons&Dragons game?
07:39:56 <tswett> That seems kinda wrong.
07:40:16 <zzo38> tswett: Why is it a segmentation fault?
07:41:09 <tswett> Because date attempted to access a memory location that it was not allowed to access, or attempted to access a memory location in a way that was not allowed.
07:42:43 <shachaf> zzo38: Cast a spell of remove trap.
07:43:03 <zzo38> shachaf: I don't have that one, and I don't want to waste all of my spells
07:43:20 <zzo38> tswett: Yes, but why would it cause that? (Or is "Segmentation fault" the answer?)
07:43:25 <shachaf> zzo38: as kmc says, they have to tell you if they're a cop
07:43:40 <tswett> I don't know.
07:45:13 <tswett> Presumably, it was because the year was too big to fit in a signed 32-bit variable.
07:45:19 <zzo38> shachaf: They aren't a cop, they are a demon and a bunch of human guys, and a few gray render and vampire.
07:45:36 <Bike> gray render?
07:45:55 <zzo38> tswett: Shouldn't it overflow if it does like that though? I thought that isn't a segmentation fault?
07:46:37 <tswett> Apparently, it was written in a way such that it's a segmentation fault instead of an overflow.
07:47:10 <zzo38> What version of the system "date" program is it? If you know what it is, then maybe you can look at it, and fix it.
07:48:05 <shachaf> let's not play the segmentation blame game, zzo38
07:48:33 <zzo38> shachaf: OK, let's play the Dungeons&Dragons game instead.
07:49:05 <shachaf> Let's play the pun game instead!
07:49:30 <zzo38> OK
07:49:54 <shachaf> Who goes first?
07:49:57 <tswett> Hm. Can every morphism be written as the composition of an epimorphism and a monomorphism in either direction...
07:50:36 <tswett> Something tells me yes in Set, but not in every concrete category.
07:51:55 <zzo38> shachaf: Whoever's square-root of their telephone number, minus the right ascension of the moon at the time they turned on their computer, plus 4d6 drop lowest, is the high number, goes first.
07:52:03 -!- oerjan has joined.
07:52:10 <tswett> Which computer?
07:52:14 <zzo38> Unless you can speak ancient Egyptian language, in which case it is done in reverse.
07:52:31 <zzo38> tswett: Whoever's own computer, who is using the IRC on.
07:52:54 <tswett> What if the computer you're physically at is not the computer that the IRC client is running on?
07:53:03 <tswett> 'Cause I turned on the latter computer...
07:53:19 <tswett> August 4, give or take a day.
07:53:33 <zzo38> tswett: Then you use the computer that the IRC client is running on, if you turned that one on; otherwise it is the computer you are physically at.
07:54:11 <tswett> Does giving an instruction to an automated system to turn that computer on count as turning it on?
07:54:34 <tswett> What if it's a virtual machine (as, in fact, it is)? Do I use the time the VM was turned on, or the time its host was turned on?
07:54:49 <zzo38> Toss a coin to figure it out. If the coin gets lost, then the answer is yes.
07:55:03 <zzo38> If it comes up on its side, then the answer is no.
07:57:26 <zzo38> If it comes up heads or tails then try again.
07:57:53 <tswett> A potentially expensive way of resolving the question.
07:59:23 <tswett> So for my telephone number, I use the international form, right?
08:00:26 <zzo38> Yes, if you have ever been outside of your country (or whatever area is having the same form of telephone numbers); otherwise no.
08:00:57 <tswett> Hm. I live in the United States, and I've been to Canada, but I haven't been outside of the NANP area.
08:01:11 <shachaf> canada isn't a real country......
08:01:14 <zzo38> Then you don't use the international form.
08:03:00 <tswett> Do I use the 10-digit form, then?
08:03:05 <zzo38> Yes
08:30:08 <shachaf> kmc: The best airport for me would be LGA, right?
08:30:32 <elliott> Least Good Airport
08:30:44 <shachaf> oh no
08:32:40 <oerjan> `cat bin/js
08:32:45 <HackEgo> ​#!/bin/sh \ \ JAVA_CMD="/usr/bin/java" \ JAVA_OPTS="" \ JAVA_CLASSPATH="/usr/share/java/js.jar:/usr/share/java/jline.jar" \ JAVA_MAIN="org.mozilla.javascript.tools.shell.Main" \ \ ## Fix for #512498 \ ## Change Bootclasspath when using OpenJDK because OpenJDK6 \ ## bundle his own release of Rhino. \ ## References: \ ## <https://bugs.launchpad.
08:38:30 -!- jconn has quit (Ping timeout: 264 seconds).
08:39:52 <kmc> javascript in my java? it's more likely than you think
08:39:56 -!- fftw has quit (Ping timeout: 256 seconds).
08:39:58 -!- ogrom has joined.
08:40:03 <kmc> shachaf: for what
08:40:46 <shachaf> kmc: Going to the Bronx.
08:40:55 <kmc> i guess so
08:41:05 <kmc> it depends on how you feel about buses
08:42:11 <shachaf> ?
08:44:20 -!- DHeadshot has quit (Read error: Connection reset by peer).
08:44:41 <shachaf> If I don't/do mind buses how does that affect it?
08:44:55 <kmc> there is no train to LGA
08:45:01 <kmc> or from LGA for that matter
08:45:22 <kmc> you could take a bus or a taxi
08:45:35 -!- EgoBot has quit (Remote host closed the connection).
08:45:46 -!- EgoBot has joined.
08:45:51 <shachaf> Ah.
08:46:31 -!- madbr has quit (Quit: Radiateur).
08:46:32 <kmc> it has reasonable bus service though
08:46:42 <kmc> there's one that goes straight across to Harlem on 125th St
08:47:19 <kmc> from which you can get to the 456, Metro North, the 23, the ABCD, or the 1
08:48:21 <oerjan> @tell tswett <tswett> I think that given a finite state machine with n states, you can construct a finite state machine with, like, O(n^3 log n) states that solves its halting problem. <-- you seem close to reinventing hierarchy theorems...
08:48:22 <lambdabot> Consider it noted.
08:48:39 <tswett> Hierarchy theorems, eh?
08:48:39 <lambdabot> tswett: You have 1 new message. '/msg lambdabot @messages' to read it.
08:48:45 <tswett> OH BOY I WONDER WHAT IT IS
08:48:49 <shachaf> @arrrr chy
08:48:49 <lambdabot> I'll keel haul ya fer that!
08:48:51 <shachaf> I don't mind buses in particular.
08:49:09 <shachaf> It seems like the trip will be long, though.
08:49:27 <kmc> probably shorter than from EWR or JFK
08:50:25 <oerjan> http://en.wikipedia.org/wiki/Time_hierarchy_theorem and http://en.wikipedia.org/wiki/Space_hierarchy_theorem
08:53:35 -!- fftw has joined.
09:02:47 <oerjan> <tswett> Imagine a function omegaTimes :: (Ordinal -> Ordinal) -> Ordinal, such that omegaTimes f is the smallest ordinal number greater than all of 0, f 0, f (f 0), f (f (f 0)), and so on.
09:02:57 <oerjan> seems related to http://en.wikipedia.org/wiki/Veblen_function
09:07:52 <oerjan> tswett: http://en.wikipedia.org/wiki/Feferman%E2%80%93Sch%C3%BCtte_ordinal looks relevant
09:08:51 <zzo38> In VGM format, waits 735, 882, and numbers 1 to 16 take up 1 byte each, while all other waits 17 to 65535 take up 3 bytes. I am making a program to make the short number of bytes for the given amount.
09:09:48 <zzo38> if((dur>=735 && dur<=751) || dur==1470 || dur==1617) 735; if((dur>=882 && dur<=898) || dur==1764) 882; if(dur<=16) dur; if(dur<=32) 16; if(dur<=65535) dur; else 65535. This is not quite complete, yet.
09:11:08 <zzo38> I know it is not complete but I am trying to think of it
09:16:26 <oerjan> @tell tswett http://en.wikipedia.org/wiki/Large_countable_ordinals
09:16:26 <lambdabot> Consider it noted.
09:16:41 <shachaf> @thank oerjan
09:16:41 <lambdabot> Maybe you meant: thank you thanks
09:16:45 <shachaf> @thankyou oerjan
09:16:45 <lambdabot> you are welcome
09:17:25 <shachaf> The purchaser's last name, "Ben-Kiki", contains the invalid character(s): '-'.
09:17:36 <shachaf> kmc: It's almost like having non-ASCII characters in your name!
09:19:03 <oklopol> anyone use gimp?
09:19:46 <oerjan> not in more than a decade
09:20:42 <oklopol> i would like to have two layers with 50 alpha and have the colors really blended 50-50 (now the top layer is much more opaque).
09:20:50 <zzo38> I just use ImageMagick.
09:21:23 <Jafet> imagemagick is merely bad, you should use it instead.
09:21:31 <tswett> Why do you want each of the two layers to have 50 alpha?
09:21:31 <lambdabot> tswett: You have 2 new messages. '/msg lambdabot @messages' to read them.
09:22:25 <zzo38> Jafet: Merely bad? I think it is much better.
09:22:28 <tswett> If you don't want the result to be transparent at all, make the bottom layer totally opaque.
09:22:38 <Jafet> Yes, it is.
09:22:53 <oklopol> tswett: i want some kind of equal sum of two images.
09:23:22 -!- Jafet has quit (Quit: Leaving.).
09:23:28 <oklopol> so err like background 100% opaque, top layer 50% opaque?
09:23:35 <tswett> Yeah.
09:23:44 <oklopol> i hope i tried that because that makes way more sense...
09:24:08 <zzo38> oklopol: Yes that is what makes sense to me at least
09:24:20 <zzo38> Make the back 100% opaque and the top 50% and then compose them
09:26:07 <oklopol> the thing is i seem to recall that some things do as follows: you draw things in their natural pecking order, and as you draw something with 30% alpha, 30% more of the alpha channel of that pixel fills up. when you run out of alpha, you stop drawing things.
09:26:43 <oklopol> this way if you put 50% and 50%, you get an equal blend and the image is fully opaque.
09:27:01 <oklopol> but perhaps it's not very intuitive
09:28:26 <oerjan> @tell pikhq <pikhq> Technically there's also some colors missing because of quantization, but you can't really notice those. <-- i think you can get around that with the doppler effect, assuming speed isn't quantized
09:28:26 <lambdabot> Consider it noted.
09:29:12 <oerjan> @tell pikhq (and we _really_ cannot notice any level at which speed is quantized.)
09:29:12 <lambdabot> Consider it noted.
09:30:50 * elliott wonders the context
09:31:26 <oerjan> it's in the logs.
09:33:12 -!- impomatic has quit (Quit: impomatic).
09:34:54 <oerjan> the context _did_ prompt <Sgeo_> This is the best classroom ever.
09:35:34 <oerjan> or so i assume.
09:36:41 <kmc> shachaf: srsly?
09:37:00 <kmc> rather a lot of people have hyphens in their last name
09:37:29 <kmc> also arguably the hyphen is a non-ASCII character
09:37:36 <kmc> but the character you pasted is ASCII
09:39:06 <elliott> good old HYPHEN-MINUS
09:39:34 <elliott> HYPHEN‐MINUS
09:39:47 <elliott> HYPHEN−MINUS
09:40:23 <shachaf> isn't it funny how they put a dash between HYPHEN and MINUS
09:41:30 <olsner> HYPHEN-DASH-MINUS
09:41:51 <tswett> Is it an en dash?
09:42:12 <tswett> I like en dashes. {:3
09:42:31 <tswett> (The Alphonse Elric emoticon.)
09:43:23 <Bike> are the names of unicode characters in any particular character set
09:43:33 <kmc> UPPER-CASE ASCII
09:43:46 <tswett> There are plenty of Unicode characters whose names include lowercase letters.
09:43:54 <kmc> :(
09:43:57 <shachaf> There are?
09:44:19 <shachaf> Oh, there are-ish.
09:44:35 <shachaf> whoa, dude, less is smart and finds ß when I search for [a-z] and so on.
09:44:44 <tswett> U+732B is "cat".
09:44:45 <shachaf> Maybe that's why its search is so slow.
09:44:59 <tswett> Not "CAT", but "cat".
09:45:07 <shachaf> Oh, I don't have that in my Unicode file. :-(
09:45:47 <Bike> shachaf: you know how chromium's ctrl-f has ß and ss as equivalent, right?
09:45:49 <shachaf> Not even in my "complete" Unicode file! What's going on here?
09:46:02 <tswett> Hm, I guess I'm not quite right.
09:46:04 <shachaf> Bike: Right. So does less.
09:46:12 <olsner> apparently it's pronounced miao in some chinese
09:46:16 <tswett> U+732B is "CJK UNIFIED IDEOGRAPH-732B".
09:46:32 <elliott> shachaf: That's probably not as smart as you want.
09:46:43 <elliott> I suspect it's finding the "s" in "ß" but wouldn't necessarily find every letter.
09:47:06 <shachaf> I searched for [a-z] and it found all sorts of things.
09:47:35 <shachaf> Like ø and ỹ
09:48:00 <tswett> "cat" appears to be its "kDefinition".
09:52:33 <elliott> shachaf: Those are still "Latin-ish".
09:52:41 <elliott> You could argue for o matching ø and y matching ỹ
09:52:47 <shachaf> Right.
09:52:54 <shachaf> Isn't that what I want?
09:53:07 <elliott> Well, I expect by [a-z] you actually just mean "letter"?
09:53:54 -!- Bike has quit (Ping timeout: 252 seconds).
09:53:54 <shachaf> 01:43 <tswett> There are plenty of Unicode characters whose names include lowercase letters.
09:56:40 -!- oerjan has quit (Quit: Lost terminal).
10:06:00 <oklopol> why on earth would you have ø match o
10:07:14 <oklopol> having e and i match o would make more sense, as there is at least a language on earth where they sometimes denote the same sound
10:07:34 <zzo38> Why should any of them match anything other than themself?
10:07:49 <oklopol> because you want to have a convenient notation for certain families of letters
10:07:49 <shachaf> Because it's the same as ̷o, of course.
10:07:53 <shachaf> Or is that o̷?
10:07:55 <zzo38> (That is, by default. You could have settings to make them match other things, such as uppercase/lowercase, but should not be the deafult setting.)
10:08:39 <shachaf> Skolem ø
10:08:44 <shachaf> Skølem
10:10:38 -!- oerjan has joined.
10:18:04 -!- oerjan_ has joined.
10:18:09 * oerjan_ hopes this isn't going to be regular
10:18:30 <shachaf> What, people saying ø?
10:18:59 <monqy> two oerjans???
10:19:14 <monqy> poll: wasn't one enough
10:19:21 <shachaf> vote: no
10:21:25 -!- oerjan_ has quit (Client Quit).
10:22:21 -!- oerjan has quit (Quit: Lost terminal).
10:22:33 <elliott> i think you upset oerjan monqy
10:22:45 <monqy> rip
10:23:04 <shachaf> oh no
10:23:10 <shachaf> monqy you should feel bad now
10:23:29 <shachaf> you need at least 24 seconds of bad feeling
10:23:42 <monqy> can you start the timer i need a timer
10:23:55 <monqy> i dont have one and i sort of cant count
10:24:02 -!- jconn has joined.
10:24:13 <shachaf> monqy: ok
10:24:23 <shachaf> tell me when you start feeling bad and ill tell you when to stop
10:25:40 -!- nooga has joined.
10:25:47 <tswett> let c f n=t n f w in(c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c)(t w s)w
10:25:54 <monqy> hi
10:26:55 <shachaf> monqy: btw i sort of cant count either
10:26:56 <shachaf> oops
10:29:13 -!- Jafet has joined.
10:35:31 -!- monqy has quit (Quit: hello).
10:51:16 -!- Halite has joined.
10:51:59 <Halite> I bored
10:56:47 <zzo38> Do you like the "arithmetic IF" that exists in some programming languages?
10:57:18 <olsner> arithmetic if?
10:57:19 <zzo38> Do you have a list of programming languages which have such things?
10:58:01 <Halite> what arithmetic IF
10:58:12 <Halite> arithmetic IF is horrible
10:58:13 <zzo38> olsner: Meaning, that it checks if the number is negative/zero/positive, and branches to a different line depending on the result (or, in some programming languages, just returns one of the three results specified).
10:58:37 <zzo38> Halite: I don't really think so.
10:58:44 <Halite> so, f(p,q,r) = if p then q else r
10:59:29 <oklopol> zzo38: that sounds a bit meaningless.
10:59:29 <Halite> so f(true,true,false) = if true then true else false = true
10:59:32 <zzo38> No, like: f(p,q,r,s) = if p<0 then q else if p=0 then r else if p>0 then s
10:59:50 -!- Phantom_Hoover has joined.
10:59:59 <zzo38> Is like arithmetic IF (although usually, the q,r,s here would be used as branch targets rather than values)
11:00:30 <oklopol> might be useful in an obfuscation contest
11:01:24 <zzo38> FORTRAN has the arithmetic IF with IF (expression) negative,zero,positive where the negative,zero,positive means the line numbers to go to based on the value of the expression in parentheses.
11:01:27 <Halite> so f(0,function () { return 'no'; }, function () { return 'good'; }, function () { return 'worse'}) would return a function
11:01:35 <zzo38> FOCAL also has arithmetic IF.
11:01:50 <oklopol> you do realize fortran is a crappy language
11:02:09 <zzo38> I actually think dc would be better with arithmetic IF rather than the conditionals it has now.
11:02:20 <oklopol> that i can believe
11:02:21 <Halite> and do you realise that p isn't a conditional and the function isn't related with IF at all
11:02:46 <Halite> if p was a conditional then it could be OK
11:03:08 <Halite> conditional = boolean
11:04:24 <oklopol> i imagine that if you're into writing crappy code, you could use arithmetic if pretty conveniently for branching based on order by having a compare function that returns integers like java's compareTo
11:04:56 <oklopol> of course that's pretty ridiculous in a high level language
11:05:11 <zzo38> Sure, C and so on don't need arithmetic IF, but I think it would be good in dc, though.
11:05:34 <Halite> if you have addresses of each command (line numbers), then you could make a function f(p,q,r) = if p then goto q else goto r
11:05:52 <oklopol> isn't dc a stack language where you play around with numbers and such
11:06:04 <Halite> along with a return(s)
11:06:11 <zzo38> oklopol: Yes
11:06:19 <Halite> function f(q
11:06:28 <oklopol> then yeah i imagine it would be useful
11:06:52 <Halite> function f(p,q,r) = if p then goto q else goto r; return previous line number
11:08:31 <Halite> or f(p,q,r) = if p then eval(q) else eval(r);
11:09:19 <zzo38> Actually the only conditional operator in TeXnicard is arithmetic IF without branching (if you want to make it doing something, you can put the codes to execute and then put x afterward) (if you want to compare you use subtraction command; using - on strings is strcmp so that works too)
11:10:42 <zzo38> Halite: Sure you can have that but I like to put eval outside instead of including it in the definition
11:12:20 <Halite> f(p,q,r) = if p then return q else return r
11:15:52 <Halite> I have a function that could be used in a programming language too.
11:16:25 <Halite> It requires some features of my programming language at the moment, though.
11:16:38 <zzo38> What features? What functions?
11:17:07 <Halite> return function (a,b) { var x = SaltScript.tfToBinary(a); var y = SaltScript.tfToBinary(b); return SaltScript.binaryToTf((table >> ((x<<1)|y)) & 1); };
11:17:27 <Halite> ^^ this is my function coded in Javascript ^^
11:17:50 <Halite> f(table) = return function (a,b) { var x = SaltScript.tfToBinary(a); var y = SaltScript.tfToBinary(b); return SaltScript.binaryToTf((table >> ((x<<1)|y)) & 1); };
11:17:57 <Halite> included f(table)
11:18:37 <Halite> tfToBinary is basically if in1 = true then 1 else 0
11:18:48 <Halite> and binaryToTf is if in1 = 1 then true else false
11:24:14 <zzo38> <[th]s0[st]s1[nd]s2[rd]s3dBr100%d10%r10/1-1 0 1i*d3-1d0i*`0+L+> The "i" is the arithmetic IF. If you know the commands, then it is not difficult. (Isn't it?)
11:24:50 <Halite> CONFUSE
11:24:52 <Halite> CONFUSE
11:24:55 <Halite> CONFUSE
11:25:01 <Halite> :P
11:25:47 <zzo38> Confuse what?
11:47:57 -!- carado has joined.
11:50:21 -!- nooga has quit (Ping timeout: 244 seconds).
11:56:01 -!- azaq23 has joined.
11:56:11 -!- azaq23 has quit (Max SendQ exceeded).
11:58:31 -!- azaq23 has joined.
12:18:14 -!- ogrom has quit (Quit: Left).
12:27:48 -!- nooga has joined.
12:54:54 -!- Arc_Koen has joined.
12:56:37 -!- nooodl has joined.
12:58:55 <zzo38> Is it possible for the program to detect whether or not is allow to rewind stdin?
13:00:11 <shachaf> @let allowToRewindStdin = return False
13:00:14 <lambdabot> Defined.
13:00:56 <zzo38> Is it allowed if it is a tape?
13:01:10 -!- Jafet has quit (Ping timeout: 256 seconds).
13:11:43 -!- Jafet has joined.
13:15:27 <shachaf> Let's check the program.
13:15:42 <shachaf> > runIdentity $ allowToRewindStdIn "a tape"
13:15:45 <lambdabot> Not in scope: `allowToRewindStdIn'
13:15:45 <lambdabot> Perhaps you meant `allowToRewindStdin' ...
13:15:50 <shachaf> > runIdentity $ allowToRewindStdin "a tape"
13:15:52 <lambdabot> Couldn't match expected type `Data.Functor.Identity.Identity a0'
13:15:52 <lambdabot> ...
13:21:49 -!- ogrom has joined.
13:25:32 <Jafet> @remember lambdabot ...
13:25:33 <lambdabot> Done.
13:38:11 <ion> http://unigine.com/products/valley/download/
13:38:13 -!- ogrom has quit (Quit: Left).
13:40:20 -!- ogrom has joined.
13:44:09 <FreeFull> :t allowToRewindStdin "a tape"
13:44:10 <lambdabot> Bool
13:44:22 <FreeFull> > allowToRewindStdin "a tape"
13:44:25 <lambdabot> False
13:44:36 <Halite> > help
13:44:37 <lambdabot> Not in scope: `help'
13:44:50 <Halite> > echo "hi"
13:44:52 <lambdabot> Not in scope: `echo'
13:44:56 <Halite> lol
13:45:14 <FreeFull> @let help = " http://learnyouahaskell.com/ "
13:45:16 <lambdabot> Defined.
13:45:19 <FreeFull> > help
13:45:22 <lambdabot> " http://learnyouahaskell.com/ "
13:45:37 <mroman> @let echo = id
13:45:40 <lambdabot> Defined.
13:45:46 <mroman> echo "hi"
13:45:54 <mroman> > echo "hi"
13:45:56 <lambdabot> "hi"
13:46:26 <Halite> @let testHaskell = " http://tryhaskell.org/ "
13:46:28 <lambdabot> Defined.
13:47:27 <Halite> > testHaskell
13:47:28 <lambdabot> " http://tryhaskell.org/ "
13:47:32 <Halite> > id "hi"
13:47:33 <lambdabot> "hi"
13:47:42 <Halite> > echo "Hello"
13:47:43 <lambdabot> "Hello"
13:47:55 <Halite> @let say = echo
13:47:56 <lambdabot> Defined.
13:48:01 <Halite> > say "Hello!"
13:48:03 <lambdabot> "Hello!"
13:48:28 <Halite> > let say = echo
13:48:29 <lambdabot> not an expression: `let say = echo'
13:48:39 <shachaf> are you doing it again......................
13:49:48 <mroman> Halite: Do you know Haskell?
13:53:36 <Phantom_Hoover> no
13:58:54 <Phantom_Hoover> he does not
14:02:45 <mroman> then he should.
14:03:50 <Phantom_Hoover> attempts have been made to communicate this to him
14:03:56 <Phantom_Hoover> he does not appear to have picked up on them
14:04:39 -!- Taneb has joined.
14:04:52 <Taneb> What's that word that means "is not bad anymore"?
14:05:37 <Phantom_Hoover> irthen bad?
14:05:47 <Phantom_Hoover> what's a word that means 'to be bad'
14:07:59 <Phantom_Hoover> my attempts to find one have brought me here: http://www.noswearing.com/dictionary
14:08:00 <mroman> Taneb: fixed
14:08:19 <Taneb> Really, I want the event of becoming not bad
14:08:46 <Phantom_Hoover> irthening bad
14:08:55 <Taneb> Right
14:09:21 <Taneb> I'll trust Phantom_Hoover, because it's for his tumblr
14:09:38 <Phantom_Hoover> excellente
14:10:00 <Phantom_Hoover> although it would be better if i knew an actual word for being bad
14:10:26 <Phantom_Hoover> these bad words are amazing
14:10:40 <Phantom_Hoover> "cocksmoker - homosexual"
14:10:50 <Taneb> "offend"?
14:11:05 <Phantom_Hoover> "cockmongler - homosexual"
14:11:23 <Phantom_Hoover> "cockmaster - homosexual"
14:11:32 <Phantom_Hoover> "cockfucker - idiot"
14:11:44 <Phantom_Hoover> i guess cockfucker would be too obvious?
14:12:06 <Taneb> And also includes, eg, heterosexual and bisexual women
14:12:36 <Phantom_Hoover> but only a man could truly mongle a cock
14:12:44 <Taneb> Precisely
14:13:18 -!- ogrom has quit (Quit: Left).
14:13:43 <Taneb> Hang on
14:13:54 <Taneb> I thought that the -irth form could take nouns?
14:13:59 <Taneb> As in "Perth"
14:14:00 <Phantom_Hoover> erm
14:14:07 <Phantom_Hoover> no that's a false cognate
14:14:14 <Taneb> Ah
14:14:15 <Taneb> Damn
14:14:24 <Phantom_Hoover> also bad is an adjective anyway!
14:14:32 <Taneb> Pier isn't
14:14:35 <Halite> > let say = echo in ''
14:14:37 <lambdabot> <hint>:1:21: parse error (possibly incorrect indentation)
14:14:41 <Halite> > let say = echo in '.'
14:14:42 <lambdabot> '.'
14:14:48 <Halite> > say "hi"
14:14:50 <lambdabot> "hi"
14:14:53 <Phantom_Hoover> Taneb, so are you suggesting perth is called that because it stopped being a pier
14:15:04 <Halite> aha
14:15:13 <Halite> I think I know Haskell now
14:15:19 <Taneb> Yeah, it was originally just a pier, but then became two cities across the world
14:15:21 <Taneb> :t say
14:15:23 <lambdabot> a -> a
14:15:29 <Taneb> @src say
14:15:29 <lambdabot> Source not found. BOB says: You seem to have forgotten your passwd, enter another!
14:15:32 <Halite> but whay do @let x = y if you don't want to be forced the in keyword
14:15:36 <Taneb> :t echo
14:15:37 <lambdabot> a -> a
14:15:38 <mroman> -irth form?
14:15:42 -!- carado has quit (Ping timeout: 264 seconds).
14:16:01 <Halite> Received a CTCP VERSION from Phantom_Hoover
14:16:06 <Phantom_Hoover> Halite, sudo apt-get install ghc
14:16:08 <Phantom_Hoover> ghci
14:16:09 <Phantom_Hoover> there
14:16:13 <Phantom_Hoover> no need to spam the channel
14:16:23 <Halite> Wrong channel, Phantom_Hoover
14:16:35 <Halite> You want #ubuntu
14:16:47 <mroman> /o\
14:17:31 <Taneb> Halite, he was talking to you, so you would stop spamming #esoteric with lambdabot
14:17:55 <Phantom_Hoover> mroman, the -irth form, indicating the cessation of something
14:18:10 <Halite> well, I'm not installing ghci
14:18:15 <Phantom_Hoover> for instance, to forget is to nirth
14:18:16 <Halite> Wait, what is ghci
14:18:25 <Halite> @ghci
14:18:25 <lambdabot> ghc says: rts/sm/Sanity.h:24:0: error: conflicting types for 'checkSanity'
14:18:27 <Phantom_Hoover> the thing you're spamming the channel with
14:18:35 <Taneb> `? ghci
14:18:40 <HackEgo> ghci? ¯\(°_o)/¯
14:18:54 <Taneb> `learn GHCi is a local version of lambdabot. Cool, huh?
14:18:58 <HackEgo> I knew that.
14:19:16 <mroman> Phantom_Hoover: What kind of english is that?
14:19:19 <Taneb> mroman, and when a woman stops bearing her child, it's called a birth
14:19:35 <mroman> I know birth :)
14:19:45 <Phantom_Hoover> that should've been 'knirth', fwiw
14:20:58 -!- zzo38 has quit (Remote host closed the connection).
14:21:15 <Halite> Installing GHC
14:21:20 <Halite> `help
14:21:20 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
14:22:47 <olsner> hmm, so 'birth' is the irthative of 'be'?
14:23:38 <Phantom_Hoover> no
14:23:46 <Phantom_Hoover> the irthative of 'be' is irthen
14:25:52 -!- Taneb has quit (Ping timeout: 256 seconds).
14:26:02 <Phantom_Hoover> Halite, would you please botspamirth
14:26:03 <Halite> Hirth
14:26:23 <Halite> Phantom_Hoover, sure. *botspamirths*
14:27:51 <Halite> Which file extension do you keep Haskell code in
14:28:01 <mroman> .hs
14:28:08 <olsner> or .lhs
14:28:19 <Halite> ok
14:28:31 <Halite> thanks
14:28:43 <Phantom_Hoover> http://learnyouahaskell.com/
14:28:57 <mroman> learnth
14:29:13 <Halite> I already leaned, I can't learnirth
14:29:16 <Halite> learned*
14:29:28 <Halite> Phantom_Hoover, yesirth!
14:29:32 <olsner> -irnth could be the unirthative
14:29:54 <Halite> I already know atleast basic Haskell
14:29:59 <Halite> `welcome
14:30:01 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
14:30:26 <Halite> it's esoteric programming language development
14:30:35 <Halite> not esoteric speak language
14:30:42 <Halite> btw. I used http://tryhaskell.org/ to learn
14:31:13 <mroman> I used Haskell to learn Haskell.
14:31:59 <Halite> mroman, clever man
14:32:09 <Halite> I used http://tryhaskell.org/ to learn Haskell
14:32:33 <Phantom_Hoover> are they paying you or something
14:33:54 <Halite> I still don't know how to use LET without the IN keyword
14:35:41 <shachaf> That's expert-level.
14:36:08 <Halite> shachaf, well
14:36:35 <Halite> shachaf, example
14:36:36 <Halite> @help
14:36:36 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
14:36:42 <Halite> @help let
14:36:42 <lambdabot> let <x> = <e>. Add a binding
14:36:48 <Phantom_Hoover> Halite, think about it
14:36:57 <Phantom_Hoover> if you don't have an in then what does the let even do
14:37:52 <Halite> Phantom_Hoover, you could > let add x = x+1 < and then > add 1 <
14:38:27 <Phantom_Hoover> ok
14:38:29 <Halite> Phantom_Hoover, it's simply a variable binding
14:38:31 <Phantom_Hoover> you have learnt haskell wrong
14:38:41 <Halite> wait, what
14:38:46 <Halite> I'VE JUST LEARNT IT
14:38:48 <Phantom_Hoover> i have provided a link by which you might learn it righter
14:38:48 <Halite> WRONG
14:39:04 <Halite> > (28,"Chris")
14:39:06 <lambdabot> (28,"Chris")
14:39:14 <Halite> > sort (28,"Chris")
14:39:15 <lambdabot> Couldn't match expected type `[a0]' with actual type `(t0, t1)'
14:39:29 <Halite> > sort "Chris"
14:39:30 <lambdabot> "Chirs"
14:39:50 <Halite> > sort "Halite"
14:39:51 <lambdabot> "Haeilt"
14:40:05 <Halite> > id
14:40:07 <lambdabot> No instance for (GHC.Show.Show (a0 -> a0))
14:40:07 <lambdabot> arising from a use of `M37046...
14:40:12 <Halite> > id ""
14:40:14 <lambdabot> ""
14:40:41 <Halite> `haskell
14:40:43 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
14:40:47 <Phantom_Hoover> `? haskell
14:40:49 <HackEgo> Unbound implicit parameter (?haskell::Wisdom) \ arising from a use of implicit parameter `?haskell'
14:40:54 <Halite> @help
14:40:54 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
14:41:01 <Phantom_Hoover> jesus
14:41:02 <Phantom_Hoover> fucking
14:41:05 <Phantom_Hoover> christ
14:41:10 <Halite> @list
14:41:10 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
14:41:18 <Halite> @help let
14:41:18 <lambdabot> let <x> = <e>. Add a binding
14:41:22 <Phantom_Hoover> you could do this all in a /query
14:41:22 <Halite> @help let in
14:41:23 <lambdabot> let <x> = <e>. Add a binding
14:41:26 <Halite> @help in
14:41:26 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
14:41:31 <Phantom_Hoover> you could do this all in the comfort of your own terminal
14:41:33 <Phantom_Hoover> but no
14:41:58 <Halite> because I want to show you that I have learnt Haskell righter than you think, Phantom_Hoover
14:42:43 <Phantom_Hoover> you've learnt haskell irc bots
14:43:13 <Halite> I've learnt haskell from tryhaskell.org
14:43:18 <Phantom_Hoover> and have managed to get confused about definitions, scope and mutability
14:43:21 <Halite> Not from IRC bots
14:44:48 <Halite> aha!
14:44:48 <Phantom_Hoover> look seriously just fucking read lyah already
14:45:02 <Halite> look
14:45:45 <Halite> let is used to use a certain formula such as 2 * 165 multiple times without rewriting it
14:45:58 <Halite> Not to define functions
14:47:36 <Halite> Look at step 15 of tryhaskell.org tutorial - it says you use let to define functions
14:47:46 <Halite> This is the confusing part
14:50:11 <mroman> What the heck?
14:50:13 <Phantom_Hoover> look, seriously
14:50:31 <Phantom_Hoover> lyah will give you a much more comprehensive understanding of haskell than tryhaskell
14:51:11 <Phantom_Hoover> please read it
14:51:11 <Halite> where is lyah
14:51:17 <Phantom_Hoover> http://learnyouahaskell.com/chapters
15:08:52 <Sgeo_> Halite, let can be used to define functions used after in. But TryHaskell is distorted enough that it's the only way to write something equivalent to top level functions. And yes, read LYAH
15:09:08 <Sgeo_> > let f x = x * 10 in f 20
15:09:09 <elliott> "Functions" isn't accurate.
15:09:09 <lambdabot> 200
15:09:28 <Sgeo_> elliott, they can be but don't have to be functions
15:09:37 <Sgeo_> Didn't mean to imply that functions were the only things that let can define
15:10:13 <elliott> right
15:23:36 <FreeFull> Halite: Look at this
15:23:45 <FreeFull> > map (^2) [1..]
15:23:47 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
15:24:25 <Phantom_Hoover> Halite, the salient point is that in haskell you don't 'assign' or 'set' variables, you /define/ them in a given scope
15:24:55 <FreeFull> @let help = " http://learnyouahaskell.com/chapters "
15:24:56 <lambdabot> <local>:11:1:
15:24:57 <lambdabot> Multiple declarations of `help'
15:24:57 <lambdabot> Declared at: <local>...
15:25:07 <FreeFull> @unlet help
15:25:07 <lambdabot> TemplateHaskell is not enabled
15:25:33 <FreeFull> @help
15:25:33 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
15:25:36 <FreeFull> @list
15:25:37 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
15:25:52 <FreeFull> @undefine help
15:25:59 <FreeFull> @let help = " http://learnyouahaskell.com/chapters "
15:26:02 <lambdabot> Defined.
15:26:10 <Phantom_Hoover> FreeFull, don't you start
15:26:19 * FreeFull whistles
15:37:59 <nooodl> > do let { x = 5 }; x
15:38:01 <lambdabot> 5
15:38:01 <lambdabot> nooodl: You have 1 new message. '/msg lambdabot @messages' to read it.
15:38:09 <nooodl> "that's how you use let"
15:38:29 <nooodl> "monqy asked 1m 3d 12h 47m 24s ago:" oops
15:41:12 -!- WeThePeople has joined.
15:44:55 <shachaf> @ask monqy oops
15:44:55 <lambdabot> Consider it noted.
15:54:51 <Halite> > do let { double x = x+x }; x
15:54:53 <lambdabot> x
15:55:00 <Halite> > do let { double x = x+x }; ''
15:55:02 <lambdabot> <hint>:1:30: parse error (possibly incorrect indentation)
15:55:10 <Halite> > double 3
15:55:12 <lambdabot> 3.0
15:55:21 <Halite> > do let { double x = x+x }; x+x
15:55:23 <lambdabot> x + x
15:55:32 <Halite> > double 3
15:55:33 <lambdabot> 3.0
15:58:04 <Phantom_Hoover> > let 2 + 2 = 5 in 2 + 2
15:58:06 <lambdabot> 5
16:00:14 <Halite> @let dopplegangerOf x = sort x
16:00:18 <lambdabot> Defined.
16:00:24 <Halite> > doppleGanger of "Phantom_Hoover"
16:00:26 <lambdabot> <hint>:1:14: parse error on input `of'
16:00:35 <Halite> -
16:00:40 <Halite> > doppleGangerOf "Phantom_Hoover"
16:00:42 <lambdabot> Not in scope: `doppleGangerOf'
16:00:42 <lambdabot> Perhaps you meant `dopplegangerOf' (line 2)
16:00:51 <Halite> -
16:00:54 <Halite> > dopplegangerOf "Phantom_Hoover"
16:00:57 <lambdabot> "HP_aehmnooortv"
16:01:07 <Halite> LOL
16:01:48 <Halite> @let dopplegangerOf' "" = ""
16:01:49 <lambdabot> Defined.
16:02:50 <Halite> @let dopplegangerOf' x = head x ++ dopplegangerOf' tail x
16:02:51 <lambdabot> <local>:4:26:
16:02:52 <lambdabot> Couldn't match expected type `[Char]' with actual type `C...
16:03:17 <Halite> > :t dopplegangerOf'
16:03:19 <lambdabot> <hint>:1:1: parse error on input `:'
16:03:35 <Halite> grr
16:03:43 <Halite> I should msg lambdabot
16:05:42 <Phantom_Hoover> you probably should
16:06:58 <Phantom_Hoover> btw your problem is that you're using list concatenation (++) to concatenate something that isn't a list
16:08:06 <Halite> @:t ""
16:08:07 <lambdabot> Done.
16:08:10 <Halite> @:t "list"
16:08:11 <lambdabot> Done.
16:08:24 <Halite> it is a list
16:08:48 <Halite> remember, that syntactic sugar
16:09:15 <Halite> > "string" == ['s','t','r','i','n','g']
16:09:17 <lambdabot> True
16:09:31 <Halite> see
16:09:41 <Phantom_Hoover> > head "string"
16:09:42 <lambdabot> 's'
16:09:48 <Phantom_Hoover> that's not a string
16:09:49 <Halite> > tail "string"
16:09:50 <lambdabot> "tring"
16:10:07 <Halite> it's a chararray
16:10:24 <Halite> the chararray is what I was using
16:11:40 <Phantom_Hoover> 's' ++ "tring" results in a type error because one of the arguments is a char and the other is a list of chars
16:12:17 <Halite> @let dopplegangerOf' x = [head x] ++ dopplegangerOf' tail x
16:12:18 <lambdabot> <local>:5:1:
16:12:18 <lambdabot> Multiple declarations of dopplegangerOf'
16:12:18 <lambdabot> Declared at:...
16:12:40 <Halite> > dopplegangerOf' "Halite"
16:12:42 <lambdabot> "*Exception: <local>:3:1-23: Non-exhaustive patterns in function dopplegang...
16:12:54 <Halite> @let dopplegangerOf' "" = ""
16:12:54 <lambdabot> <local>:5:1:
16:12:55 <lambdabot> Multiple declarations of dopplegangerOf'
16:12:55 <lambdabot> Declared at:...
16:12:57 <Halite> > dopplegangerOf' "Halite"
16:12:58 <lambdabot> "*Exception: <local>:3:1-23: Non-exhaustive patterns in function dopplegang...
16:13:17 <Halite> it's messed up because of multiple declarations of dopplegangerOf'
16:16:43 <Halite> I'd like to make a good programming language that is esoteric but I don't want to make it another BF.
16:36:20 -!- Taneb has joined.
16:36:42 <Taneb> I wrote a long Phantom_Hoover-y tumblr post then lost it...
16:41:35 <Vorpal> you use tumblr? Huh
16:41:44 -!- yhojeyisaac has joined.
16:42:05 <Taneb> Yes
16:42:27 <Taneb> At least three people in this channel do
16:45:33 <mroman> citation needed.
16:46:05 <Taneb> taneb.tumblr.com sgeo.tumblr.com phantom-hoover.tumblr.com
16:46:26 <shachaf> shachaf.tumblr.com
16:47:03 <shachaf> Taneb......................................................................................................
16:47:36 <Taneb> I need some people not reblogging Homestuck showing up on my dashboard
16:47:47 <Taneb> Anyway, I just recieved the private message:
16:47:48 <Taneb> <yhojeyisaac> hello as you lamas
16:50:15 -!- yhojeyisaac has quit (Ping timeout: 252 seconds).
16:51:34 -!- yhojeyisaac has joined.
17:00:27 <Vorpal> Taneb, nice one
17:01:18 <Taneb> :(
17:02:03 -!- yhojeyisaac has quit (Read error: Connection reset by peer).
17:02:29 -!- yhojeyisaac has joined.
17:03:02 <Sgeo_> Taneb, I'm not reblogging Homestuck
17:03:07 <Sgeo_> Shockingly
17:03:28 <Taneb> Sgeo_, I follow 70 blogs
17:03:41 <Taneb> About 65 of them reblog homestuck
17:03:48 <Sgeo_> I shoulg get back to work on my blog post
17:05:53 <Phantom_Hoover> <Taneb> I wrote a long Phantom_Hoover-y tumblr post then lost it...
17:05:54 <Phantom_Hoover> nooooooooooo
17:26:28 <Halite> I don't believe Haskell is Turing complete, but it is interesting!
17:26:42 <Sgeo_> It is turing complete
17:27:18 <Halite> How does it present data to the end-user then
17:27:39 <Sgeo_> Presenting data to the end-user is an entirely separate concern from turing-completeness.
17:27:48 <Phantom_Hoover> a) that doesn't matter for turing completeness, b) it has a method of doing io
17:27:58 <Halite> what is the method of io
17:28:20 <Sgeo_> Things like printing to the screen are actions. Things you can pass around to functions, create, etc.
17:28:35 <Sgeo_> When a Haskell program runs, it will execute the action called main
17:28:57 <Halite> What is the Haskell code to print to the screen
17:29:03 <Phantom_Hoover> printLn
17:29:03 <Sgeo_> main = putStrLn "Hello"
17:29:07 <Phantom_Hoover> or that
17:29:14 <Phantom_Hoover> same difference
17:29:25 <kmc> putStrLn "Read a Haskell tutorial!"
17:29:28 <Sgeo_> putStrLn "Hello" is an IO (), that is, an action that, when executed, does something
17:29:32 <ion> phantom_hoover: Huh? Where’s that defined?
17:29:36 <Phantom_Hoover> it's not
17:29:45 <Halite> > putStrLn "I did read a Haskell tutorial!"
17:29:47 <lambdabot> No instance for (GHC.Show.Show (GHC.Types.IO ()))
17:29:48 <lambdabot> arising from a use of ...
17:29:51 <Phantom_Hoover> look there are so many damn names for that in different languages
17:29:55 <Phantom_Hoover> Halite, yes. a bad one
17:29:56 <Sgeo_> Halite, IO isn't done in LYAH until chapter 9
17:30:09 <kmc> you can also ask these questions in #haskell
17:30:11 <Halite> Sgeo_, oh. I haven't reached chap. 9 yet.
17:30:35 <kmc> Halite: when you're just starting out, you're better off playing with values in GHCi and not worrying about IO
17:30:50 <mroman> Yeah.
17:30:52 <Halite> kmc, thanks for the advice.
17:30:57 <kmc> IO in Haskell isn't hard but it's just different enough to confuse the fuck out of anyone who doesn't have the background knowledge
17:31:28 <Sgeo_> I really, really like Haskell's IO stuff
17:31:48 <kmc> it's all right
17:32:21 <kmc> Haskell's IO is missing a lot of things an imperative language should have, but GHC adds most of them as libraries
17:32:34 <kmc> (concurrency, extensible exception handling with async exceptions, etc)
17:33:18 <kmc> standard Haskell doesn't even have a nice way to do binary IO does it?
17:33:35 <kmc> as i recall, you can set binary mode on a handle but you still get a list of characters which is just... wrong
17:33:45 <Sgeo_> I remember in one of my C# classes we were doing threading, so I imagined what it would look like with Haskell and forkIO and managed to translate that to C#, and so wrote something typesafe with a lambda, rather than the type-unsafe thing the processor was doing
17:33:49 <Sgeo_> professor, not processor
17:33:55 <Taneb> Is withBinaryFile in the report?
17:34:00 <FreeFull> Wouldn't be wrong if Haskell chars didn't go above 255
17:34:03 <FreeFull> But they do
17:34:13 <kmc> FreeFull: there is still a semantic difference between a character and a byte
17:34:24 <Taneb> Okay, it isn't
17:34:32 <kmc> C can burn in hell for leading decades of programmers astray in this regard
17:34:44 <kmc> with the result that computers don't work right if you use any language other than English
17:34:47 <kmc> fuck that
17:35:10 <Taneb> What if you use lojban
17:35:11 <FreeFull> @hoogle TextEncoding
17:35:12 <lambdabot> System.IO data TextEncoding
17:35:12 <lambdabot> GHC.IO.Encoding.Types data TextEncoding
17:35:12 <lambdabot> GHC.IO.Encoding data TextEncoding
17:35:44 <FreeFull> Nope, not useful
17:35:54 <kmc> Taneb: hm, I guess lojban is mostly ASCII
17:35:59 <kmc> except for embedded spans of other languages
17:36:07 <kmc> English is /mostly/ ASCII but some stuff isn't
17:36:23 <FreeFull> It would be nice if haskell had binary IO that returned a list or blocks of word8
17:36:41 <kmc> résumé, coöperate, names of course, currency symbols (of English-speaking countries even), all kinds of typographical marks
17:36:50 <yhojeyisaac> hello
17:37:08 -!- yhojeyisaac has left.
17:37:13 <kmc> goodbye
17:37:21 <mroman> FreeFull: There is?
17:37:32 <FreeFull> mroman: Which is?
17:37:52 <kmc> for serious programs both [Char] and [Word8] are woefully inefficient though
17:37:56 <kmc> most of the time
17:38:15 <mroman> Isn't ByteString up for that task?
17:38:19 <kmc> fortunately Data.ByteString and Data.Text are both in the Platform
17:38:21 <kmc> yes
17:38:27 <kmc> but ByteString isn't part of standard Haskell
17:38:31 <mroman> which can then neatly be parsed using the Monads in Data.Binary
17:38:36 -!- DHeadshot has joined.
17:38:36 <FreeFull> Depends on what you're doing
17:38:43 <kmc> in the language lawyer sense
17:38:49 <kmc> it's part of standard Haskell in the "what everyone uses" sense
17:38:59 <elliott> kmc: I think Lojban is 100% ASCII
17:39:47 <elliott> String is actually a bit underrated, in that just replacing it with Text would be terrible for all the incremental uses of it (list-as-control-structure)
17:39:51 <elliott> also Text isn't very good :(
17:39:58 <kmc> yeah
17:40:06 <kmc> i disapprove of UTF-16 :(
17:40:18 <kmc> but shachaf tells me it was faster than UTF-8 for Text
17:40:41 <FreeFull> getContents >>= putStr . map toUpper is easier than writing a recursive IO function for the same thing
17:40:52 <FreeFull> And this depends on the laziness of IO
17:40:59 <kmc> lazy IO sucks :(
17:41:10 <FreeFull> kmc: Then use strict IO
17:41:15 <kmc> it's brittle, doesn't handle errors, and confuses the hell out of people
17:41:43 <kmc> it should be a crime to teach lazy IO to beginners because it violates (through hacks) the main principle they need to understand evaluation vs. execution
17:42:41 <elliott> well lazy IO isn't really strictly impure
17:43:00 <Sgeo_> I remember being disappointed that lazy I/O, which seemed like a selling point of Haskell, was recommended against
17:43:09 <kmc> it depends on how you define 'pure' of course
17:43:11 <elliott> I don't think categorically rejecting it wholesale is necessarily a good idea, but it is very annoying that there is no standard strict getContents etc.
17:43:45 <FreeFull> Is there any definition of pure other than "always returns the same output for the same input"?
17:44:00 <elliott> there are many definitions of RT/purity
17:44:00 <kmc> FreeFull: it also has to not have effects on the outside world
17:44:04 <kmc> and that's the fuzzy part
17:44:09 <elliott> it is a very tricky thing to define
17:44:11 <kmc> does making your CPU heat up count as an effect?
17:44:13 <elliott> @quote roconnor pure
17:44:14 <lambdabot> roconnor says: If one wants to go swimming with sharks, or program in a non-pure language, I suppose that is one's choice
17:44:15 <elliott> @quote roconnor pure
17:44:16 <lambdabot> roconnor says: If one wants to go swimming with sharks, or program in a non-pure language, I suppose that is one's choice
17:44:20 <elliott> @quote roconnor RT
17:44:21 <lambdabot> roconnor says: gez, you write one paper explaining how a lens is really a higher order monoidal natural transformation, and suddenly everyone thinks you are an expert on lenses.
17:44:22 <elliott> @quote roconnor RT
17:44:23 <lambdabot> roconnor says: I started the colour library because I need "yellow" ... and it sort of grew from there.
17:44:25 <elliott> hmm
17:44:31 <FreeFull> @quote lazy
17:44:31 <lambdabot> shachaf says: In order to get the last element of a list, you have to traverse the whole list. This can be an expensive, inefficient, unlazy operation, so you should develop a distaste for it like
17:44:32 <lambdabot> the rest of us.
17:44:41 <elliott> @quote arrow.*pure
17:44:41 <lambdabot> roconnor says: An arrow (category) is pure if (f &&& f) = f >>> (id &&& id). When people say Haskell is pure they mean that (->) is pure. When people say IO isn't pure they mean that (Kleisli IO)
17:44:41 <lambdabot> isn't pure.
17:44:43 <elliott> there
17:44:47 <FreeFull> Why did lambdabot split so early
17:45:01 <FreeFull> There is a way to calculate the perfect split place
17:45:03 <kmc> with Haskell's lazy IO you have this problem where the result can depend on when in time a particular value was evaluated
17:45:04 <FreeFull> That's way too early
17:45:09 <elliott> have you seen lambdabot's code
17:45:10 <kmc> say, if the file changes as your program was running
17:45:33 <kmc> conceptually it should only depend on when things are /executed/ and order/time of evaluation should not be observable
17:45:39 <kmc> but this is violated
17:45:46 <FreeFull> kmc: Most programs don't deal well with that, although I suppose with most it affects you right now instead of later
17:45:54 <kmc> yeah
17:46:04 * elliott doesn't think it is as clear-cut as kmc thinks, but thankfully there are practical reasons to dislike lazy IO
17:46:06 <kmc> and it breaks the #1 property you can use to reason about Haskell programs
17:46:08 <FreeFull> Usually people assume they are the only ones changing the file
17:46:32 <kmc> `flock
17:46:33 <HackEgo> flock (util-linux-ng 2.17.2) \ Usage: flock [-sxun][-w #] fd# \ flock [-sxon][-w #] file [-c] command... \ flock [-sxon][-w #] directory [-c] command... \ -s --shared Get a shared lock \ -x --exclusive Get an exclusive lock \ -u --unlock Remove a lock \ -n --nonblock Fail rather than wait \ -w --timeout Wa
17:46:34 <elliott> I don't think lazy IO breaks the #1 property, or even the #3 property; maybe the #24 property.
17:47:14 * elliott thinks "purity" is more of a slogan than a property people actually use in practice.
17:47:26 <elliott> People use properties like let x = y in e --> e[x := y]
17:47:39 <elliott> And (\y -> e) x --> e[y := x]
17:47:50 <elliott> Whereby --> I actually mean <-->.
17:48:13 <olsner> purity is like anything that is nice to assume when reading a program and figuring out what it does
17:50:13 <FreeFull> purity is why the ST monad exists
17:50:15 -!- Nisstyre-laptop has joined.
18:00:19 -!- oerjan has joined.
18:03:26 <Taneb> oerjan, how would you, given a 16-bit unsigned integer, construct a second 16-bit unsigned integer such that the bit representation of the two integers are eachother's reverse?
18:04:05 <oerjan> <<, >> and &
18:05:00 <olsner> I'd take 65535-x
18:05:43 <Taneb> olsner, I don't think that works
18:06:01 <oerjan> olsner: that's reversing each bit, not their order
18:06:04 <Taneb> oerjan, that sounds scary
18:06:09 <olsner> oerjan: right
18:07:14 <Taneb> (the language I'm working in is Haskell)
18:07:56 <oerjan> Taneb: ((x & 1) <<15) | ((x & 2) <<14) | ... ((x & 128) << 1) | ((x & 256) >> 1) | ... ((x & 32768) >> 15)
18:08:11 <oerjan> oh hm
18:08:20 <oerjan> in that case...
18:08:39 <kmc> yeah "purity" is mostly about community norms rgarding what kinds of APIs are acceptable
18:11:45 <elliott> note to self COQC theories/Numbers/Cyclic/DoubleCyclic/DoubleDiv.v
18:13:48 <oerjan> > let rev n = foldl1' (.&.) [if testBit n i then 0 else bit (sz-i) | i <- [0..sz]] where sz = bitSize n in rev (5 :: Int)
18:13:50 <lambdabot> 0
18:13:55 <oerjan> oops
18:14:03 <oerjan> > let rev n = foldl1' (.|.) [if testBit n i then 0 else bit (sz-i) | i <- [0..sz]] where sz = bitSize n in rev (5 :: Int)
18:14:04 <lambdabot> 13835058055282163711
18:14:16 <elliott> oh good it did continue
18:14:20 <elliott> so it is just being very slow
18:14:22 <Taneb> > let rev n = foldl1' (.|.) [if testBit n i then 0 else bit (sz-i) | i <- [0..sz]] where sz = bitSize n in rev (5 :: Word16)
18:14:23 <lambdabot> 49151
18:14:34 <Taneb> > let rev n = foldl1' (.|.) [if testBit n i then 0 else bit (sz-i) | i <- [0..sz]] where sz = bitSize n in rev (7 :: Word16)
18:14:36 <lambdabot> 16383
18:14:58 <oerjan> hm that seems ... oh
18:15:00 <oerjan> sorry
18:15:07 <elliott> :t bits
18:15:09 <lambdabot> (Applicative f, Bits b, Indexable Int p) => p Bool (f Bool) -> b -> f b
18:15:18 <elliott> :t partsOf
18:15:19 <lambdabot> Functor f => Traversing (->) f s t a a -> LensLike f s t [a] [a]
18:15:21 <oerjan> > let rev n = foldl1' (.|.) [if testBit n i then bit (sz-i) else 0 | i <- [0..sz]] where sz = bitSize n in rev (1 :: Word16)
18:15:23 <lambdabot> 65536
18:15:25 <elliott> :t partsOf bits %~ reverse
18:15:27 <lambdabot> Bits t => t -> t
18:15:33 <elliott> > (1 :: Word16) & partsOf bits %~ reverse
18:15:35 <lambdabot> 32768
18:15:48 <elliott> HTH(?)
18:15:50 <mroman> :t (%~)
18:15:51 <oerjan> oh darn
18:15:51 <lambdabot> Profunctor p => Setting p s t a b -> p a b -> s -> t
18:15:58 <oerjan> > let rev n = foldl1' (.|.) [if testBit n i then bit (sz-i) else 0 | i <- [0..sz]] where sz = bitSize n - 1 in rev (1 :: Word16)
18:16:00 <lambdabot> 32768
18:16:10 <oerjan> Taneb: try this instead :P
18:16:19 <elliott> I bet Taneb is already depending on lens!
18:16:25 <Taneb> I am already depending on lens
18:16:37 <oerjan> wow
18:16:52 <elliott> not only do I write shorter code than oerjan but I am _also_ better at precognition.
18:17:07 <Taneb> I keep forgetting about partsOf
18:17:10 <Taneb> It feels so wrong
18:17:55 <Taneb> elliott, oerjan, even olsner, thanks
18:19:11 <oerjan> lens, the library that makes you long back to when you failed at understanding monads
18:19:18 <elliott> admittedly you can do slightly nicer than partsOf here.
18:19:22 <elliott> since reversing is always well-defined
18:19:26 * oerjan never actually did that, but it seemed appropriate
18:20:19 <oerjan> :t (&)
18:20:21 <lambdabot> a -> (a -> b) -> b
18:21:00 <oerjan> :t partsOf
18:21:02 <lambdabot> Functor f => Traversing (->) f s t a a -> LensLike f s t [a] [a]
18:21:19 <elliott> oerjan: it may be more helpful to look at the hackage docs, which contain helpful restricted signatures for every function
18:21:36 <elliott> (and don't expand out type synonyms like GHC has a habit to)
18:22:10 <oerjan> except there are so many modules, how do i even find partsOf
18:22:18 <oerjan> > (0$0 `partsOf`)
18:22:20 <lambdabot> The operator `Control.Lens.Traversal.partsOf' [infixl 9] of a section
18:22:20 <lambdabot> ...
18:22:26 <oerjan> except that way
18:23:26 <oerjan> > (0 & 0 %~)
18:23:28 <lambdabot> The operator `Control.Lens.Setter.%~' [infixr 4] of a section
18:23:28 <lambdabot> must hav...
18:24:01 <elliott> oerjan: you can use the haddock index
18:24:16 <olsner> hmm, for some reason I thought oerjan was shachaf for the last couple of minutes
18:24:17 <elliott> http://hackage.haskell.org/packages/archive/lens/3.8.7.3/doc/html/doc-index.html
18:24:23 <olsner> but that he'd somehow forgotten all about lenses
18:28:08 <oerjan> > over (partsOf bits) reverse (1 :: Word16)
18:28:10 <lambdabot> 32768
18:28:28 <nooodl> @src over
18:28:29 <lambdabot> Source not found. Take a stress pill and think things over.
18:28:32 <nooodl> :t over
18:28:34 <lambdabot> Profunctor p => Setting p s t a b -> p a b -> s -> t
18:29:07 <oerjan> it's a synonym for (%~), i think lens really overdone the operator thing
18:29:35 <elliott> the operators follow a consistent pattern
18:29:37 <oerjan> although %~ isn't so bad
18:29:43 <nooodl> aaargh. time to read about lenses
18:29:48 <elliott> you can derive the vast majority of them from a few first principles
18:29:56 <elliott> nooodl: http://lens.github.com/
18:29:57 <oerjan> > (0$0 &)
18:29:59 <lambdabot> The operator `Control.Lens.Combinators.&' [infixl 1] of a section
18:29:59 <lambdabot> must...
18:30:02 <olsner> the other purpose of lens is to make haskell into perl
18:30:47 <nooodl> i'll watch that video you told me about, elliott
18:30:52 <mroman> I should stop procrastinating looking into lens
18:30:56 <oerjan> :t (><>)
18:30:58 <lambdabot> Not in scope: `><>'
18:30:58 <lambdabot> Perhaps you meant one of these:
18:30:58 <lambdabot> `>>' (imported from Control.Monad.Writer),
18:31:07 <mroman> on the other hand, Ishould stop procrastinating on a lot of things
18:31:08 <oerjan> i'm pretty sure i saw fishes in there
18:31:26 <oerjan> :t (<%~>>)
18:31:28 <lambdabot> Not in scope: `<%~>>'
18:31:39 <oerjan> :t (<%>~)
18:31:40 <lambdabot> Not in scope: `<%>~'
18:31:40 <lambdabot> Perhaps you meant one of these:
18:31:40 <lambdabot> `<%@~' (imported from Control.Lens),
18:31:46 <Taneb> :t (<<%~)
18:31:48 <lambdabot> Data.Profunctor.Strong p => Overloading p q ((,) a) s t a b -> p a b -> q s (a, t)
18:32:05 <elliott> < prefix = also returns b. << prefix = also returns a. (latter exists because someone requested it, IIRC)
18:32:13 <elliott> % = "mod"ifies with a function
18:32:17 <Taneb> (I use it)
18:32:18 <elliott> ~ = functional setting
18:32:25 <Taneb> (but did not request it)
18:33:09 <kmc> until yesterday I hadn't really thought about the fact that #00ff00 is so much brighter than #0000ff — almost ten times as bright!
18:33:14 <kmc> (photometrically)
18:33:31 -!- Bike has joined.
18:33:46 <elliott> wooooo coq finished compiling
18:34:18 <oerjan> > _1 <<%~ succ $ (10,20)
18:34:20 <lambdabot> (10,(11,20))
18:34:25 -!- Nisstyre-laptop has quit (Quit: Leaving).
18:34:39 <Taneb> > ("hello", "world") ^. both
18:34:41 <lambdabot> "helloworld"
18:34:44 <Taneb> EXPLAIN THAT
18:35:21 <oerjan> i understand that, i think
18:35:26 <oerjan> :t (^.)
18:35:28 <lambdabot> s -> Getting a s t a b -> a
18:35:45 -!- Nisstyre-laptop has joined.
18:35:49 <oerjan> > (Sum 1, Sum 2) ^. both
18:35:51 <lambdabot> Sum {getSum = 3}
18:36:26 <oerjan> > _1 <%~ succ $ (10,20)
18:36:28 <lambdabot> (11,(11,20))
18:36:47 <elliott> I think probably one of the < or << schemes could go
18:36:51 <oerjan> elliott: hm i don't think the difference between < and << is quite what you said
18:36:51 <elliott> but eh
18:37:05 <Taneb> (actually I use (<<%=) rather than (<<%~))
18:37:11 <elliott> oerjan: it is. note that "a" is intrinsically the old value and "b" intrinsically the new
18:37:21 <oerjan> oh wait you meant a, not both a and b
18:37:28 <elliott> as in, the generic operators simply cannot use the old value as an "b" or the new value as an "a"
18:37:32 <elliott> right
18:37:41 <oerjan> i sort of thought << would accumulate even more stuff :P
18:37:47 <elliott> (<<<%~)
18:38:03 <oerjan> > _1 <<<%~ succ $ (10,20)
18:38:05 <lambdabot> Not in scope: `<<<%~'
18:38:06 <lambdabot> Perhaps you meant `<<%~' (imported from Control.Lens)
18:38:08 <oerjan> OKAY
18:38:40 <oerjan> i did look a bit, i found zoom which seems great
18:39:49 <oerjan> > flip runState (0,0) $ do zoom _1 (modify (+2); zoom _2 (modify (+3))
18:39:51 <lambdabot> <hint>:1:46: parse error on input `;'
18:39:54 <oerjan> oops
18:39:58 <elliott> oerjan: the cool/scary thing about zoom is what happens when you use it on a *traversal* rather than just a lens
18:39:58 <oerjan> > flip runState (0,0) $ do zoom _1 (modify (+2)); zoom _2 (modify (+3))
18:40:01 <lambdabot> ((),(2,3))
18:40:04 <elliott> ...you get a loop
18:40:05 <coppro> http://fullcomment.nationalpost.com/2013/02/16/david-frum-canadas-government-must-reach-out-to-the-undead/
18:40:24 <oerjan> oh...
18:40:28 <elliott> > flip runState (0,0) $ zoom both (modify (+2))
18:40:30 <lambdabot> ((),(2,2))
18:40:37 <oerjan> i was just going to try that :P
18:41:06 <elliott> > flip State.runState [(a,b),(c,d)] $ zoom traverse $ _2 <%= f
18:41:07 <elliott> (from the docs)
18:41:07 <lambdabot> Not in scope: `State.runState'
18:41:10 <elliott> > flip runState [(a,b),(c,d)] $ zoom traverse $ _2 <%= f
18:41:12 <lambdabot> No instance for (Debug.SimpleReflect.Expr.FromExpr
18:41:12 <lambdabot> (p0 ...
18:41:16 <elliott> ugh.
18:41:24 <elliott> > flip runState [(a,b),(c,d)] $ zoom traverse $ _2 <%= f :: (Expr,[(Expr,Expr)])
18:41:26 <lambdabot> No instance for (Debug.SimpleReflect.Expr.FromExpr
18:41:26 <lambdabot> (p0 ...
18:41:29 <elliott> fuck
18:41:34 <elliott> >>> flip State.runState [(a,b),(c,d)] $ zoom traverse $ _2 <%= f
18:41:34 <elliott> (f b <> f d <> mempty,[(a,f b),(c,f d)])
18:41:35 <elliott> HTH
18:42:41 <nooodl> ugh. i don't understand the costate comonad coalgebra thing he explains as an aside in the first five minutes
18:42:47 <oerjan> Expr has a monoid instance? :P
18:42:58 <elliott> nooodl: you don't need to care about what costate comonad algebra means
18:43:06 <elliott> only what s -> (a, a -> s) means
18:43:39 <nooodl> nice
18:46:35 <olsner> costate comonad coalgebra? is that a joke?
18:47:02 <Taneb> Yes
18:47:31 <Taneb> It's also magic of category theory
18:47:57 <elliott> it doesn't really have all that much to do with category theory
18:48:14 <Taneb> It's magic of something
18:48:18 <Taneb> Haskell probably
18:52:16 <nooodl> man, this guy is really great at explaining this stuff
18:53:23 <elliott> edward "this guy" kmett
18:53:36 * elliott remembers the days edwardk was in #esoteric!
18:55:25 -!- carado has joined.
18:55:37 <oerjan> :t iforOf
18:55:39 <lambdabot> (Indexed i a (f b) -> s -> f t) -> s -> (i -> a -> f b) -> f t
18:56:36 <oerjan> > iforOf traversed "abcd" replicate
18:56:38 <lambdabot> []
18:56:41 <oerjan> darn
18:57:20 -!- epicmonkey has joined.
18:57:23 <Taneb> > iforof traverse "abcd" replicate
18:57:25 <lambdabot> Not in scope: `iforof'
18:57:26 <lambdabot> Perhaps you meant one of these:
18:57:26 <lambdabot> `iforOf' (import...
18:57:30 <Taneb> > iforOf traverse "abcd" replicate
18:57:31 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Indexed.Indexed
18:57:32 <lambdabot> ...
18:57:40 <Taneb> > iforOf traverse "abcd" (index replicate)
18:57:42 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Indexed.Indexed
18:57:42 <lambdabot> ...
18:57:50 <Taneb> I can never remember how to do this
18:57:51 <oerjan> i wasn't sure what that first argument should be
18:57:57 <Taneb> traversed == id
18:58:03 <Taneb> Which happens to be a lens
18:58:03 <oerjan> ok
18:58:20 <oerjan> so why doesn't it give what i expected :(
18:59:02 <Taneb> Hmm
18:59:25 <Taneb> > iforOf itraverse "abcd" replicate
18:59:26 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Indexed.Indexed
18:59:27 <lambdabot> ...
18:59:40 <oerjan> oh hm
18:59:53 <oerjan> > iforOf traversed "abcd" (replicate.succ)
18:59:55 <lambdabot> ["abcd","abcd","abcd","abcd","abcd","abcd","abcd","abcd","abcd","abcd","abc...
19:00:03 <oerjan> ok that helped in some way...
19:00:21 <Taneb> > iforOf itraversed "abcd" replicate
19:00:23 <lambdabot> []
19:00:26 <Taneb> > iforOf traversed "abcd" replicate
19:00:29 <lambdabot> []
19:00:36 <Taneb> HOW MYSTERIOUS
19:00:56 <oerjan> the index is 0, presumably
19:01:11 <oerjan> oh hm
19:01:21 <Taneb> > iforOf traverse "abcd" (replicate.succ)
19:01:23 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Indexed.Indexed
19:01:23 <lambdabot> ...
19:01:29 <Taneb> > iforOf itraverse "abcd" (replicate.succ)
19:01:31 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Indexed.Indexed
19:01:31 <lambdabot> ...
19:01:36 <Taneb> > iforOf itraversed "abcd" (replicate.succ)
19:01:38 <lambdabot> ["abcd","abcd","abcd","abcd","abcd","abcd","abcd","abcd","abcd","abcd","abc...
19:01:54 <Taneb> > transpose $ iforOf itraversed "abcd" (replicate.succ)
19:01:56 <lambdabot> ["aaaaaaaaaaaaaaaaaaaaaaaa","bbbbbbbbbbbbbbbbbbbbbbbb","ccccccccccccccccccc...
19:02:07 <oerjan> wat
19:02:15 <Taneb> That's... surprisingly finite
19:02:20 <Taneb> > transpose $ iforOf traversed "abcd" (replicate.succ)
19:02:20 <oerjan> heh
19:02:22 <lambdabot> ["aaaaaaaaaaaaaaaaaaaaaaaa","bbbbbbbbbbbbbbbbbbbbbbbb","ccccccccccccccccccc...
19:02:42 -!- DHeadshot has quit (Ping timeout: 256 seconds).
19:02:55 <oerjan> > length "aaaaaaaaaaaaaaaaaaaaaaaa"
19:02:57 <lambdabot> 24
19:03:07 <Taneb> Aha
19:03:08 <oerjan> ah. _all_ the indices are replicated
19:03:13 <Taneb> > 1 * 2 * 3 * 4
19:03:15 <lambdabot> 24
19:03:18 <Taneb> > it
19:03:20 <lambdabot> Not in scope: `it'
19:03:20 <lambdabot> Perhaps you meant one of these:
19:03:20 <lambdabot> `id' (imported from ...
19:03:20 <Taneb> :(
19:03:24 <Taneb> :/
19:03:27 <Taneb> :something
19:03:59 <oerjan> > iforOf itraversed "abcd" id
19:04:01 <lambdabot> Couldn't match type `GHC.Types.Int' with `GHC.Types.Char -> f0 b0'
19:04:07 <oerjan> > iforOf itraversed "abcd" (:[])
19:04:09 <lambdabot> Couldn't match expected type `GHC.Types.Char -> f0 b0'
19:04:09 <lambdabot> with ac...
19:04:13 <oerjan> shees
19:04:15 <oerjan> h
19:04:20 <Taneb> > forOf itraversed "abcd" pure
19:04:22 <lambdabot> No instance for (GHC.Show.Show (f0 [GHC.Types.Char]))
19:04:22 <lambdabot> arising from a use...
19:04:28 <Taneb> > forOf traversed "abcd" pure
19:04:29 <lambdabot> can't find file: L.hs
19:04:35 <Taneb> :t forOf traversed "abcd" pure
19:04:37 <lambdabot> Applicative f => f [Char]
19:04:46 <Taneb> > forOf traversed "abcd" pure :: [String]
19:04:49 <lambdabot> ["abcd"]
19:04:53 -!- DHeadshot has joined.
19:05:02 <Taneb> > forOf itraversed "abcd" (const pure) :: [String]
19:05:07 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
19:05:07 <lambdabot> with actual ty...
19:05:14 <oerjan> :t iforOf traversed "abcd"
19:05:17 <lambdabot> Applicative f => (Int -> Char -> f b) -> f [b]
19:05:43 <oerjan> oh right of course
19:05:53 <oerjan> needs a fold, not a traversal
19:06:27 <Taneb> :t iforOf_
19:06:28 <lambdabot> Functor f => IndexedGetting i (Traversed r f) s t a b -> s -> (i -> a -> f r) -> f ()
19:09:24 -!- DHeadshot has quit (Ping timeout: 248 seconds).
19:10:23 <oerjan> > ifoldMapOf traverse replicate "abcd"
19:10:23 -!- DHeadshot has joined.
19:10:25 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Indexed.Indexed
19:10:25 <lambdabot> ...
19:10:49 <oerjan> > ifoldMapOf traversed replicate "abcd"
19:10:53 <lambdabot> "bccddd"
19:10:59 <oerjan> yay!
19:11:17 -!- WeThePeople has quit (Quit: Leaving).
19:13:13 <oerjan> > uncurry replicate =<< zip [0..] "abcd" -- maybe not _that_ big an improvement
19:13:15 <lambdabot> "bccddd"
19:17:46 -!- Taneb has quit (Quit: Leaving).
19:18:36 -!- hagb4rd has joined.
19:36:00 -!- augur has quit (Remote host closed the connection).
19:43:40 -!- WeThePeople has joined.
19:48:54 -!- ogrom has joined.
20:08:28 -!- augur has joined.
20:22:24 -!- Halite has quit (Remote host closed the connection).
20:27:22 -!- AnotherTest has joined.
20:37:54 -!- epicmonkey has quit (Ping timeout: 264 seconds).
20:46:17 -!- WeThePeople has quit (Ping timeout: 255 seconds).
20:47:04 -!- AnotherTest has quit (Quit: Leaving.).
20:47:16 -!- AnotherTest has joined.
21:02:27 -!- Mathnerd314 has quit (Read error: Connection reset by peer).
21:11:55 -!- oerjan has quit (Quit: leaving).
21:17:33 -!- WeThePeople has joined.
21:18:07 -!- Mathnerd314 has joined.
21:19:32 -!- sebbu has quit (Ping timeout: 248 seconds).
21:41:23 -!- zzo38 has joined.
21:41:37 -!- monqy has joined.
21:44:20 -!- AnotherTest has quit (Quit: Leaving.).
21:49:05 <Vorpal> so according to the google dashboard thingy I'm using "Cloud Print", with one connected printer. That printer being my phone. What.
21:50:54 <Vorpal> Seems like that is a thing, but what does it do with the printed document? I have no idea... https://support.google.com/cloudprint/?hl=en#2541911
21:52:35 <coppro> Vorpal: it sends the doc to your phone
21:52:46 <Vorpal> coppro, hm okay, and put it on the sd card?
21:53:33 <Vorpal> not sure why this would be useful, but okay. The "save to google drive" pseudo printer that is also listed (but not counted in the "connected printers" count!) seems much more useful and general then.
21:54:19 <coppro> because cluter
21:54:22 <coppro> *clutter
21:54:28 <Vorpal> hah
21:58:58 <Vorpal> coppro, hmm, the google dashboard is scary. They know so much about you...
22:03:07 <Gregor> The nice thing about making soup is you basically can't screw it up. Just throw stuff in a pot.
22:03:12 <Gregor> Discovery: No!
22:03:17 <Gregor> Jaaaaaaalapeños X-D
22:10:08 <Vorpal> Gregor, almost correct. As long as you don't throw in too much salt the soup will end up at least passable.
22:10:18 <Vorpal> salt is the one thing you have to be a bit careful with
22:11:25 <kmc> fortunately you can leave it to the end
22:11:40 <kmc> and just put it in your bowl as you eat
22:11:48 <kmc> same with many forms of spicy
22:11:58 <kmc> or soy sauce
22:12:12 <kmc> or even glutamate taste if you aren't squeamish about having a shaker of MSG on your table
22:12:14 <elliott> what's this idea of "too salty"
22:12:21 <elliott> a ridiculous notion
22:15:43 <Vorpal> kmc, hah
22:16:00 <Vorpal> elliott, well, it is also supposedly bad for your health
22:18:01 <monqy> too salty is absolutely awful
22:18:09 <Vorpal> yeah
22:18:26 <elliott> whats a health
22:19:01 <Gregor> Sometimes I eat blocks of salt just to pass the time.
22:19:14 <Vorpal> the only spice you truly can't get too much of is of course garlic
22:19:55 <Vorpal> though I guess technically it is not a spice, since you can it it as the main part of the dish
22:21:00 <Gregor> Sometimes I eat raw cloves of salt just to pass the time.
22:21:06 <Vorpal> :D
22:23:17 <Vorpal> put some young garlics soaked in olive oil on a salt bed (in order to prevent burning them) in the oven for a number of minutes that I forgot but have written down somewhere. Eat together with baguette with butter on it.
22:23:24 <Vorpal> tastes really nice
22:23:38 <Vorpal> doesn't work on more mature cloves
22:24:09 <Vorpal> so best if you take some early ones (I assume you grow your own garlic, so this shouldn't be hard)
22:24:54 <olsner> who wouldn't grow their own garlic
22:25:00 <Vorpal> exactly
22:32:13 <fizzie> I saw something about "cloud print" too, recently.
22:32:22 <fizzie> Couldn't quite make out what it was all about.
22:33:09 <kmc> Vorpal: yeah those are really good
22:33:44 <Vorpal> fizzie, I think it is so that you can make your printer spew out paper when you aren't at home and thus cause a mess?
22:33:52 <Vorpal> I certainly can't see any other point of it
22:34:02 <kmc> deep fried garlic is good too
22:34:03 <fizzie> I was hoping it'd make paper come out of the Android device somehow.
22:34:07 <Vorpal> kmc, hm
22:34:11 <nooga> i love garlic
22:34:14 <Vorpal> fizzie, that would have been nice
22:34:26 <kmc> hm i have an android eInk ebook reader
22:34:30 <kmc> print to that would be pretty useful
22:34:34 <Vorpal> hm
22:34:42 <Vorpal> I guess so
22:34:53 <Vorpal> kmc, it is bloody useless for me to print to my Galaxy S3 though
22:35:12 <Vorpal> I'd much rather use dropbox
22:37:09 <fizzie> Also apropos nothing, someone at work told me things about what kind of pruning parameters I *should* be passing to variKN for fungot-babble-model-training.
22:37:10 <fungot> fizzie: no on fnord nor dictionary.com: n. pl." is a much better idea. three times as much code.
22:37:28 <Vorpal> fizzie, oh?
22:37:35 <Vorpal> were you using the wrong ones?
22:37:40 <fizzie> Apparently one of them is supposed to be two times the other one.
22:37:58 <fizzie> For reasons that were not exactly explained, but anyhow.
22:38:07 <Vorpal> fizzie, then why is both parameters
22:38:15 <Vorpal> couldn't one just be calculated from the other one?
22:38:51 <fizzie> I suppose it's just a rule-of-thumb and maybe not applicable in every single circumstance.
22:39:19 <fizzie> But it still might be a better than my own Stetson-Harrison estimates.
22:40:31 <Vorpal> heh
22:43:56 <Vorpal> fizzie, is this used for all the models? Like the chrono trigger one?
22:44:29 -!- SDr has joined.
22:44:38 <Sgeo_> `welcome SDr
22:44:41 <HackEgo> SDr: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
22:44:56 <fizzie> Vorpal: Some of the older ones aren't trained with variKN at all, but I think the CT one is.
22:46:47 -!- efm has joined.
22:47:45 <Vorpal> fizzie, so what are the older ones trained with?
22:48:03 <Sgeo_> `welcome efm
22:48:05 <HackEgo> efm: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
22:48:12 <efm> hi Sgeo_
22:49:01 * efm is probably in the wrong place, thinking that programming needs to be easier to comprehend, not harder :)
22:49:27 <fizzie> Vorpal: With a messy program that just does full fixed-order models.
22:49:46 <Sgeo_> efm, our interest in esoteric languages does not imply a collective desire to make programming harder
22:49:55 <elliott> yes it does
22:49:55 <Vorpal> fizzie, so the IRC model is like that?
22:50:08 <Vorpal> or has that been updated
22:50:15 <Vorpal> fizzie, also what do you mean with a fixed order model
22:50:21 <Vorpal> this area is not my forte
22:51:36 -!- sebbu has joined.
22:53:20 <fizzie> Vorpal: The IRC one is like that, yes. And fixed order just means it has frequencies for all (existing) word-sequences of length K (where K is 3 or 4 or so), whereas the variKN one makes pruned models where there can be longer sequences if they're important enough.
22:53:41 <Vorpal> I see
22:53:52 <Vorpal> fizzie, what do you mean with "important enough"?
22:53:56 <zzo38> Sgeo_: Yes, true, it is not the desire to make programming harder. It is the desire to try different things with programming, even if it is not sensible.
22:54:30 <zzo38> Are you in agreement?
22:54:48 <Sgeo_> Yes, that seems like a good way to put it
22:55:42 <Vorpal> [1143473.197870] Did not find alt setting 1 for intf 0, config 1
22:55:45 <Vorpal> hnuh
22:55:48 <Vorpal> a lot of that in dmesg
22:56:57 <fizzie> Vorpal: Well, the criteria is related to how much difference it makes for the probabilities given by the model whether a particular sequence is included or not. For details, see Siivola, V., Hirsimäki, T. and Virpioja, S., "On Growing and Pruning Kneser-Ney Smoothed N-Gram Models", IEEE Transactions on Audio, Speech, and Language Processing, vol. 15, no. 5, pp. 1617-1624, July 2007.
22:59:09 <elliott> fizzie: You just did that so you could inline a fancy citation on IRC.
22:59:21 <Vorpal> heh
22:59:52 <fizzie> At least it wasn't in BibTeX.
23:01:11 * efm does believe in a flourishing of experiments, to better discover the domain of possible solutions
23:01:55 <Bike> And that's why we try to get Brainfuck running on specially constructed bundles of sticks.
23:02:12 <Vorpal> Bike, oh? Got a link to that?
23:03:21 <Bike> Joke.
23:03:32 <Vorpal> hm, I wonder if it would be possible
23:04:10 <fizzie> Some kind of mechanical computer, perhaps.
23:04:10 <Vorpal> possibly some sort of electro magnetic stick could be used for a computer with moving components
23:04:20 <Vorpal> fizzie, indeed
23:04:43 <Bike> Psh, electromagnets. That's some pointlessly easy shit right there.
23:05:02 -!- augur has quit (Remote host closed the connection).
23:05:07 <Vorpal> I'm not sure how else I would get a lose bundle of sticks moving
23:05:10 <kmc> i do want to build a relay computer
23:05:16 <Vorpal> in a meaningful way that is
23:05:17 <kmc> but i don't know of a cheap enough source of relays
23:05:31 <kmc> it would be very slow and very loud
23:05:38 <Vorpal> kmc, relays only? Surely you need some other components
23:05:46 <Vorpal> or hm
23:05:58 <Vorpal> can you implement NAND with only relays?
23:06:03 <Vorpal> or NOR
23:06:17 <kmc> i think relays are good enough
23:06:17 <Vorpal> NOT you can obviously do
23:06:30 <Bike> vorpal, there's gravity, woodland creatures, hitting it with other sticks...
23:06:36 <Vorpal> OR is possible. So is AND
23:06:43 <olsner> pretty sure relay computers have been done already, proving that it is possible
23:06:50 <Vorpal> kmc, not sure about how you would implement something like a latch though
23:06:51 <kmc> i think a normally-open relay is a lot like a N-channel MOSFET and a normally-closed relay is like a P-channel MOSFET
23:06:56 <fizzie> Isn't the Z3 mostly relays?
23:07:07 <Vorpal> kmc, yeah
23:07:09 <olsner> Vorpal: AND and NOT is NAND
23:07:12 <kmc> so you could build an equivalent of CMOS logic, though I'm sure it's not the most efficient way
23:07:14 <Vorpal> olsner, exactly
23:07:30 <kmc> http://upload.wikimedia.org/wikipedia/commons/3/31/SRAM_Cell_%286_Transistors%29.svg
23:07:30 <Vorpal> olsner, <Vorpal> OR is possible. So is AND
23:07:38 <Vorpal> olsner, and thus obviously is NAND
23:07:42 <fizzie> http://en.wikipedia.org/wiki/Z3_(computer) "The Z1 was wholly mechanical and only worked for a few minutes at a time at most. Helmut Schreyer advised Zuse to use a different technology."
23:07:49 <Vorpal> olsner, I didn't think I would have to spell that out
23:08:05 <kmc> of course old school computers didn't build main memories out of tubes or relays arranged thus
23:08:08 <olsner> Vorpal: it looked like you were struggling with the last connection there, so I assumed the worst
23:08:11 <kmc> would have been insanely expensive
23:08:20 <Vorpal> olsner, don't worry, I'm not stupid
23:08:57 <kmc> instead they developed things like williams tubes, mercury delay line memory, drum memory, core memory
23:09:07 <Bike> drum memory remains the best
23:09:21 <kmc> i guess my fantasy relay computer would probably use core memory
23:09:33 <nortti> kmc: why not delay line
23:09:35 <Vorpal> right
23:09:38 <Bike> maybe i should just try rebuilding MONIAC or some stupid shit
23:09:52 <kmc> nortti: i suck at anything vaguely mechanical
23:09:54 <Vorpal> nortti, delay line does not allow random access, so it would be a bit annoying
23:10:00 <kmc> i think dealing with toxic liquid metal in tubes is well beyond me
23:10:05 <nortti> ok
23:10:08 <kmc> a BIT annoying ahahahaha
23:10:22 <Vorpal> I would like a ternary computer
23:10:27 <olsner> you could use another medium, air or water or something
23:10:37 <kmc> kilometers of copper wire in a drum
23:11:08 <olsner> PAL decoders use these quartz crystal delay lines
23:11:09 <fizzie> A line of people repeating what the previous guy said.
23:11:16 <kmc> olsner: woah, really?
23:11:54 <Vorpal> brb
23:12:00 <kmc> fizzie: i'd need to introduce error correcting codes then
23:12:28 <olsner> yep, there's something in PAL that needs you to have a copy of the previous scan line
23:12:39 <kmc> i also like the core rope ROM used in e.g. the apollo guidance computer
23:13:18 <kmc> the contents of the ROM are determined by how you weave wires in and out of little metal donuts
23:13:28 <kmc> so you literally sew your program into the computer
23:13:28 <olsner> http://en.wikipedia.org/wiki/Delay_line_memory#Piezoelectric_delay_lines
23:14:03 <kmc> olsner: huh wow
23:14:05 <olsner> there are copper wire delay lines too
23:14:20 <kmc> i think mercury delay lines were first developed for radar
23:14:57 -!- friesk has joined.
23:15:05 <kmc> i wonder how much data you can store in this 64 μs PAL delay line
23:15:12 <kmc> what the maximum frequency is
23:15:25 <nortti> `welcome friesk
23:15:26 -!- carado has quit (Ping timeout: 256 seconds).
23:15:28 <HackEgo> friesk: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
23:16:27 <Sgeo_> I wonder what the maximum capacity of newbies is
23:16:38 -!- DHeadshot has quit (Read error: Connection reset by peer).
23:16:55 <friesk> o thanks
23:17:01 <Sgeo_> Hi friesk
23:17:05 <friesk> hi
23:17:05 <Sgeo_> Didn't mean to offend
23:17:17 <Sgeo_> Just that there are several new people in here today, not sure why
23:17:23 <kmc> "Alan Turing proposed the use of gin as an ultrasonic delay medium, claiming that it had the necessary acoustic properties."
23:17:26 <kmc> ok
23:17:26 <kmc> i need to do this
23:17:29 <friesk> you'd have to ask :)
23:17:36 <olsner> kmc: I approve
23:17:40 <Sgeo_> friesk, anything in particular bring you here today?
23:17:55 <friesk> but I am just getting my feet wet in freenode
23:18:02 <nortti> Sgeo_: #esoteric-en
23:18:19 <Bike> turing: mathematician. codebreaker. genius. drinker.
23:18:45 <kmc> disadvantage: bored computer operators will crack open and drink the memory
23:18:58 <Phantom_Hoover> kmc, isn't gin... expensive?
23:19:11 <Bike> it's worth the price for good memory
23:19:48 <kmc> as allegedly happened with the ethanol-cooled MiG-25
23:19:53 <fizzie> Does that mean that drinking gin will help your memory?
23:20:14 <Bike> "yes"
23:20:39 <Bike> kmc: is there a point to drinking flat ethanol? i thought half the point of alcoholic beverages was flavor
23:20:57 <fizzie> The other half, then.
23:20:58 <kmc> uh
23:21:14 <Bike> the drunken half
23:21:28 <kmc> yes
23:21:29 -!- ogrom has quit (Quit: Left).
23:21:38 <kmc> vodka is basically ethanol + water
23:21:42 * Sgeo_ nostalgias over http://www.youtube.com/watch?v=xM4uKJsI0yM
23:21:55 <kmc> and drinking vodka straight is a popular passtime in the russian air force
23:22:42 <olsner> maybe they should've used methanol for the cooling
23:23:01 <olsner> otoh, that might just give you blind pilots instead of drunk pilots
23:23:04 <kmc> it's better for military logistics if the men and the airplanes can drink the same stuff
23:23:07 <kmc> also that
23:23:25 <Phantom_Hoover> isn't gin essentially juniper-flavoured vodka
23:23:43 <kmc> a friend of mine went to remote siberia on a geology trip and they brought along a bottle of 195 proof "lens cleaner" which they would mix with snowmelt
23:24:28 <kmc> Phantom_Hoover: i think so yeah
23:24:31 <Bike> reminds me, apparently drinking snow regularly is really rare among animals (because of the metabolic cost)
23:24:32 <olsner> I think there are a bunch of assorted herbs and spices in there as well
23:24:37 <Bike> but a few animals do and they are some hardcore motherfuckers
23:25:12 <kmc> you re-distill neutral spirits with botanicals
23:25:22 <Phantom_Hoover> there's also that irish stuff which is basically ethanol with a bit of water left over
23:25:37 <kmc> the Bombay Sapphire label has their "10 exotic botanicals" etched onto the side
23:25:46 <kmc> er the bottle itself
23:25:48 <kmc> almond, lemon peel, liquorice, juniper berries, orris root, angelica, coriander, cassia, cubeb, and grains of paradise
23:25:57 <Phantom_Hoover> which i understand is drunk straight
23:26:17 <olsner> ooh, grains of paradise?
23:26:27 <fizzie> This reminds me of a Finnish parody radio show, where there was a fictional review of a "AA" ("Absolutists Anonymous") member, and the tragic story of he started by being sober every now and then, and then went on there to full-on days-long bouts of sobriety, once being sober an entire christmas.
23:26:32 <fizzie> Anyway, there was a bit of how they had this group of friends who just sat and drank all kinds of nonalcoholic stuff; water, milk, even diet coke, which you can make drinkable by draining it across an iron bar outside when it's freezing.
23:27:39 <fizzie> (I assume that last bit is based on some myth about how to make denatured ethanol drinkable.)
23:28:06 <Phantom_Hoover> well you'd make it more drinkable than diet coke, at least
23:28:21 <fizzie> (I coincidentally have a Bombay Sapphire bottle in the closet. It has those ten things you mention.)
23:28:51 <fizzie> (There was a discount.)
23:28:56 <olsner> renatured ethanol is the subject of many myths
23:30:39 <fizzie> Unnatural ethanol.
23:31:15 <Phantom_Hoover> good-natured ethanol
23:31:56 <fizzie> ^style darwin
23:31:56 <fungot> Selected style: darwin (Books by Charles Darwin -- you know, that evilution guy)
23:31:57 <fizzie> fungot: Tell us about natural ethanol selection.
23:31:58 <fungot> fizzie: thomas henry, lord " fnord) is fertilised. sir j.d. hooker. down, wednesday september, n.d..
23:32:11 <fizzie> fungot: Did Thomas Henry drink a lot?
23:32:27 <fizzie> Aw, no answer.
23:32:36 <Phantom_Hoover> fungot seems to have developed a... fetishistic streak
23:32:37 <fungot> Phantom_Hoover: comparative, :) female and male. also desmarest, ( on certain musical curculionidae,' ( modern classification :) insects,' pp. fnord also dr. herbert raised many seedlings, as soon as/ points to which you allude; but that it was his critique in/ ( field' may 6, 1859.
23:32:43 <olsner> fungot: how are your delay lines? ginned up and ready to go?
23:32:45 <fungot> olsner: but to have flowed beneath/ sea :)/ tropics are in themselves :) a pleasurable nature, excepting when this was indispensably necessary, yet, as we shall immediately see that they would always exceed in height/ self-fertilised plants cannot be fully trusted; and it would have held had they been capable :) containing a considerable number :) flowers which are very deep within, and a few fish. how very odd, and i myself no
23:32:52 -!- sebbu has quit (Ping timeout: 248 seconds).
23:32:53 <fungot> olsner: all other notes by charles darwin's editors appear in/ other cases, which may be produced either by/ state :)/ mind. from a drawing appended to/ names :) plants " rev. e.s. dixon ( ornamental and domestic poultry' page 260. in/ :( origin," sixth edition, :)/ black, squat tribes :)/ western coast as far as i could use, namely, :) a few hours/ tendril fnord itself, and your most interesting letter :) october 10th, has jus
23:33:11 -!- nooodl has quit (Ping timeout: 240 seconds).
23:33:12 <fungot> olsner: charles darwin to w.d. fox informs me that he has misunderstood this from/ height :)/ crossed plants is here 5.58 inches, and that/ difference in height and fertility between/ two forms; whilst/ ovarium, as described by an enthusiastic naturalist as curious and intricate a problem as :)/ great zygomatic muscles is fnord :)/ fnord
23:33:16 <fizzie> He just keeps going.
23:33:24 <fizzie> fungot: I think that's about enough?
23:33:25 <fungot> fizzie: in all four cases/ intercrossed plants in fertility,/ most pleasure. i cordially thank you for your kind and pleasant letter.
23:34:15 <kmc> so polite
23:34:15 <olsner> why are darwin's books so full of smileys?
23:34:43 <fizzie> olsner: He was such a happy guy. (Also, there's a bug.)
23:35:04 <fizzie> Well, there was a bug, and I haven't rerun the thing after fixing it.
23:35:32 <fizzie> fungot: Darwin is well-known to always have a smile on, right?
23:35:32 <fungot> fizzie: letter 286. to j.w. judd. down, april 11th 1859.) ready, in some manner more advantageous than fnord and to munich in 1857, i had an abundance :) capsules. column 5: weight :) seed.
23:39:37 <fizzie> Also, let's just try that one thing out.
23:39:54 <fizzie> ^raw QUIT
23:39:54 -!- fungot has quit (Quit: fungot).
23:40:24 -!- fungot has joined.
23:40:26 <Vorpal> fizzie, what one thing?
23:40:31 <fizzie> ^style enron
23:40:31 <fungot> Selected style: enron (subset of the Enron email dataset)
23:40:40 <fizzie> It's probably not very good.
23:40:41 <kmc> fungot: el oh el
23:40:41 <fungot> kmc: that the number of our current projections on their first, instead of the time we
23:40:47 <fizzie> I couldn't be bothered to do any more cleanups.
23:40:50 <Vorpal> also my PS3 controller on my desk random came to life and blinked the 4 LEDS a couple of times
23:40:52 <Vorpal> what
23:41:27 <shachaf> fungot: heegan
23:41:27 <fungot> shachaf: from the last ( 30) allowed excuse the error. dicarlo ena gas structuring phone: 713-345-4666 email: louis.dicarloenron.com
23:41:27 <Vorpal> fizzie, Enron?
23:41:42 <shachaf> afungotb
23:41:42 <fungot> shachaf: that will have you out on the " i
23:41:57 <Vorpal> fizzie, the electricity company?
23:41:58 <fizzie> Vorpal: ISTR that the "blink the leds a couple of times" is also what happens when you press the PS button and it does the Bluetooth "hello-anyone-there" thing.
23:42:10 <Vorpal> fizzie, except I pressed nothing
23:42:14 <fizzie> Vorpal: There's a famous dataset of their emails.
23:42:19 <fizzie> http://www.cs.cmu.edu/~enron/ <- that one.
23:42:34 <Vorpal> fizzie, in fact it lies on top of a stack of CDs, out of my reach atm
23:42:36 <fizzie> Half a million messages; I just took 10k so that the training runs fast.
23:42:52 <Vorpal> heh
23:42:58 <fizzie> Maybe it's a low-battery warning too? Or just a random glitch.
23:43:18 <Vorpal> let me try, if I connect it to my phone the app there tells me the battery status
23:43:29 <Vorpal> hm nope, says battery full
23:43:55 <Vorpal> I had it plugged in the other day anyway, so I doubt it would be battery issues
23:44:04 <fizzie> What are you using for that, the "Sixaxis Controller" app?
23:44:11 <Vorpal> yeah
23:44:30 <Vorpal> fizzie, during connection it prints the battery status amongst other things in the debug output of the main window
23:45:28 <Vorpal> fizzie, btw can you charge a controller using a phone USB wall charger?
23:45:38 <fizzie> From what I recall, no.
23:45:39 -!- sebbu has joined.
23:45:41 <Vorpal> fizzie, I'm going to go out of town for a couple of days
23:45:49 <Vorpal> and I won't have a computer with me
23:45:52 <kmc> hichaf
23:45:54 <fizzie> It won't start charging without doing a full USB handshake.
23:45:55 <Vorpal> fizzie, hm sucks
23:46:08 <fizzie> You can probably charge it from your phone over USB OTG, though.
23:46:10 <Vorpal> fizzie, and doing it with USB OTG sounds annoying
23:46:13 <Vorpal> hm
23:46:13 <fizzie> Yes.
23:46:24 <fizzie> Annoying, but possible.
23:46:30 <Vorpal> fizzie, doesn't that only give up to 100 mA?
23:47:22 <Vorpal> fizzie, how long does that battery last actually? I mostly used it with my desktop over USB (since it has no BT)
23:47:29 <Vorpal> I might be okay anyway
23:47:42 <fizzie> I don't really know. Does USB OTG have some extra limits? I mean, for regular USB you can get five units of power.
23:48:03 <Vorpal> I think it *can* have some extra power limits
23:48:14 <fizzie> It has never ran out on me, but I use it with USB most of the time too, so...
23:48:43 <fizzie> I would estimate that it's some tens of hours.
23:48:59 <fizzie> (Not many, but at least over one.)
23:49:30 <Vorpal> hm
23:50:13 <Vorpal> yeah I guess I'll bring a cable for USB OTG just in case. I doubt I will have all that many hours to play anyway
23:51:39 <fizzie> Haven't bought the Sixaxis Controller app yet; it seems nice (what with the possibility to do button->touch assignments and such for apps that don't support things natively), but it's still a bit of a shame that you can't just connect it like any other Bluetooth HID thing on Android four-point-whatever where the USB HID version works fine. (From what I've read, some ROMs do in fact include the ...
23:51:45 <fizzie> ... required tweaks for that to work.)
23:53:57 -!- augur has joined.
23:54:14 <Vorpal> hm
23:54:33 <Vorpal> fizzie, iirc the bluetooth used by the controller is not the normal bluetooth, it requires some quirks
23:54:47 <Vorpal> because you can't do normal BT and the controller at the same time
23:55:23 -!- hagb4rd has quit (Ping timeout: 256 seconds).
23:55:32 <Vorpal> night
23:59:23 <fizzie> You can do normal BT and the controller at the same time on real computers, though.
23:59:31 <fizzie> There's a Bluez tweak for it.
←2013-02-15 2013-02-16 2013-02-17→ ↑2013 ↑all